2021/07/17(土)debianのexim3で外部メール送信できるようにする

2021/07/17 20:56 PC(Linux)
もともと自宅サーバではqmailやsendmailを動かしていたのだが、Debian 8.0(jessie)切替時にさっぱり切ってしまった。

現状exim4が動いているのだが、外部にメール送信ができない。

zabbixとかは独自にSMTPサーバが登録できるのでごまかしていたが、
ここ来て流石にサーバ内からメールを投げたいケースが出てきた。

ということで、外部にメール送信できるようにする

基本的に下記の手順通りでよし。

Exim4/外部SMTPサーバー経由でメールを送信したい(Debian) - Void of Knowledge

mailコマンドで送信できることを確認。
echo "test" | mail -s "test title" -r from@example.com to@example.com
今度時間あるときに転送周りとcronメールも整理しよう。

2021/07/17(土)WebサーバをHTTPSに対応させる

2021/07/17 19:42 PC(Linux)
時間がないのでメモだけ。

最近はLet's Encryptの証明書発行もかなり簡単にやれるというので、当サイトもついに対応することにした。

基本的には下記のやり方通り。

Debian9 + Apache に"Let's Encrypt"をセットアップしてみた!! : プログラミング Tips

ただし、certbotコマンドについてはサブドメインがあるので、
#certbot certonly --webroot -w /var/www/html -d dt8.jp www.dt8.jp
とした。

また、SSLCipherSuiteの設定は息が長くなるよう、
mod_sslで使用するSSLCipherSuiteの設定を詰めてみる '20 - Qiita
に従った。

ローカルからのアクセスでhttps://~が表示されることを確認。

問題なさそうなので、ファイアウォール設定を変更しIPv4 ポート443の外部アクセスを開けた。

/etc/iptables/rules.v4
を編集して、
#netfilter-persistent reload
サーバ入れ替えた際に、かなり雑に作業をしてしまったのでiptablesの管理方法をちゃんと定義できてない。
年末までになんとかしよう。

SSL Server Testで、一応A判定が出ていることを確認。
https://www.ssllabs.com/ssltest/analyze.html?d=www.dt8.jp

さらに証明書更新したら、自動的にサーバを再起動してメールを送る設定にする。

/etc/letsencrypt/renewal-hooks/

に適当なシェルを作成し、
#!/bin/bash
/usr/sbin/apache2ctl restart
/bin/echo "証明書を更新し、Webサーバを再起動しました。" | /usr/bin/mail -s "証明書更新・Webサーバ再起動通知" -r mailaddress@example.com mailaddress@example.com
とか書く。

クリティカルなサービスがないので完全自動で良いし、restartで安全に。
当たり前だが、落とせないサービスならこんな事やってはいけない。

念の為動作テストする。
#certbot renew --force-renewal
証明書の期限更新~Webサーバの再起動~メール送信の一連の処理が行われることを確認。
更新制限があるので、何度もテストすのはNG。

あとは、サイト内にhttp://~から書いているところがあるかもしれないので、気づいたら直す。
そもそもリニューアルを予定しているのでちまちまやってく。

半年以上安定したら、mod_rewriteでhttp→httpsに振るようにしたい。

[2021/10/14追記]
上の手順で十分だと思っていたら、3ヶ月後の証明書更新が見事に失敗していた。

/var/log/letsencrypt/letsencrypt.logに出力されたエラー内容は、下記。

certbot.errors.MissingCommandlineFlag: Missing command line flag or config entry for this setting:
Select the webroot for dt8.jp:
Choices: ['Enter a new webroot', '/var/www/html']

(You can set this with the --webroot-path flag)

2021-10-13 17:06:46,513:ERROR:certbot.renewal:All renewal attempts failed. The following certs could not be renewed:
2021-10-13 17:06:46,514:ERROR:certbot.renewal:  /etc/letsencrypt/live/dt8.jp/fullchain.pem (failure)
dt8.jpのエントリがないと言われる。
あれ、そうなのか… force-renewalが成功したのはなんでだろう。

/etc/letsencrypt/renewal/dt8.jp.conf
の、
[[webroot_map]]
に、
www.dt8.jp と同じ内容で、dt8.jpの行を追加。
#certbot renew --dry-run
したら通るようになったので次のcronを待って、証明書が更新されることを確認した。
OK キャンセル 確認 その他