« | »

2006年2月20日

SMTP-AUTH@OpenSolaris

OpenSolarisでのSMTP-AUTHの作り方。
以前postfix+saslauthdでのSMTP-AUTHなメールサーバーの構築の仕方を書いたけど、ちょっとわかりにくい部分と自分でも理解できていなかった部分があったのでまとめてみた。なるべく詳細に書いてみる。
メールアカウント欲しい人はいうて貰えばじゃんじゃん発行しますえー


目指すべきところ:
外部とのやり取りもできるセキュアなメールサーバーの構築。
条件:
1、localhostからは認証なしでメール送信(リレー)許可。
2,当然ながら自ドメイン宛も無条件でメール受信(リレー)許可。
3,外部(サブネット含む)からの接続で自ドメイン以外への送信(リレー)はSMTP-AUTHで認証後に許可。
4,SMTP-AUTHはローカルシステムのユーザー&パスワードを使用。
5,条件4を満たすために/etc/shadowもしくはpamを使った認証が必要。
制限事項:
1,条件:4を満たすために認証方法は「PLAIN LOGIN」しか使用できないが、通常のSMTPは平文でユーザー名とパスワードを流しているのに引き換え、
PLAINはBase64エンコードされた状態で送信されるので、これでいいと諦める。
DIGEST-MD5 CRAM-MD5のどちらか、あるいは両方を使うためにはローカルシステムではなく、外部認証が必要となる。
使用したソフトウェア
smtpサーバーpostfix-2.2.8
/etc/shadowもしくはpam対する認証デーモン:cyrus-sasl-2.1.21
概要:
postfixはsendmailとは違ってrootではなく指定したユーザー&グループ権限で動作するsendmail互換のセキュアなサーバーである。
低権限のユーザーで動作するpostfix単体では/etc/shadowやpamを使って認証を行うことができないので、
cyrus-saslという認証デーモンを動作させ、postfixがそのデーモンに問い合わせを行う形でSMTP-AUTHを実現する。
コンパイル条件:
CコンパイラはSunStudio11のSUN Cを使用:
cyrus-sasl-2.1.21のコンパイル
インストールディレクトリは/usr/local/sasl2

コンパイラの指定
$export CC=/opt/SUNWspro/bin/cc
$export CXX=/opt/SUNWspro/bin/CC
$export F77=/opt/SUNWspro/bin/f77
コンパイルオプションの指定
export CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v8"
ライブラリ検索パスの追加
$export LD_LIBRARY_PATH=/usr/local/lib:/lib:/usr/lib:/usr/ucblib:
/usr/sfw/lib:/opt/sfw/lib:/usr/dt/lib:/usr/openwin/lib:
/usr/xpeg4/lib:/usr/ccs/lib
↑実際は一行
ソースコードの解凍
Makefile作成
$ ./configure --with-saslauthd=/var/cyrus --with-pwcheck=/var/cyrus --enable-login --disable-otp --disable-krb4 --disable-gssapi --disable-anon --with-dblib=none --enable-static --disable-digest --disable-srp --prefix=/usr/local/sasl2 --with-openssl=/usr/local/ssl
コンパイル
$dmake
インストール
#dmake install
シンボリックリンク作成
#ln -s /usr/local/sasl2/lib/* /usr/local/lib/
#ln -s /usr/local/sasl2/include/* /usr/local/include/
/
confの作成
#vi /usr/local/sasl2/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list:plain login
allowanonymouslogin: no
allowplaintext: yes
データベースディレクトリ作成
mkdir /var/cyrus
デーモンの起動
#/usr/local/sasl2/sbin/saslauthd -a pam
(/usr/local/sasl2/sbin/sasalauth -a shadowsの方が推奨されている)

postfix-2.2.8のインストール

postfixの動作するユーザーとグループの作成
groupadd postfix
groupadd postdrop
useradd -d /dev/null -s /bin/false -g postfix postfix
コンパイラの指定
$export CC=/opt/SUNWspro/bin/cc
$export CXX=/opt/SUNWspro/bin/CC
$export F77=/opt/SUNWspro/bin/f77
saslauth対応のコンパイルorリンカオプションの指定
$export CCARGS="-DUSE_SASL_AUTH -I/usr/local/include/sasl"
$export AUXLIBS="-L/usr/local/lib -lsasl2 -R/usr/local/lib -R/opt/sfw/lib"
(LDFLAGS CFLAGSは無視されるようだorz)
ソースコードの解凍
Makefileの作成
$dmake makefiles
コンパイル
$dmake
インストール
#dmake install
いろいろ聞かれるのでそれらしく答える。
confの作成
特に設定すべき項目のみを記す。
vi /etc/postfix/main.cf
#saslauthを使って認証する
smtpd_sasl_auth_enable = yes
#saslauthでの匿名接続を拒否。
smtpd_sasl_security_options = noanonymous
#リレー許可の条件:saslauth認証されたホスト,$mynetwokで指定されたネットワーク,$relay_domainsで指定された宛先
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,check_relay_domains
#自ドメインの定義
mydomain = 自ドメイン名
#メール送信元として使用されるドメイン(@以下)
myorigin = $mydomain
#mynetworkの形式
mynetworks_style = host
#mynetworkの定義
mynetworks = localhost
#メール送信サーバーして使われる(システム)ホスト名
myhostname = それらしい名前を書く。ホスト名でいいかも。
#自ホスト充てのメールとして受け取る宛先
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#リレーを許可する宛先(ドメイン
relay_domains = $mydestination
デーモン起動
/usr/local/postfix/sbin/postfix start

Trackback URL

Comment & Trackback

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>