Linux下centos7搭建postfix郵件服務(wù)器系統(tǒng)
[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!
現(xiàn)在雖然有很多的免費(fèi)郵局,不過(guò)我們發(fā)送的郵件有時(shí)候很多,或者很多同事在用,價(jià)格就會(huì)昂貴,其實(shí)并不是垃圾郵件,就是與其他廠商來(lái)交互的郵件,這時(shí)候就需要自己建立一個(gè)郵局比較好,下面我們就來(lái)說(shuō)說(shuō)centos7搭建postfix郵件系統(tǒng);
1. 郵件系統(tǒng)的簡(jiǎn)單介紹:
電子郵件系統(tǒng)基于郵件協(xié)議來(lái)完成電子郵件的傳輸,常見的郵件協(xié)議有下面這些。
簡(jiǎn)單郵件傳輸協(xié)議(Simple Mail Transfer Protocol,SMTP):用于發(fā)送和中轉(zhuǎn)發(fā)出的電子郵件,占用服務(wù)器的25/TCP端口。
郵局協(xié)議版本3(Post Office Protocol 3):用于將電子郵件存儲(chǔ)到本地主機(jī),占用服務(wù)器的110/TCP端口。
Internet消息訪問(wèn)協(xié)議版本4(Internet Message Access Protocol 4):用于在本地主機(jī)上訪問(wèn)郵件,占用服務(wù)器的143/TCP端口。
一個(gè)最基礎(chǔ)的電子郵件系統(tǒng)肯定要能提供發(fā)件服務(wù)和收件服務(wù),為此需要使用基于SMTP協(xié)議的Postfix服務(wù)程序提供發(fā)件服務(wù)功能,并使用基于POP3協(xié)議的Dovecot服務(wù)程序提供收件服務(wù)功能。這樣一來(lái),用戶就可以使用Outlook Express或Foxmail等客戶端服務(wù)程序正常收發(fā)郵件了。
實(shí)際操作:
- 準(zhǔn)備環(huán)境?,開放需要的端口,并卸載sedmail,域名解析配置,修改hostname
- 安裝并且配置好postfix發(fā)件服務(wù)
- 安裝并且配置好dovect收件服務(wù)
- 測(cè)試,檢查發(fā)送情況。
2. 準(zhǔn)備環(huán)境:
?首先我們檢查我們的服務(wù)器能否telnet通我們要發(fā)送的一些郵件服務(wù)商的端口,比如qq,163,gmail等,如果不通的話需要更換服務(wù)器,因?yàn)榇朔?wù)器商將這些給攔截了,
正常的現(xiàn)象是:出現(xiàn)220字樣才是正常的。
以下命令不需修改,復(fù)制執(zhí)行即可
yum install xinetd telnet telnet-server -y
telnet smtp.qq.com 25
我們需要開放我們需要的端口,端口有25(SMTP服務(wù),用于發(fā)送郵件),110(pop3服務(wù),用于接收郵件)143(imap服務(wù),用于接收郵件)
如果你只想用pop3服務(wù),那么我們只需要打開110和25端口即可,如果我們使用了ssl的話,
pop3就需要開放我們的465(發(fā)件)?995(收件)端口
imap就需要開放我們的465(發(fā)件)?993(收件)端口
2.1 開放端口:
firewall-cmd --add-port=25/tcp --permanent firewall-cmd –-add-port=110/tcp --permanent firewall-cmd --reload
2.2?移除sendmail
rpm -e sendmail 或者 yum remove sendmail
2.3?域名解析配置
我們需要添加A記錄和mx記錄。首先添加A記錄解析到我們的服務(wù)器ip。
2.4?mx 記錄
在需要填入值的地方填入我圖片中的對(duì)應(yīng)字符。
2.5?修改hostname
hostnamectl set-hostname mail.域名
2.6 修改MTA(默認(rèn)郵件傳輸代理)
alternatives --config mta
然后直接回車即可。
檢查一下是不是已經(jīng)設(shè)置成功了。
alternatives --display mta
第一行可以看到mta的狀態(tài)。 例如:mat - status is manual.就是ok了。
3. POSTFIX
postfix是提供發(fā)件服務(wù)的(注意:修改配置文件需備份,以下步驟未包含備份。)
postfix服務(wù)程序主配置文件中的重要參數(shù)。
參數(shù) | 作用 |
myhostname | 郵局系統(tǒng)的主機(jī)名 |
mydomain | 郵局系統(tǒng)的域名 |
myorigin | 從本機(jī)發(fā)出郵件的域名名稱 |
inet_interfaces | 監(jiān)聽的網(wǎng)卡接口 |
mydestination | 可接收郵件的主機(jī)名或域名 |
mynetworks | 設(shè)置可轉(zhuǎn)發(fā)哪些主機(jī)的郵件 |
relay_domains | 設(shè)置可轉(zhuǎn)發(fā)哪些網(wǎng)域的郵件 |
3.1 安裝 postfix
在centos7里我們的postfix是系統(tǒng)自帶的,但是centos7以前的版本是默認(rèn)不帶的,centos7版本以前是sendmail
如果沒(méi)有則安裝 :
yum install postfix
3.2 配置:
1
|
vim? /etc/postfix/main .cf |
修改內(nèi)容:
# 75行: 取消注釋,設(shè)置hostname myhostname = mail.abc.com # 83行: 取消注釋,設(shè)置域名 mydomain = abc.com # 99行: 取消注釋 myorigin = $mydomain # 116行: 默認(rèn)是localhost,我們需要修改成all inet_interfaces = all # 119行: 推薦ipv4,如果支持ipv6,則可以為all inet_protocols = ipv4 # 164行: 添加 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 264行: 取消注釋,指定內(nèi)網(wǎng)和本地的IP地址范圍 mynetworks = 127.0.0.0/8 # 419行: 取消注釋,郵件保存目錄 home_mailbox = Maildir/ # 571行: 添加 smtpd_banner = $myhostname ESMTP # 添加到最后 # 規(guī)定郵件最大尺寸為10M message_size_limit = 10485760 # 規(guī)定收件箱最大容量為1G mailbox_size_limit = 1073741824 # SMTP認(rèn)證 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
以上對(duì)應(yīng)的對(duì)應(yīng)的行數(shù)位置可能隨著版本不同會(huì)有差異。具體的一些參數(shù)含義在本小節(jié)前面有解釋
3.3 開啟postfix服務(wù)并添加到系統(tǒng)自啟。
systemctl restart postfix systemctl enable postfix
4. 安裝并配置dovecot
???????4.1 安裝dovecot
yum install dovecot
4.2 配置dovect
編輯文件dovecot.conf
vim /etc/dovecot/dovecot.conf
更改內(nèi)容:
# 26行: 如果不使用IPv6,請(qǐng)修改為* listen = * #在主配置文件中的第48行,設(shè)置允許登錄的網(wǎng)段地址,也就是說(shuō)我們可以在這里限制只有來(lái)自于某個(gè)網(wǎng)段的用戶才能使用電子郵件系統(tǒng)。如果想允許所有人都能使用,則不用修改本參數(shù) login_trusted_networks = 192.168.10.0/24更改內(nèi)容
編輯文件10-auth.conf
vim /etc/dovecot/conf.d/10-auth.conf
更改內(nèi)容:
# 9行: 取消注釋并修改 disable_plaintext_auth = no # 97行: 添加 auth_mechanisms = plain login
編輯文件10-mail.conf
vim /etc/dovecot/conf.d/10-mail.conf
更改內(nèi)容:
# 30行: 取消注釋并添加 mail_location = maildir:~/Maildir
編輯文件10-master.conf
vim /etc/dovecot/conf.d/10-master.conf
更改內(nèi)容:
# 88-90行: 取消注釋并添加 # Postfix smtp驗(yàn)證 unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }
注意:如果我們沒(méi)有使用ssl的話需要進(jìn)行下面的操作。使用了則不需要。
編輯文件10-ssl.conf
vim /etc/dovecot/conf.d/10-ssl.conf
更改內(nèi)容
# 8行: 將ssl的值修改為 ssl = no
啟動(dòng)dovecot并添加到開機(jī)自啟。
systemctl restart dovecot systemctl enable dovecot
5. 收發(fā)郵件測(cè)試
???5.1 創(chuàng)建用戶
郵件的用戶是和系統(tǒng)用戶一致的,也就是說(shuō)系統(tǒng)用戶可以當(dāng)做郵件用戶。
創(chuàng)建用戶并設(shè)置密碼
useradd admin passwd admin
?5.2 使用foxmail進(jìn)行登陸
1中我們需要選擇我們之前開放端口對(duì)應(yīng)的服務(wù)器類型。
2中 我們只需要填入我們的用戶名,例如admin,root
3中 我們收件和發(fā)件都填入我們的mail.域名。例?mail.abc.com
4?中 我們?nèi)绻褂昧藄sl的話就需要勾選,如果沒(méi)有使用的話就不需要勾選
入相應(yīng)信息后我們即可登陸了。然后我們可以進(jìn)行收發(fā)郵件了,我們可以測(cè)試給自己的qq發(fā)一封郵件.
如果我們查看日志發(fā)現(xiàn)?status=bounced ,那么就意味著qq的郵件服務(wù)器將我們這個(gè)服務(wù)器IP設(shè)為惡意IP,不接收這個(gè)IP發(fā)送的郵件。也就意味著如果我們要發(fā)郵件到qq郵箱的話,就需要更換服務(wù)器ip。
如果狀態(tài)是上面的話,就意味著可以正常發(fā)送,還要注意一點(diǎn)的就是我們郵件服務(wù)器的郵件很多時(shí)候會(huì)被放在垃圾箱里,所以當(dāng)你發(fā)送了郵件你在收件箱沒(méi)看到,你可以去垃圾箱里面看看有沒(méi)有。接收方面一般沒(méi)有什么問(wèn)題,用qq郵箱發(fā)送給自己即可(admin@abc.com)
?注意事項(xiàng):
我們郵件服務(wù)器在設(shè)定mynetworks?這個(gè)值的時(shí)候,一行不要設(shè)置all,因?yàn)闀?huì)有很多服務(wù)器會(huì)將你的服務(wù)器作為中轉(zhuǎn)郵件服務(wù)器,最終導(dǎo)致的你的郵件服務(wù)器發(fā)送的郵件被qq,163,gamil,這些郵件服務(wù)商標(biāo)記為垃圾郵件。
當(dāng)某天我們檢查我們的mail日志(/var/log/maillog)時(shí)發(fā)現(xiàn)很多郵件發(fā)送,而且郵件不是我們自己產(chǎn)生的話,那么我們的郵件服務(wù)器是出了問(wèn)題的
這時(shí)我們服務(wù)器一定有很多郵件堆積,然后自己郵件會(huì)發(fā)不出去。
我們需要做的操作:檢查
du -sh /var/spool/postfix/*
查看目錄下的defer和deferred的目錄大小,通過(guò)postqueue –p來(lái)查看隊(duì)列的郵件,通過(guò)postsuper -d ALL?刪除所有的隊(duì)列郵件。
?最后附上屏蔽刷postfix的 IP腳本
#!/bin/bash LOGFILE="/var/log/maillog" #統(tǒng)計(jì)maillog中authentication failure的IP個(gè)數(shù)與IP grep "authentication failure" $LOGFILE|awk '{print $7}'|grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"|sort|uniq -c > af_iplist.txt #取出AF出現(xiàn)大于300次時(shí)的IP awk '$1>300 {print $2}' af_iplist.txt > block_ip_list.txt #大于300次AF的IP添加到iptables中 cat block_ip_list.txt|while read line do /sbin/iptables -nL | grep $line if [ $? != 0 ] then iptables -I INPUT -s $line -j DROP fi done
問(wèn)題未解決?付費(fèi)解決問(wèn)題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信
所寫所說(shuō),是心之所感,思之所悟,行之所得;文當(dāng)無(wú)敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!