LoginSignup
4
2

More than 5 years have passed since last update.

【Postfix】メッセージヘッダ

Posted at

はじめに

  • メールヘッダについて勉強したことをメモ。
  • RFC28223.6. Field definitions を要約したような何か。

メッセージの概要

  • 電子メールメッセージは以下の2つから構成される。
    • メッセージヘッダ
    • メッセージ本体
  • メッセージヘッダのフィールドは RFC2822 にて規定されている。
  • 最低限必要なヘッダフィールドは Date:From: のみ。
  • メッセージヘッダとメッセージ本体との間は空白行で区切られる。

ヘッダフィールド

Date:

  • メッセージ送信を開始した時間を表す。
  • 必須フィールド。

From:, Sender:, Reply-To:

  • From: はメッセージの著者を、Sender: はメッセージの送信者を表す。
  • From: は必須フィールド。
  • メッセージの著者と送信者が同一の場合、 Sender: フィールドを使用すべきではない。
  • これらのフィールドを使い分けるケースとして、RFC2822 では、メッセージの作成者が、その送信を秘書に代理させる例が挙げられている。
  • Reply-To: はメッセージの著者が返信先として提案するもの。

To:, Cc:, Bcc:

  • おなじみ、メールクライアントで指定するアレ。
  • Bcc: フィールドが定義されているメッセージについて、、 RFC2822 では次のいずれかの実装を規定している。
    1. Bcc: フィールドを削除して、 To:, Cc:, Bcc: で指定された全ての宛先に同一のメッセージを送る。
    2. To: 及び Cc: で指定された宛先には、 Bcc: フィールドを削除した同一のメッセージを送信する。Bcc: の宛先が A,B,C の 3 人いる場合、 A に送信されるメッセージの Bcc: フィールドから B,C が削除される。
    3. 値が定義されていない、空の Bcc: フィールドを持つメッセージとして送信する。
  • ちなみに To: は必須フィールドではない模様。たいていのメールクライアントではここを指定しないと送信できないため直感的ではないが。

Subject:

  • おなじみ、メールクライアントでは「件名」として表示されるアレ。
  • RFC2822 では同節にて Comments:, Keywords: が規定されているが、あまり使われていないようなので読み飛ばした。

Return-Path:, Received:

  • これらのフィールドについては「 RFC2821 を見ろ」とのことなので、 https://www.rfc-editor.org/pdfrfc/rfc2821.txt.pdf をみてみる。
  • が、メールリレーの勉強をしないと理解できなさそうだったので今回は断念。

エンベロープアドレス

  • メッセージヘッダの To: フィールドは、実際にメッセージが配信される場所とは関係ない。
  • 実際にメッセージ配信を制御するのは エンベロープアドレス と呼ばれるもので、これは ヘッダではなく SMTP 対話によって指定される
  • ふつう MUA で To: フィールドを指定すると、それがエンベロープアドレスになる。
  • しかし上述の通り、 To: は必須フィールドではないため、全てのケースで To: フィールドの値とエンベロープアドレスとが一致するとは限らない。

  • sendmail コマンで実験してみる。

  • まずはヘッダ指定なしで、実在するアドレスを直接引数に指定して送信。

  • ちなみに sendmail コマンドに対話的コンソールのようなものはない。ヘッダのキー含め全て自分で入力する。ピリオドを入力してエンターを押すと送信される。

  [ec2-user@public-a ~]$ sendmail test@gmail.com

  this is test
  .
  [ec2-user@public-a ~]$ 
  • 受信先のメールクライアントでヘッダを見てみると、 To: フィールドが定義されていないことがわかる。
  Delivered-To: test@gmail.com
  Received: by 2002:a2e:91d6:0:0:0:0:0 with SMTP id u22-v6csp1659422ljg;
          Sun, 4 Nov 2018 07:47:53 -0800 (PST)
  ...
  (省略)
  ...
  Received: by public-a.localdomain (Postfix, from userid 1000) id BE8039076; Mon,
    5 Nov 2018 00:47:52 +0900 (JST)
  Message-Id: <20181104154752.BE8039076@public-a.localdomain>
  Date: Mon,
    5 Nov 2018 00:47:48 +0900 (JST)
  From: EC2 Default User <ec2-user@public-a.localdomain>

  this is test
  • 次に、 To: フィールドを指定して送信してみる。
  [ec2-user@public-a ~]$ sendmail test@gmail.com
  To:hoge

  this is test
  .
  [ec2-user@public-a ~]$ 
  • 先ほど同様、受信先のメールクライアントでヘッダを見てみると、 送信元にて指定した To: フィールドが確認できた。 To: フィールドは受信先の制御を行っていないことがわかる。
  Delivered-To: test@gmail.com
  Received: by 2002:a2e:91d6:0:0:0:0:0 with SMTP id u22-v6csp1662552ljg;
          Sun, 4 Nov 2018 07:51:58 -0800 (PST)
  ...
  (省略)
  ...
  Received: by public-a.localdomain (Postfix, from userid 1000) id 2B9979076; Mon,
    5 Nov 2018 00:51:57 +0900 (JST)
  To: hoge@public-a.localdomain
  Message-Id: <20181104155157.2B9979076@public-a.localdomain>
  Date: Mon,
    5 Nov 2018 00:51:47 +0900 (JST)
  From: EC2 Default User <ec2-user@public-a.localdomain>

  this is test

つづく

  • EC2 からのメール送信申請や /etc/postfix/main.cf による設定は何もやっていないので、このへんの勉強は次回。

参考文献

  • Kyle D. Dent (著), 菅野 良二 (翻訳) (2004) 『Postfix実用ガイド』オライリー・ジャパン
4
2
0

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
  3. You can use dark theme
What you can do with signing up
4
2