Na atualização do Fedora Core 16 para o Fedora Core 21, um dos desafios tem sido o trabalho do postfix com o postgrey. Eu ainda não tenho que trabalhar depois de muitas horas focadas nisso.
Na estratégia antiga, as instruções oficiais direcionam você a criar seu próprio script para colocar em /etc/init.d
. E, de fato, no FC16, eu fiz isso! Mas hoje temos systemctl
. Você pode instalar o postgrey
com o yum, os repositórios sabem disso. Ele instala bem. Você habilita com systemctl enable postgrey.service
e isso também funciona bem.
Até aí tudo bem. Apenas algumas coisas para fazer ...
Em seguida, mova seus arquivos da lista de permissões. Parece que eles têm o mesmo formato.
No esquema antigo, você teria uma linha como essa no arquivo post.cf principal:
...
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
...
Em meu /etc/init.d, escrevi um script cujo trecho a seguir mostra as partes interessantes e funcionou bem:
...
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
}
...
Observe como a porta é especificada em --inet=
e corresponde ao que está em main.cf
.
Mas, quando tento usar isso, o servidor postfix reclama e ele não recebe e-mails. Ele afirma explicitamente que não pode se conectar ao 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
...
Eu olhei e procurei e não encontrei nenhuma informação de configuração para o novo esquema. Perguntando se o postgrey está feliz e consegue isso:
# 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"
Estranhamente, isso não significa claramente o ID do soquete - talvez não seja necessário? Mas eu chequei com netstat de qualquer maneira:
# netstat -l | grep postgrey
unix 2 [ ACC ] STREAM LISTENING 126293 /var/spool/postfix/postgrey/socket
... Não sou especialista em netstat
, mas acho que isso significa que o programa /postfix/postgrey/socket
está escutando na porta 126293.
Então, devo alterar minha linha em main.cf para corresponder a esse número de porta? Se assim for, isso não funciona - ou, até agora, não! E eu não consigo encontrar o lugar para colocar uma configuração alternativa de porta / soquete, então parece que você está preso com o que eles nos deram.
Qualquer ajuda / conselhos apreciados. ... Eu estava pensando que o único curso de ação a seguir é descobrir como funciona o conjunto de ferramentas systemctl
, mesmo que eu não queira aproveitar o tempo agora - é um domingo!