Конфигурация 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
,:)