LoginSignup
0

More than 3 years have passed since last update.

sendmailコマンド(Postfix)でEnvelopeFrom, HeaderFromを設定して送信する方法

Last updated at Posted at 2019-10-30

目的

メールサーバを構築したときに、メール送信のテストを簡単に行いたいので、sendmailコマンドの使い方をまとめます。
今回構築する環境では、試験のためにEnvelopeFromとHeaderFromを設定しわける必要があり、その設定方法もまとめます。

動作環境

CentOS 7.3 + Postfix 2.10.1-6.el7.x86_64

sendmaiコマンド

$ sendmail -f Envelope-From-Address@xxxxx.xxx.xx RCPT-To-Address@yyyy.yyy.yy
From: Header-From-Address@xxxxx.xxx.xx
To: Mail-To-Address@yyyy.yyy.yy
Subject: TEST

テストメールです
.

sendmailコマンドの-fオプションでEnvelopeFromを設定できます。続けて、RCPT-Toを設定します。
sendmailコマンドの行を入力すると、入力待ちとなるので、ヘッダ部を入力します。
ヘッダ部はLFで改行します。
当初(意図せず)CRLFになっていて、Gmailでは正しくヘッダFromもToも表示されるのですが、Thunderbirdでは本文中に表示されてしまいました。

なお、上記はメール本文をその場で手入力していますが、ワンライナーにすると下記のようになります。sendmailコマンドは引数に件名を指定できないようですので、echoで流し込む形を取ってみました。mailコマンド(mailxパッケージ)では件名を引数に取れたはずです。

$ echo -e "From: Header-From-Address@xxxxx.xxx.xx\nTo: Mail-To-Address@yyyy.yyy.yy\nSubject: Test\n\nテストメールです" | sendmail -i -t -f Envelope-From-Address@xxxxx.xxx.xx RCPT-To-Address@yyyy.yyy.yy

EnvelopeFromとHeaderFromの違い

メール配送時に使われるのがEnvelopeFrom。メーラに表示されるのがHeaderFrom。
なお、SPFチェックで使われるのはEnvelopeFromだと思います(EnvelopeFromのドメイン部分のDNSに照会される)。違うようでしたらどなたかツッコミを入れて下さい。

余談ですが、一般的にHeaderFromもチェックしているケースもあるのかは不明ですが、たまたま自社のサーバはチェックしていて、社外から自社のドメインをかたって送信されるメールはブロックしていました。・・・このため、社外のクラウドから自社のメールアドレスをFromにしたメルマガを配信すると、自分達だけブロックされて受け取れないという事態に陥り、そのテストのためこのsendmailコマンドを使ったのでした。。。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0