~ Endless Eight ~ Migrando el entorno FreeBSD de Vultr a ConoHa mientras estoy ebrio ~ SigningTable que no se puede leer con comodines ~

10 min

language: ja bn de en es fr hi ko pt ru zh-cn zh-tw

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í.

Image

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.

Related Posts