2019獨角獸企業重金招聘Python工程師標準>>>
服務器信息
系統:CentOS 6.5 minimal版本
主機:虛擬機
虛擬機IP:192.168.128.128/24
宿主IP:10.1.79.24/24
安裝postfix
注意:CentOS 7實際上已經用postfix+Sasl2代替sendmail了,因此無需安裝。
1.移除sendmail
安裝完成還需要替換系統自帶的sendmail:
# rpm -e sendmail
#或者
# yum remove sendmail
修改MTA(默認郵件傳輸代理)
手寫查看有哪些可以選擇的郵件系統
alternatives --display mta
mta - status is manual.
link currently points to /usr/sbin/sendmail.sendmail
/usr/sbin/sendmail.sendmail - priority 90
slave mta-pam: /etc/pam.d/smtp.sendmail
slave mta-mailq: /usr/bin/mailq.sendmail
slave mta-newaliases: /usr/bin/newaliases.sendmail
slave mta-rmail: /usr/bin/rmail.sendmail
slave mta-sendmail: /usr/lib/sendmail.sendmail
slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz
slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz
slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz
slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz
/usr/sbin/sendmail.postfix - priority 30
slave mta-pam: /etc/pam.d/smtp.postfix
slave mta-mailq: /usr/bin/mailq.postfix
slave mta-newaliases: /usr/bin/newaliases.postfix
slave mta-rmail: /usr/bin/rmail.postfix
slave mta-sendmail: /usr/lib/sendmail.postfix
slave mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
slave mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
slave mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
slave mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
Current `best' version is /usr/sbin/sendmail.sendmail.
然后我們修改為/usr/lib/sendmail.postfix
alternatives --set mta /usr/sbin/sendmail.postfix
檢查一下是不是已經設置成功了。
alternatives --display mta | grep "/usr/sbin/sendmail.postfix"
第一行可以看到mta的狀態。 例如:
鏈接當前指向 /usr/sbin/sendmail.postfix
/usr/sbin/sendmail.postfix - priority 30
當前“最佳”版本是 /usr/sbin/sendmail.postfix。
配置Postfix
編輯/etc/postfix/main.cf,可以下載下來修改,也可以使用vi進行編輯:
vi /etc/postfix/main.cf
編輯內容如下
# 75行: 取消注釋,設置hostname
myhostname = mail.bujidao.me
# 83行: 取消注釋,設置域名
mydomain = bujidao.me
# 99行: 取消注釋
myorigin = $mydomain
# 116行: 修改
inet_interfaces = all
# 119行: 推薦ipv4,如果支持ipv6,則可以為all
inet_protocols = all
#209行,把前面的注釋拿掉,不然無法發送到公網 【http://www.cnblogs.com/apexchu/p/4271264.html】
local_recipient_maps =
# 164行: 添加
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 264行: 取消注釋,指定內網和本地的IP地址范圍
mynetworks = 127.0.0.0/8, 10.1.79.0/24,192.168.128.128
# 419行: 取消注釋,郵件保存目錄
home_mailbox = Maildir/
# 571行: 添加
smtpd_banner = $myhostname ESMTP $mail_name# 添加到最后
# 規定郵件最大尺寸為10M
message_size_limit = 10485760
# 規定收件箱最大容量為1G
mailbox_size_limit = 1073741824
# SMTP認證
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
修改好了之后使用service開啟postfix,使用chkconfig postfix on將postfix開機啟動。
#service postfix restart
#checkconfig postfix on #開機啟動,可選
安裝Dovecot
yum -y install dovecot
配置Dovecot
1.修改dovecot.cong
vi /etc/dovecot/dovecot.conf
修改如下:
listen = *,::protocols = imap pop3 lmtp
2.修改auth.conf
vi /etc/dovecot/conf.d/10-auth.conf
# 9行: 取消注釋并修改,表示允許使用明文驗證
disable_plaintext_auth = no
# 97行: 添加,表示允許使用明文登錄
auth_mechanisms = plain login
3.修改mail.conf
vi /etc/dovecot/conf.d/10-mail.conf
# 30行: 取消注釋并添加,使用qmail風格
mail_location = maildir:~/Maildir
4.修改master.conf
vi /etc/dovecot/conf.d/10-master.conf
# 88-90行: 取消注釋并添加
# Postfix smtp驗證
unix_listener /var/spool/postfix/private/auth {mode = 0666user = postfixgroup = postfix
}
5.修改pop3.conf
vi /etc/dovecot/conf.d/20-pop3.conf
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
6.配置ssl驗證
?vi /etc/dovecot/conf.d/10-ssl.conf
ssl = no????#不開啟SSL
#暫時不開啟ssl,因為我們沒有合法的證書,自簽名證書可能存在問題
#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
#ssl_key = </etc/pki/dovecot/private/dovecot.pem???
??7.啟動dovecot并設置開機啟動
service dovecot start
chkconfig dovecot on
8.檢查相關端口
ps aux | grep "dovecot"
root 3894 0.0 0.1 107936 604 pts/1 S+ 14:27 0:00 tail -f dovecot-err.log
root 4040 0.0 0.1 107936 604 pts/2 S+ 14:53 0:00 tail -f /var/log/dovecot-info.log
root 4442 0.0 0.3 15640 1520 ? Ss 16:01 0:00 /usr/sbin/dovecot -F
dovecot 4445 0.0 0.2 9308 1024 ? S 16:01 0:00 dovecot/anvil
root 4446 0.0 0.2 9436 1184 ? S 16:01 0:00 dovecot/log
root 4517 0.0 0.2 112664 972 pts/0 R+ 16:12 0:00 grep --color=auto dovecot
或者
netstat -lntp -4
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 4533/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 4533/dovecot
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 969/sshd
tcp 1 0 0.0.0.0:25 0.0.0.0:* LISTEN 4361/master
使用lsof查詢
lsof -i :143
COMMAND ?PID USER ? FD ? TYPE DEVICE SIZE/OFF NODE NAME
dovecot 4533 root ? 36u ?IPv4 ?95185 ? ? ?0t0 ?TCP *:imap (LISTEN)
dovecot 4533 root ? 37u ?IPv6 ?95186 ? ? ?0t0 ?TCP *:imap (LISTEN)
lsof -i :110
COMMAND ?PID USER ? FD ? TYPE DEVICE SIZE/OFF NODE NAME
dovecot 4533 root ? 24u ?IPv4 ?95149 ? ? ?0t0 ?TCP *:pop3 (LISTEN)
dovecot 4533 root ? 25u ?IPv6 ?95150 ? ? ?0t0 ?TCP *:pop3 (LISTEN)
lsof -i :25
COMMAND ?PID USER ? FD ? TYPE DEVICE SIZE/OFF NODE NAME
master ?4361 root ? 13u ?IPv4 ?93270 ? ? ?0t0 ?TCP *:smtp (LISTEN)
master ?4361 root ? 14u ?IPv6 ?93271 ? ? ?0t0 ?TCP *:smtp (LISTEN)
可以看到master是stmpd,占用了25,dovecot占了110(pop3),143(imap)端口
郵箱驗證與使用
創建用戶
一切都弄好以后,就可以使用Foxmail等第三方軟件來收發郵件了。在這里需要說一下,系統用戶就是郵件的用戶,例如root,就是一個郵箱用戶,郵箱是root@domain.com,密碼就是root的密碼,所以需要創建用戶,只要使用adduser創建用戶,再使用passwd設置密碼。
好了,假如我們創建一個admin的用戶:
#創建用戶組與用戶,并且不允許用戶登錄系統,但是賬戶存在,只用于郵箱
groupadd mailusers
adduser -g mailusers -s /sbin/nologin martin
adduser -g mailusers -s /sbin/nologin jack#分別給martin和jack添加密碼
passwd martin
passwd jack
?
使用偽域名驗證
原則上,我們要使用郵箱,必須具有域名才行,我們要么搭建自己的DNS服務器,要么購買域名,這里為了方便,我們通過修改hosts的方式來實現
修改虛擬機上的hosts
127.0.0.1 bujidao.me
192.168.128.128 bujidao.me127.0.0.1 mail.bujidao.me
192.168.128.128 mail.bujidao.me
然后修改宿主機上的hosts,如果你沒使用宿主機,那么宿主機hosts就不需要修改了,但是大多數時候,我們需要修改。
添加如下內容
192.168.128.128 bujidao.me
192.168.128.128 mail.bujidao.me
關閉虛擬防火墻
service iptables stop
使用foxmail代理客戶端收發郵件
然后創建,到下個頁面修改 郵件賬號
注意:紅色框部分不能帶 @domain,否則登錄不了,因為我們給系統創建的賬戶并沒有添加郵箱
點擊創建,就可以添加jack賬戶了,用同樣的方式,我們可以將martin添加到foxmail
?
然后,我們可以使用jack,martin相互發送郵件了
同樣也可以給其他郵箱發,我給某網站郵箱發郵件也是成功的,當然,我們反對垃圾郵件,做一名好公民使我們的本分。
參考:
Linux系統下郵件服務器的搭建(Postfix+Dovecot)
CentOS 6.5 安裝與配置郵件服務器(postfix + dovecot)??
Postfix+Dovecot+MySQL搭建郵件服務器
CentOS 6.4 郵件服務器之Postfix + dovecot + sasl 筆記??
postfix 安裝配置詳解