メールサーバー設定してみた後、勉強した知識

ウェブ開発の仕事に、メールサーバーがよく使われている。ユーザがアカウントを登録したり、パスワードを変更したりする時、システムが自動的にユーザさんにお知らせのメールを送りたい場合はメールサーバーが必要になっている。

その前に何回もメールのサーバーを設定してみたが、成功できなかった。自分のGmailのアカウントに送ってみて、最初の1枚目、2枚目のメールがすぐ届けたが、だんだん遅くなって時間がかかっちゃて、結局になかなか届けなかった。どこに詰まっているよう。すぐユーザさんがもらえないと、自分のシステムに信じられなくなってしまって、自分のウェブサイトを使わなくなる可能性がある。そして、調査の後、やっと問題を解決できるようになった。

メールサーバーの設定の方をみなさんに共有したいと思います。OSはCentosです。

1. mailxのツールをインストール

#yum install mailx

mailxとは私にとって mailxの役割はApacheと同じだと思う。 Apacheは wwwサーバと含めるのを応じて、 mailxはメールのサーバー (SMTPサーバー)を含める。
2. mailxをインストール終わったら、すぐ試される。
#echo "test"|mail -s "this is a test" dinhloc1991@gmail.com
(dinhloc1991@gmail.comは私のメール)

3.gmailをアクセス、メールが届けたかどうかチェックしましょう。私の場合は届けたが、届けたメールのsenderアドレスは下記になった
ec2-user@centos6.localdomain
このsenderアドレスを分析してなんとか分かれた。
ec2-user : サーバーにユーザのアカウント
centos6: サーバーの名前  (/etc/sysconfig/networkのファイルに設定される)
localdomain: サーバーのドメイン名かな、どこに設定されるのか、分からない、デフォルトの値かな。

4. もっと調査すると、届けたメールに「show original」のオプションを選択すると、下記のメッセージが見える
Received-SPF: neutral (google.com: xx.xx.xx.xx is neither permitted nor denied by best guess record for domain of ec2-user@centos6.localdomain) client-ip=xx.xx.xx.xx;

(xx.xx.xx.xx は私のサーバーのアドレス)
このメッセージによると、xx.xx.xx.xx はcentos6.localdomainのドメインに許可されなかった。

5.ドメインから許可を取れるために、ドメイン設定の所にSPFというレコードを追加しないといけない(DNSサーバーに設定する)。

Host TXTの値 TTL
@ v=spf1 ip4:xx. xx.xx.xx -all 14400

xx.xx.xx.xxはメールサーバのアドレスです。

SPFレコードを追加した後、下記のウェブサイトを使って確認できる
http://www.kitterman.com/spf/validate.html

6.SPFレコードを追加した後、メールサーバーのhostnameを設定します。
設定のファイルは/etc/sysconfig/networkです。
NETWORKING=yes
HOSTNAME=domainname
(domainnameは自分のウエブサイトのdomainnameです。例えば、example.com)

7.senderアドレスをカトマンズしたい場合は ~/.mailrcファイルを作る
set from="username@domainname"
(usernameとdomainnameは何でもいい)

8.もう一同メールを送ってみて、[show original]を見ると下記のメッセージを見えた
Received-SPF: pass (google.com: domain of username@domainame designates xx.xx.xx.xx as permitted sender) client-ip=xx.xx.xx.xx
ここで、メールセーバーを設定できたと思う。senderのアドレスをSPFアルゴリズムで認証できれば、メールの遅延をなくされると思う。