Oracle Linux 6.2 の Postfix 2.6.6 でSMTPサーバーを構築

Oracle Linux 6.2 にメール・サーバーを構築する第1章。Oracle Linux 6.2 ではPostfixがデフォルトMTAとしてすでに起動しているが、ローカルホスト(自分自身)からとローカルホストへのメールしか中継しないように設定されているので、これをLANからとLANへのメールを中継できるように設定変更する。Red Hat Enterprise Linux (RHEL) / CentOS / Scientific Linux でも同様の方法で設定できるだろう。なお、すべてのクライアントからのメールを中継するようにも設定できるが、迷惑メール送信サーバーになってしまうので絶対にしてはいけない。

Postfixの中心となる設定ファイルは /etc/postfix/main.cf である。設定できる項目は非常に多いので、デフォルトから変更した部分と重要な部分だけを抜粋する。

ローカル配送用のユーザーはデフォルトのnobodyのままにしておこう。ここでrootやpostfixなどを設定してはいけない。

メール・サーバーのホスト名とドメイン名を設定する。なにも設定しなければhostnameコマンドで表示されるホスト名とドメイン名がデフォルトで使用される。

myoriginには、ローカルから送信されるメールにつけるドメイン名を設定する。$myhostnameであればfoo@bar.example.comのようになるし、$mydomainであればfoot@example.comのようになる。公開されていないドメイン名だと Sender address rejected: Domain not found エラーで受信拒否される場合があるので、ボクは$mydomainに変更した。

inet_interfacesでメール受信に使用するNICを指定する。NICがLAN用とWAN用で2枚あり、LANにしかサービスを提供しない場合などは適切に使用する必要があるが、今回のサーバーにはNICが1つしかないこともあって、以下ではallとした。なお、Oracle Linux 6.2 のデフォルトではここでlocalhostとなっているため、ローカルホストからのメールしか中継できないようになっている。

mydestinationでメールを受信する宛先のドメインを指定する。LANへのメールを中継するために、自ドメイン宛のメールを受信できるようにする。

mynetworks_styleをデフォルトのsubnetのままにしておくことで、メール・サーバーと同じネットワーク (LAN) からのメール中継が許可される。

mynetworks_style以外からのメールでも、relay_domain宛てのメールは例外とできる。デフォルトで$mydestinationが設定されているので、「$mynetworks_styleからのメール(自分からのメール)と$mydestination宛てのメール(自分宛てのメール)のみが使用できるMTA」になっているわけだ。

世の中には「自宅サーバーからのメール = 迷惑メール」という対策をしているサーバーも残念ながらあるので、relayhostですべての送信メールを契約ISPのSMTPサーバーに中継してしまうことで「ISPからのメール」にすることができる。[ ] をつけないとDNSのMXレコードに登録されているホスト名を意味するので、ホスト名を直接指定するときは必ず [ ] をつけよう。

メールの保存形式はIMAPで一般的なMaildir形式にした。最後に / をつけることで、MailDir形式になる。

Postfixを再起動し、TelnetからSMTPコマンドを直接実行して動作確認してみよう。以下ではLAN内のMacからGmailにメールを送信している。

受信したメールのソースのReceived:を下から見てみよう。evian.rewse.jp(クライアント)→ zulu.rewse.jp(今回設定したSMTPサーバー)→mail1.asahi-net.or.jp(ISPのSMTPサーバー)→ mx.google.com という設定どおりの経路になっていることが分かる。

Linuxのユーザー・アカウント名とメールアドレスの@の前を異なるものにしたい場合は /etc/aliases を使用する。以下では f@example.com というメールアドレスでfooユーザーに届くようにしている。

/etc/aliases は編集しただけは反映されないので、忘れずに以下のコマンドを実行しよう。

コメントを残す