Ошибки maiad

Случилось!

Нужно было настроить почтовый сервер на базе FreeBSD x64 установив при этом maia mailguard в качестве спамореза. И вроде бы писать не о чем, однако напоролся на странные ошибки maiad содержание и решение которых привожу здесь

Ошибка №1 (maia-1.0.3.r1575_3)

Для установки maia необходимо наличине какой-нибудь БД. Я использую MariaDB и в /etc/make.conf у меня есть запись WITH_MYSQL_VER=55m наличине которой достадочно, чтобы любое устанавливаемое ПО смотрело на mariadb-client в качестве клиентской библиотеки. Однако нет, в процессе инсталяции maiad вывалилась ошибка

===> Found saved configuration for maia-1.0.3.r1575_3
===> Fetching all distfiles required by maia-1.0.3.r1575_3 for building
===> Extracting for maia-1.0.3.r1575_3
=> SHA256 Checksum OK for maia-1.0.3-r1575.tar.gz.
===> Patching for maia-1.0.3.r1575_3
===> maia-1.0.3.r1575_3 depends on shared library: mysqlclient.18 — not found
===> Verifying install for mysqlclient.18 in /usr/ports/databases/mariadb55-client
===> Found saved configuration for mariadb55-client-5.5.33a_1
===> Fetching all distfiles required by mariadb55-client-5.5.33a_1 for building
===> Extracting for mariadb55-client-5.5.33a_1
=> SHA256 Checksum OK for mariadb-5.5.33a.tar.gz.

при всем том, что libmysqlclient.so.18 лежала в своей папке  /usr/local/lib/mysql, maia упорно отказывалась её видеть. Снос MariaDB и установка MySQL также не помогла. Решение нашлось простое и против всякой логики. При выборе опций инсталяции, опцию RAR выбирать не нужно. Позитивный результат на консоли

===> maia-1.0.3.r1575_3 depends on shared library: mysqlclient.18 — found
===> Configuring for maia-1.0.3.r1575_3

Непонятно только, какая связь между RAR’ом и клиентом БД

Ошибка №2 (maia-1.0.3.r1575_3)

Почему-то при enable_db = 1 из maiad.conf в maillog полетели ошибки, хотя на аналогичном серваке с FreeBSD x32 таких проблем не было

Oct 20 13:06:51 mx maiad[56633]: TROUBLE in child_init_hook: BDB bad db env. at /var/maiad/db: No such file or directory, No such file or directory. at (eval 80) line 260.

Решилось отключением данного параметра, он не сильно-то и нужен

enable_db = 0

Ошибка №3 (maia-1.0.3.r1575_3)

Чтобы запуск задач по cron’у не приводил к ошибкам

config: cannot create user preferences file /nonexistent/.spamassassin/user_prefs: No such file or directory config: failed to create default user preference file /nonexistent/.spamassassin/user_prefs

нужно дописать в начало пользовательского crontab’а от имени которого работает maia (у меня vscan) переменную HOME с указанием на «домашнюю папку» maiad

HOME=/var/maiad

Ошибка №4 (maia-1.0.3.r1575)

Периодически нужно править Makefile. Ищем строку

RUN_DEPENDS+=   p5-DBD-mysql>=0:${PORTSDIR}/databases/p5-DBD-mysql

мегяем на

RUN_DEPENDS+=   p5-DBD-mysql55>=0:${PORTSDIR}/databases/p5-DBD-mysql55

Ошибка №5 (maia-1.0.3.r1575_4)

После инсталяции, при попытке запуска получаем

ERROR: MISSING REQUIRED ADDITIONAL MODULES:
DBD::mysql

Решается добавлением в Makefile строки

WANT_MYSQL_VER=55m

Ошибка №6 (maia-1.0.3.r1575_4)

После запуска maiad через короткое время отваливается. В логах появляется запись

maiad[2028]: TROUBLE in pre_loop_hook: BDB no dbN: __fop_file_setup:  Retry limit (100) exceeded, File exists. at (eval 80) line 247

и всё это сопровождается невозможностью сервера принимать и отсылать почту

postfix/smtp[2159]: 0DCF417142: to=<user@domain.tld>, relay=none, delay=0.23, delays=0.2/0.02/0/0, dsn=4.4.1, status=deferred (connect to 127.0.0.1[127.0.0.1]:10024: Connection refused)

решение вопроса

rm /var/maiad/db/*
service maiad restart
postsuper -r ALL

Ошибка №7 (maia-1.0.3.r1575_4)

В логах появилась ругань при попытке пользователя выслать два rtf-файла в аттаче

Sep 5 15:44:44 mx postfix/smtp[18829]: 5865118CC3A: to=<******@i.ua>, relay=127.0.0.1[127.0.0.1]:10024, delay=530, delays=529/0/0/0.51, dsn=4.5.0, status=deferred (host 127.0.0.1[127.0.0.1] said: 451 4.5.0 Error in processing, id=18935-03, spam_scan FAILED: DBD::mysql::st execute failed: MySQL server has gone away at /usr/local/sbin/maiad line 3827, <GEN13> line 31442. (in reply to end of DATA command))

Проблема решилась добавлением в my.cnf параметра max_allowed_packet

[mysqld] 
max_allowed_packet=8M

перегружаем mysql и проталкиваем застрявшие сообщения командой

postsuper -r ALL

Ошибка №8 (maia-1.0.4_3)

После перехода с mariadb101 на mariadb102 и обновления схемы в почтовых логах появилась ошибка

TROUBLE in check_mail: Take Action! FAILED: DBD::mysql::st execute failed: Column ‘autolearn_status’ cannot be null at /usr/local/sbin/maiad line 4408

В результате вся почта застряла в очереди

Для решения необходимо разрешить NULL поля maia_mail.autolearn_status

alter table maia_mail modify autolearn_status varchar(15);

FAILED: DBD::mysql::st execute failed: Column 'autolearn_status' cannot be null

service maiad restart 
postsuper -r ALL

Александр Черных
системный администратор

Статьи по теме