Some scripts and tips for easing the maintenance of a postfix based SMTP system
Posted by jpluimers on 2021/11/24
A few scripts and tips I found Googling around.
Deleting queued messages by regular expression pattern
I have seen the below delete-from-mailq.pl
script numerous time, usually without any attribution (for instance [Wayback] Postfix Flush the Mail Queue – nixCraft and [Wayback] postfix-delete.pl – Following script deletes all mail from the mailq which matches the regular expression specified as the first argument · GitHub).
The earliest version I could find was in [Wayback] ‘Re: delete messages from mailq’ – MARC by [Wayback] ‘Ralf Hildebrandt ‘ posts – MARC:
--- snip --- #!/usr/bin/perl $REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!"; @data = qx</usr/sbin/postqueue -p>; for (@data) { if (/^(\w+)\*?\s/) { $queue_id = $1; } if($queue_id) { if (/$REGEXP/i) { $Q{$queue_id} = 1; $queue_id = ""; } } } #open(POSTSUPER,"|cat") || die "couldn't open postsuper" ; open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ; foreach (keys %Q) { print POSTSUPER "$_\n"; }; close(POSTSUPER); --- snip --- And then use: % delete-from-mailq "^test"
Tips
[Wayback] How do I check the postfix queue size? – Server Fault
Lots of great answers and pointers to useful guides/software there.
qstat
[Wayback] Postfix Bottleneck Analysis points to [Wayback] Postfix manual – qshape(1): qshape - Print Postfix queue domain and age distribution
, then explains about different scenarion and queues:
- [Wayback] Introducing the qshape tool
- [Wayback] Trouble shooting with qshape
- [Wayback] Example 1: Healthy queue
- [Wayback] Example 2: Deferred queue full of dictionary attack bounces
- [Wayback] Example 3: Congestion in the active queue
- [Wayback] Example 4: High volume destination backlog
- [Wayback] Postfix queue directories
postqueue
postqueue -p | tail -n 1
Last line in the
postqueue -p
shows how many requests and size:
-- 317788 Kbytes in 11860 Requests.
View queues size
I tried finding the original posting of the below script, but could not. If you find it, please let me know.
#!/usr/bin/env perl # postfix queue/s size # author: # source: http://tech.groups.yahoo.com/group/postfix-users/message/255133 use strict; use warnings; use Symbol; sub count { my ($dir) = @_; my $dh = gensym(); my $c = 0; opendir($dh, $dir) or die "$0: opendir: $dir: $!\n"; while (my $f = readdir($dh)) { if ($f =~ m{^[A-F0-9]{5,}$}) { ++$c; } elsif ($f =~ m{^[A-F0-9]$}) { $c += count("$dir/$f"); } } closedir($dh) or die "closedir: $dir: $!\n"; return $c; } my $qdir = `postconf -h queue_directory`; chomp($qdir); chdir($qdir) or die "$0: chdir: $qdir: $!\n"; printf "Incoming: %d\n", count("incoming"); printf "Active: %d\n", count("active"); printf "Deferred: %d\n", count("deferred"); printf "Bounced: %d\n", count("bounce"); printf "Hold: %d\n", count("hold"); printf "Corrupt: %d\n", count("corrupt");
Various commands
[Wayback] Inspecting Postfix’s email queue – Tech-G explaining about:
mailq
postqueue -p
postcat -vq XXXXXXXXXX
(whereXXXXXXXXXX
is the message ID)postqueue -f
/postfix flush
postsuper -d
to delete messages
More of these in [Wayback] Postfix Mail Queue Management – Linux Hint and [Wayback] Postfix Bottleneck Analysis: queues.
Makefile
Based on [Wayback] Using “make” for Postfix file maintenance
MAPS = relays.db aliases.db transport.db relocated.db \ virtual.db sender_checks.db rejected_recips.db \ helo_access.db all : $(MAPS) aliases.db : aliases newaliases %.db : % postmap $*
This is my Makefile
that runs fine on Tumbleweed (note: all 8-space indents are TAB
characters):
MAPS = /etc/aliases.db \ transport.db \ virtual.db \ helo_access.db \ canonical.db \ sasl_passwd.db \ relocated.db \ relay.db \ access.db \ relay_ccerts.db \ sender_canonical.db all : $(MAPS) aliases.db : aliases @echo "Rebuilding $@." newaliases %.db : % @echo "Rebuilding $@." postmap $*
In the future, I might try [Wayback] Makefile.postfix · GitHub, though I think it is convoluted:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Postfix: Makefile to update *.db files | |
POSTCONF= /usr/sbin/postconf | |
POSTMAP= /usr/sbin/postmap | |
default: postmap | |
postmap: Makefile.postmap | |
@echo 'Updating database files …' | |
$(MAKE) -f Makefile.postmap | |
Makefile.postmap: main.cf | |
@echo 'Updating $@ …' | |
@set -e; \ | |
rm -f $@.$$$$.tmp; \ | |
echo 'POSTMAP=$(POSTMAP)' >>$@.$$$$.tmp; \ | |
echo 'postmap::' >>$@.$$$$.tmp; \ | |
config_directory="$(PWD)"; \ | |
{ $(POSTCONF) -c $(PWD) || kill $$$$; } \ | |
|tr ' ' '\n' \ | |
|sed -n \ | |
-e 's/,$$//' \ | |
-e 's#^hash:\$$config_directory/##p' \ | |
-e 's#^hash:'"$$config_directory/##p" \ | |
|sort -u \ | |
|while read mapfile; do \ | |
echo "postmap:: $$mapfile.db" >>$@.$$$$.tmp; \ | |
echo "$$mapfile.db: $$mapfile" >>$@.$$$$.tmp; \ | |
echo " \$$(POSTMAP) $$<" >>$@.$$$$.tmp; \ | |
done; \ | |
mv $@.$$$$.tmp $@ |
[Wayback] Ralf Hildebrandt
Ralf Hildebrandt is an active and well-known figure in the Postfix community. He’s a systems engineer for T-NetPro, a German telecommunications company and has spoken about Postfix at industry conferences and contributes regularly to a number of open source mailing lists.
Co-author of this book: [Wayback: Book of Postfix State-of-the-Art Message Transport ISBN 9781593270018] (which used to have its own site: [Wayback: The Book of Postfix]
Book of Postfix
State-of-the-Art Message Transport
Publisher: No Starch PressRelease Date: March 2005Pages: 496 Best practices for Postfix–the popular alternative to Sendmail. Developed with security and speed in mind, Postfix has become a popular alternative to Sendmail and comes preinstalled in many Linux distributions as the default mailer. The Book of Postfix is a complete guide to Postfix whether used at home, as a mailrelay or virus-scanning gateway, or as a company mailserver. Practical examples show how to deal with daily challenges like protecting mail users from spam and viruses, managing multiple domains, and offering roaming access.
This is a great review of the book: [Wayback] The Book of Postfix (Ralf Hildebrandt, Patrick Koetter)
Related
For my postfix studies… « The Wiert Corner – irregular stream of stuff
–jeroen
Leave a Reply