メールサーバを構築しますヾ(゚∀゚)ノ
今回はSMTPサーバにSendmailを、POPサーバにqpopperを使用します。
qpopperはMaildirに対応していないという致命的欠陥がありますが、そこはパッチで回避します。
セキュリティホール等の問題から最近はユーザ数の少ないSendmailですが、ちゃんと設定すれば他のメールサーバに負けない実力を発揮しますよ。
尚、一般家庭の方はOutboundPort25Blockingの関係でメールが送信出来ない可能性が高いです。
その場合は、SendmailをOutboundPort25Blockingに対応の設定もも同時行う必要があります。
今回はSMTPサーバにSendmailを、POPサーバにqpopperを使用します。
qpopperはMaildirに対応していないという致命的欠陥がありますが、そこはパッチで回避します。
セキュリティホール等の問題から最近はユーザ数の少ないSendmailですが、ちゃんと設定すれば他のメールサーバに負けない実力を発揮しますよ。
尚、一般家庭の方はOutboundPort25Blockingの関係でメールが送信出来ない可能性が高いです。
その場合は、SendmailをOutboundPort25Blockingに対応の設定もも同時行う必要があります。
基本的なセットアップだけでは踏み台になってしまうので、最初からSMTP認証を設定します。
POP before SMTPがイイという方は、その内記事を書くので暫くお待ち下さい。
Sendmailインストール
Sendmailの初期設定以外にもシステムを変更する箇所があるので、Sendmailはまだ起動しないで下さい。
SMTP認証(SMTP-Auth)設定
SMTP認証用のアカウント、パスワードをメールと同一にする場合
上に引き続き、SMTP認証用のアカウント、パスワードをメールと別にする場合
Maildir形式に変更
Sendmailのメール格納形式は「/var/spool/mail/ユーザ名」という、1つのファイルにメールを蓄積していくタイプです。
1つのディレクトリを全ユーザが共有しているので「共有ディレクトリ形式」と呼ばれています。
ですが、この形式は保存メールが増えた分、ファイルの容量が増えていくのでレスポンスが悪くなり、結果送受信に影響が出ます。
またセキュリティ的にもよろしくないので、Maildir形式へ移行します。
SendmailをMaildir形式に対応
sendmailはMaildir形式メールボックスに対応していので、Procmailを使用して配送します。
Sendmail再起動
これで、Sendmailの基本的なセットアップは完了です。
SMTP認証用アカウントの作成/削除
SMTP認証専用アカウントを有効にしている方は、専用アカウントの管理を行う必要があります。
※この場合、SMTP認証用アカウントは「hoge@hogehoge.com」となるので注意する事
続いて、POPサーバのqpopperの設定を行います。
qpopper、実はMaildir形式に対応していないので、そのままmakeしても使用できません。
qpopperインストール
qpopperを起動
qpopperはxinetdを経由して起動する為、xinetd.d以下に起動スクリプトを設置する。
これで、Sendmail+qpopperの基本的なメール設定は完了ですヾ(゚∀゚)ノ
実際にメールが見れるか確認してみてください。
POP before SMTPがイイという方は、その内記事を書くので暫くお待ち下さい。
Sendmailインストール
# yum -y install sendmail-cf
※sendmail.cf作成ソフトインストール
# vi /etc/mail/sendmail.mc
※sendmail.mcを編集しセットアップを行う
# cd /etc/mail/
# make sendmail.cf
※sendmail.cfを作成
# echo `hostname -d` >> /etc/mail/local-host-names
※Sendmailを利用するドメインを指定
※sendmail.cf作成ソフトインストール
# vi /etc/mail/sendmail.mc
※sendmail.mcを編集しセットアップを行う
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
↓※変更
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
※外部からの接続を許可
dnl MASQUERADE_AS(`mydomain.com')dnl
↓※変更
MASQUERADE_AS(`hogehoge.com')dnl
※送信元アドレスを指定したドメイン変更
dnl FEATURE(masquerade_envelope)dnl
↓※変更
FEATURE(masquerade_envelope)dnl
※メールヘッダに含まれるReturn-Pathを、以下のMASQUERADE_DOMAINで指定したドメインに強制的に書き換える
EXPOSED_USER(`root')dnl
↓※変更
dnl EXPOSED_USER(`root')dnl
※送信元がrootの場合でも変更
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
↓※変更
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
※SMTP認証の有効化
define(`confMAX_MESSAGE_SIZE',`10485760')
※メールの最大容量を10MB=10*1024*1024に制限
define(`confSMTP_LOGIN_MSG',`unknown')dnl
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_)
$.$?{auth_type}(authenticated)
$.by $j (unknown)$?r with $r$. id $i$?u
for $u; $|;
$.$b')dnl
※メールサーバ名とバージョン情報を隠す
↓※変更
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
※外部からの接続を許可
dnl MASQUERADE_AS(`mydomain.com')dnl
↓※変更
MASQUERADE_AS(`hogehoge.com')dnl
※送信元アドレスを指定したドメイン変更
dnl FEATURE(masquerade_envelope)dnl
↓※変更
FEATURE(masquerade_envelope)dnl
※メールヘッダに含まれるReturn-Pathを、以下のMASQUERADE_DOMAINで指定したドメインに強制的に書き換える
EXPOSED_USER(`root')dnl
↓※変更
dnl EXPOSED_USER(`root')dnl
※送信元がrootの場合でも変更
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
↓※変更
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
※SMTP認証の有効化
define(`confMAX_MESSAGE_SIZE',`10485760')
※メールの最大容量を10MB=10*1024*1024に制限
define(`confSMTP_LOGIN_MSG',`unknown')dnl
define(`confRECEIVED_HEADER',`$?sfrom $s $.$?_($?s$|from $.$_)
$.$?{auth_type}(authenticated)
$.by $j (unknown)$?r with $r$. id $i$?u
for $u; $|;
$.$b')dnl
※メールサーバ名とバージョン情報を隠す
# cd /etc/mail/
# make sendmail.cf
※sendmail.cfを作成
# echo `hostname -d` >> /etc/mail/local-host-names
※Sendmailを利用するドメインを指定
Sendmailの初期設定以外にもシステムを変更する箇所があるので、Sendmailはまだ起動しないで下さい。
SMTP認証(SMTP-Auth)設定
SMTP認証用のアカウント、パスワードをメールと同一にする場合
# /etc/rc.d/init.d/saslauthd start
※saslauthd起動
# chkconfig saslauthd on
※saslauthd自動起動設定
※saslauthd起動
# chkconfig saslauthd on
※saslauthd自動起動設定
上に引き続き、SMTP認証用のアカウント、パスワードをメールと別にする場合
# vi /usr/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd
↓※変更
pwcheck_method:auxprop
↓※変更
pwcheck_method:auxprop
Maildir形式に変更
Sendmailのメール格納形式は「/var/spool/mail/ユーザ名」という、1つのファイルにメールを蓄積していくタイプです。
1つのディレクトリを全ユーザが共有しているので「共有ディレクトリ形式」と呼ばれています。
ですが、この形式は保存メールが増えた分、ファイルの容量が増えていくのでレスポンスが悪くなり、結果送受信に影響が出ます。
またセキュリティ的にもよろしくないので、Maildir形式へ移行します。
# mkdir -p /etc/skel/Maildir/new
# mkdir -p /etc/skel/Maildir/cur
# mkdir -p /etc/skel/Maildir/tmp
※新規ユーザ追加時にMaildir形式メールボックスを自動作成
# chmod -R 700 /etc/skel/Maildir/
※自動作成したメールボックスのパーミッションを変更
# mkdir -p /etc/skel/Maildir/cur
# mkdir -p /etc/skel/Maildir/tmp
※新規ユーザ追加時にMaildir形式メールボックスを自動作成
# chmod -R 700 /etc/skel/Maildir/
※自動作成したメールボックスのパーミッションを変更
SendmailをMaildir形式に対応
sendmailはMaildir形式メールボックスに対応していので、Procmailを使用して配送します。
vi /etc/procmailrc
※procmail設定ファイル作成
※procmail設定ファイル作成
SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
#LOGFILE=$HOME/procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
#LOGFILE=$HOME/procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力
Sendmail再起動
# /etc/rc.d/init.d/sendmail restart
これで、Sendmailの基本的なセットアップは完了です。
SMTP認証用アカウントの作成/削除
SMTP認証専用アカウントを有効にしている方は、専用アカウントの管理を行う必要があります。
# echo "password" | saslpasswd2 -p -u hogehoge.com -c hoge
※SMTP認証用アカウントを追加
# sasldblistusers2
※SMTP認証用アカウントの確認
# saslpasswd2 -d hoge -u hogehoge.com
※SMTP認証用アカウントの削除
※SMTP認証用アカウントを追加
# sasldblistusers2
※SMTP認証用アカウントの確認
# saslpasswd2 -d hoge -u hogehoge.com
※SMTP認証用アカウントの削除
※この場合、SMTP認証用アカウントは「hoge@hogehoge.com」となるので注意する事
続いて、POPサーバのqpopperの設定を行います。
qpopper、実はMaildir形式に対応していないので、そのままmakeしても使用できません。
qpopperインストール
# wget http://www.ring.gr.jp/pub/net/mail/qpopper/qpopper4.0.9.tar.gz
※下記のパッチに対応しているqpopperをダウンロード
# tar zxvf qpopper4.0.9.tar.gz
※ダウンロードしたqpopperを解凍
# cd qpopper4.0.9
※展開ディレクトリへ移動
# wget http://www.asteroid-b612.org/software/qpopper-mysql/qpopper-mysql-0.15-test.patch
※Maildir対応パッチをダウンロード
# patch -p1 < qpopper-mysql-0.15-test.patch
※パッチを適用
# mkdir -p /usr/local/man/man8/
※man関連でエラーが出る事への対処
# ./configure --enable-maildrop-type=maildir --enable-home-dir-mail=Maildir --disable-mysql
※Maildirに対応したqpopperをコンパイル
# make && make install
※qpopperインストール
※下記のパッチに対応しているqpopperをダウンロード
# tar zxvf qpopper4.0.9.tar.gz
※ダウンロードしたqpopperを解凍
# cd qpopper4.0.9
※展開ディレクトリへ移動
# wget http://www.asteroid-b612.org/software/qpopper-mysql/qpopper-mysql-0.15-test.patch
※Maildir対応パッチをダウンロード
# patch -p1 < qpopper-mysql-0.15-test.patch
※パッチを適用
# mkdir -p /usr/local/man/man8/
※man関連でエラーが出る事への対処
# ./configure --enable-maildrop-type=maildir --enable-home-dir-mail=Maildir --disable-mysql
※Maildirに対応したqpopperをコンパイル
# make && make install
※qpopperインストール
qpopperを起動
qpopperはxinetdを経由して起動する為、xinetd.d以下に起動スクリプトを設置する。
# vi /etc/xinetd.d/pop3
# /etc/rc.d/init.d/xinetd restart
※xinetdを再起動し、qpopperを起動する
service pop3
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/popper
server_args = -s -R
#only_from = 127.0.0.1 172.16.0.0/12 192.168.1.0/24
}
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/popper
server_args = -s -R
#only_from = 127.0.0.1 172.16.0.0/12 192.168.1.0/24
}
# /etc/rc.d/init.d/xinetd restart
※xinetdを再起動し、qpopperを起動する
これで、Sendmail+qpopperの基本的なメール設定は完了ですヾ(゚∀゚)ノ
実際にメールが見れるか確認してみてください。
コメント