Search posterous

Search all posts and users. Type a name, type a favorite song title, whatever! See what comes up.
  

More posterous blogs











More recommended blogs »

Here are posterous posts filed under postfix...

hdknr says...

このPostfixのVERPの機能で説明すれば、

user@domain へメールを送りたいときに、このReturn-Pathには owner-listname+user=domain@origin のようなメールアドレスにすると説明には書いてあります。
そう、Return-Pathに送り先の情報が隠れているのです。

これで、user@domainにメールが届かない場合には、owner-listname+user=domain@origin がメールを受け取るので、そのメールアドレスを見れば、だれ宛のメールがエラーなのかわかるというわけです。

ちなみに、通常のメルマガではこんな簡単なふうにはしないでしょう。
たいてい、何やら暗号らしきアルファベットやら、数字やらがあるとおもいますが、これが送り主のみ知っている内部のユーザ識別IDというわけです。

ただ、こういった機能がPostfixにはデフォルトであるのですね。びっくりです。

ただし、この機能は使わないほうがいいですよ。
携帯とかのメールアドレスで最大までつける人がいるんですよ。
そしたら、そのメールアドレスにほかの情報をつけるんで、最大をこえますよね。
そのせいでメールが送れなくなることがあるんです。

エラーを追跡するための情報が原因でエラーになるなんてしゃれにならないですからね。

Filed under: postfix

hdknr says...

今回はメールヘッダの部分で、Return-Pathという項目についてです。こちら、メールを配信して、エラーとなった場合などにそのメールアドレスに返事を返すためのメールアドレスです。ではメールを書くときにFromなどでもエラーが帰ってくるのですが、これはFromとこのReturn-Pathが同じようにしているだけなのです。基本的にエラーはこのReturn-Pathに帰るのです。

メルマガなどでメールを送るときには、このReturn-PathのメールアドレスとFromのメールアドレスを違ったものにします。

つまり、機械的なエラーはReturn-Pathに帰り、返事はFromというようにするのです。
こうするのは、機械的なエラーを自動的に処理したいからなのです。

Filed under: postfix

hdknr says...

Djangoならば、django.core.SMTPConnectionの_sendメソッドをオーバーライドしたクラスを定義し、django.core.EmailMessageクラスのコンストラクタで、このクラスのインスタンスを渡してやれば、同様のことができるはずだが、もっと上手いデザインができるはず。こういうことを提案している人はいないのだろうか?

その他にも、Djangoのメール送信周りはヘッダーのFromとエンベロープFromが同一になってしまうという欠点があり、微妙に使いにくい。

Filed under: postfix

hdknr says...

Postfix2.3を使ってテストしていて、"5.5.4 Unsupported option: XVERP"と言われて結構はまったが、いろいろなサイトを調べて、/etc/postfix/mail.cfにsmtpd_authorized_verp_clientsを設定しなくてはいけないということに気がついた。

smtpd_authorized_verp_clients = $mynetworks

Filed under: postfix

hdknr says...

postfixを利用して送信されるすべてのメールに対して、強制的にbccを加えることができます。記録としてすべての送信メールを保存したいときなどに便利でしょう。

設定にはmain.cfでalways_bccを利用します。下記はjohnを指定した例です。

# vi /etc/postfix/main.cf
always_bcc = john

メールを送信すると、johnにも送信されることが分かります。

$ mail -s "hello from ringo to paul" paul < /dev/null
# tail /var/log/maillog
Sep 29 17:54:27 srever2 postfix/qmgr[4734]: 58292F8AAC: from=<ringo@server2.fedora500.jp>, size=296, nrcpt=2 (queue active)
Sep 29 17:54:27 srever2 postfix/local[5873]: 58292F8AAC: to=<john@server2.fedora500.jp>, relay=local, delay=0, status=sent (delivered to mailbox)
Sep 29 17:54:27 srever2 postfix/local[5874]: 58292F8AAC: to=<paul@server2.fedora500.jp>, orig_to=<paul>, relay=local, delay=0, status=sent (delivered to mailbox)

Filed under: postfix

hdknr says...

hdknr@ydeb1:~$ sudo vim /etc/postfix/main.cf

 # by HDKNR for milter-manager 20090820
milter_default_action = accept
milter_mail_macros = {auth_author} {auth_type} {auth_authen}
smtpd_milters = unix:/milter-manager/milter-manager.sock

 hdknr@ydeb1:~$ sudo /etc/init.d/postfix reload
Reloading Postfix configuration...done.

 hdknr@ydeb1:~$ sudo tail -f /var/log/mail.log
Aug 20 11:04:33 ydeb1 postfix/master[28306]: reload configuration
/etc/postfix

Filed under: postfix

hdknr says...

default_transport (default: smtp)

The default mail delivery transport and next-hop destination for destinations that do not match $mydestination, $inet_interfaces, $proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains, or $relay_domains. In order of decreasing precedence, the nexthop destination is taken from $default_transport, $sender_dependent_relayhost_maps, $relayhost, or from the recipient domain. This information can be overruled with the transport(5) table.

Specify a string of the form transport:nexthop, where transport is the name of a mail delivery transport defined in master.cf. The :nexthop part is optional. For more details see the transport(5) manual page.

Example:

default_transport = uucp:relayhostname

デフォルトのメール配送トランスポート。次のホップの宛先。
ただし、
$mydestination
$inet_interfaces
$proxy_interfaces
$virtual_alias_domains
$virtual_mailbox_domains
$relay_domains
が先に評価される。

これらの後に、
$default_transport
$sender_dependent_relayhost_mapas
$relayhost
recipent domain
の優先順で次のホップ先が評価される。

このルールはtransport(5)で変更できる。

transport:nexthop

という表記で記述する。tranportはmaster.cfで定義されたメール配送トランスポートの名前。 :nexthop はオプショナル。

Filed under: postfix

hdknr says...

上流 SMTP の設定

野良 SMTP サーバーからの接続を受け付けない SMTP サーバーが世には存在するため、外部に送るメールは一度プロバイダの SMTP を経由させます。 外部に送るメールは smtp(8) が処理します。 main.cf に以下の行を追加します。

default_transport = smtp:[<プロバイダの SMTP サーバー>]

"[]" で囲まないと SMTP サーバーの指定ではなくドメイン名の指定と見なされ、MX レコードによる解決が行われてしまいます。 必ず "[]" で囲みましょう。

Filed under: postfix

hdknr says...

postqueue -p コマンドでメールのQueue IDを確認し、 postsuper -d [Queue ID] で削除する。
具体例は以下参照。

[root@hoge ~]# postqueue -p
-Queue ID- –Size– —-Arrival Time—- -Sender/Recipient——-
E4F6F2A1DA5 320 Tue Jul 3 13:28:35 root@hoge.com
(lost connection with mx.hage.com[123.456.789.123] while receiving the initial server greeting)
www@hage.com

– 0 Kbytes in 1 Request.
[root@hoge ~]# postsuper -d E4F6F2A1DA5
postsuper: E4F6F2A1DA5: removed
postsuper: Deleted: 1 message

Filed under: postfix

ssk says...

エンベロープMailFromに
"バウンスを受けたい架空のアカウント"+"送信先のアカウント"="送信先ドメイン"@"自ドメイン"の形で指定できればOK。


次に、/etc/postfix/main.cf に以下を追記

recipient_delimiter = +
propagate_unmatched_extensions = canonical, virtual

※1行目は、送られてくるバウンスメールの宛先アドレスは、「+」で区切りますよ、とpostfixに教えている。
※2行目は、デリミタ以降(extensions)は、エイリアスに展開する際、無視しますよということをpostfixに教えている。
※これらの変数や定義値は、postfixのデフォルトなので、変更していればそれに合わせてください。


次に、バウンスメール処理用のプログラムをperlで作成。(ここでは/home/owner/に設置)

やっぱり外部プログラム作らないといかんのね。

Filed under: postfix