Postfix + SASL + Dovecot + MySQL + Extmail + Extman + Httpd

本文章內容:

Postfix + SASL (courier-authlib) + MySQL -> 實現發郵件服務器 (cyrus-sasl + courier-authlib + mysql就可以用虛擬用戶)

Dovecot + MySQL -> 實現收郵件服務器 (dovecot本身就能認證,結合MySQL就可以用虛擬用戶)

Extmail + Extman + Httpd -> 實現Webmail

 

RedHat提供的postfix rpm包在編譯的時候不支援基於SASL完成虛擬用戶的認證,所以我們需要重新編譯postfix。

1. 移除系統上的Postfix

[root@postfix-server1 ~]# systemctl stop postfix
[root@postfix-server1 ~]# rpm -e postfix

2. 安裝MySQL

先安裝MySQL,因為我們Postfix要編譯安裝主要是要跟MySQL結合以實現能使用虛擬用戶,不然的話編譯好的Postfix將無法實現基於MySQL認證。

[root@postfix-server1 ~]# yum install mariadb-server mariadb-devel -y
[root@postfix-server1 ~]# mysql -V
mysql  Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
[root@postfix-server1 ~]# systemctl start mariadb
[root@postfix-server1 ~]# ss -tnl
State      Recv-Q Send-Q                                  Local Address:Port                                                 Peer Address:Port              
LISTEN     0      50                                                  *:3306                                                            *:*                  
...
[root@postfix-server1 ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

2. 安裝Postfix

2.1 創建postfix、postdrop用戶和組

2.1.1 創建postfix用戶、組

[root@postfix-server1 ~]# grep postfix /etc/passwd  #系統已經有postfix用戶,如果沒有則執行useradd -u 2525 -g 2525 -s /sbin/nologin -M postfix
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@postfix-server1 ~]# usermod --uid 2525 postfix  #修改postfix用戶的UID
[root@postfix-server1 ~]# groupmod --gid 2525 postfix  #修改postfix用戶的GID
[root@postfix-server1 ~]# id postfix
uid=2525(postfix) gid=2525(postfix) groups=2525(postfix),12(mail)

2.1.2 創建postdrop用戶、組

[root@postfix-server1 ~]# grep postdrop /etc/group  #系統已有postdrop組,如果沒有則執行groupadd -g 2526 postdrop
postdrop:x:90:
[root@postfix-server1 ~]# groupmod --gid 2526 postfix  #修改postdrop組的GID
[root@postfix-server1 ~]# useradd -u 2526 -g 2526 -s /sbin/nologin -M postdrop  #新增postdrop用戶
[root@postfix-server1 ~]# id postdrop
uid=2526(postdrop) gid=2526(postfix) groups=2526(postfix)

2.2 下載Postfix源代碼

2.2.1 訪問"http://www.postfix.org" -> 點"Download (source)

2.2.2 點East Asia/Pacific的"Multiple locations"

2.2.3 使用wget下載Postfix 3.5 stable release的源碼包

[root@postfix-server1 ~]# wget http://cdn.postfix.johnriley.me/mirrors/postfix-release/official/postfix-3.5.8.tar.gz
[root@postfix-server1 ~]# ll -h
total 4.5M
-rw-------. 1 root root 1.3K Aug 15 05:55 anaconda-ks.cfg
-rw-r--r--. 1 root root 4.5M Nov  7 17:25 postfix-3.5.8.tar.gz

2.3 編譯安裝Postfix

2.3.1 解壓縮postfix-3.5.8.tar.gz -> 進入postfix-3.5.8

[root@postfix-server1 ~]# tar xf postfix-3.5.8.tar.gz 
[root@postfix-server1 ~]# cd postfix-3.5.8
[root@postfix-server1 postfix-3.5.8]# ls  #編譯方法比較獨特,因為沒有config腳本,所以我們沒有辦法使用./config -> make -> make install這樣的編譯方式來安裝
AAAREADME      HISTORY               libexec        mantools                proto              RELEASE_NOTES-2.10  RELEASE_NOTES-2.7  RELEASE_NOTES-3.4
auxiliary      html                  LICENSE        meta                    README_FILES       RELEASE_NOTES-2.11  RELEASE_NOTES-2.8  src
bin            implementation-notes  makedefs       pflogsumm_quickfix.txt  RELEASE_NOTES      RELEASE_NOTES-2.2   RELEASE_NOTES-2.9  TLS_ACKNOWLEDGEMENTS
COMPATIBILITY  include               Makefile       plugins                 RELEASE_NOTES-1.0  RELEASE_NOTES-2.3   RELEASE_NOTES-3.0  TLS_CHANGES
conf           INSTALL               Makefile.in    PORTING                 RELEASE_NOTES-1.1  RELEASE_NOTES-2.4   RELEASE_NOTES-3.1  TLS_LICENSE
COPYRIGHT      IPv6-ChangeLog        Makefile.init  postfix-env.sh          RELEASE_NOTES-2.0  RELEASE_NOTES-2.5   RELEASE_NOTES-3.2  TLS_TODO
examples       lib                   man            postfix-install         RELEASE_NOTES-2.1  RELEASE_NOTES-2.6   RELEASE_NOTES-3.3  US_PATENT_6321267

2.3.2