Top過去ログ目次掲示板

作成日:2008年05月17日 作成:おやじ
掲示板で過去に質問された内容です。

No.7547 postfixのリレー設定についいて


No.7547 投稿時間:2008年05月17日(Sat) 02:43 投稿者名:kalk URL:
タイトル:postfixのリレー設定についいて

貴重な情報をご掲示くださり、大変お世話になっております。
本日はアドバイスを承りたく投稿させて頂きます。

postfix上でsasl_authを用いたsubmissionポートでのSSL/TLS環境を構築しようと試みております。
smtpd_client_restrictionsでのリレー設定について質問させてください。

> master.cf
submission inet n - n - - smtpd
-o smtpd_enforce_tls=yes
-o smtpd_sasl_local_domain=mydomain.com
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

> main.cf
myhostname = mail.mydomain.com
mydomain = mydomain.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination

この状態でローカルからsubmissionポートに問い合わせるとid,passwordを要求されます。
ここで外部ドメイン宛のメールをリレーさせたいのですが、
問題はmain.cfファイルのmynetworksの設定でして

> main.cf
mynetworks = 127.0.0.0/8

・sasldbに登録されてないid,passwordで送信
554 5.7.1 <me@mydomain.com>: Client host rejected: Access denied

・sasldbに登録済みのid,passwordで送信
554 5.7.1 <me@mydomain.com>: Relay access denied

> main.cf
mynetworks = 127.0.0.0/8, [メール送信元IP]/32

・sasldbに登録されてないid,passwordで送信
554 5.7.1 <me@mydomain.com>: Client host rejected: Access denied

・sasldbに登録済みのid,passwordで送信
送信完了

-- 送信完了時のログ : /var/log/maillog --
postfix/smtpd[5291]: connect from gateway.example.com[送信元IP]
postfix/smtpd[5291]: setting up TLS connection from gateway.example.com[送信元IP]
postfix/smtpd[5291]: TLS connection established from gateway.example.com[送信元IP]: TLSv1 with cipher RC4-MD5 (128/128 bits)
postfix/smtpd[5291]: 4946A5FA7F: client=gateway.example.com[送信元IP], sasl_method=CRAM-MD5, sasl_username=me@mydomain.com
postfix/cleanup[5296]: 4946A5FA7F: message-id=<20080516220152.DAF3.44D859CF@mydomain.com>
postfix/qmgr[5290]: 4946A5FA7F: from=<me@mydomain.com>, size=540, nrcpt=1 (queue active)
postfix/smtpd[5291]: disconnect from gateway.example.com[送信元IP]
postfix/smtp[5297]: 4946A5FA7F: to=<you@targetdomain.com>, relay=mail.targetdomain.com[送信先IP]:25, delay=0.23, delays=0.11/0.01/0.06/0.04, dsn=2.0.0, status=sent (250 2.0.0 m4GD1hNb025658 Message accepted for delivery)
localhost postfix/qmgr[5290]: 4946A5FA7F: removed

上記ログよりsasldbに問い合わせは行われているのですが、sasl_authを経てリレーを
しようとした場合、mynetworksを0.0.0.0/0とすることになってしまいます。
smtpd_client_restrictionsの項目を見ている限り、リレー許可はmynetworksに
書き込まなくてもsasl_authで認証されればリレーされるとの認識だったのですが、
何か間違っておりますでしょうか?

なおpostfixのバージョンは2.3.3になります。
お忙しい中恐れ入りますが、よろしくお願い致します。


No.7548 投稿時間:2008年05月17日(Sat) 05:49 投稿者名:おやじ URL:
タイトル:smtpd_recipient_restrictionsの設定をしてください

これくらい情報が整理されていると、おやじもほぼ完全に状況が把握できるのでアドバイスしやすいですね。的はずれな情報でもいいので、情報がないことにはどうにもなりませんから・・・。


> 上記ログよりsasldbに問い合わせは行われているのですが、sasl_authを経てリレーを
> しようとした場合、mynetworksを0.0.0.0/0とすることになってしまいます。
> smtpd_client_restrictionsの項目を見ている限り、リレー許可はmynetworksに
> 書き込まなくてもsasl_authで認証されればリレーされるとの認識だったのですが、
> 何か間違っておりますでしょうか?
>
> なおpostfixのバージョンは2.3.3になります。
> お忙しい中恐れ入りますが、よろしくお願い致します。

コンテンツに説明を書いてあるつもりですが、リレーを許可するものに関する設定をしていないからです。
コンフィグ(main.cf)に"smtpd_recipient_restrictions" がないのでデフォルトで動作しているはずです。このパラメータはRCPT TO コマンドの場面で適用するアクセス制限に関するもので、具体的にはリレーの許可/不許可をここで決定します。これのデフォルトは、

smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

なので、以下のメールしか受け取り(リレーし)ません。

・IPアドレスが $mynetworks にマッチするクライアントからのメール、または:
・送信者指定のルーティング ((user@elsewhere@domain) を含むアドレス宛以外で $relay_domains にマッチするリモートの配送先へのメール、または:
・$inet_interfaces や $proxy_interfaces、$mydestination、$virtual_alias_domains、$virtual_mailbox_domains にマッチする、ローカル配送先へのメール。

従って、実質は一番上の条件、すなわちIPアドレスが $mynetworks にマッチするクライアントから以外は受け取らない(リレーしない)ことになります。
この問題を解消するには、認証を通過したものはリレーを許可する設定をしてあげる必要があります。それには、ここに"permit_sasl_authenticated"を追加してあげればSMTP認証を通過したものはリレーが許可されます。以下のように設定してください。

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

"smtpd_client_restrictions"でsubmissionポートの設定をされていますが、これはあくまでPostfixへのクライアントからの接続要求に関するアクセス制限であり、これを通過してもリレーはしてくれません。

おやじのコンテンツや下記をご覧になるとよいと思います。

http://www.postfix-jp.info/trans-2.3/jhtml/RESTRICTION_CLASS_README.html


No.7549 投稿時間:2008年05月17日(Sat) 12:31 投稿者名:kalk URL:
タイトル:リレーできました

ご回答下さり、ありがとうございました。

> main.cf
mynetworks=127.0.0.0/8
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
とすることで、期待通りの結果を得ることができました。

smtpd_recipient_restricitonsとsmtpd_client_restricitonsを同じものとして認識していたのが誤りでした。
postfixは明確なチェーンでルールが成り立っているというのが、今回のおやじ様のご指摘でわかりました。

この度は誠にありがとうございました。
今後もおやじ様のサイトで勉強させて頂きます。
失礼致しました。



掲示板▲頁先頭