Postfix のインストールと設定 〜 CentOS6

スポンサーリンク

MTA(Mail Transfer Agent)のソフトウェアである、Postfix を CentOS 6 にインストールして設定を行います。sendmail の設定が複雑なのに比べると、postfix は設定が簡易です。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

— 環境 —
CentOS 6.4
postfix 2.6.6

sendmail を停止して postfix をインストール

sendmail が稼働中であれば sendmail を停止してサービスOFF。

Postfix をインストール。

CentOS で利用する MTA を Postfix に設定

CentOS で利用する MTA を Postfix に設定します。

/usr/sbin/sendmail.postfix の選択番号(今回の場合は1)を入力して、Postfix を CentOS で利用する MTA に設定します。

または、以下のコマンドでも MTA を Postfix に設定できます。Chef でレシピ書く時は、こちらを使うと良いですね。

確認。

+ が postfix にマークされた状態になっていればOKです。

続いて、postfix をサービスに追加して chkconfig on の設定。

Postfix の設定ファイル

Postfix の設定ファイルは、/etc/postfix/main.cf と /etc/postfix/master.cf の2種類があります。master.cf は “# Postfix master process configuration file.” とコメントがあるので、Postfix の master プロセスのチューニングに関する設定っぽいです。

メールの送受信に関する設定(ホスト名、ドメイン名など)は、main.cf で行います。ということで、以下は /etc/postfix/main.cf の設定例です。

オリジナルをバックアップ。

続いて、以下の項目を設定しました。これら以外のパラメータはデフォルトのままです。

/etc/postfix/main.cf

myhostname は、デフォルトでは hostname コマンドで出力されるホスト名が設定されます。hostname コマンドの出力値は、CentOS6 の場合ですと /etc/sysconfig/network (と /etc/hosts?)で設定されているホスト名。

1つのサーバで複数のサーバー(ウェブサーバー、メールサーバーなど)を運用する場合には、メールサーバー用に独自のホスト名を割り当てるようにします。hostname コマンドの出力が、’example.com’ の場合、myhostname には ‘mail.example.com’ のように設定する。

以下、私の環境での main.cf に設定されていた、これらのパラメータのデフォルト値です。

myhostname(デフォルトはコメントアウト)
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld

mydomain(デフォルトはコメントアウト)
#mydomain = domain.tld

myorigin(デフォルトはコメントアウト)
#myorigin = $myhostname
#myorigin = $mydomain

inet_interfaces(デフォルトは localhost なので外部への配送のみ許可)
inet_interfaces = localhost

inet_protocols(デフォルトは all)
inet_protocols = all

mydestination(デフォルトは $myhostname, localhost.$mydomain, localhost)
mydestination = $myhostname, localhost.$mydomain, localhost

mynetworks(デフォルトはコメントアウト)
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table

メール送信テスト

以上を設定し終えたら、postfix を再起動。

sendmail コマンドを用いて送信テストを行ってみます。test@example.com はテスト用に自分のメアドなどに変更お願いします。

送信できたらOK。できなかったら、ログを確認します。

LAN 内のメールサーバーから送信する場合

公開サーバーでメール送信が上手くいく場合は、このセクションの作業は必要ないのでスキップして下さい。

LAN 内のメールサーバーからの利用の場合で、メール送信テストのログを確認して LAN 内のメールサーバーから送信できない時は対策します。

以下の Gmail の SMTP サーバーを経由して(リレーで)メール送信を行う設定を、/etc/postfix/main.cf の最後に追加します。

続いて /etc/postfix/sasl_passwd を作成して、Gmail のメールアドレスとパスワードを設定。

ここで、Gmail に二段階認証をかけている場合は、アプリ固有パスワードを設定する。ここちょっとした落とし穴ですかね。

次に /etc/postfix/sasl_passwd を Postfix が読めるように変換。

これで、/etc/postfix/sasl_passwd.db というファイルが生成される。

/etc/postfix/sasl_passwd, /etc/postfix/sasl_passwd.db に対して、root 以外のアクセスを拒否するパーミッション設定。

【2015/02/02 追記】
コメントを頂きまして、/etc/postfix/sasl_passwd.db に対するアクセス権、パーミッションの設定を追記しました。匿名さん、ありがとうございました!
【追記ここまで】

postfix 再起動。

メール送信テストを行います。

無事に送信できたらOK。postfix は sendmail に比べると、設定が遥かに分かりやすいですね。明日は、この Postfix インストールと設定の Chef Cookbook バージョンのエントリーを書く予定です。

スポンサーリンク
サーバ構築研究会の CentOS 本は、昔からお世話になっています。Linux の教科書は Linux の基本を学ぶのにおすすめです。
 
スポンサーリンク
  • 2件のコメント
  • 匿名

    とても参考になりました。ありがとうございます。

    /etc/postfix/sasl_passwd.db はcatコマンド等でパスワードを見ることができるため、
    /etc/postfix/sasl_passwdだけでなく、
    /etc/postfix/sasl_passwd.dbもアクセス権を指定しておいた方が良いと思います。

    参考: http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/postfix.html

    • taka

      匿名さん、こんにちは!ご指摘ありがとうございます。追記いたしました。

Leave Your Message!