Конфигурация postfix
crash
🕛 12.01.2007, 12:29
Подробнее о postfix можно узнать на http://www.postfix.orgНиже описан процесс инсталляции и конфигурации.
Так как я больше занимаю FreeBSD, то я напишу как ставит на ней.
# cd /usr/ports/mail/postfix
# make all install
После установки советую прочесть файл /usr/ports/mail/postfix/pkg-message в котором описано как сделать, чтобы postfix был MTA по умолчанию:
To enable postfix rcNG startup script please add postfix_enable="YES" in
your rc.conf
If you not need sendmail anymore, please add in your rc.conf:
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
And you can disable some sendmail specific daily maintenance routines in your
/etc/periodic.conf file:
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
If you are using SASL, you need to make sure that postfix has access to read
the sasldb file. This is accomplished by adding postfix to group mail and
making the /usr/local/etc/sasldb* file(s) readable by group mail (this should
be the default for new installs).
If you are upgrading from postfix version prior to 2.0, please see the README
files for recommended changes to your configuration.
Сам конфигурационный файл очень простой. Вот пример рабочего файла (возможно вам придется поенять пути):
# /usr/local/etc/postfix/main.cf
# Config file for postfix mail system.
#
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
default_privs = nobody
#Обманываем всех об установленном МТА
mail_name = MDaemon 7.1.2
#Хост вашего почтового сервера
myhostname = host.domain.ru
#Имя домена
mydomain = domain.ru
# Каким сетям мы разрешаем слать через нас почту
mynetworks = 192.168.0.0/16, 127.0.0.0/8, 10.64.0.0/16, 10.150.0.0/16, 10.151.0.0/16, 10.152.0.0/16
#Максимальный размер одного письма
message_size_limit = 12000000
smtp_host_lookup = native, dns
myorigin = $mydomain
inet_interfaces = $myhostname, localhost
mydestination = $myhostname, localhost.$mydomain, $mydomain, diamondmir.local
relay_domains = $mydestination
default_transport = smtp
#Указываем в этом файле как отсылать почту для конкретного домена.
transport_maps = hash:/usr/local/etc/postfix/transport
alias_database = hash:/etc/aliases # Указываем файл aliases
mailbox_command = /usr/local/bin/procmail
#тоже самое что и aliases
virtual_maps = hash:/usr/local/etc/postfix/virtual
relocated_maps = hash:/usr/local/etc/postfix/relocated
header_checks = regexp:/usr/local/etc/postfix/header_checks
body_checks = regexp:/usr/local/etc/postfix/body_checks
#Запрашиваем HELO/EHLO при соединение с нашим сервером.
#Если у имени, которое нам сказали нет MX или А запись то пусть гуляют.
smtpd_helo_required = yes
strict_rfc821_envelope = yes
smtpd_helo_restrictions = permit_mynetworks,reject_unknown_hostname,reject_invalid_hostname,reject_non_fqdn_hostname
#Почту для несуществующих пользователе перенаправить по адресу, указанному в luser_relay.
#Если пользователь не сущесвтуе и был отлуп при RCPT,
#то расскоментируем первую строку и коментируем 2 и 3 строку.
#На самом деле я здесь сделал бяку, только никому не говорите)
#local_recipient_maps = $alias_maps unix:passwd.byname
local_recipient_maps =
luser_relay = kolesov@domain.ru
queue_run_delay = 1000
maximal_queue_lifetime= 1
bounce_queue_lifetime = 1
minimal_backoff_time = 1000
maximal_backoff_time = 4000
#При телнете на 25 порт, увидят эту надпись. Пусть ломают винду)
smtpd_banner = $myhostname MDaemon 7.1.2 on Windows 2000 Server READY
smtpd_client_restrictions = permit_mynetworks
smtpd_sender_restrictions = hash:/usr/local/etc/postfix/access
permit_mynetworks
check_relay_domains
reject_unknown_address
reject_invalid_hostname
reject_non_fqdn_sender
reject_invalid_hostname
reject
smtpd_recipient_restrictions = regexp:/usr/local/etc/postfix/regexp_access
permit_mynetworks
check_relay_domains
permit_mx_backup
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unknown_sender_domain
reject_unknown_client
reject
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
debug_peer_level = 3
debug_peer_list =
debugger_command =
PATH=/usr/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
host.domain.ru следует сменить на имя вашего хоста, domain.ru на имя вашего домена.
Если вы будете отправлять почту через smtp Вашего хостера, то в файл main.cf надо добавить строку relayhost = relay1.yourprovider.com.
Для работы postfix, нам необходим файл master.cf:
# /usr/local/etc/postfix/master.cf
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ==========================================================================
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
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
smtp unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
cyrus unix - n n - - pipe
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
uucp unix - n n - - pipe
flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
filter unix - n n - - pipe
relay unix - - n - - smtp
flush unix n - n 1000? 0 flush
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
proxymap unix - - n - - proxymap
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
discard unix - - n - - discard
tlsmgr unix - - n 1000? 1 tlsmgr
Вот собственно и все. После этого мы запускаем postfix и смотрим что творится в логах.
#tail -f /var/log/mailllog
Вот пример файла transport, для отправки почты в локальной сети не через Internet, а сразу на сервер по локалке:
mgok.alrosa-mir.ru smtp:10.64.40.16:25
host1.domain.ru smtp:10.64.48.16:25
host2.domain.ru smtp:10.64.64.16:25
host3.domain.ru smtp:10.64.76.16:25
host4.domain.ru smtp:10.64.80.16:25
host5.domain.ru smtp:10.151.20.16:25
host6.domain.ru smtp:10.151.60.16:25
host7.domain.ru smtp:10.152.24.16:25
host8.domain.ru smtp:10.152.44.16:25
host9.domain.ru smtp:192.168.2.10:25
PS. Для того чтобы сделать hash файла надо сделать комнаду postmap filename. Пример файл transport: postmap transport.
Перезагрузка postfix: postfix reload.