私は、Exchange 2010 にメールを中継するために postfix を使用しています。私の設定は次のとおりです。
relayhost = [smtp.exchange.2010]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relay_passwd
smtp_sasl_security_options =
#smtp_sasl_mechanism_filter = ntlm
(/etc/postfix/relay_passwd には Exchange 上のいくつかのアカウントのログイン情報が含まれています) この設定により、電子メールを Exchange に中継できます。問題は、Postfix から送信されるメッセージに次のヘッダーがあることです:
X-MS-Exchange-Organization-AuthAs: Anonymous
メッセージは Exchange システム上で認証されていないメッセージとして扱われます (つまり、配布グループに送信する場合、送信者の認証が必要なため、次のエラーが発生します: #550 5.7.1 RESOLVER.RST.AuthRequired; 認証が必要です ##rfc822;[メールアドレス])。私は Postfix と同じアカウントで Outlook を使用していますが、問題なく送信できます。2 つのケースの違いは、Outlook は NTLM 認証メカニズムを使用して送信し、Postfix は LOGIN メカニズムを使用していることです。何かアイデアはありますか?
答え1
AlexRobinson の回答によると、問題は Postfix にあります。これは Postfix 2.9 以降で (デフォルトで) 修正されています。 http://www.postfix.org/postconf.5.html#smtp_send_dummy_mail_auth
[Incompat 20111106] To work around broken remote SMTP servers, the Postfix SMTP client by default no longer appends the "AUTH=<>" option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth = yes" to restore the old behavior.
答え2
私も同じ問題を抱えています。そして、電子メールが個人ではなくグループに送信されると問題が発生します。メッセージが認証されていない場合、Exchangeサーバーはグループに送信しません。しかし、Postfixがログオンによる認証に設定されている場合、電子メールが認証されないのはなぜですか?ヒント:telnetを使用してメールを送信すると、電子メールは意思AUTH されます。メールのヘッダーはX-MS-Exchange-Organization-AuthAs: Internal
(私の場合) になります。そしてメールはグループに送信されます。
私が発見したことは次のとおりです (postfix ピア ログ レベルを 4 に設定して)。postfix は SMTP コマンド を送信しますMail From: ...... AUTH=<>
。 をAUTH=<>
out のままにしておくと、すべて正常です。 を in にすると、Exchange は と言います.... Anonymous
。
私は今、postfix が嘘をつく理由を調べています。
ああ、見つかりました。postfix smtp_proto.c
v2.8 の 1358 行目。ハードコードされています。さて、これは非常に残念です。セキュリティの観点からはコードは完全に正しいのですが、postfix SMTP クライアントでこの SMTP 送信コードにアクセスできるユーザーを制御できる場合は正しくありません。
/* postfix: smtp_proto.c
#ifdef USE_SASL_AUTH
if (var_smtp_sasl_enable
&& (session->features & SMTP_FEATURE_AUTH))
vstring_strcat(next_command, " AUTH=<>");
#endif
smtp_proto.c
この時点では、最初から postfix にパッチを当ててビルドする以外に何をすればいいのかわかりません。うーん。