~ Бесконечная восьмерка ~ Перенос среды FreeBSD с Vultr на ConoHa в нетрезвом виде ~ SigningTable, которую нельзя прочитать с помощью подстановочного знака ~
Привет, это продолжение предыдущей части. Заголовок "пьяный", но я уже не пьян.
Не доходит до gmail!
Ох, это проблема.
Борьба, наблюдая за tail -f /var/log/maillog...
opendkim[1853]: can’t load key from /var/db/dkim/eyes4you.org.private: Permission denied
Ой... похоже, не хватает прав.
Я забыл, но пользователь по умолчанию FreeBSD для dmarc/dkim — 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"}
То есть, этот opendkim должен иметь возможность читать закрытый ключ.
Поскольку в прошлый раз я ошибочно создал mail.eyes4you.org и eyes4you.org, я решил начать все заново.
Кстати, предыдущие настройки тоже были неверны, и записи, зарегистрированные в ConoHa, тоже были ошибочны.
# opendkim-genkey -d eyes4you.org -s mail -D /var/db/dkim/
# cat /var/db/dkim/mail.txt # Добавить содержимое сюда в TXT запись
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFdu/VfVVHqUN84IZh739JVf8NW6HAmMBT3+NBcTmkwOGLQ4ye59wvN83CudtnHPKR9vdtL9kJusaWk6wm0HXtZ64dVkjZxg61vrwPWw25Pe1eAkrs8EkdqnCLfeHtsU2g7dBD+gjbJgOKdAhIocPQYQYio0kyMn8M/MlGP60eQQIDAQAB" ) ; ----- DKIM key mail for eyes4you.org
После этого предоставим права.
chown mailnull:mailnull /var/db/dkim/mail.private
chmod 600 /var/db/dkim/mail.private
Просто.
На этот раз я использовал только подстановочный знак.
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 #
Теперь перезапуск
service milter-opendkim restart
service postfix restart
tail -f /var/log/maillog
Теперь я отправляю электронные письма, но сколько бы раз я ни пытался, они снова попадают в спам Gmail...
Если посмотреть логи
Sep 14 10:59:04 localhost opendkim[974]: B855A20079: no signing table match for 'hoge@eyes4you.org'
Вот что происходит. Я помню, что явно прописывал hoge@eyes4you.org в KeyTable, потому что это застряло.
Но я хочу использовать подстановочный знак.
Я просмотрел несколько сайтов и нашел это.
Я видел это раньше...
«no signing table match» появляется в opendkim на centos6.3 | CHOICE
Если вы используете SigningTable /etc/opendkim/SigningTable, то настройте его как testserver.com default._domainkey.testserver.com. Или, если вы используете SigningTable refile:/etc/opendkim/SigningTable, то настройте его как *@testserver.com default._domainkey.testserver.com.
Вот почему
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 # ← Здесь
KeyTable /usr/local/etc/mail/KeyTable
Смотрим логи
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)
~~~
Пришло~~~~!!!! Сделано!
SPF-запись, меня ругают...
Похоже, если IPv6 включен, то его нужно было включить и в SPF-записи.
Раньше я полностью отключал его из-за опасений по поводу производительности, но теперь меня это не беспокоит, поэтому я зарегистрирую его.
v=spf1 ip4:здесь IPv4 ip6:здесь IPv6 -all
Кстати, недавно я узнал, что IPv6 на локальном хосте можно открыть в браузере, заключив его в [ ], например, http://[здесь:IPv6]:80.
Уже нет смысла скрывать, но это выглядит так.

Исключить часть WireGuard из VPN
OpenAI и другие сервисы ругаются на VPN-трафик, поэтому я не буду использовать VPN для них.
cd /usr/local/
mkdir sh
cd sh
vim route.sh
И введите следующее
#!/usr/local/bin/bash
# Определить домены из списка
DOMAINS=("chat.openai.com" )
# Шлюз по умолчанию
GATEWAY="в данном случае inet vtnet0 из ifconfig"
# Получить IP-адреса для каждого домена и добавить маршрутизацию
for DOMAIN in "${DOMAINS[@]}"; do
# Получить IP-адрес домена
IP_ADDRESSES=$(dig +short $DOMAIN | grep [0-9])
# Добавить маршрутизацию для каждого IP
for IP in $IP_ADDRESSES; do
route add $IP $GATEWAY
done
done
Однако на этот раз требуется и IPv6, так что будьте внимательны.
Nginx
Ротация логов Nginx
Я заметил, используя FreeBSD на Vultr, что ротации логов по умолчанию не было, и они переполнялись.
В FreeBSD это можно настроить в /etc/newsyslog.conf, поэтому я добавлю следующее.
/var/log/nginx/access.log root:wheel 640 7 * @T00 Z
/var/log/nginx/error.log root:wheel 640 7 * @T00 Z
Затем переместите файл conf. Это хлопотно, потому что ConoHa блокирует Vultr, но я перешлю его через текущую машину.
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
Удалите /usr/local/etc/nginx по умолчанию и завершите с помощью mv.
Поскольку бэкенд указывает на внутренний IP WireGuard, достаточно просто направить сервер WireGuard на ConoHa со стороны клиента.
Однако на этот раз я планирую использовать ConoHa в качестве NS, так что это действительно хлопотно. Возникает проблема владения более чем 10 доменами...
К счастью, ConoHa предоставляет API для изменения DNS-записей, поэтому я хотел бы создать что-то, что позволит мне массово изменять DNS после завершения этой работы.
Импорт файла зоны | Сайт документации ConoHa
Затем я просто отправлю все статически размещенные файлы и сам почтовый каталог на сторону ConoHa через свою хост-машину... и готово!
Наконец, что касается fail2ban, я сделаю это после того, как будет подтверждена связь со стороны клиента со всеми WireGuard. До скорого.