AmazonEC2へのPostfixインストール手順

この記事は2013年12月20日に書かれたものです。内容が古い可能性がありますのでご注意ください。


初期状態では、受信したメールは「/var/spool/mail/【ユーザ名】」というファイルに書き込まれていきます。
それでは、先ほどuserAから送信したメールの受信ユーザuserBのメールファイルを見てみましょう。

$ su userB
$ cd /var/spool/mail
$ cat userB

先ほど送信した内容のメールが書き込まれていることがわかると思います。

これでメールの送信がちゃんとできていることが確認できました。
それでは次に、第二の確認
「メールを外部のアドレスに送信できるか」確認してみましょう。

$ sendmail 【外部のアドレス】

ヘッダ、本文の記述は先ほどと同じような内容でOKです。
無事送信されているでしょうか。外部アドレスで受信できているか、見てみてください。
もし送信されていない場合はメールキュー(未送信メールのストック場所)に格納されているので、こちらも併せて確認しましょう。次のコマンドを実行すると、先ほどの内容が出てきます。

$ mailq

送信できていない場合は、サーバのSMTPポート(25)が開いているかを確認してください。
ポートは開いているが送信できない場合、送信先のメールサーバが受信を拒否している可能性があります。
(例えばgmailは受信を拒否しているようですが、yahooメールは許可しています)

なぜ拒否するのかというと、不明なドメインのメールアドレスから送信されているメールだからです。
不明なドメインとは、DNSで解決できないドメインということです。DNSの詳しい内容は別途調べてみてください。
もし今Postfixをインストールしたサーバにドメインが振られているのであれば、
設定ファイルの記述を変更し、そのドメインを明記することができます(設定ファイルについては後述)。

では、次にメールの送信に認証をつけるSMTP-AUTHの設定をしていきましょう。
この設定をすることで、このサーバを踏み台にされてスパムメールを送信されたりすることを防ぐことができます。

# vi /etc/postfix/main.cf

main.cfの末尾に下記を追記します。

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
     permit_mynetworks
     permit_sasl_authenticated
     reject_unauth_destination

postfixを再起動、saslauthdを起動します。

# /etc/rc.d/init.d/postfix stop
# /etc/rc.d/init.d/postfix start
# /etc/rc.d/init.d/saslauthd start

これで設定はできているはずです。
下記の手順で確認をしましょう。

# telnet localhost 25

入力待ち状態になるので「EHLO localhost」と入力します。
「250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5」という行が表示されたらOKです。
次に、下記の内容を入力してみましょう。
「AUTH PLAIN 【エンコードされたユーザ名&パスワード】」

【エンコードされたユーザ名&パスワード】は、次のコマンドで生成できます

# perl -MMIME::Base64 -e 'print encode_base64("【ユーザ名】\0【ユーザ名】\0【パスワード】");'

そうすると「xxxxxxxxxxxxxxxxxxxxxxxx」のような文字列が生成されます。
これをコピーして、先ほどの【エンコードされたユーザ名&パスワード】にセットしましょう。
「Authentication successful」と表示されたら認証OKということになります。

ページ:
1

2

3
  • このエントリーをはてなブックマークに追加

PAGE TOP