ライン

ポイント:これまで通り

ライン

 はじめに

SMTP AUTH

 sendmailによるSMTP認証を設定したメモです。
 FreeBSD 9.2(64bit)による例です。半年前に入れたマシンの再導入になったので、作業は同様です。

 導入と設定

導入

 sendmailはFreeBSDのデフォルトで導入されているメールシステムです。
 今回もSMTPの事前認証機能を追加します。これには導入しているOSのバージョンのソースが展開されている必要があります。
Subversionによりソースの取得方法は、同時期の他のページに記載しましたので、ここでは割愛します。

/etc/make.conf に設定を加えます。

SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2

とします。

 次は、cyrus-sasl2-saslauthd を導入します。
これまでに同様に、デフォルトで先に進めました。

# pkg install cyrus-sasl-saslauthd

 /etc/rc.conf にはsaslauthd_enable="YES" を加えておきます。

saslauthd_enable="YES"

を加えておきます。そして起動してみましょう。

# /usr/local/etc/rc.d/saslauthd start

問題なく開始しました。

sendmailのコンパイル

 sendmail側のコンパイルを始めます。

# sendmail -d0.1 -bv root
Version 8.14.7
 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
                NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SCANF
                STARTTLS TCPWRAPPERS USERDB XDEBUG

============ SYSTEM IDENTITY (after readcf) ============
      (short domain name) $w = HOST
  (canonical domain name) $j = HOST.example.ne.jp
         (subdomain name) $m = example.ne.jp
              (node name) $k = HOST.example.ne.jp
========================================================

 上記には、SASLv2の表示はありませんでした。
毎度でソースからコンパイルを実施します。

# cd /usr/src/lib/libsm
# make obj depend all
# cd /usr/src/lib/libsmutil
# make obj depend all
# cd /usr/src/usr.sbin/sendmail
# make clean obj depend all install

 エラーになりました。

# cd /usr/src/lib/libsm
# make
# cd /usr/src/usr.sbin/sendmail
# make clean obj depend all install
# sendmail -d0.1 -bv root
Version 8.14.7
 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
                NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASLv2
                SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG

なんとかなりました。

ここで忘れていたProcmailの導入をしました。
別ページにありますのでそっちを参照ください。

電子メールサーバの設定 (/etc/mail)

 次に、設定ファイルの変更です。/etc/mail 以下のホスト名.mcのファイルを修正しましょう。

TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS',`LOGIN PLAIN')dnl

を追加します。

# make cf install restart

で反映させました。

Nov 15 23:02:41 xxx sm-mta[42869]: AUTH=server, relay=[*], authid=xxx, mech=LOGIN, bits=0

SMTP認証はできていることが確認できました。
ただし、LOGINだのPLAINだのをそのまま使うのはちょっと怖いです。
…ということで以下を設定します。

 SMTPS/SMTP+STARTTLSで設定

Becky!でチェック

 送信時にパスワードのやりとりはプレーンなどで行うと、非暗号化状態でパスワードのなどが流れてしまいます。
これは、すぐにメールのアカウントを覗かれたり、送信されてしまったりする危険があります。
 これを通信上見えないようにするために、SSLやTLSで通信するように機能を加えます。

 まずは、クライアント側の準備で以下のように、SMTPSにクリックを入れます。


上記のままですと、465に設定されたと思いますが、今回の設定は587に変更します。

TLSの設定

 TLS設定を加えていきます。

define(`confCACERT_PATH', `MAIL_SETTINGS_DIR`'certs')dnl
define(`confCACERT', `confCACERT_PATH/cert.pem')dnl
define(`confSERVER_CERT', `confCACERT_PATH/cert.pem')dnl
define(`confSERVER_KEY', `confCACERT_PATH/privkey.pem')dnl

を加え、make cf install 。
また、以下のキーを準備します。

# cd /etc/mail
# mkdir certs
# chmod 700 certs
# cd certs
# openssl req -new -x509 -nodes -out cert.pem
Generating a 1024 bit RSA private key
.............................................................++++++
......................................................++++++
writing new private key to 'privkey.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:jp
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Tokyo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:example.ne.jp
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:smtp.example.ne.jp
Email Address []:
# chmod 600 *

この辺りは、内部的な内容ですから、お好きなように決めて大丈夫です。

Nov 15 23:05:34 - sm-mta[42888]: STARTTLS=server, relay=[-], version=TLSv1/SSLv3, verify=NO, cipher=AES128-SHA, bits=128/128
Nov 15 23:05:34 - sm-mta[42888]: AUTH=server, relay=[-], authid=-, mech=LOGIN, bits=0

のようにログが記録されていました。

【改訂履歴】作成:2013/11/15
【参考リンク】

Copyright © 1996,1997-2006,2007- by F.Kimura,