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)