2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Postfix の header_checks で From と Subject を同時に書き換えたい

Posted at

From と Subject を同時に書き換えしたい場合

時と場合によって From を書き換えたい メーリングリストのようにSubject に追記したい

という場合があるかと思います。
これは smtp_header_checkes を追加して

/etc/postfix/main.cf

smtp_header_checks = regexp:/etc/postfix/header_checks

を追記した後

systemctl restart postfix

を実行した後

/etc/postfix/header_checks
if /^Subject: hogehoge-ML(.*)/i
/^Subject: hogehoge-ML(.*)/ REPLACE Subject: [HOGE-ML+] $1
endif

上記を記述する事で Subject: に hogehoge-ML test と書かれていたら Subject: [HOGE-ML] testと書き換える。
と言う定義を行うことが出来る。

ただ、ここで注意しなくてはいけないのが

/etc/postfix/header_checks
if /^Subject: hogehoge-ML(.*)/i
/^Subject: hogehoge-ML (.*)/ REPLACE Subject: [HOGE-ML] $1
/^From: (.*)/ REPLACE From: hoge-ml@examle.com
endif

と記述しても From: の書き換えは行われない。

これは初めの if /^Subject: hogehoge-ML(.*)/i によりメールファイルが Subject: hogehoge-ML(.*) で regrep されてしまっているから From の判定が出来ないことになるからである。

もし、両方を書き換えしたい場合は以下のように定義することで同時に書き換えが可能である。

/etc/postfix/header_checks
if /^(From: (.*))|^(Subject: hogehoge-ML(.*))/i
/^Subject: hogehoge-ML (.*)/ REPLACE Subject: [HOGE-ML] $1
/^From: (.*)/ REPLACE From: hoge-ml@examle.com
endif

そう、 regrep の際に From,Subject の2つの内容が入っていれば問題なく書き換えが可能になる

実行テスト

# cat test_header_hogehoge.txt
Subject: hogehoge-ML test
From: a@example.com
To: hoge@example.com

# postmap -hmq - regexp:/etc/postfix/header_checks < ./test_header_hogehoge.txt
Subject: hogehoge-ML test	REPLACE Subject: [HOGE-ML] test
From: a@example.com	REPLACE From: hoge-ml@examle.com
2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?