ライン

ポイント:SMTP25番ポートが使えないことが多い

ライン

 はじめに

SMTP AUTH

 サーバの入れ替え作業をやっている最中のsendmailによるSMTP認証を再設定した際のメモです。
 FreeBSD 9.1(64bit)による例です。

 導入と設定

導入

 sendmailはFreeBSDのデフォルトで導入されているメールシステムです。eximになるのではという噂もありましたが、未だにそんな動きもありません。Linuxのディストリビューションでも使っているのを見ませんので、かなり少数派になってしまいました。
 さて、今回はSMTPの事前認証機能を追加します。これには導入しているOSのバージョンのソースが展開されている必要がありますので、前提としての準備から開始します。これまではcsup を利用していましたが、その時代も終わったみたいなのでsvnupの方を使います。
(わたしはportsは、portsnap で使っています)

 まず、このコマンドをportsで使えるようにする必要があるみたいです。

# cd /usr/ports/net/svnup
# make install clean

 瞬殺で終わったと思います。

# svnup
Usage: svnup -h host -b branch -l local_directory
  Options:
    -4  Use IPv4 addresses only.
    -6  Use IPv6 addresses only.
    -b  The Subversion branch to retrieve.
    -h  The hostname or IP address of the Subversion repository.
    -l  The local directory to save the repository's files to.
    -p  The port to connect to (defaults to 3690 if this option is
          not specified).
    -r  The revision number to retreive (defaults to the branch's
          most recent revision if this option is not specified).
    -v  How verbose the output should be (0 = no output, 1 = the
          default normal output, 2 = also show command and response
          text, 3 = also show command response parsing codes).
# time svnup -h svn0.us-west.freebsd.org -b base/releng/9.1 -l /usr/src
...
110.927u 614.416s 17:07.16 70.6%        30+2878k 4874+1830io 0pf+0w

 まだ、日本でのSVNのサーバって動いていないんだね。
無事に完了できたので、先に進みます。

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

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

とします。

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

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

 /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.5
 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
                NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SCANF
                STARTTLS TCPWRAPPERS USERDB XDEBUG
Warning: Option: AuthMechanisms requires SASL support (-DSASL)

============ 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
========================================================

 と、これまでの設定で警告があがっていました。

# 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.5
 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 以下のホスト名.mcのファイルを修正しましょう。

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

を追加します。

# make cf install restart

で反映させました。

Apr  6 16:06:42 - sm-mta[]: AUTH=server, relay=[-], authid=foo, mech=LOGIN, bits=0
Apr  6 16:06:42 - sm-mta[]: r3676gxf017493: from=<->, size=347, class=0, nrcpts=1, msgid=<->, proto=ESMTP, daemon=MTA, relay=[-]

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

 SMTPSで設定

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 *

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

Apr  6 16:28:39 - sm-mta[]: STARTTLS=server, relay=[], version=TLSv1/SSLv3, verify=NO, cipher=AES128-SHA, bits=128/128
Apr  6 16:28:39 - sm-mta[]: AUTH=server, relay=[], authid=-, mech=LOGIN, bits=0
Apr  6 16:28:39 - sm-mta[]: -: from=<->, size=288, class=0, nrcpts=1, msgid=<->, proto=ESMTP, daemon=MSA, relay=[-]

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

マイクロソフトのおまけメーラーを禁止してしまえば、PLAINとかLOGINでの接続禁止にしてしまいたいんですが。
なんだかいつまでも微妙です。

一通り、メール関連の構築はできました。

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

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