Postfix. Простая настройка

Материал из WikiAdmin
(Перенаправлено с Простая настройка Postfix)
Перейти к: навигация, поиск

Описана простейшая настройка Postfix без шифрования, баз данных и т.д. Пользовательские аккаунты берутся из системы.

Содержание

Конфигурация

файл mail.cf

soft_bounce = yes
command_directory = /usr/sbin
myhostname = mail.имя домена
mydomain = имя домена
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = $HOME/Maildir/
mail_spool_directory = /var/spool/mail
debug_peer_level = 1
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_rbl_client dnsbl.njabl.org, reject_rbl_client dnsbl.sorbs.net, reject_rbl_client bl.spamcop.net
sender_bcc_maps = hash:/etc/postfix/mapping
recipient_bcc_maps = hash:/etc/postfix/re_mapping

Строка smtpd_recipient_restrictions дополнена 2 внешними адресами. Это спам-сервисы и каждая почта будет там проверятся. Вам даже нет необходимости ставить антиспам!

Обратите внимание на наличие этих строк:

sender_bcc_maps = hash:/etc/postfix/mapping
recipient_bcc_maps = hash:/etc/postfix/re_mapping

Эти файлы нужно создать. Или удалите их из конфига вообще, если в них нет необходимости. Если зададите

admin admin2

в первом файле, то вся почта с админа будет идти админу2. Это нужно, если человек ушел в отпуск или совсем, а на его почту приходит нужная корреспонденция. Вторая строка показывает как будет пересылать все отправленное админом и на почту админу2. Учтите, что адреса тут разделены не пробелом, а табом! Иначе будет ошибка вываливаться

reject_non_fqdn_sender = yes
reject_unknown_sender_domain = yes
reject_unverified_sender = yes
reject_unauth_destination = yes
reject_unknown_helo_hostname = yes

файл master.cf

smtp      inet  n       -       n       -       -       smtpd 
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
	-o fallback_relay=
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache	  unix	-	-	n	-	1	scache
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
old-cyrus unix  -       n       n       -       -       pipe
  flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient

Просмотр, переотправка и очистка очереди

Иногда нужно посмотреть все, что есть в очереди и по какой причине. Для этого достаточно отдать команду

mailq

Если писем много, можно это все перенаправить в файл для последующего анализа

mailq > error_mails

Очистить очередь postfix просто:

postsuper -d ALL

Пытается доставить письма из очереди

postfix flush

Для отправки писем из очереди можно ещё воспользоваться

postqueue -f

Postfix и 587 порт

Россия - страна парадоксов. Если и решают проблемы, то слишком координально иногда. Простой пример: задолбали уголовные дела по автомобильным подставам - давайте введем обязательное страхование. Часто происходит ДТП - давайте наделаем бугорков (назвать ЭТО лежачими полицейскими просто язык не поворачивается.) Ну а если провайдер борется с рассылкой спама - запретить выход на почтовые сервера на 25 порт. И у пользователей остается на выбор: веб-почта или альтернативный порт.

У меня как раз такое и попалось. Ну что же, а почему бы нам не задействовать 587 порт? В наличии: Postfix, требование работать без шифрования и решить проблему минимальными перенастройками клиентов (в идеале - только смена порта).

Не проблема. Идем в конфигурационный файл Postfix /etc/postfix/master.cf и добавляем в конец сл. строки:

submission inet n       -       n       -       -       smtpd
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o cleanup_service_name=sasl_cleanup

sasl_cleanup   unix  n       -       n       -       0       cleanup
 -o header_checks=regexp:/etc/postfix/sub_header

Теперь создаем файлик /etc/postfix/sub_header и добавляем в него сл. строку:

/^Received: / IGNORE

И перезапускаем postfix:

/etc/init.d/postfix restart

Проверяем открытые порты:

netstat -antpu | grep master

Мы должны получить что-то типа:

tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN      11107/master        
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      11107/master      

Вот в первой строке и видно, что 587 порт открыт. Теперь проверьте, открыт ли он в iptables. Если нет - откройте (это правило есть на странице про правила iptables):

/sbin/iptables -A INPUT -p tcp -m tcp --dport 587 -j ACCEPT

Что нужно поменять в настройках (на примере thunderbird):

  1. Зайти в "Правка" - "Параметры учетной записи"
  2. Далее нужно указать пункт меню "Сервер исходящей почты"
  3. Выставить вместо 25 порта 587.

Все заработало. Если есть вопросы - прошу в обсуждение!

Фильтрация системных аккаунтов

Есть ряд аккаунтов, которым почта не нужна. Но на эти адреса тоннами идет СПАМ. Например, такие записи как daemon, webmaster, adm и т.д. Для того, чтобы очередь не росла, зайдите в файл

/etc/aliases

и укажите вместо

daemon: root

запись

daemon: /dev/null

Весь ненужный спам будет улетать в никуда.


См. так же:

Если эта страница оказалась для вас полезной, нажмите на кнопку. :)
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты