configuração postgrey no Fedora Core 21 é muito diferente, e não documentada

1

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!

    
por Richard T 12.04.2015 / 22:39

1 resposta

5

O Fedora 21 e o RHEL / CentOS 7 usam a nova reimplementação de postgrey baseada em Python.

Nesta implementação, a única alteração que você precisa na sua configuração do Postfix é chamar o serviço de smtpd_recipient_restrictions . Por exemplo, tirado do meu próprio servidor de e-mail:

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

Ah, e sim, isso foi documentado em /usr/share/doc/postgrey-*/README-rpm . :)

    
por 12.04.2015 / 22:43