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

Материал из вики.поддерживаю.рф
Перейти к навигации Перейти к поиску
Строка 15: Строка 15:
== Настройка EAI почтового сервиса ==
== Настройка EAI почтового сервиса ==


=== Инструкция по установке почтового сервера с поддержкой интернационализированных адресов под ОС FreeBSD 10.2 ===
[[Инструкция по установке почтового сервера с поддержкой интернационализированных адресов под ОС 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, если не указано иное
 
<pre>
Update your hostname
</pre>
 
''Если вы используете интернационализированный домен, используйте эквивалент в кодировке punycode.''
Например, mail.ёпочта.рф в кодировке punycode выглядит как mail.xn--80a1acny1d.xn--p1ai
<pre>
vi /etc/hostname
</pre>
 
ОБНОВИТЕ имя хоста для почтового сервера на ВАШЕ
<pre>
mail.domain.com
</pre>
 
Перезагрузите сервер для обновления имени хоста.
 
После перезагрузки команда ниже покажет ваше имя хоста mail.domain.com
 
<pre>
hostname
</pre>
 
==== Установите 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. В будущем это может измениться.
 
Установите необходимые библиотеки с помощью портов с опциями по умолчанию
 
<pre>
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
</pre>
 
<pre>
Refresh your environment
</pre>
 
Создайте необходимых пользователей и права на использование каталога
 
<pre>
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
</pre>
 
Скачайте Postfix 3.x.x или более позднюю версию и скомпилируйте с openssl и sasl auth
 
<pre>
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
</pre>
 
Установите Postfix
 
<pre>
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
</pre>
 
Отредактируйте или обновите /etc/rc.conf как указано ниже
 
<pre>
postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
</pre>
 
Отредактируйте, создайте или обновите /etc/periodic.conf
 
<pre>
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
</pre>
 
Отключите sendmail и запустите postfix
 
<pre>
service sendmail stop
postfix start
</pre>
 
==== Конфигурация Postfix ====
 
Измените mail.domain.tld, domain.tld, yourotherdomain.tld
 
<pre>
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
</pre>
 
@TODO
 
<pre>
Enable Postfix as service and run at startup
</pre>
 
Попробуйте отправить письмо с помощью Telnet и отправьте письмо на внешний сервер (например, Gmail)
 
==== Проверка, что SMTPUTF8 активирован ====
 
Введите команду для подключения к SMTP
 
<pre>
telnet localhost 25
</pre>
 
Результат должен быть следующий:
 
<pre>
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 YourHostName ESMTP Postfix
</pre>
 
Введите следующий текст и нажмите Enter
 
<pre>
EHLO localhost
</pre>
 
Если в ответе вы видите '''250 SMTPUTF8''', то ваш сервер может отправлять и получать почту с интернационализированных адресов
 
<pre>
250-YourHostName
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
</pre>
 
Если вы не видите 250 SMTPUTF8, попробуйте удалить Postfix и повторите описанную процедуру установки. Возможно, вы установили компонент, который установил старую версию Postfix.
 
==== Включение SMTP Auth ====
 
Установите saslauthd с настройками по умолчанию
 
<pre>
cd /usr/ports/security/cyrus-sasl2-saslauthd
make && make install
</pre>
 
Отредактируйте /etc/rc.conf
 
<pre>
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>
 
==== Включение TLS ====
 
Создайте сертификаты
 
<pre>
cd /etc/postfix
 
openssl req -new -outform PEM -out smtpd.cert \
  -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM \
  -days 365 -x509
</pre>
 
Ответьте на появившиеся вопросы
 
Обновите конфигурацию Postfix
 
<pre>
postconf -e 'smtpd_enforce_tls = no'
postconf -e 'smtpd_tls_security_level = may'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtpd_tls_key_file  = /etc/postfix/smtpd.key'
postconf -e 'smtpd_tls_cert_file  = /etc/postfix/smtpd.cert'
postfix reload
</pre>
 
Вы можете проверить с помощью telnet доступность порта 25 и выполнение EHLO. Должна появиться строка «STARTTLS»
 
<pre>
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
</pre>
 
Введите команду
 
<pre>
STARTTLS
</pre>
 
Результат должен быть
 
<pre>
220 2.0.0 Ready to start TLS
</pre>
 
==== Отправка и получение почты через интернет ====
 
Отправка почты с помощью telnet
 
<pre>
telnet localhost 25
EHLO localhost
 
MAIL FROM: <youruser@domain.tld> SMTPUTF8
RCPT FROM: <EAI@IDN.idn>
data
Subject: A Test
 
This is the body
 
.
</pre>
 
Обратите внимание на точку в конце. Она необходима для завершения и отправки сообщения.
 
На данном этапе убедитесь, что можете отправлять и посылать почту.
 
Теперь вы можете отправлять почту с помощью интернационализированного адреса, проверьте /var/mail/mail.log, в логе под test@domain.tld находится локальный получатель
 
<pre>
Aug  3 02:48:49 ip-172-31-21-209 postfix/local[21614]: 7EAD343550: to=<test@domain.tld>, relay=local, delay=0.62, delays=0.62/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Aug  3 02:48:49 ip-172-31-21-209 postfix/qmgr[21586]: 7EAD343550: removed
</pre>
 
Почта хранится в /var/mail/ Если вы не получаете почту, используйте онлайн-инструмент, например, mxtoolbox.com, для диагностики проблемы.
 
==== Конфигурация Courier authlib, Courier imap ====
 
Данные команды запускают imap и pop3
 
<pre>
cd /usr/ports/security/courier-authlib
make && make install
 
cd  /usr/ports/mail/courier-imap
make && make install
</pre>
 
Отредактируйте /usr/local/etc/authlib/authdaemonrc и измените метод аутентификации
 
<pre>
authmodulelist="authpam"
</pre>
 
Добавьте /etc/rc.conf
 
<pre>
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
courier_imap_imapd_ssl_enable="YES"
courier_imap_pop3d_enable="YES"
courier_imap_pop3d_ssl_enable="YES"
</pre>
 
Задайте конфигурацию Postfix для использования Maildir в качестве почтового хранилища
 
<pre>
postconf -e 'home_mailbox = Maildir/'
service courier-authdaemond start
service courier-imap-imapd
service courier-imap-imapd-ssl
service courier-imap-pop3d
service courier-imap-pop3d-ssl
 
service courier-imap-imapd start
service courier-imap-imapd-ssl start
service courier-imap-pop3d start
service courier-imap-pop3d-ssl start
postfix reload
</pre>
 
Обновите Skeleton и создайте папку для пользователя, созданного ранее. В данном примере мы использовали пользователя test
 
<pre>
mkdir -p /usr/share/skel/Maildir/{cur,new,tmp}
 
mkdir -p /home/test/Maildir/{cur,new,tmp}
chown test:test /home/test/Maildir/{,cur,new,tmp}
chmod 0700 /home/test/Maildir/{,cur,new,tmp}
</pre>
 
==== Протестируйте imap, pop3 ====
 
<pre>
telnet localhost imap
ok login username password
</pre>
 
<pre>
telnet localhost pop3
User username
Pass password
</pre>
 
==== Установите Squirrel-mail ====
 
Установите модифицированный Squirrel mail
 
<pre>
cd to-your-public-html-filder
wget http://interlab.ait.ac.th/eai-wiki/files/squirrelmail.zip
unzip squirrelmail.zip
</pre>
 
Отредактируйте файл конфигурации и измените '''attachchment_dir''' и '''data_dir'''. Не забудьте создать папки.
Измените права пользования на вашего '''пользователя apache''', затем разрешите ему доступ для редактирования.
 
<pre>
vi squirrelmail/config/config.php
</pre>
 
Зайдите в squirrelmail
 
<pre>
http://your-domain/squirrelmail/
</pre>


= <strong>Универсальное принятие для разработчиков</strong> =
= <strong>Универсальное принятие для разработчиков</strong> =

Версия от 11:42, 21 июня 2022

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

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

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

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

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

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

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

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

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

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

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

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

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

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