hdknr’s posterous

 
Filed under

postfix

 

Postfix:VERPって知っていますか?

この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   VERP  

Comments [0]

Postfix:VERPって知っていますか?

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

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

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

Filed under  //   postfix   VERP  

Comments [0]

VERP形式でメールを送信する - スコトプリゴニエフスク通信

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

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

Filed under  //   mail   postfix   Python   VERP  

Comments [0]

VERP形式でメールを送信する - スコトプリゴニエフスク通信

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

smtpd_authorized_verp_clients = $mynetworks

Filed under  //   postfix   Python   VERP  

Comments [0]

TEMPEST: Fedoreの技 postfixですべてのメールにbccを指定するには

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  //   archive   copy   postfix  

Comments [0]

milter-manager: Debian : postfixの設定

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  //   Debian   milter   milter-manager   postfix  

Comments [0]

Postfix Configuration Parameters

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  //   default_transport   postfix  

Comments [0]

MTA / MDA - Postfix のセットアップ - 麦酒堂

上流 SMTP の設定

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

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

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

Filed under  //   default_transport   postfix  

Comments [0]

Postfix/Dovecot/mailman

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  //   mailman   postfix   postqueue   postsuper  

Comments [0]

Postfix TLS サポート

TLSマネージャ特有の設定

TLSのような暗号ソフトウェアのセキュリティは、キーやその他の情報に対して 予期できない数値を生成する能力に致命的に依存します。その目的のために、 tlsmgr(8) プロセスは擬似乱数生成器 (Pseudo Random Number Generator, PRNG) プールを管理します。これは smtp(8) および smtpd(8) プロセスの初期化の際に問い合わせを受けます。デフォルトでは、これらのデーモンは 32バイト、つまり256ビットを要求します。これは128ビット (もしくは168ビット) の セッションキーを生成するのに十分すぎます。

例:

/etc/postfix/main.cf:
    tls_daemon_random_bytes = 32

メモリ内PRNGプールを管理するため、tlsmgr(8) は起動時と動いている間に外部ソースからエントロピーを読み込みます。EGDや /dev/urandom のようなよいエントロピーソースを指定してください; non-blocking ソースだけを使うように気を付けてください (OpenBSDで tlsmgr(8) が /dev/urandom のタイムアウトに文句を言う場合には、/dev/arandom を使って ください)。エントロピーソースが通常のファイルではない場合、ソース名の前に ソース形式を付けなければいけません: デバイススペシャルファイルには "dev:" を、 EGD互換ソケットインターフェースを持つソースには "egd:" を付けます。

例 (main.cf で一つだけ指定します):

/etc/postfix/main.cf:
    tls_random_source = dev:/dev/urandom
    tls_random_source = egd:/var/run/egd-pool

デフォルトでは、tlsmgr(8) はシードを指定する イベントのたびに外部ソースから32バイトを読み込みます。これ (256ビット) は 128ビットの共通鍵を生成するのに十分すぎる量です。EGDおよびデバイスエントロピー ソースでは、tlsmgr(8) は一度に読み込むデータ量を 255バイトに制限します。通常のファイルをエントロピーソースとして指定した 場合は、より多くのデータを読み込むことができます。

例:

/etc/postfix/main.cf:
    tls_random_bytes = 32

メモリ内PRNGプールを更新するために、tlsmgr(8) は擬似乱数による時間が経過したら 再び外部エントロピーソースに問い合わせます。その時間はPRNGを使って計算され、 0から最大で tls_random_reseed_period で指定される時間の間の時間です。デフォルトの最大時間間隔は1時間です。

例:

/etc/postfix/main.cf:
    tls_random_reseed_period = 3600s

tlsmgr(8) プロセスは次回起動時にPRNG状態を 回復できるようにするため、一定時間経過時とプロセス終了時にPRNG状態を永続性 交換ファイルに保存します。このファイルが存在しない場合には作成されます。 デフォルトの場所はPostfix設定ディレクトリの下ですが、Postfixによって改変された 情報を置くにはふさわしくありません。代わりにファイルの場所を /var パーティション (しかしchroot監獄の中 以外) に置くのがよいでしょう。

例:

/etc/postfix/main.cf:
    tls_random_exchange_name = /etc/postfix/prng_exch
    tls_random_prng_update_period = 3600s

Filed under  //   postfix   TLS  

Comments [0]