~ Endless Eight ~ Migrando el entorno FreeBSD de Vultr a ConoHa mientras estoy ebrio ~ SigningTable que no se puede leer con comodines ~
Hola, esta es una continuación de la vez anterior. El título es "ebrio" pero ya no estoy ebrio.
¡No llega a Gmail!
Vaya, estoy en problemas.
Es una lucha mientras miro tail -f /var/log/maillog...
opendkim[1853]: can’t load key from /var/db/dkim/eyes4you.org.private: Permission denied
Oh... parece ser un problema de permisos.
Lo había olvidado, pero el usuario predeterminado de FreeBSD para dmarc/dkim es 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"}
En otras palabras, opendkim debe poder leer la clave privada.
Dado que ya cometí errores al crear mail.eyes4you.org y eyes4you.org la vez anterior, decidiré empezar de nuevo.
Por cierto, la configuración anterior también era incorrecta, y los registros que había registrado en ConoHa también estaban mal.
# opendkim-genkey -d eyes4you.org -s mail -D /var/db/dkim/
# cat /var/db/dkim/mail.txt # Añadir el contenido de aquí al registro TXT
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFdu/VfVVHqUN84IZh739JVf8NW6HAmMBT3+NBcTmkwOGLQ4ye59wvN83CudtnHPKR9vdtL9kJusaWk6wm0HXtZ64dVkjZxg61vrwPWw25Pe1eAkrs8EkdqnCLfeHtsU2g7dBD+gjbJgOKdAhIocPQYQYio0kyMn8M/MlGP60eQQIDAQAB" ) ; ----- DKIM key mail for eyes4you.org
Después de eso, concedo los permisos.
chown mailnull:mailnull /var/db/dkim/mail.private
chmod 600 /var/db/dkim/mail.private
Es simple.
Esta vez, solo usé un comodín.
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 #
Con esto, reinicio
service milter-opendkim restart
service postfix restart
tail -f /var/log/maillog
Con esto, envío correos electrónicos, pero no importa cuántas veces lo intente, siguen yendo a la carpeta de spam de Gmail...
Al mirar los registros
Sep 14 10:59:04 localhost opendkim[974]: B855A20079: no signing table match for 'hoge@eyes4you.org'
Así es como sucede. Recuerdo haber escrito explícitamente hoge@eyes4you.org en KeyTable porque me quedé atascado con esto...
Pero quiero especificar un comodín.
Recorrí varios sitios y llegué aquí.
Recuerdo haber visto esto antes...
Aparece "no signing table match" en opendkim de centos6.3 | CHOICE
Si se establece SigningTable como /etc/opendkim/SigningTable, se debe configurar como testserver.com default._domainkey.testserver.com. O, si se establece SigningTable como refile:/etc/opendkim/SigningTable, parece que se debe configurar como *@testserver.com default._domainkey.testserver.com.
Así que, por lo tanto
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@eyes44you.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 # ← Aquí
KeyTable /usr/local/etc/mail/KeyTable
Mirar los registros
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)
~~~
¡¡¡¡Llegó~~~~!!!! ¡Lo logré!
Registro SPF, me están regañando...
Parece que si IPv6 está habilitado, también necesitaba habilitar IPv6 en el registro SPF.
Antes, lo había desactivado completamente por preocupaciones de rendimiento, pero ya no me importa, así que lo registraré.
v=spf1 ip4:IPv4 aquí ip6:IPv6 aquí -all
Por cierto, recientemente aprendí que al acceder a IPv6 en un host local con un navegador, se puede abrir encerrándolo entre [ ], como http://[IPv6:aquí]:80.
Ya no tiene sentido ocultarlo, pero es algo así.

Excluir parte del tráfico de WireGuard del VPN
Servicios como OpenAI se quejan con la comunicación VPN, así que evitaré usar VPN para ellos.
cd /usr/local/
mkdir sh
cd sh
vim route.sh
Y luego introducir lo siguiente
#!/usr/local/bin/bash
# Definir los dominios de la lista
DOMAINS=("chat.openai.com" )
# Puerta de enlace predeterminada
GATEWAY="En este caso, el inet de vtnet0 de ifconfig"
# Obtener las direcciones IP de cada dominio y añadir el enrutamiento
for DOMAIN in "${DOMAINS[@]}"; do
# Obtener la dirección IP del dominio
IP_ADDRESSES=$(dig +short $DOMAIN | grep [0-9])
# Añadir enrutamiento para cada IP
for IP in $IP_ADDRESSES; do
route add $IP $GATEWAY
done
done
Sin embargo, tenga en cuenta que esta vez también se necesita IPv6.
Nginx
Rotación de logs de Nginx
Me di cuenta al usar FreeBSD de Vultr que no había rotación de logs por defecto y se estaban desbordando.
En FreeBSD, se puede configurar en /etc/newsyslog.conf, así que añadiré lo siguiente.
/var/log/nginx/access.log root:wheel 640 7 * @T00 Z
/var/log/nginx/error.log root:wheel 640 7 * @T00 Z
Luego, moveré los archivos conf. Es molesto que ConoHa esté bloqueando Vultr, pero los transferiré a través de la máquina actual.
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
Eliminar el /usr/local/etc/nginx por defecto y completar con mv.
El destino del backend apunta a la IP interna de WireGuard, así que basta con que el cliente apunte el servidor WireGuard a ConoHa.
Sin embargo, esta vez planeo hacer de ConoHa el NS, lo cual es realmente molesto. Empieza a surgir la dificultad de tener más de 10 dominios...
Afortunadamente, ConoHa ha publicado una API para cambiar registros DNS, así que me gustaría crear algo que pueda cambiar los DNS en masa una vez que termine esta tarea.
Importación de archivos de zona | Sitio de documentación de ConoHa
Después de eso, de alguna manera enviaré todos los archivos alojados estáticamente y el propio directorio de correo al lado de ConoHa a través de mi máquina host... ¡y listo!
Finalmente, en cuanto a fail2ban, lo haré después de confirmar la comunicación del lado del cliente con WireGuard. Hasta la próxima.