Случилось!
Нужно было настроить почтовый сервер на базе 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);
service maiad restart postsuper -r ALL
Александр Черных
системный администратор