Главная > Программы > Postfix Строим почтовый сервер. Postfix+Dovecot+Mysql. Часть Вторая: SMTP серверС pop3/imap сервером мы уже разобрались в прошлой статье, теперь беремся за Posfix. sudo yum install postfix
sudo yum erase sendmail Соглашаемся на установку всех зависимостей и ждем некоторое время, пока все установится. Далеей идем в /etc/postfix и редактируем файлик main.cf queue_directory = /var/spool/postfix
command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix myhostname = mail.example.com #Здесь надо написать FQDN вашего сервера inet_interfaces = all #слушаем на всех интерфейсах #Домены для которых почта доставляется локально: mydestination = $myhostname, localhost.$mydomain, localhost #тут не надо указывать свой домен, он у нас виртуальный unknown_local_recipient_reject_code = 550 #Список своих сетей: mynetworks_style = subnet mynetworks = 192.168.0.254/32, 127.0.0.0/8 #Немного поправим пути к базе алиасов: alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases #Уровень дебага: debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = postdrop 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 address_verify_map = btree:/var/spool/postfix/address_verify # Отключает SMTP команду VRFY. В результате чего, невозможно определить # существование определенного ящика. Данная техника (применение команды # VRFY) используется спамерами для сбора имен почтовых ящиков. disable_vrfy_command = yes smtpd_error_sleep_time = 0 #Сделаем некоторые ограничения на комманды default_process_limit = 2000 smtpd_client_connection_count_limit = 500 bounce_size_limit = 2000 #нтервал времени, в течение которого SMTP клиент должен послать # SMTP команду HELO или EHLO и получить ответ сервера. smtp_helo_timeout = 60s #Тот же принцип что и выше smtpd_timeout = 60s smtp_mail_timeout = 60s smtp_rcpt_timeout = 60s smtpd_client_recipient_rate_limit = 5 #Список виртуальных доменов: virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf virtual_mailbox_base = /var/spool/mail/virtual/ virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf virtual_minimum_uid = 203 virtual_uid_maps = static:203 virtual_gid_maps = static:203 #прикручиваем LDA от Dovecot: virtual_transport = dovecot #Указываем максимальный размер письма. message_size_limit = 31457280 dovecot_destination_recipient_limit = 1 В конец master.cf: # Dovecot LDA
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient} Формируем системные алиасы для этого правим файл /etc/postfix/aliases: # Basic system aliases -- these MUST be present.
MAILER-DAEMON: postmaster postmaster: root webmaster: root abuse: root # trap decode to catch security attacks decode: root root: postmaster@example.com Сохраняем, после этого: sudo postalias /etc/postfix/aliases
Создадим конфигурационные файлы mysql_virtual_domains_maps.cf, mysql_virtual_mailbox_maps.cf, mysql_virtual_alias_maps.cf [den@centos ~]$ sudo vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix password = yourpass hosts = localhost dbname = postfix #query = SELECT domain FROM domain WHERE domain='%s' #optional query to use when relaying for backup MX query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
[den@centos ~]$ sudo vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix password = yourpass hosts = localhost dbname = postfix query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
[den@centos ~]$ sudo vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix password = yourpass hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1' Теперь запускаем postfix и проверяем: [den@centos ~]$ sudo service postfix start
[den@centos ~]$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 mail.example.com ESMTP Postfix Если у вас что-то пошло не так, то читаем логи, там все написано, очень подробно Прикручиваем SASL. В main.cf добавляем: smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_path = private/auth # -------------------------------------- Создаем файл /usr/lib/sasl2/smtpd.conf и наполняем его таким содержимым: pwcheck_method: saslauthd #Вытаскивать пароли используя демон saslauthd
Но останавливаться на этом не стоит, гонять пароли в открытом виде очень небезопасно, поэтому почтовую сессию надо зашифровать, хотя бы для тех кто пересылает почту из интернет. Поэтому прикручиваем к нашему SMTP серверу TLS. sudo openssl req -new -nodes -x509 -out smtpd.pem -keyout smtpd.pem -days 3650
На задаваемые вопросы надо ответить также как отвечали выше. Будьте внимательны на вопрос о Common Name надо ввести FQDN нашего сервера. Дальше в main.cf указываем: # --------------TLS --------------------
smtp_use_tls = yes smtpd_use_tls = yes smtpd_tls_auth_only = no smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/smtpd.pem smtpd_tls_cert_file = /etc/postfix/smtpd.pem smtpd_tls_CAfile = /etc/postfix/smtpd.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom При таком раскладе почтовый клиент будет ругаться на сертификат, так что лучше его купить. Для того чтобы Postfix принимал TLS соединения на отдельный порт 465/SMTPS в master.cf раскомментируем: smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject И перезапустим Postfix. Дальше решаем проблему борьбы со спамом. Copyright © ABC-BIT 2010 19.04.2010
Материал взят с сайта: Главная > Программы > Postfix |