Debianの標準MTAであるeximの設定を行い、google経由でメール送信を行う。
スマートホストは、アウトバウンド電子メールを処理するために特化したメールリレーで、OP25B(Outbound Port 25 Blocking)への対応として、ポート587のホストと通信してアウトバウンド電子メールを送信します。
※この場合、メールはgoogleアカウントから送信したように見える
$ sudo dpkg-reconfigure exim4-config
スマートホストでメール送信; SMTP または fetchmail で受信する
mail.example.com
127.0.0.1 ; ::1
空欄
空欄
smtp.gmail.com::587
はい
example.com
いいえ
ホームディレクトリ内の Maildir 形式
いいえ
または、直接設定ファイルを編集する
$ sudo nano /etc/exim4/update-exim4.conf.conf
smtp.gmail.com の情報確認
$ host smtp.gmail.com smtp.gmail.com is an alias for gmail-smtp-msa.l.google.com. gmail-smtp-msa.l.google.com has address 74.125.203.109 gmail-smtp-msa.l.google.com has IPv6 address 2404:6800:4008:c06::6d
/etc/exim4/passwd.client の編集
$ sudo nano /etc/exim4/passwd.client *.google.com:username@gmail.com:password smtp.gmail.com:username@gmail.com:password gmail-smtp-msa.l.google.com:username@gmail.com:password
/etc/exim4/passwd.client のアクセス権変更
$ sudo chmod 640 /etc/exim4/passwd.client $ sudo chown root:Debian-exim /etc/exim4/passwd.client
/etc/exim4/update-exim4.conf.conf を直接編集した場合。
$ sudo update-exim4.conf $ sudo systemctl restart exim4
メール送信
echo "Test" | mail -s "test" username@gmail.com
動作ログの確認
$ sudo tail -f /var/log/exim4/mainlog
※この場合、メールはgoogleアカウントから送信したように見える
127.0.0.1 => 空欄または、ネットワーク(ethのIPアドレス)を指定する
空欄 => 192.168.0.0/24 等でLAN内からの送信を許可する
LAN内のPCからメールを送信すると下記のエラーに
501 Syntactically invalid HELO argument(s)
WinPCから送信したメールのHELO文字列に、コンピュータ名が付加されており、アンダースコア文字が含まれていたのが原因でした。
$ cat /etc/exim4/update-exim4.conf.conf dc_eximconfig_configtype='local' dc_other_hostnames='debian' dc_local_interfaces='127.0.0.1 ; ::1' dc_readhost='' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'