ホームページ制作やWEBサービス開発を行うにあたり、MAMPやXAMPP等を用いてローカル開発環境を構築している方も多いと思います。
フォームを搭載したホームページの制作やメール配信を行うWEBサービスの開発では、スピーディーな開発を行うためにメール配信もMac内のローカルサーバーから行えたらと思うことも多くなります。
そこで、Macにデフォルトでインストールされているメール転送エージェントのPostfixを設定してメール送信する方法を紹介します。
Google検索するとGmailのメールアドレスを用いてメール送信する方法は多く紹介されていますが、ここではオリジナルドメインのメールアドレスを使用します。
Mac | macOS Big Sur(11.1) + MAMP(フリー) |
---|---|
送信用SMTPサーバ | さくらレンタルサーバー |
ドメイン | さくらレンタルサーバーで運用しているオリジナルドメイン |
Postfixのバージョン確認
Macでターミナルを起動してPostfixのバージョンを確認してみます。
バージョンは3.2.2みたいです。
postconf | grep mail_version [出力結果] mail_version = 3.2.2
main.cfを設定
/etc/postfix/main.cf を編集してPostfixでさくらのSMTPサーバーでメールをリレーできるようにします。
ターミナルを起動してviエディタでmain.cfを設定していきます。管理者権限でないと編集できないのでコマンドの先頭にsudoが必要です。
sudo vi /etc/postfix/main.cf
パスワードを聞かれたらMacのパスワードを入力して[ Enter ]キーを押します。
main.cfが開けたら一番したに移動。
[ i ]キーを押して編集モードに切り替えます。
ターミナルに — INSERT — が表示されたらmain.cfの一番下に以下を追加します。
myhostname = XXX.sakura.ne.jp myorigin = ドメイン relayhost = XXX.sakura.ne.jp:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/private/etc/postfix/sasl_XXX_passwd smtp_sasl_security_options = noanonymous
[ esc ]キーを押して編集モードを終了します。
[:wq]キーで保存して終了します。
XXX.sakura.ne.jp の部分は環境に合わせて変更してください。
smtp_sasl_password_maps の sasl_XXX_passwd の部分はわかりやすい任意の名前をつけます。
SMTP認証情報を記述したファイルを作成
ターミナルで以下のコマンドを実行してファイルを作成します。
sudo vi /etc/postfix/sasl_XXX_passwd
sasl_XXX_passwd の部分は main.cf の smtp_sasl_password_maps に記述したものと同じにします。
認証情報を記述
viエディタが起動したら以下のように入力します。
[ i ]キーを押して編集モードに切り替えます。
ターミナルに — INSERT — が表示されたら以下のように記述します。
XXX.sakura.ne.jp:587 ユーザー@XXX.sakura.ne.jp:ユーザーパスワード
[ esc ]キーを押して編集モードを終了します。
[:wq]キーで保存して終了します。
メールを初期ドメインのみで運用している場合はユーザー名は初期ユーザー名、ユーザーパスワードはサーバーパスワードを指定します。
ハッシュマップデータベースを生成
ターミナルで以下のコマンドを実行します。
sudo postmap /etc/postfix/sasl_XXX_passwd
sasl_XXX_passwd の部分は上で使用したものと同じにします。
/etc/postfix/ ディレクトリに sasl_XXX_passwd.db が生成されます。
postfixを再起動
以下のコマンドを実行してpostfixを再起動します。
sudo postfix reload [出力結果] postfix/postfix-script: refreshing the Postfix mail system
postfix/postfix-script: fatal: the Postfix mail system is not running
と表示された場合は sudo postfix start を実行しておきます。
ターミナルからメール送信
ここまで来たら実際にメールを送信してみます。
ターミナルで以下のように入力してテストメールを送信してみます。
送信元メールアドレスは [Macのユーザー名@ドメイン名] で送信されます。
mail 送信先メールアドレス [ Enter ]キー
mail の後ろに任意の送信先メールアドレスを入力します。
Subject: サブジェクト(任意のメールのタイトル) [ Enter ]キー 本文を入力 [ Enter ]キー . [ ドット(ピリオド) ]キーを入力したら[ Enter ]キー
本文を入力したら[ ドット(ピリオド) ]キーを入力して送信内容の作成終了と送信行います。
mailコマンドは以下のように記述することもできます。
mail -s サブジェクト(任意のメールのタイトル) 送信先メールアドレス
PHPでメール送信
開発をスムーズに行うために、ローカル環境上のプログラムからメールを送信できるようにします。ここでは、MAMPを用いたPHP上でmb_send_mail()関数を使ってメールを送信してみます。
送信するためのフォーマットは mb_send_mail(宛先, 件名, メッセージ, ヘッダ) となります。
<?php $to = "送信先メールアドレス"; $subject = "タイトル"; $message = "本文"; $headers = "From: 送信元メールアドレス"; mb_send_mail($to, $subject, $message, $headers); ?>
まとめ
どのWEBサイト・WEBサービスでもメールの送信は当たり前のように行われています。
メールの送信機能はWEBアプリケーションの開発では避けて通れないので、ローカルの開発環境でメールの送信機能が実行できるようにしておくと開発スピードも向上するのではないかと思います。