メール送信で、認証情報を暗号化する SMTPS で動作しているか、ログから確認する

ALL
スポンサーリンク

メール送信時のSMTP認証で、認証情報を暗号化する SMTPS で動作しているか、ログから確認します。
メールサーバ立ち上げ時のテスト等で確認してみて下さい。

初めに、/etc/postfix/main.cf で次の行を追加し、postfix で再読み込みしてください。

smtpd_tls_loglevel = 1

その後、SMTPS で通信が行われると、次のように Anonymous TLS connection established で始まるログが出力されます。
この行が無い場合は、認証情報が暗号化されていない、素の SMTP で通信しています。

Anonymous TLS connection established from XXXXXXX[xx.xx.xx.xx]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

既に運用中のメールサーバで、SMTPSのみの運用にする場合、既存ユーザにどの程度影響が出るか、気になります。
ユーザが SMTPS で通信しているかどうかをチェックするスクリプトを用意しました。

check_smtps.pl

open( IN , $ARGV[0] );
while( <IN> ){
    $line = $_;
    $line =~ s/\r\n]+//;
    if( $line =~ /postfix\/smtpd\[(\d+)\]: connect from .+\[(.+?)\]/ ){
        push @lists , $1;
        $info{ "$1-ip" } = $2;
    }
    if( $line =~ /postfix\/smtpd\[(\d+)\]: Anonymous TLS connection established .+ (.+) with cipher (.+)/ ){
        $info{ "$1-cipher" } = "$2 $3";
    }
    if( $line =~ /postfix\/smtpd\[(\d+)\]:.+sasl_username=(.+)/ ){
        $info{ "$1-user" } = $2;
    }
}
close( IN );
for( $i = 0 ; $i < @lists ; $i++ ){
    if( $info{ "$lists[$i]-user" } ne "" ){
        print "IP = " . $info{ "$lists[$i]-ip" } . " , USER = " . $info{ "$lists[$i]-user" } . " , CIPHER = " . $info{ "
$lists[$i]-cipher" } . "\n";
    }
}

perl check_smtps.pl /var/log/maillog を実行して下さい。

接続元IP、ユーザ名、SMTPSの暗号化方式が次のように表示されます。

IP = xx.xx.xx.xx , USER = aaaa , CIPHER = TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

CIPHER の個所が空の場合、暗号化無しの SMTP です。

IP = xx.xx.xx.xx , USER = bbbb , CIPHER = 

以上、メール送信時のSMTP認証で、認証情報を暗号化する SMTPS で動作しているか、ログから確認する方法でした。

参考

メールサーバでユーザ認証の暗号化を強制したときの話。(設定とかでなくログの読み方) – Qiita
CentOS6.9/CentOS7.4でメール関連のSSLログの取得および調査 – Qiita

コメント