初期状態では、受信したメールは「/var/spool/mail/【ユーザ名】」というファイルに書き込まれていきます。
それでは、先ほどuserAから送信したメールの受信ユーザuserBのメールファイルを見てみましょう。
1 2 3 | $ su userB $ cd /var/spool/mail $ cat userB |
先ほど送信した内容のメールが書き込まれていることがわかると思います。
これでメールの送信がちゃんとできていることが確認できました。
それでは次に、第二の確認
「メールを外部のアドレスに送信できるか」確認してみましょう。
1 | $ sendmail 【外部のアドレス】 |
ヘッダ、本文の記述は先ほどと同じような内容でOKです。
無事送信されているでしょうか。外部アドレスで受信できているか、見てみてください。
もし送信されていない場合はメールキュー(未送信メールのストック場所)に格納されているので、こちらも併せて確認しましょう。次のコマンドを実行すると、先ほどの内容が出てきます。
1 | $ mailq |
送信できていない場合は、サーバのSMTPポート(25)が開いているかを確認してください。
ポートは開いているが送信できない場合、送信先のメールサーバが受信を拒否している可能性があります。
(例えばgmailは受信を拒否しているようですが、yahooメールは許可しています)
なぜ拒否するのかというと、不明なドメインのメールアドレスから送信されているメールだからです。
不明なドメインとは、DNSで解決できないドメインということです。DNSの詳しい内容は別途調べてみてください。
もし今Postfixをインストールしたサーバにドメインが振られているのであれば、
設定ファイルの記述を変更し、そのドメインを明記することができます(設定ファイルについては後述)。
では、次にメールの送信に認証をつけるSMTP-AUTHの設定をしていきましょう。
この設定をすることで、このサーバを踏み台にされてスパムメールを送信されたりすることを防ぐことができます。
1 | # vi /etc/postfix/main.cf |
main.cfの末尾に下記を追記します。
1 2 3 4 5 6 | smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination |
postfixを再起動、saslauthdを起動します。
1 2 3 | # /etc/rc.d/init.d/postfix stop # /etc/rc.d/init.d/postfix start # /etc/rc.d/init.d/saslauthd start |
これで設定はできているはずです。
下記の手順で確認をしましょう。
1 | # telnet localhost 25 |
入力待ち状態になるので「EHLO localhost」と入力します。
「250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5」という行が表示されたらOKです。
次に、下記の内容を入力してみましょう。
「AUTH PLAIN 【エンコードされたユーザ名&パスワード】」
【エンコードされたユーザ名&パスワード】は、次のコマンドで生成できます
1 | # perl -MMIME::Base64 -e 'print encode_base64("【ユーザ名】\0【ユーザ名】\0【パスワード】");' |
そうすると「xxxxxxxxxxxxxxxxxxxxxxxx」のような文字列が生成されます。
これをコピーして、先ほどの【エンコードされたユーザ名&パスワード】にセットしましょう。
「Authentication successful」と表示されたら認証OKということになります。
初級インフラエンジニアにオススメ連載リンク
ネットワーク学習の登竜門・・
ゼロからのCCNA独学講座
Linuxの取り扱いを基礎から学ぶ
Linux資格 「LPIC-Lv1」徹底解説