- 更新日: 2014年7月28日
- CentOS & Linux
Postfix のインストールと設定 〜 CentOS6
MTA(Mail Transfer Agent)のソフトウェアである、Postfix を CentOS 6 にインストールして設定を行います。sendmail の設定が複雑なのに比べると、postfix は設定が簡易です。
— 環境 —
CentOS 6.4
postfix 2.6.6
sendmail を停止して postfix をインストール
sendmail が稼働中であれば sendmail を停止してサービスOFF。
1 2 3 4 |
# service sendmail stop # chkconfig sendmail off |
Postfix をインストール。
1 2 3 |
# yum install postfix |
CentOS で利用する MTA を Postfix に設定
CentOS で利用する MTA を Postfix に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# alternatives --config mta 2 プログラムがあり 'mta' を提供します。 選択 コマンド ----------------------------------------------- 1 /usr/sbin/sendmail.postfix *+ 2 /usr/sbin/sendmail.sendmail Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:1 |
/usr/sbin/sendmail.postfix の選択番号(今回の場合は1)を入力して、Postfix を CentOS で利用する MTA に設定します。
または、以下のコマンドでも MTA を Postfix に設定できます。Chef でレシピ書く時は、こちらを使うと良いですね。
1 2 3 |
# alternatives --set mta /usr/sbin/sendmail.postfix |
確認。
1 2 3 4 5 6 7 8 9 10 |
# alternatives --config mta 2 プログラムがあり 'mta' を提供します。 選択 コマンド ----------------------------------------------- + 1 /usr/sbin/sendmail.postfix * 2 /usr/sbin/sendmail.sendmail |
+ が postfix にマークされた状態になっていればOKです。
続いて、postfix をサービスに追加して chkconfig on の設定。
1 2 3 4 5 6 |
# chkconfig --add postfix # chkconfig postfix on # chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
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 の設定例です。
オリジナルをバックアップ。
1 2 3 |
# cp /etc/postfix/main.cf /etc/postfix/main.cf.org |
続いて、以下の項目を設定しました。これら以外のパラメータはデフォルトのままです。
/etc/postfix/main.cf
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 |
# メールサーバーのホスト名 myhostname = mail.example.com # ドメイン名 mydomain = example.com # 差出人のメールアドレスに使用されるドメイン名 # $mydomain と $ を先頭につけると、変数として上で設定した mydomain の値を参照できる myorigin = $mydomain # メール受信を許可するアドレス # 127.0.0.1 を指定してローカルから外部への配送のみを許可 inet_interfaces = 127.0.0.1 # IPv4 のみを有効にする inet_protocols = ipv4 # メールサーバー自身に配送されたとみなすドメインのリスト mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # メールのリレー(転送)を許可するネットワーク # 127.0.0.0/8 を指定してローカルからのメールのみ転送を許可 mynetworks = 127.0.0.0/8 |
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 を再起動。
1 2 3 |
# service postfix restart |
sendmail コマンドを用いて送信テストを行ってみます。test@example.com はテスト用に自分のメアドなどに変更お願いします。
1 2 3 4 5 6 7 8 9 10 |
# sendmail test@example.com From:user@example.com To:test@example.com Subject:テスト送信 テスト送信です . |
送信できたらOK。できなかったら、ログを確認します。
1 2 3 |
# tail /var/log/maillog |
LAN 内のメールサーバーから送信する場合
公開サーバーでメール送信が上手くいく場合は、このセクションの作業は必要ないのでスキップして下さい。
LAN 内のメールサーバーからの利用の場合で、メール送信テストのログを確認して LAN 内のメールサーバーから送信できない時は対策します。
1 2 3 |
# tail /var/log/maillog |
以下の Gmail の SMTP サーバーを経由して(リレーで)メール送信を行う設定を、/etc/postfix/main.cf の最後に追加します。
1 2 3 4 5 6 7 8 9 10 11 |
# vi /etc/postfix/main.cf # using gmail smtp server to relay mails relayhost = [smtp.gmail.com]:587 smtp_use_tls = yes smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt |
続いて /etc/postfix/sasl_passwd を作成して、Gmail のメールアドレスとパスワードを設定。
1 2 3 4 |
# vi /etc/postfix/sasl_passwd [smtp.gmail.com]:587 example@gmail.com:パスワード |
ここで、Gmail に二段階認証をかけている場合は、アプリ固有パスワードを設定する。ここちょっとした落とし穴ですかね。
次に /etc/postfix/sasl_passwd を Postfix が読めるように変換。
1 2 3 |
# postmap /etc/postfix/sasl_passwd |
これで、/etc/postfix/sasl_passwd.db というファイルが生成される。
/etc/postfix/sasl_passwd, /etc/postfix/sasl_passwd.db に対して、root 以外のアクセスを拒否するパーミッション設定。
1 2 3 4 5 6 |
# chown root:root /etc/postfix/sasl_passwd # chmod 600 /etc/postfix/sasl_passwd # chown root:root /etc/postfix/sasl_passwd.db # chmod 600 /etc/postfix/sasl_passwd.db |
【2015/02/02 追記】
コメントを頂きまして、/etc/postfix/sasl_passwd.db に対するアクセス権、パーミッションの設定を追記しました。匿名さん、ありがとうございました!
【追記ここまで】
postfix 再起動。
1 2 3 |
# service postfix restart |
メール送信テストを行います。
1 2 3 4 5 6 7 8 9 10 |
# sendmail test@example.com From:user@example.com To:test@example.com Subject:テスト送信 テスト送信です . |
無事に送信できたらOK。postfix は sendmail に比べると、設定が遥かに分かりやすいですね。明日は、この Postfix インストールと設定の Chef Cookbook バージョンのエントリーを書く予定です。
- – 参考リンク –
- Postfixをインストールしてメール送信してみる | 本日も乙
- Postfix 2.6.6をCentOS 6にインストールする – momoto.github.io
- Postfix インストールメモ(mail.cfの基本的な設定) – heihooのITメモ
- デフォルト MTA を変更する – maruko2 Note.
- Postfixでのドメイン名やホスト名の設定について – No:476 – Linuxで自宅サーバ構築(新森からの雑記) | Linuxで自宅サーバ構築(新森からの雑記)
- – Gmail の SMTP を利用してメール送信(LAN内のメールサーバーから送信する場合) –
- Postfix から Gmail 経由でメールを送る – 冒険するコンピューティング
- OP25Bを回避するため Postfixのリレー先を gmailに設定する方法 – Gentoo – ワルブリックス株式会社
- SE奮闘記: Gmail(Google Apps)経由でメールを送信するPostfixのSMTP設定
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- Linuxサーバー容量を確認するコマンドdf,duをマスターする!
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
- 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
匿名さん、こんにちは!ご指摘ありがとうございます。追記いたしました。