uzullaがブログ

uzullaがブログです。

Postfixのsmtpsでinappropriate fallbackとか言われた話

概要

CentOS7+Postfix 2.10.1(+openssl-libs-1.0.1e-34.el7_0.6)とWindowsThunderBird 31.3.0で接続したときに、smtpsがうまくいかなかった。
エラーログ的には以下の様なもの。

Jan 14 00:19:38 localhost postfix/smtps/smtpd[1234]: connect from ***.jp[***.***.***.***]
Jan 14 00:19:38 localhost postfix/smtps/smtpd[1234]: SSL_accept error from ***.jp[***.***.***.***]: -1
Jan 14 00:19:38 localhost postfix/smtps/smtpd[1234]: warning: TLS library problem: 1234:error:140A1175:SSL routines:SSL_BYTES_TO_CIPHER_LIST:inappropriate fallback:ssl_lib.c:1496:
Jan 14 00:19:38 localhost postfix/smtps/smtpd[1234]: lost connection after CONNECT from ***.jp[***.***.***.***]
Jan 14 00:19:38 localhost postfix/smtps/smtpd[1234]: disconnect from ***.jp[***.***.***.***]

抜粋すると

warning: TLS library problem: 1234:error:140A1175:SSL routines:SSL_BYTES_TO_CIPHER_LIST:inappropriate fallback:ssl_lib.c:1496:

これ。

まとめ

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

このように指定したらなおった。

あるいは、TLSv1だけ書くのでもよさそうだが、こちらが今ドキの書き方である。(後述のドキュメント参照)

説明

DovecotはちゃんとTLSできたけど、PostfixだけうまくTLSの接続がいけなかった。

ログの単語だけ見て、Cipherの種類をかえたらいけるかなとおもったけど、Postfixでそこらへんいじるの聞いたことないし、ほぼ同じ設定でCentOS5だと動いたからOpenSSL周りだろうなーと思い、とりあえず周辺であるsmtpd_tls_mandatory_protocolsをごちゃごちゃいじったらなおった。

smtpd_tls_mandatory_protocolsはmain.cfなどで指定できる

http://www.postfix.org/postconf.5.html#smtpd_tls_mandatory_protocols


TLSv1は相当昔にできたものだし、それにSSLv3はPOODLEで滅んでいるので実際このようにすべきだが、お客様のクライアントが異常に古いのはよくある話なので、これでクレームが付かないかが怖い。

あとがき

カッとなってCentOS7をいれると、やっぱりまだ慣れなくてめんどう。