【MAMP/Gmail】ローカル環境でメールをテスト送信するための設定方法!
この記事からわかること
- MAMPのローカル環境からメールを送信する方法
- Gmailで送信するためのアプリパスワードの発行と設定
- Postfixとは?
- main.cfの設定方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
ローカル環境からメールを送信する為には
PHPで「お問い合わせフォーム」を作成する際など、MAMPのローカル環境でメールをテスト送信する為には設定を変更しない送受信することができません。。今回は「Gmailを使用してメールのテスト送信」を目標に一連の作業方法をまとめていきます。
流れ
- Gmailのアプリパスワードを取得
- Postfixの設定(/private/etc/postfix/main.cf)を変更
- アプリパスワードファイルの作成
- テストメール送信
Postfixとは
Postfixはメール配信を管理するための電子メールサーバーソフトウェアの一種です。他にもSendmailなどがありますが、よりセキュアで信頼性が高く、扱いやすいという特徴があります。 PostfixはMTA(メール転送エージェント)として動作し、SMTP(Simple Mail Transfer Protocol)を使用して電子メールの送受信を処理します。
複数のドメインと複数のメールボックスをサポートしており、メールの配信、転送、エイリアスの設定、配信の制限、スパムメールのフィルタリングなどの機能を提供します。
Macにはデフォルトで組み込まれているので、設定を変更することでローカル環境でもメールを配信できるようにしていきます。
今回編集する「main.cf」は、Postfixの動作を制御するための設定パラメータを含んだ設定ファイルです。Postfixのホスト名、送信元ドメイン、宛先メールサーバー、SMTP認証の設定、メールキューの設定、メールの配信方法などが設定項目として用意してあります。
1.Gmailのアプリパスワードを取得
GmailをMAMPなどの外部のアプリで扱いたい場合はGmail側でも設定をしないといけません。その設定は対象のGoogleアカウントに管理者権限が付与されているかどうかで異なります。
管理者権限が付与されている場合
管理者権限が付与されている場合は「安全性の低いアプリを許可する」の設定をONにすればOKです。もし以下のように「2段階認証プロセスが有効になっているアカウントでは利用できません。」と出た場合はアプリパスワードを使用した方法で行ってください。
管理者権限が付与されていない場合
管理者権限が付与されていない場合はアプリパスワードを発行する方法を使用します。アプリパスワードを発行するには「2段階認証プロセスが有効になっているアカウント」である必要があるので設定をしておいてください。
- 対象のGoogle アカウントに移動
- 「セキュリティ」をクリック
- 「Google にログインする方法」>「2段階認証プロセス」をクリック
- 下にスクロールして 「アプリパスワード」をクリック
- 「アプリを選択」をクリックし使用するアプリを選択
- 「デバイスを選択」 をタップし、使用するデバイスを選択
- 「生成」をクリック
- 黄色いバー内に表示されている16文字のコードがアプリパスワードになります。下部に書いてある「使い方」は無視してください
アプリパスワードは一度発行するだけで永続的に使用できますが、何度でも発行できるのでコピーし忘れてしまった場合は再度発行してください。
2.Postfixの設定(/private/etc/postfix/main.cf)を変更
続いて「Postfix」の設定を変更していきます。Macでは以下のパスにある「main.cf」という設定ファイルを編集していきます。このファイルはPostfixの動作を制御するための設定パラメータを記述するファイルです。
/private/etc/postfix/main.cf
- 「Finder」 >「移動」>「フォルダへ移動...」をクリック
- 「/private/etc/postfix/main.cf」と入力して表示されたらクリックして移動
- 「情報を見る」>「鍵アイコン」をクリックしてアクセス権を変更
- 「共有とアクセス権」が「「読み/書き」」になっているか確認
- 「main.cf」をエディタ(VS Codeなど)で開きファイルの一番下にコードを記述
- アクセス権を元に戻す
# Gmail on MAMP
#
myorigin = gmail.com
myhostname = smtp.gmail.com
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/private/etc/postfix/アプリパスワード
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
inet_protocols = all
smtp_use_tls = yes
smtp_tls_security_level = encrypt
tls_random_source = dev:/dev/urandom
コードは自身のアプリパスワードに置き換えて記述してください。
3.アプリパスワードファイルの作成
/private/etc/postfix/
直下にアプリパスワードファイルを作成します。今回はVimを使用するので分からない方は以下記事を参考にしてください。
// ファイルを作成
$ sudo vim /private/etc/postfix/アプリパスワード
// PCパスワードを求められるので入力
// キーを押してインサートモードに
$ i
// 以下1行を入力
[smtp.gmail.com]:587 sample@gmail.com:アプリパスワード
// インサートモード終了
$ ESCキー
// 保存して閉じる
$ :wq
// dbファイル生成
$ sudo postmap /private/etc/postfix/アプリパスワード
「アプリパスワード.db」が同階層に生成されていれば成功です。
4.テストメール送信
これで全ての準備が整ったので実際にメールを送信してみます。ターミナルから簡単にテスト送信ができるので実行してみます。
// スタート
$ sudo postfix start
// テストメール送信
$ date | mail -s test sample@gmail.com
// ストップ
$ sudo postfix stop
正常にメールが届けば成功です。
またphpのmb_send_mail
関数などを使用して送信することも可能です。
mb_send_mail(送信先,タイトル,本文,追加ヘッダ,追加コマンドラインパラメータ)
以下は実装例です。
$to = 'sample@example.com'; // 宛先
$subject = 'テストメール'; // 件名
$message = 'これはテストメールです。'; // 本文
$headers = 'From: sender@example.com' . "\r\n" .
'Reply-To: sender@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion(); // メールヘッダー
// メールを送信する
if (mb_send_mail($to, $subject, $message, $headers)) {
echo 'メールが送信されました。';
} else {
echo 'メールの送信に失敗しました。';
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。