summaryrefslogtreecommitdiff
path: root/localmailrecipientsdump
diff options
context:
space:
mode:
authorroot <root@jones.dk>2009-09-14 04:57:38 +0200
committerroot <root@jones.dk>2009-09-14 04:57:38 +0200
commit0dd15446c8271ce6d304ee4e524f2e4165e3957e (patch)
tree72ac7f6941aa1e49ee95e90fb8994fd97d20d67f /localmailrecipientsdump
parenteb8199139f6e6bc75cdc6dac1ae1e09881a5ec8d (diff)
Add script localmailrecipientsdump.
Diffstat (limited to 'localmailrecipientsdump')
-rwxr-xr-xlocalmailrecipientsdump59
1 files changed, 59 insertions, 0 deletions
diff --git a/localmailrecipientsdump b/localmailrecipientsdump
new file mode 100755
index 0000000..6662d55
--- /dev/null
+++ b/localmailrecipientsdump
@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# /usr/local/sbin/localmailrecipientsdump
+# Copyright 2004-2006 Jonas Smedegaard <dr@jones.dk>
+#
+# Dump a list of all local mail destinations
+#
+
+set -e
+
+pfdir="/etc/postfix"
+
+firstitem() {
+ set -e
+ file="$1"
+
+ cat "$file" | grep -v '^#' | sed 's/#.*//' | head -n 1
+}
+
+localdomains() {
+ set -e
+ postconf -h mydestination | tr ',' ' '
+}
+
+aliasmaps() {
+ set -e
+ postconf -h alias_maps | tr ',' ' '
+}
+
+virtualmaps() {
+ set -e
+ perl -ne 's/^virtual_maps\s*=\s*// and print' < /etc/postfix/main.cf | tr ',' ' '
+}
+
+accounts() {
+ set -e
+ (
+ getent passwd | perl -ne 's/:.*// and s/^([a-z]\S*).*/$1/ and print'
+ for map in $(aliasmaps); do
+ postalias -s $map | perl -ne 's/^([a-z]\S*):.*/$1/ and print'
+ done
+ ) | sort -u
+}
+
+mkrecipientsmap() {
+ for domain in $(localdomains); do
+ for account in $(accounts); do
+ echo "$account@$domain OK"
+ done
+ done
+ for map in $(virtualmaps); do
+ postmap -s $map | perl -ne 's/^([a-z]\S*\@\S+)\s.*/$1 OK/ and print'
+ done
+}
+
+redpill="$(firstitem "/etc/local-ORG/redpill")"
+realm="$(firstitem "/etc/local-ORG/realm")"
+
+mkrecipientsmap | sort -t@ -k2 -k1 > "/etc/local-$redpill/$realm/mailrecipients"