我不得不在服务器上更改MySQL的root密码。 Exim也为用户使用MySQL
我不认为Exim / Dovecot使用这个密码,但是现在情况并不好,我确信他们是相关的。
当我尝试启动Exim时:
Starting exim: Error loading mysql.so: /usr/lib64/exim/4.72-6.6.amzn1/lookups/mysql.so: undefined symbol: mysql_servers 2014-09-13 19:13:22 Error loading lookup module mysql.so: NULL
运行服务--status-all了我
exim dead but subsys locked
我在/ etc /中检查/ eximdisable,没有任何内容。
磁盘空间使用率为85%,文件使用率为7%。
我最近看到这个。 我在基于CentOS 6的Amazon EC2服务器上为朋友构build了一些Exim 4.84 rpms(你不会说你运行的是哪个版本的Amazon服务器)。 我不得不重新configurationspec文件来编译并直接将mysql模块链接到Exim二进制文件中,而不是使其成为可加载的模块。 我不知道为什么这个全局variables对Amazon服务器上的mysql可加载模块是不可见的,因为它在我以前构build的Exim上的每个其他体系结构上都可见。
我的第一个预感是它与gcc版本有关,以及它如何处理优化标志。 但是没有任何证据或事实支持,这只是一个预感。
Exim无法加载mysql.so因为它没有build立。 你必须确保你至less安装了mysql-client 。
事实certificate,这与海湾合作委员会版本或优化失败没有任何关系。 相反,这是一个不完整的exim二进制编译/链接。 有一个标志(-rdynamic)让gcc告诉链接器将符号导出为dynamic加载的模块。 在构buildmysql.so 和构buildExim二进制文件时,必须将此标志传递给gcc。
如果这个RPM基于Fedora exim.spec文件(我的是),我发现有一些补丁在Local/Makefile中设置了LFLAGSvariables,但是make命令在命令行上覆盖了LFLAGS。 简单地将你设置的LFLAGS移动到你的Local / Makefile中,然后从make命令中删除它:
# This used to be set on the make commandline echo 'LFLAGS+=-pie' >> Local/Makefile # # Then further down where the make command is, # remove the LFLAGS= setting, leaving only: make _lib=%{_lib} FULLECHO=
另外,很可能你需要添加到你的Local/Makefile :
LFLAGS+=-rdynamic -ldl # _OR_ EXTRALIBS_EXIM+=-rdynamic -ldl
更多细节可以在这里find: https : //stackoverflow.com/a/482556/611911
注意:当你接受我提供的第一个答案的时候,所有确实是说“是的,我也有这个问题”。 这个答案实际上解决了这个问题。 🙂