Skip to content

Jonas Silveira

o blog de um cientista da computação

Archive

Category: Postfix

In this tutorial, we will see how to trigger a PHP script each time your web server is receiving some e-mails.

Link: https://www.thecodingmachine.com/triggering-a-php-script-when-your-postfix-server-receives-a-mail/

Facebooktwitterredditpinterestlinkedinmail

I had a problem after a reboot of an AWS EC2 instance, because the server changed the hostname after reboot. Because we send millions of e-mails each hour, a lot of e-mail with sender like ‘person@ip-10-20-30-40.localdomain’ was “bounced”.

The first thing I had to do was change the hostname to correct the problem cause (solution found here). I’m using Red Hat 7 on AWS EC2 (RHEL7):

  1. Edit the file /etc/cloud/cloud.cfg.d/defaults.cfg deleting/commenting the above lines:
    hostname: myhostname
    fqdn: myhostname.mydomainname
  2. Then edit the /etc/hostname adding your hostname
  3. Run the command hostname <hostname>
    EX: hostname myhost.domain.com
  4. Restart postfix

Then I need to correct the hostname of bounced messages. Unfourtunally, change the messadges using SED doesn’t work. If you try to do this, the messasges will be moved to the “corrupt” folder. So, the sollution is do a “remap” of all senders (solution found here):

  1. Create “stmp_generic_maps parameter”:
    1. Add or uncomment the following line on /etc/postfix/main.cf:
      smtp_generic_maps = hash:/etc/postfix/generic
    2. Edit the file /etc/postfix/generic adding the “mappers”, one each line (from –> to):
      person@ip-10-20-30-40.localdomain        person@hostname myhost.domain.com
    3. Create the hash file of the mapping:
      postmap /etc/postfix/generic
    4. Reload Postfix:
      service postfix reload
  2. Wait the message “requeue” or force the message flushing (sse above).

Some instructions to deal with “bounced” messages on Postfix (found here and here):

  • Dump entire mail queue:
    mailq
  • Try to deliver a single message:
    postqueue -i E7B5114648B
  • Read a message from mail queue:
    postcat -qv BC6798D96E2
  • Flush the mail queue (try to deliver all queued messages):
    postqueue -f
  • Delete a message from queue:
    postsuper -d BC6798D96E2

Remember to read the log, on /var/log/maillog. So, a great tip is “tail -f /var/log/maillog” when you need to understand the errors and try the actions above.

 

Facebooktwitterredditpinterestlinkedinmail