Empfänger aus Mail Queue auslesen und Domains zählen

MasterDS

Erfahrenes Mitglied
Hallo zusammen!

Ich möchte auf einer Linux Konsole die Ausgabe der Mail Queue (mailq) Filtern. Anstatt der kompletten Liste, möchte ich gern
  1. Eine Auflistung aller offenstehenden Empfängeradressen
  2. Eine Gruppierung (zählen) der Domains (also z.b. 10 t-online.de; 4 gmx.de; 7 xyz.de)

Da ich leider nicht der Grep/RegEx- Spezi bin, komme ich hier mit kurzem Einlesen nicht weiter. Es wäre super, wenn mir jemand die zwei Kommandos kurz hier rein schreiben könnte.

Vielen Dank!

Gruß
Dennis
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

kannst du bitte ein Beispiel mit der mailq Ausgabe hier posten? Dann kann ich dir ein Script zusammen basteln.

Grüße,
BK
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

ok, ein Screenshot ist zwar nicht gerade optimal, hier kann ich meine RegEx nicht direkt prüfen ;)

// Edit: Hab da mal was zusammen geschrieben, probiers mal aus:
Bash:
#!/bin/bash

# configure programs with absolute paths
CUT=/usr/bin/cut
MAILQ=/usr/bin/mailq
SED=/bin/sed
SORT=/usr/bin/sort
UNIQ=/usr/bin/uniq
WC=/usr/bin/wc

# fetch all destination adresses
all=$( ${MAILQ} | ${SED} -e 's/^[[:space:]]\+//g' -e '/[[:space:]]/d' )

# unique list with all destination domains
domains=$( echo "${all}" | ${CUT} -d@ -f2 | ${SORT} | ${UNIQ} )

# foreach destination domain
for domain in ${domains}; do
        # count occurances
        count=$( echo "${all}" | grep "${domain}" | ${WC} -l )

        # print information
        echo "Domain: ${domain} count: ${count}"
done

Grüße,
BK
 
Zuletzt bearbeitet:

MasterDS

Erfahrenes Mitglied
Also das hier:
Code:
mailq | sed -e 's/^[[:space:]]\+//g' -e '/[[:space:]]/d'

hat schon mal funktioniert. Allerdings ist immer eine Leerzeile dazwischen.

Das Skript teste ich jetzt auch gleich...