[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp:01931] Re: permit_mx_backup の挙動



荒木です。

> 杉浦と申します。
> 
> 
> postfix を用いて中継サーバを運用しています.
> 基本的に快調なのですが,ふとログを見たところ,オープンリレー
> となっているような部分を見つけて大変驚きました.

> いろいろ調べた結果,smtpd_recipient_restrictions に
> permit_mx_backup がある場合で,rcpt to: に解決できないドメインが
> 指定されているときに,受け取ってしまっていることが判明しました.

> この実験結果より,permit_mx_backup は,
>  1. MXが存在していて,自分が含まれている場合は,許可.
>  2. MXが存在していて,自分が含まれていない場合は,拒否.
>  3. MX(とAの両方?)が存在しない場合は,許可.
> という挙動に見えます.
> 3番は望ましくない動作ではないかと思いますが,
> このような挙動を示すのは,うちだけでしょうか?

再現しますね。debug_peer_listにいれてlogをみてみると
RCPT TOに`mogegege@xxxxxxxxx' をいれてみると

Jul 31 19:12:31 xxxx postfix/smtpd[20279]: permit_mx_backup: not local: mogegege@xxxxxxxxx

Jul 31 19:12:32 xxxx postfix/smtpd[20279]: dns_query: moge.hoge (MX): Host not found

Jul 31 19:12:32 xxxx postfix/smtpd[20279]: has_my_addr: host moge.hoge: not found

と、でて、結果

Jul 31 19:12:32 xxxx postfix/smtpd[20279]: generic_checks: name=permit_mx_backup status=1

となります。あれ〜と思ってソースを眺めると、
static int permit_mx_backup(SMTPD_STATE *state, const char *recipient)
の中で、

    /*
     * Look up the list of MX host names for this domain. If no MX host is
     * found, perhaps it is a CNAME for the local machine. Clients aren't
     * supposed to send CNAMEs in SMTP commands, but it happens anyway. If we
     * can't look up the destination, play safe and assume it is OK.
     */
    dns_status = dns_lookup(domain, T_MX, 0, &mx_list,
			    (VSTRING *) 0, (VSTRING *) 0);
    if (dns_status == DNS_NOTFOUND)
	return (has_my_addr(domain) ? SMTPD_CHECK_OK : SMTPD_CHECK_DUNNO);
    if (dns_status != DNS_OK)
	return (SMTPD_CHECK_TRYAGAIN);

で、has_my_addr(domain)を追うと、

smtpd_check.cの中の
static int has_my_addr(const char *host)
で、

    /*
     * If we can't lookup the host, play safe and assume it is OK.
     */

とかあって、何かあったときにはOK側に倒してある、ということのようです。
firewallの下でつかっていればDNSが検索できないこともままあるので
とりあえずOKにして、次にまわしてしまえ、ということだとは思います。
#ほかにもきっと深遠な理由があるのでしょう。

いずれにしろpermit_mx_backupって、便利ではあるけど必要じゃないパラメータなので
よくわかってる人は使うべきものじゃないような気がします。

荒木靖宏

Follow-Ups
[postfix-jp:01940] Re: permit_mx_backup の挙動, sgur
References
[postfix-jp:01920] permit_mx_backup の挙動, sgur

[検索ページ] [Postfix-JP ML Home]