|
||
|
上位メールサーバへ一律転送するメールサーバ他のパターンはPostfixでメールサーバを構築する(解説)も参照してください。いまどきインターネットへメールを送信する場合、ISPによって規制がかかっていることが多いです。 検証のネット環境で外部へメールを送信する場合、ISPのメールサーバを経由しなくてはならない状況が出てきます。 条件 LAN内のメールサーバで社内のメールを集約し、上位サーバへ転送します。 アウトバウンド用の中継サーバとなり、インバウンドのメールは受け付けません。 ISPのメールサーバに対して、SMTP-AUTHを使った転送の場合「SMTP-AUTHを使って上位メールサーバへ転送する」を参照してください。 ・Postfixをインストールする ・Postfixを設定する ・Telnetでメールの転送を確かめる Postfixをインストールするpostfixがインストールされているか確かめ、見つからなければPostfixをインストールします。#rpm -q postfix (Postfixとバージョン番号が表示されるか?) 表示されなければ #yum install postfix としてインストールします。リポジトリへ接続できることが条件です。 インストールしても、Postfixは起動しません。一見起動したように見えますが、statusを見ると起動してません。 これはデフォルトでSendmailが起動しているので、すでに25番ポートが使用されているからです。 sendmailを止めてPostfixを起動させます。 #service sendmail stop (Sendmailを止めます) #chkconfig sendmain off (自動起動を止めます) #service postfix start (Postfixを起動させます) #chkconfig postfix on (自動起動を有効にします) #service postfix status (動作を確認します) 「telnet localhost 25」などとして25番ポートのPostfixへアクセスできるか確認します。 ファイアウォールも確認しておきましょう。 Postfixを設定する次にPostfixの設定ファイルを編集します。/etc/postfix/main.cfを次のように編集します。 設定するのはとりあえず4つ。 myhostname 転送先メールサーバに対して名乗るホストネームです。 指定しない場合、自分で自分の名前を調べて使用されます。 上位メールサーバを使うに当たっては、指定しておくのが礼儀でしょう。 myhostname = mail.example.local inet_interface どのIPアドレスへサービスをバインドするかです。 デフォルトはlocalhostへバインドされていますので、メールサーバ自身しかPostfixへアクセスできません。 とりあえず全てのIPアドレスへサービスを提供しましょう。 inet_interface = all mynetworks 無条件に外部ドメインへメールをリレーするクライアントを指定します。 なにも指定されていなければ、サーバと同一セグメントからは制限なし。つまりLAN内からは誰のメールでも中継するようになります。 通常、これは強く信用できるLANのセグメント、もしくはホストを記述します。 mynetworks = 192.168.1.0/24 ※なお、よく似た値にmynetworks_styleがあります。 mynetworks_style = class/subnet/hostの三種類があります。 classを設定した場合は、Postfixの持つアドレスクラスと同じセグメントが与えられます(サーバアドレスが172.16.1.10ならmynetworksに172.16.0.0/16を指定したのと同じ効果) subnetを設定した場合は、Postfixの所属するサブネットが与えられます(サーバアドレスが172.16.1.10/24ならmynetworksに172.16.1.0/24を指定したのと同じ効果) hostを設定した場合は、mynetworksにlocalhostを指定したのと同じ効果 mynetworks_styleを使用してもmynetworksを使用しても同じ動作をしますが、一見して内容が理解できるmynetworksを使うほうが勘違いが少ないでしょう。 relayhost 転送先の上位メールサーバを指定します。 指定方法大別して二つがあります。 relayhost = hogehoge.net 指定されたドメインをMXレコードで調べ、得られたアドレスへ対してメールを転送します。 IPアドレスを指定することはできません。 relayhost = [mail.hogehoge.net] relayhost = [xxx.xxx.xxx.xxx] (上位SMTPサーバのアドレス) [かっこ]で囲むと、指定されたホスト名をAレコードで調べ、得られたアドレスへ対してメールを転送します。 IPアドレスを指定することもできます。 ※ISPのメールサーバがSMTP-AUTHを採用している場合は、SMTP-AUTHクライアントとしての設定が必要となります。 別項「SMTP-AUTH」を参照してください。 ここまで設定したら、Postfixにコンフィグを読み込ませます。 #service postfis restart Telnetでメールの転送を確かめるTelnetでSMTPの挙動を確認します。メールサーバ上でメールのログを監視します。 #tail -f /var/log/maillog 「telnet localhost 25」として直接SMTPサービスにログインし、SMTPコマンドを実行します。 太字部分が入力内容です。 宛先のメールは、外部のインターネットメールを使用します。 220 localhost.localdomain ESMTP Postfix helo localhost 250 localhost.localdomain mail from: user1@example.local 250 2.1.0 Ok rcpt to: user@hogehoge.net 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> helo postfix . 250 2.0.0 Ok: queued as 0625633CC90 quit 221 2.0.0 Bye tailで監視している/var/log/maillogの内容で Jan 29 18:43:24 localhost postfix/smtp[3075]: D420533CC90: to=<user@hogehoge.net>, rely=[ISPメールサーバアドレス:25], delay=1.4, delays=1/0.03/0.18/0.2, dsn=2.0.0, status=sen (250 OK) という内容が出れば成功です。 もし「reject」というログが出力されれば、転送が禁止されています。 Telnet、あるいはメールクライアントのセグメントがmynetworksに含まれているかを確認します。 |
|