Como enviar email TLS seguro do servidor Ubuntu usando registros Postfix, SPF e DKIM.


Imagine que o Google teve que usar o Mailchimp para enviar e-mail a 2 bilhões de usuários do Android. Quanto a Mailchimp cobraria? Exatamente o mesmo valor que você pagará após configurar o email seguro em execução no seu próprio servidor web Linux. $ 0.

Toda vez que estou travado configurando as coisas pela primeira vez (certificados SSL, por exemplo), mais tarde percebo que é porque simplesmente não entendo como algo funciona.

Você pode Siga me no twitter para obter atualizações sobre meus tutoriais de codificação gratuitos ou confira esta página com meus livros de codificação em JavaScript e CSS, se você precisar de uma cópia.

XBOX em Oferta

Depois de instalar e configurar algo novo pela primeira vez, geralmente desenvolvo um padrão a seguir, para que da próxima vez seja mais fácil. Esses padrões se tornam assuntos para meus tutoriais. Neste tutorial, configuraremos um servidor de email.

Esta mensagem de criptografia padrão (TLS) tem um custo de entender como habilitar o TLS corretamente e configurar registros SPF nas configurações de DNS da empresa de hospedagem (e também localmente no servidor Linux).

Já passei pelo processo várias vezes e descobri quais são os principais problemas e as armadilhas comuns. Eu queria compartilhá-lo com todos, para que você pudesse economizar tempo configurando seu próprio servidor de correio. É muito mais simples se você souber as etapas exatas a seguir.

Nota: Configurar um servidor de correio não é simples. Mesmo se você seguir todas as etapas listadas neste tutorial, é provável que ainda precise ajustar uma ou duas configurações para trazer sua configuração para a linha de chegada. Todo esse processo pode levar de 2 a 3 dias se você estiver fazendo isso pela primeira vez. Mas espero que este artigo o ajude a chegar lá mais rapidamente.

Por que precisamos deste tutorial?

Para mim, foi porque pensei que serviços como o Mailchimp e o ConstantContact cobram demais demais para um punhado de assinantes. Muitas pessoas que estão apenas começando com uma lista de boletins não podem pagar até que seus negócios ganhem mais velocidade.

Quando se trata de email, você precisa aprender com vários tutoriais. eu aprendi TLS Postfix configuração separadamente SPF e DKIM. Ainda estou para ver um tutorial que explica tudo em um artigo. Decidi escrever um para futuros alunos.

O envio de email usando serviços pagos tem seus benefícios. Uma reivindicação comum que os provedores de boletins pagos fazem desde 1990 é que eles protegem você de ser listado na lista negra pelo ISP. Sempre existe essa preocupação, mesmo após a configuração adequada de um servidor de correio. O que por si só pode ser uma provação enorme. Mas como eles faça? Quase parece que eles fizeram algum tipo de pacto com outras empresas – um truque de mágica não disponível para nós, meros mortais que somente deseja enviar e-mail.

Como a Amazon faz isso? Nintendo? Acampamento de Código Livre? Como qualquer empresa envia email sem usar o MailChimp? Todo desenvolvedor deve saber como instalar, configurar e enviar email do servidor da web pelo qual já está pagando.

Certamente, é possível obter a funcionalidade de mala direta da AWS como um microsserviço. Mas se você descobrir como fazer isso sozinho, poderá enviar e-mail gratuitamente.

Existe uma maneira de enviar email limpo a partir do seu próprio servidor

Se você não enviar spam, forneça uma maneira fácil de cancelar a inscrição em seu serviço e criar conteúdo útil … você nunca terá problemas com o envio de quantidades de e-mail a partir do seu próprio nome de domínio sem ter que pagar mais.

Neste tutorial, usaremos Postfix para configurar o servidor de email TLS criptografado em execução no nome do host do seu próprio domínio. Isso significa que, quando seu e-mail chegar, o irritante ícone de cadeado vermelho no Gmail do destinatário desaparecerá.

Instalando o Postfix

Entre no seu servidor remoto e execute postfix.

Ops. Nós não podemos. Não está instalado.

Como instalar o Postfix no seu sistema

Basta executar o seguinte comando no seu cli / bash do Linux:

apt install postfix --yes

–sim nos ajuda a responder automaticamente “Sim” a todas as perguntas de instalação.

Uma vez instalado, somos recebidos por Configuração do Postfix tela:

Bater Entrar.

pressione Entrar novamente para escolher Site da Internet (opção padrão.)

Substituir localhost com seudominio.com (pular www parte) e pressione Entrar.

Nesse ponto, o processo de instalação continuará na tela. Uma vez feito main.cf e master.cf Será criado. O arquivo main.cf contém configuração padrão do Postfix e master.cf contém configurações adicionais.

Ambos foram instalados em: / etc / postfix / diretório.

Neste tutorial, editaremos os dois arquivos para configurar nosso servidor de email. Mas não precisaremos modificar tudo configurações apenas as partes importantes.

Lembre-se de correr recarga do postfix de serviço e / ou reinicialização do postfix de serviço comando toda vez que você altera os arquivos de configuração do Postfix.

Como configurar o Postfix

Primeiro precisamos editar /etc/postfix/main.cf – o arquivo de configuração padrão.

nano /etc/postfix/main.cf

Isso abrirá em nano editor (você pode usar o seu editor favorito!) É esse o padrão main.cf arquivo parece (removi todos os comentários para maior clareza):

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2

# 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_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = localhost.members.linode.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, example.com, localhost, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

Neste arquivo, verifique se myhostname = mail.mydomain.com. Mais uma vez aqui apenas substitua mydomain.com com seu nome de domínio real. (Por padrão, pode apontar para algum nome de host do servidor padrão, mas não precisamos disso.)

Observe que example.com na linha que começa com mydestination = devemos Além disso ser definido como seu próprio nome de domínio sem a www parte (Já fizemos isso na configuração do Postfix.)

Adicione a seguinte linha logo acima, onde diz os parâmetros #TLS:

tls_random_source = dev:/dev/urandom

Adicione também ou verifique se as seguintes entradas existem no main.cf:

smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtp_tls_mandatory_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3
smtp_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# Enable TLS
smtpd_tls_security_level = may
smtpd_tls_ask_ccert = yes
#smtpd_tls_session_cache_timeout = 3600s

Salve o arquivo e volte para a linha de comando. Em seguida, execute o seguinte comando:

sudo service postfix restart

Parabéns. Você acabou de ganhar o seguinte selo.

O Google agora considera seus e-mails criptografados com TLS (criptografia padrão)

Mas você só venceu a batalha e não a guerra. Se você tentar enviar um email do seu servidor agora, é provável que a mensagem ainda vá para a pasta Spam. Existem algumas outras coisas que precisamos fazer. Siga as instruções abaixo para impedir que os e-mails do seu servidor sejam tratados como spam pelo Gmail e outras caixas de entrada.

Localizando o par de chaves de óleo de cobra nos parâmetros # TLS

Desça um pouco o arquivo e localize as duas linhas a seguir … observe que elas estão atualmente configuradas com padrão par de chaves do certificado SSL snakeoil:

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

O que é óleo de cobra?

Óleo de cobra é uma substância sem valor medicinal real vendido como remédio para todas as doenças. Certificados de óleo de cobra são intencionalmente certificados falsos que existem por padrão. Tudo isso significa que eles não devem ser confiáveis.

São certificados temporários de espaço reservado que criptografam os dados, mas não podem ser confiáveis ​​porque não possuem autoridade raiz. Idealmente, esses certificados precisam ser reconfigurados com uma chave assinada adequada por uma CA autêntica (Autoridade de Certificação)

Na minha experiência, comentar os certificados de óleo de cobra e reiniciar o servidor não teve impacto na criptografia TLS real. Mas eu posso estar errado. Os e-mails ainda foram enviados. Não sou especialista em certificados TLS Postfix, mas o que fiz foi gerá-los com openssl de qualquer forma.

Gerando par de chaves autoassinado

Para minha configuração, criei um par de chaves autoassinadas usando openssl. E substituí os certificados de óleo de cobra por um caminho para onde eles estão localizados.

Crie um novo diretório no postfix apenas para os certificados:

mkdir /etc/postfix/ssl

Agora navegue para esse diretório:

cd /etc/postfix/ssl

Execute o seguinte comando para gerar as chaves:

openssl req -new -nodes -keyout smtp.site.com.key -out smtp.site.com.csr

(Substituir site.com com seudominio.com) Responda às perguntas que aparecem na tela. Para a maioria deles, você pode simplesmente pressionar Enter. Os importantes são:

  1. Nome comum (por exemplo, FQDN do servidor): smtp.seudominio.com
  2. Uma senha de desafio[]: (insira algo que você possa se lembrar.)

Entrar smtp.seudominio.com para Nome comum. (Obviamente, seudominio.com seria o nome real do seu domínio, não literalmente “seudominio.com”)

Agora entre ls comando no bash para verificar se as chaves foram geradas.

Você devia ter smtp.domain.com.csr e smtp.domain.com.key arquivos lá.

Pelo que entendi, você deve enviar isso .csr para provedores de certificados SSL (Autoridade de Certificação) e eles enviarão de volta um arquivo zip contendo um arquivo chamado caroot.crt que se torna seu arquivo CA TLS. Agora você precisa copiá-lo para o diretório SSL e também incluir um caminho para ele no main.cf Arquivo. Ver abaixo.

Edite seu /etc/postfix/main.cf substituindo os certificados de óleo de cobra pelas chaves que geramos e, além disso, adicione o link para caroot.crt:

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_CAfile=/etc/postfix/ssl/caroot.crt

Mais uma vez … consegui enviar e-mails e ver a verificação adequada da criptografia TLS no Gmail sem seguir esta etapa. Tentei comentar tudo isso e reiniciar o Postfix … com TLS e DKIM ainda funcionando corretamente sem nenhum desses certificados.

Eu preciso olhar mais openssl para entender como funciona e se existe uma maneira melhor de gerar .pem e .chave certificados para TLS no Postfix. Se você tiver experiência com isso, entre em contato comigo e me avise para que eu possa atualizar esta parte.

Edite /etc/postfix/master.cf

o master.cf O arquivo contém regras de configuração do processo Postfix. Não vou entrar nos detalhes por trás de cada linha. Após algumas pesquisas, criei essa configuração que funciona para o meu servidor. Eu destaquei partes importantes:

Importante: Você deve ter pelo menos 2 espaços à esquerda antes de cada -o comando. Se você não os incluir, seu servidor Postfix não comece.

Adicionando registros SPF

Agora precisamos criar 2 registros SPF. Um para o seu endereço IP no formato IPV4 e outro para o IPV6 (o mais longo.) Você precisa fazer login na sua conta de hospedagem na web.

Vá para o seu painel de controle de hospedagem na web e crie um novo registro TXT. Um registro TXT terá nome de anfitrião, valor e TTL propriedades. Para IPV4, preencha-os da seguinte maneira:

  1. Nome de anfitrião: seudominio.com
  2. Valor: v = spf1 ip4: xx.xx.xx.xx mx a ~ tudo
  3. TTL: 5 minutos

Apenas substitua xx.xx.xx.xx com o seu endereço IP remoto para o seu servidor.

Agora crie um 2º registro TXT para o seu endereço IP no formato IPV6 e digite:

  1. Nome de anfitrião: seudominio.com
  2. Valor: v = spf1 ip6:xxxx: xxxx :: xxxx: xxxx: xxxx: xxxx mx a ~ all
  3. TTL: 5 minutos

Observe que alguns hosts removerão automaticamente seudominio.com e substitua-o por espaço vazio (em Nome de anfitrião:) Supõe-se que um nome de host em branco se refira ao seu nome de domínio (sem a parte www). Portanto, se você o desaparecer das configurações de DNS, significa que está configurado corretamente. Isso é de se esperar, especialmente no Linode.

Substituir xxxx: xxxx :: xxxx: xxxx: xxxx: xxxx com o endereço IPV6 do seu servidor. Sua empresa de hospedagem deve ser capaz de dizer o que é no painel. Caso contrário, entre em contato com o suporte ao cliente ou crie um tíquete de ajuda.

Salve as configurações e elas deverão começar um pouco. Pode não funcionar imediatamente, por isso, entre 5 a 30 minutos.

Mesclando registros SPF

Embora o Gmail não o veja como um problema, geralmente é recomendado para não usar mais de um registro SPF. Alguns servidores de email rejeitarão os dois registros SPF (mesmo que todos estejam corretos) se encontrarem mais de um registro SPF nas configurações de DNS. E, no entanto … precisamos garantir que os endereços IPV4 e IPV6 estejam incluídos. Para lidar com esse problema, podemos simplesmente mesclá-los em um registro SPF (separado por espaço):

v=spf1 ip4:xx.xx.xx.xx ip6:xxxx:xxxx::xxxx:xxxx:xxxx:xxxx mx a ~all

Apenas certifique-se de substituir xs pelos seus endereços IP ip4 e ip6 reais. Salve este registro TXT nas configurações de DNS do seu host e pronto!

Nota: Você precisa aguardar alguns minutos para que os novos registros SPF sejam registrados no seu DNS após serem salvos. Portanto, não desapareça se não funcionar imediatamente.

Testando se os registros SPF foram instalados corretamente

Aguarde a finalização da propagação dos registros SPF. Somente então passe para o próximo passo. (Também existem ferramentas online que ajudam a testar seus registros SPF atuais.)

Enviando email da linha de comando do Linux

Nosso servidor de correio está pronto para teste. Mas primeiro precisamos instalar mailutils que é um utilitário de mala direta para nos ajudar a enviar emails diretamente do comando

apt install mailutils

Digite a seguinte linha (sua mensagem pode ser diferente) no bash do Linux:

echo "Hi" mail -s "My Subject Line" recipient-001@gmail.com

Simplesmente substitua destinatário-001@gmail.com com o endereço de e-mail para o qual você deseja enviar esta mensagem. Pressione Enter e observe sua caixa de entrada para receber a mensagem. Provavelmente, a primeira vez que o e-mail terminará na pasta Spam.

Agora, quando você envia um email do seu servidor para um endereço do GMail (e se você analisar o cabeçalho da mensagem), deseja que o cabeçalho do email do destinatário diga spf = pass. Isso indica que o registro SPF está salvo corretamente nas configurações de DNS.

Para verificar o cabeçalho completo, vá para “Mostrar original opção no Gmail:

O objetivo é garantir que ambos spf = pass e dkim = pass as mensagens aparecem aqui:

Exemplo de cabeçalho de email com verificações corretas de dkim e spf.

alguma coisa

spf=pass (google.com: domain of root@yourdomain.com designates xx.xx.xx.xx as permitted sender.)

A mensagem designa xx.xx.xx.xx como remetente permitido é importante. Se não é isso que você recebe, você deve continuar configurando seu servidor de correio até que ele diga isso! E é disso que trata o restante deste tutorial do Postfix.

No cabeçalho do Gmail visto acima do xserá substituído pelo endereço IP do servidor a partir do qual o email foi enviado. E seudominio.com será seu nome de anfitrião. Isso é importante. Se você deseja configurar corretamente o e-mail, verifique se o seu nome de anfitrião é o seu nome de domínio. Esse é o nosso próximo passo.

nome de anfitrião

No Linux, você tem algo chamado nome de anfitrião. Este é o nome que identifica seu servidor por um nome exclusivo. Se esse nome de host não corresponder ao seu nome de domínio e você enviar um email para uma caixa de entrada do Gmail, o Gmail se queixará de:

spf=neutral (google.com: xx.xx.xx.xx is neither permitted nor denied by best guess record for domain of root@hostname)

Pode dizer spf = neutro… não é algo que você deseja que aconteça. Também o “nem permitido nem negado mensagem não é o que queremos. Deveria dizer designada.

Vá para a linha de comando do Linux e digite:

hostname yourdomain.com

Você acabou de definir seu nome de host para corresponder ao seu nome de domínio. Para verificar o tipo:

hostname

Deve registrar seudominio.com que é o que aparecerá nos cabeçalhos do email como sua raiz @nome de anfitrião. Reinicie seu servidor Postfix e envie um email. Desta vez, deve gerar spf = pass mensagem, o que significa que você configurou com êxito o SPF.

Para tornar nossos emails ainda menos spam, precisamos também configurar um registro DKIM.

Adicionando registro DKIM

Como o DKIM funciona? Como muitos sistemas de segurança, o DKIM é baseado em um chave pública e um chave privada. o chave pública é adicionado às suas configurações de DNS como um registro TXT. Sua mensagem de email é assinada com um chave privada.

Quando a mensagem de email é enviada, o servidor do destinatário (Gmail, por exemplo) verifica sua configuração de DNS para a chave pública que tem o nome de mail._domainkey e verifica o valor DKIM nele. Agora só precisamos gerar chaves DKIM.

A maneira mais rápida de gerar suas chaves DKIM

Se você quiser fazer isso rapidamente, basta acessar uma ferramenta geradora de DKIM on-line, como https://dkimcore.org/tools/keys.html e digite seu nome de domínio na caixa de entrada e pressione Enter. Isso lhe dará duas partes.

Você também pode verificar o DKIM atual em https://dkimcore.org/c/keycheck

Um é o seu Chave privada e será algo como isto:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCv6a4bE2OWezjAk4/SmG+a+M+STPv5rid/teTjw/HknGrNFalt
c0nvW5FTiwoiofm7lG0C8OHQo0PVkXVGsrizVYShJMDfQk39/WyICxIHYt3XBB+1
ELC4bexsE8JYGJ9RwazO4otIOHBk+XPLEvNWeSx3Cj8dcVqRYPnQDv4cYwIDAQAB
AoGBAJ/d51s14LB2JVpmADOsUujsF39StT/wdHcMsAoKHf/b4vekcwhD2PJNLiJV
Xo2g1FsThYpBrYa1iUVC3ui0LUNRmOgPQfySkPSIoM3hm0HhkEfMLIwRNXHqfNT5
ayewCvsnuYGrAiwTqf5S9klsYHRlM6AD4uVR1yLDAwMQZvlxAkEA6m1PbVI610U0
om4LM0P+v7nQ3GzgtsqovPXZaTUHwgnI/zDWfH/b+0jPghjagwtIzVLqObMKvbh5
GaKrYcf96wJBAMAZ4M4LjiNKMVYfahi1Ow5+S2Xn4Kh7Rlo+GkDzqvUiqqyacGDE
XRaWBxURkRc1I6zw/0iZV0TGW0FaP9/MJWkCQQCLOYQ0fuOnOdi6pvRL7BP9tdOP
NbJ3nQB9yNzoGLCU0s7mkBCyPBVftaxXrX8I2MjR+G5W+jhk2IxDZ1K1bdslAkAT
u5TIFY/IODrRKfDwEM28M2TzVtpQ9DjJGE9GFMGe5Ky7hjG8/u7A/zBDDcblp2O+
xBK1FmtMeUOvxiqBhqrhAkApJFLcyl3mSV2hXnansn+hmJ4m7KTX1XivPk9gZUfb
j0mYWHMxhWsWCcS65XNpBn5G1ucerFKJWRtQRgm3D/q8
-----END RSA PRIVATE KEY-----

Salve-o em dkim-private.pem como um arquivo de texto e armazene-o em algum lugar do servidor, talvez em / etc / postfix / Observe que você deve incluir os marcadores –— BEGIN RSA PRIVATE KEY –— (e o inferior). Tecnicamente, eles não fazem parte da chave, mas se esses separadores estiverem ausentes no arquivo, não funcionará.

Mais tarde, quando usamos enviar correio pacote para realmente enviar e-mail do Node, vincularemos esse arquivo via dkim.privateKey propriedade em enviar correio objeto de opções.

Seu Chave pública será semelhante a:

v=DKIM1;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCv6a4bE2OWezjAk4/SmG+a+M+STPv5rid/teTjw/HknGrNFaltc0nvW5FTiwoiofm7lG0C8OHQo0PVkXVGsrizVYShJMDfQk39/WyICxIHYt3XBB+1ELC4bexsE8JYGJ9RwazO4otIOHBk+XPLEvNWeSx3Cj8dcVqRYPnQDv4cYwIDAQAB

Ao entrar no DNS, esse valor não deve conter aspas duplas.

Ao inserir isso nas configurações de DNS, ele deve estar sob o nome da propriedade mail._domainkey.domainname.com. Meu host Linode reduz automaticamente para mail._domainkey e assume domainname.com. Se o seu host não for o Linode, você poderá ter que usar mail._domainkey.domainname.com

o valor deve ser uma sequência contínua de texto. Ao realmente entrar no DKIM valor nas configurações de DNS que geramos acima, ele seria inserido como:

v=DKIM1; h=sha256; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCv6a4bE2OWezjAk4/SmG+a+M+STPv5rid/teTjw/HknGrNFaltc0nvW5FTiwoiofm7lG0C8OHQo0PVkXVGsrizVYShJMDfQk39/WyICxIHYt3XBB+1ELC4bexsE8JYGJ9RwazO4otIOHBk+XPLEvNWeSx3Cj8dcVqRYPnQDv4cYwIDAQAB

Salve isso como uma nova entrada TXT nas configurações de DNS.

Precisamos fazer mais uma coisa. Modificar /etc/postfix/main.cf adicionando as seguintes 4 linhas. Simplesmente copie-os daqui e cole-os no final do arquivo:

#DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Você pode pensar que precisamos abrir a porta 8891 via IPTABLES no servidor Linux. Errado! Isso é apenas para o soquete Postfix. Não há mais nada que você precise fazer.

Nota: O Milter é uma extensão dos amplamente utilizados agentes de transferência de código-fonte Sendmail e Postfix. Ele permite que os administradores adicionem filtros de email para filtrar spam ou vírus na cadeia de processamento de email.

Salve o arquivo e execute parada do postfix comando então início do postfix. Isso reiniciará o servidor Postfix com nova configuração.

Verificando se o seu DKIM está instalado corretamente com o DIG

É possível adicionar com êxito o registro DKIM com uma chave pública errada. O cabeçalho do email conterá dkim = neutro (chave pública inválida) Nota. Falha silenciosa e seu email ainda será enviado. O que você quer dizer é dkim = pass.

Existe uma maneira de verificar o valor real do registro DKIM. Após alterar o registro DKIM no DNS, aguarde entre 5 e 10 minutos e execute o seguinte comando no seu bash:

dig mail._domainkey.yourdomain.com TXT

Substituir seudominio.com com o seu real nome do domínio. Isso produzirá seu atual Registros TXT no console. Lembre-se de que a alteração dos registros DNS leva tempo para entrar em vigor. É possível ver um registro mais antigo aqui. Apenas dê tempo para se propagar.

Para o meu nome de domínio, tive esta saída:

alguma coisa

Instalando o pacote DKIM

Adicionar registro DKIM ao nosso DNS é apenas o primeiro passo. Para juntar tudo … agora precisamos combinar a chave de domínio público com a nossa chave privada.

Para instalar dkim pacote execute o seguinte comando:

sudo apt-get install opendkim opendkim-tools

Instalando opendkim-tools pacote também criou /etc/opendkim.conf Arquivo. Este é o arquivo que precisamos editar. Abra com:

nano /etc/opendkim.conf

Localize as duas linhas a seguir:

#Socket                  inet:8891@localhost
Socket                 local:/var/run/opendkim/opendkim.sock

E mude para:

Socket                  inet:8891@localhost
#Socket                 local:/var/run/opendkim/opendkim.sock

Ctrl-X e tipo Y e Entrar para salvar o arquivo.

Soquete é para o ordenador ouvir neste endereço. O Posfix enviará mensagens para o opendkim para assinatura e verificação através deste soquete; 8891 @ localhost define um soquete TCP que escuta localhost: 8891 porta.

Agora edite o arquivo de configurações padrão do opendkim:

nano /etc/default/opendkim

E altere a linha que começa com SOCKET para:

SOCKET=inet:8891@localhost

Salve e saia do editor.

Editar main.cf Arquivo de configuração do Postfix

nano /etc/postfix/main.cf

E adicione na parte inferior do arquivo:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Execute os seguintes comandos:

sudo service postfix restart
sudo service opendkim restart

Parabéns! Neste ponto, você poderá enviar um email seguro do seu servidor. Na próxima parte deste tutorial, veremos como enviar email da linha de comando e instalar enviar correio pacote para que possa ser enviado diretamente pelo servidor Node com o nome do remetente adequado.

Você notará que seu email chegou de raiz@domínio. Não é exatamente isso que você deseja. Como empresa legítima, você deseja que ela se reflita no nome do endereço de e-mail do qual está enviando notícias, atualizações etc.

O Postfix possui uma configuração abrangente que permite alterar praticamente tudo o que você pode imaginar ré: enviando email. Também permite reescrever cabeçalhos de email. Na verdade, você pode usar expressões regulares para fazer isso.

Mas é melhor definir De: valor usando um cliente de email, em vez de mexer diretamente com as reescritas do cabeçalho do Postfix. O Gmail e outros servidores de e-mail são bastante rigorosos em relação a cabeçalhos levemente malformados, porque muitas vezes é um sinal de que um remetente de spam fez uma tentativa desajeitada de falsificar a mensagem. Usaremos os nós enviar correio módulo.

Usando o nó sendmail para enviar email

Enviar email da linha de comando é bom mas você também deseja enviar email diretamente do seu servidor Nó. Isso é especialmente útil se você quiser envie vários emails reescreva corretamente o nome do remetente, o endereço de resposta e assim por diante.

Instalando o sendmail

Basta executar o seguinte comando no diretório do seu projeto:

npm install sendmail --save

E agora podemos usar enviar correio no nosso programa Node!

// Bread and potatoes Express server
const express = require('express');
const https = require('https');
const fs = require('fs');
const path = require('path');
const app = express();
const port = 80;

// Send email to one or multiple recipients:
const sendmail = require('sendmail')({
  logger: {
    debug: console.log,
    info: console.info,
    warn: console.warn,
    error: console.error
  },
  silent: false,
  dkim: { // Default: False
    privateKey: fs.readFileSync('/etc/postfix/dkim-private.pem', 'utf8'),
    keySelector: '._domainkey'//'mydomainkey'
  },
  devPort: 25, // Default: False
  devHost: 'localhost', // Default: localhost
  smtpPort: 25, // 2525, // Default: 25
  smtpHost: 'localhost' // Default: -1 - extra smtp host after resolveMX
});

const error = function(err, reply) {
    console.dir(reply)
};

// Create email body message
const body  = '

You activation code is 10-' + Math.floor(Math.random()*10000) + ' enter it into code confirmation box within next hour to finish registering your account.

' + '

Glorious Chimpanzee
Thanks from all of our team!

'; // Recipient list const emails = ["recip-1@gmail.com", "recip-2@other.com", "FelixTheCat@catmail.com"]; const from_addr = 'Glorious Chimpanzee '; const subj = 'Please Confirm Your Glorious Chimpanzee Account'; emails.forEach(email => { sendmail({from: from_addr, to: email, subject: subj, html: body}, error); }); // Run basic Express server: // You don't need to do this if you just want to send email let site = 'gloriouschimp.com'; const certificates = { "key": fs.readFileSync(`/etc/letsencrypt/live/${site}/privkey.pem`), "cert": fs.readFileSync(`/etc/letsencrypt/live/${site}/fullchain.pem`) }; const server = event => { console.log(`${site} is listening on port ${port}!`); }; // Launch Node server with Express "app" https.createServer(certificates, app).listen(port, server);

Este script envia um email para 3 endereços de email criados. Para enviá-lo para apenas um, basta modificar e-mails[] matriz excluindo os outros dois.

node mailer.js

Execute este comando para executar o script e envie um email para 3 destinatários imaginários. (Substitua pelos seus próprios endereços de e-mail para testá-lo!)

Nota: Você não precisa de peças Express apenas para enviar e-mail. Aqui estão incluídos como referência para ver como enviar correio pode ser usado ao lado de express.

Apenas certifique-se de substituir gloriouschimp.com com seu próprio nome de domínio. Gere também certificados SSL e passe-os para https.createServer método como opções … você pode aprender como fazer isso seguindo meu Tutorial LetsEncrypt aqui.

Seus certificados SSL que executam o servidor via https O protocolo não é necessário para enviar correio TLS com o Postfix. Mas é uma boa ideia configurá-lo. o http O protocolo ainda existe, mas está se tornando rapidamente extinto e obsoleto. Não o utilize ao configurar um novo servidor.

Idealmente, se você seguiu todas as instruções deste tutorial, nesse ponto, você terá um servidor de correio TLS configurado corretamente. No entanto, é possível que, devido a diferenças nos sistemas operacionais Linux, software desatualizado e assim por diante, você ainda possa desarmar algumas partes da configuração. Continue ajustando cada parte da configuração do Postfix, uma de cada vez. Envie um email de teste. Confira recursos adicionais online. Boa sorte!

Você pode Siga me no twitter para obter atualizações sobre meus tutoriais de codificação gratuitos ou confira esta página com meus livros de codificação em JavaScript e CSS, se você precisar de uma cópia.



Fonte

Leave a Reply

Your email address will not be published. Required fields are marked *