diff --git a/README.md b/README.md index dda2d04..2750fb4 100644 --- a/README.md +++ b/README.md @@ -51,20 +51,23 @@ DONE * main domain * listen only socket * virtual alias for system, pseudonyms, groups, shared +* forward email support via .qmail +* spam filtering to .junk +* .qmail support using mini-qmail + wrapper and seakablepipe +* maildrop/procmail support directly via .qmail +* check /usr/sbin/sendmail -> /etc/alternatives/mta -> /usr/sbin/sendmail.postfix +* EmailUnknownUser support use luser_relay. if we had virtual domain we could not use it +* migrate and remove qmail properties to postfix TODO -* regression: forward email support via .qmail or .forward -* regression: spam filtering to .junk -* regression: .qmail support or alternative via .forward -* regression: maildrop/procmail support directly or via .forward or via .qmail support -* regression: EmailUnknownUser support ( we can not use luser_relay as we use virtual_alias (this might need to add all unix accoutns in this virtual map and also all needed content of /etc/aliases when not returntosender) -* switch smeserver-qpsmtpd support to postfix -* check /usr/sbin/sendmail -> /etc/alternatives/mta -> /usr/sbin/sendmail.postfix upon removal/update of qmail -* .foward support * remove from smeserver-mail /usr/local/sbin/smtp-auth-proxy.pl * migrate and rewrite code for smtp-auth-proxy properties -* migrate and remove qmail properties to postfix -* make a copy of qmail/config/smtproutes to (su)qpsmtpd/config/smtproutes +* make a copy of /var/qmail/control/smtproutes to (su)qpsmtpd/config/smtproutes + +FUTURE +* .foward support, when/if .qmail support is dropped +* TODO VirtualMail for domain with catchall and EmailUnknownUser ( we can not use luser_relay if we use virtual_alias +* ldap / AD user support TO CHECK $prop->{Blacklist} = $smtp_proxy_rec->prop('Blacklist') || " "; @@ -80,11 +83,11 @@ domain config * DelegateMailServer * SMTPSmartHost -* qmail/postfix->MaxMessageSize defined as 15Mb -* qmail/postfix->FilterType (empty) -* qmail/postfix->ConcurrencyRemote default to 20 -* qmail/postfix->ConcurrencyLocal default to 20 -* qmail/postfix->DoubleBounceTo default to postmaster +* postfix->MaxMessageSize defined as 15Mb +* postfix->FilterType (empty) +* postfix->ConcurrencyRemote default to 20 +* postfix->ConcurrencyLocal default to 20 +* postfix->DoubleBounceTo default to postmaster * postfix->tls_security_level default to may * postfix->tls_enforce_peername default to yes * $qpsmtpd{HeloHost} default to $myhostname @@ -95,6 +98,7 @@ config * EmailUnknownUser (default to returntosender) REFERENCES +* https://unix.stackexchange.com/questions/93197/postfix-configuration-to-verify-all-recipients * https://phoenixnap.com/kb/postfix-smtp * https://www.gentei.org/~yuuji/software/dotqmail/ * https://www.gentei.org/~yuuji/software/dotqmail/dotqmail diff --git a/root/etc/e-smith/db/configuration/migrate/postfix b/root/etc/e-smith/db/configuration/migrate/postfix new file mode 100644 index 0000000..d50f27b --- /dev/null +++ b/root/etc/e-smith/db/configuration/migrate/postfix @@ -0,0 +1,14 @@ +{ + # migrate qmail -> postfix MaxMessageSize FilterType ConcurrencyRemote ConcurrencyLocal DoubleBounceTo + # we keep qmail as MDA so we can leave DeliveryType DeliveryInstruction + for ( qw( MaxMessageSize FilterType ConcurrencyRemote ConcurrencyLocal DoubleBounceTo) ) { + my $sa = $DB->get('qmail') or next; + my $value=$DB->get_prop_and_delete('qmail',$_) or next; + next if (exists $postfix{$_}); + $DB->set_prop('postfix', $_ , $value); + } + + # TODO we migrate smtp-auth-proxy ; SMTPSmartHost Userid Passwd PeerPort + + +} diff --git a/root/etc/e-smith/templates/etc/postfix/main.cf/64luser_relay_catchall b/root/etc/e-smith/templates/etc/postfix/main.cf/64luser_relay_catchall new file mode 100644 index 0000000..1b00aaa --- /dev/null +++ b/root/etc/e-smith/templates/etc/postfix/main.cf/64luser_relay_catchall @@ -0,0 +1,6 @@ +{ +# we use the value of EmailUnknownUser (default to returntosender) +return "# we bounce all unknown address $EmailUnknownUser not set or equal to returntosender " unless (defined $EmailUnknownUser and $EmailUnknownUser ne 'returntosender'); +$OUT ="luser_relay = $EmailUnknownUser"; + +} diff --git a/smeserver-postfix.spec b/smeserver-postfix.spec index 818032b..224154f 100644 --- a/smeserver-postfix.spec +++ b/smeserver-postfix.spec @@ -1,6 +1,6 @@ %define name smeserver-postfix %define version 1.0 -%define release 4 +%define release 5 Summary: This is what smeserver-postfix does. Name: %{name} Version: %{version} @@ -24,11 +24,11 @@ AutoReqProv: no Koozali SME Server wrapper to configure postfix %changelog -* Sun Dec 15 2024 Jean-Philippe Pialasse 1.0-4.sme +* Sun Dec 15 2024 Jean-Philippe Pialasse 1.0-5.sme - add mini-qmail as Message delivery agent [SME: 12737] - few other fixes - TODO migrate old qmail properties and change in template - TODO catch all non existing recipient / check BCC working + few other fixes; +x on needed executable files + migrate old qmail properties used in postfix + catch all non existing recipient / check BCC working * Tue Nov 19 2024 Jean-Philippe Pialasse 1.0-3.sme - add requirements [SME: 12737] @@ -64,10 +64,10 @@ rm -f %{name}-%{version}-filelist /sbin/e-smith/genfilelist $RPM_BUILD_ROOT \ --file /sbin/e-smith/systemd/postfix-reload 'attr(750,root,root)' \ --file /sbin/e-smith/systemd/postfix-pre 'attr(750,root,root)' \ + --file /usr/bin/dotqmail 'attr(0554,root,root)' \ + --file /usr/bin/postqmail-local 'attr(0554,root,root)' \ + --file /usr/local/bin/seekablepipe 'attr(0554,root,root)' \ > %{name}-%{version}-filelist -#echo "%doc COPYING" >> %{name}-%{version}-filelist -#--dir 'attr(755,user,grp)' \ -#--file 'attr(755,root,root)' \ %clean cd ..