Raspberry Piにメールサーバを立ててメールを送信できるようにする
概要
Raspberry Piにメールサーバを立てれば、Raspberry Piのサーバから任意のアドレスにメールを送信できるようになります。ルータでポート開放すれば、メールを受信できるようになり、オリジナルのメールアドレスを何本も作ることができるようになります。今回はlogwatchを設定したことに伴い、メールでlogwatchの結果を受信したかったのでメールサーバを立てました。その手順を紹介します。
IP・ドメインの取得
本来であれば固定IP・ドメインをお金を支払って取得するべきなのだと思いますが、個人の自宅サーバにそこまでするのはもったいないです。邪道かもしれませんが、契約している固定回線のグローバルIPに無料のDDNSサービスを適用することで逃れようと思います。詳細は別途記述。
メールサーバソフトの選定
いくつかメールサーバはあるようですが、以前に自宅サーバを運用していたときに使用したこともあるpostfixを使用します。Linuxサーバでは頻繁に使われているメールサーバで、ネット検索するといくらでも情報が出てきます。ここでは、最低限の設定を紹介していきます。
postfixインストール・設定手順
1.apt-getコマンドでインストール
sudo apt-get install postfix
・『メール設定の一般形式』を聞いてくるので、ここでは『インターネットサイト』を選択 ・『システムメール名』は自分の使っているドメイン名を登録
2.設定ファイルの編集
"/etc/postfix/main.cf"
以下の記載を追加。
relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = plain smtp_tls_security_level = may
"/etc/postfix/sasl_passwd"
上記ファイルを新規作成して、以下を記載して保存。
[smtp.gmail.com]:587 gmailアドレス:gmailパスワード
アクセス権限の変更
パスワードが記載されている上記passwdファイルはアクセス権限を設定して見えないように変更。
sudo chmod 0600 /etc/postfix/sasl_passwd
postmapを実行
sudo postmap /etc/postfix/sasl_passwd
3.sendmailで送信してみる
sendmail -t メールアドレス
...送信されない。ログファイルを調べてみると以下のようなメッセージが表示されていました。
status=bounced (host gmail-smtp-in.l.google.com[2404:6800:4008:c03::1a] said: 550-5.7.1 [240d:1e:72:c200:d260:cba4:c335:d471] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication.
gmailをsmtpのリレーとして活用させていただくには、もっと設定が必要のよう...
4.gmailにsmtpリレーしてもらう設定
上記エラーメッセージを調べてみるとどうもIPv6に対応していないシステム上でIPv6の方式でメールを送信しようとしていたよう。IPv4にするように設定ファイルを変更。
inet_protocols = ipv4
変更後に、再度メール送信試験をしてみると、今度は以下のメッセージが発生。
SASL authentication failed; cannot authenticate to server smtp.gmail.com[***.***.***.***]: no mechanism available
調べてみると、どうも認証方式に必要なライブラリが足りていない模様。以下のコマンドで必要なsaslのライブラリをインストールする。
sudo apt-get install sasl2-bin sudo apt-get install libsasl2-modules
今度は以下のようにユーザー名とパスワードが異なるとのメッセージが発生。
Username and Password not accepted. Learn more at?535 5.7.8 https://support.google.com/mail/?p=BadCredentials
ユーザー名もパスワードも間違っていないのになぁと思いながら、更にググって調べていくとどうもgoogleアカウントの認証方法を2段階認証として、gmail用のアプリパスワードを発行すれば、できそうな記述を発見。早速適用してみる。2段階認証の設定方法は以下リンク先を参照。 https://support.google.com/accounts/answer/185839?co=GENIE.Platform%3DDesktop&hl=ja これに合わせて、"/etc/postfix/sasl_passwd"も以下のように変更
[smtp.gmail.com]:587 gmailアドレス:gmailアプリパスワード
その後に、設定を反映させるために以下コマンドを打つ。
sudo postmap /etc/postfix/sasl_passwd sudo /etc/init.d/postfix restart
ここまで来て、再度メールを送信してみると、やっとのことでメールの送信が完了。長かった...
Jan 4 00:49:09 raspberrypi postfix/smtp[8147]: 25231819EA: to=<xxxxxxxx@gmail.com>, relay=smtp.gmail.com[xxx.xxx.xxx.xxx]:587, delay=1195, delays=1192/0.12/1.3/1.4, dsn=2.0.0, status=sent (250 2.0.0 OK 1578066549 m128sm69072665pfm.183 - gsmtp) Jan 4 00:49:09 raspberrypi postfix/qmgr[8105]: 25231819EA: removed```
まとめ
Raspberry Piでメールサーバを立てて、メールを送信できるようになるまでの手順を紹介しました。gmailのsmtpを経由させてもらう設定に少々てこずりましたが、これでlogwatchがメールで送られるようになりますし、自分だけのメールアドレスを持つことができるようになりました。
参考サイト
kaeruko.hatenablog.com qiita.com kkv.hatenablog.com www.server-memo.net
↓リレー設定 akira-arets.blogspot.com
↓『no mechanism available』が出た時の対処方法 sendgrid.kke.co.jp
↓so-netのsmtpサーバにリレーしてもらうpostfixの設定。本記事では紹介しませんでしたが、うちのプロバイダのso-netのメールサーバを経由するのに必要な設定をするのに参考にさせてもらいました。こちらの方が少しハードルは低いかも。 journal.lampetty.net www.castellaroll.net
Logwatch設定
概要
ラズベリーパイで自宅サーバーを運用し始めましたが、外部公開し始めたのに合わせてLogwatchを設定しました。Logwatchがなければ、サーバーの状態や外部からのアクセス状況が分かりませんが、Logwatchを導入すれば定期的にメールで教えてくれるので自宅サーバーの状況が把握しやすくなります。
インストール・設定手順
1.apt-getでlogwatchをインストールする。
sudo apt-get install logwatch
2.インストールが完了したら設定ファイルをコピー。
cp -p /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf
3.設定ファイルを編集。以下の設定を実施。
参考サイト①を大いに活用させていただきました。
・MailTo = "自分のメールアドレス"
・Detail = Hight
4.logwatchをテストしてみる。
logwatch --output stdout
これを実行したら、下記のようなエラーが発生...
/var/cache/logwatch No such file or directory at /usr/sbin/logwatch line 643.
エラーメッセージでググってみると、メッセージどおり単純にディレクトリがないことが問題のよう。
参考サイト②を参照して無事解決しました。対処方法は以下のとおり。
sudo mkdir /var/cache/logwatch
参考サイト
以下は、設定にあたって参考にしたメモ。
① 設定方法を参考にさせてもらったページ
https://www.server-memo.net/tips/server-operation/logwatch.html
② エラーが出た時の対処方法
https://serverfault.com/questions/391776/var-cache-logwatch-no-such-file-or-directory-at-usr-sbin-logwatch-line-633
arduino micro と arduino nano でのシリアルポートセットアップ方法の違い
中華arduino nano互換ボードとラズベリーパイとの間でシリアル通信する際に少々てこずったのでメモ。
中華arduino microでは以下のようにプログラムを作成。何故かはあまり理解していないが、
con = serial.Serial(serialDeviceName, baudrate, timeout=0.2, rtscts=True, dsrdtr=True) # ポートのオープン(timeoutの設定は適当、rtsctsとdsrdtrはTrueにしておかないとArduinoMicroとは通信できない)
一方で、中華arduino nanoでは以下のように記述しなければ、シリアル通信できなかった。
con = serial.Serial(serialDeviceName, baudrate, timeout=0.2, rtscts=False, dsrdtr=False) # ポートのオープン(timeoutの設定は適当、rtsctsとdsrdtrはFalseにしておかないとArduinoNanoとは通信できない)
本家のarduinoでは、このようなことは起こらないのかもしれないが...
Xprotolab Plainの使い方
XprotolabPlainという3000円程度でパソコン/スマホをオシロスコープができるデバイスがあります。Windowsでも、Androidスマホにも対応しており、使用場所を選ばず家での開発には重宝します。今は在庫切れのようですが、手軽にオシロスコープ機能を導入できて便利ですよ。
https://www.elefine.jp/SHOP/XprotolabPlain.html
Windows上での使えるようになるまでの設定を紹介します。
① リンク先からWindows用のアプリケーションインストーラをダウンロード
② ダウンロードしたファイルでインストール
③ リンク先からデバイスドライバーインストールアプリをダウンロード
④ Xprotolab Plainをパソコンに接続
⑤ 上部のプルダウンメニューで"XScope"が選択されていることを確認して"Install WCID Driver"をクリック
⑤ ②でインストールしたアプリケーションを起動 → 波形が表示されるようになれば完了。
※上記の図はインストール後に起動した状態の図。デバイスドライバーをインストールした後には不明機器の対象が見えなくなるよう。
中華Arduino Nano書き込み設定
3年前くらいにe-bayで買った中華Arduino Nano互換機を久しぶりに引っ張り出して使用したときのメモ。Arduino IDEで書き込む際には、以下の設定が必要。
メニューバーの"ツール"中のボード設定を以下のように設定する。
・ボード : ArduinoNano
・プロセッサ: ATmega168
・シリアルポート : 該当COMポート
にしても、当時5個で11.7$。110円/$だったとして、1個257円ですから、とんでもなく安いですね。3年間放置していましたが、未だに使用できるので、少量しか検証していないものの品質的にも大きな不具合はなし。海外メーカーの製造実力恐るべし。
今でも似たような商品の値段はあまり変わりなし。
日本で正攻法でArduinoNanoを購入したら、約3000円。約10倍...
https://www.switch-science.com/catalog/2554/
お盆中の個人ワーク
何度もブログを始めてもなかなか続かない...
お盆の最中、嫁が実家に帰っているため一人で普段できないパソコン作業を済ませました。昨日から続けて何とか本日中に片をつけることができました。そういえば、この時期はこんなことをやっていたなと懐かしい気持ちになりながら、パソコンの中を整理整頓。すっきりきれいにしてまた頑張ります。
◆対象
・写真データ
・動画データ
・オーディオブック
・その他もろもろ
結婚してから料理に力を入れるようになりました。これまで買ってきたものばかリでしたが、多少は自分で料理ができなきゃ家事の分担はできませんしね。昨日は肉じゃがを作りましたが、今日は鯖の切り身を焼いて少しずつレパートリーを増やしていきます。
もう少し魚料理のレパートリーを増やしたいですね。
ブログ開始、免許更新とスマホ修理
とあるエンジニアの日々の経験や調べものを記録しておく備忘録としてブログを始めました。続かないかもしれませんが、少しでも続けられるように頑張ります。
今日は、自動車免許の更新のため「運転免許姫路更新センター姫路署」へ。
日曜日でも更新手続きさせてもらえるので便利なものです。更新はがきを持って行って、簡易の視力検査、写真撮影、30分の講習を経て、およそ1時間ちょっとで更新完了。
その後は、スマホを修理してもらいに、梅田へ。
先日、出張のついでにディスプレイのひび割れ、タッチパネルの誤反応を直してもらうために修理してもらったものの、ホームボタンのケーブルを誤って切ってしまったようで、再度の来店を求められていたので、その修正を受けに再度の来店。修理をミスられてしまったのは勘弁して欲しいですが、結構マイナーな機種(HTC U11)まで即日修理してもらえるのはありがたい。今回は、むしろミスられてしまったことで、傷ついていたフレーム(?)まで交換してもらえて、スマホがピカピカに若返りました。スマートまっくすさん、ありがとうございました。