Servidor de Email
Índice
Postfix
Neste tutorial será mostrado como montar um servidor de e-mails para envio de e-mails usando Postfix, este servidor será usado apenas para envio de notificações de sistemas internos para funcionários e alunos, então não será necessário a criação de domínios virtuais, autenticação em bancos de dados externos nem a instalação de serviços de recebimento de e-mail como POP e IMAP.
Informações iniciais
Domínio: exemplo.com.br
IPv4: 192.0.2.4
IPv6: 2001:0DB8::4
Hostname: email.exemplo.com.br
S.O.: Debian 8 (Jessie)
Versão do Postfix: 2.11.3
Instalação do Postfix
# apt-get install postfix
Ao apresentar a janela solicitando o tipo de configuração do servidor de e-mail, selecione:
Site da Internet
Na próxima janela "nome de email" digite:
exemplo.com.br
Configuração
Edite o arquivo de configuração /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name biff = no append_dot_mydomain = no readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_tls_CApath = /etc/ssl/certs myhostname = email.exemplo.com.br alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = email.exemplo.com.br, localhost.exemplo.com.br, localhost # clientes cadastrados em mynetworks podem enviar emails sem autenticacao: mynetworks = 192.0.2.0/24, localhost relayhost = mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all # Politicas de segunranca. smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination # Rejeitar e-mails de dominios que nao existem smtp_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender ## Utilizadores locais podem enviar emails para qualquer endereco smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination # Delay para emails com o mesmo dominio de destino, para evitar congestionamento, valor em segundos. default_destination_rate_delay = 1
Com esta configuração básica, já é possível realizar o primeiro teste de envio com o comando:
# echo "body of your email" | mail -s "This is a Subject" -a "From: envio@email.exemplo.com.br" destino@destino.com
e observe o arquivo de log para monitorar o envio:
# tail -f /var/log/mail.log
Evitar que seu e-mail caia no SPAM
Certamente ao enviar um e-mail a partir deste servidor para um destinatário válido, este e-mail irá cair na caixa de SPAM, isto porque o servidor recém criado não possui nenhum dos métodos de para melhorar a reputação na internet e ficar longe de blacklists de servidores spammers.
Para tornar o servidor confiável aos olhos do destinatário é preciso de 4 componentes:
- rDNS (DNS Reverso)
- SPF
- DKIM
- DMARC
rDNS [1]
Configure o servidor de DNS responsável pela autoridade da zona exemplo.com.br inserindo o seguinte registro:
email IN MX 1 exemplo.com.br.
na zona reversa IPv4 2.0.192.in-addr.arpa insira:
4 IN PTR exemplo.com.br.
e zona reversa IPv6 0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa insira:
4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR exemplo.com.br.
SPF[2]
Instale o pacote com o comando:
# apt-get install postfix-policyd-spf-perl
Adicione o parâmetro abaixo no arquivo /etc/postfix/main.cf
policy-spf_time_limit = 3600s
e adicione o valor
check_policy_service unix:private/policy-spf
no final do parâmetro smtpd_recipient_restrictions, exemplo abaixo:
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service unix:private/policy-spf
Adicione as seguintes linhas no arquivo /etc/postfix/master.cf
policy-spf unix - n n - - spawn user=nobody argv=/usr/sbin/postfix-policyd-spf-perl
Pra finalizar, no servidor de DNS o seguinte registro do tipo TXT na zona exemplo.com.br, informando o IP do servidor de e-mail autorizado a usar o domínio exemplo.com.br como remetente:
email IN TXT "v=spf1 ip6:2001:0DB8::4 ip4:192.0.2.4 -all"
DKIM [3]
# apt-get install opendkim opendkim-tools
Edite o arquivo /etc/opendkim.conf
AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid Socket inet:12345@localhost SignatureAlgorithm rsa-sha256 OversignHeaders From
Edite o arquivo /etc/default/opendkim e altere para:
SOCKET="inet:12345@localhost"
No arquivo de configuração /etc/postfix/main.cf acrescente os parâmetros abaixo:
milter_protocol = 2 milter_default_action = accept
Para melhor organização crie um diretório opendkim e criar os arquivos abaixo:
# mkdir /etc/opendkim # touch /etc/opendkim/TrustedHosts # touch /etc/opendkim/KeyTable # touch /etc/opendkim/SigningTable # touch /etc/opendkim/keys
No arquivo /etc/opendkim/TrustedHosts adicione os hosts que podem enviar e-mails assinados:
localhost email.exemplo.com.br
Gerar chave privada e pública com o comando:
opendkim-genkey -s seletor -d exemplo.com.br
Salve a chave privata seletor.private na pasta /etc/opendkim/keys e proteja o acesso:
chown opendkim:opendkim seletor.private
Edite o arquivo de tabela de chaves /etc/opendkim/KeyTable
seletor._domainkey.exemplo.com.br exemplo.com.br:seletor:/etc/opendkim/keys/exemplo.com.br/seletor.private
Edite a tabela de assinaturas /etc/opendkim/SigningTable
*@exemplo.com.br seletor._domainkey.exemplo.com.br
Pra finalizar adicione no servidor de DNS um registro do tipo TXT constando a chave pública gerada pelo comando opendkim-genkey, arquivo seletor.txt:
seletor._domainkey IN TXT "v=DKIM1\; k=rsa\; p=ADDLLSKKCKAKSSSKALS..."
Reinicie os serviços:
# systemctl restart postfix # systemctl restart opendkim
Realize um teste de envio de e-mail, para confirmar visualize o arquivo de log mail.log e verifique se a seguinte informação consta no log "DKIM-Signature field added"