postfix透過office365中繼所有郵件的問題

postfix透過office365中繼所有郵件的問題

這是一個相當長的問題,包含一長串嘗試過的事情和困難,所以請耐心等待。總結是這樣的。

  1. 我可以使用 postfix 透過 Office365 從 ubuntu 轉發電子郵件;配置有效。
  2. 它只作為用戶之一工作;更具體地說,針對 Office365 進行身份驗證的用戶是唯一有效的“來自”

更多詳細資訊如下。我在亞馬遜的雲端中有一台機器,我在上面運行了很多作業,並且希望將狀態郵寄給我。我在工作中使用office365,所以我想透過office365轉發郵件。我最熟悉 postfix,所以我用它作為 MTA。

配置是ubuntu 12.04LTS;我已經安裝了 postfix 和 mail-utils。

對於這個例子,假設我的公司是“ company.com”,有問題的機器(透過彈性 IP 和 DNS 條目)稱為“ plaything.company.com”。主機名稱設定為“ plaything.company.com”,因此/etc/mailname

在 plaything 上,我註冊了以下使用者alphabravo、 和charlie

我有以下設定檔。

alias_database = 哈希:/etc/aliases
alias_maps = 哈希:/etc/aliases
附加點_mydomain = 否
比夫=不
配置目錄=/etc/postfix
inet_interfaces = 全部
inet_協定 = ipv4
郵箱大小限制 = 0
mydestination = plaything.company.com、localhost.company.com、、localhost
myhostname = plaything.company.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/郵件名
自述文件目錄 = 否
收件者分隔符號 = +
中繼主機 = [smtp.office365.com]:587
sender_canonical_maps = 雜湊:/etc/postfix/sender_canonical
smtp_sasl_auth_enable = 是
smtp_sasl_password_maps = 哈希:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = 是
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = 是

當機器被呼叫時,plaything.company.com我進行了註冊所有適當的 DNS 條目的練習,以使 Office365 識別出我擁有並允許我在 office365 中plaything.company.com建立一個名為的使用者。[email protected]

在 Office365 中,我設定[email protected]為擁有另一個電子郵件地址[email protected].

然後,我做了以下 sender_canonical

[電子郵件受保護] [電子郵件受保護]

我建立了一個 sasl_passwd 文件,內容如下:

smtp.office365.com [email protected]:123456password123456

假設密碼[email protected]1234...456

完成所有這些設定後,登入alpha

郵件[電子郵件受保護]
抄送:
主題:測試
測試

整件事情進展順利。電子郵件由 postfix 發送,TLS 工作得像冠軍,身份驗證daemon@...[電子郵件受保護]在 Office365 中收到一封電子郵件。

登入bravo機器時會出現此問題。

寄件者是[email protected]Office365 說:

status=已退回(主機 smtp.office365.com[132.245.12.25] 說:
550 5.7.1 客戶端沒有權限發送
該發送者(回覆 DATA 指令結束))

這是因為我正在嘗試使用bravo@...Office365 作為 發送郵件並進行身份驗證daemon@...。它起作用的原因alpha@...是因為在office365中,我設定了[email protected]另一個電子郵件地址[email protected].


Postfix 中繼到 Office365,邁爾斯·埃里克森如此回答問題:

  1. 不要以使用者身分從 Office365 託管的電子郵件網域向 Office365 發送郵件。使用子域代替,例如[電子郵件受保護]代替[電子郵件受保護]。為 services.mydomain.com 或您決定使用的任何內容設定 SPF 記錄不會有什麼壞處。

  2. 不要以 Office365 使用者身分對 mail.messaging.microsoft.com 進行驗證。只需連接連接埠 25 並將郵件傳遞到您的網域,就像任何外部 SMTP 代理程式所做的那樣。

好的,我已經完成#1,我在 DNS 上有這些記錄,但在大多數情況下,一旦 Office365 識別出我擁有該網域,它們就不再相關。

以下是這些記錄:

CNAME 記錄: - msoid.plaything.company.com - autodiscover.plaything.company.com

MX 記錄: - plaything.company.com (plaything-company-com.mail.protection.outlook.com)

TXT 記錄: - plaything.company.com (v=spf1 include:spf.protection.outlook.com -all)

我已經嘗試過#2,但無論我做什麼,office365都會以“未經身份驗證”的方式斷開連接。我什至可以嘗試使用簡單的 telnet 到連接埠 25 並嘗試發送,但它不起作用。

250 BY2PR01CA007.outlook.office365.com Hello [54.221.245.236] 
530 5.7.1 Client was not authenticated 
Connection closed by foreign host.

是否有人擁有這種配置,使 Linux 電腦上的多個使用者能夠透過 Office365 使用 postfix 中繼郵件?一定有人在做這件事,他可以告訴我我的設定出了什麼問題...

答案1

我認為你需要退後一步:)

plaything如果您以身分登錄bravo,您真的需要將所有從玩具發送的郵件以身分發送嗎[email protected]?如果沒有,只需將所有郵件發送為[email protected],請參閱沒有真實 Internet 主機名稱的主機上的 Postfix

如果您無法套用此功能,那麼您將需要寄件者相關 SASL 映射。它會為你的設定增加一些複雜性,所以我真的會盡力避免這種情況。

最後但並非最不重要的一點是,如果plaything將郵件發送為[email protected],您需要調整myhostname和/或myorigin刪除該relayhost設定。在這種情況下,plaything將直接傳遞所有郵件,並考慮郵件伺服器信譽等所有優點和缺點。

相關內容