MacでPostfixを起動

PerlやPHPを使った開発でメールを送信する機能を実装することがありますが、Macの場合、標準の状態ではメールが送信されないようです。

※sendmailコマンドや、mail関数(phpの場合)を使って送信する場合の話です。以下は、Mac OSX 10.7.5で試しました。環境によっては違うかもしれません。

 

Macには最初からPostfixがインストールされているのですが、自動起動はしないので設定して起動する必要があります。

ps_postfix.png

sudoを使ってルートユーザで起動します。

postfix_start.png

警告が出ていますが、とりあえず起動はしたようです。

/Library/Server/Mail/Data/mta に他のユーザが書き込みが出来てしまうというセキュリティ上の警告です。

library_ls.png

グルーブに書き込み権限が設定されているので、これをとってチェック&再起動してみます。

postfix_chmod.png

警告が消えました。

まだ送信に使用するメールサーバの設定がされていないので、次にこれを設定します。

vi_main_cf.png

/etc/postfix/main.cf に以下のような設定をします。ここではGmailのSMTPサーバを使っています。

postfix_main.png

編集が終わったら、間違いがないか、チェック&再起動してみます。

postfix_recheck.png

上の設定で、sasl用のパスワードファイルを/etc/postfix/sasl_passwd におく設定にしたので、まだ作ってなければこれを作成します。

vi_passwd.png

適当なフォルダで、以下のような内容のテキストファイルを作成します。

setup_email.png

モザイクの部分は、メールアドレス:パスワードという形式で設定します。

例. [smtp.gmail.com]:587 tekitouna_account@gmail.com:tekitouna_password

 

作成したファイルにpostmapコマンドを使って、アカウントのテーブルファイルを作成します。

postmap.png

sasl_passwd.db が作成されるので、これを/etc/postfix/ へコピーしてやります。

passwd_copy.png

コピーが終わったら、チェック&再起動します。

postfix_reload.png

これで、プログラムからメールが送信できます。

次の様なPHPスクリプトを書いてテストして、無事メールが届けば成功です。

mail_php.png

送れない場合は、ログファイル(/var/log/mail.log)を探ってみてください。

 

mail関数の呼び出し部分を次のように変更すれぱ、手軽にEvernoteへ投稿できるメモスクリプトになります。


mail('Evernoteの投稿用アドレス', date('Y/m/d') . ' @MyNotebook', $argv[1]);

引数で渡された内容を投稿するようにしています。また、date関数を使って件名に日付けが入るようにしています。Evernoteへメールで送る場合、件名に@ノートブックを含めることで任意のノートブックへ送信できるようです。詳しくは、http://blog.evernote.com/jp/2010/03/23/240 を参照ください。

mail_en.png

 

起動させたPostfixを停止する場合は、


sudo postfix stop

と入力します。