7

I need to temporarily freeze outgoing emails from specific sender with exim4. The sender logs in with remote SMTP (i.e. over TCP/IP).

What I want to do is to freeze (but not deny) all his emails so I can check the queue and either allow or disallow further processing.

Any help would be appreciated.

Viktor Stískala
  • 403
  • 3
  • 10

1 Answers1

5

You'll need to make the following changes to your exim.conf file:

In the main configuration section, make sure that you have enabled the acl_smtp_mail control as follows:

acl_smtp_mail = acl_check_mail

Be sure to change acl_check_mail to the actual name of your access control list that handles acl_smtp_mail

Then, in the acl_check_rcpt ACL configuration section, create a new rule:

accept   condition = ${lookup{$sender_address}lsearch{/etc/exim/freezelist_sender_addresses}{1}{0}}
         control   = freeze/no_tell


Save the config file. Now create the file /etc/exim/freezelist_sender_addresses and place all your sender addresses which need to be frozen into this file, one address per line. Make sure you set the correct permissions on this file so that Exim can read it.

All emails sent from the addresses in the /etc/exim/freezelist_sender_addresses will now be accepted into the queue (provided they pass the other ACLs) and then automatically frozen by Exim.

To unfreeze these messages, run this command, replacing user@domain.tld with the address of the sender whose mail has been frozen:

exiqgrep -i -f user@domain.tld | xargs exim -Mt 
Richard Keller
  • 2,270
  • 2
  • 18
  • 31
  • 2
    To freeze mail sent locally from web apps I had to put the rule in the `acl_not_smtp` acl. – Steve Jul 15 '16 at 18:26