Mysql

Postfix、saslauthd、mysql、smtp認證問題

  • March 30, 2012

試圖在我的郵件伺服器(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是空白的。我可能是錯的,但我不認為那是你想要的。

引用自:https://serverfault.com/questions/373246