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