2022-09-01 追記
Gmailの場合は「アプリパスワード」か「XOAUTH2」に対応させないと、SMTP/IMAPが使えない。
アプリパスワードは手軽だが、認証がめんどくさくなる諸刃の剣。
なので、XOAUTH2が出来るように調べた→ https://takuya-1st.hatenablog.jp/entry/2022/03/14/181637
exim4 → XOAUTH2のPostix → 世界
と転送するのがマシだと思う。
メールの設定はめんどくさい→ exim4 で解決
SMTPリレーとかSMTP Outbound port Blocking 25 ( OBP 25 ) だとかさ、めんどくさいんですよね。理解できない人に、「○○が必要で」などと説明するのもめんどくさい。
実は、メール送信は細かい設定や説明を抜きにして簡単に使うことができる。
exim4 を使って localhost:25 宛に送れば外部のSMTPで送信することができる
Gmail 経由で送信する。
というわけで、一番手っ取り早くて、無料で確実なのが Gmail のアカウントを作ってそこから創出するわけですよ。
Debian/Exim4 でGmail経由で送信
DebianだとPostfixではなくExim4が使われていて、これが軽量で、最低限のことは十分にできるので、Exim4でほとんど十分。
Postfix でやる場合
Postfix ではいぜんやったので そちらのログがある
OBP25でもあきらめない。自宅サーバーでPostfixでスパム判定させずメールをリレーで送る方法: gmail の smtp を使った例 - それマグで!
用意するもの
Exim4の確認
exim4 が入っていることを確認する。
# sudo dpkg --list exim4
exim4 の再起動などの方法を確認
systemd 経由の起動状態を確認
sudo systemctl status exim4
systemd 経由で再起動などを確認
sudo systemctl reload exim4 sudo systemctl stop exim4 sudo systemctl start exim4
exim4 の設定反映はコレでもいける
sudo update-exim4.conf
/etc/exim4/update-exim4.conf.conf
設定を以下のようにする。
# dc_eximconfig_configtype='local' dc_eximconfig_configtype='smarthost' dc_other_hostnames='pizero' dc_local_interfaces='127.0.0.1 ; ::1' dc_readhost='' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' # -dc_smarthost='' dc_smarthost='smtp.gmail.com::587' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'
ポイントは。次の通り。 ::
コロンが2つなのはそういうものです。ミスタイプではありません。
dc_smarthost='smtp.gmail.com::587'
メールアカウントの設定
/etc/exim4/passwd.client
## Gmail アカウント gmail-smtp.l.google.com:my_name@example.com:my_password smtp.google.com:my_name@example.com:my_password *.google.com:my_name@example.com:my_password gmail-smtp-msa.l.google.com:my_name@example.com:my_password smtp.gmail.com:my_name@example.com:my_password
パスワードをちょっとだけ保護する。
もっとこう、暗号化したり出来たらいいんだけど。 せめて一般ーザーにはパスワード読めないようにしておく
sudo chown root:Debian-exim /etc/exim4/passwd.client sudo chmod 640 /etc/exim4/passwd.client
あとはリロードしてテストする
リロード
sudo update-exim4.conf
テスト
メールが送信できるかテストする。
サンプルメールの作成
sendmail を毎回書くのはめんどくさいので、サンプルメールを作っておくことにします。
cat - > sample-mail.txt To:takuya@example.com Subject: Hello, From pizero Hi, can you see me ?
サンプルメールの送信
cat sample-mail.txt | sendmail -i -t
crontab の送信先を変える
exim4 を使ってローカル転送をしてる場合は mailto を設定するとcrontab のメールがSMTP経由で届くようになる。
MAILTO=takuya@example.com
ローカル転送をする
ローカル転送を設定する必要がある
/etc/aliases
root:takuya takuya: takuya+alias@example.com
/etc/email-addresses
takuya: takuya+from@example.com
ローカル転送の確認
takuya@:~$ exim -brw takuya@localhost sender: takuya+from@example.com from: takuya+from@example.com to: takuya@localhost cc: takuya@localhost bcc: takuya@localhost reply-to: takuya+from@example.com env-from: takuya+from@example.com env-to: takuya@localhost
このようにして、どのようにメールが転送されていく確認しておきましょう。
Gmail にブロックされることがある。
全く最近はお節介が過ぎてめんどくさい。
SMTP に直接ログインしようとすると less secure だと言われて怒られるので、分かった分かった。その機能オフにしてくれ。オプトアウトしなくちゃいけない。そもそもなにも設定してない時点でオプトインになってるのが面倒なんだが
手作業でファイルを更新するよりdpkg-reconfigureを使う方法もある。
dpkg-reconfigureを使うとログが残りにくくてめんどくさいんですが、マニュアルにするにはこっちのほうが「ウケ」がいいかもしれないですね。
初期設定画面を起動
sudo dpkg-reconfigure exim4-config
初期設定画面のダイアログ形式でちまちま入れていく
ここだけ入れておく
あとは、お好きなようにいれる。 dpkg-reconfigure が終了したら。/etc/exim4/passwd.client
を編集する。
個人的な設定メモ
私は、以下のように設定した。
これでGmail経由で通知できる
sendmail 通知が出来るなら、あとは
- crontab の通知
- 再起動の通知
- ジョブ終了の通知
- ハードウェアの故障・異常の通知
など各種の通知をメールで受けれて便利ですね。
panic log がずっと送出される。
地味にめんどくさかったのがこのパニックログを消す方法
2019-01-01 15:35:09 socket bind() to port 25 for address ::1 failed: Cannot assign requested address: daemon abandoned
これは、私がサーバーのIPv6を止めて以来ずっと定期的に送られてくる。
実はこれ、過去のパニックログが残っていてログローテートしないことが原因らしい。マジすか exim4
/etc/exim4/update-exim4.conf.conf
# before # dc_local_interfaces='127.0.0.1; ::1' # after dc_local_interfaces='127.0.0.1'
設定を削除した後に、exim4を再起動
sudo update-exim4.conf sudo service exim4 restart
これで新しいログは出なくなるが、古いパニック・ログが残存しているとそれを送ってくる。
なので、古いログを削除する必要がある。
sudo rm /var/log/exim4/paniclog
2017-03-22 追記
ローカル配送と、Gmailのメッセージについて追記した。
2019-07-28 追記
「exim4 設定」でキーワードマッチしなかったので、キーワードを見直し
paniclog について記述を追加
参考資料
- https://wiki.debian.org/GmailAndExim4
http://www.exim.org/exim-html-current/doc/html/spec_html/ch-address_rewriting.html
2020-01-11
Google がGmailやアレコレを変えたのでこの設定を見直した
gmail と gsuite で若干の差異があるみたい。