blob: afea241990507489780255fca12841d8ae17c673 (
plain) (
tree)
|
|
#!/bin/sh
users() {
sed 's/:.*$//g' /etc/userconfig/passwd
}
## Generate virtual mappings from user password file
# Incoming mail: "user@domain domain/user/" >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
## 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
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
|