diff --git a/README.md b/README.md index d31bde2..7a8413c 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,27 @@ Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?compo Koozali SME Server wrapper to configure postfix +## Development and testing + + mkdir /etc/e-smith/templates-custom/var/service/qpsmtpd/config/plugins/ + echo 'return "queue/postfix-queue";' > /etc/e-smith/templates-custom/var/service/qpsmtpd/config/plugins/90queue-qmail-queue + config setprop qmail status disabled + systemctl stop qmail + signal-event email-update + dnf install smerserver-postfix + + +then test + + echo "This email confirms that Postfix is working" | mail -s "Testing Posfix" emailuser@example.com + +or using roundcube + +TODO +* remote SMTP +* smart SMTP +* SSL +* logging +* .qmail support or alternative +* maildrop/procmail support ? +* switch smeserver-qpsmtpd support to postfix diff --git a/createlinks b/createlinks index 469b24e..90a7a04 100644 --- a/createlinks +++ b/createlinks @@ -2,6 +2,170 @@ use esmith::Build::CreateLinks qw(:all); use esmith::Build::Backup qw(:all); +my $event; + +# email-conf - console-save, bootstrap-console-save, domain-create, domain-delete, +# ip-change, email-update, host-create, host-delete, host-modify, post-upgrade +# rcpthosts template was in smeserver qpsmtpd, and not used if qpsmtpd in use anymore + +foreach (qw( + main.cf + master.cf + transport + virtual + )) +{ + templates2events("/var/qmail/control/$_", qw( + console-save + bootstrap-console-save + domain-create + domain-delete + ip-change + email-update + host-create + host-delete + host-modify + post-upgrade + smeserver-postfix-update + )); + +} + +#-------------------------------------------------- +# actions for console-save event: +# write config files and create startup link +#-------------------------------------------------- +$event = "console-save"; + +# If qmail-send is running, it will receive the SIGHUP and ignore the +# start command. If it is not running then the signal will be ignored +# and qmail-send will read its new configuration files anyway. + +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); + +#-------------------------------------------------- +# actions for bootstrap-console-save event: +# write config files and create startup link +#-------------------------------------------------- +$event = "bootstrap-console-save"; + +# TODO alternative ? event_link("pseudonym-cleanup", $event, "03"); +# TODO alternative ? event_link("qmail-update-group", $event, "20"); +# TODO alternative ? event_link("qmail-update-user", $event, "55"); +# TODO alternative ? templates2events("/var/qmail/users/assign", $event); +# TODO alternative ? safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/$event/S55email-assign"); + +#-------------------------------------------------- +# actions for domain-create event: +# rewrite config files and restart server +#-------------------------------------------------- +$event = "domain-create"; + +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); + +#-------------------------------------------------- +# actions for domain-delete event: +# rewrite config files and restart server +#-------------------------------------------------- +$event = "domain-delete"; + +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); + +#-------------------------------------------------- +# actions for email-update event: +# email parameters have been changed in the e-smith +# manager; update system security, rewrite email config +# files, configure other system files (crontab is the +# important one), and restart server +#-------------------------------------------------- +$event = "email-update"; + +# TODO alternative ? event_link("qmail-update-user", $event, "03"); +# TODO alternative ? event_link("pseudonym-cleanup", $event, "30"); + +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); +safe_symlink("adjust", "root/etc/e-smith/events/$event/services2adjust/masq"); +safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/smtp-auth-proxy"); + +#-------------------------------------------------- +# actions for group-create event: +#-------------------------------------------------- +$event = "group-create"; + +# TODO alternative ? event_link("pseudonym-cleanup", $event, "03"); +# TODO alternative ? event_link("qmail-update-group", $event, "20"); +# TODO alternative ? templates2events("/var/qmail/users/assign", $event); +# TODO alternative ? safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/$event/S55email-assign"); +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); + +#-------------------------------------------------- +# actions for group-delete event: +#-------------------------------------------------- +$event = "group-delete"; + +# TODO alternative ? event_link("pseudonym-cleanup", $event, "03"); +# TODO alternative ? event_link("qmail-delete-group", $event, "20"); +# TODO alternative ? templates2events("/var/qmail/users/assign", $event); +# TODO alternative ? safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/$event/S55email-assign"); +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); + +#-------------------------------------------------- +# actions for group-modify event: +#-------------------------------------------------- +$event = "group-modify"; + +# TODO alternative ? event_link("pseudonym-cleanup", $event, "03"); +# TODO alternative ? event_link("qmail-update-group", $event, "20"); +# TODO alternative ? templates2events("/var/qmail/users/assign", $event); +# TODO alternative ? safe_symlink("/var/qmail/bin/qmail-newu", "root/etc/e-smith/events/$event/S55email-assign"); +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); + +#-------------------------------------------------- +# actions for user-create event: +#-------------------------------------------------- +$event = "user-create"; + +# TODO alternative ? event_link("qmail-update-user", $event, "20"); +# TODO alternative ? event_link("qmail-update-group", $event, "20"); + +#-------------------------------------------------- +# actions for user-modify event +#-------------------------------------------------- +$event = "user-modify"; + +# TODO alternative ? event_link("qmail-update-user", $event, "20"); +# TODO alternative ? event_link("qmail-update-group", $event, "20"); + +#-------------------------------------------------- +# actions for user-modify-admin event +#-------------------------------------------------- +$event = "user-modify-admin"; + +# TODO alternative ? event_link("qmail-update-user", $event, "20"); + +#-------------------------------------------------- +# actions for user-delete event +#-------------------------------------------------- +$event = "user-delete"; + +# TODO alternative ? event_link("qmail-update-group", $event, "25"); + +#-------------------------------------------------- +# actions for ip-up event: +#-------------------------------------------------- +$event = "ip-up"; + +# TODO alternative ? event_link("qmail-ipup", $event, "20"); + +#-------------------------------------------------- +# actions for ip-change event: +#-------------------------------------------------- +$event = "ip-change"; + +safe_symlink("sighup", "root/etc/e-smith/events/$event/services2adjust/postfix"); + + + # our event specific for updating with yum without reboot $event = 'smeserver-postfix-update'; @@ -20,22 +184,16 @@ foreach my $file (qw( #action needed in case we have a systemd unit event_link('systemd-default', $event, '10'); event_link('systemd-reload', $event, '50'); +safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/postfix"); #services we might need to restart #event_services($event, 'xxxx' => 'restart', 'yyyy' => 'restart'); -#Backup contrib files +#Backup files # backup_includes("smeserver-postfix", qw( # files(s) to be backed up #)); -#Other possible entries: -#Server manager entry -#panel_link("smeserver-postfix", 'manager'); -#Events to smeserver-postfix -#$event = 'smeserver-postfix-smeserver-postfix'; -# safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/smeserver-postfix"); -# templates2events("/etc/smeserver-postfix/smeserver-postfix.conf", $event); diff --git a/root/etc/e-smith/db/configuration/default/postfix/status b/root/etc/e-smith/db/configuration/default/postfix/status new file mode 100644 index 0000000..86981e6 --- /dev/null +++ b/root/etc/e-smith/db/configuration/default/postfix/status @@ -0,0 +1 @@ +enabled diff --git a/root/etc/e-smith/db/configuration/default/postfix/type b/root/etc/e-smith/db/configuration/default/postfix/type new file mode 100644 index 0000000..24e1098 --- /dev/null +++ b/root/etc/e-smith/db/configuration/default/postfix/type @@ -0,0 +1 @@ +service diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/10start b/root/etc/e-smith/templates/etc/postfix/main.cf/10start new file mode 100644 index 0000000..f9bb687 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/10start @@ -0,0 +1,9 @@ +queue_directory = /var/spool/postfix + +command_directory = /usr/sbin + +daemon_directory = /usr/libexec/postfix + +data_directory = /var/lib/postfix + +mail_owner = postfix diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/20home_mailbox b/root/etc/e-smith/templates/etc/postfix/main.cf/20home_mailbox new file mode 100644 index 0000000..48be75b --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/20home_mailbox @@ -0,0 +1 @@ +home_mailbox = Maildir/ diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/30myhostname b/root/etc/e-smith/templates/etc/postfix/main.cf/30myhostname new file mode 100644 index 0000000..b27676d --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/30myhostname @@ -0,0 +1 @@ +myhostname = { $SystemName } diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/31mydomain b/root/etc/e-smith/templates/etc/postfix/main.cf/31mydomain new file mode 100644 index 0000000..8a57468 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/31mydomain @@ -0,0 +1 @@ +mydomain = { $DomainName } diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/32myorigin b/root/etc/e-smith/templates/etc/postfix/main.cf/32myorigin new file mode 100644 index 0000000..6af2bd2 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/32myorigin @@ -0,0 +1 @@ +myorigin = $mydomain diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/40inet b/root/etc/e-smith/templates/etc/postfix/main.cf/40inet new file mode 100644 index 0000000..bdea448 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/40inet @@ -0,0 +1,2 @@ +inet_interfaces = loopback-only +inet_protocols = all diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/41mynetworks b/root/etc/e-smith/templates/etc/postfix/main.cf/41mynetworks new file mode 100644 index 0000000..f72882b --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/41mynetworks @@ -0,0 +1 @@ +mynetworks = 127.0.0.0/8 diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/50alias b/root/etc/e-smith/templates/etc/postfix/main.cf/50alias new file mode 100644 index 0000000..091ed74 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/50alias @@ -0,0 +1,3 @@ +alias_maps = hash:/etc/aliases +alias_database = hash:/etc/aliases +newaliases_path = /usr/bin/newaliases.postfix diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/50mydestination b/root/etc/e-smith/templates/etc/postfix/main.cf/50mydestination new file mode 100644 index 0000000..d27077f --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/50mydestination @@ -0,0 +1,2 @@ +# TODO add all domains and hosts related here +mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/50virtual b/root/etc/e-smith/templates/etc/postfix/main.cf/50virtual new file mode 100644 index 0000000..e03dcc5 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/50virtual @@ -0,0 +1,30 @@ +{ + $OUT = ''; + my $virtual = 'virtual_alias_domains = '; + + use esmith::DomainsDB; + my $domainsdb = esmith::DomainsDB->open_ro(); + + my $tempstr = ''; + for my $domain ($domainsdb->domains) + { + my $primary = $domain->prop('SystemPrimaryDomain'); + next if ( $primary eq 'yes' ); + my $mail_server = $domain->prop('MailServer') + || $DelegateMailServer + || 'localhost'; + + next if ( $mail_server ne 'localhost' ); + + $emaildomain = $domain->key; + $tempstr .= "$emaildomain "; + } + + if ( $tempstr ne '' ) + { + $OUT .= "$virtual"; + $OUT .= "$tempstr\n"; + $OUT .= "virtual_alias_maps = hash:/etc/postfix/virtual"; + } +} + diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/60transport b/root/etc/e-smith/templates/etc/postfix/main.cf/60transport new file mode 100644 index 0000000..420d59d --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/60transport @@ -0,0 +1,24 @@ +{ + $OUT = ''; + my $transport = 'transport_maps = hash:/etc/postfix/transport '; + + use esmith::DomainsDB; + my $domainsdb = esmith::DomainsDB->open_ro(); + + + + for my $domain ($domainsdb->domains) + { + my $mail_server = $domain->prop('MailServer') + || $DelegateMailServer + || 'localhost'; + + if ( $mail_server ne 'localhost' ) + { + $OUT = "$transport\n"; + } + + } + +} + diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/10header b/root/etc/e-smith/templates/etc/postfix/master.cf/10header new file mode 100644 index 0000000..9179169 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/10header @@ -0,0 +1,10 @@ +# +# Postfix master process configuration file. For details on the format +# of the file, see the master(5) manual page (command: "man 5 master"). +# +# Do not forget to execute "postfix reload" after editing this file. +# +# ========================================================================== +# service type private unpriv chroot wakeup maxproc command + args +# (yes) (yes) (yes) (never) (100) +# ========================================================================== diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/20smtp b/root/etc/e-smith/templates/etc/postfix/master.cf/20smtp new file mode 100644 index 0000000..b8ecf33 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/20smtp @@ -0,0 +1,4 @@ +2525 inet n - n - - smtpd +#smtp inet n - n - - smtpd +#smtp inet n - n - 1 postscreen +#smtpd pass - - n - - smtpd diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/22dnsblog b/root/etc/e-smith/templates/etc/postfix/master.cf/22dnsblog new file mode 100644 index 0000000..55678f4 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/22dnsblog @@ -0,0 +1 @@ +#blog unix - - n - 0 dnsblog diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/23tlsproxy b/root/etc/e-smith/templates/etc/postfix/master.cf/23tlsproxy new file mode 100644 index 0000000..a643af2 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/23tlsproxy @@ -0,0 +1 @@ +#tlsproxy unix - - n - 0 tlsproxy diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/25submission b/root/etc/e-smith/templates/etc/postfix/master.cf/25submission new file mode 100644 index 0000000..9627b9e --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/25submission @@ -0,0 +1,13 @@ +# disabled on Koozali SME Server as handled by (u)qpsmtpd +#submission inet n - n - - smtpd +# -o syslog_name=postfix/submission +# -o smtpd_tls_security_level=encrypt +# -o smtpd_sasl_auth_enable=yes +# -o smtpd_tls_auth_only=yes +# -o smtpd_reject_unlisted_recipient=no +# -o smtpd_client_restrictions=$mua_client_restrictions +# -o smtpd_helo_restrictions=$mua_helo_restrictions +# -o smtpd_sender_restrictions=$mua_sender_restrictions +# -o smtpd_recipient_restrictions= +# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject +# -o milter_macro_daemon_name=ORIGINATING diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/28smtps b/root/etc/e-smith/templates/etc/postfix/master.cf/28smtps new file mode 100644 index 0000000..09ad4f8 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/28smtps @@ -0,0 +1,12 @@ +# Disabled on Koozali SME Server as handled by (s)qpsmtpd +#smtps inet n - n - - smtpd +# -o syslog_name=postfix/smtps +# -o smtpd_tls_wrappermode=yes +# -o smtpd_sasl_auth_enable=yes +# -o smtpd_reject_unlisted_recipient=no +# -o smtpd_client_restrictions=$mua_client_restrictions +# -o smtpd_helo_restrictions=$mua_helo_restrictions +# -o smtpd_sender_restrictions=$mua_sender_restrictions +# -o smtpd_recipient_restrictions= +# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject +# -o milter_macro_daemon_name=ORIGINATING diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/35content b/root/etc/e-smith/templates/etc/postfix/master.cf/35content new file mode 100644 index 0000000..6c8ea3c --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/35content @@ -0,0 +1,26 @@ +#628 inet n - n - - qmqpd +pickup unix n - n 60 1 pickup +cleanup unix n - n - 0 cleanup +qmgr unix n - n 300 1 qmgr +#qmgr unix n - n 300 1 oqmgr +tlsmgr unix - - n 1000? 1 tlsmgr +rewrite unix - - n - - trivial-rewrite +bounce unix - - n - 0 bounce +defer unix - - n - 0 bounce +trace unix - - n - 0 bounce +verify unix - - n - 1 verify +flush unix n - n 1000? 0 flush +proxymap unix - - n - - proxymap +proxywrite unix - - n - 1 proxymap +smtp unix - - n - - smtp +relay unix - - n - - smtp +# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 +showq unix n - n - - showq +error unix - - n - - error +retry unix - - n - - error +discard unix - - n - - discard +local unix - n n - - local +virtual unix - n n - - virtual +lmtp unix - - n - - lmtp +anvil unix - - n - 1 anvil +scache unix - - n - 1 scache diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/70nonPostfix b/root/etc/e-smith/templates/etc/postfix/master.cf/70nonPostfix new file mode 100644 index 0000000..f0bdd4f --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/70nonPostfix @@ -0,0 +1,10 @@ +# +# ==================================================================== +# Interfaces to non-Postfix software. Be sure to examine the manual +# pages of the non-Postfix software to find out what options it wants. +# +# Many of the following services use the Postfix pipe(8) delivery +# agent. See the pipe(8) man page for information about ${recipient} +# and other message envelope options. +# ==================================================================== +# diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/71maildrop b/root/etc/e-smith/templates/etc/postfix/master.cf/71maildrop new file mode 100644 index 0000000..1b7bd2c --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/71maildrop @@ -0,0 +1,8 @@ +# maildrop. See the Postfix MAILDROP_README file for details. +# Also specify in main.cf: maildrop_destination_recipient_limit=1 +# +#maildrop unix - n n - - pipe +# flags=DRXhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} +# +# ==================================================================== +# diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/73cyrus b/root/etc/e-smith/templates/etc/postfix/master.cf/73cyrus new file mode 100644 index 0000000..30125a5 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/73cyrus @@ -0,0 +1,26 @@ +# Recent Cyrus versions can use the existing "lmtp" master.cf entry. +# +# Specify in cyrus.conf: +# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4 +# +# Specify in main.cf one or more of the following: +# mailbox_transport = lmtp:inet:localhost +# virtual_transport = lmtp:inet:localhost +# +# ==================================================================== +# +# Cyrus 2.1.5 (Amos Gouaux) +# Also specify in main.cf: cyrus_destination_recipient_limit=1 +# +#cyrus unix - n n - - pipe +# flags=DRX user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user} +# +# ==================================================================== +# +# Old example of delivery via Cyrus. +# +#old-cyrus unix - n n - - pipe +# flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user} +# +# ==================================================================== +# diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/75uucp b/root/etc/e-smith/templates/etc/postfix/master.cf/75uucp new file mode 100644 index 0000000..d16ee69 --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/75uucp @@ -0,0 +1,7 @@ +# See the Postfix UUCP_README file for configuration details. +# +#uucp unix - n n - - pipe +# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) +# +# ==================================================================== +# diff --git a/root/etc/e-smith/templates/etc/postfix/master.cf/77others b/root/etc/e-smith/templates/etc/postfix/master.cf/77others new file mode 100644 index 0000000..669c40a --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/master.cf/77others @@ -0,0 +1,15 @@ +# Other external delivery methods. +# +#ifmail unix - n n - - pipe +# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) +# +#bsmtp unix - n n - - pipe +# flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient +# +#scalemail-backend unix - n n - 2 pipe +# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store +# ${nexthop} ${user} ${extension} +# +#mailman unix - n n - - pipe +# flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py +# ${nexthop} ${user} diff --git a/root/etc/e-smith/templates/etc/postfix/transport/10hosts b/root/etc/e-smith/templates/etc/postfix/transport/10hosts new file mode 100644 index 0000000..0f5004a --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/transport/10hosts @@ -0,0 +1,24 @@ +{ + $OUT = ''; + + use esmith::DomainsDB; + my $domainsdb = esmith::DomainsDB->open_ro(); + + + + for my $domain ($domainsdb->domains) + { + + my $mail_server = $domain->prop('MailServer') + || 'localhost'; + + if ( $mail_server ne 'localhost' ) + { + $emaildomain = $domain->key; + $OUT .= "\@$emaildomain\t$mail_server\n"; + } + + } + +} + diff --git a/root/etc/e-smith/templates/etc/postfix/virtual/10pseudonyms b/root/etc/e-smith/templates/etc/postfix/virtual/10pseudonyms new file mode 100644 index 0000000..5df25ec --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/virtual/10pseudonyms @@ -0,0 +1,26 @@ +{ + my $dms = $DelegateMailServer; + + return "# DelegateMailServer is set" if ($dms && ($dms !~ /^\s*$/)); + + $OUT = ""; + + use esmith::AccountsDB; + + my $adb = esmith::AccountsDB->open_ro or die "Couldn't open AccountsDB"; + + for my $pseudo ($adb->pseudonyms) + { + #next unless ($pseudo->key =~ /@/); + + my $account = $pseudo->prop("Account"); + $account = "admin" and warn $pseudo->prop("Account") . " is not a valid account, default to admin " unless $adb->get($account); + my $acct = $adb->get($account); + if ($acct->prop('type') eq "group") + { + $account =~ s/\./:/g; + } + + $OUT .= $pseudo->key . "\t$account\n"; + } +} diff --git a/change-this-to-the-package-name.spec b/smeserver-postfix.spec similarity index 89% rename from change-this-to-the-package-name.spec rename to smeserver-postfix.spec index 0e7abe4..00ce9a9 100644 --- a/change-this-to-the-package-name.spec +++ b/smeserver-postfix.spec @@ -19,8 +19,9 @@ AutoReqProv: no Koozali SME Server wrapper to configure postfix %changelog -* Day MMMM DD YYYY 1.0-1.sme -- Initial code - create RPM [SME:99999] +* Tue Oct 15 2024 1.0-1.sme +- Initial code - create RPM [SME: 12737] + templates from Stefano Zamboni %prep