質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

Q&A

解決済

2回答

3941閲覧

GmailのSMTPリレーを用いてメール送信した場合の送信元アドレス

avantgarden

総合スコア121

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

0グッド

1クリップ

投稿2022/03/13 08:16

編集2022/03/13 13:29

メールの送信パターンは

  • WebサイトからPHP(phpmailerなど)で送信
  • クライアントPC(メーラー)で自サーバードメインのメールアカウントを設定し、メーラーから送信

の2パターンです。

※自サーバーのMTAはPostfixなので、Postfixの前提で質問内容を記載します
※メーラーでのメールアカウント設定は、自サーバーでメールアカウントを作成した際のアカウント情報(アカウント名、パスワード)で設定することを前提にしています。
※自サーバーはCentOSのVPSです。

PHPから送信の場合

use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'PHPMailer/src/Exception.php'; require 'PHPMailer/src/PHPMailer.php'; require 'PHPMailer/src/SMTP.php'; $mail = new PHPMailer(true); $host = 'smtp.gmail.com'; $username = 'Gmailアカウント@gmail.com'; $password = 'Googleのアプリパスワード'; $from = '自サーバードメインのメールアドレス'; $fromname = '差出人名'; $to = '送信先メールアドレス'; $toname = '宛名'; $subject = '件名'; $body = '本文'; $mail->isSMTP(); $mail->SMTPAuth = true; $mail->Host = $host; $mail->Username = $username; $mail->Password = $password; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->CharSet = "utf-8"; $mail->Encoding = "base64"; $mail->setFrom($from, $fromname); $mail->addAddress($to, $toname); $mail->Subject = $subject; $mail->Body = $body;

を実行すると、受信側での送信元メールアドレスが「Gmailアカウント@gmail.com」になります。これを「自サーバードメインのメールアドレス」になるようにしたいのですが、これまでSMTPリレーをさせたことが無く、根本的な質問も含め、下記についてご教示いただけでしょうか。

  1. 上記のPHPによるメール送信は、自サーバーのSMTPから送信→GmailのSMTPを経由して送信先アドレスへ送信という流れでメール送信が行われている、という理解で合ってるのでしょうか。

  2. メーラーから送信する場合、自サーバーのPostfixでGmailのSMTP認証ファイル、DBファイル、main.cfの追記を行うことでリレー送信ができるということを調べたのですが、この場合は受信側での送信元アドレスは「自サーバードメインのメールアドレス」になるのでしょうか。

  3. 2のPostfixの設定は、PHPからメールを送信(上記コードの内容で送信)する場合も必要なのでしょうか。(1の質問内容自体にも関わる質問です)

よろしくお願い致します。

【追記】
Gmail経由で送信させようとする目的は、メールの信頼性を高めることです。自サーバーのSMTPからの送信だと、PSFやDKIMなどの対策を行っても、迷惑メールと判定されたり到達しなくなることがあるため、リレー送信させることで、より安定的にメール送信を行いたいと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

個人での利用であれば、Gmailを使った場合については回答のあるとおりなので、
自宅でインターネット回線を引いているなら、そのプロバイダーのSMTPサーバーを経由するのが良いかと思います。
自宅回線以外からでもSMTPサーバーの利用は可能なので、同じやり方で出来るかと思います。
少なくともSo-netとNiftyは差出人メールアドレスは自由ですので、メジャーな他社も同様ではないかと思います。

投稿2022/03/13 12:39

otn

総合スコア85072

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avantgarden

2022/03/13 13:15

※上のコメントは記載箇所を間違えました… 削除リクエストを出しています。 初歩的なことかも知れませんが、プロバイダーのSMTPとは何でしょうか? クライアントPCから送信する場合も、送信元は自サーバーのSMTP(メーラーのアカウント設定で設定している自サーバーのSMTPサーバー)だという認識なのですが…
otn

2022/03/13 15:27

メールアドレスを提供するプロバイダーは、SMTPサーバーとPOPやIMAPサーバーを提供しています。 そういうプロバイダーを使ったこと無いということですかね?自宅に固定回線無し?
avantgarden

2022/03/14 13:31

すみません。大事なところを見逃していたのですが、この質問は個人利用においての質問ではありません。プロバイダーに関しては、たしかに昔はOCNとかプロバイダーのメールアドレスを使用したりしました。個人利用であればその手段があるということですね。
otn

2022/03/14 14:08

回答の冒頭に書いた通り、個人利用(で有料のGoogle Workspaceの利用が難しい場合)についての回答です。 企業での利用なら現在自社でSMTPサーバーを持ってないのでしょうか?自社内からのメール送信に使っているもの。 または、メルマガ的な大量配信の場合は、メール配信の専門企業を使うのが普通のようです。
avantgarden

2022/04/06 03:39

専用のSMTPサーバーを利用し、そこへ接続して送信することで解決いたしました。 返信遅くなりましたが、いろいろとありがとうございます。
guest

0

$mail = new PHPMailer(true);
$host = 'smtp.gmail.com';
$username = 'Gmailアカウント@gmail.com';
$password = 'Googleのアプリパスワード';
$from = '自サーバードメインのメールアドレス';
(中略)
$mail->SMTPAuth = true;
$mail->Host = $host;
$mail->setFrom($from, $fromname);
(後略)

を実行すると、受信側での送信元メールアドレスが「Gmailアカウント@gmail.com」になります。これを「自サーバードメインのメールアドレス」になるようにしたいのですが、これまでSMTPリレーをさせたことが無く、根本的な質問も含め、下記についてご教示いただけでしょうか。

まず、質問のプログラムは、PHPMailer で SMTP サーバとして smtp.gmail.com を指定しているので、 自ドメインの Postfix から SMTPリレーを利用して、gmail から送信しているわけではありません。

また、無料版の gmail をSMTPリレー先に指定した場合、差出人は gmail アカウント固定になります。

有料の Google Workspace を使用している場合は、SMTP リレー: Gmail 以外の送信メールを Google 経由にする の設定で変更可能です。

ところで、SMTPリレーを導入している目的は何でしょうか。

VPSで独自ドメインのメールサーバーを運用されているのであれば、Postfix で SMTP リレーをせずに受取人へ直接配信するようにすればよいのではないかと思います。


  1. 上記のPHPによるメール送信は、自サーバーのSMTPから送信→GmailのSMTPを経由して送信先アドレスへ送信という流れでメール送信が行われている、という理解で合ってるのでしょうか。

いいえ。

PHPMailer で、

$mail->Host = $host;

と指定しているので、PHP から $host に指定したsmtp.gmail.com に直接 smtp 接続して gmail から送信します。

2.メーラーから送信する場合、自サーバーのPostfixでGmailのSMTP認証ファイル、DBファイル、main.cfの追記を行うことでリレー送信ができるということを調べたのですが、この場合は受信側での送信元アドレスは「自サーバードメインのメールアドレス」になるのでしょうか。

リレー先ホストを経由する設定している場合は、リレー先ホストの設定によります。

リレー先ホストが任意のドメインを差出人に使用することを認めている場合は、許可されているドメインであれば差出人メールアドレスに使えると思います。許可していない場合は、リレー先ホストのドメインで上書きされたり、エラーになったりすると思います。

gmail の場合は、上記に回答したように 有料の Google Workspace では設定によって可能ですが、無料の gmail ではできません。

3.2のPostfixの設定は、PHPからメールを送信(上記コードの内容で送信)する場合も必要なのでしょうか。(1の質問内容自体にも関わる質問です)

質問に記載されている PHPMailer で、smtp.gmail.com を利用してメールを送るコードの場合は 自ドメインのPostfix を経由するわけではありませんので、Postfix の設定は関係ありません

投稿2022/03/13 11:09

CHERRY

総合スコア25201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avantgarden

2022/03/13 13:11

> ところで、SMTPリレーを導入している目的は何でしょうか。 自サーバーのSMTPからの送信だと、PSFやDKIMなどの対策を行っても、迷惑メールと判定されたり到達しなくなることがあるためです。Gmailを経由させることの効果がどれほどなのか分かっていないのですが、メールの信頼性を高めることが目的です。(本文にも追記いたしました) PHPMailerに関しては私の理解が間違っていたようで、ご説明いただき有難うございます。 メーラーからの送信に関しては、第三者のネット記事で恐縮なのですが、 https://blog.apar.jp/linux/15439/ などの記事をみて、Gmail経由にすることが可能だと思っていたのですが、たしかに無償Gmailだと差出人ドメインの設定とかはないと思うので、踏み台対策もなくそのままリレーさせられるというのはおかしい気がします。記事の内容も、記載はないものの前提条件があるのでしょうかね…(もしくは有償版のことを書いてあるのか) 自前でリレーサーバーを立てるか(これはハードルが高いのですが)、もしくはSendGridのようなサービスを利用するという選択肢はあるかと思いますが、目的とコストのバランスを考えて、Gmailによるリレーを一度検証してみたいという状況です。(まだ実際に導入しているわけではありません)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問