スキップしてメイン コンテンツに移動

改訂版 Linux(Raspberry pi)で G-Mail を送信させる。

先日『Linux(Raspberry pi)で G-Mail を送信させる。』という記事を書いたのですが、思った様に行かず、色々と再挑戦していました。
その後に ssmtp は使わなくても、Raspberry pi の標準である exim4 で出来ることが分かったのでそちらで設定したのですが、色々とハマったのできちんと整理しておこうと思います。

で、ここで分かったことの一つに GUI は使わないからと、安易に jessie lite を使ってはいけないと言う事です。
単に GUI 関連のユーティリティなどがインストールされていないだけではなく、かなりの機能がインストールされていない様です。
あまり悩みたくない方は、多少データ領域を喰いますが、素直に通常盤の jessie や NOOBS をインストールされた方が良いでしょう。
今回インストールするものも通常の jessie ではプリインストールされているものばかりです。

ではまずは今回の目標を。
1.外部へのメールは送信だけで、少なくとも今回は外部からのメール受信は設定しない。
2.外部へのメールは G-Mail のメールサーバーを利用する。
3.外部へのメールは発信者は G-Mail のメールアドレスとする。
4.サーバーの内部ユーザへのメールはひとまず現状通り root のメールに集めるが、それを通常利用しているユーザにリレーし、そこから外部へ送信する。
出来れば、どの内部ユーザに向けて送信したメールかわかると嬉しい。

先ずは、メールコマンドが使える様にします。

$ sudo apt-get install bsd-mailx

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  exim4-base exim4-config exim4-daemon-light liblockfile-bin liblockfile1
提案パッケージ:
  mail-reader eximon4 exim4-doc-html exim4-doc-info spf-tools-perl swaks
推奨パッケージ:
  mailx
以下のパッケージが新たにインストールされます:
  bsd-mailx exim4-base exim4-config exim4-daemon-light liblockfile-bin liblockfile1
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。
2,233 kB のアーカイブを取得する必要があります。
この操作後に追加で 3,938 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main liblockfile-bin armhf 1.09-6 [18.2 kB]
取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main liblockfile1 armhf 1.09-6 [14.7 kB]
取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main exim4-config all 4.84.2-2+deb8u3 [502 kB]
取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main exim4-base armhf 4.84.2-2+deb8u3 [1,046 kB]
取得:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main exim4-daemon-light armhf 4.84.2-2+deb8u3 [578 kB]
取得:6 http://mirrordirector.raspbian.org/raspbian/ jessie/main bsd-mailx armhf 8.1.2-0.20141216cvs-2 [74.3 kB]                                               
2,233 kB を 21秒 で取得しました (106 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ liblockfile-bin を選択しています。
(データベースを読み込んでいます ... 現在 48720 個のファイルとディレクトリがインストールされています。)
.../liblockfile-bin_1.09-6_armhf.deb を展開する準備をしています ...
liblockfile-bin (1.09-6) を展開しています...
以前に未選択のパッケージ liblockfile1:armhf を選択しています。
.../liblockfile1_1.09-6_armhf.deb を展開する準備をしています ...
liblockfile1:armhf (1.09-6) を展開しています...
以前に未選択のパッケージ exim4-config を選択しています。
.../exim4-config_4.84.2-2+deb8u3_all.deb を展開する準備をしています ...
exim4-config (4.84.2-2+deb8u3) を展開しています...
以前に未選択のパッケージ exim4-base を選択しています。
.../exim4-base_4.84.2-2+deb8u3_armhf.deb を展開する準備をしています ...
exim4-base (4.84.2-2+deb8u3) を展開しています...
以前に未選択のパッケージ exim4-daemon-light を選択しています。
.../exim4-daemon-light_4.84.2-2+deb8u3_armhf.deb を展開する準備をしています ...
exim4-daemon-light (4.84.2-2+deb8u3) を展開しています...
以前に未選択のパッケージ bsd-mailx を選択しています。
.../bsd-mailx_8.1.2-0.20141216cvs-2_armhf.deb を展開する準備をしています ...
bsd-mailx (8.1.2-0.20141216cvs-2) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
systemd (215-17+deb8u6) のトリガを処理しています ...
liblockfile-bin (1.09-6) を設定しています ...
liblockfile1:armhf (1.09-6) を設定しています ...
exim4-config (4.84.2-2+deb8u3) を設定しています ...
Adding system-user for exim (v4)
exim4-base (4.84.2-2+deb8u3) を設定しています ...
exim: DB upgrade, deleting hints-db
exim4-daemon-light (4.84.2-2+deb8u3) を設定しています ...
bsd-mailx (8.1.2-0.20141216cvs-2) を設定しています ...
update-alternatives: /usr/bin/mailx (mailx) を提供するために自動モードで /usr/bin/bsd-mailx を使います
libc-bin (2.19-18+deb8u7) のトリガを処理しています ...
systemd (215-17+deb8u6) のトリガを処理しています ...


次のパッケージは本当に必要だったのかよくわかりません。
インストールせずに先に進んでうまくゆかなかったらインストールするのでも良いかもしれません。

$ sudo apt-get install libetpan17*
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
Note, selecting 'libetpan17' for regex 'libetpan17*'
以下のパッケージが新たにインストールされます:
  libetpan17
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
253 kB のアーカイブを取得する必要があります。
この操作後に追加で 736 kB のディスク容量が消費されます。
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libetpan17 armhf 1.5-2 [253 kB]
253 kB を 1秒 で取得しました (133 kB/s)      
以前に未選択のパッケージ libetpan17:armhf を選択しています。
(データベースを読み込んでいます ... 現在 48969 個のファイルとディレクトリがインストールされています。)
.../libetpan17_1.5-2_armhf.deb を展開する準備をしています ...
libetpan17:armhf (1.5-2) を展開しています...
libetpan17:armhf (1.5-2) を設定しています ...
libc-bin (2.19-18+deb8u7) のトリガを処理しています ...

で、最後がメール関連のユーティリティ

$ sudo apt-get install mailutils
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  guile-2.0-libs libgc1c2 libgsasl7 libkyotocabinet16 liblzo2-2 libmailutils4 libmysqlclient18 libntlm0 libunistring0 mailutils-common mysql-common
提案パッケージ:
  mailutils-mh mailutils-doc
以下のパッケージが新たにインストールされます:
  guile-2.0-libs libgc1c2 libgsasl7 libkyotocabinet16 liblzo2-2 libmailutils4 libmysqlclient18 libntlm0 libunistring0 mailutils mailutils-common mysql-common
アップグレード: 0 個、新規インストール: 12 個、削除: 0 個、保留: 0 個。
5,662 kB のアーカイブを取得する必要があります。
この操作後に追加で 22.6 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libunistring0 armhf 0.9.3-5.2 [253 kB]
取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main libgc1c2 armhf 1:7.2d-6.4 [122 kB]             
取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main guile-2.0-libs armhf 2.0.11+1-9 [2,162 kB]     
取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main liblzo2-2 armhf 2.08-1.2 [47.6 kB]          
取得:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main libkyotocabinet16 armhf 1.2.76-4 [289 kB]
取得:6 http://mirrordirector.raspbian.org/raspbian/ jessie/main mailutils-common all 1:2.99.98-2 [599 kB]
取得:7 http://mirrordirector.raspbian.org/raspbian/ jessie/main mysql-common all 5.5.54-0+deb8u1 [81.2 kB]
取得:8 http://mirrordirector.raspbian.org/raspbian/ jessie/main libntlm0 armhf 1.4-3 [19.7 kB]              
取得:9 http://mirrordirector.raspbian.org/raspbian/ jessie/main libgsasl7 armhf 1.8.0-6 [193 kB]
取得:10 http://mirrordirector.raspbian.org/raspbian/ jessie/main libmysqlclient18 armhf 5.5.54-0+deb8u1 [622 kB]
取得:11 http://mirrordirector.raspbian.org/raspbian/ jessie/main libmailutils4 armhf 1:2.99.98-2 [701 kB]
取得:12 http://mirrordirector.raspbian.org/raspbian/ jessie/main mailutils armhf 1:2.99.98-2 [572 kB]                                                         
5,662 kB を 6秒 で取得しました (815 kB/s)                                                                                                                     
以前に未選択のパッケージ libgc1c2:armhf を選択しています。
(データベースを読み込んでいます ... 現在 48981 個のファイルとディレクトリがインストールされています。)
.../libgc1c2_1%3a7.2d-6.4_armhf.deb を展開する準備をしています ...
libgc1c2:armhf (1:7.2d-6.4) を展開しています...
以前に未選択のパッケージ libunistring0:armhf を選択しています。
.../libunistring0_0.9.3-5.2_armhf.deb を展開する準備をしています ...
libunistring0:armhf (0.9.3-5.2) を展開しています...
以前に未選択のパッケージ guile-2.0-libs:armhf を選択しています。
.../guile-2.0-libs_2.0.11+1-9_armhf.deb を展開する準備をしています ...
guile-2.0-libs:armhf (2.0.11+1-9) を展開しています...
以前に未選択のパッケージ liblzo2-2:armhf を選択しています。
.../liblzo2-2_2.08-1.2_armhf.deb を展開する準備をしています ...
liblzo2-2:armhf (2.08-1.2) を展開しています...
以前に未選択のパッケージ libkyotocabinet16:armhf を選択しています。
.../libkyotocabinet16_1.2.76-4_armhf.deb を展開する準備をしています ...
libkyotocabinet16:armhf (1.2.76-4) を展開しています...
以前に未選択のパッケージ mailutils-common を選択しています。
.../mailutils-common_1%3a2.99.98-2_all.deb を展開する準備をしています ...
mailutils-common (1:2.99.98-2) を展開しています...
以前に未選択のパッケージ libntlm0:armhf を選択しています。
.../libntlm0_1.4-3_armhf.deb を展開する準備をしています ...
libntlm0:armhf (1.4-3) を展開しています...
以前に未選択のパッケージ libgsasl7 を選択しています。
.../libgsasl7_1.8.0-6_armhf.deb を展開する準備をしています ...
libgsasl7 (1.8.0-6) を展開しています...
以前に未選択のパッケージ mysql-common を選択しています。
.../mysql-common_5.5.54-0+deb8u1_all.deb を展開する準備をしています ...
mysql-common (5.5.54-0+deb8u1) を展開しています...
以前に未選択のパッケージ libmysqlclient18:armhf を選択しています。
.../libmysqlclient18_5.5.54-0+deb8u1_armhf.deb を展開する準備をしています ...
libmysqlclient18:armhf (5.5.54-0+deb8u1) を展開しています...
以前に未選択のパッケージ libmailutils4:armhf を選択しています。
.../libmailutils4_1%3a2.99.98-2_armhf.deb を展開する準備をしています ...
libmailutils4:armhf (1:2.99.98-2) を展開しています...
以前に未選択のパッケージ mailutils を選択しています。
.../mailutils_1%3a2.99.98-2_armhf.deb を展開する準備をしています ...
mailutils (1:2.99.98-2) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
libgc1c2:armhf (1:7.2d-6.4) を設定しています ...
libunistring0:armhf (0.9.3-5.2) を設定しています ...
guile-2.0-libs:armhf (2.0.11+1-9) を設定しています ...
liblzo2-2:armhf (2.08-1.2) を設定しています ...
libkyotocabinet16:armhf (1.2.76-4) を設定しています ...
mailutils-common (1:2.99.98-2) を設定しています ...
libntlm0:armhf (1.4-3) を設定しています ...
libgsasl7 (1.8.0-6) を設定しています ...
mysql-common (5.5.54-0+deb8u1) を設定しています ...
libmysqlclient18:armhf (5.5.54-0+deb8u1) を設定しています ...
libmailutils4:armhf (1:2.99.98-2) を設定しています ...
mailutils (1:2.99.98-2) を設定しています ...
update-alternatives: /usr/bin/frm (frm) を提供するために自動モードで /usr/bin/frm.mailutils を使います
update-alternatives: /usr/bin/from (from) を提供するために自動モードで /usr/bin/from.mailutils を使います
update-alternatives: /usr/bin/messages (messages) を提供するために自動モードで /usr/bin/messages.mailutils を使います
update-alternatives: /usr/bin/movemail (movemail) を提供するために自動モードで /usr/bin/movemail.mailutils を使います
update-alternatives: /usr/bin/readmsg (readmsg) を提供するために自動モードで /usr/bin/readmsg.mailutils を使います
update-alternatives: /usr/bin/dotlock (dotlock) を提供するために自動モードで /usr/bin/dotlock.mailutils を使います
libc-bin (2.19-18+deb8u7) のトリガを処理しています ...

後は設定になります。

$ sudo dpkg-reconfigure exim4-config 

最初の画面が MTAの使い方の選択ですが、以下のものを選択してください。

mail sent by smarthost; received via SMTP or fetchmail

次がシステムのドメイン名ですので、これはサーバーの名称が入力されているはずですのでそのまま 「.local」を追加してリターンしてください。

raspberrypi.local

で次がローカルのアドレスですのでそのままリターンで大丈夫。

127.0.0.1 ; ::1 

その後二つ続いて、ローカルからのリレーなどの話なので、空欄のままリターンします。

「メールを受け取るその他の宛先:」を

raspberrypi.local

「メールをリレーするマシン:」は空欄のままリターン。


そして、送信に利用する Google のサーバーの指定ですが、「::」とコロンが二つ必要です。注意してください。

smtp.gmail.com::587

その後も二つ続けて「No」を選択。
その次がメールボックスの選択ですが素直に

mbox format in /var/mail/

を選択すれば良いでしょう。
残りは全て「No」で良いです。


その後に「/etc/exim4/passwd.client」のファイルに以下を追記します。

gmail-smtp.l.google.com:あなたのメール@gmail.com:アプリケーションパスワード
*.google.com:あなたのメール@gmail.com:アプリケーションパスワード
smtp.gmail.com:あなたのメール@gmail.com:アプリケーションパスワード

送信に使う G-Mail のメールアドレスとそのアプリケーションパスワードです。
Google の アプリケーションパスワードはこちらを参照してください。

変更を反映させます。

$ sudo update-exim4.conf

これでひとまずは送信できるはずです。

$ date | mail -s "試験メール" あなたのメール@gmail.com

あなたの G-Mail にメールが届けがほぼ完成。

後は「/etc/aliases」が以下の様になっていると思うので、最後の2行を追記しましょう。
ユーザ「pi」はあなたが利用しているユーザIDに置き換えてください。

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root

root:  pi
pi:     あなたが転送先に指定したいメールアドレス

で同じ様に試験として

date | mail -s "試験メール1" root
date | mail -s "試験メール2" pi


それぞれのメールが上記の「あなたが転送先に指定したいメールアドレス」に転送されます。
メール送信者のメールアドレスは /etc/exim4/passwd.client で指定したメールです。
で、送信先が root@ホスト名.local となり、BCC: として /etc/aliases で指定した転送先にメールが転送されます。


コメント

このブログの人気の投稿

iPhone を日常使う上での注意(ちょっとした不具合を解消するには)

先日はバックアップの重要性について書きましたが、今日は日常の注意を書いて見たいと思います。
まずは充電の方法から。 皆さん、充電時にはどんなことに注意していますか?
充電は、できるだけバッテリーを使い切るぐらいまで行わず、できれば80〜90%で終了させましょう・・・・なんてやっていませんか?
以前にも充電について書きましたが、基本的には「気にする事は無い!」です。
好きな時に充電をし、好きな時に終えれば良いです。
上記の注意は「ニッケル系」のバッテリー、つまり市販の単三型などの充電式バッテリーについての注意です。昔はニッケルカドミウム、今ではニッケル水素のバッテリーですね。
これは、時々リフレッシュさせる必要があります(昔の人工衛星も年に2回ほどリフレッシュ運用というものを行っていました)。
しかし、現在携帯電話に使用しているリチウムイオン系のバッテリーでは其の様な事は必要ありません。
と言うより、ニッケル系の様なリフレッシュ運用はかえってバッテリーの寿命を縮める(充放電回数を無意味に増やす)だけです。
バッテリー一般の注意である、充電中に熱を持たない様に注意する(寝る時に布団や枕に覆われた状態で充電するなど)こと、電子機器一般の注意である日向や暖房機の前に放置しない、などを守れば十分です。
何故かは良く分かりませんが、昔の iOS では充電時のマークが、稲妻マーク(充電中)とプラグマーク(充電器に接続されているが充電はされていない:充電は終了している)に分かれていました。
今は同じ稲妻マークだけですが、ひょっとしたらプラグマークになるとあわてて充電器から外そうとする人がいるのを懸念しての仕様変更かもしれません。
基本的に「充電器に接続されている」「Wi-Fi に接続されている」「スリープ状態にある」という三つの条件を満たしていれば、1日に一回「iCloud による自動バックアップ」が実行されます。
一番条件の揃いやすいのは就寝時ですよね?
つまり少なくとも寝る前に充電を開始して、朝まで放置しましょうというのがアップルの考え方。その間にバックアップしておきますよという事ですね。

さてその寝る前にあなたは何かしていますか? 私はほぼ毎日、寝る前には動作しているアプリを全て終了させています。
「何のため?」それは
「メモリを解放するため」です。 メモリを解放するアプリ…

Apple ID の変更方法

2017/06/10 :追記

Apple ID の変更方法が変更されました。
以下の最新情報をご確認下さい。

アップルIDの変更

Apple ID をキャリアのメールアドレスなどで作成し、その後にキャリアのメールアドレスを変更してしまい、困っている方が多い様です。
皆さん Apple ID に利用しているメールアドレスを変更すれば、iPhone に使用している Apple ID のメールアドレスも自動的に変更されるものと、勘違いしている様に思います。

また、Apple ID はキャリアのものと勘違いしているのか、キャリアを変更したのだから、Apple ID もそのまま、次のキャリアメールのアドレスになると思っている方も、おられるようです。

Apple ID はあくまでもAppleが発行するIDです。
キャリアとは無関係で、キャリアにそのIDに関する情報が渡ることもありませんし、キャリアの情報がAppleに渡ることもありません。

IDに使用するメールアドレスを変更したいのであれば、自分でAppleのウェブサイトで手続きする必要があります。

https://appleid.apple.com/ja_JP

にアクセスすると、「Apple ID を管理」というボタンがあります。
そこで、現在の(あるいは勝手に変更してしまう以前の)メールアドレスでログインし、手続きをします。
ここで、新しく利用したいメールアドレスを追加すると、本人確認のメールがそのメールに届くので、メールに記載されているURLにアクセスすると、承認されます。
メールアドレスが承認されると、そのメールアドレスをIDに登録し直せます。

最終的にIDのメールアドレス変更直前に、iPhone(該当 iOS 機器やMac 全て)の iCloud と iTunes & App Store から一度ログアウトしてください。
その際に、iPhone にデータを残す必要はありません。
新しいメールアドレスの ID でログインすればまた同期されてデータが戻ります。
残してしまうと、再同期の際に間違ってマージしてしまい、データが二重登録される可能性があります。
もっとも再同期の際に間違えて、iPhone の(何もない)データで、iCloud を上書きすると、全てのデータが失われるので、それよりはマシですけど。

なお、使用…

同期とバックアップ

どうも iPhone や iPod Touch 、 iPad などで iTunes や iCloud との同期設定をきちんと行わず、バックアップなども行っていない方が多く居られる様です。
また、同期やバックアップすると、メールの設定や連絡先などのデータが無くなる、とかいうデマに振り回され、怖がっている方も多い様です。
そこで出来るだけ簡単に、その必要性とやり方を、書いておこうと思います。


まずバックアップの必要性。 これは何も言う事は無いはずです。
万が一 iPhone が故障したり、紛失したりした場合、このバックアップが無いと、全てのデータを失います。
バックアップが有れば、新しい iPhone でも、バックアップ時点の状態に戻せます。
バージョンアップ時も同じですし、新型への機種変の時も同じです。
バックアップが無ければ、初期状態から設定し直さなければいけません。
しかしバックアップを取った後に、受信したMMSメールや写真は、失います。
なので、出来るだけこまめにバックアップをする必要があります。
理想的には毎日行うことです。

次に同期。CDから iTunes に入れた音楽、逆に iPhone で購入した音楽、アプリなどは同期作業によって iPhone に入れたり iTunes にバックアップしたりします。
写真や動画なども同じです。
好きなものを持ち歩いたりするのであれば、同期は必要ですね。
同期の作業は、その始めのステップとして、バックアップを行いますから、バックアップのためにも、必要な作業となります。


現在は iCloud のサービスもあり、同期も重要項目です。
同期とは二つ以上のものを、同じ状態に保つ作業です。
現在の iPhone であれば、iCloud をその同期の中心にし、個々の機械(パソコンや iPhone )が同期を取ります。

iCloud は常に最新の状態が保たれます。
必要であれば、パソコンから iCloud のウェブサイトにアクセスして、利用することもできます。
しかしなぜか、iOS 機器からは、通常の iCloud のウェブ利用はできません。

連絡先などは、iCloud を利用する事で、グループ分けなどが簡単に出来ます。
こちらもなぜか iOS 上では、グループ分けの作業は出来ないのですが、iCloud で行ったグループ分けは利用出来ます。
ウェブサイト上で…