3 # expects action to be defined, like -v action=aliases
5 /^[[:space:]]*$/ { next }
6 /^[[:space:]]*#/ { next }
12 domains[domainslen++] = domain;
17 user = sprintf("%s@%s", $2, domain);
20 # change “vmail” to match the local user that
22 aliases[user] = "vmail";
34 alias = sprintf("%s@%s", $2, domain);
38 aliases[alias] = target;
41 # output in the correct format
43 if (action == "aliases") {
44 for (alias in aliases) {
45 if (match(alias, "@"))
47 printf("%s: %s\n", alias, aliases[alias]);
49 } else if (action == "virtuals") {
50 for (alias in aliases) {
51 if (!match(alias, "@"))
53 printf("%s %s\n", alias, aliases[alias]);
55 } else if (action == "domains") {
56 for (domain in domains) {
57 printf("%s\n", domains[domain]);
59 } else if (action == "users") {
61 printf("%s %s\n", user, users[user]);
63 } else if (action == "users.passwd") {
65 # user@doma.in:hash::::::
66 # user@doma.in:hash::::::userdb_quota_rule=*:storage=1G
67 printf("%s:%s::::::\n", user, users[user]);
69 } else if (action == "users.mdirs") {
72 # adjust the maildir path
73 printf("/var/vmail/%s/%s/Maildir\n", m[2], m[1]);
76 print "unknown action!\n" > "/dev/stderr"