Перейти к содержимому

Установка сервера Postfix

На правах комментария — почему postfix, собственно почему бы и нет, тот же функционал может исполнять любой из популярных почтовых серверов, но postfix популярен, прост в настройке и установке, безопасен.

Выполняем следующую команду:

cd /usr/ports/mail/postfix

Если в ответ Вы получите сообщение /usr/ports/mail/postfix: No such file or directory. Значит жадные создатели сервера установили вам систему без портов (файлов, которые описывают, где искать исходные тексты программ, как их видоизменять), тогда выполняем следующую команду:

portsnap fetch && portsnap extract

На самом деле это две команды, первая из них закачает на ваш VPS актуальное дерево портов, вторая положит его в нужные папки. Команда долгая (зависит от скорости сети и жесткого диска), так что время попить кофе у вас есть, если порты есть (не было вывода об ошибке) — сразу идем дальше.

Просим при сборке не приставать к нам с лишними вопросами - набираем:

make -DBATCH install clean

и собрать все по умолчанию (умолчания для нас — удачны). Собственно опять время пить кофе или заниматься работой - минут 10 минимум эта команда будет исполняться, а на бюджетном VPS и час. Следить за процессом компиляции необязательно.

По окончании процесса компиляции выключим запуск почтового сервера по умолчанию (sendmail) и скажем стартовать по умолчанию postfix:

echo -e " sendmail_enable="NO"n sendmail_submit_enable="NO"n
sendmail_outbound_enable="NO"n
sendmail_msp_queue_enable="NO"npostfix_enable="YES"n " >> /etc/rc.conf

Сейчас самое время написать письмо провайдеру, который поддерживает ваши DNS зоны (описание вашего домена - где какой сервер) , что вы просите создать запись inmx.domain.tld типа A с IP адресом вашего VPS сервера (domain.tld заменяете на ваш домен) и провайдеру вашего VPS с просьбой занести соответствующую обратную запись IP адреса на inmx.domain.tld. (возможно в одном или обоих случаях вы можете сделать это самостоятельно через панель управления). Заставим самосознание сервера запомнить это имя:

echo hostname=inmx.domain.tld.>> /etc/rc.conf

Пока провайдеры читают письма и исполняют поручение, установим очень простое, и в то же самое время эффективное решение для борьбы со спамом - "серые листы" (postgree). Действует это следующим образом, когда кто — то первый раз за несколько дней пишет вам письмо, то его письмо не принимается с сообщением, имеющим смысл «у нас что — то не так работает, повторите посылку через несколько минут». Трюк в том, что большинство спаммерских программ не повторяют посылку. Если через 5 или более минут тот же сервер, перешлет письмо тому же получателю от имени того же клиента, то это письмо нормально пройдет (технологию можно будет отключить для тех адресов, владельцы которых достаточно нервны, чтобы не подождать лишние 5-10 минут важного письма и для постоянных партнеров, указав их в специальном файле). Укажем собирать и разрешить автостарт:

cd /usr/ports/mail/postgrey/ && make install clean && echo postgrey_enable="YES" >> /etc/rc.conf

Создадим минимальный стартовый конфиг постфикса в качестве сервера, передающего почту на наш сервер: вам придется изменить этот конфиг, возможно ввести в него некоторые изменения (пояснения о том, что менять — ниже):

smtpd_client_message_rate_limit = 10
smtpd_client_connection_rate_limit = 10
default_process_limit = 100
bounce_queue_lifetime = 2h
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
mail_owner = postfix
transport_maps = hash:/usr/local/etc/postfix/transport
myhostname = inmx.domain.tld
inet_interfaces = all
local_recipient_maps = unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks_style = host
relay_domains = /usr/local/etc/postfix/relay-domains
smtpd_recipient_restrictions=
reject_rbl_client bl.spamcop.net
reject_rbl_client b.barracudacentral.org
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10023
reject_unknown_sender_domain,
reject_unknown_recipient_domain,

Что и когда следует менять в тексте:

  1. (обязательное изменение) .
    Cтрока myhostname = inmx.domain.tld надо заменить на:
    myhostname = «имя хоста, которое Вы писали провайдеру»;
  2. Параметры фильтрации спама (просто удаляйте строку, если Вы считаете, что эта опция вам не нужна). Если строчка не описана — она является обязательной для «простого» конфига.
    reject_rbl_client bl.spamcop.net — запрет попыток работы с хостами, которые внесены в базу спаммерских активных сервисом spamcop.net. Попадание нормального (не взломанного спаммерами и не лояльного к ним сервера в эту базу)  крайне редкий случай;
    reject_rbl_client b.barracudacentral.org — то же, что предыдущий пункт, но иная база (базы частично пересекаются);
    reject_unknown_sender_domain, — не принимать почту в тех случаях, когда отправитель указал как обратный адрес несуществующий почтовый домен;
    reject_invalid_hostname - не принимать почту от серверов, которые не верно представляются (указывают не корректное доменное имя).

Составив текст выполните следующие команды:

cd /usr/local/etc/postfix&& rm main.cf; ee main.cf

Вы окажетесь в простейшем текстовом редакторе, куда надо скопировать ваш текст, чтобы выйти из редактора — нажмите ESC и «Save chanches»

Теперь заполним второй конфиг: куда передавать почту после ее приема:

rm transport; ee transport ; postmap trasport

Файл заполняется так: domain.tld smtp:[office.domain.tld]
где domain.tld — Ваш домен, а office.domain.tld — Интернет имя Вашей машины в офисе (domain.tld может быть разным для двух случаев). Строка повторяется для каждого домена, почта которого должна проходить через этот сервер (один домен — одна строка).

Следующим этапом правим конфиги Серых списков (точнее обнуляем исключения):

cat /dev/null > /usr/local/etc/postfix/postgrey_whitelist_clients && cat /dev/null > /usr/local/etc/postfix/postgrey_whitelist_recipients

Убиваем базу соответствий:

cd /etc/ && cat /dev/null > /etc/aliases && echo abuse:root > aliases && postalias aliases

Первичная настройка закончена. Отправьте машину в перезагрузку:

shutdown -r now

После перезагрузки (обычно для VPS это 2-3 минуты), надо проверить, что вся эта конструкция работает. На своей Windows машине (в офисе) выполняем команду:

telnet  имя_созданного_сервера.ru

Там набираем команду:

HELO

в ответ получим: 250 имя вашего сервера

MAIL FROM: ttt@test.com.

Ответ должен быть: OK ....

RCPT TO: user@domain.tld.

В ответ вы должны получить что-то вроде: 450

В случае ответа: 4.2.0 <ttt@test.com>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/

следует понимать, что сработал "серый список", в базу занесено, что была попытка вашего IP послать письмо от пользователя ttt@test.com пользователю user@domain.tld. Если попытка будет повторена через 5 или более минут — серый лист пропустит письмо. Набираем:

QUIT

Ждем 5 минут и повторяем попытку. Теперь после команды RCPT TO: user@domain.tld, вы должны увидеть ответ: 250 OK.

После чего наберите команду:

DATA

Ответ должен быть: 354 End data with <CR><LF>.<CR><LF>.

На следующей строке — одну "точку" и Enter:

.

Сервер должен ответить: 250 2.0.0 Ok: queued as 75F752E123.

Вводите команду QUIT и проверяйте свой ящик (тот который user@domain.tld) — там должно быть пустое письмо от ttt@test.com. Если так — со спокойной совестью просите провайдера (или меняете сами через панель) поменять MX запись для вашего домена (т. е. указание сервера, отвечающего за почту) на inmx.domain.tld (то есть имя сервера, которое Вы создали).

Осталось немного рассказать о простейшей диагностике и донастройке под требования антиспама 🙂

 

Добавить комментарий