Я установил SpamAssassin дважды, один раз с помощью yum install spamassassin и один раз загрузив исходный код из cpan.
SpamAssassin сам запускается и сообщает о себе как v3.4.1, работающий на Perl 5.22.0, но когда я запускаю его как демон с помощью 'service spamassassin start', spamd завершается со следующими ошибками: -
# service spamassassin start
Starting spamd: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/Dns.pm line 757.
Compilation failed in require at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/Message/Metadata/Received.pm line 49.
BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/Message/Metadata/Received.pm line 49.
Compilation failed in require at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/Message/Metadata.pm line 58.
BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/Message/Metadata.pm line 58.
Compilation failed in require at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/Message.pm line 51.
BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/Mail/SpamAssassin/Message.pm line 51.
Compilation failed in require at /usr/share/perl5/vendor_perl/Mail/SpamAssassin.pm line 75.
BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/Mail/SpamAssassin.pm line 75.
Compilation failed in require at /usr/bin/spamd line 85.
BEGIN failed--compilation aborted at /usr/bin/spamd line 85.
[FAILED]
У меня есть подозрения, что SA и его модули были установлены в другом наборе каталогов perl include, поскольку версия perl v5.22.0 получает свои модули из /usr/local/lib/perl5/site_perl/5.22.00 среди других каталогов, но они у всех в них есть 5.22.0.
Я пробовал переустановить Mail :: SpamAssassin с помощью cpan, но он продолжает просто говорить мне, что у меня самая последняя версия. Я также пробовал установить его из источника cpan.org (который устанавливается), но он не устанавливает никаких зависимостей, и я не знаю, что нужно.
Я пробовал выполнить установку Mail :: SpamAssassin cpan fforce, но это не имеет значения.
Spamd запускается с использованием perl v5.22.0, поэтому следует (я бы подумал) получить доступ к каталогам include 5.22.0.
Теперь я полностью застрял.
Как мне заставить SpamAssassin работать вместе с Postfix и Dovecot, чтобы отсеять спам, который я получаю.
Если окажется, что запустить SpamAssassin невозможно, есть ли альтернатива?
Любая помощь приветствуется.
Оказывается, spamd нужно было запускать под perl 5.10.1, изначально установленной на этом сервере версией. Итак, вместо того, чтобы трепать: -
#!/usr/bin/perl -T -w
это просто нужно
#!/usr/bin/perl5.10.1 -T -w
Частично ключ кроется в сообщении об ошибке (чтение неправильных включаемых файлов), и в основном это было связано с комментарием thrig - спасибо