I'm trying to hide the client IP from emails sent from postfix.

here is an example of what I mean:

Received: from mail.[removed].com (adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [])
    (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
    (No client certificate requested)
    by mail.[removed].com (Postfix) with ESMTP id D50C7BF185DD
    for <[removed]@gmail.com>; Thu,  2 Aug 2012 16:14:21 +0900 (JST)
Date: Thu, 02 Aug 2012 07:14:08 +0000

Notice this line (adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [])

I want to remove that line from the email.

I've tried doing this:

/etc/postfix/main.cf :

smtp_header_checks = regexp:/etc/postfix/smtp_header_checks

smtp_header_checks :

/^((.*) [(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])])/    IGNORE

But my IP address is still inside of the received part of the email. If I send email off the smtp server locally the IP address becomes localhost.localdomain []

How can I remove client IPs from the header?


In main.cf:

smtp_header_checks = pcre:/etc/postfix/smtp_header_checks

In dynamicmaps.cf:

# Use your real path to dict_pcre.so, below
pcre    /usr/lib/postfix/dict_pcre.so           dict_pcre_open

You should put this in your /etc/postfix/smtp_header_checks:

/^Received: .*/     IGNORE
/^X-Originating-IP:/    IGNORE

Then run

# /etc/init.d/postfix reload
  • My ip address is still displayed. I appreciate the efforts. – Kyle Aug 2 '12 at 7:43
  • It is not necessary to have postfix-pcre. Regexp works the same way. – Kyle Aug 2 '12 at 7:45
  • Alright. I have made sure pcre was install on the system. I have changed regexp:/etc/postfix/smtp_header_checks to pcre:/.... I have then restarted postfix and monitored maillog for any errors. No errors were displayed. The email still displays my ip. XD Thanks for the efforts, Mike. – Kyle Aug 2 '12 at 7:51
  • Hmm... I get an error but I found this irbs.net/internet/postfix/0404/1097.html I tested the regex with this postfix.org/pcre_table.5.html using argument: postmap -q "Received: from mail.[removed].com (adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [])" pcre:/etc/postfix/smtp_header_checks and the output was IGNORE so it is working. However it is not making changes in the email... Is the field inside main.cf wrong? – Kyle Aug 2 '12 at 7:57
  • 1
    Shit man. I just wasted your time. It's my fault in the very beginning. smtp_header_checks was supposed to be header_checks... It works now. I'm so sorry I wasted your time. I appreciate your efforts. Thank you. pcre also works too. I'm on centos. Thanks again, bro. – Kyle Aug 2 '12 at 8:03

Open /etc/postfix/master.cf and find:

cleanup unix n - n - 0 cleanup

Add below those line and become:

cleanup unix n - n - 0 cleanup -o header_checks=pcre:/etc/postfix/header_checks

Edit /etc/postfix/header_checks and add below codes:

/^Received:/ IGNORE

Now restart postfix. Let say on CentOS:

service postfix restart

  • Unfortunately, this will also strip the Received header on incoming mail. – Keelan May 5 at 17:36

use this:

/^Received: from .***/ IGNORE

only use single * in both ends

  • Or more like it? /^Received: from .*127\.0\.0\.1.*/ IGNORE – Jack B. Feb 27 at 20:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.