さてさて、今回はタイトルのネタを実施。

自宅で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を!