メールサーバを構築

要件

  • メール送信できる
  • メール受信できる
  • メール受信からプログラム起動(メールキックシステム)
  • メールのドメイン逆引き時にはじかれない

上記の要件を満たすメールサーバを構築していこうと思います。

構成

オフィシャルサイトのwikiでは、iredmailというメールサーバを紹介しています。
http://code.google.com/p/iredmail/

しかし、ネットで検索すると日本語だと130件しか結果がありません。
海外の検索でも、数千件。

聞いたことがないのと、以前使っていたsendmailを使う予定です。


※メールサーバの設定は、webサーバの設定よりも慎重に行う必要があります。なぜならば、世にはびこるスパムメールの手助けをしてしまう可能性があるからです。
ですので、世の人の迷惑にかからないメールサーバーを構築します。

インストール(センドメール)

[root@testMan ~]##yum install sendmail
[root@testMan ~]# yum list |grep sendmail
sendmail.x86_64 8.13.8-2.el5 installed
sendmail-cf.x86_64 8.13.8-2.el5 base
sendmail-devel.i386 8.13.8-2.el5 base
sendmail-devel.x86_64 8.13.8-2.el5 base
sendmail-doc.x86_64 8.13.8-2.el5 base

必要そうなパッケージもインストールする。

#yum install sendmail-cf
#yum install sendmail-devel

sendmail.mc設定

sendmail.mcの設定内容を変更します。
設定が終わったら、sendmail.cfにその内容を反映します。

mcがテンプレートで、cfが本当の設定ファイルという関係になっています。

#vi /etc/mail/sendmail.mc
#cd /etc/mail
#m4 sendmail.mc > sendmail.cf

送信元のメールアドレスの変更

dnl MASQUERADE_AS(`example.com')dnl
dnl FEATURE(`masquerade_envelope')dnl

MASQUERADE_AS(`rackspace-jp.com')dnl
FEATURE(`masquerade_envelope')dnl

ホスト外からの送信の許可設定

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

コメントアウトしたことで、ホスト外からも送信可能にしています。
このままだと、セキュリティ的にはダウンしてしまいます。
他の設定項目で、送信の許可設定を行います。

名前解決できないMTAからのリレーの禁止

FEATURE(`accept_unresolvable_domains')dnl

dnl FEATURE(`accept_unresolvable_domains')dnl

スパムメール対策

送信するメールのサイズの制限(追加)

追加する

define(`confMAX_MESSAGE_SIZE',`10000000')dnl

10MB以上のメールは、送信しなくなります。

同時に送信できるメールコピーの上限数(追加)

define(`confMAX_RCPTS_PER_MESSAGE', `200')dnl

同じメールを大量に送る数を制限します。

受信するホスト名の設定

# vi /etc/mail/local-host-names

受信するドメインを追加する。

私は、
rackspace-jp.comを追加しました。

ホスト名ごとのメールボックス振分け

[root@testMan mail]# vi /etc/mail/virtusertable
[root@testMan mail]# makemap -v hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
key=`info@rackspace-jp.com', val=`tanii'

virtusertableファイルの中身

info@rackspace-jp.com tanii

意味は、
[受信対象のメールアドレス] [書き込み先のアカウント]
これで、info@rackspace-jp.comに送られてきたメールはtaniiに届くようになります。

複数ドメインで運用しようと考えている方は、必要な設定です。

受信、転送を許可するホストの設定

※セキュリティ的に一番大切

デフォルト設定だと、自分のホスト以外から届いたメールを転送しません。今回は、特にそれで問題ないので変更しません。

Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY

ここを下手に設定することで、spamerを餌食になることになるので、お気をつけ下さい。

ポート解放

webサーバ構築の際にも、少し触れましたが
rackspaceのデフォルト設定では、22番ポートしか空いていません。

ファイアーフォール(iptablese)によって、閉じています。

下記のofficialwikiを参考にして、mailポート(smtp)を解放してください。

http://cloudservers.rackspacecloud.com/index.php/CentOS_5.3_-_Graphical_User_Interface_for_iptables

MXレコードの設定

オフィシャルwikiを参考にMXレコードを設定してください。
http://cloudservers.rackspacecloud.com/index.php/DNS_-_Creating_a_DNS_Record

  • オフィシャルwikiからの注意
    • Priorityは、初めて登録する場合は10、次は20と増やして登録してください。
    • また、contentのドメインの最後にピリオドをいれないでください。


設定した内容

Name Content Priority TTL Type
rackspace-jp.com rackspace-jp.com 10 300 MX

sendmail起動(自動起動)

起動

# /etc/init.d/sendmail start

自動起動

# ntsysv

sendmailにチェックを付ける。
私の場合既に、チェックが付いていました。

メール受信確認

[root@testMan mail]# tail -f /var/mail/tanii

この状態で、info@rackspace-jp.comにメールしてみました。

すると送ったメール内容がコンソール上に表示されるはずです。

おめでとう、sendmailおくれたよ。

メール送信確認

コマンドラインから、メールを送信してみましょう。

$ mail -s '' <送り先メールアドレス>
this is mail body.

[ Ctrl + D を2回押す ]

送信OKでした。gmailで受信しましたが、見事に迷惑メールと判断されましたw

逆引きの設定をしていないからでしょうか。


参考にしたサイト

・お便利.com(メールサーバ編)
http://www.obenri.com/_mailserver/index.html

・コマンド集 コマンドラインからメール送信(Fstyle)
http://fstyle.ddo.jp/archives/2005/07/linux_-.html