配置 Postfix 以使用 Exchange 2013 SMTP 伺服器發送郵件時出現問題
首先,我成功配置了一個有效的 Postfix 配置以使用 SendGrid SMTP 發送郵件。
現在我修改配置以使用 Exchange 2013 SMTP 伺服器發送郵件。
我查看了許多論壇,但找不到什麼不起作用。每次我嘗試發送郵件時,我在 mail.log 中都有:
SASL Authentication failed; server XXX.XXX.XXX.XXX[XXX.XXX.XXX.XXX] said: 535 5.7.3 Authentication unsuccessful
這是 main.cfg :
# See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate “delayed mail” warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = MYNAME alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = MYNAME, localhost.localdomain, localhost mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_command = procmail -a “$EXTENSION” mailbox_size_limit = 51200000 recipient_delimiter = + inet_interfaces = loopback-only default_transport = smtp relay_transport = smtp inet_protocols = ipv4 myorigin = /etc/mailname # enable SASL authentication smtp_sasl_auth_enable = yes smtp_sasl_password_maps = static:Domain\email@domain.fr:password smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt header_size_limit = 4096000 relayhost = XXX.XXX.XXX.XXX:587 #smtp_tls_security_level=none
你的配置:
smtp_sasl_password_maps = static:Domain\email@domain.fr:password
是錯的。
文件是:http ://www.postfix.org/postconf.5.html#smtp_sasl_password_maps
smtp_sasl_password_maps(預設值:空)
帶有一個使用者名的可選 Postfix SMTP 客戶端查找表:每個發件人的密碼條目、遠端主機名或下一跳域。僅當啟用了與發件人相關的身份驗證時,才會進行每個發件人的查找。如果未找到使用者名:密碼條目,則 Postfix SMTP 客戶端將不會嘗試對遠端主機進行身份驗證。
Postfix SMTP 客戶端在進入 chroot 監獄之前會打開查找表,因此您可以將密碼文件留在 /etc/postfix.xml 中。
指定零個或多個“type:name”查找表,以空格或逗號分隔。將按指定順序搜尋表,直到找到匹配項。
要了解查找表,請查看表上的後綴文件
因此,您可能需要使用您的交換伺服器憑據創建一個文件,對其進行後映射以建構雜湊數據庫並將 smtp_sasl_password_maps 指令指向該文件。
- 使用此內容創建文件 /etc/postfix/sasl_password (修改明顯的位):
$$ your.exchange.server $$:587 使用者名@domain.tld:密碼 這
$$ $$表示您不想在主機上執行 mx 查找,587 是送出埠。修改以滿足您的要求。 這個文件包含憑據,保護它,至少它不應該是世界可讀的。理想情況下,只有 root 應該讀/寫它。
- postmap sasl_password 文件:
# postmap hash:/etc/postfix/sasl_password [enter]
這將創建一個雜湊數據庫文件 /etc/postfix/sasl_password.db 後綴將使用該文件。
修改你的 main.cf:
smtp_sasl_password_maps = 雜湊:/etc/postfix/sasl_passwd
重新啟動後綴服務(取決於您的作業系統,如果您不知道如何執行此操作,請重新啟動伺服器)。測試它是否有效。