ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

debianサーバでメールを送る(exim4編)

(2011-12-16 初稿 - 2021-05-23 追記)

はじめに

★★自宅のサーバをRaspberry Pi3に変更したので、内容を見直した(2018-02-03)。

サーバがメール送信の機能を持つと、エラーの発生や定期的な監視等で異常があった際にメール送信で知らせることができて便利。

ここでは、debianまたはRaspberry Piのサーバにexim4を設定し、gmailの送信機能を利用して、メールを送る方法について記載する。

なお、筆者の試した環境は以下のとおり。

os: debian squeeze raspbian stretch
kernel: 2.6.32-5 4.9.59-v7
exim4: 4.72-6+sueeze2 4.89

筆者は、デスクトップにはdebianを利用しているが、サーバには電気代を考えてRaspberry Piを利用している。
debianは、セキュリティホールへの対応が速く、堅牢で、安定性に掛けてはもっとも優れたDistributionのひとつだと思う。

exim4 の設定

ここでは、exim4 の設定を行う。
デフォルトでインストール済みだと思うが、インストールしていない場合は、以下のコマンドでインストールする。

$ sudo aptitude install exim4

設定に関しては、以下のサイトを参考にさせていただいた。多謝

exim4のインストール後、以下のとおり設定する。
なお、ここでは、スマートホストとして、gmailを設定する。

$ sudo dpkg-reconfigure exim4-config
* メール設定の一般的なタイプ ->スマートホストでメール送信: SMTP または fetchmail で受信する
* システムメール名 ->localhost
* 入力側 SMTP 接続をリスンする IP アドレス ->127.0.0.1
* メールを受け取るその他の宛先 ->未入力
* メールをリレーするマシン ->未入力
* 送出スマートホストのIPアドレスまたはホスト名 ->smtp.gmail.com::587
gmail.com の後の「コロンが2つあること」に注意 ★*
* 送出するメールでローカルメール名を隠しますか ->いいえ
* DNS クエリの数を最小限に留めますか (ダイヤルオンデマンド) ->いいえ
* ローカルメールの配送方式 ->/var/mail内のmbox形式
* 設定を小さなファイルに分割しますか ->いいえ

上記の設定が面倒なときは、直接編集しても良い。

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='raspberry'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.gmail.com::587'
CFILEMODE='644'
dc_use_split_config=''
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

続いて、/etc/exim4/passwd.client を編集する。

(2021-05-23 追記)

以下の設定でメールを送信する場合は、Googleアカウントで「安全性の低いアプリのアクセス」で「安全性の低いアプリの許可: 有効」をONにしないとメールが送れない。

(追記  終了)

$ sudo vi /etc/exim4/passwd.client
gmail-smtp.l.google.com:ユーザ名@gmail.com:パスワード
*.google.com:ユーザ名@gmail.com:パスワード
smtp.gmail.com:ユーザ名@gmail.com:パスワード

(2021-05-23 追記)
2段階パスワードでの設定は以下のページにありました。多謝

上記サイトを参考にGoogleアカウントの他に、アプリのパスワードも取得する。
取得した場合の設定は、以下のとおり。

$ sudo vi /etc/exim4/passwd.client
gmail-smtp.l.google.com:ユーザ名@gmail.com:Googleパスワード:アプリパスワード
*.google.com:ユーザ名@gmail.com:Googleパスワード:アプリパスワード
smtp.gmail.com:ユーザ名@gmail.com:Googleパスワード:アプリパスワード

(追記 終了)

上記の設定が終わったら、以下のコマンドで設定を反映させる。

$ sudo update-exim4.conf

テストする

mailコマンドで、以下のように入力して、正常に動作するか確認する。

mail -s "mail test" 送信先アドレス
メールのテストだよ
.
Cc:

mail本文の終了は、Ctrl+D。
無事に送信できたら、exim4 の設定は完了。

Tips

せっかく設定したので、シェル・スクリプト等から呼び出すときのコマンド例を挙げておく。
シェルスクリプト等からの実行には、 enter等の入力しない非対話的な動作が必要。

通常のテキストファイルの送信

$ mail -s title メールアドレス < 送信したい.txt

ファイルを添付して送信(エンコードして送信)

$ uuencode moto.html convert.html | mail -s title メールアドレス

なお、uuencodeがインストールされていない場合は、以下のコマンドでインストールする。

$ sudo apt install sharutils

mailコマンド自体の操作については、manコマンドで調べてね(手抜き…汗)。

(2021-05-23 追記)

メールが送信できないときは、以下にlogが出力されるので調べてね。

$ sudo tail -f /var/log/exim4/maillog

まだ、まだ、続く…かも…

関連ページ