linux運維學習筆記:郵件服務器系列之01:postfix + extmail

linux運維學習筆記:郵件服務器系列之01:postfix + extmail

作者:周少言
201年 月 日 星期 ,于北京

聲明:本博客是本人周少言在某培訓機構學習期間所寫,其中參考借鑒了他人的博客,本文將會選擇性給出相關鏈接,如有侵權,懇請告知。本文如有錯誤,懇請告知,歡迎交流。

參考連接:基本原理

本文是工作手冊,經過反復試驗所寫,所以,盡情在你的xshell粘貼復制,讓更多的時間用來思考!如果有不妥的地方,懇請留言告知。

如果您覺得本文值得分享,請幫忙分享出去哦!知識的可貴在于分享與交流,謝謝。

postfix(作為發送郵件服務器)+dovecot(作為接收郵件服務器)+mysql(作為數據庫)+extmail (webmail)

本次實驗所需的資料下載

鏈接:https://pan.baidu.com/s/1qYFow4O 密碼:56qv
用lrzsz將其拖拽到/root目錄下

郵件服務器原理

概念解釋
MUA:Mail User Agent.郵件用戶代理。(客戶端)
用戶通過MUA接收發送郵件用戶通過MUA接收發送郵件.例如Outlook,formail等.

MTA:MailTransferProtocol.郵件傳輸代理。 (發送郵件服務器)
是SMTP的一種實現.常用的MTA有sendmail,Postfix.本例中使用Postfix.MTA僅僅負責郵件的傳輸,MDA負責把接收到的郵件保存在硬盤中.

MDA: Mail Deliver Agent,郵件分發代理. 負責將接收到的郵件保存在郵件服務器上.sendmail以及Postfix默認使用的MDA是procmail.

MRA: Mail Receive Agent,郵件接收代理。 (郵件接收服務器) 用來實現IMAP,POP3協議,負責與MUA交互,將服務器上的郵件通過IMAP以及POP3傳輸給客戶端.本例中使用的MRA是Dovecot.

LMTP:Local Mail Transfer Protocol. 本地郵件傳輸協議,是SMTP協議的擴展.本例中用與同一主機內郵件傳輸.

Postfix:一個開源的MTA服務器,負責通過SMTP協議管理發送到本機的郵件以及由本機向外發送的郵件.與sendMail相似.現今流行的服務器套件例如Zimbra,IRedMail內部都采用Postfix作為MTA.

Dovecot:一個開源的IMAP以及POP3服務器.通常工作是驗證用戶身份以及郵件的處理.

MySQL:存取用戶信息,監聽的域名信息,用戶郵箱地址以及登錄密碼等.

postfix初試探

postfix默認已安裝

1、修改postfix主配置文件

vim /etc/postfix/main.cf

myhostname = mail.laihu.com                            郵件服務器主機名
mydomain = laihu.com                                      郵件域
myorigin = $myhostname                              允許發送郵件的地址(取消注釋) 
myorigin = $mydomain
inet_interfaces = all                                         監聽的地址
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain                    設置允許接受郵件的地址
home_mailbox = Maildir/                               存放位置

/etc/init.d/postfix restart
(否則會報錯)

2、測試

先創建兩個用戶
useradd zhangsan
useradd lisi
passwd ...

yum -y install telnet 安裝telnet
telnet mail.laihu.com 25 鏈接郵件服務器

helo    mail.laihu.com `           申明域名
mail from: zhangsan@laihu.com`
rcpt to:lisi@laihu.com`
data
    dkasjdklasjkdjaklsjdlajskdla     (郵件內容)
    .                        (表示結束)
quit            (退出)

進入lisi家目錄去查看

3、安裝 dovecot

yum -y install dovecot

service dovecot start

netstat -an | grep 110 \ 143

telnet  mail.laihu.com 110
user lisi
pass 123

list  列出郵件

retr 1  使用序號進行查看郵件

搭建接企業級郵件服務器

1.使用extmail自帶模板在mysql中創建數據庫

yum -y install mysql mysql-server mailx httpd

/etc/init.d/mysqld start
mysqladmin -uroot password 123
(創建MySQL 的root密碼,mysqladmin -u[username] -p[password] extended-status )

mkdir /var/www/extsuite 
mkdir /iso
mount -o loop /root/EXTMAIL.iso  /iso
cd /iso
tar -zxf extmail-1.2.tar.gz -C /var/www/extsuite/
tar -zxf extman-1.1.tar.gz -C /var/www/extsuite/
cd /var/www/extsuite

mv extmail-1.2 extmail
mv extman-1.1 extman
cd extman/docs/

grub-md5-crypt 創建密碼 abc.com
vim init.sql
修改root@extmail.org的密碼(復制grub產生的密碼,在第27行 INSERT INTO manager VALUES ('root@extmail.org', 刪除此處的示例密碼)
如果mysql沒有設置密碼:

    mysql < extmail.sql  導入extmail自帶數據庫
    mysql < init.sql     導入extmail的測試賬戶

有密碼:

        mysql -uroot -p <extmail.sql
            Enter password:  123
        mysql -uroot -p <init.sql

然后用
mysql -uroot -p
輸入密碼123
輸入 show databases; (有分號)
使用數據庫,輸入:

use extmail
show  tables;
exit

2.配置postfix支持虛擬域

cd /var/www/extsuite/extman/docs/
拷貝模板文件:(支持虛擬用戶)

cp mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf  /etc/postfix/
useradd -u 600 vmail
postconf -e inet_interfaces=all
postconf -e virtual_mailbox_base=/home/vmail
postconf -e virtual_uid_maps=static:600
postconf -e virtual_gid_maps=static:600

postfix讀取模板文件:

postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql_virtual_alias_maps.cf
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql_virtual_domains_maps.cf
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
重啟postfix,查看是否成功!

/etc/init.d/postfix restart
發一封郵件:
echo "hello world" | mail -s test support@extmail.org
(沒有DNS則不會成功)

cd /home/vmail/ ; ls
extmail.org 目錄存在則postfix配置成功
進入收件箱:
cd /home/vmail/extmail.org/postmaster/Maildir/new/
cat 查看

3.配置MDA(dovecot)

yum -y install dovecot dovecot-mysql 
cd /etc/dovecot/conf.d/
vim 10-mail.conf  
          mail_location = maildir:/home/vmail/%d/%n/Maildir  郵件收取配置,這里采用mairdir形式                   24行
          first_valid_uid = 600    167行


vim 10-auth.conf
          !include auth-sql.conf.ext  去掉注釋    120行
cd ../ 
cp /usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext  /etc/dovecot
   
vim dovecot-sql.conf.ext
          driver = mysql   29行
          connect =  host=localhost dbname=extmail user=extmail password=extmail          63行
          default_pass_scheme = MD5   73行
          password_query = \            102行
              SELECT username, domain, password \
              FROM mailbox WHERE username = '%u' and domain = '%d'      (小心,此處需要修改)
          user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'          120行

啟動dovecot,測試
/etc/init.d/dovecot start

Dovecot 是一個開源的 IMAP 和 POP3 郵件服務器,支持 Linux/Unix 系統。

yum -y install telnet
telnet localhost 110

Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready. 1832.1.513560b4.LftMXp8dtjujF/reBTodLw==@desktop19.example.com
user postmaster@extmail.org (命令:輸入用戶名)
+OK
pass extmail (命令:輸入密碼)
+OK Logged in.
list (命令:列出郵件)
+OK 2 messages:
1 568
2 568

retr 2 (命令:查看第二封郵件)

quit 退出

4.配置web界面:
vim /etc/httpd/conf/httpd.conf

在最后一行添加以下內容即可(復制容易出現符號錯誤,要謹慎,出現錯誤的原因是空格問題,復制時,不要帶上任何空格)

<VirtualHost *:80>
      ServerName mail.extmail.org
      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
      SuexecUserGroup vmail vmail
</VirtualHost>

可以考慮復制下面的代碼:

<VirtualHost *:80>
ServerName mail.extmail.org
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
SuexecUserGroup vmail vmail
</VirtualHost>

檢查每一行后面是否有空格,有則刪除。

cd /var/www/extsuite/extmail
chown -R  vmail.vmail cgi/
\cp webmail.cf.default webmail.cf
vim webmail.cf
     SYS_MAILDIR_BASE = /home/vmail     127行
     SYS_MYSQL_USER = extmail           139行
     SYS_MYSQL_PASS = extmail
     SYS_CRYPT_TYPE = plain             136行
cd /var/www/extsuite/extman
chown -R vmail.vmail cgi/
cp webman.cf.default webman.cf
vim webman.cf
     SYS_MAILDIR_BASE = /home/vmail    12行
     SYS_SESS_DIR = /tmp/               18行
     SYS_CAPTCHA_LEN = 4              27行(驗證碼長度)
     SYS_CRYPT_TYPE = plain            124行 (字符集驗證類型)

vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80                去掉注釋 第990行

啟動httpd service httpd start
測試界面:
這里會報錯,所以我們安裝以下軟件以防報錯

yum  -y install *CGI 
cd /iso
tar xf Unix-Syslog-1.1.tar.gz -C /root
cd /root/Unix-Syslog-1.1
perl Makefile.PL

此處盡量一步一步來,以免出錯。

make test
make install 

在新用戶注冊時,出現驗證碼顯示不正常則:

cd /iso
yum install -y perl-GD-2.44-3.el6.x86_64.rpm

EXTmail郵件后臺extman顯示No such file or directory
運行以下命令:
/var/www/extsuite/extman/daemon/cmdserver -d

service httpd restart

測試帳號
postmaster@extmail.org
extmail

管理員帳號
Root
abc.com相當于grub的md5密碼

如果重啟后發現登錄時提示DBI connect ......can't connect to mysql server
則需要啟動MySQL
service mysqld start

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容