Инструкция по установке 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, если не указано иное
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

Включение TLS

Создайте сертификаты

cd /etc/postfix

openssl req -new -outform PEM -out smtpd.cert \
   -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM \
   -days 365 -x509

Ответьте на появившиеся вопросы

Обновите конфигурацию Postfix

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

Вы можете проверить с помощью telnet доступность порта 25 и выполнение EHLO. Должна появиться строка «STARTTLS»

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

Введите команду

STARTTLS

Результат должен быть

220 2.0.0 Ready to start TLS

Отправка и получение почты через интернет

Отправка почты с помощью telnet

telnet localhost 25
EHLO localhost

MAIL FROM: <youruser@domain.tld> SMTPUTF8
RCPT FROM: <EAI@IDN.idn>
data
Subject: A Test

This is the body

.

Обратите внимание на точку в конце. Она необходима для завершения и отправки сообщения.

На данном этапе убедитесь, что можете отправлять и посылать почту.

Теперь вы можете отправлять почту с помощью интернационализированного адреса, проверьте /var/mail/mail.log, в логе под test@domain.tld находится локальный получатель

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

Почта хранится в /var/mail/ Если вы не получаете почту, используйте онлайн-инструмент, например, mxtoolbox.com, для диагностики проблемы.

Конфигурация Courier authlib, Courier imap

Данные команды запускают imap и pop3

cd /usr/ports/security/courier-authlib
make && make install

cd  /usr/ports/mail/courier-imap
make && make install

Отредактируйте /usr/local/etc/authlib/authdaemonrc и измените метод аутентификации

authmodulelist="authpam"

Добавьте /etc/rc.conf

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"

Задайте конфигурацию Postfix для использования Maildir в качестве почтового хранилища

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

Обновите Skeleton и создайте папку для пользователя, созданного ранее. В данном примере мы использовали пользователя test

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}

Протестируйте imap, pop3

telnet localhost imap
ok login username password
telnet localhost pop3
User username
Pass password

Установите Squirrel-mail

Установите модифицированный Squirrel mail

cd to-your-public-html-filder
wget http://interlab.ait.ac.th/eai-wiki/files/squirrelmail.zip
unzip squirrelmail.zip

Отредактируйте файл конфигурации и измените attachchment_dir и data_dir. Не забудьте создать папки. Измените права пользования на вашего пользователя apache, затем разрешите ему доступ для редактирования.

vi squirrelmail/config/config.php

Зайдите в squirrelmail

http://your-domain/squirrelmail/