[OpenWrt-Devel] Postfix on OpenWRT

Denis Shulyaka shulyaka at gmail.com
Sun Sep 28 19:03:58 EDT 2014


I'm currently packaging a 2.11.1 version. Here is the link:


2014-09-29 2:04 GMT+04:00 W. Michael Petullo <mike at flyn.org>:
>> Wow! I'm happy that someone new joined the party. Toes it mean that binary
>> packages for Barrier Breaker are going to be available? I'm asking because
>> during the compilation I get the following error:
>> /mnt/trash/barrier_breaker-14.07-rc3/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-
>> skipping incompatible /usr/lib64/libc.so when searching for -lc
>> collect2: error: ld returned 1 exit status
>> Makefile:50: recipe for target 'master' failed
> Postfix compiles fine on my build host (Fedora 20), but actually creating
> the packages causes the following errors (here it looks like the script
> is trying to manipulate my build host's root filesystem):
>> Configuring postfix.
>> postfix: error: to submit mail, use the Postfix sendmail command
>> postfix: fatal: the postfix command is reserved for the superuser
>> postfix: error: to submit mail, use the Postfix sendmail command
>> postfix: fatal: the postfix command is reserved for the superuser
>> postalias: fatal: open /etc/aliases.db: Permission denied
>> grep: /etc/sysupgrade.conf: No such file or directory
>> /home/mike/Source/openwrt/openwrt/build_dir/target-mips_34kc_uClibc- line 24: [: -eq: unary operator expected
>> /home/mike/Source/openwrt/openwrt/build_dir/target-mips_34kc_uClibc- line 29: /etc/init.d/postfix: No such file or directory
> The following is the postinst script, with some comments inline:

This has been fixed (with the help from Reinhard Schu) in the 2.11.1
package. It was a bug in postinst script.

>> define Package/postfix/postinst
>> #!/bin/sh
>> if [ `grep -c postfix /etc/passwd` -eq 0 ]
>> then
>>  echo "postfix:x:34:" >> /etc/group
>>  echo "postdrop:x:35:" >> /etc/group
>>  echo "postfix:!:34:34::/var:/bin/false" >> /etc/passwd
>> fi
> Adding users often goes in the init.d script where we can make use of some
> common shell functions. See, for example, lighttpd's use of user_exists
> in lighttpd.init at:
>         https://github.com/openwrt/packages/blob/master/net/lighttpd/files/lighttpd.init

Thanks for the hint! I've applied it.

>> if [ ! -f /etc/services ] || [ `grep -c smtp /etc/services` -eq 0 ]
>> then
>>  echo "smtp            25/tcp          mail" >> /etc/services
>>  echo "smtp            25/udp          mail" >> /etc/services
>> fi
> I think /etc/services always includes smtp on OpenWrt. Is this not
> correct?

I think I just had a broken setup some time ago, it was completely
empty. However now I can see a lot of services there so I think it is
safe to remove. Thanks again for the hint!

>> if [ ! -f /etc/aliases ]
>> then
>>  ln -s /etc/postfix/aliases /etc/aliases
>> fi
> Why do we need /etc/aliases?

This is a default location hard built into postfix in src/util/sys_defs.h file:

#define ALIAS_DB_MAP    DEF_DB_TYPE ":/etc/aliases"

It can be redefined in the user config file. I was going to write a
patch but thought /etc/aliases is where users would look for it, so I
made a soft link. Do you think it is wrong?

>> postfix set-permissions
>> postfix upgrade-configuration
>> newaliases
>> if [ `ps | grep "postfix/master" | grep -cv grep` -gt 0 ]
>> then
>>  postfix reload
>> fi
>> if [ `grep -c aliases /etc/sysupgrade.conf` -eq 0 ]
>> then
>>  echo "/etc/postfix/main.cf" >> /etc/sysupgrade.conf
>>  echo "/etc/postfix/aliases" >> /etc/sysupgrade.conf
>> fi
>> /etc/init.d/postfix enable
>> endef
> Thanks,
> --
> Mike
> :wq

Best regards,
Denis Shulyaka
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list