カテゴリー「Mac OS X Server」の記事

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)

Mac OS X Server:PostfixでOP25B対応

【OP25Bとは】
Outbound Port 25 Blockingの略です。ISP(インターネットサービスプロバイダ)各社が,自ドメインの利用者がユーザ回線を使ってインターネットへスパムメールを送信するのを阻止するために導入しているもので,プロバイダのユーザ回線からインターネットへ出て行く外向きのTCP25番ポートへの接続を塞いでしまう,というものです。

【OP25Bの影響】
OP25BはSMTPに使う25番ポートを塞ぐので,POPIMAPには全く影響ありません。
OP25Bはユーザ回線に対して実施されるもので,固定IPの回線には影響ありません。
OP25Bは内から外へ出て行く25番ポートへの接続を阻止するので,外から内へ入ってくる接続には影響しません(外から内へ入ってくる25番ポートへの接続を阻止するのは「IP25B」)。
使用しているISPがOP25Bを導入したとき,ユーザへの影響には以下の3つのケースがあります。

  1. メールクライアントからプロバイダが提供する送信用SMTPサーバを使ってメール送信する場合,ISPのメールサーバはインターネットに出て行く手前にいるため接続はOP25Bに阻止されずにこれまでどおり25番ポートを使えることが多く(プロバイダによる),この場合は特に影響ありません。
  2. メールクライアントからインターネットの向こう側にいる送信用SMTPサーバを使ってメール送信しようとした場合(独自メールサーバのアカウントからメールを送る場合など),メールクライアントとSMTPサーバの接続がOP25Bで阻止されます。
  3. ユーザプログラム(ボット含む)や独自メールサーバがユーザ回線を使ってメールを転送する場合,OP25Bで阻止されます。独自メールサーバからメールを転送するには固定IPが必須になります。
上記のうち,OP25Bは3.でのメール送信阻止を狙ったものです。それに対して2.は関係ないのに巻き添えを食らっており,対策が必要です。

【メールクライアントのための対策:サブミッションポート】
メールクライアントのための独自メールサーバの対策として,メールクライアントが25番ポートで接続してくることができないので,メールクライアントに対して25番以外のポートから接続できるように設定する必要があります。
そのための代替ポートとして「RFC2476」にて「サブミッションポート(TCP587番ポート)」が定められています。
サブミッションポートはメールクライアントからSMTPサーバに接続するときに使い,SMTPサーバどうしのメール転送は従来どおり25番ポートを使います。また,サブミッションポートへの接続にはSASL認証(SMTP Auth)を課すことで,「単にポート番号が変わっただけ,587番ポートからスパム送り放題」とならないようにします。

※サブミッションポート以外の対応策として,SMTPサーバをSSL化し,SSL用のポートを使用する,という手もあります。

【Mac OS X Serverで稼動するPostfixでサブミッションポートを利用する手順】
1)SASL認証を有効にする
Mac OS X ServerにプリインストールされているPostfixでは,SASL認証のためのモジュールが最初から組み込まれています。SASL認証を有効にするには,まず「サーバ管理」ツールにて「コンピュータとサービス」で「メール」を選び,「設定」→「詳細」→「セキュリティ」でセキュリティパネルを表示します。ここで「認証」→「SMTP」列のいずれかのチェックボックスをONにして「保存」ボタンを押すとSASL認証がONになります。

※SASL認証のユーザ名とパスワードは,Mac OS X Serverではワークグループマネージャに登録したユーザ名とパスワードになります。すなわちメール受信用のユーザ名とパスワードと同一になります。

2)サブミッションポート(TCP587番ポート)を有効にする
「/etc/postfix/master.cf」ファイルを編集します。事前にバックアップを取った上で「sudo vi」などでファイルを開き、

#submission inet n - n - - smtpd
# -o smtpd_etrn_restrictions=reject
この2行について,最初の「#」(コメントアウト)を削除します。(注:「-o」の前のスペースを削除してはいけません。)
ここでmaster.cfを保存して終了し,コマンドラインで「sudo postfix check」と入力してエラーチェックを行います。問題なければ「サーバ管理」でメールサービスをリスタートするか,コマンドライン上で「sudo postfix reload」コマンドを実行すると,サブミッションポートが有効になります。このときサブミッションポートに適用されるパラメータ値は,main.cfで定義された25番ポートのパラメータ値と同じです。

3)サブミッションポートのパラメータ設定
サブミッションポートで適用されるパラメータ値は「/etc/postfix/main.cf」で定義した25番ポート用の値がデフォルトとして適用されます。
サブミッションポートで適用されるパラメータ値を25番ポートとは別の値にしたい場合は,master.cfのsubmissionセクションの末尾に「-o」+「パラメータ=値」で設定したいパラメータ値を追記することで,サブミッションポートのパラメータ値が上書きされます。このとき「-o」+「パラメータ=値」の記述で気をつけなければならないのは,
  • 「-o」の前後にスペースが必要。行頭のスペースは前の行からの継続を意味する。
  • スペースで区切って解釈されるため,「パラメータ=値」は途中でスペースを入れない。
の2点です。
設定例1:
submission inet n - n - - smtpd
 -o smtpd_etrn_restrictions=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
※追記:最後の行に「smtpd_recipient_restrictions」の行を追加しました。このタイミングで「permit_sasl_authenticated」の判定を行うためです。

「パラメータ=値」の途中でスペースを入れることができませんが,「check_sender_access tyep:table」などのように間にスペースを入れなければならないパラメータ値もあります。このような値を指定する場合は,main.cfでユーザ定義のパラメータ値を定義して,master.cfでこれを指定することができます。具体的には,main.cfにて「name = パラメータ値」とパラメータ値に名前を付け,master.cfでこの名前を「${name}」と呼び出すと,これがパラメータ値に展開されます。

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

master.cfの設定:ユーザ定義パラメータ「check_sender_mydomain」の利用
submission inet n - n - - smtpd
 …
 -o smtpd_sender_restrictions=reject_non_fqdn_sender,${check_sender_mydomain},reject
main.cf及びmaster.cfを編集保存したら,ターミナル上で「sudo postfix check」を実行してエラーがないか確認し,「sudo postfix reload」を実行して修正内容を実行環境に反映します。

以上でPostfixの設定は完了です。設定完了後LAN内からメールを送信してみてうまくいったら,外部と接続するルータなどでもサブミッションポートへの接続を許可する設定にして,今度は外部からメール送信できるか確認します。

※ところで「permit_mydomain」て何?という方はこちら


■関連情報
ISPによるOP25B 実施状況((財)日本データ通信協会・迷惑メール相談センター)
各ISPによるOP25Bの解説ページインデックスOP25B連絡会
Postfix 2.1日本語ドキュメント:[基本設定][設定パラメータ][master.cfファイルフォーマット]
Appleサポート:Mac OS X Server 10.4送信メールを設定する
Apple Server 製品ドキュメント:メールサービスの管理[PDF]

■関連書籍をAmazonで検索:[Postfix][Mac OS X Server]
無停電電源装置:APC Smart-UPS750 計画停電対策に

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


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

Mac OS X Server:Postfixとメールクライアントの接続問題

【問題】
Mac OS X Server 10.4.x(Tiger Server)のメールサーバ(Postfix)を設定するとき,「/etc/postfix/main.cf」ファイルのパラメータのうち,以下のパラメータによるアクセス制限を厳しくすると,このメールサーバに接続するメールクライアントからメール送信ができなくなることがあります。

パラメータ内容
smtpd_client_restrictionsクライアントからの接続要求のチェック
smtpd_helo_restrictionsSMTP HELOコマンドのチェック
smtpd_sender_restrictionsMAIL FROMコマンドのチェック
smtpd_recipient_restrictionsRCPT TOコマンドのチェック
各パラメータの詳細はこちら

【原因】
SMTPは,メールサーバ(MTA)間のメール転送もメールクライアントからのメール送信も同じ25番ポートで受け付けます。そのため両者が同じルールでチェックされてしまい,メールサーバに対してだけ厳しくチェックされるべきアクセス制限が,メールクライアントにも適用されてしまいます。

【対策】
SASL認証(SMTP Auth)をONにすると,上記の各パラメータチェックで「permit_sasl_authenticated」の指定が意味を持つようになります。各パラメータに「permit_sasl_authenticated」を加えることで,SASL認証にパスしたメールクライアントソフトはそのパラメータのチェックをスキップしてメール送信ができるようになります。下記の設定例では,クライアントのメールソフトからの接続を「reject_invalid_hostname」が阻止してしまうのを「permit_sasl_authenticated」が防いでいます。特定のパラメータ値を「permit_sasl_authenticated」で防ぐには,そのパラメータ値より前に「permit_sasl_authenticated」を入れる必要があります。
設定例:
smtpd_helo_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,permit

Mac OS X ServerにプリインストールされているPostfixには,SASL認証に必要なモジュールがデフォルトで組み込まれています。このSASL認証をONにするには,「サーバ管理」ツールにて「コンピュータとサービス」で「メール」を選び,「設定」→「詳細」→「セキュリティ」でセキュリティパネルを表示します。
ここで「認証」→「SMTP」列のいずれかのチェックボックスをONにして「保存」ボタンを押すと,SASL認証がONになります。
ここでの設定は「/etc/postfix/main.cf」ファイルのパラメータ「smtpd_sasl_auth_enable」「smtpd_pw_server_security_options」などに反映されます。

注1:SASL認証のユーザ名とパスワードは,Mac OS X Serverではワークグループマネージャに登録したユーザ名とパスワードになります。すなわちメール受信用のユーザ名とパスワードと同一になります。
注2:認証時のKerberosとCRAM-MD5はログインを暗号化して行い,LoginとPLAINは平文で行います。クライアント側はアップルの「Mail」はCRAM-MD5で認証を行い,マイクロソフトの「Outlook」「Outlook Express」はLoginで認証を行います。

【追記】
Postfixのドキュメントから設定可能なパラメータを調べるために,Mac OS X Serverで稼動しているPostfixのバージョン番号を知る必要がありますが,「サーバ管理」ツールではこれは表示されません。
Postfixのバージョン番号を知るには,コマンドライン上で
postconf mail_version
と入力することでバージョン番号を知ることができます。
ちなみにMac OS X Server 10.4.11のPostfixのバージョンは2.1.5でした。

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

■関連書籍をAmazonで検索:[Postfix][Mac OS X Server]
Postfix詳解―MTAの理解とメールサーバの構築・運用

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

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

Mac OS X Server:Webサーバ設定の問題

【問題】
Mac OS X Server 10.4.x(Tiger Server)にて,OS付属のWebサーバApache)を稼動させて,これにWebブラウザでアクセスすると,一部のコンテンツが表示されないことがあります。また,ApacheのKeepAlive機能(「サーバ管理」ツールでの表記は「持続的な接続を許可する」)をONにすると,Webクライアントからアクセスしたときに,すべてのコンテンツの表示が完了するのに時間がかかることがあります。

【原因】
Mac OS X ServerのWebサーバには「パフォーマンスキャッシュ」という機能が組み込まれており,デフォルトでONになっています。
このパフォーマンスキャッシュは,通常Webサーバが使用するポート番号80でリクエストを受け付けます。Webサーバ(Apache)は,パフォーマンスキャッシュがONのときはポート番号16080でリクエストを受け付けます。
外部からのリクエストはまずポート番号80が受け取り,パフォーマンスキャッシュでコンテンツがキャッシュされていなければポート番号16080へリダイレクトされます。そのためポート番号16080が外部からアクセスできないとキャッシュにないコンテンツを表示させることができません。

また,パフォーマンスキャッシュがONのときにKeepAlive機能もONだった場合,KeepAliveで設定されたタイムアウト時間がリダイレクト時のウエイトタイムになってしまうようです。そのためたとえばタイムアウト時間が15秒だった場合,Webページ上の画像が1枚表示されるごとに15秒待たされる,ということになってしまいます。

【対策】
パフォーマンスキャッシュをOFFにすれば,とりあえず問題は解消します。パフォーマンスキャッシュをONにしたまま問題が出ないようにするには以下のようにします。

  1. ルータなどの設定により,ポート番号16080を外部からアクセスできるようにする。
    →ポート番号16080にアクセスできるかどうかは,HPのURLがたとえば「http://www.example.co.jp/」だった場合,この URLを「http://www.example.co.jp:16080/」と変更してWebブラウザからHPにアクセスできるかどうかで確認することができます。
  2. KeepAlive機能(「持続的な接続を許可する」)をOFFにする。
    パフォーマンスキャッシュとKeepAliveの両方をONにすると,上記のような問題が生じるので,「自分達のサイトにとってどちらの機能がより恩恵があるか」を検討し,どちらをONにするかを決定することになるかと思います。
■関連情報
Appleサポート:Webパフォーマンスキャッシュについて学習する
Appleサポート:Webサービスがデフォルトでポート80と16080を使用する
Appleサポート:Appleソフトウエアで使用するTCP/UDPポート
Appleサポート:Mac OS X Server 10.4Web サイトを管理する
Apple Server 製品ドキュメント:Webテクノロジーの管理[PDF]

■関連書籍をAmazonで検索:[Apache][Mac OS X Server]
Apacheセキュリティ

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ ネットワーク・SEへ にほんブログ村 IT技術ブログ Webサイト構築へ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。
ノートンシリーズ新登場バナー

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

Mac OS X Server:DNS設定の問題

【問題】
Mac OS X Server 10.4.x(Tiger Server)にて,設定ツール「サーバ管理」でDNSサーバBIND)の設定を行ったときに以下のような問題がありました。
注:この問題がLeopard Serverで改修されているかどうかは未確認です。

●設定が勝手に書き換わる問題
「サーバ管理」は,DNS設定を変更したあとで「保存」ボタンで変更内容を反映するときに,設定ファイルの内容やファイル名をチェックして,エラーと判断した箇所を書き換えているようです。
この機能は,間違った設定のままDNSを運用してしまわないための機能だと思われますが,一部正しいはずの設定をエラーと判定するケースがあるようです。
ここでは現在こちらで把握している不備の内容についてリストアップしたいと思います。

1)逆引き設定をクラスC未満にできない
クラスC未満の逆引き設定を行い,「サーバ管理」の「保存」ボタンを押すと,逆引き設定がクラスCに拡張して保存されてしまいます。

2)SPF設定が消える
SPFの設定は,ドメイン名に対してTXTレコードを割り当てて,そこに記述しますが,ドメイン名へのTXTレコードの割り当ては,「サーバ管理」は設定の誤りと解釈するようで,SPFの設定を行ったあとで「サーバ管理」の「保存」ボタンを押すと,SPFの設定をファイルから削除して保存されてしまいます。

●view設定がエラーになる問題
「view」はBIND9から追加された機能で,Tiger ServerのBINDも9.xなので当然使えるのですが,設定ファイルをviewを使って書き換えてBINDを起動し直すと,「サーバ管理」のステータス表示でDNSがエラー状態になってしまいます。

【対処方法】
設定が勝手に書き換わる問題については,「サーバ管理」による設定の更新を行わないようにするしかないと思います。「サーバ管理」による設定は,最初のドメイン設定ファイルの生成までにして,その後の設定はテキストエディタで直接設定ファイルを編集して「サーバ管理」からは設定は行わないようにします。「サーバ管理」は設定ファイルの書き換えを行ったあとのDNSの起動・停止でのみ利用します。
view機能の障害については,viewを使わないか,エラー表示に目を瞑るしかないようです。

■関連情報
Appleサポート:Mac OS X Server 10.4DNS サービスの概要
Apple Server 製品ドキュメント:ネットワークサービスの管理[PDF]
JPRS:DNS関連技術情報
OPENTECHPRESS:SPF解説

■関連書籍をAmazonで検索:[BIND/DNS][Mac OS X Server]
DNS & BINDクックブック―ネームサーバ管理者のためのレシピ集

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


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