Hello all,
I'm using postfix together with LDAP from where I take information
about user addresses and their home dirs, where I want to store emails.
I have everything configured correctly, it's working for all users
except for users that don't have created homedir yet. I want to
implement script, that will get message based on that will create
homedir + maildir for user is not exists already and then it will pass
transparently whole message to virtual, that will do delivery as usual.
Over the Internet I've found such scripts for maildrop delivery, but
with implementing same logic I had no success to apply that knowledge in
my scenario.
My configuration is in master.cf:
-------------------------------------------
homedir unix - n n - - pipe
user=nobody:nobody argv=/usr/libexec/postfix/home -d
${user}@${nexthop} -f ${sender}
-------------------------------------------
Content of /usr/libexec/postfix/home is:
-------------------------------------------
#!/bin/bash
INSPECT_DIR=/var/spool/filter
# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Clean up when done or when aborting.
trap "rm -f in.$$" 0 1 2 3 15
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit
$EX_TEMPFAIL; }
cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
/usr/libexec/postfix/virtual "$@" <in.$$
exit $?
-------------------------------------------
Now when I end email to machine, I see following in log:
-------------------------------------------
Nov 19 15:29:01 localhost postfix/postfix-script[4343]: starting the
Postfix mail system
Nov 19 15:29:01 localhost postfix/master[4344]: daemon started --
version 2.9.4, configuration /etc/postfix
Nov 19 15:29:05 localhost postfix/smtpd[4349]: connect from
unknown[192.168.255.201]
Nov 19 15:29:05 localhost postfix/smtpd[4349]: F117F43F2D:
client=unknown[192.168.255.201]
Nov 19 15:29:06 localhost postfix/cleanup[4353]: F117F43F2D:
message-id=<>
Nov 19 15:29:07 localhost postfix/qmgr[4348]: F117F43F2D:
from=<r...@b.zn>, size=421, nrcpt=1 (queue active)
Nov 19 15:29:07 localhost postfix/smtpd[4349]: disconnect from
unknown[192.168.255.201]
Nov 19 15:29:07 localhost postfix/virtual[4357]: fatal: no transport
type specified
Nov 19 15:29:08 localhost postfix/pipe[4354]: F117F43F2D:
to=<lukas@A.Z>, relay=homedir, delay=2.3, delays=1.2/0.01/0/1.2,
dsn=5.3.0, status=bounced (Command died with status 1:
"/usr/libexec/postfix/home")
-------------------------------------------
What I believe is wrong is way, how I pass email to virtual at the end
of script. Unfortunately when I try to run /usr/libexec/postfix/virtual
with parameters such as --help or -h I don't get any help, and also I
didn't found any documentation saying if virtual needs to get any
command line arguments or something special to STDIN. so question is how
can I specify all required inputs to virtual, in log it's asking for
transport specification, but I'm not sure it will be only one
information virtual needs.
Thank you in advance.