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
- Instale o postfix (isto removerá o exim pois não podem existir dois sistemas de e-mail). (Se você tiver um site, escolha "Internet Site" se a configuração perguntar isso.):
apt-get install postfix
- Verifique o log mail.log, mail.err, mail.info, mail.warn para ver se o postfix está rodando.
cat /var/log/mail.log
- Adicione seu domínio para o arquivo de configurações, então outros não poderão abusar do seu sistema de e-mails:
postconf -e "myorigin = example.com"
- Adicione seu hostname (nome do computador). (Use o comando "hostname" na linha de comando para exibir o nome do computador se não tiver certeza.)
postconf -e "myhostname=server1.example.com"
- Agora adicione os nomes de domínio que seu sistema gerenciará.
postconf -e "relay_domains = example.com, example2.com, example3.com"
- Reinicie o Servidor Postfix:
postfix reload
- Teste o servidor de e-mail. Digite
telnet localhost 25
- Você deve ver:
Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 server1.example.com ESMTP Postfix (Debian/GNU)
- Envie um e-mail para você mesmo:
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.
- Para terminar os dados tecle enter, digite um ponto e aperte enter denovo.
.
- Então
quit
- Você terminou. Digite "mail" na linha de comando do terminal e veja se tem alguma mensagem de e-mail.
- Agora vamos ao próximo passo:
- Se você tiver um roteador com firewall, habilite a porta 25 e direcione tal porta para seu computador.
- Entre seu certificado (mail exchanger record -- MX record) no seu provedor de domínio. (e.g. godaddy.com or dnspark.com)
Cheque seu certificado: vá para http://www.iptools.biz/ localize o "DNS lookup". Do menu que abre para baixo selecione "MX". Digite seu nome de domínio (ex. exemplo.com). Você verá alguns certificados lá. Se você não ver certificados MX volte para o passo anterior. Você deve ter o certificado MX doutraforma outros computadores não poderão encontra-lo para enviar e-mails.
- Comandos úteis:
qshape mailq qshape deferred postsuper postsuper -r ALL (requeue all emails)
Você deve estar pronto. Se seu provedor de internet (ISP) estiver bloqueando o tráfego, então você talvez precise logar em seu serviço smtp. Veja Postfix e sbcglobal/yahoo/att abaixo.
anti-spam: restriçoes do Protocolo Simples de Envio de E-mail (Simple Mail Transfer Protocol - SMTP)
- A primeira luta começa no seu servidor então isto deve ser adicionado a qualquer servidor de e-mails que você configurar. Isto fará que qualquer computador que tentar enviar um e-mail para você tenha um nome de domínio válido. (enviadores de spam usam, por exemplo, myhomepc como um nome de domínio. Isto previnirá que eles enviem spam para você.)
Adicione isto ao seu /etc/postfix/main.cf:
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
- A lista RBL é uma lista de domínios que classificam em enviadores de spam ou não.
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
Gateway Anti-Spam e Anti-Virus do Servidor de E-mails Debian
Se você está construindo um sistema anti-spam que funcionará como um gateway. Leia abaixo. Se você quiser adicionar mais restrições anti-spam, vale a pena ler.?Gateway Anti-Spam e Anti-Virus do Servidor de E-mails Debian
Encaminhamento de Emails
Encaminhamento de emails pode ser feito pelo arquivo de apelidos localizado em /etc/aliases
- Rode este comando para adicionar um mapa de apelidos:
postconf -e "alias_maps = hash:/etc/aliases"
Você pode adicionar seu usuários no /etc/aliases desta forma:
root: lucas
- Você pode encaminhar seus e-mails para um endereço de e-mails diferente
lucas: myemail@example.com
- Ou você pode encaminhar seu e-mail enquanto ainda recebe uma cópia em sua caixa de correio local
lucas: lucas myemail@example.com
- Quando terminar de adicionar os apelidos, execute este comando, que criará um banco de dados em forma de arquivo.
newaliases
- Reinicie o postfix
/etc/init.d/postfix reload
Emails Virtuais
Se você quiser e-mails virtuais como abuse ou postmaster, faça o seguinte.
- Execute este comando para adicionar mapas de apelidos virtuais:
postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
Crie um arquivo /etc/postfix/virtual
vi /etc/postfix/virtual
- E adicione seus e-mails virtuais
postmaster info@example.com abuse info@example.com someemail lucas
- Crie um banco de dados como arquivo fora dele
postmap /etc/postfix/virtual
- Reinicie o postfix
/etc/init.d/postfix reload
Maildir
- Para usar o formato maildir em sua caixa de correio, que cria arquivos separados para cada email, você pode usar os seguintes comandos:
- Maildir tem algumas vantagens sobre o formato mbox. (Ele mantém e-mails em arquivos separados, permite que vários aplicativos leiam e-mails, etc.)
- Execute estes comandos:
postconf -e "home_mailbox = Maildir/" postconf -e "mailbox_command ="
- Você terminou. Agora seu email vai para o formato Maildir.
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
- Adicione estas linhas ao final do arquivo:
set folder="~/Maildir" set mask="!^\\.[^.]" set mbox="~/Maildir" set record="+.Sent" set postponed="+.Drafts" set spoolfile="~/Maildir"
Agora inicie o mutt e envie um email para si mesmo para ver se tudo funciona.
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.
- Install mailman:
apt-get install mailman
- When done type:
newlist mailman
- Start mailman
/etc/init.d/mailman start
- You should be able to see mailman running now. Visit:
- Because postfix is a secondary choice for Debian we need to add:
Edit /etc/postfix/main.cf; where you see "relay_domains" add lists.yourdomain.com. You would get something like this:
relay_domains = example.com, lists.example.com
- In same file add ,hash:/var/lib/mailman/data/aliases after alias_maps
alias_maps = hash:/etc/aliases,hash:/var/lib/mailman/data/aliases
- Now type:
postconf -e "transport_maps = hash:/etc/postfix/transport" postconf -e "mailman_destination_recipient_limit = 1"
In /etc/postfix/master.cf add:
mailman unix - n n - - pipe flags=FR user=list argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
Edit or create /etc/postfix/transport. Add this line:
lists.example.com mailman:
- Then postmap it:
postmap /etc/postfix/transport
Now edit /etc/mailman/mm_cfg.py and add:
MTA = 'Postfix' DEB_LISTMASTER = 'postmaster@example.com' POSTFIX_STYLE_VIRTUAL_DOMAIN = ['lists.example.com']
- Done. Now restart postfix, mailman
/etc/init.d/postfix reload /etc/init.d/mailman restart
- Create a mailing list:
newlist list_name
If you want archives add this to /etc/apache2/apache2.conf
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
- Done. Go to
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):
- Não use o TLS/SSL de maneira nenhuma (somente conexões não seguras (descriptografadas)).
- Use TLS/SSL, se possível. Volte para conexões não seguras se não for possível.
- 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:
eth1 <ip public com spf publicado>
eth1:1 <ip público para serviços baseados em porta extra>
eth0 <ip interno>
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.
/etc/postfix/master.cf
clone o smtp (não o serviço smtpd). Defina o primeiro a usar <spf published ip address> e renomeie o segundo para smtpinternal e use <internal ip address>
smtp unix - - - - - smtp -o smtp_bind_address=<spf published ip address> smtpinternal unix - - - - - smtp -o smtp_bind_address=<internal ip address>
/etc/postfix/main.cf
Use transport_maps para roteamento
transport_maps = hash:/etc/postfix/transport
/etc/postfix/transport
- Mapeie um transporte para o seu domínio interno.
.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:
/etc/postfix/main.cf
Use a configuração inet_interfaces para ouvir apenas os endereços IP desejados.
inet_interfaces = 127.0.0.1, <internal ip>, <spf published external ip>
Postfix e Sasl
Servidor SMTP: Autenticação SASL no servidor Postfix SMTP
Cliente SMTP: Autenticação SASL no cliente Postfix SMTP
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.
Os chamados MTAs "leves" como msmtp ou sSMTP . (1)