meta1 をMSA(Mail Submission Agent)としてだけ利用してみます。
現状ではSTARTTLS+AUTH(CRAM-MD5)で使用しています。
2007年 4月 10(火曜日)
meta1-1.0.PreAlpha15.0
環境
インストール
SASLで使用しているBerkeleyDBとの整合性のため、付属のではなくてSASLで使
用しているものと同じもの(Berkeley-DB 4.4系)を使用します。
http://www.meta1.org/からmeta1-1.0.PreAlpha15.0.tar.gzを取得します。
コンパイルします。
設定
meta1.conf設定
aliases設定
MSAとして利用するとのaliasesは関係なし
mailertable(mt)設定
access設定
tls設定
前準備
CA証明書の生成
自己署名済みの証明書と秘密鍵を生成します
meta1用証明書の生成
smx用証明書への署名
パスフレーズの削除
SASLのDBにアクセス権設定
ユーザmeta1sがSASLのDBにアクセスできるように設定します。
今回は、他にsasldbをアクセスするアプリケーションの権限はrootであるため、以下の方法を用います。
起動
meta1を起動
# cd /var/spool/meta1
# ./mcp.sh
注意事項
その1
※ client_name=Hostname_Not_Determined のメッセージがでる
→smtpsでaccess DBを見るように設定すればresolveが行われる
その2
meta1.conf中、READMEのサンプルでは、
trusted_mechs = { CRAM-MD5, DIGEST-MD5 }
となっているが、実際には
trusted_mechanisms="CRAM-MD5 DIGEST-MD5"
のようにしないとパースエラーとなる。
デバッグ用メモ
/var/spool/meta1/mcp.sh 中の /usr/local/sbin/mcp のオプションに -d を追加すると詳細のログがでるようになる。
調査するファイルリスト
起動用スクリプト作成
- OS: NetBSD 3.1
- meta1: 1.0.PreAlpha15.0
- db: 4.4.20
インストール
SASLで使用しているBerkeleyDBとの整合性のため、付属のではなくてSASLで使
用しているものと同じもの(Berkeley-DB 4.4系)を使用します。
http://www.meta1.org/からmeta1-1.0.PreAlpha15.0.tar.gzを取得します。
% tar zxvf meta1-1.0.PreAlpha15.0.tar.gz
% cd meta1-1.0.PreAlpha15.0
コンパイルします。
% mkdir obj.netbsd
% cd obj.netbsd
% ../configure --prefix=/usr/local \
--enable-TLS --enable-SASL --with-sasl-libdir=/usr/pkg/lib --with-sasl-incdir=/usr/pkg/include \
--disable-included-bdb --with-bdb-incdir=/usr/pkg/include/db4 --with-bdb-libdir=/usr/pkg/lib
% make
# groupadd -g 260 meta1s
# groupadd -g 261 meta1q
# groupadd -g 262 meta1c
# groupadd -g 263 meta1m
# groupadd -g 264 meta1
# useradd -G meta1c,meta1m -g meta1s -u 260 meta1s
# useradd -G meta1m -g meta1q -u 261 meta1q
# useradd -g meta1c -u 262 meta1c
# useradd -g meta1m -u 263 meta1m
# useradd -g meta1 -u 264 meta1
# make install
設定
meta1.conf設定
# cd /etc/meta1
# vi meta1.conf
smtps MSA {
auth {
trusted_mechanisms="CRAM-MD5 DIGEST-MD5";
flags = { noplaintext };
}
tls { cert_file = "/var/db/CA/certs/smxcrt.pem";
key_file = "/var/db/CA/smxkey.pem";
CAcert_file = "/var/db/CA/cacert.pem";
CAcert_directory = "/var/db/CA/certs";
}
log_level = 11;
log { facility=mail; ident="MSA"; }
CDB_gid = 262;
listen_socket { type = inet; port = 587; }
start_action = pass;
pass_fd_socket = smtps/msafd;
user = meta1s;
path = "/usr/local/libexec/smtps";
arguments = "smtps -I 1 -N MSA -f /etc/meta1/meta1.conf";
}
smtpc {
log_level = 12;
tls { cert_file = "/var/db/CA/certs/smxcrt.pem";
key_file = "/var/db/CA/smxkey.pem";
CAcert_file = "/var/db/CA/cacert.pem";
CAcert_directory = "/var/db/CA/certs";
}
log { facility=mail; ident="smtpc"; }
wait_for_server = 4;
start_action = wait;
user = meta1c;
path = "/usr/local/libexec/smtpc";
arguments = "smtpc -f /etc/meta1/meta1.conf";
}
qmgr {
log_level = 12;
log { facility=mail; ident="qmgr"; }
wait_for_server = 4;
wait_for_client = 3;
start_action = wait;
user = meta1q;
restart_dependencies = { smtps, smtpc, smar };
path = "/usr/local/libexec/qmgr";
arguments = "qmgr -f /etc/meta1/meta1.conf";
}
smar {
log_level = 12;
log { facility=mail; ident="smar"; }
nameserver = { 192.168.1.1, 192.168.1.2 };
start_action = wait;
user = meta1m;
restart_dependencies = { smtps, qmgr };
path = "/usr/local/libexec/smar";
arguments = "smar -f /etc/meta1/meta1.conf";
}
aliases設定
MSAとして利用するとのaliasesは関係なし
mailertable(mt)設定
# cd /etc/meta1
# vi mt
. esmtp:[127.0.0.1]
(すべてMTAに転送するように設定)
# make
access設定
# cd /etc/meta1
# vi access
cltaddr:127.0.0.1 relay
cltaddr:192.168.1 relay
(ローカルからのみ許可)
# make
tls設定
前準備
# vi /etc/openssl/openssl.cnf
dir = /var/db/CA
# mkdir /var/db/CA
# cd /var/db/CA
# mkdir certs crl newcerts private
# chmod 700 private
# echo 01 > serial
# touch index.txt
CA証明書の生成
自己署名済みの証明書と秘密鍵を生成します
# openssl req -new -x509 -newkey rsa:2048 -out cacert.pem -keyout private/cakey.pem
meta1用証明書の生成
# openssl req -new -keyout private/smxkey.pem -keyform PEM -out smxcsr.pem -outform PEM
smx用証明書への署名
# openssl ca -out certs/smxcrt.pem -infiles smxcsr.pem
パスフレーズの削除
# openssl rsa -in private/smxkey.pem -out smxkey.pem
SASLのDBにアクセス権設定
ユーザmeta1sがSASLのDBにアクセスできるように設定します。
今回は、他にsasldbをアクセスするアプリケーションの権限はrootであるため、以下の方法を用います。
# chown meta1s /usr/pkg/etc/sasldb
起動
meta1を起動
# cd /var/spool/meta1
# ./mcp.sh
注意事項
その1
※ client_name=Hostname_Not_Determined のメッセージがでる
→smtpsでaccess DBを見るように設定すればresolveが行われる
その2
meta1.conf中、READMEのサンプルでは、
trusted_mechs = { CRAM-MD5, DIGEST-MD5 }
となっているが、実際には
trusted_mechanisms="CRAM-MD5 DIGEST-MD5"
のようにしないとパースエラーとなる。
デバッグ用メモ
/var/spool/meta1/mcp.sh 中の /usr/local/sbin/mcp のオプションに -d を追加すると詳細のログがでるようになる。
調査するファイルリスト
- /var/spool/meta1/mcp.out
- /var/log/maillog
- /var/log/messages
- /var/spool/meta1/MSA.log
- /var/spool/meta1/qmgr.log
- /var/spool/meta1/smtpc.log
起動用スクリプト作成
# cp /var/spool/meta1/mcp.sh /etc/rc.d/meta1
トラックバック
このエントリーのトラックバック URI を指定する