Внедрение универсального принятия доменных имен и адресов электронной почты: различия между версиями

Материал из вики.поддерживаю.рф
Перейти к навигации Перейти к поиску
Строка 209: Строка 209:
<pre>
<pre>
saslauthd_enable="YES"
saslauthd_enable="YES"
</pre>
Создайте или отредактируйте /usr/local/lib/sasl2/smtpd.conf . Используете только механизм PLAIN.
<pre>
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
</pre>
Обновите конфигурацию Postfix
sudo postconf -e 'smtpd_sasl_path = smtpd'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
service saslauthd start
sudo postfix reload
<pre>
Создайте пользователя для проверки аутентификации, замените AnyUserName на свое имя.
<pre>
sudo useradd -m AnyUserName  -s /usr/sbin/nologin
sudo passwd AnyUserName
</pre>
Сгенерируйте ключ аутентификации, замените username на свое имя, а yourpassword на свой пароль.
<pre>
perl -MMIME::Base64 -e 'print encode_base64("\000username\000yourpassword")'
</pre>
Замените dGVzdAB0ZXN0AHRlc3Q= на сгенерированный
<pre>
telnet localhost 25
EHLO localhost
AUTH PLAIN dGVzdAB0ZXN0AHRlc3Q=
</pre>
Должно появиться сообщение Authentication successful.
Возможная ошибка: если в сгенерированном base64 есть два символа == в конце строки, терминал может его не принять. Тогда используйте пароль, который не дает в результате два символа == в конце строки.
Завершите конфигурацию Postfix, чтобы только прошедшие аутентификацию пользователи могли отправлять почту через SMTP
<pre>
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'smtpd_sasl_local_domain = $mydomain'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
postconf -e 'smtpd_relay_restrictions =  permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_sender_login_mismatch '
postfix reload
</pre>
</pre>



Версия от 15:22, 20 июня 2022

Универсальное принятие доменных имен и адресов электронной почты

Универсальное принятие (UA) – это состояние, когда все допустимые доменные имена и адреса электронной почты правильно и единообразно принимаются, проверяются, хранятся, обрабатываются и отображаются любым программным обеспечением, системой или устройством.

Сегодня доменные имена могут включать строки доменов верхнего уровня, длина которых превышает длину строк привычных старых доменов (то есть более трех символов). При этом в доменных именах и адресах электронной почты теперь могут использоваться символы из набора Unicode, который гораздо шире традиционного ASCII. При этом перечень доменов верхнего уровня теперь меняется динамически.

Универсальное принятие для системных администраторов

Техническая документация

Настройка EAI почтового сервиса

Инструкция по установке почтового сервера с поддержкой интернационализированных адресов под ОС FreeBSD 10.2

Установка Postfix с расширением SMTPUTF8, Cyrus SASL и OpenSSL

Почтовый сервер: общая информация

С помощью данной инструкции вы сможете установить почтовый сервер, который сможет получать почту с интернационализированных почтовых адресов за счет поддержки расширения SMTPUTF8.

Система поддерживает протоколы IMAP и POP3 при помощи почтового сервера Courier. Пользователи добавляются как локальные, с логином SSH, так и без него. Их почта хранится в папке /home/user.

Используется ОС Freebsd 10.2

Уведомление, требования и первичная установка

  • Убедитесь, что у вас установлена версия Postfix не ниже 3.0
  • Если вы устанавливаете какие-либо компоненты почты после установки сервера, обязательно протестируйте сервер на предмет возврата почты SMTPUTF8.
  • Предварительно необходимо настроить ресурсные записи DNS, имя хоста – это имя вашего домена (например, domain.com )
  • mail.hostname – это имя вашего почтового сервера (например, mail.domain.com)

Необходим рабочий сервер FreeBSD с аккаунтом root (привилегии sudo)

  • Установка функционирует как root, если не указано иное
Update your hostname 

Если вы используете интернационализированный домен, используйте эквивалент в кодировке punycode. Например, mail.ёпочта.рф в кодировке punycode выглядит как mail.xn--80a1acny1d.xn--p1ai

vi /etc/hostname

ОБНОВИТЕ имя хоста для почтового сервера на ВАШЕ

mail.domain.com

Перезагрузите сервер для обновления имени хоста.

После перезагрузки команда ниже покажет ваше имя хоста mail.domain.com

hostname

Установите Postfix из репозитария и необходимые библиотеки (Cyrus SASL, OPENSSL)

Найдите версию Postfix 3.0.1 или выше чтобы можно было активировать расширение SMTPUTF8. Ссылка для скачивания: http://www.postfix.org/download.html. В примере ниже мы работаем с postfix-3.0.1.tar.gz, ваша версия может отличаться. Установив Postfix с помощью apt-get, вы получите более раннюю версию, которая еще не поддерживает SMTPUTF8. В будущем это может измениться.

Установите необходимые библиотеки с помощью портов с опциями по умолчанию

cd /usr/ports/security/openssl 
make && make install

cd /usr/ports/security/cyrus-sasl2
make && make install

cd /usr/ports/devel/icu
make && make install
Refresh your environment

Создайте необходимых пользователей и права на использование каталога

pw groupadd postfix -g 32 
pw groupmod mail -m postfix
pw groupadd postdrop 
pw useradd postfix -c "Postfix Daemon User" -d /var/spool/postfix -g postfix  -s /bin/false -u 32  
chown -v postfix:postfix /var/mail

Скачайте Postfix 3.x.x или более позднюю версию и скомпилируйте с openssl и sasl auth

tar -xzvf postfix-3.0.1.tar.gz
cd postfix-3.0.1
make CCARGS="-DUSE_TLS -I/usr/include/openssl/   -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl" AUXLIBS="-lssl -lcrypto -lsasl2" makefiles 
make

Установите Postfix

sh postfix-install -non-interactive   daemon_directory=/usr/lib/postfix  \
                    manpage_directory=/usr/share/man  \
                    html_directory=/usr/share/doc/postfix-3.0.1/html  \
                    readme_directory=/usr/share/doc/postfix-3.0.1/readme

Отредактируйте или обновите /etc/rc.conf как указано ниже

postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

Отредактируйте, создайте или обновите /etc/periodic.conf

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

Отключите sendmail и запустите postfix

service sendmail stop
postfix start

Конфигурация Postfix

Измените mail.domain.tld, domain.tld, yourotherdomain.tld

postconf -e 'myhostname  = mail.domain.tld'
postconf -e 'mydomain    = domain.tld'
postconf -e 'myorigin    = $mydomain'
postconf -e 'inet_interfaces = all'
postconf -e 'mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24'
postconf -e 'alias_database = hash:/etc/aliases'
postconf -e 'alias_maps = hash:/etc/aliases'
postconf -e 'mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, yourotherdomain.tld'
postconf -e 'smtputf8_enable = yes'
postfix reload

@TODO

Enable Postfix as service and run at startup

Попробуйте отправить письмо с помощью Telnet и отправьте письмо на внешний сервер (например, Gmail)

Проверка, что SMTPUTF8 активирован

Введите команду для подключения к SMTP

telnet localhost 25

Результат должен быть следующий:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 YourHostName ESMTP Postfix

Введите следующий текст и нажмите Enter

EHLO localhost

Если в ответе вы видите 250 SMTPUTF8, то ваш сервер может отправлять и получать почту с интернационализированных адресов

250-YourHostName
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8

Если вы не видите 250 SMTPUTF8, попробуйте удалить Postfix и повторите описанную процедуру установки. Возможно, вы установили компонент, который установил старую версию Postfix.

Включение SMTP Auth

Установите saslauthd с настройками по умолчанию

cd /usr/ports/security/cyrus-sasl2-saslauthd
make && make install

Отредактируйте /etc/rc.conf

saslauthd_enable="YES"

Создайте или отредактируйте /usr/local/lib/sasl2/smtpd.conf . Используете только механизм PLAIN.

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

Обновите конфигурацию Postfix sudo postconf -e 'smtpd_sasl_path = smtpd' sudo postconf -e 'smtpd_sasl_auth_enable = yes' service saslauthd start sudo postfix reload


Создайте пользователя для проверки аутентификации, замените AnyUserName на свое имя.

<pre>
sudo useradd -m AnyUserName  -s /usr/sbin/nologin
sudo passwd AnyUserName

Сгенерируйте ключ аутентификации, замените username на свое имя, а yourpassword на свой пароль.

perl -MMIME::Base64 -e 'print encode_base64("\000username\000yourpassword")'

Замените dGVzdAB0ZXN0AHRlc3Q= на сгенерированный

telnet 	localhost 25
EHLO localhost
AUTH PLAIN dGVzdAB0ZXN0AHRlc3Q=

Должно появиться сообщение Authentication successful.

Возможная ошибка: если в сгенерированном base64 есть два символа == в конце строки, терминал может его не принять. Тогда используйте пароль, который не дает в результате два символа == в конце строки.

Завершите конфигурацию Postfix, чтобы только прошедшие аутентификацию пользователи могли отправлять почту через SMTP

postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'smtpd_sasl_local_domain = $mydomain'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
postconf -e 'smtpd_relay_restrictions =  permit_mynetworks permit_sasl_authenticated reject_unauth_destination reject_sender_login_mismatch '
postfix reload

Универсальное принятие для разработчиков

Техническая документация

Разработчики, внедряющие в своих программных продуктах поддержку интернационализированных доменных имен и адресов электронной почты, могут получить тестовые кириллические адреса электронной почты для опытной эксплуатации и проведения тестирования — заявка на предоставление тестового кириллического email адреса

Тестирование ПО на соответствие универсальному принятию

Разработчики могут проанализировать свои продукты на соответствие критериям универсального принятия и получить подтверждение такого соответствия:

Тренинги по внедрению поддержки IDN и EAI

Обучающие семинары и тренинги