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

[postfix-jp: 3692] Re: 外からのメール受信拒否の設定



荻野です。

相変わらずちゃんと確認せずに書いています。すみません。

nakafumi said the following on 09/12/03 13:52:
> /etc/postfix/restricted_recipient:
> -----
> root@           DISCARD
> postmaster@     OK
> -----

先にこちらに突っ込みを入れるべきだったように思えてきました。

postmaster@ OK は外部から自ドメインの postmaster 宛を受信するという意図
だと思いますが、この書き方は外部から他ドメインの postmaster@ 宛を中継し
てしまうように見えます。

自ドメイン宛のものは smtpd_recipient_restrictions の末尾の暗黙の許可に
よって受信できるので OK はそもそも不要のはずです。もし postmaster 宛を拒
否しないということを明示したいのであれば DUNNO を使用すべきかと。

または制限を加えるだけなら reject_unauth_destination の後に書くほうが安
全だと思うので、そちらの方が良いかもしれません。迷惑メール対策とかはほと
んどすべて reject_unauth_destination の後ろで良いように思います。


nakafumi said the following on 09/12/25 10:02:
> 以下の設定から更に、ローカルから外ドメイン宛は要認証としたいのですが、
> permit_mynetworks が先頭にあるため、認証無しで送信できてしまいます。
> これを外すと、ローカルからroot宛てが破棄されてしまいます。
> ローカルからローカル宛は許可、という方法はありますでしょうか。
(略)
>> smtpd_recipient_restrictions =
>>    permit_mynetworks
>>    check_recipient_access hash:/etc/postfix/restricted_recipient
>>    permit_sasl_authenticated
>>    reject_unauth_destination

まず DISCARD は脇においておいて拒否の場合を考えます。(個人的には拒否で
良い場合がほとんどだと思いますが)

要件からしてローカルを無条件で書く permit_mynetworks は外さざるを得ませ
ん。すると、hash:/etc/postfix/restricted_recipient に引っかかった場合、
ローカルからは許可したいので、この中身を

  root@example.com  permit_mynetworks,reject

とすれば良さそうです。ここで @example.com はご自身のドメインです。これが
無いと他のドメインの root@ に出せないからです。

しかし、permit_sasl_authenticated を先にして良いなら root@ のままで構い
ません。この場合、外部から認証済ユーザがローカルの root@ に出せるという
ように挙動が変わります。(通常は問題ないと思いますが…)

main.cf:

  smtpd_recipient_restrictions =
    permit_sasl_authenticated
    reject_unauth_destination
    check_recipient_access hash:/etc/postfix/restricted_recipient

/etc/postfix/restricted_recipient:

  root@  permit_mynetworks,reject

となります。(多分…)


DISCARD など smtpd_recipient_restrictions に書けるもの以外を指定したい場
合、私の知識ではとたんに複雑になってしまいます。多分、先に main.cf で
smtpd_restriction_classes を定義して代わりに書くしかないと思います。この
場合、「外部」を hash で定義するのは難しそうなので、例えば cidr を使いま
す。(postconf -m で cidr のサポートを確認のこと)でなければ regexp と
か。(なお regexp で外部全部を指定するのは // だけで良いはず)

main.cf:

  # permit_mynetworks_or_discard を宣言?しておく
  smtpd_restriction_classes = permit_mynetworks_or_discard

  # permit_mynetworks_or_discard とは client IP を cidr テーブルで引く
  permit_mynetworks_or_discard =
    check_client_access cidr:/path/to/permit_mynet_or_discard.cidr

  smtpd_recipient_restrictions =
    permit_sasl_authenticated  # 認証済ユーザはすべて許可
    reject_unauth_destination  # 自ドメイン宛でなければ拒否
    # 宛先で restricted_recipient をチェック
    check_recipient_access hash:/path/to/restricted_recipient
    # ここに暗黙の許可(自ドメイン宛で restricted_recipient に無い)

/path/to/restricted_recipient

  # root@ 宛なら permit_mynetworks_or_discard に従う
  root@           permit_mynetworks_or_discard


/path/to/permit_mynet_or_discard.cidr:

  # client IP が mynetworks 相当に OK を出す
  127.0.0.0/8     OK
  192.168.0.0/16  OK
  ::1/128         OK (IPv6 サポートがある場合)
  fe80::/10       OK (IPv6 サポートがある場合の例)
  # その他のアドレスはすべて DISCARD
  0.0.0.0/0       DISCARD
  ::/0            DISCARD (IPv6 サポートがある場合)


でいけそうに思います。

が、書いてて何度も間違いに気がついたので、ご自身でも確認の上、テストして
ください。つっこみ歓迎します。

-- 
荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず
Key fingerprint = 7F26 5414 1805 F31B 1617  10B7 C117 07AE 1691 9BD1

_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list

Follow-Ups
[postfix-jp: 3693] Re: 外からのメール受信拒否の設定, nakafumi
References
[postfix-jp: 3656] 外からのメール受信拒否の設定, nakafumi
[postfix-jp: 3661] Re: 外からのメール受信拒否の設定, nakafumi
[postfix-jp: 3691] Re: 外からのメール受信拒否の設定, nakafumi

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