postfix

Monitoring

To view the queue:

postqueue -p

Send

To check if the system is correctly configured to send system emails try:

mail root
mail patrick
# or...
mail patrick@kbsoftware.co.uk

Tip

Fill in the details, then Ctrl D when you finish writing the message.

Warning

You may need to add your domain if the default is something else e.g. mail patrick@hatherleigh.info

Note

To check email from Flowable you need to set up a workflow.

Errors

Postfix writes to syslog. To extract all the postfix entries:

sudo cat /var/log/syslog | parse-log - postfix

Tip

I think all the postfix programs (eg qmngr, smtpd, etc) prefix their program name in the log with postfix.

bounce

The bounced status appears in /var/log/syslog like this:

Nov 12 08:05:51 UKKB01A200 postfix/smtp[1646047]: 743AC171BC7:
to=<patrick.kimber@kbsoftware.co.uk>,
relay=10.3.3.3[10.3.3.3]:25, delay=0.8, delays=0.74/0.02/0.04/0, dsn=5.3.4,
status=bounced (message size 17023981 exceeds size limit 10485760 of server 10.3.3.3[10.3.3.3])

Warning

bounced message are not sent, retried or notified to the administrator. We would like to be notified. See ticket 5908 for info.

Configuration

Application (Django / Flowable)

To use postfix installed using our Salt states (as detailed below):

Use TLS           False / No
Host              localhost
Port              25

pillar

Tip

Check existing sites for mail_server configuration.

The SMTP server details are stored in the site file (server_meta, mail_server).

Add the following to the sites pillar e.g. sites/kb101.sls:

server_meta:

  mail_server:
    smtp_relay_host: smtp.sparkpostmail.com
    smtp_relay_port: 587
    smtp_username: SMTP_Injection
    smtp_password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    admin_email: patrick@kbsoftware.co.uk
    message_size_limit: 25000000
    sender_rules:
      /.*@kbsoftware.co.uk/: patrick@kbsoftware.co.uk
  • admin_email is the address used for issues with the server etc.

  • message_size_limit is the maximal size in bytes and is an optional parameter. The default size limit is 10240000 bytes.

  • sender_rules is the from address. This address will be used for sending all the emails. This is useful for Office 365 SMTP servers, because all email must be sent from a specific domain. (I think the regular expression, /.*/:, matches all emails).

Tip

If using SparkPost, then you will need to configure the Domains

To check the message_size_limit has been changed:

postconf | grep size_limit

Linux

The main configuration file is /etc/postfix/main.cf. It includes the following:

  • /etc/aliases, where mail to root should go.

  • smtp_generic_maps, a catch all (for /etc/aliases)

  • sender_canonical_maps, is used to change the from address.

  • relayhost instructs Postfix to forward everything.

  • If using SparkPost (see mail for more information), authentication details will be added to /etc/postfix/main.cf.

Maintenance

Warning

Think carefully before running the following command…

Delete all messages in the queue:

postsuper -d ALL

Questions

Are these error messages?:

match_list_match: permit_mynetworks: no match

Testing

Remove the smtp_relay_host from the pillar and apply the Salt states e.g:

server_meta:
  mail_server:
    smtp_relay_host:
    smtp_relay_port: 25
    smtp_tls_security_level: may

Tip

I removed smtp_relay_host, smtp_relay_port and smtp_tls_security_level and it all seems to be working nicely.

For more information, see Make sure we don’t send emails for test servers