Пытаюсь подтвердить через Mailjet, нужен TXT-файл или запись DNS

Хорошо, я использую Mailjet для SMTP и столкнулся с проблемой валидации. Во-первых, мне не удаётся легко валидировать отдельный адрес электронной почты noreply@discourse.example.com.

Я бы предпочел валидировать домен discourse.example.com, но здесь возникает две проблемы. Я мог бы сделать это с помощью специального текстового файла, но, похоже, Discourse это не позволяет (хотя в данный момент я вполне соблазнен настроить конфигурационный файл nginx, чтобы он возвращал что-то по этому URL). Ладно, может быть, TXT-запись в DNS? И здесь у меня возникают трудности, потому что я управляю DNS домена example.com, и система просит меня добавить запись для по сути mailjet.discourse.example.com, что является поддоменом, и я не совсем понимаю, как это сделать. Я использую BIND 9.3ish на Ubuntu 16.04, и любые подсказки были бы полезны. Я могу найти информацию о том, как добавить TXT-запись для discourse.example.com, но Mailjet говорит, что это не подходит — запись должна быть mailjet_xxxxx.discourse.example.com, то есть для подсети, что, как я понимаю, означает дополнительные зоны. Я не мастер DNS, хотя неплохо справляюсь с установкой сложных систем.

Но сейчас я так запутался, перепробовав всевозможные варианты, что… нужна помощь? То есть, лучшая новость, которую я мог бы услышать, — это если бы кто-то сказал: «Конечно, вы можете поместить текстовый файл в корневой каталог Discourse вот так…» :frowning:

Вы знаете, кто является вашим регистратором домена или менеджером DNS?

Вам нужно будет создать запись DNS в менеджере DNS, предоставляемом регистратором, или, если вы используете что-то вроде Cloudflare, создать записи DNS там.

Недавно столкнулся с этой проблемой. Вот что помогло её решить:

Хорошо, мне удалось заставить работать метод проверки через TXT-файл, несмотря на «ограничения» Discourse. Так что, если вы хотите поступить именно так, чтобы не возиться с настройками DNS (что, э-э-э… для меня куда страшнее, чем правка веб-сервера, хотя, конечно, у всех бывает по-разному).

Вам потребуется возможность редактировать файл конфигурации nginx для вашей установки Discourse. Точное расположение этого файла зависит от того, где и каким способом вы установили Discourse. В моём случае я делал установку на «голое» железо без Docker. Я нашёл его здесь: /etc/nginx/conf.d/discourse.conf — у вас путь может отличаться.

В этом файле будет блок location примерно такого вида:

 location / {
     ....
 }

где также будет множество вложенных директив location.

Создайте новый блок, также вложенный сюда (но не вложенный в другой location!):

location /stupidfilename.txt {
   alias /var/www/stupidfilename.txt;
}

где stupidfilename.txt — это то особое имя файла, которое вам нужно добавить, а PATH (/var/www) — это путь вне директории Discourse, но доступный для URL в целом на сервере. Работает это потому, что / является корнем для Discourse, поэтому URL будет выглядеть так, будто файл находится внутри вашего Discourse: http://discourse.example.com/stupidfilename.txt (пробелы добавлены, чтобы ссылка не активировалась).

Итак… разместите файл вне директории Discourse, настройте location для алиаса на этот файл и перезапустите nginx.

Та-да…

(Я вернулся и отредактировал этот ответ для лучшей читаемости и т.п., так как пометил его как своё решение)

Создание TXT-записи — это проще простого по сравнению с созданием файла в Docker, доступного публично.