ArchLinuxのpostfixからGmailでメール送信できるようにする。(※二段階認証対応)
さてさて、今回はタイトルのネタを実施。
自宅でLinuxサーバを構築すると監視イベントや異常のメッセージをメール送信する仕組みが欲しくなりますね。
そこで今回はそんな時に、Linux自身かメールを送信可能なように設定していきます。
Linuxサーバ自身をメール送信サーバ(SMTP)にする際は、独自ドメインを保有してDNSにMXレコードを付与してやる必要があります。
そこで今回はLinux自身をメールサーバにするのではなく、LinuxサーバがGmail経由でメール送信(SMTP)できる方法となります。これは独自ドメインがなくとも可能な方法です。
アプリのインストール
まずは、以下コマンドにてアプリ(postfix,cirus_sasl)をインストールします。
$ sudo pacman -S postfix cyrus_sasl
設定(Googleアカウント)
自身のGoogleアカウントで次に以下のURLにアクセスし、二段階認証のパスワードを入手しておきます。
アプリはその他を選びpostfixとしましょう。
https://accounts.google.com/IssuedAuthSubTokens?hide_authsub=1
二段階認証のパスワードは4桁でスペースが空いているのが表示されているかと思います。
これを以下のファイルに保存しておきましょう。
$ sudo vi /etc/postfix/gmail_sasl_password
エディタで開き、以下のように入力し、保存します。
[smtp.gmail.com]:587 abcde12345@gmail.com:xxxxxxxxxxxxxx
保存が終わったら以下のコマンドでハッシュ化します。
$ sudo postmap hash:/etc/postfix/gmail_sasl_password
すると/etc/postfix/gmail_sasl_password.dbが生成されているかと思います。
以下コマンドで確認します。
$ ls -l /etc/postfix/gmail_sasl_password.db
<注意>
ここで、仮に「postmap: fatal: bad string length 0 < 1: setgid_group =」というエラーが出た場合、
main.cfのファイルの「setgid_group =」の箇所を「#setgid_group =」としてコメントアウトします。
それでは次にPostfixの設定をします。
設定(postfix)
以下のファイルをviエディタで開きます。
sudo vi /etc/postfix/main.cf
以下を追加して保存します。
#gmail
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail_sasl_password
smtp_sasl_mechanism_filter = plain
smtp_sasl_tls_security_options = noanonymous
Postfixの起動、メール送信テスト
次に、以下コマンドでpostfixを起動します。
$ sudo systemctl start postfix
コマンドラインからメール送信テストをしてみましょう。
以下コマンドを打ち込みます。
$ mail -s test abcd12345@gmail.com
ここから本文の入力モードになります。
適当に入力して最後に、「ctrl」+「D」を押して入力終了で送信されます。
ここで送信されていればOKです。
尚、送信されているかは以下コマンドで確認できます。
$ mailq
または
$ postqueue -p
ここでempty、空っぽであれば良いのですが、残っていた場合は、
パスワードの認証失敗か、送信先アドレスが間違ってリトライ待ちになっているケースもあります。
もしパスワード認証やアドレスが誤っていた場合、修正後もキューは残っています。
以下の削除したい場合はコマンドで送信キューを削除できます。
メール送信キューを削除したい場合
キューを全部削除
$ sudo postsuper -d ALL
キューの一部を削除は、mailqの左端のIDを以下のxxxxxxx部に入れて実行します。
$ sudo postsuper -d xxxxxxxx
おまけ
crontabの結果をメールで配信したい場合は以下で可能です。
crontab の1行目に以下一文を追記します。
MAILTO="abcd12345@gmail.com"
ちなみにこのメール登録方法はManjaroLinuxでも行えます。
アプリのインストール部分以外はUbuntu系でもOKです。
それでは、HappyHackingLifeを!