Plugins Support on AIX ====================== /How to build Dovecot with plugins supported on AIX./ Tested with: * AIX 5.2, VAC 5.0.2 and Dovecot 1.0rc21 to 1.0.13 /(Dovecot 1.1.x does not build with VAC 5.0.2)/ * AIX 5.2, VAC 8.0.0 and Dovecot 1.1.1 The Problem ----------- * When you trying to use plugins on AIX you seen error messages like this: ---%<---------------------------------------------------------------------- imap(root): Error: dlopen(/usr/local/lib/dovecot/imap/lib20_zlib_plugin.so) failed: rtld: 0712-001 Symbol i_error was referenced from module /usr/local/lib/dovecot/imap/lib20_zlib_plugin.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol i_stream_get_data was referenced from module /usr/local/lib/dovecot/imap/lib20_zlib_plugin.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol i_stream_skip was referenced from module /usr/local/lib/dovecot/imap/lib20_zlib_plugin.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol i_stream_seek was referenced from module /usr/local/lib/dovecot/imap/lib20_zlib_plugin.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol i_stream_close was referenced from module /usr/local/lib/dovecot/imap/lib20_zlib_plugin.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol i_panic was referenced from module /usr/local/lib/dovecot/imap/lib20_zlib_plugin.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol pool_get_exp_grown_size was referenced from module /usr/local/lib/dovecot/imap/lib20_zlib_plugin.so(), but a runtime definition of the symbol was not found. Additional errors occurred but are not reported. ---%<---------------------------------------------------------------------- * .. produced by executing ---%<---------------------------------------------------------------------- # MAIL_PLUGINS=zlib /usr/local/libexec/dovecot/imap ---%<---------------------------------------------------------------------- Compiler Script --------------- * Create a compiler script to rewrite the /xlc/ command line on the fly: *dovecot-cc* ---%<---------------------------------------------------------------------- #!/bin/bash xlc=/usr/bin/xlc ar=/bin/ar sed=/bin/sed dest=NOBINARY for i in "$@"; do case "$i" in '-o') dest=;; *) if [ -z "$dest" ]; then dest="$i"; break; fi;; esac done case "$dest" in imap-login) args1="../lib-charset/libcharset.a ../lib-mail/libmail.a -liconv";; imap) args1="../lib-sql/libsql.a";; pop3) args1="../lib-sql/libsql.a";; deliver) args1="../lib-sql/libsql.a";; esac for i in "$@" $args1; do case "$i" in */*.a) lib="${i##*/}"; obj=`$ar -t $i | $sed "s:^:${i%/*}/:"`;; *.a) lib="$i"; obj=`$ar -t $i | $sed "s:^:./:"`;; *) continue;; esac test -d .libs || mkdir .libs > .libs/${lib%.a}.exp args2="$args2 -bE:.libs/${lib%.a}.exp" (set -x ; exec $xlc -qmkshrobj -qexpfile=.libs/${lib%.a}.exp $obj) 2>/dev/null done (set -x ; exec $xlc "$@" $args1 $args2) ---%<---------------------------------------------------------------------- Compiling Dovecot ----------------- * Expand Dovecot: ---%<---------------------------------------------------------------------- gzip -cd doveccot-1.0.rc21.tar.gz | tar xvf - ---%<---------------------------------------------------------------------- * Setup build environment: ---%<---------------------------------------------------------------------- export CC=$PWD/dovecot-cc export LDFLAGS="-bexpall -brtl" ---%<---------------------------------------------------------------------- * Configure and build Dovecot ---%<---------------------------------------------------------------------- cd dovecot-1.0.rc21 bash configure make ---%<---------------------------------------------------------------------- * Test a plugin (e.g. zlib) ---%<---------------------------------------------------------------------- echo 0 logout | MAIL_PLUGIN_DIR=src/plugins/zlib/.libs/ MAIL_PLUGINS="zlib" MAIL=maildir:/tmp src/imap/imap ---%<---------------------------------------------------------------------- you should see this: ---%<---------------------------------------------------------------------- * PREAUTH [CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS] Logged in as root * BYE Logging out 0 OK Logout completed. imap(root): Info: Disconnected: Logged out ---%<---------------------------------------------------------------------- * Install Dovecot ---%<---------------------------------------------------------------------- make install ---%<---------------------------------------------------------------------- Prebuild Binaries for AIX 5.2 ----------------------------- You will find prebuild AIX 5.2 binaries here: http://www.fh-trier.de/~beckerr/dovecot/ (This file was created from the wiki on 2011-11-16 14:09)