PerlやPHPを使った開発でメールを送信する機能を実装することがありますが、Macの場合、標準の状態ではメールが送信されないようです。
※sendmailコマンドや、mail関数(phpの場合)を使って送信する場合の話です。以下は、Mac OSX 10.7.5で試しました。環境によっては違うかもしれません。
Macには最初からPostfixがインストールされているのですが、自動起動はしないので設定して起動する必要があります。
sudoを使ってルートユーザで起動します。
警告が出ていますが、とりあえず起動はしたようです。
/Library/Server/Mail/Data/mta に他のユーザが書き込みが出来てしまうというセキュリティ上の警告です。
グルーブに書き込み権限が設定されているので、これをとってチェック&再起動してみます。
警告が消えました。
まだ送信に使用するメールサーバの設定がされていないので、次にこれを設定します。
/etc/postfix/main.cf に以下のような設定をします。ここではGmailのSMTPサーバを使っています。
編集が終わったら、間違いがないか、チェック&再起動してみます。
上の設定で、sasl用のパスワードファイルを/etc/postfix/sasl_passwd におく設定にしたので、まだ作ってなければこれを作成します。
適当なフォルダで、以下のような内容のテキストファイルを作成します。
モザイクの部分は、メールアドレス:パスワードという形式で設定します。
例. [smtp.gmail.com]:587 tekitouna_account@gmail.com:tekitouna_password
作成したファイルにpostmapコマンドを使って、アカウントのテーブルファイルを作成します。
sasl_passwd.db が作成されるので、これを/etc/postfix/ へコピーしてやります。
コピーが終わったら、チェック&再起動します。
これで、プログラムからメールが送信できます。
次の様なPHPスクリプトを書いてテストして、無事メールが届けば成功です。
送れない場合は、ログファイル(/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 を参照ください。
起動させたPostfixを停止する場合は、
sudo postfix stop
と入力します。