ライン

ポイント:OEで利用できる送信時認証

ライン

 はじめに

SMTP AUTH

 sendmailによるSMTP認証を再設定した際のメモです。
 FreeBSD 7.1での例です。

 導入と設定

導入

 sendmailはOS導入時に組み込まれていますが、再度コンパイルが必要になりますので、その部分の準備をします。
導入しているOSのバージョンのソースが展開されている必要があります。
csup を利用し、事前に展開をしておいてください。

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

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

とします。サンプルが /usr/share/examples/etc/make.conf にあるので詳細はそっちを見てください。

 さて、cyrus-sasl2-saslauthd を導入し、その後にsendmailのリコンパイルとしますので、その作業を開始します。
cyrus-sasl2系のオプションはデフォルトのままの方針としました。

# cd /usr/ports/security/cyrus-sasl2-saslauthd
# make install clean

 /etc/rc.conf にはsaslauthd_enable="YES" を加えておきます。
必要に応じて saslauthd_flags="-a pam" などのフラグも記述可能です。

sendmailのコンパイル

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

# sendmail -d0.1 -bv root
Version 8.14.3
 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
========================================================

foo@example.ne.jp... deliverable: mailer smtpf, host lmtp, user foo@example.ne.jp

 というのが現状です。

# 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
# sendmail -d0.1 -bv root
Version 8.14.3
 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
                NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASLv2
                SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG 

 以上のように SASLv2 が追加されるようになりました。

設定 (/etc/mail 以下)

 次に、設定ファイルの変更をしましょう。/etc/mail 以下を修正することになります。

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

を追加します。

# make cf install restart

で反映させました。
以下は、確認です。

# more /usr/local/lib/sasl2/Sendmail.conf
pwcheck_method: saslauthd

 デーモンを浮かべましょう。

# /usr/local/etc/rc.d/saslauthd start
Starting saslauthd.
# ps -ax|grep sasl
 9896  ??  Ss     0:00.00 /usr/local/sbin/saslauthd -a pam
 9897  ??  S      0:00.00 /usr/local/sbin/saslauthd -a pam
 9898  ??  S      0:00.00 /usr/local/sbin/saslauthd -a pam
 9899  ??  S      0:00.00 /usr/local/sbin/saslauthd -a pam
 9900  ??  S      0:00.00 /usr/local/sbin/saslauthd -a pam

 テストとTLSの設定

Windowsメールでチェック

 ではテストを開始します。ここでは Windows VistaのWindowsメールを利用することにしました。

ここにチェックを入れて、サーバ名にはIPアドレスなりホスト名を記述します。
 /etc/rc.conf には、

##############################################################
###  Mail Transfer Agent (MTA) options  ######################
##############################################################

mta_start_script="/etc/rc.sendmail"
                        # Script to start your chosen MTA, called by /etc/rc.
# Settings for /etc/rc.sendmail and /etc/rc.d/sendmail:
sendmail_enable="NO"    # Run the sendmail inbound daemon (YES/NO).
sendmail_pidfile="/var/run/sendmail.pid"        # sendmail pid file
sendmail_procname="/usr/sbin/sendmail"          # sendmail process name
sendmail_flags="-L sm-mta -bd -q30m" # Flags to sendmail (as a server)
sendmail_submit_enable="YES"    # Start a localhost-only MTA for mail submission
sendmail_submit_flags="-L sm-mta -bd -q30m -ODaemonPortOptions=Addr=localhost"
                                # Flags for localhost-only MTA
sendmail_outbound_enable="YES"  # Dequeue stuck mail (YES/NO).
sendmail_outbound_flags="-L sm-queue -q30m" # Flags to sendmail (outbound only)
sendmail_msp_queue_enable="YES" # Dequeue stuck clientmqueue mail (YES/NO).
sendmail_msp_queue_flags="-L sm-msp-queue -Ac -q30m"
                                # Flags for sendmail_msp_queue daemon.
sendmail_rebuild_aliases="NO"   # Run newaliases if necessary (YES/NO).

がデフォルトになっているものなので、これに必要な変更を入れます。

sendmail_enable="YES"

で問題なさそうです。

 自宅のISPは、25番ポートが使えない(Outbound Port 25 Blocking/OP25B)なので、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 *

STARTTLS=server, relay=HOSTa [XXX.YYY.ZZZ.aaa], version=TLSv1/SSLv3, verify=NO, cipher=AES128-SHA, bits=128/128

のようにログが記録されていました。
こちらでも、問題なく利用することができました。

【改訂履歴】作成:2009/03/08
2009/05/31 … Namazu検索の窓を追加
【参考リンク】
FreeBSD as a Secure Mail Server Using sendmail and imap-uw … Josh TolbertさんのページのFreeBSD系のページより

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