それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Deiban/Exim4を設定して、gmailで通知メールを送出する。

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 について記述を追加

参考資料

2020-01-11

GoogleGmailやアレコレを変えたのでこの設定を見直した

gmail と gsuite で若干の差異があるみたい。