それマグで!

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

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

Deiban/Exim4通知メールをgmailで送出する。

メールの設定はめんどくさい

SMTPリレーとかSMTP Outbound port Blocking 25 ( OBP 25 ) だとかさ、めんどくさいんですよね。理解できない人に、「○○が必要で」などと説明するのもめんどくさい。

Gmail 経由で送信する。

というわけで、一番手っ取り早くて、無料で確実なのが Gmail のアカウントを作ってそこから創出するわけですよ。

Debian/Exim4 でGmail経由で送信

DebianだとPostfixではなくExim4が使われていて、これが軽量で、最低限のことは十分にできるので、Exim4でほとんど十分。

Postfix でやる場合

Postfix ではいぜんやったので そちらのログがある

OBP25でもあきらめない。自宅サーバーでPostfixでスパム判定されないメールを送る方法 - それマグで!

用意するもの

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

パスワードをちょっとだけ保護する。

もっとこう、暗号化したり出来たらいいんだけど。 せめて一般ーザーにはパスワード読めないようにしておく

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 だと言われて怒られるので、分かった分かった。その機能オフにしてくれ。オプトアウトしなくちゃいけない。そもそもなにも設定してない時点でオプトインになってるのが面倒なんだが

f:id:takuya_1st:20170322030907p:plain:w300

f:id:takuya_1st:20170322030930p:plain:w300

手作業でファイルを更新するよりdpkg-reconfigureを使う方法もある。

dpkg-reconfigureを使うとログが残りにくくてめんどくさいんですが、マニュアルにするにはこっちのほうが「ウケ」がいいかもしれないですね。

初期設定画面を起動

sudo dpkg-reconfigure exim4-config

初期設定画面のダイアログ形式でちまちま入れていく

ここだけ入れておく

f:id:takuya_1st:20170304001754p:plain:w300

あとは、お好きなようにいれる。 dpkg-reconfigure が終了したら。/etc/exim4/passwd.client を編集する。

個人的な設定メモ

私は、以下のように設定した。

f:id:takuya_1st:20170304004606j:plain:w300

f:id:takuya_1st:20170304004617j:plain:w300

f:id:takuya_1st:20170304004625j:plain:w300

f:id:takuya_1st:20170304004703j:plain:w300

これでGmail経由で通知できる

sendmail 通知が出来るなら、あとは

  • crontab の通知
  • 再起動の通知
  • ジョブ終了の通知
  • ハードウェアの故障・異常の通知

など各種の通知をメールで受けれて便利ですね。

2017-03-22 追記

ローカル配送と、Gmailのメッセージについて追記した。

参考資料