Edited at

PostfixのメールをGMail経由で送る

More than 1 year has passed since last update.


目的

CentOSはデフォルトのMTAとしてPostfixを採用している。

minimal構成でインストールしてもPostfixがインストールされ起動しており、これはもったいないのでGMailで他所に中継する。


制限

例えばhoge.localというホストから発信されたメールは、下記の様にすべて同じGMailユーザから発信されたことになる。これによりマルチユーザ環境では基本使えない。あくまでも自分のローカル開発環境等にはいいかもと言う感じ。

From: root <ユーザ名@gmail.com>

X-Google-Original-From: root@hoge.local (root)


環境

CentOS 7.2.1511で確認した。

# rpm -qa|grep postfix

postfix-2.10.1-6.el7.x86_64
# rpm -qa|grep cyrus-sasl
cyrus-sasl-lib-2.1.26-20.el7_2.x86_64
cyrus-sasl-2.1.26-20.el7_2.x86_64
cyrus-sasl-plain-2.1.26-20.el7_2.x86_64
cyrus-sasl-devel-2.1.26-20.el7_2.x86_64

cyrus-sasl-plainがないとGMailとの認証できないので注意(minimalでは入ってなかったはず)


設定


中継設定

main.cfを編集

# vi /etc/postfix/main.cf

末尾に次の設定を追加、GMailを中継先にしTLSを使いSMTP認証(PLAIN)にする。

# GMail

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
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


認証ユーザの設定

# vi /etc/postfix/sasl_passwd

[smtp.gmail.com]:587    <gmail_address>:<password>

中継先SMTPアドレス:ポート     認証ユーザ名:パスワード

パーミッションの変更とdb化

# chmod 600 /etc/postfix/sasl_passwd

# postmap hash:/etc/postfix/sasl_passwd


設定の有効化(再起動)

# systemctl restart postfix        # CentOS7/Systemd

reloadでもいいけど


確認

mailxパッケージをインストールしてあれば次の様に、自分のアドレス(GMail以外でも可)へメールを送信すると、中継登録したGMailアドレスからメールが届くはず。

$ mail hoge@example.jp

Subject: test
test
EOT

EOTはCtrl-Dで


運用


alias設定

ローカルホストのrootと作業ユーザのメールエイリアスを登録する

一般ユーザは~/.forwardでも良いが…

# vi /etc/aliases

末尾に次の様にaliasを追加

root:           hoge@example.jp

vagrant: hoge@example.jp

上記例はrootとvagrantユーザへのメールが自分のメールアドレスhoge@example.jpに届く設定(もちろんGMailでも可)

# newaliases

newaliasesは忘れずに


おまけlogwatchインストール

# yum install logwatch

logwatchをインストールしておけば、ログの集計結果が届くはず。ただし深夜も動いてるなら。