JumpBoxを使ったローカル環境の作成(その11・メール送信の設定)

LAMPdには、メールサーバーのPostfixもインストールされています。
ただ、一般的なユーザーで、プロバイダ経由でインターネットに接続している場合、プロバイダのOP25B(Outbound Port 25 Blocking)によって、LAMPdから外部へメールを送信することができません。

そこで、Yahooメールのメールサーバーにメールを中継して、LAMPdから外部へメールを送信する方法を紹介します。

1.Yahoo IDの取得

Yahooメールを中継してメールを送信するために、Yahoo JapanのIDをお持ちでない方は、あらかじめYahoo IDを取得してください。

2.Postfixの設定の書き換え

次に、Postfixの設定ファイル(main.cf)を書き換えて、Yahooのメールサーバーにメールを中継するようにします。

「sudo nano /etc/postfix/main.cf」のコマンドを入力すると、「nano」というテキストエディタが起動します。
カーソルキーを押してmain.cfファイルの末尾に移動し、以下の内容を追加します。

smtpd_sasl_auth_enable = no
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_application_name = smtpd
relayhost = [smtp.mail.yahoo.co.jp]:587

main.cfの書き換えが終わったら、Ctrlキー+Xキーを押します。
「Save modified buffer」のメッセージが表示されますので、「Y」キーを押します。
次に、ファイル名を入力する状態になりますので、そのままEnterキーを押します。
これで、ファイルが保存され、nanoが終了します。

3.パスワードマップファイルの作成

次に、Yahooのメールサーバーに接続するための、ユーザー名とパスワードの対応を書いたファイルを作ります。

まず、「sudo nano /etc/postfix/sasl_passwd」のコマンドを入力します。
すると、nanoが起動して、空のファイルを編集する状態になりますので、以下のように入力します。

[smtp.mail.yahoo.co.jp]:587 Yahoo ID:パスワード

また、「パスワード」には、Yahooにログインする際のパスワードを書きます。
例えば、Yahoo IDが「abc12345」、パスワードが「hogehoge」の場合だと、以下のように書きます。

[smtp.mail.yahoo.co.jp]:587 abc12345:hogehoge

入力が終わったら、Ctrlキー+Xキーを押してファイルを保存し、nanoを終了します。
そして、以下のコマンドを入力して、パスワードのデータベースファイルを作ります。

sudo postmap /etc/postfix/sasl_passwd

4.Postfixの再起動

次に、以下のコマンドを入力して、Postfixを再起動します。

sudo postfix reload

5.Mail.pmの書き換え(Movable Type)

Movable Typeからメールを送信できるようにしたい場合、JumpboxのMovable Typeのディレクトリの中で、「lib」→「MT」ディレクトリにある「Main.pm」ファイルを書き換えます。
Movable Type 5.01だと、Mail.pmの156行目を以下のように書き換えます。
「Yahoo ID」の箇所は、ご自分のYahoo IDに置き換えます。

書き換え前

exec $sm_loc, "-oi", "-t" or

書き換え後

exec $sm_loc, '-f Yahoo ID@yahoo.co.jp', "-oi", "-t" or

6.php.iniの書き換え

WordPress等のPHPのアプリケーションからメールを送信できるようにする場合、php.ini(PHPの設定ファイル)の「sendmail_path」の行を書き換えます。

まず、以下のコマンドを実行して、php.iniを編集する状態にします。

sudo nano /etc/php5/apache2/php.ini 

次に、Ctrlキー+Wキーを押して検索を行う状態にし、キーワードとして「sendmail_path」を入力して、Enterキーを押します。
すると、以下の行にカーソルが移動します。

;sendmail_path =

この行を以下のように書き換えます。
「Yahoo ID」の箇所は、ご自分のYahoo IDに置き換えます。

sendmail_path = /usr/sbin/sendmail -f Yahoo ID@yahoo.co.jp -t -i

書き換えが終わったら、Ctrlキー+Xキーを押してファイルを保存し、nanoを終了します。
そして、以下のコマンドを実行して、Apacheを再起動します。

sudo /etc/init.d/apache2 restart