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

При обновлении с Fedora Core 16 до Fedora Core 21 одной из трудностей стало получение постфикса, работающего с 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,

Но когда я пытаюсь использовать это, сервер postfix жалуется, и он не получает электронную почту. В нем прямо говорится, что он не может подключиться к 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 набор инструментов работает, хотя я не хочу тратить время сейчас - это воскресенье!

1 ответ

Решение

Fedora 21 и RHEL/CentOS 7 используют новую основанную на 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,:)

Другие вопросы по тегам