~ Бесконечная восьмерка ~ Перенос среды FreeBSD с Vultr на ConoHa в нетрезвом виде ~ SigningTable, которую нельзя прочитать с помощью подстановочного знака ~

9 min

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

Привет, это продолжение предыдущей части. Заголовок "пьяный", но я уже не пьян.

Не доходит до gmail!

Ох, это проблема.
Борьба, наблюдая за tail -f /var/log/maillog...

opendkim[1853]: can’t load key from /var/db/dkim/eyes4you.org.private: Permission denied

Ой... похоже, не хватает прав.
Я забыл, но пользователь по умолчанию FreeBSD для dmarc/dkimmailnull.

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.
Уже нет смысла скрывать, но это выглядит так.

Image

Исключить часть 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. До скорого.

Related Posts