Prefácio
No meu servidor, 2 domínios separados estão girando. Antes da história do bloqueio de Roskomnadzor, coletamos tráfego de cerca de 2000 visitas por dia e o servidor de correio enviou cerca de 200 cartas por dia a todos os serviços de correio populares, incluindo Google e Yandex. Tudo foi ótimo. Mas como o famoso vídeo diz: “Tudo foi tão bom até
Navalny Roskomnadzor chegar!
Agora que conseguimos encontrar um hoster cujos endereços IP não se enquadram no bloqueio da censura do estado, surgiu outro problema. O Google Good Corporation deixou de deixar nosso carteiro ir além do limite.
O servidor do google MX lança meu e-mail com aproximadamente a seguinte mensagem: "Sua mensagem parece não solicitada, vamos nos despedir ..."
Registro de conexão SMTP do Google050 <legale.legale@gmail.com>... Connecting to gmail-smtp-in.l.google.com. via esmtp... 050 220 mx.google.com ESMTP v6-v6si38552789wrc.432 - gsmtp 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-STARTTLS 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> STARTTLS 050 220 2.0.0 Ready to start TLS 050 >>> EHLO sevenlight.ru 050 250-mx.google.com at your service, [2a02:c207:2018:3546::1] 050 250-SIZE 157286400 050 250-8BITMIME 050 250-ENHANCEDSTATUSCODES 050 250-PIPELINING 050 250-CHUNKING 050 250 SMTPUTF8 050 >>> MAIL From:<root@sevenlight.ru> SIZE=297 050 250 2.1.0 OK v6-v6si38552789wrc.432 - gsmtp 050 >>> RCPT To:<legale.legale@gmail.com> 050 >>> DATA 050 250 2.1.5 OK v6-v6si38552789wrc.432 - gsmtp 050 354 Go ahead v6-v6si38552789wrc.432 - gsmtp 050 >>> . 050 550-5.7.1 [2a02:c207:2018:3546::1 7] Our system has detected that this 050 550-5.7.1 message is likely unsolicited mail. To reduce the amount of spam sent 050 550-5.7.1 to Gmail, this message has been blocked. Please visit 050 550-5.7.1 https://support.google.com/mail/?p=UnsolicitedMessageError 050 550 5.7.1 for more information. v6-v6si38552789wrc.432 - gsmtp
Com este comando, enviei uma mensagem de teste:
echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com
Não vou escrever sobre minhas danças com um pandeiro na tentativa de romper os filtros de spam. Só posso dizer que fui transportado a noite toda, mas só consegui ter sucesso no dia seguinte. Por isso, decidi escrever este manual.
INSTRUÇÕES DE CONFIGURAÇÃO DO SPF + DKIM NO UBUNTU 18.04
A inclinação desta instrução é que ela funciona, diferente de muitas outras. Garanto que você pode configurar pelo menos 2 domínios em 1 servidor sem muita dificuldade.
1. Instale os pacotes necessários
apt-get install sendmail opendkim -y
2. Configure o opendkim
A configuração está aqui: /etc/opendkim.conf
/etc/opendkim.confReinício automático Sim
UMask 002
Syslog sim
AutoRestartRate 10 / 1h
Canonicalização relaxada / simples
Refil ExternalIgnoreList: / etc / opendkim / TrustedHosts
Refil InternalHosts: / etc / opendkim / TrustedHosts
Refil do KeyTable: / etc / opendkim / KeyTable
Refil da SigningTable: / etc / opendkim / SigningTable
Por que sim
Modo sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
Entrada do soquete: 8891 @ localhost
SyslogSuccess Sim
Diretório temporário / var / tmp
ID do usuário opendkim: opendkim
3. Configure chaves e regras de assinatura
Descreverei o procedimento para criar suas próprias chaves para quem deseja autonomia completa. Pessoalmente, eu uso o serviço Yandex.Direct Mail para o domínio pdd.yandex.ru, por isso tenho as chaves geradas pelo Yandex.
# mkdir -p /etc/opendkim/keys/*****.ru # cd /etc/opendkim/keys/******.ru # #-s -d opendkim-genkey -s mail -d ******.ru # 2 mail.txt mail.private # opendkim:opendkim chown opendkim:opendkim mail.* # chmod 600 mail.private
Em seguida, conectamos nossa chave secreta DKIM criada ou baixada do Yandex.
Estamos interessados nessas três linhas da configuração do opendkim:
InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable
O primeiro
/etc/opendkim/TrustedHosts
contém hosts que terão acesso ao servidor opendkim para assinar emails.
/ etc / opendkim / TrustedHosts127.0.0.1
localhost
######. ru
******. ru
O segundo arquivo
/etc/opendkim/KeyTable
contém uma tabela de chaves privadas e entradas DKIM relacionadas, que são as seguintes:
[selector]._domainkey.[domain_name]
/ etc / opendkim / KeyTablemail._domainkey.sevenlight.ru sevenlight.ru:mail:/etc/opendkim/keys/sevenlight.ru/mail.private
mail._domainkey.st-goods.ru st-goods.ru:mail:/etc/opendkim/keys/st-goods.ru/mail.private
O terceiro arquivo
/etc/opendkim/SigningTable
contém uma tabela de regras para assinar cartas. Indica as letras de quem e com qual chave assinar.
/ etc / opendkim / SigningTable*@sevenlight.ru mail._domainkey.sevenlight.ru
*@st-goods.ru mail._domainkey.st-goods.ru
Criamos esses arquivos, indicando nosso domínio e nosso caminho para o arquivo-chave. Isso completa a configuração do opendkim.
4. Configure o sendmail
Configurar o sendmail é o mais simples possível. Nós apenas precisamos adicionar as seguintes linhas ao final do arquivo de configuração do protótipo
/etc/mail/sendmail.mc
:
# starttls include(`/etc/mail/tls/starttls.m4')dnl # sendmail opendkim INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl
Para enviar emails por padrão do domínio correto, você precisa fazer mais uma alteração no arquivo
/etc/mail/sendmail.mc
Estamos procurando uma linha semelhante a esta:
MASQUERADE_AS(`st-goods.ru')dnl
Substitua pelo domínio desejado. É esse domínio que será usado como o endereço de retorno padrão. Observe que as aspas existem, estritamente falando, o primeiro sinal
`
é chamado gravis. Então, por algum motivo, ele é obtido em uma configuração do sendmail.
Agora adicionaremos entradas ao arquivo / etc / hosts, o que é necessário para que o sendmail passe as mensagens pelo filtro. Foi experimentalmente estabelecido que, se você não adicionar entradas, todos os logs permanecerão limpos, sem mostrar um único erro, mas as letras não serão assinadas.
#ipv4 echo -e "127.0.0.1 st-goods.ru" >> /etc/hosts #ipv6 echo -e "::1 st-goods.ru" >> /etc/hosts
Agora precisamos reconstruir o sendmail com as novas configurações.
# # "" sendmailconfig # opendkim sendmail service opendkim restart && service sendmail restart
Agora, nosso servidor sendmail pode transmitir mensagens de saída através do servidor opendkim, que adiciona uma assinatura digital e criptografa os cabeçalhos das cartas enviadas. Resta publicar a chave pública do host, para que os cabeçalhos possam ser descriptografados e verifique se os cabeçalhos não são alterados.
5. Configurações de registro DKIM TXT no servidor DNS
A chave deve ser suspensa no servidor DNS em uma cadeia de caracteres do tipo TXT com o seguinte conteúdo:
host:
mail._domainkey
valor:
v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw
v=DKIM1; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wtGTw/5KPjtlIEh282JY7ovxZ/8eqveFn9ivhzpYJldl3fBEOKw
Explicações:
p=
esta é a nossa chave pública
v=
define o número da versão do DKIM
t=
define sinalizadores; os sinalizadores não são definidos por padrão. Existem 2 sinalizadores 'y' e 's'.
y
indica que DKIM está no modo de teste.
s
significa o modo quando a parte direita do endereço de correio após @ deve corresponder completamente ao domínio especificado no parâmetro d = DKIM da assinatura da carta.
O host deve ser especificado da seguinte maneira:
[selector]._domainkey
Como temos um seletor de email, o host ficará assim:
mail._domainkey
A chave pública deve ser
/etc/opendkim/keys/st-goods.ru/mail.txt
do arquivo
/etc/opendkim/keys/st-goods.ru/mail.txt
/etc/opendkim/keys/st-goods.rumail._domainkey IN TXT ("v = DKIM1; h = sha256; k = rsa;„
"P = + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsLFjSAqvfSrjvF0JfMkiSzqWRhXwwVPzW5OEtRFSoDVBwDxR6hMna1iESnUQ1OzbUQQPnDPbrFXkalDCAXigZqltTSAV JQSyOwhi0b88WS3djb1IkA / qioCobjlhMFSatvcmz5kMkG8oeoHhVFQ / BE84PwDPTXRmcObDvg7meUmkYpdxeyr + tcG5ezuC + s15I00 + 6NSAaj0Tj»
«Y / Bl2e2TE / WG45wVShlQ85E8IpYixscd0qDJ9 / NbZrbWIfy8shujWVk5izNU4PqcWwW7 / H9uTkhAbMu0fgqT8W9Jv / GRVAireOCzMl13E9PVANt4o + ywqyGk38vSY8QdgJsZPDUQIDAQAB»); - Correio de chave DKIM para st-goods.ru
A chave vai de p = até a última cotação. As próprias aspas devem ser removidas.
6. configuração do SPF
O SPF (Sender Policy Frameword) é outra tecnologia de proteção contra spam, não falarei sobre isso. Apenas 2 palavras para entender a essência desta tecnologia. No registro DNS de um domínio, os endereços dos servidores que têm o direito de enviar email desse domínio são registrados da mesma maneira que a chave pública DKIM. Precisamos registrar os endereços IP do nosso servidor nesta entrada. No meu caso, o servidor Yandex também é adicionado à lista.
Aqui está um exemplo do meu post:
host:
@
valor:
v=spf1 a mx include:_spf.yandex.net ip4:173.249.51.13 ip6:2a02:c207:2018:3546::1 ~all
A sintaxe é simples. Primeiro, a versão spf é indicada e, depois de um espaço com ou sem um sinal de adição, são indicados os endereços dos servidores que têm o direito de enviar email deste domínio. Eu tenho os registros a e mx, o que significa que os servidores dos registros DNS A e MX também estão incluídos na lista de permitidos. Via include: o endereço do servidor Yandex é especificado e, em seguida, os endereços ipv4 e ipv6 do meu servidor. ~ tudo significa falha soft "falha leve". I.e. todos os endereços que não estão listados em permitido ainda podem ir a critério do servidor de recebimento. -tudo significaria uma forte rejeição.
7. configuração do DMARC
A unha final para penetrar no bastião do Gmail é o DMARC. O DMARC define o que fazer com os emails que falham no SPF ou no DKIM.
Fazemos tudo exatamente da mesma maneira através de um registro DNS TXT.
host:
_dmarc
valor:
v=DMARC1; p=none
v=DMARC1; p=none
Aqui, estabelecemos que, se as cartas não passaram no SPF ou no DKIM, nada precisa ser feito. Você pode colocar p = rejeitar. Em seguida, essas cartas serão rejeitadas.
Verifique
Envie uma carta para si mesmo.
echo "Subject: Hello baby!" | sendmail -v legale.legale@gmail.com
Examinamos as entradas mais recentes no log de mensagens.
tail -f /var/log/mail.log | grep dkim
Uma linha semelhante a esta deve aparecer:
Jun 11 22:07:55 sevenlight opendkim[6473]: w5BK7sl9008069: DKIM-Signature field added (s=mail, d=st-goods.ru)
Se houver uma linha, o servidor sendmail e o opendkim trabalharam juntos e assinaram sua carta. Se não houver essa linha, consulte a seção "Possíveis problemas".
Agora vamos ver o que aconteceu na caixa de correio. Abra a letra e pressione o botão de seta para baixo no canto superior direito da letra. No menu suspenso, selecione o item "Mostrar original".
Aqui está o que eu tenho:
Message ID <201806112007.w5BK7sUS008068@******.ru> Created on: 11 June 2018 at 22:07 (Delivered after 2 seconds) From: info@*****.ru To: legale.legale@gmail.com Subject: №2221 - ******.ru SPF: PASS with IP 2a02:c207:2018:3546:0:0:0:1 Learn more DKIM: 'PASS' with domain *****.ru Learn more DMARC: 'PASS' Learn more
LUCRO $$$
Possíveis problemas
Espero sinceramente que não seja necessário ler esta seção, mas a técnica é uma coisa complicada ... Às vezes não está claro quem trabalha para quem.
Primeiro, verifique se você fez tudo na sequência exata especificada nas instruções.
Primeiro, verifique o arquivo / etc / hosts para verificar se as alterações estão corretas. Eu tive mais problemas lá. Em seguida, verifique se há erros no dkim no log do sistema. Enquanto andava por aí, encontrei uma situação em que era impossível ler a chave secreta opendkim, embora tenha atribuído o usuário opendkim como o proprietário do arquivo. Em seguida, você deve examinar cuidadosamente o log de execução do comando sendmailconfig.Eu tive um caso em que usei as aspas simples comuns em vez do cascalho put e o sendmailconfig jurou. Se tudo mais falhar, escreva-me e continue tentando.