LoginSignup
1
2

More than 5 years have passed since last update.

Postfix 2.6.6 を CentOS 6 にインストールする

Posted at

[!NOTE]
この記事は 2013/11/23 に momoto.github.io へ投稿した内容を Qiita へ移行してきたものです

 RHEL 6 に標準で搭載されている Postfix 2.6.6 をつかって、スタンドアロンの MTA を設定するまでの手順をまとめています。 OS は RHEL クローンの CentOS 6.3 を使用しています。

 注意点として、SMTP サーバが不正中継に利用されないように、リレー制限の慎重な設定が必要になります。 この記事ではサーバからメールを送信できることと、外部からメールをリレーできないことまでを確認します。 受け取ったメールの配送やメールボックスへのアクセス (POPやIMAP) については扱っていません。

1. postfixパッケージの確認

 postfix パッケージがシステムにインストールされているかどうか、を yum list installed postfix で確認します。 もし、インストールされていなければ yum install postfix でインストールすることができます。 ソフトウェアライセンスは IPL になるので、とくに商用利用の責任において GPL と異なる部分があります。

$ yum list installed postfix

Installed Packages
postfix.x86_64                 2:2.6.6-2.2.el6_1                 @anaconda-CentOS-201207061011.x86_64/6.3

 postfix パッケージの設定ファイルは rpm -qc postfix で確認することができます。

表1 postfix パッケージの設定ファイル

ファイルの名前 説明
/etc/pam.d/smtp.postfix PAM (Pluggable Authentication Modules) の設定
/etc/postfix/access SMTPサーバのアクセステーブル
/etc/postfix/canonical canonicalテーブルの書式
/etc/postfix/generic genericテーブルの書式
/etc/postfix/header_checks 正規表現による内容検査の設定
/etc/postfix/main.cf 基本的な設定
/etc/postfix/master.cf デーモンプロセスの定義
/etc/postfix/relocated relocatedテーブルの書式
/etc/postfix/transport transportテーブルの書式
/etc/postfix/virtual 仮想エイリアステーブルの書式
/etc/sasl2/smtpd.conf Cyrus SASLの設定

2. Postfixの設定

 用途に応じて設定を変更していきます。 設定できる項目は 600 以上あるようですが、単純な用途であれば、ほとんどの項目は初期値のまま利用できます。

表2 /etc/postfix/main.cf の基本的な設定

変数名 初期値 説明
myhostname hostname.localdomain メールシステムのFQDN。この変数は他の多くの設定で参照されます
mydomain localdomain メールシステムのインターネットドメイン名。この変数は他の多くの設定で参照されます
myorigin \$myhostname メールシステムから送信されたメールにおいて、差出人のメールアドレスにつかわれるドメイン
inet_interfaces all メールシステムが通信できるネットワークアドレス。ここで許可されていないアドレスとは、メールの受信も送信もできません
mydestination \$myhostname, localhost.\$mydomain, localhost メールシステムに到達したメールにおいて、自分宛のメールとみなすドメインのリスト
mynetworks 127.0.0.0/8 メールシステムがリレーを許可するSMTPクライアントのネットワークアドレスのリスト

 現時点の設定は postconf コマンドで確認することもできます。 オプションに -d を付けると設定の初期値、-n を付けると初期値から変更した設定だけを表示します。

3. Postfix の起動/再起動

 設定を変更した後は postfix check で設定や権限を検証し、サーバを起動または再起動して変更を反映させます。 postfix reload でも設定を反映させることができますが、inet_interfaces など一部設定の変更にはサーバ再起動が必要です。

$ sudo service postfix check
                                            [  OK  ]
$ sudo service postfix status
master is stopped
$ sudo service postfix start
Starting postfix:                           [  OK  ]

 サービスの自動起動を有効にする場合は chkconfig をつかいます。

$ chkconfig --list postfix
postfix         0:off   1:off   2:off   3:off   4:off   5:off   6:off
$ sudo chkconfig postfix on
$ chkconfig --list postfix
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off

4. メールの送信テスト

4-1. Sendmail 互換インタフェース

 Postfix の Sendmail 互換インタフェースをつかって、メールサーバのホストからメールを送信してみます。 Sendmail 互換インタフェースのパスは sendmail_path で設定されています。

sendmail
$ sendmail somebody@example.com
from: user@hostname.localdomain
to: somebody@example.com
subject: test email

this is a test message.
.

 送信したメールのログは /var/log/maillog から、ローカルのメールボックスへ配送されたメールは /var/mail/{ユーザ名} (mail_spool_directory) から確認することができます。

4-2. Telnet

 Telnet をつかって、mynetworks で指定していないネットワークアドレスから、relay_domains (mydestination) にないドメインへメールをリレーできないことを確認します。

telnet
$ telnet <SMTP_HOST> 25
Trying <SMTP_HOST>...
Connected to <SMTP_HOST>.
Escape character is '^]'.
220 hostname.localdomain ESMTP Postfix
HELO hostname.localdomain
250 hostname.localdomain
MAIL FROM: user@hostname.localdomain
250 2.1.0 Ok
RCPT TO: somebody@example.com
554 5.7.1 <somebody@example.com>: Relay access denied

 この例では、SMTP 応答コード 554 (Transaction failed) を返されて、リレーが失敗しています。

 オープンリレーとなっていないかどうかの確認は RBL.JPThird Party Relay Check からも確認することができます。

参考

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2