工作中的電子郵件伺服器突然壞了
好的,所以這台伺服器的背景是:我在 AWS 上執行的 Ubuntu 14.04 伺服器上安裝了 postfix/dovecot/spamassassin/opendkim。在把我的頭髮拉了一點之後,一切正常。為什麼,哦,為什麼,我不只是把這該死的東西放在一邊——好吧,我們永遠不會知道答案。我將它升級到 Ubuntu 16.04,升級後一切正常!為了以防萬一,我製作了一個備份映像,但要啟動並執行它只需要在一個配置文件中進行一次更改。
然後,由於某種莫名其妙的原因,我的住宅 IP 發生了變化(它應該是靜態的,我已經擁有相同的 IP 一年半多了)。
現在,當我嘗試從 Thunderbird 發送電子郵件時,我在 /var/log/mail.log 中得到了這個:
Sep 4 14:03:19 ip-x-x-59-35 postfix/master[2746]: reload -- version 3.1.0, configuration /etc/postfix Sep 4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled Sep 4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: connect from unknown[x.x.x.61] Sep 4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: warning: connect to Milter service unix:/opendkim/opendkim.sock: Connection refused Sep 4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: Anonymous TLS connection established from unknown[x.x.x.61]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits) Sep 4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: NOQUEUE: reject: RCPT from unknown[x.x.x.61]: 550 5.7.25 Client host rejected: cannot find your hostname, [x.x.x.61]; from=<blanked> to=<blanked> proto=ESMTP helo=<[192.168.0.10]> Sep 4 14:03:32 ip-x-x-59-35 postfix/smtpd[2933]: disconnect from unknown[x.x.x.61] ehlo=2 starttls=1 auth=1 mail=1 rcpt=0/1 quit=1 commands=6/7
我的 IP 甚至在配置文件中的唯一位置是在 /etc/postfix/main.cf 中,所以我進去並更新了它(到 xxx0/24,就像以前一樣)。重新啟動後綴,仍然無法正常工作。我也非常困惑為什麼opendkim拒絕通過套接字進行連接……
如果有人可以提供一些見解,將不勝感激。我可以根據需要提供更多資訊。我最初按照這個由四部分組成的教程來設置電子郵件伺服器。我的配置文件與教程第 2 部分中的配置文件幾乎相同。
編輯:我開始回顧上週的日誌(在這個問題開始之前)。opendkim 套接字已經拒絕連接有一段時間了,但是郵件伺服器在發生這種情況時仍在工作。當我的筆記型電腦連接到伺服器以發送郵件時,我注意到日誌中有一個重大差異。這是IP更改之前的樣子:
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: connect from CPE00fc8d374753-CM00fc8d374750.cpe.net.cable.rogers.com[old.ip.138.5] Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: warning: connect to Milter service unix:/opendkim/opendkim.sock: Connection refused Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: Anonymous TLS connection established from **cpe00fc8d374753-cm00fc8d374750.cpe.net.cable.rogers.com**[old.ip.138.5]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits) Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: 8931F80078: client=CPE00fc8d374753-CM00fc8d374750.cpe.net.cable.rogers.com[old.ip.138.5], sasl_method=PLAIN, sasl_username=username@website.com
請注意在 IP 之前有一個主機名嗎?現在不見了,它發送給 Thunderbird 的錯誤是它找不到我的主機名。我相信在設置伺服器時,這是我打開的安全選項之一。我真的很難過如何在不影響郵件伺服器安全性的情況下修復它。
另外,opendkim 的東西很奇怪。OpenDkim 是我在切換到 16.04 後必須更改的一件事——由於切換到 systemctl (systemd),它為 opendkim 服務創建了一個新文件。出於某種原因,opendkim 在另一個地方尋找它的配置文件,所以我只是在那個 .service 文件中添加了一個參數,將它指向配置文件 /etc/opendkim.conf ……它工作得很好。我專門檢查以確保它啟動並正常工作。所以我真的很摸不著頭腦。
問題確實是我的 ISP 出於某種奇怪的原因,在我發送電子郵件時沒有將主機名與我的 IP 一起發送到我的郵件伺服器。因此,由於 /etc/postfix/main.cf 中的 smtpd_sender_restrictions 和 smtpd_recipient_restrictions,它拒絕了未知主機名。
它看起來像這樣:
smtpd_recipient_restrictions = reject_unknown_client_hostname, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_non_fqdn_sender smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch
您會注意到 permit_mynetworks 出現在reject_unknown_client_hostname 之後。為了解決這個問題,我只需將 permit_mynetworks 移到列表的前面,並將其添加到 sender_restrictions 列表中。在變數 mynetworks 中,我輸入了我的特定 IP 而不是以 .0 結尾,以避免其他人能夠發送(儘管他們仍然需要我的密碼)。我不確定移動是否有任何重大的安全影響,如果有人能找到更好的方法來解決它,我將不勝感激!
opendkim 的事情仍然無法正常工作,但這是一個單獨的問題。