web-dev-qa-db-ja.com

Exchange2010への認証SMTPクライアントリレーとしてPostfixを使用する際の問題

私はPostfixを使用してメールをExchange2010に中継しています。これが私の設定です:

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.1RESOLVER.RST.AuthRequired;認証が必要です## rfc822; [email protected]) 。 Postfixと同じアカウントでOutlookを使用していますが、問題なく送信できます。 2つのケースで私が気付いた違いは、OutlookがNTLM auth mechを使用して送信すること、PostfixがLOGINmechを使用することです。何か案が?

2
Gk.

AlexRobinsonの答えによると、問題はPostfixにあります。これはPostfix2.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.
1
lid

私も同じ問題を抱えてる。また、電子メールが個人ではなくグループに送信されると、問題が発生します。メッセージがAUTHされていない場合、Exchangeサーバーはグループに送信しません。しかし、postfixがログオンによって認証するように設定されている場合、なぜ電子メールはAUTHされないのですか?手がかり:telnetを使用してメールを送信する場合、電子メールはwill AUTHされます。電子メールに含まれるヘッダーはX-MS-Exchange-Organization-AuthAs: Internal(私の場合)になります。そして、メールはグループに送られます!

これが私が見つけたものです(postfixピアログレベルを4に設定することによって):postfixはSMTPコマンドMail From: ...... AUTH=<>を送信します。 AUTH=<>を省略して、すべてが順調です。それを入れると、Exchangeは.... Anonymousと言います。

私は今、接尾辞がなぜあるのかを調べています。

ああ。それを見つけた。接尾辞v2.8のsmtp_proto.cの1358行目。ハードコードされています。さて。それは最も残念なことです。コードはセキュリティの観点からは非常に正しいですが、PostfixSMTPクライアントでこの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を実行し、接尾辞を最初から作成する以外に何をすべきかわかりません。うん。

4
AlexRobinson