linux運(yùn)維學(xué)習(xí)筆記:郵件服務(wù)器系列之01:postfix + extmail
作者:周少言
201年 月 日 星期 约啊,于北京
聲明:本博客是本人周少言在某培訓(xùn)機(jī)構(gòu)學(xué)習(xí)期間所寫(xiě)段审,其中參考借鑒了他人的博客宰僧,本文將會(huì)選擇性給出相關(guān)鏈接锌妻,如有侵權(quán)勾邦,懇請(qǐng)告知序六。本文如有錯(cuò)誤糕非,懇請(qǐng)告知跃须,歡迎交流站叼。
本文是工作手冊(cè),經(jīng)過(guò)反復(fù)試驗(yàn)所寫(xiě)菇民,所以尽楔,盡情在你的xshell粘貼復(fù)制,讓更多的時(shí)間用來(lái)思考投储!如果有不妥的地方,懇請(qǐng)留言告知阔馋。
如果您覺(jué)得本文值得分享玛荞,請(qǐng)幫忙分享出去哦!知識(shí)的可貴在于分享與交流呕寝,謝謝勋眯。
postfix(作為發(fā)送郵件服務(wù)器)+dovecot(作為接收郵件服務(wù)器)+mysql(作為數(shù)據(jù)庫(kù))+extmail (webmail)
本次實(shí)驗(yàn)所需的資料下載
鏈接:https://pan.baidu.com/s/1qYFow4O 密碼:56qv
用lrzsz將其拖拽到/root目錄下
郵件服務(wù)器原理
概念解釋
MUA:Mail User Agent.郵件用戶代理。(客戶端)
用戶通過(guò)MUA接收發(fā)送郵件用戶通過(guò)MUA接收發(fā)送郵件.例如Outlook,formail等.
MTA:MailTransferProtocol.郵件傳輸代理壁涎。 (發(fā)送郵件服務(wù)器)
是SMTP的一種實(shí)現(xiàn).常用的MTA有sendmail,Postfix.本例中使用Postfix.MTA僅僅負(fù)責(zé)郵件的傳輸,MDA負(fù)責(zé)把接收到的郵件保存在硬盤(pán)中.
MDA: Mail Deliver Agent,郵件分發(fā)代理. 負(fù)責(zé)將接收到的郵件保存在郵件服務(wù)器上.sendmail以及Postfix默認(rèn)使用的MDA是procmail.
MRA: Mail Receive Agent,郵件接收代理凡恍。 (郵件接收服務(wù)器) 用來(lái)實(shí)現(xiàn)IMAP,POP3協(xié)議,負(fù)責(zé)與MUA交互,將服務(wù)器上的郵件通過(guò)IMAP以及POP3傳輸給客戶端.本例中使用的MRA是Dovecot.
LMTP:Local Mail Transfer Protocol. 本地郵件傳輸協(xié)議,是SMTP協(xié)議的擴(kuò)展.本例中用與同一主機(jī)內(nèi)郵件傳輸.
Postfix:一個(gè)開(kāi)源的MTA服務(wù)器,負(fù)責(zé)通過(guò)SMTP協(xié)議管理發(fā)送到本機(jī)的郵件以及由本機(jī)向外發(fā)送的郵件.與sendMail相似.現(xiàn)今流行的服務(wù)器套件例如Zimbra,IRedMail內(nèi)部都采用Postfix作為MTA.
Dovecot:一個(gè)開(kāi)源的IMAP以及POP3服務(wù)器.通常工作是驗(yàn)證用戶身份以及郵件的處理.
MySQL:存取用戶信息,監(jiān)聽(tīng)的域名信息,用戶郵箱地址以及登錄密碼等.
postfix初試探
postfix默認(rèn)已安裝
1、修改postfix主配置文件
vim /etc/postfix/main.cf
myhostname = mail.laihu.com 郵件服務(wù)器主機(jī)名
mydomain = laihu.com 郵件域
myorigin = $myhostname 允許發(fā)送郵件的地址(取消注釋)
myorigin = $mydomain
inet_interfaces = all 監(jiān)聽(tīng)的地址
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 設(shè)置允許接受郵件的地址
home_mailbox = Maildir/ 存放位置
/etc/init.d/postfix restart
(否則會(huì)報(bào)錯(cuò))
2怔球、測(cè)試
先創(chuàng)建兩個(gè)用戶
useradd zhangsan
useradd lisi
passwd ...
yum -y install telnet
安裝telnet
telnet mail.laihu.com 25
鏈接郵件服務(wù)器
helo mail.laihu.com ` 申明域名
mail from: zhangsan@laihu.com`
rcpt to:lisi@laihu.com`
data
dkasjdklasjkdjaklsjdlajskdla (郵件內(nèi)容)
. (表示結(jié)束)
quit (退出)
進(jìn)入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 使用序號(hào)進(jìn)行查看郵件
搭建接企業(yè)級(jí)郵件服務(wù)器
1.使用extmail自帶模板在mysql中創(chuàng)建數(shù)據(jù)庫(kù)
yum -y install mysql mysql-server mailx httpd
/etc/init.d/mysqld start
mysqladmin -uroot password 123
(創(chuàng)建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
創(chuàng)建密碼 abc.com
vim init.sql
修改root@extmail.org的密碼(復(fù)制grub產(chǎn)生的密碼,在第27行 INSERT INTO manager
VALUES ('root@extmail.org', 刪除此處的示例密碼)
如果mysql沒(méi)有設(shè)置密碼:
mysql < extmail.sql 導(dǎo)入extmail自帶數(shù)據(jù)庫(kù)
mysql < init.sql 導(dǎo)入extmail的測(cè)試賬戶
有密碼:
mysql -uroot -p <extmail.sql
Enter password: 123
mysql -uroot -p <init.sql
然后用
mysql -uroot -p
輸入密碼123
輸入 show databases;
(有分號(hào))
使用數(shù)據(jù)庫(kù),輸入:
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
發(fā)一封郵件:
echo "hello world" | mail -s test support@extmail.org
(沒(méi)有DNS則不會(huì)成功)
cd /home/vmail/ ; ls
extmail.org 目錄存在則postfix配置成功
進(jìn)入收件箱:
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行
啟動(dòng)dovecot,測(cè)試
/etc/init.d/dovecot start
Dovecot 是一個(gè)開(kāi)源的 IMAP 和 POP3 郵件服務(wù)器涎跨,支持 Linux/Unix 系統(tǒng)。
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
在最后一行添加以下內(nèi)容即可(復(fù)制容易出現(xiàn)符號(hào)錯(cuò)誤崭歧,要謹(jǐn)慎,出現(xiàn)錯(cuò)誤的原因是空格問(wèn)題隅很,復(fù)制時(shí),不要帶上任何空格)
<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>
可以考慮復(fù)制下面的代碼:
<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行(驗(yàn)證碼長(zhǎng)度)
SYS_CRYPT_TYPE = plain 124行 (字符集驗(yàn)證類型)
vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80 去掉注釋 第990行
啟動(dòng)httpd service httpd start
測(cè)試界面:
這里會(huì)報(bào)錯(cuò),所以我們安裝以下軟件以防報(bào)錯(cuò)
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
此處盡量一步一步來(lái)所宰,以免出錯(cuò)绒尊。
make test
make install
在新用戶注冊(cè)時(shí),出現(xiàn)驗(yàn)證碼顯示不正常則:
cd /iso
yum install -y perl-GD-2.44-3.el6.x86_64.rpm
EXTmail郵件后臺(tái)extman顯示No such file or directory
運(yùn)行以下命令:
/var/www/extsuite/extman/daemon/cmdserver -d
service httpd restart
測(cè)試帳號(hào)
postmaster@extmail.org
extmail
管理員帳號(hào)
Root
abc.com相當(dāng)于grub的md5密碼
如果重啟后發(fā)現(xiàn)登錄時(shí)提示DBI connect ......can't connect to mysql server
則需要啟動(dòng)MySQL
service mysqld start