zoukankan      html  css  js  c++  java
  • Linux extmail的邮件服务器搭建

    注:本文来源于《extmail搭建








    一、背景介绍

    ExtMail Solution 是一个基于优秀开源软件的电子邮件系统解决方案,核心部件包括了PostfixAmavisd-newClamAVExtMailExtManCourier系列软件。是一个功能相对比较齐全的免费电子邮件系统。本次环境中使用的是CentOS

    二、实战演练

    2.1 操作系统安装

    采用系统光盘进行安装,然后按照日常安装步骤依次进行是否校验介质、安装界面语言等选项……注意必须安装MYSQL数据库。

    设置静态ip

    #查看ip信息
    [root@localhost ~]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::bb54:1d80:c29:8994  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:b4:d7:9a  txqueuelen 1000  (Ethernet)
            RX packets 565964  bytes 840298037 (801.3 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 88788  bytes 5501690 (5.2 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1  (Local Loopback)
            RX packets 40  bytes 4556 (4.4 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 40  bytes 4556 (4.4 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:f5:70:0a  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    #显示电脑以及操作系统的相关信息
    [root@localhost ~]# uname -a
    Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    #显示电脑以及操作系统的相关信息
    [root@localhost ~]# cat /proc/version 
    Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
    #显示的是发行版本信息
    [root@localhost ~]# cat /etc/issue
    S
    Kernel 
     on an m


    [root@localhost network-scripts]# clear
    
    [root@localhost network-scripts]# ls
    ifcfg-ens33  ifdown-eth   ifdown-isdn    ifdown-sit       ifup          ifup-ib    ifup-plip   ifup-routes    ifup-tunnel        network-functions-ipv6
    ifcfg-lo     ifdown-ib    ifdown-post    ifdown-Team      ifup-aliases  ifup-ippp  ifup-plusb  ifup-sit       ifup-wireless
    ifdown       ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-ipv6  ifup-post   ifup-Team      init.ipv6-global
    ifdown-bnep  ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-isdn  ifup-ppp    ifup-TeamPort  network-functions
    [root@localhost network-scripts]# vi ifcfg-ens33    
    
    
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="4377cd68-ba42-4378-9d8b-072301cac6f0"
    DEVICE="ens33"
    ONBOOT="yes"
    IPADDR="192.168.1.110"
    GATEWAY="192.168.1.1"
    NETWORK=192.168.1.1
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    "ifcfg-ens33" 18L, 377C written
    [root@localhost network-scripts]# service network restart
    Restarting network (via systemctl):
    Last login: Thu Oct  4 11:24:38 2018 from 192.168.1.107
    [root@localhost ~]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.110  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::bb54:1d80:c29:8994  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:b4:d7:9a  txqueuelen 1000  (Ethernet)
            RX packets 2452  bytes 174855 (170.7 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 507  bytes 96479 (94.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1  (Local Loopback)
            RX packets 48  bytes 5244 (5.1 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 48  bytes 5244 (5.1 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:f5:70:0a  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]# ls
    ifcfg-ens33  ifdown-eth   ifdown-isdn    ifdown-sit       ifup          ifup-ib    ifup-plip   ifup-routes    ifup-tunnel        network-functions-ipv6
    ifcfg-lo     ifdown-ib    ifdown-post    ifdown-Team      ifup-aliases  ifup-ippp  ifup-plusb  ifup-sit       ifup-wireless
    ifdown       ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-ipv6  ifup-post   ifup-Team      init.ipv6-global
    ifdown-bnep  ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-isdn  ifup-ppp    ifup-TeamPort  network-functions
    [root@localhost network-scripts]# cat ifcfg-ens33 
    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="4377cd68-ba42-4378-9d8b-072301cac6f0"
    DEVICE="ens33"
    ONBOOT="yes"
    IPADDR="192.168.1.110"
    GATEWAY="192.168.1.1"
    NETWORK=192.168.1.1
    [root@localhost network-scripts]# 





    2.2 制作YUM仓库

    使用EMOS光盘制作本地 yum仓库,CentOS系统安装完成之后在/etc/yum.repos.d/下会生成4个配置文件。其中CentOS-Media.repo是本地YUM源的配置文件,可以在该配置文件中把EMOS光盘的路径进行添加完成本地YUM源的配置。

    搭建本地yum

    # 安装
    
    # 3.1本地YUM源
    
    # 3.1.1 ISO源
    
    # 准备rpm包 
    
    # 挂载CentOS-7-x86_64-Everything-1511.iso,把里面所有文件都拷贝到本地目录/yum/yum-iso
    
    [root@linuxidc.com ~]# mkdir /mnt/yum-iso
    [root@linuxidc.com ~]# mount /dev/cdrom /mnt/yum-iso/
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@linuxidc.com ~]# mkdir /yum/
    [root@linuxidc.com ~]# cp -a /mnt/yum-iso/ /yum/
    [root@linuxidc.com ~]# ll /yum/
    total 4
    dr-xr-xr-x. 8 root root 4096 Dec 10  2015 yum-iso
    [root@linuxidc.com ~]# ll /yum/yum-iso/
    total 640
    -r--r--r--. 1 root root     14 Dec 10  2015 CentOS_BuildTag
    dr-xr-xr-x. 3 root root     33 Dec 10  2015 EFI
    -r--r--r--. 1 root root    215 Dec 10  2015 EULA
    -r--r--r--. 1 root root  18009 Dec 10  2015 GPL
    dr-xr-xr-x. 3 root root     69 Dec 10  2015 images
    dr-xr-xr-x. 2 root root   4096 Dec 10  2015 isolinux
    dr-xr-xr-x. 2 root root     41 Dec 10  2015 LiveOS
    dr-xr-xr-x. 2 root root 483328 Dec 10  2015 Packages
    dr-xr-xr-x. 2 root root   4096 Dec 10  2015 repodata
    -r--r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -r--r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Dec 10  2015 TRANS.TBL
    [root@linuxidc.com ~]#  
    
    # 备份、移除其他repo
    
    [root@linuxidc.com ~]# cd /etc/yum.repos.d/
    [root@linuxidc.com yum.repos.d]# ll
    -rw-r--r--. 1 root root 1664 Dec  9  2015 CentOS-Base.repo
    -rw-r--r--. 1 root root 1309 Dec  9  2015 CentOS-CR.repo
    -rw-r--r--. 1 root root  649 Dec  9  2015 CentOS-Debuginfo.repo
    -rw-r--r--. 1 root root  290 Dec  9  2015 CentOS-fasttrack.repo
    -rw-r--r--. 1 root root  630 Dec  9  2015 CentOS-Media.repo
    -rw-r--r--. 1 root root 1331 Dec  9  2015 CentOS-Sources.repo
    -rw-r--r--. 1 root root 1952 Dec  9  2015 CentOS-Vault.repo
    [root@linuxidc.com yum.repos.d]# tar zcvf repo-bk.tar.gz CentOS-*
    CentOS-Base.repo
    CentOS-CR.repo
    CentOS-Debuginfo.repo
    CentOS-fasttrack.repo
    CentOS-Media.repo
    CentOS-Sources.repo
    CentOS-Vault.repo
    [root@linuxidc.com yum.repos.d]# rm -f CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-Vault.repo
    
    
    # 配置本地repo
    
    [root@linuxidc.com yum.repos.d]# vi CentOS-Media.repo
    
    # 填入如下内容
    
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=file:///yum/yum-iso/
    gpgcheck=0
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    # 注释:配置repo路径、关闭gbp校验、启用这个repo
    
    # 制作cache
    
    [root@linuxidc.com yum.repos.d]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: c7-media
    Cleaning up everything
    Cleaning up list of fastest mirrors
    [root@linuxidc.com yum.repos.d]# yum makecache
    Loaded plugins: fastestmirror
    c7-media                                                                                                         | 3.6 kB  00:00:00
    (1/4): c7-media/group_gz                                                                                         | 155 kB  00:00:00
    (2/4): c7-media/primary_db                                                                                       | 5.3 MB  00:00:00
    (3/4): c7-media/filelists_db                                                                                     | 6.2 MB  00:00:00
    (4/4): c7-media/other_db                                                                                         | 2.3 MB  00:00:00
    Determining fastest mirrors
    Metadata Cache Created
    [root@linuxidc.com yum.repos.d]#  
    
    # 这样就可以使用yum安装软件啦
    
    [root@linuxidc.com yum.repos.d]# yum groupinstall "Development tools"
    Loaded plugins: fastestmirror
    There is no installed groups file.
    Maybe run: yum groups mark convert (see man yum)
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package autoconf.noarch 0:2.69-11.el7 will be installed
    --> Processing Dependency: perl >= 5.006 for package: autoconf-2.69-11.el7.noarch
    --> Processing Dependency: m4 >= 1.4.14 for package: autoconf-2.69-11.el7.noarch
    --> Processing Dependency: perl(warnings) for package: autoconf-2.69-11.el7.noarch
    
    # 或者
    
    [root@linuxidc.com yum.repos.d]# yum install tree
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
    --> Finished Dependency Resolution
    
    # 3.1.2 自定义YUM源
    
    [root@linuxidc.com yum.repos.d]# yum -y install createrepo
    
    # 准备rpm包
    
    # (需要自己确定依赖包)、目录。这里使用tree做演示。
    
    [root@linuxidc.com ~]# mkdir -p /yum/yum-custom/packages
    [root@linuxidc.com ~]# cp tree-1.6.0-10.el7.x86_64.rpm /yum/yum-custom/packages/
    
    # 创建repo
    
    [root@linuxidc.com ~]# createrepo -u -d  /yum/yum-custom/
    Spawning worker 0 with 1 pkgs
    Spawning worker 1 with 0 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    [root@linuxidc.com ~]# ll /yum/yum-custom/
    total 4
    drwxr-xr-x. 2 root root   41 Dec 20 07:03 packages
    drwxr-xr-x. 2 root root 4096 Dec 20 07:08 repodata
    [root@linuxidc.com ~]#  
    
    # 配置自定义repo
    
    [root@linuxidc.com ~]# vi /etc/yum.repos.d/CentOS-Media.repo
    
    # 填入如下内容
    
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=file:///yum/yum-custom/
    gpgcheck=0
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    # 制作cache
    
    [root@linuxidc.com ~]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: c7-media
    Cleaning up everything
    Cleaning up list of fastest mirrors
    [root@linuxidc.com ~]# 
    [root@linuxidc.com ~]# yum makecache
    Loaded plugins: fastestmirror
    c7-media                                                                                                         | 3.0 kB  00:00:00
    (1/3): c7-media/filelists_db                                                                                     |  880 B  00:00:00
    (2/3): c7-media/primary_db                                                                                       | 1.8 kB  00:00:00
    (3/3): c7-media/other_db                                                                                         | 1.3 kB  00:00:00
    Determining fastest mirrors
    Metadata Cache Created
    [root@linuxidc.com ~]#  
    
    # 使用自定义repo
    
    [root@linuxidc.com ~]# yum install tree
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
    --> Finished Dependency Resolution
    
    # 3.2 局域网YUM源
    
    # 局域网YUM源可以配成:本地YUM源 + FTP服务器
    
    # 这里使用自定义源yum-custom(见上面) + VSFTP演示。
    
    # 下载vsftpd
    
    [root@linuxidc.com ~]# yum -y install vsftpd
    
    # 配置vsftpd
    
    # 编辑vsftp.conf
    
    [root@linuxidc.com ~]# vi /etc/vsftpd/vsftpd.conf
    
    # 并增加匿名用户root目录(默认已经启用匿名访问)
    
    anon_root=/yum/
    
    # 注意目录权限如下
    
    [root@linuxidc.com ~]# ll -a /yum/
    total 8
    drwxr-xr-x.  4 root root   37 Dec 20 07:37 .
    dr-xr-xr-x. 18 root root 4096 Dec 20 06:32 ..
    drwxr-xr-x.  4 root root   36 Dec 20 07:08 yum-custom
    dr-xr-xr-x.  8 root root 4096 Dec 10  2015 yum-iso
    
     # 关闭selinux
    
    # 临时
    
    [root@linuxidc.com ~]# setenforce 0
    
    # 或者,永久:
    
    # 编辑config
    
    [root@linuxidc.com ~]# vi /etc/selinux/config
    
    # 设置
    
    SELINUX=disabled
    
    # 重启
    
    [root@linuxidc.com ~]# reboot
    
    # 启用vsftp
    
    [root@linuxidc.com ~]# systemctl start vsftpd
    [root@linuxidc.com ~]# systemctl enable vsftpd
    Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
    [root@linuxidc.com ~]# 
    
    # 局域网使用
    
    # 局域网另外一台机器min-client,
    
    # 配置repo
    
    # 编辑repo
    
    [root@min-client ~]# vim /etc/yum.repos.d/CentOS-Media.repo
    
    # 内容如下
    
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=ftp://192.168.118.133/yum-custom
    gpgcheck=0
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    # 其中192.168.118.133为上面vsftp服务器地址
    
    # 启用这个局域网的repo
    
    [root@min-client ~]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: c7-media
    Cleaning up everything
    [root@min-client ~]# yum makecache
    Loaded plugins: fastestmirror
    c7-media                                                                                                         | 3.0 kB  00:00
    (1/3): c7-media/filelists_db                                                                                     |  880 B  00:00
    (2/3): c7-media/other_db                                                                                         | 1.3 kB  00:00
    (3/3): c7-media/primary_db                                                                                       | 1.8 kB  00:00
    Determining fastest mirrors
    Metadata Cache Created
    [root@min-client ~]#  
    
    # 使用
    
    [root@linuxidc.com ~]# yum -y install tree
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
    --> Finished Dependency Resolution
    #
    # 目前差不多这些就够用了。以后有时间把163的YUM源爬下来,当本地源用。
    
    
    # 安装
    
    # 3.1本地YUM源
    
    # 3.1.1 ISO源
    
    # 准备rpm包 
    
    # 挂载CentOS-7-x86_64-Everything-1511.iso,把里面所有文件都拷贝到本地目录/yum/yum-iso
    
    [root@linuxidc.com ~]# mkdir /mnt/yum-iso
    [root@linuxidc.com ~]# mount /dev/cdrom /mnt/yum-iso/
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@linuxidc.com ~]# mkdir /yum/
    [root@linuxidc.com ~]# cp -a /mnt/yum-iso/ /yum/
    [root@linuxidc.com ~]# ll /yum/
    total 4
    dr-xr-xr-x. 8 root root 4096 Dec 10  2015 yum-iso
    [root@linuxidc.com ~]# ll /yum/yum-iso/
    total 640
    -r--r--r--. 1 root root     14 Dec 10  2015 CentOS_BuildTag
    dr-xr-xr-x. 3 root root     33 Dec 10  2015 EFI
    -r--r--r--. 1 root root    215 Dec 10  2015 EULA
    -r--r--r--. 1 root root  18009 Dec 10  2015 GPL
    dr-xr-xr-x. 3 root root     69 Dec 10  2015 images
    dr-xr-xr-x. 2 root root   4096 Dec 10  2015 isolinux
    dr-xr-xr-x. 2 root root     41 Dec 10  2015 LiveOS
    dr-xr-xr-x. 2 root root 483328 Dec 10  2015 Packages
    dr-xr-xr-x. 2 root root   4096 Dec 10  2015 repodata
    -r--r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
    -r--r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
    -r--r--r--. 1 root root   2883 Dec 10  2015 TRANS.TBL
    [root@linuxidc.com ~]#  
    
    # 备份、移除其他repo
    
    [root@linuxidc.com ~]# cd /etc/yum.repos.d/
    [root@linuxidc.com yum.repos.d]# ll
    -rw-r--r--. 1 root root 1664 Dec  9  2015 CentOS-Base.repo
    -rw-r--r--. 1 root root 1309 Dec  9  2015 CentOS-CR.repo
    -rw-r--r--. 1 root root  649 Dec  9  2015 CentOS-Debuginfo.repo
    -rw-r--r--. 1 root root  290 Dec  9  2015 CentOS-fasttrack.repo
    -rw-r--r--. 1 root root  630 Dec  9  2015 CentOS-Media.repo
    -rw-r--r--. 1 root root 1331 Dec  9  2015 CentOS-Sources.repo
    -rw-r--r--. 1 root root 1952 Dec  9  2015 CentOS-Vault.repo
    [root@linuxidc.com yum.repos.d]# tar zcvf repo-bk.tar.gz CentOS-*
    CentOS-Base.repo
    CentOS-CR.repo
    CentOS-Debuginfo.repo
    CentOS-fasttrack.repo
    CentOS-Media.repo
    CentOS-Sources.repo
    CentOS-Vault.repo
    [root@linuxidc.com yum.repos.d]# rm -f CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-Vault.repo
    
    
    # 配置本地repo
    
    [root@linuxidc.com yum.repos.d]# vi CentOS-Media.repo
    
    # 填入如下内容
    
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=file:///yum/yum-iso/
    gpgcheck=0
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    # 注释:配置repo路径、关闭gbp校验、启用这个repo
    
    # 制作cache
    
    [root@linuxidc.com yum.repos.d]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: c7-media
    Cleaning up everything
    Cleaning up list of fastest mirrors
    [root@linuxidc.com yum.repos.d]# yum makecache
    Loaded plugins: fastestmirror
    c7-media                                                                                                         | 3.6 kB  00:00:00
    (1/4): c7-media/group_gz                                                                                         | 155 kB  00:00:00
    (2/4): c7-media/primary_db                                                                                       | 5.3 MB  00:00:00
    (3/4): c7-media/filelists_db                                                                                     | 6.2 MB  00:00:00
    (4/4): c7-media/other_db                                                                                         | 2.3 MB  00:00:00
    Determining fastest mirrors
    Metadata Cache Created
    [root@linuxidc.com yum.repos.d]#  
    
    # 这样就可以使用yum安装软件啦
    
    [root@linuxidc.com yum.repos.d]# yum groupinstall "Development tools"
    Loaded plugins: fastestmirror
    There is no installed groups file.
    Maybe run: yum groups mark convert (see man yum)
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package autoconf.noarch 0:2.69-11.el7 will be installed
    --> Processing Dependency: perl >= 5.006 for package: autoconf-2.69-11.el7.noarch
    --> Processing Dependency: m4 >= 1.4.14 for package: autoconf-2.69-11.el7.noarch
    --> Processing Dependency: perl(warnings) for package: autoconf-2.69-11.el7.noarch
    
    # 或者
    
    [root@linuxidc.com yum.repos.d]# yum install tree
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
    --> Finished Dependency Resolution
    
    # 3.1.2 自定义YUM源
    
    [root@linuxidc.com yum.repos.d]# yum -y install createrepo
    
    # 准备rpm包
    
    # (需要自己确定依赖包)、目录。这里使用tree做演示。
    
    [root@linuxidc.com ~]# mkdir -p /yum/yum-custom/packages
    [root@linuxidc.com ~]# cp tree-1.6.0-10.el7.x86_64.rpm /yum/yum-custom/packages/
    
    # 创建repo
    
    [root@linuxidc.com ~]# createrepo -u -d  /yum/yum-custom/
    Spawning worker 0 with 1 pkgs
    Spawning worker 1 with 0 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete
    [root@linuxidc.com ~]# ll /yum/yum-custom/
    total 4
    drwxr-xr-x. 2 root root   41 Dec 20 07:03 packages
    drwxr-xr-x. 2 root root 4096 Dec 20 07:08 repodata
    [root@linuxidc.com ~]#  
    
    # 配置自定义repo
    
    [root@linuxidc.com ~]# vi /etc/yum.repos.d/CentOS-Media.repo
    
    # 填入如下内容
    
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=file:///yum/yum-custom/
    gpgcheck=0
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    # 制作cache
    
    [root@linuxidc.com ~]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: c7-media
    Cleaning up everything
    Cleaning up list of fastest mirrors
    [root@linuxidc.com ~]# 
    [root@linuxidc.com ~]# yum makecache
    Loaded plugins: fastestmirror
    c7-media                                                                                                         | 3.0 kB  00:00:00
    (1/3): c7-media/filelists_db                                                                                     |  880 B  00:00:00
    (2/3): c7-media/primary_db                                                                                       | 1.8 kB  00:00:00
    (3/3): c7-media/other_db                                                                                         | 1.3 kB  00:00:00
    Determining fastest mirrors
    Metadata Cache Created
    [root@linuxidc.com ~]#  
    
    # 使用自定义repo
    
    [root@linuxidc.com ~]# yum install tree
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
    --> Finished Dependency Resolution
    
    # 3.2 局域网YUM源
    
    # 局域网YUM源可以配成:本地YUM源 + FTP服务器
    
    # 这里使用自定义源yum-custom(见上面) + VSFTP演示。
    
    # 下载vsftpd
    
    [root@linuxidc.com ~]# yum -y install vsftpd
    
    # 配置vsftpd
    
    # 编辑vsftp.conf
    
    [root@linuxidc.com ~]# vi /etc/vsftpd/vsftpd.conf
    
    # 并增加匿名用户root目录(默认已经启用匿名访问)
    
    anon_root=/yum/
    
    # 注意目录权限如下
    
    [root@linuxidc.com ~]# ll -a /yum/
    total 8
    drwxr-xr-x.  4 root root   37 Dec 20 07:37 .
    dr-xr-xr-x. 18 root root 4096 Dec 20 06:32 ..
    drwxr-xr-x.  4 root root   36 Dec 20 07:08 yum-custom
    dr-xr-xr-x.  8 root root 4096 Dec 10  2015 yum-iso
    
     # 关闭selinux
    
    # 临时
    
    [root@linuxidc.com ~]# setenforce 0
    
    # 或者,永久:
    
    # 编辑config
    
    [root@linuxidc.com ~]# vi /etc/selinux/config
    
    # 设置
    
    SELINUX=disabled
    
    # 重启
    
    [root@linuxidc.com ~]# reboot
    
    # 启用vsftp
    
    [root@linuxidc.com ~]# systemctl start vsftpd
    [root@linuxidc.com ~]# systemctl enable vsftpd
    Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
    [root@linuxidc.com ~]# 
    
    # 局域网使用
    
    # 局域网另外一台机器min-client,
    
    # 配置repo
    
    # 编辑repo
    
    [root@min-client ~]# vim /etc/yum.repos.d/CentOS-Media.repo
    
    # 内容如下
    
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=ftp://192.168.118.133/yum-custom
    gpgcheck=0
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    # 其中192.168.118.133为上面vsftp服务器地址
    
    # 启用这个局域网的repo
    
    [root@min-client ~]# yum clean all
    Loaded plugins: fastestmirror
    Cleaning repos: c7-media
    Cleaning up everything
    [root@min-client ~]# yum makecache
    Loaded plugins: fastestmirror
    c7-media                                                                                                         | 3.0 kB  00:00
    (1/3): c7-media/filelists_db                                                                                     |  880 B  00:00
    (2/3): c7-media/other_db                                                                                         | 1.3 kB  00:00
    (3/3): c7-media/primary_db                                                                                       | 1.8 kB  00:00
    Determining fastest mirrors
    Metadata Cache Created
    [root@min-client ~]#  
    
    # 使用
    
    [root@linuxidc.com ~]# yum -y install tree
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Resolving Dependencies
    --> Running transaction check
    ---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
    --> Finished Dependency Resolution
    #
    # 目前差不多这些就够用了。以后有时间把163的YUM源爬下来,当本地源用。


    linux下yum命令出现Loaded plugins: fastestmirror


    # yum install的时候提示:Loaded plugins: fastestmirrorfastestmirror是yum的一个加速插件,这里是插件提示信息是插件不能用了。不能用就先别用呗,禁用掉,先yum了再说。1.修改插件的配置文件# vi  /etc/yum/pluginconf.d/fastestmirror.conf   enabled = 1//由1改为0,禁用该插件
    ...............................
    #2.修改yum的配置文件
    # vi /etc/yum.conf
    ........................
    .plugins=1//改为0,不使用插件
    ........................
    
    
    
    









    2.3 配置MTA-postfix

    2.3.1安装postfix


    # yum install postfix

    # rpm -e sendmail

    2.3.2配置postfix

    # postconf -n > /etc/postfix/main2.cf

    # mv /etc/postfix/main.cf/etc/postfix/main.cf.old

    # mv /etc/postfix/main2.cf/etc/postfix/main.cf

    # vi /etc/postfix/main.cf(编辑main.cf文件,将文件中标红的字体替换成自己的域名)

    增加如下内容,最后保存退出:

    # hostname

    mynetworks = 127.0.0.1

    myhostname = (mail.extmail.orgàmail.test.com)

    mydestination = $mynetworks $myhostname

    # banner

    mail_name = Postfix - by (extmail.orgàtest.com)

    smtpd_banner = $myhostname ESMTP $mail_name

    # response immediately

    smtpd_error_sleep_time = 0s

    # Message and return code control

    message_size_limit = 5242880

    mailbox_size_limit = 5242880

    show_user_unknown_table_name = no

    # Queue lifetime control

    bounce_queue_lifetime = 1d

    maximal_queue_lifetime = 1d

    设置postfix启动及开机自启:

    #service postfix restart

    #chkconfig postfix on

    2.4 配置Courier-Authlib

    2.4.1安装Courier-Authlib

    # yum install courier-authlib

    # yum install courier-authlib-mysql

    2.4.2配置Courier-Authlib

    # vi /etc/authlib/authmysqlrc

    并将其内容清空,然后增加如下内容,最后保存退出:

    MYSQL_SERVER            localhost

    MYSQL_USERNAME          extmail

    MYSQL_PASSWORD          extmail

    MYSQL_SOCKET            /var/lib/mysql/mysql.sock

    MYSQL_PORT              3306

    MYSQL_OPT               0

    MYSQL_DATABASE          extmail

    MYSQL_USER_TABLE        mailbox

    MYSQL_CRYPT_PWFIELD     password

    MYSQL_UID_FIELD         uidnumber

    MYSQL_GID_FIELD         gidnumber

    MYSQL_LOGIN_FIELD       username

    MYSQL_HOME_FIELD        homedir

    MYSQL_NAME_FIELD        name

    MYSQL_MAILDIR_FIELD     maildir

    MYSQL_QUOTA_FIELD       quota

    MYSQL_SELECT_CLAUSE     SELECTusername,password,"",uidnumber,gidnumber,

                      CONCAT('/home/domains/',homedir),              

                      CONCAT('/home/domains/',maildir),              

                      quota,                                                name                                    

                    FROM mailbox                               

                      WHERE username ='$(local_part)@$(domain)'

    # vi /etc/authlib/authdaemonrc

    修改如下内容:

    authmodulelist="authmysql"

    authmodulelistorig="authmysql"

    启动courier-authlib

    # service courier-authlib start

    如一切正常,命令行将返回如下信息:

    Starting Courier authentication services:authdaemond

    修改authdaemon socket目录权限,如果该目录权限不正确修改,maildroppostfix等将无法正确获取用户的信息及密码认证:

    # chmod 755 /var/spool/authdaemon/

    2.5 配置Maildrop

    2.5.1安装Maildrop

    # yum install maildrop

    2.5.2配置Maildrop

    配置master.cf 为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件,注释掉maildrop中和图例1结构类似的配置内容,将该语句添加到maildrop配置文件中,注意:flags前面有两个空格wKiom1Y7C4-wnMf_AABS3xOVjVY322.jpg


    配置main.cf,由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:

    maildrop_destination_recipient_limit = 1

    2.5.3测试maildrop对authlib支持

    # maildrop –v

    看是否出现以下内容:

    maildrop 2.1.0 Copyright 1998-2005 DoublePrecision, Inc.

    GDBM/DB extensions enabled.

    Courier Authentication Library extensionenabled.

    Maildir quota extension enabled.

    This program is distributed under the termsof the GNU General Public

    License. See COPYING for additionalinformation.

    注意事项:

    1、如需重新编译Maildrop软件包,必须先获得其源码rpm包,并且必须先行安装courier-authlib及其devel软件包,否则编译后的maildrop将无法打开authlib支持。

    2maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存储,vuser:vgroupuid/gid都是1000,这与一般的邮件文档中提及用postfix用户存邮件不一样。因为postfix用户的uid一般都低于500,而Suexec模块编译时对UID/GID的要求是要大于500,因此使用postfix用户不能满足要求。其次,如果用Maildrop作为投递代理(MDA),以postfix身份投递的话,会导致postfix MTA错误。

    2.6 配置Apache

    # vi /etc/httpd/conf/httpd.conf

    在最后一行加上:

    NameVirtualHost *:80

    Include conf/vhost_*.conf

    # vi /etc/httpd/conf/vhost_extmail.conf

    里面定义虚拟主机的相关内容(将文件中标红的字体替换成自己的域名)

    # VirtualHost for ExtMail Solution

    <VirtualHost *:80>

    ServerName (mail.extmail.orgàmail.test.com)

    DocumentRoot/var/www/extsuite/extmail/html/

    ScriptAlias /extmail/cgi//var/www/extsuite/extmail/cgi/

    Alias /extmail/var/www/extsuite/extmail/html/

     

    ScriptAlias /extman/cgi//var/www/extsuite/extman/cgi/

    Alias /extman /var/www/extsuite/extman/html/

     

    # Suexec config

    SuexecUserGroup vuser vgroup

    </VirtualHost>

     

    设置apache重启及开机自启


    #service httpd restart

    # chkconfig httpd on

    2.7 配置Webmail-ExtMail

    2.7.1安装ExtMail

    # yum install extsuite-webmail

    2.7.2编辑webmail.cf

    # cd /var/www/extsuite/extmail

    # cp webmail.cf.default webmail.cf

    # vi webmail.cf

    主要变动的内容见下:

    SYS_MYSQL_USER = extmail

    SYS_MYSQL_PASS = extmail

    SYS_MYSQL_DB = extmail

    更新cgi目录权限由于SuEXEC的需要,必须将extmailcgi目录修改成vuser:vgroup权限:

    # chown -R vuser:vgroup/var/www/extsuite/extmail/cgi/

    2.8 配置管理后台-ExtMan

    2.8.1yum安装ExtMan

    # yum install extsuite-webman

     

    更新cgi目录权限由于SuEXEC的需要,必须将extmancgi目录修改成vuser:vgroup权限:

    # chown -R vuser:vgroup/var/www/extsuite/extman/cgi/

     

    链接基本库到Extmail

    # mkdir /tmp/extman

    # chown -R vuser:vgroup /tmp/extman

    2.8.2数据库初始化

    启动Mysql且开机自启动

    # service mysqld start

    # chkconfig mysqld on

    导入mysql数据库结构及初始化数据,root密码默认为空

    # mysql -u root -p </var/www/extsuite/extman/docs/extmail.sql

    # mysql -u root -p </var/www/extsuite/extman/docs/init.sql

    备注1上述导入初始化SQL时,默认的uidnumber/gidnumber都是1000,这和vuser:vgroup uid/gid一致,是因为maildrop投递时会从数据库里取uidnumber/gidnumber,而在master.cf里已经定义好了投递时的运行身份(vuser:vgroup),所以这两个字段的内容必须为1000,否则将出现投递错误,例如报0x06等错误。

    注意:由于公网上的文档资料是以mail.extmail.org为域名,所以需要将数据库中的所有extmail.org替换成自己本地的域名(test.com),可以用linux下的Vi编辑器打开数据库文件,该文件的位置是/var/www/extsuite/extman/docs。然后依次打开init.sqlextmail.sql将所有的extmail.org替换成test.com。如图例2所示已经替换完成。最后使用update命令将数据库extmail中的所有表数据记录均完成extmail.orgtest.com的替换。

    wKioL1Y7DNCRODiuAAVhkFN95cM054.jpg

    2.8.3设置虚拟域和虚拟用户的配置文件

    # cd /var/www/extsuite/extman/docs

    # cp mysql_virtual_alias_maps.cf/etc/postfix/

    # cp mysql_virtual_domains_maps.cf/etc/postfix/

    # cp mysql_virtual_mailbox_maps.cf/etc/postfix/

    # cp mysql_virtual_sender_maps.cf/etc/postfix/


    # vi /etc/postfix/main.cf

    增加以下内容:

    # extmail config here

    virtual_alias_maps =mysql:/etc/postfix/mysql_virtual_alias_maps.cf

    virtual_mailbox_domains =mysql:/etc/postfix/mysql_virtual_domains_maps.cf

    virtual_mailbox_maps =mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

    virtual_transport = maildrop:

     

    # service postfix restart

    2.8.4测试authlib

    # cd /var/www/extsuite/extman/tools

    # ./maildirmake.pl/home/domains/extmail.org/postmaster/Maildir

    # chown -R vuser:vgroup/home/domains/extmail.org

     

    # /usr/sbin/authtest -s login postmaster@(extmail.org-->test.com) extmail

    结果如下:

    Authentication succeeded.

         Authenticated: postmaster@test.com (uid 1000, gid 1000)

       Home Directory: /home/domains/test.com/postmaster

              Maildir: /home/domains/test.com/postmaster/Maildir/

                Quota: 104857600S

    Encrypted Password:$1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

    Cleartext Password: extmail

              Options: (none)

    这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库

    最后访问http://mail.test.com/extmail/,如无意外,将看到webmail的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括postmaster@test.com也不行。必须要登陆到http://mail.test.com/extman/ 里增加一个新帐户才能登陆。

     

    ExtMan的默认超级管理员帐户:root@test.com,初始密码:extmail*123*,登陆成功后,建议将密码修改,以确保安全。

    2.8.5配置图形化日志

    启动mailgraph_ext

    # /usr/local/mailgraph_ext/mailgraph-initstart

    启动cmdserver(在后台显示系统信息)

    # /var/www/extsuite/extman/daemon/cmdserver–daemon

    加入开机自启动:

    # echo"/usr/local/mailgraph_ext/mailgraph-init start" >>/etc/rc.d/rc.local

    # echo"/var/www/extsuite/extman/daemon/cmdserver -v -d" >>/etc/rc.d/rc.local

    用方法:等待大约15分钟左右,如果邮件系统有一定的流量,即可登陆到extman里,点“图形日志”即可看到图形化的日志。具体每天,周,月,年的则点击相应的图片进入即可。


    添加定时任务:

    # crontab –e

    wKiom1Y7DYDR_nnYAAEiprv3Uzk817.jpg

    2.9 配置Cyrus-SASL

    2.9.1安装cyrus-sasl

    删除系统的cyrus-sasl

    # rpm -e cyrus-sasl –nodeps

    安装新的支持authdaemon的软件包

    # yum install cyrus-sasl

    2.9.2配置main.cf文件

    PostfixSMTP认证需要透过Cyrus-SASL,连接到authdaemon获取认证信息。

    # vi /etc/postfix/main.cf

    增加如下内容:

    # smtpd related config

    smtpd_recipient_restrictions =

           permit_mynetworks,

            permit_sasl_authenticated,

           reject_non_fqdn_hostname,

           reject_non_fqdn_sender,

           reject_non_fqdn_recipient,

           reject_unauth_destination,

           reject_unauth_pipelining,

           reject_invalid_hostname,

    # SMTP sender login matching config

    smtpd_sender_restrictions =

           permit_mynetworks,

           reject_sender_login_mismatch,

           reject_authenticated_sender_login_mismatch,

           reject_unauthenticated_sender_login_mismatch

    smtpd_sender_login_maps =

           mysql:/etc/postfix/mysql_virtual_sender_maps.cf,

           mysql:/etc/postfix/mysql_virtual_alias_maps.cf

    # SMTP AUTH config here

    broken_sasl_auth_clients = yes

    smtpd_sasl_auth_enable = yes

    smtpd_sasl_local_domain = $myhostname

    smtpd_sasl_security_options = noanonymous

    2.9.3编辑smtpd.conf文件

    # vi /usr/lib/sasl2/smtpd.conf

    确保其内容为:

    pwcheck_method: authdaemond

    log_level: 3

    mech_list: PLAIN LOGIN

    authdaemond_path:/var/spool/authdaemon/socket

    重新启动postfix

    # service postfix start

    2.9.4测试SMTP认证

    通过以下命令获得postmaster@test.com的用户名及密码的BASE64编码:

    # perl -e 'use MIME::Base64; print encode_base64("postmaster@test.com")'

    内容如下结构:

    cG9zdG1hc3RlckBleHRtYWlsLm9yZw==

    # perl -e 'use MIME::Base64; printencode_base64("extmail")'

    内容如下结构:

    ZXh0bWFpbA==

    # telnet localhost 25(需要本机安装telnet软件包)

    过程如下:

    Trying 127.0.0.1...

    Connected to localhost.localdomain(127.0.0.1).

    Escape character is '^]'.

    220 mail.test.com ESMTP Postfix - by test.com

    ehlo demo.domain.tld     << 输入内容

    250-mail.test.com

    250-PIPELINING

    250-SIZE 10240000

    250-VRFY

    250-ETRN

    250-AUTH LOGIN PLAIN

    250-AUTH=LOGIN PLAIN

    250-ENHANCEDSTATUSCODES

    250-8BITMIME

    250 DSN

    auth login     << 输入内容

    334 VXNlcm5hbWU6

    cG9zdG1hc3RlckBleHRtYWlsLm9yZw==     << 输入内容(通过per命令获取的用户名)

    334 UGFzc3dvcmQ6

    ZXh0bWFpbA==     << 输入内容(通过per命令获取的用户名密码)

    235 2.0.0 Authentication successful

    quit    << 输入内容

    221 2.0.0 Bye

    最后出现235 Authentication Successful 表明认证成功了。

    2.10 配置Courier-IMAP

    2.10.1安装Courier-imap

    默认的courier-authlibcourier-imap都会增加系统自启动设置,因此下一次服务器启动将自动启动相应的authlibPOP3服务

    # yum install courier-imap

    由于Courier-imapIMAP目录是按UTF-7编码的,ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。

    # vi /usr/lib/courier-imap/etc/imapd

    修改内容如下:

    IMAPDSTART=NO

    # vi /usr/lib/courier-imap/etc/imapd-ssl

    修改内容如下:

    IMAPDSSLSTART=NO

    然后重新启动courier-imap

    # service courier-imap start

    2.10.2测试POP3工作是否正常

    测试POP3 请按如下步骤输入pop3命令测试其是否正常工作,注意蓝色的信息是我们输入到POP3服务器的(请首先登录extman自行建立test@test.com用户,密码:123qaz!)

    # telnet localhost 110

    其过程如下:

    Trying 127.0.0.1...

    Connected to localhost.localdomain(127.0.0.1).

    Escape character is '^]'.

    +OK Hello there.

    user test@test.com     << 输入内容

    +OK Password required.

    pass 123qaz!     << 输入内容

    +OK logged in.

    list    << 输入内容

    +OK POP3 clients that break here, theyviolate STD53.

    .

    quit    << 输入内容

    +OK Bye-bye.

    Connection closed by foreign host.

    出现以上内容说明配置正确。

    三、注意事项

    以上手册内容的结构体系引自http://wiki.extmail.org/extmail_solution_for_centos-5,但由于官网编写较粗略,其中个别细节问题需要注意。

    • 2.9.4测试SMTP认证时会出现错误,通过查看错误信息/var/log/messages,执行#cp -f /usr/lib/sasl2/smtpd.conf /usr/lib64/sasl2/             #/etc/init.d/saslauthd restart完成以上两步操作之后就可以成功通过SMTP测试。

    • 2.10.2测试POP3工作是否正常之前需要提前在mail.test.com/extman后台管理端添加用户,否则会出现错误。

  • 相关阅读:
    dubbox编译安装本地maven仓库
    NameNode中几个关键的数据结构
    spark学习总结
    Spark性能优化指南——基础篇
    Spark性能优化指南——高级篇
    Kafka文件存储机制那些事
    Presto实现原理和美团的使用实践
    archlinux locale-gen 命令出错
    git无法连接bitbucket/github时,出现"Permission deied(publickey)"
    转:《JavaScript—之对象参数的引用传递》
  • 原文地址:https://www.cnblogs.com/ios9/p/9729783.html
Copyright © 2011-2022 走看看