LINUX.ORG.RU
решено ФорумAdmin

Sendmail и milter-limit на CentOS 6.

 , milter-limit,


0

1

Добрго предпятничного дня тебе, ЛОР. Я совсем сломал голову над проблемой и, видимо, нуждаюсь таки в помощи более опытных коллег.

На свежеустановленном сервере с CentOS 6 имеется только что поставленный sendmail, к которому я пытаюсь добавить milter-limit (необходим для лимита на отправку нужного количества писем в час). Милтер ставлю по инструкции с сайта, при установке ни ошибок, ни каких-то подозрительных проблем не замечено. При попытке запустить milter-limit, получаю FAILED, а в лог оседает вот такая ошибка:

Jan 30 03:29:42 localhost milter-limit[1565]: failed to open "/etc/mail/access.db"

Файл /etc/mail/access.db в действительности существует. Я уже по разному менял его права и владельца, но милтер всё равно не стартует с ошибкой о том, что открыть этот файл не может. Вопрос - в чём может быть проблема и куда копать что бы эту проблему исправить? Сталквиался ли кто-то ещё с аналогичной бедой?

Подозреваю что дело может быть в формате самого файла, а тот, в свою очередь как-то связан с версией Berkeley DB. Как проверить эту теорию, к сожалению пока не знаю. В системе стоит DB4.

Конфиг sendmail.mc со вставленным куском конфига milter-limit.mc и конфиг milter-limit.cf по ссылкам.

Для полноты картины:

[root@localhost ~]# db_dump -p /etc/mail/access.db 
VERSION=3
format=print
type=hash
h_nelem=4099
db_pagesize=4096
HEADER=END
 connect:localhost.localdomain
 RELAY
 connect:127.0.0.1
 RELAY
 connect:localhost
 RELAY
DATA=END

Даже не знаю какая ещё информация будет полезна.

Заранее благодарен за любые полезные подсказки.


К слову, если есть какое-то альтернативное решение для sendmail'а, позволяющее лимитировать количество отправленных писем за промежуток времени, то я с удовольствием с таким решением познакомлюсь. Только вот мне таких найти не удалось.

kp
() автор топика

access.db который хочет милтер, это его собственный файл (если я не ошибаюсь), а не sendmail'овский access.db

кроме того покажи ls -la /etc/mail и в каком режиме selinux (выключи его для проверки)

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от sdio

Других access.db в системе нет:

[root@localhost ~]# updatedb
[root@localhost ~]# locate access.db
/etc/mail/access.db
[root@localhost ~]# 

А милтер, если я правильно понял, должен свой отдельный milter-limit.db создавать в ходе работы.

kp
() автор топика
Ответ на: комментарий от sdio

Я тебя другое просил.

Я просто поздно увидел исправление.

кроме того покажи ls -la /etc/mail и в каком режиме selinux (выключи его для проверки)

[root@localhost ~]# ls -la /etc/mail
итого 272
drwxr-xr-x.  2 root smmsp  4096 Янв 30 04:17 .
drwxr-xr-x. 76 root root   4096 Янв 30 02:42 ..
-rw-r--r--.  1 root root    469 Май 20  2009 access
-rwxrwxrwx.  1 root smmsp 12288 Янв 30 03:01 access.db
-rw-r--r--.  1 root root      0 Дек 30 05:27 aliasesdb-stamp
-rw-r--r--.  1 root root    233 Апр 12  2007 domaintable
-rw-r-----.  1 root root  12288 Дек 30 05:27 domaintable.db
-rw-r--r--.  1 root root   5584 Ноя 11  2010 helpfile
-rw-r--r--.  1 root root     64 Апр 12  2007 local-host-names
-rw-r--r--.  1 root root    997 Апр 12  2007 mailertable
-rw-r-----.  1 root root  12288 Дек 30 05:27 mailertable.db
-rwxr-xr-x.  1 root root   2700 Май 20  2009 make
-rw-r--r--.  1 root root     92 Май 20  2009 Makefile
-r--r--r--   1 root root   4687 Янв 30 04:17 milter-limit.cf
-rw-r--r--   1 root root  59181 Дек 30 09:14 sendmail.cf
-rw-r--r--   1 root root  59177 Дек 30 09:06 sendmail.cf.bak
-rw-r--r--.  1 root root  10695 Дек 30 09:14 sendmail.mc
-rw-r--r--.  1 root root  41521 Ноя 11  2010 submit.cf
-rw-r--r--.  1 root root    941 Ноя 11  2010 submit.mc
-rw-r--r--.  1 root root    127 Апр 12  2007 trusted-users
-rw-r--r--.  1 root root   1847 Апр 12  2007 virtusertable
-rw-r-----.  1 root root  12288 Дек 30 05:27 virtusertable.db
[root@localhost ~]# sestatus 
SELinux status:                 disabled
[root@localhost ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

Селинукс уже отключал и уже даже машину перезагружал после этого для «чистоты эксперимента». Права 777 на access.db остались уже после экспериментов, с правами и владельцами.

kp
() автор топика
Последнее исправление: kp (всего исправлений: 1)
Ответ на: комментарий от kp

Вот из доки:

 Process user ``milter'' is primary member of group ``milter'' 
and secondary member of group ``smmsp''. Note that the milter 
should be started as root, so that it can create a .pid file and 
.socket file in /var/run; after which it will switch process 
ownership to milter:milter before starting the accept socket thread.

    /etc/mail/	                         root:smmsp	0750 drwxr-x---
    /etc/mail/access.db	                 root:smmsp	0640 -rw-r-----
    /etc/mail/sendmail.cf	         root:smmsp	0640 -rw-r-----
    /etc/mail/milter-limit.cf	         root:root	0644 -rw-r--r--
    /var/run/milter/milter-limit.pid	 milter:milter	0644 -rw-r--r--
    /var/run/milter/milter-limit.socket	 milter:milter	0644 srw-r--r--
    /var/db/milter-limit	         milter:milter	0644 -rw-r--r-- (*BSD)
    /var/cache/milter-limit	         milter:milter	0644 -rw-r--r-- (linux)
    /usr/local/libexec/milter-limit	 root:milter	0550 -r-xr-x---

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 2)
Ответ на: комментарий от sdio

Права поправил заново.

[root@localhost ~]# ls -la /etc/mail
итого 272
drwxr-x---.  2 root smmsp  4096 Янв 30 04:17 .
drwxr-xr-x. 76 root root   4096 Янв 30 02:42 ..
-rw-r--r--.  1 root root    469 Май 20  2009 access
-rw-r-----.  1 root smmsp 12288 Янв 30 03:01 access.db
-rw-r--r--.  1 root root      0 Дек 30 05:27 aliasesdb-stamp
-rw-r--r--.  1 root root    233 Апр 12  2007 domaintable
-rw-r-----.  1 root root  12288 Дек 30 05:27 domaintable.db
-rw-r--r--.  1 root root   5584 Ноя 11  2010 helpfile
-rw-r--r--.  1 root root     64 Апр 12  2007 local-host-names
-rw-r--r--.  1 root root    997 Апр 12  2007 mailertable
-rw-r-----.  1 root root  12288 Дек 30 05:27 mailertable.db
-rwxr-xr-x.  1 root root   2700 Май 20  2009 make
-rw-r--r--.  1 root root     92 Май 20  2009 Makefile
-rw-r--r--   1 root root   4687 Янв 30 04:17 milter-limit.cf
-rw-r-----   1 root smmsp 59181 Дек 30 09:14 sendmail.cf
-rw-r--r--   1 root root  59177 Дек 30 09:06 sendmail.cf.bak
-rw-r--r--.  1 root root  10695 Дек 30 09:14 sendmail.mc
-rw-r--r--.  1 root root  41521 Ноя 11  2010 submit.cf
-rw-r--r--.  1 root root    941 Ноя 11  2010 submit.mc
-rw-r--r--.  1 root root    127 Апр 12  2007 trusted-users
-rw-r--r--.  1 root root   1847 Апр 12  2007 virtusertable
-rw-r-----.  1 root root  12288 Дек 30 05:27 virtusertable.db
[root@localhost ~]# ls -la /var/run/ | grep milter
drwxr-xr-x.  2 milter  milter  4096 Дек 30 08:28 milter
[root@localhost ~]# ls -l /var/run/milter/
итого 0
[root@localhost ~]# 

Файлов /var/cache/milter-limit и /usr/local/libexec/milter-limit нет. Но я так понимаю, они должны создаваться при запуске и работе самого milter'а.

А ошибка в данный момент всё та же, к сожалению.

[root@localhost ~]# /etc/init.d/milter-limit restart
Stopping milter-limit                                                  [  OK  ]
Starting milter-limit                                                  [FAILED]
[root@localhost ~]# tail -n 5 /var/log/maillog 
Jan 30 05:14:01 localhost milter-limit[2252]: failed to open "/etc/mail/access.db"
Jan 30 05:15:43 localhost milter-limit[2268]: failed to open "/etc/mail/access.db"
Jan 30 05:15:46 localhost milter-limit[2281]: failed to open "/etc/mail/access.db"
Jan 30 05:15:54 localhost milter-limit[2291]: failed to open "/etc/mail/access.db"
Jan 30 05:15:57 localhost milter-limit[2304]: failed to open "/etc/mail/access.db"
[root@localhost ~]# 

kp
() автор топика
Ответ на: комментарий от sdio

Нашёл его, скорректировал права и там. Юзер - да, в нужной группе присутствует.

[root@localhost ~]# ls -la /usr/local/sbin/milter-limit
-r-xr-x--- 1 root milter 1011866 Янв 30 04:08 /usr/local/sbin/milter-limit
[root@localhost ~]# groups milter
milter : milter smmsp
[root@localhost ~]# 

Ситуация не изменилась. Ошибка в логе та же. Чертовщина какая-то.

kp
() автор топика
6 марта 2014 г.

И всё же запустился милтер, после того как был сконфигурирован вот так:

./configure --disable-FEATURE=db

Mar 6 05:37:47 localhost milter-limit[3924]: milter-limit/0.15.0 Copyright 2004, 2007 by Anthony Howe. All rights reserved.
Mar 6 05:37:47 localhost milter-limit[3924]: LibSnert/1.73.17 Copyright 1996, 2010 by Anthony Howe. All rights reserved.
Mar 6 05:37:47 localhost milter-limit[3924]: libmilter version 1.0.1
Mar 6 05:37:47 localhost milter-limit[3924]: Berkeley DB 4.7.25: (September 12, 2013)

Спасибо всем, кто принял участие в обсуждении.

kp
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.