postfix 郵箱設置及常見錯誤
1、如果裝了sendmail的話,先卸載了。
yum remove sendmail
2、安裝 Postfix
yum install postfix
3、更改默認MTA為Postfix:
/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix
4、完事兒,再次檢查下是否將MTA改為Postfix了:
alternatives --display mta
5、配置Postfix,vi編輯main.cf
vi /etc/postfix/main.cf
打開后分別找到以下幾項,將其前面的#去掉,並做配置:
myhostname = mail.wpdaxue.com mydomain = wpdaxue.com myorigin = $mydomain inet_interfaces = all inet_protocols = ipv4 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 192.168.100.10/28, 127.0.0.0/8 relay_domains = home_mailbox = Maildir/
以上幾個設置項不在同一個位置,需要分別尋找,並進行更改,其中相應的域名請改為自己的地址,mynetworks我是沒有做改變,自動就有的。我剛開始也是配置錯了導致安裝失敗,后來在 @朱茂海的博客找到該答案,以上幾項的含義解釋也來自該網站,感謝作者提供。
配置文件解釋:
mydomain:
mydomain參數是指email服務器的域名,請確保為正式域名(如centos.bz)
myhostname:
myhostname參數是指系統的主機名稱(如我的服務器主機名稱是mail.centos.bz)
myorigin:
myorigin參數指定本地發送郵件中來源和傳遞顯示的域名。在我們的例子中,mydomain是centos.bz,也是我的域名。
對於下面的一行,我們的郵件地址是user@centos.bz而不是user@mail.centos.bz。
myorigin = $mydomain
mynetworks:
mynetworks參數指定受信任SMTP的列表,具體的說,受信任的SMTP客戶端允許通過Postfix傳遞郵件。
mydestination:
mydestination參數指定哪些郵件地址允許在本地發送郵件。這是一組被信任的允許通過服務器發送或傳遞郵件的IP地址。用戶試圖通過發送從此處未列出的IP地址的原始服務器的郵件將被拒絕。
inet_interfaces:
inet_interfaces參數設置網絡接口以便Postfix能接收到郵件。
relay_domains:
該參數是系統傳遞郵件的目的域名列表。如果留空,我們保證了我們的郵件服務器不對不信任的網絡開放。
home_mailbox:
該參數設置郵箱路徑與用戶目錄有關,也可以指定要使用的郵箱風格。
6、檢測並啟動Postfix
service postfix status //檢測,若已啟動會列出其PID,如下: master (pid 25579) is running... //若未啟動,執行以下命令: service postfix start
7、設置開機啟動
chkconfig postfix on
我自己的安裝到此為止就結束了,因為我只需要的是mail功能,並非搭建郵件服務器。此時測試郵件發送,OK。
參考資料:http://www.gongzi.org/centos-install-postfix-sendmail.html
8、補充:如果你之前沒有配置過 sendmail 組件,那你很可能沒有修改 php.ini 的郵件發送路徑,那樣可能無法發送郵件。
所以你需要配置php.ini,填寫sendmail的絕對路徑:
使用命令打開編輯php.ini
vi /usr/local/php/etc/php.ini
輸入?sendmail_path 查找定位(或者手動跳轉找到sendmail_path),你會發現默認是下面的代碼
;sendmail_path =
按 i 進入編輯,將這行修改為
sendmail_path = /usr/sbin/sendmail -t -i
按 Esc 鍵退出編輯,輸入 :wq 保存退出
重啟php-fpm進程 /etc/init.d/php-fpm restart
如果還沒安裝php當然就沒有/usr/local/php/etc/php.ini或者/etc/php.ini文件了,
安裝:yum -y install php
php-cgi restart
9、補充2:通過以上配置,就可以正常發送郵件了,但是發件人郵箱會是 www@wpdaxue.com 這種類型,如果想修改 www 這個參數,比如修改為 admin@wpdaxue.com 需要按照下面的步驟操作:
編輯 /etc/postfix/canonical:
vi /etc/postfix/canonical
添加下面類型的代碼:
www admin@wpdaxue.com
保存退出,然后進入到 /etc/postfix/ 目錄:
cd /etc/postfix/
執行命令:
postmap canonical
接着編輯 /etc/postfix/main.cf:
vi /etc/postfix/main.cf
一般情況下里面沒有canonical_maps這個參數,在空行處添加:
canonical_maps = hash:/etc/postfix/canonical
保存退出,然后重啟 postfix:
postfix reload
再次發送郵件測試,奇跡應該就發生啦!
10、補充3:通過上面的設置,雖然可以正常發送郵件,但是建議添加 DNS 解析,以減少被判定為垃圾郵件的幾率。通常需要添加3個解析:A記錄、MX記錄、TXT記錄,比如這里的 wpdaxue.com 域名的解析如下:
這樣就好多了,最后,推薦使用下面的網站來測試你的服務器發送的郵件所得分數,它會給出詳細的測試結果和改進方法:
問題:
1.postdrop: warning: unable to look up public/pickup: No such file or directory
解決 mkfifo /var/spool/postfix/public/pickup
2. postqueue: warning: unable to look up public/qmgr: No such file or directory
解決 mkfifo /var/spool/postfix/public/qmgr
3.postqueue: fatal: Cannot flush mail queue - mail system is down
原因:可能25端口被占用
lsof -i:25 如果有占用程序 kill -9 PID 殺了那個程序重啟 postfix
4. 給騰訊郵箱發郵件報錯:status=bounced (host mx3.qq.com[183.57.48.35] said: 550 Ip frequency limited. http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000725 (in reply to end of DATA command))
解決:在騰訊郵箱中設置白名單
第一個設置個人,第二個設置域
5. status=bounced (unknown user: "kefu.czj")
mydestination = $mynetworks, $myhostname, localhost.$mydomain, localhost, $mydomain 這一行中
6.status=bounced (host mxn.mxhichina.com[42.120.219.27] said: 502 Mailfrom account is a local account root@520czj.com (in reply to MAIL FROM command))
原因:對方的郵件地址,使用的是萬網的企業郵局,而發信人用的也是萬網注冊的域名,加上退信的內容是Mialfrom account is a local account,這樣就表明,發信人的域名存在了萬網的郵件服務器上,這樣發信人自架的郵件發信過去,就自然會提示這個錯誤了。
辦法一:換一個域名
辦法二(沒親測):就是刪除萬網上的企業郵件即可,即在萬網的郵件服務器上不要有你的那個郵件域。
其它錯誤:
1.status=bounced (host mx54.dns.com.cn[220.181.130.176]said: 550 Does not like recipient,your mail is rejected! (in reply to end of DATA command)); sender non-delivery notification: F20F2DD80FC;removed
出錯原因:對方某一台收件服務器當時正處在繁忙之中或者我們的服務器和對方鏈接並不是很順暢
解決方法:有可能是暫時的情況,用別的地址測試一下,看看是否被退信,或者過一段時間再發送一下
2.status=bounced (host 192.168.21.20[192.168.21.20] said: 552 5.2.2 Over quota (in reply to end of DATA command));
出錯原因:對方郵箱空間已滿
解決方法:對方清理郵箱重新發送
3.1)status=bounced(hostmx3.qq.com[183.60.2.53]said:550Mailboxnotfound.http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000728 (in reply to RCPT TO command)); sender non-delivery notification: 9CC7FDD8084; removed
3.2)status=bounced (host 163mx01.mxmail.netease.com[220.181.12.62] said: 550 User not found: cjld@163.com (in reply to RCPT TO command)); sender non-delivery notification: 8FD7CA00013A; removed
出錯原因:收件人地址不存在或者收件人地址寫錯
解決方法:核對地址后重新發送
4.status=deferred(hostmxzwg4.mxhichina.com[58.68.254.104]said:450MI:IPBhttp://www.net.cn/service/faq/youx/mailsy/200905/3781.html (in reply to MAIL FROM command))
出錯原因:450MI:IPB發信IP被暫時禁止,請檢查是否有用戶發送病毒或者垃圾郵件。
解決方法:聯系您的企業郵箱運營商
5.status=deferred(connecttoapllo-zm.com[60.191.124.236]:25:Connectiontimedout);from=<jinxiuren@hanshitx.com>, size=24500463, nrcpt=2 (queue active);
出錯原因:與對方郵箱服務器連接超時
解決方法: 首先確認對方郵箱地址中的域名部分是否寫錯,如果沒錯,telnet對方郵箱ip的25端口是否連接,如果連接正常,那么基本上是暫時的網絡問題。
6.1)status=bounced (host sohumx1.sohu.com[220.181.26.202] said: 553 5.7.3 CONTENT REJECT:10.10.71.82.2011062016.XXD6ywq8:dspam check:5:http://mail.sohu.com/info/policy/12 (in reply to end of DATA command));
6.2)Recipient address rejected: User unknown in local recipient table
出錯原因:1)內容被拒絕,可能是收件人對所接收的郵件進行了設置,內容中含有特定詞匯等會被拒絕
2)收件人地址被拒絕
解決方法:核實對方是否對內容及賬戶進行了設置之后重新發送
7.Clienthostrejected: Access denied; from=<cici@ybxchina.com> to=<terancetan@lovelylace.com> proto=SMTP helo=<hjy1>
出錯原因:客戶端主機被拒絕
解決方法:看一下客戶端接收郵件服務器設置是否正確,“我的服務器需要身份驗證”是否打鈎,測試一下發信25口是否已連接
8. status=bounced (host mx1.mail.cnb.yahoo.com[203.209.228.250] said: 554 delivery error: dd Sorry your message to weixing201314@yahoo.com.cn cannot be delivered. This account has been disabled or discontinued [#102]. - mta1004.mail.cnb.yahoo.com (in reply to end of DATA command)); sender non-delivery notification: 1C580DD80B4; removed
出錯原因:對方賬號被停用或者不可用
解決方法:正常退信,換賬號發送
9.status=bounced (message size 24864357 exceeds size limit 10240000 of server cluster4.us.messagelabs.com[98.126.139.202]); sender non-delivery notification: C6A3BDD8078; removed
出錯原因:郵件過大,超出對方單封郵件接收范圍(已解決)
解決方法:對方換賬號,重新發送
10. status=bounced (host 163mx03.mxmail.netease.com[220.181.12.90] said: 552 Requested mail action aborted: exceeded mailsize limit (in reply to end of DATA command));
出錯原因:發送的信件大小超過了網易郵箱允許接收的最大限制
解決方法:把附件壓縮或者分次發送或者換其他郵箱接收
11. <Eric.Goetzman@chp.edu>: host mail.messaging.microsoft.com[216.32.180.22] said:
550 5.7.1 Service unavailable; Client host [98.126.139.202] blocked using Blocklist 2, mail from IP banned; To request removal from this list please forward this message to delist@messaging.microsoft.com. (in reply to RCPT TO command)
Reporting-MTA: dns; hw.upanshi.com
X-Postfix-Queue-ID: CC2D4681FD
X-Postfix-Sender: rfc822; order@ptm-biolab.com
Arrival-Date: Thu, 13 Oct 2011 19:48:18 -0700 (PDT)
Final-Recipient: rfc822; Eric.Goetzman@chp.edu
Original-Recipient: rfc822;Eric.Goetzman@chp.edu
退信原因:ip被列入黑名單
解決方法:根據退信提示解封ip