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