Настройка Postfix - smtp сервера для электронной почты
Установка Postfix под FreeBSD
Перед установкой требуется остановить установленный по умолчанию sendmail.
Также может понадобиться установить PERL, OpenSSL, MySQL.
Для начала установим Cyrus-SASL. Эта бибилиотека будет использоваться для аутентификации пользователей в postfix.
Будем устанавливать из портов:
cd /usr/ports/security/cyrus-sasl2/
make config && make && make install
в появившейся табличке выбора настроек не забываем указать поддержку MySQL.
Настраиваем SASL:
ee /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
Устанавливаем saslauthd:
cd /usr/ports/security/cyrus-sasl2-saslauthd/
make config && make && make install
Для запуска после перезагрузки добавляем saslauthd_enable="YES" и saslauthd_flags="-a pam -n 0" в файл /etc/rc.conf
Проверить работу saslauthd можно запустив службу:
/usr/local/sbin/saslauthd -a pam -n 0
после чего выполнив команду:
/usr/local/sbin/testsaslauthd -u username -p password
где username и password - логин и пароль реально существующего в системе пользователя.
Результатом выполнения должно быть следующее сообщение:
0: OK "Success."
Теперь переходим к устанавливке postfix из портов:
cd /usr/ports/mail/postfix
make config && make && make install
В появившейся табличке конфигурации выбираем следующие параметры: PCRE, SASL2, TLS, MYSQL, VDA.
Когда выдается сообщение
You need user "postfix" added to group "mail".
Would you like me to add it [y]?
соглашаемся.
Затем появится сообщение
Would you like to activate Postfix in /etc/mail/mailer.conf [n]?
нужно написать yes и нажать клавишу Enter.
Далее необходимо отключить ежедневные задания sendmail:
ee /etc/periodic.conf
куда пишем следующее:
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
после чего сохраняемся и приступаем к конфигурированию postfix. Для этого правим файл /usr/local/etc/postfix/main.cf:
default_privs = nobody
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
mydestination = $myhostname, $mydomain, localhost
local_recipient_maps = unix:passwd.byname $alias_maps
mynetworks_style = class
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_banner = $myhostname ESMTP
smtpd_sasl_auth_enable = yes
message_size_limit = 5242880
Теперь выполняем команду
newaliases
чтобы сформировать базу алиасов, понятную для postfix.
Теперь запускаем postfix командой:
/usr/local/etc/rc.d/postfix start
Далее будем проверять правильность работы нашего вновь установленного почтового сервера postfix с pam авторизацией.
Смотрим лог /var/log/maillog После запуска там должны образоваться строки следующего вида:
Mar 10 15:31:38 prist postfix/postfix-script[10120]: starting the Postfix mail system
Mar 10 15:31:38 prist postfix/master[10121]: daemon started -- version 2.6.5, configuration /usr/local/etc/postfix
Если эти строки есть, то значит postfix удачно запустился. Теперь попробуем локально отправить почту для одного из пользователей системы:
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.gesundes.org.ru ESMTP
EHLO localhost
250-mail.gesundes.org.ru
250-PIPELINING
250-SIZE 5242880
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN
334
AGdlc3UAZ2VzdTgwOA==
235 2.7.0 Authentication successful
mail from:<>
250 2.1.0 Ok
rcpt to:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Hello world again!!!
.
250 2.0.0 Ok: queued as B0F6E580DC7
quit
221 2.0.0 Bye
Connection closed by foreign host.
Текст, выделенный жирным шрифтом, вводится пользователем.
Как можно заметить, в качестве ответа на PLAIN аутентификацию вводится некоторая последовательность символов, которую необходимо сгенерировать:
perl -MMIME::Base64 -e 'print encode_base64("�username�password")'
где нужно поменять username и соответствующий password на значения для какого-нибудь реально существующего в системе пользователя, не забыв поставить ноль в начале. Если у вас пароль начинается с какой либо цифры, то вначале нужно поставить три ноля, к примеру, если пароль 1684, то нужно писать 0001684.
Теперь можно проверить упало ли письмо в ящик того пользователя, которому мы отправляли. Сделать это можно зайдя в директорию /var/mail/ и просмотрев файл с почтой пользователя. К примеру, это можно сделать командой:
ee /var/ mail/username
Если почта пришла, то почтовый сервер postfix был успешно вами настроен. С чем вас и поздравляю!
Теперь хочу обратить ваше внимание на пару мелочей:
- В DNS записи вашего домена должен быть пункт с информацией о почтовом сервере для этого домена (MX), к примеру:
IN MX 1 mail.gesundes.org.ru.
- Желательно протестировать ваш сервер на возможность отправки с него почты без авторизации. Сделать это можно с помощью сайта http://test.nettools.ru/