[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp:01370] Re: エラーメールの返信先の設定



早川です。

実は僕もメールのヘッダ関連について完全に整理できてませんでしたので、
この際ということで可能な限り調べてまとめてみました。

SMTPプロトコル的には
MAIL FROM:コマンドで書かれたものが「エンベロープ送信者」、
RCPT TO:コマンドで書かれたものが「エンベロープ受信者」となり、
いわゆるメールヘッダは何の意味ももたない。
メールヘッダはMUA(Outlook、メールを送信するプログラム)や
MTA(Postfix等)が勝手につけるものとなっています。

つまり通常のFromヘッダに表示されるアドレスは任意に設定可能で、
実際今回のプログラムにおいてもプログラム中で任意に指定しています。
(リプライ操作をした際に宛先になってほしいアドレスを指定)

そのプログラムはPHP(PHP3)を使って書いているのですが、
(コマンドライン版を作成してスクリプト言語として使っています)
PHPのメール関数ではヘッダを指定することはできても
MAIL FROM:を指定することはできません。
MAIL FROM:はそのプログラムを起動したユーザーのメールアドレスに
自動的になります。

それでMAIL FROM:が任意に設定可能かどうか
直接telnetでお話してみたところ、任意に設定できました。
そして「エンベロープ受信者」のアドレスが正しければ送信できました。
しかし「エンベロープ受信者」のアドレスが存在しない場合は
相手先のメールサーバーが「User unknown」と返して先に進めません。

このあとの処理・対応(誰にどんなエラーメールを返すか)は、
送信元(ローカル)のMTA(Postfix)が行なっているはずです。
しかしここで「User unknown」とならずにいったん送信されてしまえば、
その後のエラーメールを返すのは相手先の(どこかの)MTAで、
これが通常は「エンベロープ送信者」に返すべき、とか、
いや返すべきじゃない、とか、
いったいどこみて返してやがんだ、とか、いろいろあるんですよね。
(携帯メールのサーバーとか)

つまるところ、エラーメールのパターンは2つあるということと、
相手先の(どこかの)MTAの挙動(どこをみて誰にエラーメールを返すか)は
必ずしも確実でない、ということが言えそうです。
ということは仮にローカルのMTA(Postfix)がエラーメールを返す
宛先を設定変更できたとしても、それだけでは十分ではないですね。

ちなみにPostfixのデフォルトの状態では(設定変更できるかどうかは別として)、
プログラムから送信する場合はプログラムを起動したユーザーに、
Outlookなどから送信する場合はメールアカウントをもつユーザーに
エラーメールが返っています。

他の言語についてはわかりませんが、
PHPに関してはメール関数ではMAIL FROM:を指定できませんから、
Postfix側でエラーメールの宛先をコントロールできなければ
僕がやろうとしていることはそもそも「不可能」ということになりますね。
ただ、PHPのメール関数を使わずに、
ソケットをオープンしてSMTPのやりとりする
自作のメール関数を作成すればできそうな感じはします。

もし宛先ごとにMAIL FROM:を違えることがPostfix側で可能ならその方法で、
そうでなければメールを送信するプログラムの中でSMTPをしゃべるか、
「エンベロープ送信者」をコントロールできる言語でメール送信プログラムを
書き換えるか、その3通りでしょうか。

-----
>>>  With your dreaming,           ☆彡  Hayakawa,Hiroshi          <<<
>>>          with your smile.    ☆彡    hayakawa@xxxxxxxxxxxxxxx  <<<
>>>                            ☆彡      Nagoya,Aichi,JAPAN        <<<

Follow-Ups
[postfix-jp:01371] Re: エラーメールの返信先の設定, ARAKI Yasuhiro
[postfix-jp:01372] Re: エラーメールの返信先の設定, Sugimura Masayuki
References
[postfix-jp:01368] Re: エラーメールの返信先の設定, Katsushi Sakurane

[検索ページ] [Postfix-JP ML Home]