To extract all destinations (i.e., the recipients) from the Postfix mail queue (mailq), you can use the following Bash one-liner:

mailq | awk '/^[A-F0-9]/ {in_msg=1; next} in_msg && /^[ \t]*[^ ]+@[^ ]+/ {print $1}' | sort | uniq

Explanation:

mailq — shows the mail queue.

awk: /^[A-F0-9]/ — detects the start of a new message (queue ID line), sets a flag (in_msg=1).

next — skips the rest of that line.

in_msg && /^[ \t]*[^ ]+@[^ ]+/ — lines after the queue ID that begin with a recipient address.

print $1 — prints the first field (email address).

sort | uniq — to remove duplicates and sort output.

Example Output

user1@example.com
user2@example.org
admin@domain.com

Optional: Save to file

mailq | awk '/^[A-F0-9]/ {in_msg=1; next} in_msg && /^[ \t]*[^ ]+@[^ ]+/ {print $1}' | sort | uniq > recipients.txt

Tip: If you need assistance or support for a similar issue, you can contact us ;)