let's encryptの無料サーバ証明書を、httpsサーバ(このサイト)や他サイトでも利用していて、webだけではなくて、smtp(s)でも流用できるので使っていた。
メールも受信(server)・送信(client) がデフォルトで smtps/starttls を利用するようになってきているようで、
グローバルにauthorized された証明書を使っているほうが、いろいろ良さそう。
imapsは相変わらずプライベートCA+証明書を利用しているけど。
先日、2021/09でlets encrypt の証明書のCA問題の影響を受けて、iOSの標準のメールアプリからメールサーバ(smtps)の接続がうまくいかない(メールが送れなく)なった。imapsでの接続でメールの取得・閲覧はうまくいっているに。
ということでいろいろ調べてみると、openssl 1.0.2 ではCA証明書への辿りの解釈に難があるよう。
で、問題を起こしているのは sendmail が共有ライブラリとして libssl.so をリンクしていてその中身が 1.0.2(またはそれ以前)のホストばっかり!ということに気づいた。opensslは 1.1系を /usr/local/bin/openssl にインストール,libssl.so は /usr/local/lib/ あたりにいたが、sendmailのを作成したときには /usr/lib/libssl.so あたり(/usr/bin/openssl は version 1.0.2!) の共有ライブラリをリンクしていた!
なので対応としては、
- openssl 1.1系列(今の最新は1.1.1l)をコンパイルして、共有ライブラリのバージョン(1.1.1)を用意する。
- sendmailを作成し直して、openssl(libssl.so or libssl.a) をリンクし直す。
sendmailも8.15.2と思ったら、8.17.1が最新なのでこれも sourceから持ってきて recompileした。
$src/devtools/Site/site.config.m4 の設定をよくみて、、、。
EOLになってしまっている、FreeBSD-11.4だと、
APPENDDEF(`conf_smrsh_ENVDEF', `-DCMDDIR="\"/usr/local/libexec/sm.bin\""') APPENDDEF(`conf_smrsh_ENVDEF', `-DPATH="\"/bin:/usr/bin\""') define(`confEBINDIR',`/usr/local/libexec') define(`confMANROOT',`/usr/local/man/cat') define(`confMANROOTMAN',`/usr/local/man/man') define(`confMBINDIR',`/usr/local/sbin') define(`confSBINDIR',`/usr/local/sbin') define(`confUBINDIR',`/usr/local/bin') define(`confNO_STATISTICS_INSTALL',`True') define(`confHFDIR', `/usr/local/share/sendmail') APPENDDEF(`conf_sendmail_ENVDEF', `-DTCPWRAPPERS') APPENDDEF(`conf_sendmail_LIBS', `-lwrap')" APPENDDEF(`conf_sendmail_ENVDEF', `-DNETINET6') APPENDDEF(`conf_libmilter_ENVDEF', `-DNETINET6') APPENDDEF(`conf_libsm_ENVDEF', `-DNETINET6') APPENDDEF(`conf_sendmail_ENVDEF', `-DDANE') APPENDDEF(`conf_sendmail_ENVDEF', `-I/usr/local/include') APPENDDEF(`conf_sendmail_ENVDEF', `-DSASL=2') APPENDDEF(`confLIBDIRS', `-L/usr/local/lib') APPENDDEF(`conf_sendmail_LIBS', `-lsasl2') APPENDDEF(`conf_sendmail_ENVDEF', `-DUSE_BLACKLIST') APPENDDEF(`conf_sendmail_LIBS', `-lblacklist') APPENDDEF(`conf_libmilter_ENVDEF', `-DMILTER') APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER') APPENDDEF(`conf_sendmail_ENVDEF', `-DHASSRANDOMDEV') APPENDDEF(`confINCDIRS', `-I/usr/local/include') APPENDDEF(`confLIBDIRS', `-L/usr/local/lib') APPENDDEF(`confLDOPTS', ``-Wl,-rpath=/usr/local/lib'') APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -DTLS_EC') APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto') APPENDDEF(`conf_sendmail_ENVDEF', `-DPICKY_HELO_CHECK')sendmail-8.15のときとの違いは、、、'_FFR_TLS_EC' だったものが 'TLS_EC'と正規?なパラメータ名になったこと、くらいか。いつものように、milter,sasl2,あたりをlinkすることも忘れないように。
sendmailを展開した $srcトップ にて、'sh ./Build;sh ./Build install'
実はこの作業の前に FreeBSD 11.2 -> 11.4, perlの入れ直し、gccの入れ直しなど大工事あり・・・
それにしても、、、古い OSを使い続けるとどんどん大変になる。