exim4のTLSエラー(エントロピー問題)

メールを送信する場合、exim4にアクセスし、SMTPを使用できるかユーザかどうかを認証します。その時、認証時にTLSを使用して経路を暗号化する場合に、認証に時間がかかりすぎてタイムオーバする現象が見られました。

いろいろ調べてみる内に、exim4をTLSモードで動かす場合に不具合がある事がわかりました。その不具合の内容と、対策を行ったのでまとめておきます。

exim4はGnuTLSを使って、TLSセッションを初期化して、24時間ごと新たにDiffie-Hellmanパラメータを造るために、エントロピーを消費します。エントロピーの十分な量が利用できないと、Diffie-Hellmanパラメータを造る事ができません。

SMTP接続時に、STARTTLSコマンドを発行したあとに反応がない場合、エントロピーが枯渇している恐れがあります。エントロピーの状態を調査するには、/proc/sys/kernel/random/entropy_availに設定されている値を確認します。
もし、その値が1000以下なら、エントロピーが足らないためにこの問題が発生しています。

解決方法としては、無理やりエントロピーを増やす手法で対応します。

  1. /proc/sys/kernel/random/entropy_availの値を監視する
  2. 値が、3000以下ならエントロピーを増やす
  3. この作業をcronを使って定期的に実行します。

まず、必要なパッケージ「randomize-lines」をインストールします。次に、shellを用意します。

スポンサーリンク




entropy_regenerate_cron.shの内容

#!/bin/bash

entropy=`cat /proc/sys/kernel/random/entropy_avail`

while [ ${entropy} -lt 3000 ]
do
  find / /usr /var/ /home -xdev -type f -print0 | rl -0 -c 1000 | xargs -0 cat > /dev/null
  entropy=`cat /proc/sys/kernel/random/entropy_avail`
done

cron登録

kuroboxfo:~# crontab -e

登録内容

* * * * * /root/ACTION_SH/entropy_regenerate_cron.sh
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする