Holding the Postfix Queue at time of server migration/maintenance
Holding the postfix queue at the time of migration. Specifically at the time when you need mailboxd to be running so that imapsync can inject emails.
Hold the queue:
postsuper -h ALL
Release the hold queue:
postsuper -r ALL
To delete the mails from the queue:
'cat /tmp/deletelist | /opt/zimbra/postfix/sbin/postsuper -d -'
- Other way it to create a file and define the user's whose emails you want to hold.
1.Create a stub file called /opt/zimbra/conf/migration-hold that will be used by Postfix to HOLD messages and then "postmap" this file to create the .db hash file.
2. Modify /opt/zimbra/conf/postfix_recipient_restrictions.cf to include the line in bold below.
reject_non_fqdn_recipient permit_sasl_authenticated permit_mynetworks reject_unlisted_recipient check_recipient_access hash:/opt/zimbra/conf/migration-hold permit
3. Execute "postfix reload" as the zimbra user. main.cf will now reference the new migration-hold file
4. The migration-hold file will contain the full list of email addresses that will be migrated during the impending migration in the following format:
email@example.com HOLD migration in progress firstname.lastname@example.org HOLD migration in progress
Now the MTA will accept the message, but place it in the HOLD queue as shown below:
postfix/smtpd: NOQUEUE: hold: RCPT from unknown[xx.xx.xx.xx]: <sender@domain>: Recipient address migration in progress; from=<email@example.com> to=<recepient@domain>
5. Finally, the "postsuper -H ALL" command should be executed on each Zimbra MTA to allow all held mail to be moved back into the active queue for delivery.
6. After migration has been completed, all empty migration-hold file will be removed and postfix_recipient_restrictions.cf will have the check_recipient_access line deleted.
Credit to https://wiki.zimbra.com/wiki/Irfan-Notes