CentOS 4.4 で メール・サーバーを構築する第二章。まず、Postfixの基本的な設定を行い、LANからのメールとLANへのメールを通常のSMTPで中継できるようにする。
まずはPostfixをyumからインストールしよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# yum install postfix ...... ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: postfix i386 2:2.2.10-1.RHEL4.2.mysql_pgsql.c4 update 3.0 M Transaction Summary ============================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 3.0 M Is this ok [y/N]: y ...... Installed: postfix.i386 2:2.2.10-1.RHEL4.2.mysql_pgsql.c4 Complete! |
デフォルトで使用するMTAをSenadmailからPostfixに変更し、Sendmailの停止とPostfixの起動を行う。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# alternatives --config mta 2 プログラムがあり 'mta'を提供します。 選択 コマンド ----------------------------------------------- * 1 /usr/sbin/sendmail.sendmail + 2 /usr/sbin/sendmail.postfix Enterを押して現在の選択[+]を保持するか、選択番号を入力します: 2 # service sendmail stop sendmail を停止中: [ OK ] sendmail を起動中: [ OK ] # service postfix start postfix を停止中: [ OK ] postfix を起動中: [ OK ] # chkconfig postfix on |
このままではPostfixはloclhostに対するメールしか中継しないので、まずはLANに対するメールを中継するように設定変更しよう。なお、すべてのサーバーに対するメールを中継するようにも設定できるがspamの温床になるので絶対にしてはいけない。
Postfixの中心となる設定ファイルは /etc/postfix/main.cf である。設定できる項目は非常に多いので、デフォルトから変更した部分と重要な部分だけを抜粋して説明する。
ローカル配送用のユーザーにnobodyを設定する。ここでrootやpostfixなどを設定してはいけない。
1 |
default_privs = nobody |
メール・サーバーのホスト名とドメイン名を設定する。これらの値は後ほどほかのパラメーターで参照されることになる。
1 2 |
myhostname = zulu.rewse.jp mydomain = rewse.jp |
myoriginには、ローカルから送信されるメールにつけるドメイン名を設定する。$myhostnameであればfoo@bar.example.comのようになるし、$mydomeinであればfoo@example.comのようになる。ボクはローカル送信はローカル送信と一目で区別したかったので、$myhostnameのままにした。
1 |
myorigin = $myhostname |
inet_interfacesでメール受信に使用するNICを指定する。NICが二枚あり、一つはLAN用一つはWAN用になっており、LANにしかサービスを提供しない場合などは適切に設定する必要あるが、今回はallとした。なお、CentOSのデフォルトではここでlocalhostとなっているため、localhostからのメールしか中継しないようになっている。
1 |
inet_interfaces = all |
mydestinationでメールを受信する宛先のドメインを指定する。基本的には自分のネットワーク内が宛先のものだけに設定すればいいが、ボクは$mydomainに設定したrewse.jpのほかにlogtrotter.net / logtrotter.com宛てのメールも配送するため、以下のように設定してある。これでfoo@logtrotter.net宛てのメールはfoo@rewse.jp宛てのメールと同じ受信箱に配送される。
1 |
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, logtrotter.net, logtrotter.com |
mynetworks_styleをデフォルトのsubnetにしておくことで、メール・サーバーと同じネットワークに所属するマシンからのメールを中継が許可される。
1 |
mynetworks_style = subnet |
mynetowork_style以外からのメールでもrelay_domains宛てのメールは例外とできる。デフォルトの$mydestinationが設定されているので、“$mynetworks_styleからのメール(自分からのメール)と$mydestination宛てのメール(自分宛てのメール)のみが使用できるMTA” となっているわけだ。
1 |
relay_domains = $mydestination |
世の中には自宅サーバーからのメール = spamという対策をしているサーバーもあるので、fallback_relayを指定する。relayhostで自分のISPのメール・サーバーを必ず中継することでも対応できるが、fallback_relayは何らかの理由でメール配送が失敗したときにのみ代替してもらうサーバーを設定できる。なお、[ ] をつけないとMXレコードに問い合わせに行ってしまうので、ほとんどの場合は [ ] をつけること。
1 |
fallback_relay = [mail.gg.em-net.ne.jp] |
メールの保存形式はIMAPでアクセスできるMaidirにした。容量は余分に食うけど、一つの壊れたメールが全体に影響しないのでMaildirがお勧めだ。以下のように最後に / をつけて設定することで、Maildir形式で$HOME/Maildirにローカル配送されるようになる。
1 |
home_mailbox = Maridir/ |
設定ファイルの再読み込み後にTelnetでPostfixに接続し、動作確認してみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# service postfix reload Reloading postfix: [ OK ] $ telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 zulu.rewse.jp ESMTP Postfix HELO localhost 250 zulu.rewse.jp MAIL FROM: foo@zulu.rewse.jp 250 Ok RCPT TO: bar@zulu.rewse.jp 250 Ok DATA 354 End data with Subject: Test To: bar@zulu.rewse.jp This is a test mail. . 250 Ok: queued as A2CB95849 QUIT 221 Bye Connection closed by foreign host. $ less /home/bar/Maildir/new/* |
以上でPostfixの基本的な設定は完了である。
2 thoughts on “CentOS 4.4 に Postfix 2.2.10 をインストール”