ゆったりWeb手帳

Postfixで送信したメールの送信元を変更する

Postfix を使って送信したメールにLinuxユーザ名が入る

Postfixはmailコマンドで送信したメールのヘッダー情報を変更することができます。

環境によっては送信したメールのFromヘッダが以下のようになります。

From: username <username@example.com>

メールアドレス部分のusernamesender_canonicalを使って変更できますが、表示名の変更でつまづいたのでそのメモです。

Postfixのバージョンは以下の通り

$ postconf | grep mail_version
mail_version = 3.1.0

header_checksを使う

Fromヘッダーはheader_checksを使って変更できます。

header_checksを作成

ここでヘッダーの置換処理はsender_canonicalの処理の後に行われるようです。

置換処理前のFromヘッダーは以下のようになっています。

From: username@example.com (username)

これを次のように置換します。

From: info <username@example.com>

/etc/postfix/以下にheader_checksファイルを作成します。

header_checks
/^From:[[:space:]](.*@.*)[[:space:]].*$/ REPLACE From: info <${1}>

このファイルは正規表現が使えますが、少し変則的です。 スペースは\sではなく[[:space:]]を指定します。 また、変数は()で囲ったものを${1}で使用できます。

header_checks.dbを作成

次に、以下のコマンドを実行します。

postmap /etc/postfix/header_checks

/etc/postfix/header_checks.dbが生成されます。

main.cfに設定を追加

最後に、/etc/postfix/main.cfに以下2行を追加します。

main.cf
header_checks = regexp:/etc/postfix/header_checks
smtp_header_checks = regexp:/etc/postfix/header_checks

header_checksがコメントアウトされている場合は解除してください。 .dbは書かなくていいみたいです。

再起動で完了です。

/etc/init.d/postfix restart

ちなみにこの設定は受信時にも適用されるので正規表現で書く場合は注意が必要ですね。