自分メモ:ubuntu20.04にてgmailをsmtpサーバにする方法

ubuntu20.04が手元にあるのですが、Postfixを用いて ログ等 GmailをSMTPサーバに指定して送付する際の手順です。


パッケージのインストール
$ sudo apt install mailutils postfix bsd-mailx libsasl2-modules
main.cfのコピーと設定
$ sudo cp -p /etc/postfix/main.cf.proto /etc/postfix/main.cf


# mail.cf に以下の値を設定
# 多くの設定項目は、mail.cf の後半にあります。

myhostname = <自ホスト名>
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8, <自IPアドレス>/24

sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /etc/postfix
readme_directory = /usr/share/doc/postfix

# mail.cf に以下の値を追記
transport_maps=hash:/etc/postfix/transport
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_security_options = noanonymous

aliases.dbの作成

$ sudo newaliases

postalias: warning: /etc/postfix/main.cf, line 700: overriding earlier entry: readme_directory=

transport.dbの作成(gmail.com smtp:[smtp.gmail.com]:587の指定)

$ vi /etc/postfix/transport
gmail.com  smtp:[smtp.gmail.com]:587

$ sudo postmap /etc/postfix/transport

mailIDとパスワードを指定

$ sudo vi /etc/postfix/sasl_passwd

[smtp.gmail.com]:587 <username>@gmail.com:<password>

sudo postmap /etc/postfix/sasl_passwd

Postfixの起動

$ sudo systemctl restart postfix

テストメール送信

echo "test from myserver" | mail -s "test mail" userid@gmail.com

2段階認証を行っている場合で、送信されない場合のログ tail /var/log/mail.log

“534-5.7.9 Application-specific password required”と表示される。

Feb 21 15:04:36 mail-server postfix/smtp[1498946]: 44CF8403801: to=<userid@gmail.com>, relay=smtp.gmail.com[64.233.189.108]:587, delay=1.5, delays=0.03/0.04/1.4/0, dsn=4.7.9, status=deferred (SASL authentication failed; server smtp.gmail.com[64.233.189.108] said: 534-5.7.9 Application-specific password required. Learn more at?534 5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor d15sm10915666pfu.127 - gsmtp)

2段階認証を設定しているアカウントでは「アプリパスワード」を生成し、Postfixに教える必要があります。

ということで、以下の手順を実施しました。

# 1.https://myaccount.google.com/ → セキュリティ → アプリ パスワード を選択。
# 2.「アプリを選択」でメールを選択、「デバイスを選択」で「その他(名前を入力)」にデバイスの名前を入力し「生成」をクリックし、「アプリパスワード」を入手。以下の手順を実行。

$ sudo vi /etc/postfix/sasl_passwd

[smtp.gmail.com]:587 <username>@gmail.com:<アプリパスワード>

$ sudo postmap /etc/postfix/sasl_passwd
# sudo systemctl restart postfix

無事送信された時のログ。

$ tail /var/log/mail.log 

Feb 21 15:12:08 mail-server postfix/smtp[1499650]: 46FDF40380C: to=<userid@gmail.com>, relay=smtp.gmail.com[142.250.157.108]:587, delay=2, delays=0.03/0.03/1.2/0.74, dsn=2.0.0, status=sent (250 2.0.0 OK  1645423928 z10-20020a17090a8b8a00b001b8d20074c8sm6155000pjn.33 - gsmtp)
Feb 21 15:12:08 tv-server postfix/qmgr[1499641]: 46FDF40380C: removed

引用させていただきました。有益な情報をありがとうございます。