今回はPostfixからGmailを使ってメールを送信する方法を紹介します。
Postfixからリレー先をGoogleのSMTPサーバを指定してメールを送信する方法です。
Postfix からGmailでメール送信する
バックアップやインフラ回りの簡単な処理の通知でメールを送信したいけどてきとーに設定するとどっかのセキュリティサービスではじかれたり、通知用の認証情報をかんたんに発行してもらえない、、、とかいったときに、とりあえずインターネットに出ることができればメール通知することができます。ただ、会社で使うときはちゃんと了承を得てくださいね。
SASL認証用パッケージインストール
まずは必要なパッケージをインストールします。cyrus-sasl はPostfixのSMTP認証に必要なライブラリで、サイラス サスルと呼ばれます。PostfixではこのSASL認証を使って認証を行うため必要です。
1 |
# yum install cyrus-sasl cyrus-sasl-plain -y |
以下がインストールされたパッケージと、サービスとしても追加されていることを確認できる。起動と自動起動してしまいます。
1 2 3 4 5 6 7 8 9 10 |
# rpm -qa | grep sasl cyrus-sasl-2.1.26-21.el7.x86_64 cyrus-sasl-lib-2.1.26-21.el7.x86_64 cyrus-sasl-plain-2.1.26-21.el7.x86_64 # systemctl list-unit-files | grep sasl saslauthd.service disabled # systemctl start saslauthd # systemctl enable saslauthd |
Postfix 設定
インストールされていなければインストールします。以下を実行して何もでてこなければ 「yum install postfix」しましょう。
1 2 |
# rpm -qa | grep postfix postfix-2.10.1-6.el7.x86_64 |
まずは基本設定から。main.cf を編集します。以下がデフォルトからの変更点。postconf コマンドは、引数に渡したパラメータの設定値を返してくれるので設定を確認したいときに便利。
1 2 3 4 5 6 7 8 |
# postconf myhostname mydomain inet_interfaces myorigin mydestination mynetworks home_mailbox myhostname = mail.hogehoge.com mydomain = hogehoge.com inet_interfaces = all myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 127.0.0.0/8 192.168.2.0/24 home_mailbox = Maildir/ |
ちなみに、オプション「-d」でデフォルトの設定を確認できる。ずらずらっと表示されるのでgrepか more/less 推奨です。
1 2 3 4 5 6 7 8 9 |
# postconf -d |egrep "^myhostname|^mydomain|^inet_interfaces|^myorigin|^mydestination|^mynetworks|^home_mailbox" home_mailbox = inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost mydomain = localdomain myhostname = hogehoge.localdomain mynetworks = 127.0.0.0/8 192.168.2.0/24 [::1]/128 [2408:211:1364:7b00::]/64 [fe80::]/64 mynetworks_style = subnet myorigin = $myhostname |
次にSASL認証とTLSの設定(今回はSTARTTLS)を使用します。設定ファイルの一番下あたりに追記しておく。
1 2 3 4 5 6 7 8 9 |
# smtp-auth relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/relay_password smtp_sasl_security_options = noanonymous # starttls smtp_tls_security_level = may smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt |
password_mapの作成をします。SMTPサーバの [](かっこ)の有無は main.cf の relayhost の項目に記載した書き方と同じにする必要がある。
1 2 3 4 5 6 |
# vi /etc/postfix/relay_password --- [smtp.gmail.com]:587 XXXXX@gmail.com:Password --- # chmod 600 /etc/postfix/relay_password |
password_mapをハッシュ化します。以下を実行後に「relay_password.db」ファイルが生成されていることを確認する。
1 |
# postmap hash:/etc/postfix/relay_password |
Postfixを起動して、自動起動するように設定しておく。
1 2 |
# systemctl start postfix # systemctl enable postfix |
ここまでで、サーバ側の設定は完了。次にGmailアカウント側での設定をする必要がある。これではまった。。。Gmailのセキュリティ強化の設定で「安全性の低いアプリによるアカウントの使用を許可する」か否かの設定が存在する。この許可の設定が有効になっていないと送信することができない。
送信テスト
mail コマンドをインストールします。
1 |
# yum install mailx -y |
実際にメールを送信してみます。
1 |
# echo "CentOSからのテストメールです。" | mail -s "テストメール" XXXXX@yahoo.co.jp |
うまくいかないときはログを確認してみましょう。うまく送信できていれば以下ログの下から2行目のように「status=sent」と表示されます。
1 2 3 4 5 6 |
# tail maillog postfix/pickup[1833]: E4C9C813EEA: uid=0 from=<root> postfix/cleanup[1927]: E4C9C813EEA: message-id=<20180407151141.E4C9C813EEA@mail.hogehoge.com> postfix/qmgr[1834]: E4C9C813EEA: from=<root@hogehoge.com>, size=494, nrcpt=1 (queue active) postfix/smtp[1929]: E4C9C813EEA: to=<XXXXX@yahoo.co.jp>, relay=smtp.gmail.com[108.177.125.108]:587, delay=3.3, delays=0.02/0.02/1.9/1.4, dsn=2.0.0, status=sent (250 2.0.0 OK … postfix/qmgr[1834]: E4C9C813EEA: removed |
まとめ
思いのほか簡単にGmailからメール送信することができました。毎日のバックアップの通知などで比較的簡単に導入できるのでおすすめです。
↓↓↓ 持っていると便利な一冊。