smtp認証でのメール送信を接続元IPアドレスでアクセス制限する

ALL
スポンサーリンク

メール送信サーバ postfix で、smtp認証でのメール送信を接続元IPアドレスで制限する方法です。

スポンサーリンク

設定内容

main.cf を下記のように設定します。
smtpd_recipient_restrictions の箇所は一例です。
各自の現在の設定に check_client_access cidr:/etc/postfix/check_smtp_auth を追加して下さい。

/etc/postfix/main.cf

smtpd_restriction_classes = check_smtp_auth
check_smtp_auth = permit_sasl_authenticated
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,check_client_access cidr:/etc/postfix/check_smtp_auth,reject_unauth_destination

ファイル check_smtp_auth に、許可するIPアドレスを CIDR形式で記述し、続けて check_smtp_auth を記述します。

/etc/postfix/check_smtp_auth

192.168.120.0/24 check_smtp_auth
127.0.0.1/32 check_smtp_auth

Postfix に設定を適用します。

/etc/init.d/postfix reload

これで、指定したアドレスからの接続が許可されます。

設定の詳細説明

以下は、設定内容の詳細説明です。

/etc/postfix/main.cf

smtpd_restriction_classes = check_smtp_auth
check_smtp_auth = permit_sasl_authenticated
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,check_client_access cidr:/etc/postfix/check_smtp_auth,reject_unauth_destination

smtpd_restriction_classes = check_smtp_auth

ユーザ定義の、アクセス制限のまとまりの別名を指定します。
ここでは check_smtp_auth という名前にしていますが、名前は任意で構いません。
ここで指定した別名は、smtpd_recipient_restrictions や、アクセス制限の指定等で使用します。

check_smtp_auth = permit_sasl_authenticated

アクセス制限のまとまりの別名「check_smtp_auth」に対して、アクセス制限 permit_sasl_authenticated を指定します。
permit_sasl_authenticated は、認証を通過した接続元からの要求(接続)を許可するアクセス制限です。

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,check_client_access cidr:/etc/postfix/check_smtp_auth,reject_unauth_destination

smtpd_recipient_restrictions は、メールリレー(自サーバへのメール配信や他サーバへのメール送信)の際に適用されるアクセス制限です。
ここに記述するアクセス制限の1つとして、check_client_access cidr:/etc/postfix/check_smtp_auth を追加します。

check_client_access は、指定されたクライアントのIPアドレスやホスト名等でのアクセス制限を実施します。
対象のIPアドレスやホスト名などは、check_client_access に続いて指定します。
ここでは cidr:/etc/postfix/check_smtp_auth とし、これは対象のIPアドレスをCIDR形式で /etc/postfix/check_smtp_auth 内に指定することを示します。

check_smtp_auth の書式は下記のように、接続を許可するIPアドレスを CIDR形式で記述し、続けて check_smtp_auth を記述します。
check_smtp_auth は、smtpd_restriction_classes の箇所で指定した名称を使用します。

192.168.120.0/24 check_smtp_auth
127.0.0.1/32 check_smtp_auth

アクセスが制限されるタイミング

本設定でアクセスが制限されるタイミングは、SMTP認証後です。
つまり、SMTP認証自体をアクセス制限することは出来ませんので、注意して下さい。
メール送信はアクセス制限できますが、SMTP認証への辞書攻撃によるアカウント割り出し自体には対応できません。

下記記事で、「SMTP-Authの場合」の「telnet実行」の箇所に、SMTP認証時のコマンドの流れがありますが、そこでの「rcpt to」実行時に、本設定でアクセス制限がされます。
そこより前に「AUTH PLAIN」コマンドの実行がありますが、この時点ではアクセス制限はなされません。

telnetでメールサーバの動作確認(SMTP,SMTP-AUTH) パソコン鳥のブログ

参考

smtp認証の設定をちょっと変更 « もみんぎゅぅ
telnetでメールサーバの動作確認(SMTP,SMTP-AUTH) パソコン鳥のブログ
Postfix クライアント/サーバ/他ごとのアクセス制御
CentOS6でのメールサーバの設定(postfixその1) パソコン鳥のブログ

コメント