Traduções: English - Italiano - Português (Brasil)


O Postfix é um agente de transferência de e-mails seguro.

Postfix

Instalação e Configuração do Postfix no Debian

apt-get install postfix

cat /var/log/mail.log

postconf -e "myorigin = example.com"

postconf -e "myhostname=server1.example.com"

postconf -e "relay_domains = example.com, example2.com, example3.com"

postfix reload

telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)

mail from:<you@youremail.com>
rcpt to:<user@example.com>
data
To: user@example.com
From: you@youremail.com
Subject: Hey my first email
This is my first email on debian postfix after installing configuring it.
It was easy.

.

quit

qshape
mailq
qshape deferred
postsuper
postsuper -r ALL   (requeue all emails)

anti-spam: restriçoes do Protocolo Simples de Envio de E-mail (Simple Mail Transfer Protocol - SMTP)

smtpd_recipient_restrictions = reject_invalid_hostname,
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

anti-spam: Uso da Lista RBL

Inclua insto no seu /etc/postfix/main.cf:

smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net

Veja sobre o rbl: http://www.us.sorbs.net/mailsystems/postfix.shtml

e evitando tais listas negras

Gateway Anti-Spam e Anti-Virus do Servidor de E-mails Debian

Encaminhamento de Emails

postconf -e "alias_maps = hash:/etc/aliases"

root: lucas

lucas: myemail@example.com

lucas: lucas myemail@example.com

newaliases

/etc/init.d/postfix reload

Emails Virtuais

postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"

vi /etc/postfix/virtual

postmaster info@example.com
abuse info@example.com
someemail lucas

postmap /etc/postfix/virtual

/etc/init.d/postfix reload

Maildir

postconf -e "home_mailbox = Maildir/"
postconf -e "mailbox_command ="

Mutt

* Se você quiser ler o seu novo formato maildir, você deve dizer ao mutt para usá-lo também. Edite este arquivo:

vi /etc/Muttrc

set folder="~/Maildir"
set mask="!^\\.[^.]"
set mbox="~/Maildir"
set record="+.Sent"
set postponed="+.Drafts"
set spoolfile="~/Maildir"

Postfix e listas de e-mails

Mailman with Postfix

(!) As instruções abaixo estão ERRADAS! Você não pode usar postfix-to-mailman.py e usar apelidos ao mesmo tempo. Por gentileza, leia /etc/mailman/postfix-to-mailman.py instead.

apt-get install mailman

newlist mailman

/etc/init.d/mailman start

relay_domains = example.com, lists.example.com

alias_maps = hash:/etc/aliases,hash:/var/lib/mailman/data/aliases

postconf -e "transport_maps = hash:/etc/postfix/transport"
postconf -e "mailman_destination_recipient_limit = 1"

mailman unix  -       n       n       -       -       pipe
   flags=FR user=list
   argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}

lists.example.com    mailman:

postmap /etc/postfix/transport

MTA = 'Postfix'
DEB_LISTMASTER = 'postmaster@example.com'
POSTFIX_STYLE_VIRTUAL_DOMAIN = ['lists.example.com']

/etc/init.d/postfix reload
/etc/init.d/mailman restart

newlist list_name

Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

Then you need to reload apache:

/etc/init.d/apache2 reload

http://lists.yourwebsite.com/cgi-bin/mailman/listinfo/list_name/

Mailman Troubleshooting

Connection refused

Assuming your postfix is running and listening on localhost, another possible problem is that postfix is not configured to run in IPv6 mode, but your /etc/hosts file specifies ::1 as localhost. In that case mailman tries to send mails to ::1 which has no postfix listening, thus resulting in a (111, 'connection refused') error.

Postfix e TLS/SSL

Adicionar TLS/SSL

Existem três opções para transferir dados para o Postfix (smtpd):

  1. Não use o TLS/SSL de maneira nenhuma (somente conexões não seguras (descriptografadas)).
  2. Use TLS/SSL, se possível. Volte para conexões não seguras se não for possível.
  3. Usar somente TLS/SSL (conexões não seguras (descriptografadas) não estão disponíveis).

A segunda opção (chamada STARTTLS) é recomendada para servidores de e-mail de propósito geral. Ele fornece algum tipo de "modo de compatibilidade". A transferência segura de dados está ativada, mas não é forçada.

As conexões STARTTLS começam descriptografadas pela porta 25 smtp regular. Se ambos os lados concordarem que o restante da transferência de dados será criptografada, continuarão usando a porta 25.

O TLS/SSL puro usa sua própria porta, geralmente smtps (465). Ver abaixo.

Versões recentes do Postfix empregam o parâmetro smtpd_tls_security_level para controlar a criptografia TLS (os valores válidos são none, may ou encrypt).

Anteriormente, dois parâmetros (smtpd_use_tls e [[http://www.postfix.org/postconf.5.html#smtpd_enforce_tls|smtpd_enforce_tls] ]) foram usados. Eles podem ser desabilitados. Veja também o relatório de bug Debian 520936.

Com os seguintes comandos, o TLS é aplicado (sem STARTTLS) e os parâmetros de configuração antigos são redefinidos para os valores padrão:

~# postconf -e smtpd_tls_security_level=encrypt
~# postconf -# smtpd_use_tls
~# postconf -# smtpd_enforce_tls

Portas TLS/SSL Alternativas

Você pode estar interessado em dar suporte às portas smtps (Protocolo Seguro de Transporte de E-mails - Simple Mail Transfer Protocol Secure SMTPS) e/ou submission (envio) (ver /etc/services) para seus usuários remotos/móveis que possam estar em um sistema que bloqueia, filtra ou proxies ruins o tráfego SMTP (porta 25) ainda pode enviar e-mails através de seu servidor. Como essas portas também não são usadas para tráfego de MTA para MTA, você pode impor restrições extras, como exigir SSL / TLS.

Fazemos isso modificando o arquivo /etc/postfix/master.cf para executar serviços adicionais smtpd com parâmetros especiais em portas dedicadas.

Submission (Envio)

A porta submission (587), coberta na RFC 2476, é reservada para agentes de usuário de email (Mail User Agent - MUA)/agentes de envio de email (Mail Submission Agent - MSA) para enviar email para um agente de transferência de email (Mail Transfer Agent - MTA).

Para habilitar um serviço adicional, edite o arquivo /etc/postfix/master.cf.

Neste exemplo, não permitimos o ETRN, exigimos TLS e habilitamos o SASL Auth na porta de envio.

submission inet n      -       -       -       -       smtpd
        -o smtpd_etrn_restrictions=reject
        -o smtpd_enforce_tls=yes 
        -o smtpd_sasl_auth_enable=yes

Protocolo de Transferência de Mensagens Simples e Seguro (Simple Mail Transfer Protocol Secure - SMTPS)

A porta smtps (ou ssmtp) (465) é o equivalente ao https. A camada segura é esperada desde o início e não um parâmetro opcional negociado após a conexão.

Se a porta é chamada de smtps ou ssmtp depende do conteúdo do seu arquivo /etc/services. No Debian, ambos os nomes parecem estar definidos. A saída de netstat -tl mostra ssmtp.

Para habilitar um serviço adicional, edite o arquivo /etc/postfix/master.cf.

No Debian já existe uma entrada preparada para smtps, mas comentada. Remova os caracteres "#" para ativá-la.

smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Conexões do Fetchmail para o Postfix

Parece que o fetchmail não é capaz de configurar uma conexão TLS com o Postfix. (Não confundir com os recursos do fetchmail para receber e-mails através de conexões TLS.)

Se o Postfix estiver configurado para aceitar somente conexões TLS (smtpd_tls_security_level = encrypt), o fetchmail falhará com um erro como "Deve emitir primeiro um comando STARTTLS" ("Must issue a STARTTLS command first").

Uma maneira de escapar disso é fornecer um serviço smtp não criptografado. Naturalmente, esse serviço deve estar disponível apenas para um processo local de fetchmail.

Edite /etc/postfix/master.cf e adicione

127.0.0.1:40025      inet  n       -       -       -       -       smtpd
    -o smtpd_tls_security_level=none

Isso adicionará um serviço adicional smtp escutando na porta 40025 com o TLS desabilitado, mas aceitando apenas conexões locais.

O Fetchmail tem que ser configurado com a opção smtphost.

Edite /etc/fetchmailrc

# Server options
poll ...

# User options
user a ...
        smtphost 127.0.0.1/40025
user b ...
        smtphost 127.0.0.1/40025

A opção smtphost é a chamada "opção de usuário". Deve ser adicionado a cada seção do usuário.

Alternativamente, fetchmail pode ser instruído a usar um programa externo compatível com TLS 1 para encaminhar emails. Isso não é tratado aqui. E se o fetchmail e o Postfix rodarem na mesma máquina, não faz muito sentido.

Opções avançadas

SPF e vários endereços IP externos

Explicação

Eu tenho alguns sistemas interligados numa sub-rede com endereço IP privado interno (192.168.0.0/16). Por alguns motivos, eu envio relatórios por e-mail para <usuário>@mail.internal, onde usuário é um endereço que não é válido para receber e-mails por meio de interfaces externas. Esses sistemas também compartilham uma sub-rede de endereço IP público para que eles possam enviar um para o outro dessa maneira, mas eu prefiro que eles não façam isso para endereços locais. Eu publiquei registros SPF para os servidores de e-mail públicos porque todos os nossos e-mails trafegam por esses servidores, portanto, se outros quiserem checar, eles podem ignorar o e-mail alegando ser de nós, mas sendo entregues de outros servidores conforme nosso registro SPF.

Recentemente eu tenho expandido os endereços IP que esses sistemas estão usando externamente para suportar múltiplas instâncias de serviços baseados em porta como https (adicionando :ponta_estranha não impressiona os clientes). Eu poderia ter expandido ou adicionado valores de registro SPF mais liberais, ou adicionado mais registros DNS de frente e verso, mas eu queria ficar com menos endereços IP.

Então, para recapitular meu sistema tem:

Usando as configurações em /etc/postfix/master.cf, /etc/postfix/main.cf e /etc/postfix/transport como descrito acima consegui que o meu tráfego smtp de saída usasse novamente o endereço IP publicado no SPF.

Faça o SPF e vários endereços IP externos

Se você estiver tentando implementar registros SPF enquanto vincula a somente um endereço IP externo e ainda estiver trabalhando com sistemas de vários endereços por interface (double-homed), ou tiver qualquer outro motivo para suportar sistemas multi-homed com múltiplos endereços IP mas quiser limitar o postfix a usar somente dois deles tentem isso.

 smtp      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=<spf published ip address>
 smtpinternal      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=<internal ip address>

 transport_maps = hash:/etc/postfix/transport

 .internal smtpinternal:

Com apenas postmap /etc/postfix/transport, invoke-rc.d postfix stop e invoke-rc.d postfix start você deve estar pronto. E-mail para <usuário>@<sistema>.internal será entregue através da interface interna/endereço ip todos os outros e-mails serão entregues via métodos padrão, o que significa que o correio da internet sairá do endereço IP publicado pela spf.

Opcional:

Postfix e Sasl

Backport não Oficial

Para usar o backport Postfix 3.3.0-1 não oficial para o Debian 9 Stretch (pego do Buster (testing)) veja https://www.heutger.net/backports/

Links Externos

Veja ?pt_BR/Postfix/Tutorials


FixMe: página desatualizada.


  1. Os chamados MTAs "leves" como msmtp ou sSMTP . (1)