Zitat von Gaby Vanhegan <g...@vanhegan.net>:

Is there a portable way to share postmapped file across machines?

I have one postfix server running OpenBSD and another running CentOS, I want the CentOS server to provide secondary services for for the BSD box. The OpenBSD box uses virtual delivery:

/etc/postfix/main.cf:(BSD box)
...
# What are the domains that we handle mail for?
virtual_alias_domains = hash:/etc/postfix/virtual_domains
virtual_alias_maps = hash:/etc/postfix/virtual

The two plain text versions of those files are copied over to the CentOS server and renamed so they act as a relay reference:

/etc/postfix.main.cf (CentOS box)
...
# Relay for ourselves and other hosts
relay_domains = $mydestination, hash:/etc/postfix/relay_domains
relay_recipient_maps = hash:/etc/postfix/relay_recipients

My setup currently copies the plain text versions and creates a flag file. A cron job then looks for the flag file and postmaps the files if needed.

I'd like to remove this step and just copy the .db file over but when I copy the file to the CentOS box I see this error:

Nov 12 09:01:11 dn postfix/smtpd[2346]: fatal: open database /etc/postfix/mentok/relay_domains.db: Invalid argument

I get the same error if I try to read the contents of the .db file using postmap directly. Is there going to be some architectural difference between the two systems? Is there a more cross-platform file format I could use for the databases?

The BerkeleyDB used for hash and btree are known for their always changing file format so don't copy db files from one machine to the other. Either use a network database like LDAP,MySQL,PostgreSQL or stick with plain text and build them on the machine in question. You *may* get around with using cdb but don't take it for granted.

Regards

Andreas


Reply via email to