|
|
Строка 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> = |