nützliche Kommandos rund um Postfix
postconf
Zeigt alle Einstellungen der main.cf, die nicht den Defaultwerten entsprechen:
postconf -n
Zeigt den Defaultwert einer Variable an; ignoriert also den Wert aus der main.cf:
postconf -d myorigin myorigin = $myhostname
Die Abfrage von Variablen direkt aus unserem laufenden Postfix heraus erfolgt ohne Parameterangabe:
postconf myorigin
myorigin = $mydomain
Wollen wir einen Parameter ändern, so benutzen wir die Option -e
postconf -d smtpd_client_connection_count_limit smtpd_client_connection_count_limit = 50 postconf smtpd_client_connection_count_limit smtpd_client_connection_count_limit = 10 postconf -e "smtpd_client_connection_count_limit = 15" postconf smtpd_client_connection_count_limit smtpd_client_connection_count_limit = 15
Anschließend muss via service postfix reload der laufende Daemon noch von der Änderung an der main.cf informiert werden
postqueue
Zeigt eine vollständige Übersicht aller eMails in den Warteschlangen
# postqueue -p
Alle eMails in der deferred-Queue werden sofort wieder zur Auslieferung gebracht
# postqueue -f
postsuper
Mailqueue zu Auslieferung bringen
Um alle Nachrichten aus der Mailqueu erneut zur Auslieferung zu bringen, erreichen wir durch:
# postsuper -r ALL
eine einzelne Mail löschen
Löschen der eMail mit der <QUEUE-ID> aus der Warteschlange
# postsuper -d <QUEUE-ID>
mehrere Mails löschen
Will man mehrere Nachrichten eines bestimmten Absenders bzw. Empfängers löschen, so wäre die manuelle Löschung von z.B. mehreren Tausenden von Nachrichten nicht mehr durchzuführen.
In der Manpage von postsuper findet man hierzu einen sehr Hilfreichen Tip (Die Variabeln sind dabei wie folgt belegt: $7=sender, $8=recipient1, $9=recipient2)
Mit folgendem Befehl löscht man z.B. alle Nachrichten von gaudiwurm@nerv.com:
# mailq | tail +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ($7 == "gaudiwurm@nerv.com") print $1 }' | tr -d '*!' | postsuper -d -
alternativ empfiehlt sich das delete_from_mailq.pl von Victor Duchovni
#!/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);
postalias
Konvertiert die Datei aliases in das binäre Datenbankformat. (Auf Grund der Doppelpunkte funktioniert hier postmap nicht!) Muss nach jedem Ändern der /etc/aliases aufgerufen werden!
# postalias /etc/aliases
postmap
Konvertiert die angegebene Textdatei in das binäre Datenbankformat. Muss nach jeder Änderung an der Textdatei aufgerufen werden!
# postmap /etc/postfix/policyd_weight_client_whitelist
Listet alle einträge einer Datenbank (i.e. policyd_weight_client_whitelist) auf:
# postmap -s /etc/postfix/policyd_weight_client_whitelist kundenserver.de OK
lsof
Zeigt welches Programm (Command) auf dem gennaten Port lauscht/reagiert.
lsof -i :25 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME smtpd 22703 postfix 6u IPv4 2790158 TCP *:smtp (LISTEN) smtpd 22803 postfix 6u IPv4 2790158 TCP *:smtp (LISTEN) master 31413 root 11u IPv4 2790158 TCP *:smtp (LISTEN)
mailx
Nachrichtentext (Mailbody) wird mit dem Subject „Betreff“ an den postmaster und in cc an bigchief geschickt
# echo Nachrichtentext | mailx -s "Betreff" -c bigchief postmaster
uuenview
Will man Nachrichten mit Anhängen von der Konsole aus verschicken, so z.B. Status- oder Logfiles via cronjob, so bendient man sich am besten uuenview.
Das Postfixlog (/var/log/maillog) wird als Anhang an den User mit der Adresse empfaenger@nausch.org geschickt. Absender ist absender@nausch.org, wobei wir als Rückantwortadresse rueckantwortadresse@nausch.org mitgeben.
# /usr/bin/uuenview -b -s "Betreff" -r rueckantwortadresse@nausch.org -f absender@nausch.org -m empfaenger@nausch.org /var/log/maillog