SMTPS, IMAPS, POP3Sの設定を行う

Courier Mail Server ではSMTP, IMAP, POP3について、
STARTTLS/○○ over SSLによる通信の暗号化をサポートしています。


今回はこのあたりの設定方法を少し整理しておきます。自分用メモです。

対象設定ファイル


設定する必要がある設定ファイルは以下の通りです。

  • SMTPS ( STARTTLS / SMTP over SSL )
    • /etc/courier/esmtpd
    • /etc/courier/esmptd-ssl
  • IMAPS ( STARTTLS / IMAP over SSL )
    • /etc/courier/imapd-ssl
  • POP3S ( STARTTLS / POP over SSL )
    • /etc/courier/pop3d-ssl

サービスの起動


起動時にサービスを有効にする必要があるため、
以下の設定を行う必要があります。

  • /etc/courier/esmtpd
    • 「ESMTPDSTART=YES」とする
  • /etc/courier/esmtpd-ssl
    • 「ESMTPDSSLSTART=YES」とする
  • /etc/courier/pop3d-ssl
    • 「POP3DSSLSTART=YES」とする
  • /etc/courier/imapd-ssl
    • 「IMAPDSSLSTART=YES」とする

STARTTLSを使う場合


IMAP, POP3でSTARTTLSを使う場合には、以下の設定しておきます。

  • /etc/courier/pop3d-ssl
    • 「IMAPDSTARTTLS=YES」とする
  • /etc/courier/imapd-ssl
    • 「IMAPDSTARTTLS=YES」とする

サーバー証明書の設定


TLS_TRUSTCERTS」「TLS_CERTFILE」を設定します。
サービスごとにそれぞれ記述します。(esmptd/esmtpd-ssl/pop3d-ssl/imapd-ssl)


自分で作成した証明書を設定する場合は、ここに配置した証明書のパスを書けばOK。

自己署名のサーバー証明書を作り直してみる


自己署名されたサーバー証明書が予め配置されるようになっています。
以下のコマンドを使う事で、再度サーバー証明書を作成することができます。

  • SMTP用(/usr/lib/courier/sbin/mkesmtpdcert)
  • POP3用(/usr/lib/courier/sbin/mkimapdcert)
  • IMAP用(/usr/lib/courier/sbin/mkpop3dcert)


以下は「mkesmtpdcert」コマンドの実行例です。

# /usr/lib/courier/sbin/mkesmtpdcert
Generating a 1024 bit RSA private key
....++++++
....................................++++++
writing new private key to '/usr/lib/courier/share/esmtpd.pem'
-----
512 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
...................+......................................................++*++*++*++*++*++*
subject= /C=US/ST=NY/L=New York/O=Courier Mail Server/OU=Automatically-generated ESMTP STARTTLS key/CN=localhost/emailAddress=postmaster@example.com
notBefore=May 15 13:22:20 2011 GMT
notAfter=May 14 13:22:20 2012 GMT
SHA1 Fingerprint=E2:9D:FB:26:AE:34:0C:20:10:A0:64:C6:4C:D2:AF:7C:1B:AB:B6:D5


サーバー証明書は、初期設定のファイル名で作成されます。


中身はシェルスクリプトなので、見てみると面白いと思います。

おまけ:起動スクリプトの中身


よく見ると該当するサービスを起動させる場合は
「/etc/inid.d/courier」でも実行されるようになっていました。
(初回は必ず実行されるものと思われます)

[ SMTPS ]
    76		if test "$esmtpdcert" = 1
    77		then
    78	# If we do not have a certificate, make one up.
    79	
    80			if test ! -f ${datadir}/esmtpd.pem
    81			then
    82				if test -x $COURIERTLS
    83				then
    84					echo -n " generating-ESMTP-SSL-certificate..."
    85					${sbindir}/mkesmtpdcert >/dev/null 2>&1
    86				fi
    87			fi
    88		fi
    89	

[ POP3S ]
   141			case x$POP3DSSLSTART in
   142			x[yY]*)
   143				if test -x $COURIERTLS
   144				then
   145	# If we do not have a certificate, make one up.
   146	
   147					if test ! -f ${datadir}/pop3d.pem
   148					then
   149						echo -n " generating-POP3-SSL-certificate..."
   150	
   151						${sbindir}/mkpop3dcert >/dev/null 2>&1
   152					fi
   153	
   154					${sbindir}/pop3d-ssl start && \
   155						echo -n " pop3d-ssl"
   156				fi
   157				;;
   158			esac

[ IMAPS ]
   171			case x$IMAPDSSLSTART in
   172			x[yY]*)
   173				if test -x $COURIERTLS
   174				then
   175	# If we do not have a certificate, make one up.
   176	
   177					if test ! -f ${datadir}/imapd.pem
   178					then
   179						echo -n " generating-IMAP-SSL-certificate..."
   180	
   181						${sbindir}/mkimapdcert >/dev/null 2>&1
   182					fi
   183	
   184					${sbindir}/imapd-ssl start && \
   185						echo -n " imapd-ssl"
   186				fi
   187				;;
   188			esac


ここでコマンド発行して自己署名形式の証明書作っていたんですね。

参考

 -mkesmtpdcert
 -mkpop3dcert
 -mkimapdcert


今日はこんなところで。