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



## MasterDS (3. Dezember 2013)

Hallo zusammen!

Ich möchte auf einer Linux Konsole die Ausgabe der Mail Queue (mailq) Filtern. Anstatt der kompletten Liste, möchte ich gern 

Eine Auflistung aller offenstehenden Empfängeradressen
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 (3. Dezember 2013)

Hi,

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

Grüße,
BK


----------



## MasterDS (3. Dezember 2013)

Danke schon mal.

Die die Ausgabe:


----------



## Bratkartoffel (3. Dezember 2013)

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:

```
#!/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


----------



## MasterDS (3. Dezember 2013)

Also das hier:

```
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...


----------



## MasterDS (3. Dezember 2013)

Tschaka! Funktioniert! 

Vielen Vielen Dank!


----------

