Назад | Перейти на главную страницу

конфигурация postgrey в Fedora Core 21 сильно отличается и не задокументирована

При обновлении Fedora Core 16 до Fedora Core 21 одной из проблем было заставить postfix работать с postgrey. Я все еще не работаю после многих долгих часов, посвященных этому.

В старой стратегии официальные инструкции рекомендуют вам создать собственный сценарий, который будет /etc/init.d. И действительно, еще в FC16 я это сделал! Но сегодня у нас есть systemctl. Вы можете установить postgrey с yum репозитории знают об этом. Устанавливается нормально. Затем вы включаете с помощью systemctl enable postgrey.service, и это тоже хорошо.

Все идет нормально. Осталось сделать несколько вещей ...

Затем перейдите к файлам белого списка - похоже, они того же формата.

В старой схеме в файле postfix main.cf была бы такая строка:

...
smtpd_recipient_restrictions = permit_mynetworks,
                               permit_sasl_authenticated,
                               reject_unauth_pipelining,
                               reject_non_fqdn_recipient,
                               reject_unknown_recipient_domain,
                               reject_unauth_destination,
                               check_policy_service inet:127.0.0.1:10023,
                               permit_mynetworks
...

В моем /etc/init.d я написал сценарий, в следующем отрывке которого показаны интересные части, и он работал хорошо:

...
exec="/usr/sbin/postgrey"
prog="postgrey"
options="--unix=/var/spool/postfix/postgrey/socket --inet=10023"

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

start() {
    [ -x $exec ] || exit 5
    echo -n $"Starting $prog: "
    daemon $exec -d $options
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
...

Обратите внимание, как порт указан в --inet= и это соответствует тому, что в main.cf.

Но когда я пытаюсь использовать это, сервер постфиксов жалуется и не получает электронную почту. Он явно заявляет, что не может подключиться к postgrey:

...
Apr 12 13:27:50 ms1 postfix/smtpd[14273]: warning: connect to 127.0.0.1:10023: Connection refused
Apr 12 13:27:50 ms1 postfix/smtpd[14273]: warning: problem talking to server 127.0.0.1:10023: Connection refused
...

Я искал и искал и не нашел никакой информации о конфигурации для новой схемы. Если спросить, встал ли Postgrey и счастлив, он получит следующее:

# systemctl status postgrey.service -l
● postgrey.service - Postfix Greylisting Service
   Loaded: loaded (/usr/lib/systemd/system/postgrey.service; enabled)
   Active: active (running) since Sun 2015-04-12 12:13:19 PDT; 1h 19min ago
     Docs: man:postgrey(8)
  Process: 13280 ExecStart=/usr/sbin/postgrey --unix=/var/spool/postfix/postgrey/socket --pidfile=/var/run/postgrey.pid --group=postgrey --user=postgrey --greylist-text=Greylisted for %%s seconds --daemonize $POSTGREY_OPTS (code=exited, status=0/SUCCESS)
  Process: 13277 ExecStartPre=/bin/rm -f /var/run/postgrey.pid (code=exited, status=0/SUCCESS)
 Main PID: 13281 (/usr/sbin/postg)
   CGroup: /system.slice/postgrey.service
           └─13281 /usr/sbin/postgrey --unix=/var/spool/postfix/postgrey/socket --pidfile=/var/run/postgrey.pid --group=postgrey --user=postgrey --greylist-text=Greylisted for %s seconds --daemonize --delay=6

Apr 12 12:13:19 ms1 postgrey[13281]: Process Backgrounded
Apr 12 12:13:19 ms1 postgrey[13281]: 2015/04/12-12:13:19 postgrey (type Net::Server::Multiplex) starting! pid(13281)
Apr 12 12:13:19 ms1 postgrey[13281]: Binding to UNIX socket file "/var/spool/postfix/postgrey/socket"
Apr 12 12:13:19 ms1 postgrey[13281]: Setting gid to "479 479"
Apr 12 12:13:19 ms1 postgrey[13281]: Setting uid to "984"

Как ни странно, в нем нет четкого обозначения идентификатора сокета - может, это и не обязательно? Но я все равно проверил netstat:

# netstat -l | grep postgrey
unix  2      [ ACC ]     STREAM     LISTENING     126293   /var/spool/postfix/postgrey/socket

... Я не специалист netstat, но я думаю, это означает, что программа /postfix/postgrey/socket прослушивает порт 126293.

Итак, я должен изменить свою строку в main.cf, чтобы она соответствовала этому номеру порта? Если да, то это не работает - или пока не работает! И, похоже, я не могу найти место для размещения альтернативной конфигурации порта / сокета, поэтому похоже, что вы застряли с тем, что они нам дали.

Любая помощь / совет приветствуются. ... Я думал, что теперь единственный выход - выяснить, как systemctl набор инструментов работает, хотя я не хочу сейчас тратить время - сегодня воскресенье!

Fedora 21 и RHEL / CentOS 7 используют новую реализацию postgrey на основе Python.

В этой реализации только изменение, которое вам нужно в конфигурации Postfix, - это вызов службы из smtpd_recipient_restrictions. Например, взято с моего собственного почтового сервера:

smtpd_recipient_restrictions =
        #.....other stuff here
        # This should be next-to-last
        check_policy_service unix:postgrey/socket,
        permit

Ах да, это было задокументировано в /usr/share/doc/postgrey-*/README-rpm. :)