Estou executando uma caixa Debian GNU / Linux 8.7 com o Postfix 2.11.3-1 como MTA. De repente, isto é, sem alteração na configuração do MTA, os e-mails pararam de ser entregues e o erro a seguir foi exibido em /var/log/mail.err
:
root@schroeder:~# tail /var/log/mail.err
Mar 21 12:51:01 schroeder postfix/smtp[25421]: fatal: unknown service: smtp/tcp
Mar 21 12:54:11 schroeder postfix/smtp[26397]: fatal: unknown service: smtp/tcp
Mar 21 12:54:12 schroeder postfix/smtp[26398]: fatal: unknown service: smtp/tcp
Mar 21 12:59:26 schroeder postfix/smtp[26553]: fatal: unknown service: smtp/tcp
Mar 21 12:59:26 schroeder postfix/smtp[26554]: fatal: unknown service: smtp/tcp
Mar 21 12:59:26 schroeder postfix/smtp[26555]: fatal: unknown service: smtp/tcp
Mar 21 12:59:26 schroeder postfix/smtp[26556]: fatal: unknown service: smtp/tcp
Mar 21 13:04:30 schroeder postfix/smtp[27797]: fatal: unknown service: smtp/tcp
De acordo com a documentação do Postfix e duas outras perguntas similares no ServerFault, isso ocorre porque o postfix executa chrooted, mas não possui arquivos necessários, presumivelmente, /etc/services
, em seu diretório de spool, ou seja, /var/spool/postfix
.
Eu verifiquei e, de fato, /etc/services
estava faltando em /var/spool/postfix
. Então eu copiei ( não symlinked) /etc/services
para /var/spool/postfix/etc
. Infelizmente, sem sucesso.
Eu então brinquei com a desativação do chroot jail para o postfix 'smtp binary em /etc/postfix/master.cf
e descobri que, quando desativo o chrooting para o tipo de serviço unix, o email é entregue normalmente. Ou seja, o seguinte /etc/postfix/master.cf
funciona bem:
root@schroeder:~# grep -v ^# /etc/postfix/master.cf
smtp inet n - - - - smtpd
pickup unix n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
# The setting below is the one that I've changed.
# The vendor default is a dash in the fifth column.
smtp unix - - n - - smtp
relay unix - - - - - smtp
showq unix n - - - - showq
error unix - - - - - error
retry unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
Eu percebi que outra coisa, isto é, diferente de /etc/services
não estar presente na jaula chroot em /var/spool/services
, deve estar errada com minha configuração chroot.
Então, eu reativei o chrooting, baixei a fonte do Postfix, verifiquei o script de configuração do chroot para Linux que vem com a distribuição da fonte do Postfix e o executei:
root@schroeder:~# cd /usr/local/src/
root@schroeder:/usr/local/src# curl https://fourdots.com/mirror/postfix/postfix-release/official/postfix-3.2.0.tar.gz | tar -xz
root@schroeder:/usr/local/src# sh postfix-3.2.0/examples/chroot-setup/LINUX2
postfix/postfix-script: refreshing the Postfix mail system
Mais uma vez, no entanto, isso não corrigiu minha configuração.
Eu também tentei adicionar "-v" à configuração do smtp em /etc/postfix/master.cf
, mas os relatórios de erros não foram mais detalhados.
Neste momento, estou no meu juízo final. O que mais posso verificar? Como posso consertar minha configuração para que eu possa reabilitar o chrooting para o postfix 'smtp binary?
Para referência, minha configuração:
root@schroeder:~# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = 127.0.0.1 ::1
mailbox_size_limit = 0
mydestination = schroeder.phl.univie.ac.at, localhost.phl.univie.ac.at, localhost
myhostname = schroeder.phl.univie.ac.at
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/phl.univie.ac.at.pem
smtpd_tls_key_file = /etc/ssl/private/phl.univie.ac.at.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
O postfix não é (ainda) protegido pelo AppArmor:
root@schroeder:~# apparmor_status
apparmor module is loaded.
apparmor filesystem is not mounted.
Eu verifiquei se este é um bug conhecido na página inicial do Postfix e no rastreador de bugs do Debian para o pacote postfix.
Eu também pesquisei os recursos vinculados na página inicial do Postfix e nas listas de discussão, mas o único 'solução' que encontrei é construir o Postfix a partir da fonte. Eu tentei isso também, mas o erro persistiu.