~ Endless Eight ~ Migrando o ambiente FreeBSD do Vultr para o ConoHa enquanto bêbado ~ SigningTable que não pode ser lida com curingas ~
Olá, esta é uma continuação da última vez. O título é "bêbado", mas não estou mais bêbado.
Não está chegando ao gmail!
Ah, estou com problemas.
É uma luta enquanto observo tail -f /var/log/maillog...
opendkim[1853]: can’t load key from /var/db/dkim/eyes4you.org.private: Permission denied
Ah... parece ser um problema de permissão.
Eu havia esquecido, mas o usuário padrão para dmarc/dkim no FreeBSD é mailnull.
root@localhost:/usr/local/etc # grep -r mailnull
./rc.d/opendmarc:opendmarc_runas=${opendmarc_runas-"mailnull:mailnull"}
./rc.d/milter-opendkim:: ${milteropendkim_uid:="mailnull"}
./rc.d/milter-opendkim:: ${milteropendkim_gid:="mailnull"}
./rc.d/milter-manager:: ${miltermanager_uid="mailnull"}
Em outras palavras, o opendkim deve ser capaz de ler a chave privada.
Como eu também cometi erros ao criar mail.eyes4you.org e eyes4you.org da última vez, vou começar do zero.
A propósito, as configurações anteriores também estavam erradas, e os registros que eu havia registrado no ConoHa também estavam incorretos.
# opendkim-genkey -d eyes4you.org -s mail -D /var/db/dkim/
# cat /var/db/dkim/mail.txt # Adicione o conteúdo daqui ao registro TXT
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFdu/VfVVHqUN84IZh739JVf8NW6HAmMBT3+NBcTmkwOGLQ4ye59wvN83CudtnHPKR9vdtL9kJusaWk6wm0HXtZ64dVkjZxg61vrwPWw25Pe1eAkrs8EkdqnCLfeHtsU2g7dBD+gjbJgOKdAhIocPQYQYio0kyMn8M/MlGP60eQQIDAQAB" ) ; ----- DKIM key mail for eyes4you.org
Depois disso, conceda as permissões.
chown mailnull:mailnull /var/db/dkim/mail.private
chmod 600 /var/db/dkim/mail.private
É simples.
Desta vez, usei apenas curingas.
root@localhost:/usr/local/etc/mail # cat SigningTable
*@eyes4you.org mail._domainkey.eyes4you.org
root@localhost:/usr/local/etc/mail # cat KeyTable
mail._domainkey.eyes4you.org eyes4you.org:mail:/var/db/dkim/mail.private
root@localhost:/usr/local/etc/mail #
Agora reinicie
service milter-opendkim restart
service postfix restart
tail -f /var/log/maillog
Com isso, envio e-mails, mas não importa quantas vezes eu tente, eles ainda vão para a pasta de spam do Gmail...
Olhando os logs
Sep 14 10:59:04 localhost opendkim[974]: B855A20079: no signing table match for 'hoge@eyes4you.org'
É o que acontece. Lembro-me de ter escrito explicitamente hoge@eyes4you.org na KeyTable porque fiquei preso com isso...
Mas eu quero especificar um curinga.
Percorri vários sites e cheguei aqui.
Já vi isso antes...
opendkim no centos6.3 mostra "no signing table match" | CHOICE
Se você estiver usando SigningTable /etc/opendkim/SigningTable, deve configurá-lo como testserver.com default._domainkey.testserver.com. Alternativamente, se você estiver usando SigningTable refile:/etc/opendkim/SigningTable, deve configurá-lo como *@testserver.com default._domainkey.testserver.com.
Então, isso significa
root@localhost:/usr/local/etc/mail # cat opendkim.conf
##
## opendkim.conf -- configuration file for OpenDKIM filter
##
## Copyright (c) 2010-2015, The Trusted Domain Project. All rights reserved.
##
Canonicalization simple/simple
Domain eyes4you.org
LogWhy yes
Mode sv
ReportAddress "DKIM Error Postmaster" <postmaster@eyes4you.org>
Selector default
SendReports yes
Socket inet:8891@localhost
SubDomains yes
Syslog Yes
SyslogSuccess yes
UMask 002
InternalHosts /usr/local/etc/mail/TrustedHosts
SigningTable refile:/usr/local/etc/mail/SigningTable # ← Aqui
KeyTable /usr/local/etc/mail/KeyTable
Verificar os logs
root@localhost:/usr/local/etc/mail # tail -f /var/log/maillog
~~~
Sep 14 12:14:52 localhost opendkim[3772]: 21A8E20293: DKIM-Signature field added (s=mail, d=eyes4you.org)
~~~
Chegou~~~~!!!! Consegui!
Registro SPF, estou sendo repreendido...
Parece que, se o IPv6 estiver ativado, eu também precisava ativá-lo no registro SPF.
Antes, eu o desativava completamente por preocupações com desempenho, mas não me importo mais, então vou registrá-lo.
v=spf1 ip4:IPv4 aqui ip6:IPv6 aqui -all
A propósito, recentemente descobri que ao acessar IPv6 em localhost com um navegador, você pode abri-lo envolvendo-o em [ ], como http://[IPv6:aqui]:80.
Não há mais sentido em esconder, mas é assim.

Excluir parte do tráfego WireGuard da VPN
Serviços como o OpenAI reclamam com a comunicação VPN, então vou evitar que usem a comunicação VPN.
cd /usr/local/
mkdir sh
cd sh
vim route.sh
E insira o seguinte
#!/usr/local/bin/bash
# Define os domínios da lista
DOMAINS=("chat.openai.com" )
# Gateway padrão
GATEWAY="Neste caso, o inet de vtnet0 do ifconfig"
# Obter os endereços IP de cada domínio e adicionar roteamento
for DOMAIN in "${DOMAINS[@]}"; do
# Obter o endereço IP do domínio
IP_ADDRESSES=$(dig +short $DOMAIN | grep [0-9])
# Adicionar roteamento para cada IP
for IP in $IP_ADDRESSES; do
route add $IP $GATEWAY
done
done
No entanto, observe que o IPv6 também é necessário desta vez.
Nginx
Rotação de logs do Nginx
Percebi ao usar o FreeBSD do Vultr que não havia rotação de log padrão e estava transbordando.
No FreeBSD, você pode configurá-lo em /etc/newsyslog.conf, então adicione o seguinte.
/var/log/nginx/access.log root:wheel 640 7 * @T00 Z
/var/log/nginx/error.log root:wheel 640 7 * @T00 Z
Em seguida, mova o arquivo conf. É problemático que o ConoHa esteja bloqueando o Vultr, mas vou transferi-lo através da máquina atual.
thepassenger:[haturatu]:~/migrate-freebsd$ scp darkstar@vultr-freebsd:/home/darkstar/nginx.tar.gz .
nginx.tar.gz 100% 14KB 167.8KB/s 00:00
thepassenger:[haturatu]:~/migrate-freebsd$ scp nginx.tar.gz root@conoha-freebsd:/root/
nginx.tar.gz 100% 14KB 129.1KB/s 00:00
Exclua o /usr/local/etc/nginx padrão e conclua com mv.
O destino do backend aponta para o IP Interno do WireGuard, então basta apontar o servidor WireGuard para o ConoHa no lado do cliente.
No entanto, como pretendo usar o ConoHa como NS desta vez, é realmente problemático. A dificuldade de ter mais de 10 domínios surge...
Felizmente, o ConoHa disponibilizou uma API para alteração de registros DNS, então gostaria de criar algo que possa alterar os registros DNS de uma vez após a conclusão desta tarefa.
Importação de arquivo de zona | Site de documentação do ConoHa
Depois disso, vou de alguma forma enviar os arquivos estaticamente hospedados e o próprio diretório de e-mail para o lado do ConoHa através da minha máquina host... e pronto!
Por fim, quanto ao fail2ban, farei isso depois de confirmar a comunicação do lado do cliente com o WireGuard. Até a próxima.