summaryrefslogtreecommitdiffstats
path: root/postfix/entrypoint.sh
diff options
context:
space:
mode:
Diffstat (limited to 'postfix/entrypoint.sh')
-rwxr-xr-xpostfix/entrypoint.sh45
1 files changed, 37 insertions, 8 deletions
diff --git a/postfix/entrypoint.sh b/postfix/entrypoint.sh
index 46c06ab..afea241 100755
--- a/postfix/entrypoint.sh
+++ b/postfix/entrypoint.sh
@@ -1,18 +1,47 @@
#!/bin/sh
-# Generate virtual mappings from user password file
+users() {
+ sed 's/:.*$//g' /etc/userconfig/passwd
+}
+
+## Generate virtual mappings from user password file
# Incoming mail: "user@domain domain/user/" >vmailbox
-# (The trailing slash indicates the directory is a maildir.)
-sed 's/:.*$//g' </etc/userconfig/passwd \
- | awk -F '@' '{printf "%s %s/%s/\n", $0, $2, $1}' >/etc/postfix/vmailbox
+# Outgoing mail: "user@domain user@domain" >vaddress
+users | awk -F '@' '{printf "%s %s/%s/\n", $0, $2, $1}' >/etc/postfix/vmailbox
+users | awk '{printf "%s %s\n", $0, $0}' >/etc/postfix/vaddress
+
+## Synchronize mailing list configuration directories
+eul=$(ls /etc/userconfig/lists | sed '/ /d') # Ignore spaces and dotfiles
+vsl=$(ls -A /var/spool/mlmmj)
+added=$(printf '%s\n' "$vsl" "$vsl" "$eul" | sort | uniq -u)
+removed=$(printf '%s\n' "$eul" "$eul" "$vsl" | sort | uniq -u)
+
+for list in $added; do
+ sudo -u mlmmj /etc/postfix/make_list.sh "$list"
+done
+for list in $removed; do
+ listdir="/var/spool/mlmmj/$list"
+ rm -rf "$listdir"
+ printf 'Deleted list directory: %s\n' "$listdir"
+done
-# Outgoing mail: "user@domain user@domain" >vaddress
-sed 's/:.*$//g' </etc/userconfig/passwd \
- | awk '{printf "%s %s\n", $0, $0}' >/etc/postfix/vaddress
+## Generate virtual mappings from mailing list addresses
+# "address@domain list@localhost.mlmmj" >mlvirtual
+# "list@localhost.mlmmj mlmmj:list" >mltransport
+touch /etc/postfix/mlvirtual
+touch /etc/postfix/mltransport
+for list in $(ls -A /var/spool/mlmmj); do
+ address="/var/spool/mlmmj/$list/control/listaddress" # there could be multiple
+ sed "s/$/ $list@localhost.mlmmj/g" <$address >>/etc/postfix/mlvirtual
+ echo "$list@localhost.mlmmj mlmmj:$list" >>/etc/postfix/mltransport
+done
-# Generate Berkeley DB files
+## Generate Berkeley DB files
+postmap /etc/postfix/mltransport
+postmap /etc/postfix/mlvirtual
postmap /etc/postfix/vaddress
postmap /etc/postfix/vmailbox
postmap /etc/userconfig/aliases
+## Execute postfix daemons
exec /usr/sbin/postfix start-fg