« 2011年4月 | トップページ | 2012年5月 »

2011年5月

Mac OS X Server:ローカルユーザのドメイン詐称をチェックする

【概要】
メールサーバがメールを受け取ったときに,送信元を身元確認する「ドメイン認証」が普及しつつありますが,逆に自ドメインからメールを送信するときにドメイン詐称をチェックする仕組みを組み込むことについて考えてみます。

この仕組みは,スパムメール阻止とは多分あまり関係ありません。
関係あるとしたら,メールサーバが乗っ取られたり,身内にスパム発信元がいたりしたときに,スパムメールを中継するのを阻止する防波堤になるかもしれない,ということくらいです。
この仕組みは,自ドメインからメールを送信する正規アカウントユーザに対して,他所のドメインのアドレスでメールを出す行為を禁じるのが目的になります。
これには以下のような効果があると思います。

  • ドメイン認証の普及により,これからは他所のドメインでメールを出せなくなっていくが,このルールを違反メールを阻止することで周知徹底させる。
  • ドメイン認証を送信側が行う形になるので,メールの送り先でドメイン認証によりメールをスパム扱いされることがなくなる。
このエントリでは,送信元アドレスの中のドメイン部分のみチェックして,自ドメイン(または特定のドメイン)でなければ送信元のメールクライアントにエラーを返すようPostfixの設定を行ってみることにします。

【設定の概要】
メールサーバがクライアントから送信メールを受け取るとき,SMTPプロトコルのMAIL FROMにて,送信元のメールアドレスを受け取ります。このメールアドレスのドメイン部分が自ドメインでなかったら,クライアントに対してエラーを返してメール受信を拒否するように転送ルールを設定します。

MAIL FROMに対するチェックの設定は,Postfixでは設定パラメータ「smtpd_sender_restrictions」で行うことになっています。
ここではOP25Bに対応していることを前提に説明します。OP25B対応していた場合,設定は「/etc/postfix/master.cf」で行いますが,master.cfではパラメータ値の定義でスペースを含めた定義を行うことができないので,設定を「/etc/postfix/main.cf」で定義してmaster.cfで参照するようにします。

【設定手順】
まず最初に自ドメインを許可する設定ファイルを作成します。
ディレクトリ「/etc/postfix/」にて,例として「permit_mydomain」というファイル名で以下の内容のテキストファイルを作成します。

設定ファイル記述例:permit_mydomain
example.co.jp  OK

このファイルをDBファイルに変換します。ターミナル上で以下のようにコマンド実行します。
sudo postmap hash:permit_mydomain

このコマンドを実行した結果,「permit_mydomain.db」というファイルがカレントディレクトリに作られます。
このファイルが設定ファイルで記述したとおりに判定するかどうかを以下のコマンドで確認します。
sudo postmap -q example.co.jp hash:permit_mydomain

実行結果が「OK」と返ってくれば,「example.co.jp」の値が「OK」のデータがDBファイルに格納されています。

次に,この「permit_mydomain.db」を参照する定義を「main.cf」にユーザ定義パラメータとして記述します。

例:main.cfでのユーザ定義パラメータの定義
check_sender_mydomain = check_sender_access hash:/etc/postfix/permit_mydomain

※この定義の記述で,拡張子「.db」はなくても良いようです。

次に,「/etc/postfix/master.cf」ファイルを編集してユーザ定義パラメータをsubmissionポートのMAIL FROMで適用されるように設定します。。
まず,master.cfでのsubmissionの設定が以下のようになっているとします。
※master.cfで定義されていないパラメータはmain.cfでの定義が適用されます。

例:master.cfでのsubmissionの定義
submission inet n  -  n  -  n  smtpd
  -o smtpd_etrn_restriction=reject
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_helo_restrictions=permit
  -o smtpd_sender_restrictions=reject_non_fqdn_sender,permit
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_sasl_authenticated,reject

これにmain.cfで定義したユーザ定義パラメータ「check_sender_mydomain」を追加しますが,定義済みのパラメータを参照する場合はパラメータ名を「${パラメータ名}」とすることで参照できます。パラメータを追記した結果は以下のようになります。
submission inet n  -  n  -  n  smtpd
  -o smtpd_etrn_restriction=reject
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_helo_restrictions=permit
  -o smtpd_sender_restrictions=reject_non_fqdn_sender,{$check_sender_mydomain},reject
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_sasl_authenticated,reject
注)「-o」の前のスペースは,上の行からの継続を意味しますので,削除してはいけません。

●追加した設定の説明
ユーザ定義パラメータの定義により,差出人のアドレスが自ドメインであれば「OK」と判定されて送信されます。
そうでなければ次の「reject」が適用されるので,自ドメインでない差出人アドレスはエラーになります。

以上の設定が終わったら,ターミナル上で「sudo postfix check」を実行してエラーがないか確認し,「sudo postfix reload」を実行して修正内容を実行環境に反映します。

以上で設定は完了です。自分宛メールなどで設定が有効になっているか確認してみましょう。


■関連情報
Postfix 2.3日本語ドキュメント:[基本設定][main.cf設定パラメータ][master.cf]
Appleサポート:Mac OS X Server 10.4送信メールを設定する
Apple Server 製品ドキュメント:メールサービスの管理[PDF]

■関連書籍をAmazonで検索:[Postfix][Mac OS X Server]
Postfix実用ガイド

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ ネットワーク・SEへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


高速・夜行バス予約サイト WILLER TRAVEL高速・夜行バス予約サイト WILLER TRAVEL

| | トラックバック (0)

« 2011年4月 | トップページ | 2012年5月 »