Настройка 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/