これはかなり長い質問で、試したことや苦労したことが長々と書かれていますが、どうか我慢してください。要約すると次のようになります。
- postfix を使用して、ubuntu から office365 経由で電子メールを中継できます。設定は機能します。
- これはユーザーの1人としてのみ機能します。具体的には、Office365に対して認証するユーザーのみが有効な「送信元」です。
詳細は後述します。Amazon のクラウドにマシンがあり、そこで多数のジョブを実行しており、ステータスをメールで受け取りたいと思っています。職場では Office365 を使用しているため、メールを Office365 経由で中継したいと考えています。私は postfix に最も精通しているので、それを MTA として使用しました。
設定はubuntu 12.04LTS
、postfix と mail-utils をインストールしました。
この例では、私の会社は「company.com
」で、問題のマシン(エラスティックIPとDNSエントリ経由)は「plaything.company.com
」と呼ばれています。ホスト名は「plaything.company.com
」に設定されているため、/etc/mailname
playthingには、、、というユーザーが登録されていますalpha
。bravo
charlie
以下の設定ファイルがあります。
alias_database = ハッシュ:/etc/aliases alias_maps = ハッシュ:/etc/aliases append_dot_mydomain = いいえ ビフ = いいえ config_directory = /etc/postfix inet_interfaces = すべて inet_protocols = ipv4 メールボックスのサイズ制限 = 0 mydestination = plaything.company.com、localhost.company.com、、localhost ホスト名 = plaything.company.com マイネットワーク = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = いいえ 受信者区切り文字 = + リレーホスト = [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 = 匿名なし smtp_sasl_tls_security_options = 匿名なし smtp_tls_CAファイル = /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
て
郵便[メールアドレス] CC: 件名: テスト テスト
すべてがうまく機能しています。メールはPostfixで送信され、TLSはうまく機能し、認証も行われますdaemon@...
。[メールアドレス]Office365 で電子メール メッセージが届きます。
問題はbravo
マシンにログインしたときに発生します。
送信者は[email protected]
、Office365 では次のように表示されます:
ステータス=バウンス (ホスト smtp.office365.com[132.245.12.25] が次のように言いました: 550 5.7.1 クライアントに送信権限がありません この送信者(DATAコマンドの終了に対する応答)
bravo@...
これは、 としてメールを送信し、 として office365 で認証しようとしているためですdaemon@...
。 で機能する理由はalpha@...
、office365 で[email protected]
という別のメール アドレスを持つように設定したためです[email protected]
。
でOffice365 への Postfix リレー、マイルズ・エリクソンこの質問には次のように答えます。
Office365でホストされている電子メールドメインのユーザーとしてOffice365にメールを送信しないでください。代わりにサブドメインを使用してください。例:[メールアドレス]の代わりに[メールアドレス]services.mydomain.com または使用するドメインの SPF レコードを設定しても問題ありません。
Office365 ユーザーとして mail.messaging.microsoft.com に対して認証しないでください。ポート 25 に接続し、外部の SMTP エージェントと同じようにメールをドメインに配信します。
OK、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 は「認証されていません」と表示して接続を破棄します。ポート 25 への単純な Telnet を試して送信しようとしても、機能しません。
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
、plaything から送信されるすべてのメールを として送信する必要がありますか[email protected]
? そうでない場合は、すべてのメールを として送信してください[email protected]
。実際のインターネットホスト名を持たないホスト上のPostfix。
これを適用できない場合は、送信者依存の SASL マップセットアップが複雑になるため、これを避けるように努力してください。
最後に、plaything
がメールを として送信する場合、 を調整するか、設定を削除するか、あるいはその両方を[email protected]
行う必要があります。 この場合、 はメール サーバーの評判などの長所と短所をすべて考慮して、すべてのメールを直接配信します。myhostname
myorigin
relayhost
plaything