Postfix、saslauthd、mysql、smtp認證問題
試圖在我的郵件伺服器(ubuntu 10.04)上進行身份驗證,但遇到了問題。我有一個用於 smtp 設置的帶有 postfix 的伺服器,一個帶有 courier 設置的 imap 伺服器。我的後綴身份驗證使用的是 cyrus(我還沒有真正嘗試過 dovecot)saslauth。使用者名和密碼儲存在 MySql 數據庫中。使用 imap-ssl 登錄可以在遠端客戶端 (thunderbird) 上執行,我可以閱讀我的郵件。我無法讓 SMTP 端正常工作,並將問題集中在 saslauth 上。
測試
testsaslauthd -u 'username' -p 'passowrd' -s smtp
返回
connect() : Permission denied
數據庫中的密碼是加密的,我猜這個 testaslauthd 將採用純文字密碼並對其進行加密。
找人來指導我完成這項工作。我是郵件伺服器的新手,從來沒有完全正常工作過。謝謝。問我應該查看/發布哪些日誌文件,要執行哪些測試,要檢查的權限。
編輯: (2012 年 3 月 26 日)有關更多資訊,我無法讓任何郵件客戶端工作,它們給出的錯誤如下
The message could not be sent because connecting to SMTP server <mydomain.com> failed. The server may be unavailable or is refusing SMTP connections
我在 iptables 上打開了相應的埠,但我猜測這是一個內部問題,因為我在上面執行了測試。我也跑過去跑,
telnet
然後得到這個作為回報mail.mydomain.com 25``ehlo localhost
250-mail.domain.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN
編輯:(2012 年 3 月 28 日下午 2:45)
~$ postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no broken_sasl_auth_clients = yes config_directory = /etc/postfix inet_interfaces = all inet_protocols = all mailbox_size_limit = 0 mime_header_checks = regexp:/etc/postfix/mime_header_checks mydestination = mail.mydomain.co, localhost, localhost.localdomain myhostname = mail.mydomain.co mynetworks = 127.0.0.0/8 myorigin = /etc/mailname proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps readme_directory = no recipient_delimiter = + relayhost = smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem smtpd_tls_key_file = $smtpd_tls_cert_file smtpd_tls_session_cache_timeout = 3600s smtpd_use_tls = yes virtual_alias_domains = virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf, mysql:/etc/postfix/mysql-email.cf virtual_gid_maps = static:5000 virtual_mailbox_base = /home/vmail virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf virtual_uid_maps = static:5000
編輯:已解決(2012 年 3 月 29 日) 感謝 @AveryPane 和 @malloc4k 為我指明了正確的方向。我必須做的幾件事,確保我的 MX 記錄順序正確。我使用了 intodns.com 和http://www.mxtoolbox.com工具來檢查我的伺服器是否正在接受連接。然後使用 tail -f 查看我的日誌是否有任何錯誤,很高興看到在理順我的 DNS 記錄並調整一些配置文件後實際上記錄了一些內容。
我不知道的兩件事之一是一些 ISP 阻止了埠 25,這可能是為什麼 Thunderbird 在埠 25 上沒有看到我的伺服器的原因。文件中的第二個
/etc/postfix/master.cf
是關於允許哪些埠的設置後綴聽。預設埠 25 就在那裡smtp inet n - - - - smtpd
這基本上說你好,我是 postfix,我在埠 25 上執行。如果你想在另一個埠上執行 postfix,587 這對郵件伺服器很流行,在 master.cf 中添加這一行附近
587 inet n - - - - smtpd
執行重新啟動
/etc/init.d/postfix restart
,你應該設置。這就是我的解決方案。
找人來指導我完成這項工作。我是郵件伺服器的新手,從來沒有完全正常工作過。
歡迎來到電子郵件地獄,我的朋友。你在很好的公司。首先,如果你真的很想執行一個電子郵件伺服器,你會想要學習的。電子郵件就像大多數公用事業服務一樣——被認為是理所當然的,但沒有人願意考慮使其發揮作用所涉及的努力。我推薦 O’Reilly 的優秀(謝天謝地簡短)書籍Postfix: The Definitive Guide,它是關於執行 Postfix 的極好資訊來源。
我還會花時間閱讀一些基本的“遊戲規則”,因為很多全球電子郵件系統基本上是一堆君子協議,不妨礙彼此的投遞。當然,您可以瀏覽大量文件,例如RFC 2142和其他文件,但我認為我們可以將其濃縮為一些簡單的規則:
- 做一個負責任的管理員。 這意味著擁有一個功能性的 abuse@yourveryowndomain.com 地址,以及一個 postmaster@yourveryowndomain.com,它實際上會發送到除比特桶之外的其他東西。將這些發送到 /dev/null 是另一種進入黑名單的好方法。畢竟,谁愿意和一個不聽別人談論他們正在做的問題的人打交道呢?
- 您現在是社區的一員。這意味著您會遇到其他以不同方式做事的管理員,嗯,他們會對如何完成工作有不同的看法。只要他們是明智的或有理由的,就放鬆和傾聽。
- 在這個社區中,您負責自己的伺服器。 如果其他人發現您在做不合時宜的事情(例如成為垃圾郵件公開中繼 - 稍後會詳細介紹),您將很快被列入黑名單。盡最大努力做正確的事。
- 執行您自己的伺服器意味著您已經為它投入了您的資源。不要被垃圾郵件發送者(冒充“電子郵件行銷人員”)所左右,告訴您他們有權使用**您的資源為所欲為。我經常以“但是-但是-但這不是您的決定,這是收件人的決定,您應該讓我的電子郵件通過”的形式聽到這種說法。你的回應應該永遠是,“這是我的決定,這是我的伺服器,你現在是我黑名單上的一個褪色記憶。”
- 其他伺服器不是您可以使用的資源;您出於善意和他人的考慮使用它們。 善待其他管理員,並牢記關於向其伺服器發送大量電子郵件的“黃金法則”。如果有人將一封電子郵件轉發到您伺服器上的 2,000 個不同的郵箱,您會願意嗎?
- 在您完成所有設置並執行一段時間後,請返回並定期檢查您的日誌。是的,每小時有數千個條目是垃圾郵件發送者,他們試圖 (a) 將他們的豬肉副產品發送到您的收件箱或 (b) 將您作為跳板將其發送給其他人。這導致我們…
- 垃圾郵件發送者每隔幾個月就會改變策略。 通常,在您的反垃圾郵件設置中進行小幅調整就足以消除滋擾。
- 看在 ${DIETY} 的份上,不要在 Internet 的公共端執行開放中繼。 開放中繼的概念,即從任何人那裡接收電子郵件並將其發送到任何地方的機器,是過去的遺留物,當時網際網路是一個更友善、更溫和的地方。在當今時代,垃圾郵件發送者會找到您,他們會將您的機器變成他們自己的電子郵件機槍,他們最終會在此過程中誹謗您的好名聲。
- **你會遇到不關心他們的伺服器的管理員,**就像一個防禦性的司機在路上尋找其他(愚蠢的)司機一樣,你需要留意他們。
- 糟糕的管理員通常會配置糟糕的伺服器。 有些商業供應商只想快速賺錢,他們不在乎其他人在“大肆破壞”他們的伺服器時會發生什麼。這意味著您將遇到做愚蠢事情的伺服器,並且一些管理員會與您通電話並想交換為什麼這是“您的問題”而不是他們的問題。仔細檢查你的伺服器並確保它真的不是你,然後禮貌地用四分之三的線索告訴他們他們的錯誤……
還有很多很多,但這些基本的東西應該讓你指向正確的方向。
我無法讓任何郵件客戶端工作,
關於您問題的“客戶端無法發送”部分,該問題與您接受電子郵件的域有關。具體來說,您的文章提到:
mydestination = myhostname = my.domain.com
這兩個都是不正確的。看這裡設置
mydestination
參數,這裡myhostname
看參數。這兩個參數基本上告訴 postfix 它將根據 To: 電子郵件地址的右半部分接受什麼來傳遞。將它們設置為空,my.domain.com
意味著它只會接受傳遞,my.domain.com
但它仍然不會傳遞,因為它mydestination
是空白的。我可能是錯的,但我不認為那是你想要的。