印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Postfix の設定

Vine Linux 3.1 にはデフォルトで Postfix がインストールされており,自動起動されてるようになっている。後は正しく設定を行うだけである。

■ ■ ■

Vine Linux 3.1 や前のバージョンの 2.6 には,メール配送プログラムである Postfix が最初からインストールされており,また自動起動されている。ホスト名が FQDN で設定されていない時,起動時に警告メッセージが表示される。 警告メッセージは /var/log/messeges や /var/log/maillog に保存されている。例えば次のようなメッセージである。

Apr  3 04:02:06 tpt22 postfix[3561]: warning: My hostname tpt22 is not a fully qualified name - set myhostname or mydomain in /etc/postfix/main.cf
Apr  3 04:02:06 tpt22 postfix/postsuper[3598]: warning: My hostname tpt22 is not a fully qualified name - set myhostname or mydomain in /etc/postfix/main.cf
Apr  3 04:39:22 tpt22 postfix/pickup[8998]: warning: My hostname tpt22 is not a fully qualified name - set myhostname or mydomain in /etc/postfix/main.cf

これは,/etc/hosts に設定してある自分のホスト名「tpt22」が FQDN でないので,正しくメールが配送できないことを示している。ホスト名やドメインを /etc/postfix/main.cf に指定すればよい。

Postfix のコンフィグレーション

デフォルトからの変更点は以下の通り。

myhostname = mail.nlogn.ath.cx
mydomain = nlogn.ath.cx
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, $mydomain,
        mail.$mydomain, www.$mydomain, ftp.$mydomain,
        tpt22.$mydomain, pop.$mydomain,
        boo.foo.com
mynetworks_style = subnet
mynetworks = 192.168.0.0/24, 127.0.0.0/8
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
#alias_maps = hash:/etc/postfix/aliases
masquerade_domains = $mydomain

各設定の意味は次のようになっている。

  • myhostname にはホスト名を指定する。ホスト名が複数ある場合,どれか1つを書いておけばよい。
  • mydomain にはドメイン名を指定する。myhostname のドメイン名部分を書く。
  • inet_interfaces に all を指定すると,リモートからのメールをすべて受け付けるようになる。
  • mydestination には,自ホスト名を全て書く。$mydomain 以外のドメインのホスト名も書いてよい。このパターンにマッチしたメールは自分宛だと判断して取り込み,マッチしなければ別のホストに投げる。自分のホスト名であるにも関わらずここに書いておかないと,自分は受け取らずに他に投げると,他から投げ返され,ループに陥ることになる。
  • mynetworks_style は,次の mynetworks と組にして指定する。
  • mynetworks には mynetworks_style で指定したスタイルで記述する。スタイルは subnet としたので,自分のネットワークは 192.168.0.0/24 と,ループバックの 127.0.0.0/8 の2つになる。
  • relay_domains には,自ホスト宛以外にはリレーしないように $mydestination だけを指定する。これを指定しないと,別ドメインから他ドメインへのメールを転送する,いわゆるオープンリレーホストになってしまい,迷惑メール配送に手を貸すことになるので注意。
  • alias_maps には,/etc/aliases を指定している。これは好みの問題で,デフォルトの /etc/postfix/aliases で問題はない。私は aliase というと,/etc/aliases だと思い込んでいるので,こうしているだけである。
  • masquerade_domains = $mydomain は,メールの From アドレスからホスト名 mail を隠す設定である。これがない場合,localhost 以外のクライアントからメールを出せばホスト名が出ないが,localhost から出すと username@mail.nlogn.ath.cx のようにホスト名の mail が入ってしまう(エンタープライズ: Linux Tips - ドメインマスカレードでSMTPホスト名を隠す)。

Postfix 再起動

設定が完了したら,postfix を再起動する。

# /etc/init.d/postfix restart

ルータのポートマッピング

外部と自宅のホストを接続するルータ(ADSL モデム)が IP マスカレードになっている場合は,ルータにポートマッピングの設定をし,TCP のポート 25 を自ホストに向ける。

セキュリティチェック

最後に,spam の踏み台になっていないかをチェックする。チェックしてくれるサイトに対し telnet するだけでよい。

$ telnet relay-test.mail-abuse.org
Trying 168.61.4.13...
Connected to relay-test.mail-abuse.org.
Escape character is '^]'.
Connecting to (こちらのIPアドレス) ...
<<< 220 mail.nlogn.ath.cx ESMTP Postfix
>>> HELO cygnus.mail-abuse.org
<<< 250 mail.nlogn.ath.cx
:Relay test: #Quote test
...
:Relay test: #Test 1
...
250 Ok
...
:Relay test: #test 19
...
<<< 220 mail.nlogn.ath.cx ESMTP Postfix
>>> HELO cygnus.mail-abuse.org
<<< 250 mail.nlogn.ath.cx
>>> QUIT
<<< 221 Bye
Tested host banner: 220 mail.nlogn.ath.cx ESMTP Postfix
System appeared to reject relay attempts
Connection closed by foreign host.

現在は 19 種類の形式でテストしてくれるようになっている。これにクリアしていればOK。

追記:
この手順を nlog(n): 日記サーバ移行計画 に追加する。

2015年9月20日追記:
プロバイダが Outbound Port 25 Blocking (OP25B) 対策をしている場合について書きました (nlog(n): 自宅サーバからプロバイダのサブミッションポートを使ってメールを送信する)。

Posted by n at 2005-04-03 22:30 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?