お問い合わせ
MENU

Macのローカル開発環境からメール送信するPostfix設定【MAMP・さくらレンタルサーバー・独自ドメイン】

    ホームページ制作や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アプリケーションの開発では避けて通れないので、ローカルの開発環境でメールの送信機能が実行できるようにしておくと開発スピードも向上するのではないかと思います。