初期状態では、受信したメールは「/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ということになります。
初級インフラエンジニアにオススメ連載リンク
ネットワーク学習の登竜門・・
ゼロからのCCNA独学講座
Linuxの取り扱いを基礎から学ぶ
Linux資格 「LPIC-Lv1」徹底解説