Настройка почтовой системы на основе Postfix.

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение mr. brightside » 2012-10-18 17:29:17

На сайт статью не добавить, пишу сюда. Кроме того у меня есть вопросы, которые буду описаны в соответствующем блоке, на которые хотелось бы получить ответ от знатоков.

Ниже приводится инструкция для настройки почтовой системы в следующей связке:

Postfix + Dovecot + SpamAssassin + ClamAV + PostGrey + TLS + MySQL + LDAP

Подробные версии пакетов:
  • postfix-2.9.3,1
    dovecot-1.2.17 (+ dovecot-sieve + dovecot-lda + dovecot-sasl)
    clamav-0.97.5_1
    clamsmtp-1.10_3
    p5-Mail-SpamAssassin-3.3.2_6 (+ DCC + Pyzor + Razor)
    mysql-server-4.1.25
    postgrey-1.34_4
    openssl-1.0.1_4
    openldap-sasl-server-2.4.31
Авторизация всех пользователей (как для POP3, так и для SMTP) проводится через LDAP с TLS. В MySQL хранятся данные SpamAssassin.

Документация про каждую софтину будет приводится по ходу статьи. В конце статьи будут указаны полезные источники.

Перед началом

Перед началом настройки примем следующие данные за основу. Эти данные будут меняться в зависимости от своей среды (имя домена, ip-адрес внутренний, ip-адрес внешний, имя хоста):
  • Локальный ip-адрес: 192.168.0.90
    Имя домена: mydomain.com
    Имя хоста (с именем домена): mail.mydomain.com
Все установки производились из портов.

Описание установки будет приведено с полным содержанием конфигурационных файлов, описанием всех опций в каждом конфигурационном файле и также с описанием всех действий.

Также надо отметить, что стандартные комментарии во всех конфигурационных файлах удалены и оставлены лишь параметры для настройки. Также удалены ненужные строки из конфигурационных файлов и оставлены лишь те строки, которые дают требуемый функционал. При этом, каждый параметр (или группа параметров) прокомментированы – зачем нужен тот или иной параметр и что он регулирует.

Также, по настройке конфигурационных файлов будут приводиться ссылки на маны или другую документацию.

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

Установка LDAP-server

Почему LDAP?

1. Вся адресная книга может храниться в LDAP. Это позволяет контакты всей организации в одном месте и подключаться к ней с любого компьютера. При этом можно не бояться, что система на клиенте «полетит» и все контакты будут утеряны.
2. При этом можно проводить репликацию между LDAP-серверами, что предоставляет прекрасную отказоустойчивость и безопасность.
3. Ldap-сервер легко масштабируем, прост в администрировании и настройке.

Итак, поехали: установка.

Код: Выделить всё

# cd /usr/ports/net/openldap24-server
# make config
Выбираем следующие опции:
  • BDB
    DYNAMIC_BACKENDS
    SEQMOD
    SYNCPROV
    TCP_WRAPPERS

Код: Выделить всё

# make install clean
После установки вы получите следующее сообщение в консоли:

Код: Выделить всё

************************************************************
The OpenLDAP server package has been successfully installed.

In order to run the LDAP server, you need to edit
  /usr/local/etc/openldap/slapd.conf
to suit your needs and add the following lines to /etc/rc.conf:
  slapd_enable="YES"
  slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/"'
  slapd_sockets="/var/run/openldap/ldapi"

Then start the server with
  /usr/local/etc/rc.d/slapd start
or reboot.

Try `man slapd' and the online manual at
  http://www.OpenLDAP.org/doc/
for more information.

slapd runs under a non-privileged user id (by default `ldap'),
see /usr/local/etc/rc.d/slapd for more information.
************************************************************
Начинаем плясать от этого. Конфигурируем.
Требуемые нам файлы конфигурации находятся в трех папках:
  • /etc/rc.conf
    /usr/local/etc/openldap/slapd.conf
    /usr/local/etc/openldap/ldap.conf
Документация

Требуемые маны по настройке:

Код: Выделить всё

# man ldap.conf
# man slapd.conf
Официальный сайт: http://www.openldap.org/
Начнем с rc.conf. Добавим в него следующие строки:

Код: Выделить всё

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://localhost/ ldap://192.168.0.90/"'
Теперь откроем ldap.conf. Наш файл будет следующего содержания:

Код: Выделить всё

#Корень сервера

BASE    dc=mydomain,dc=com

#адрес, куда подключаться нашему серверу. Можно указывать в виде имени

URI     ldap://127.0.0.1/
Дополнительные параметры для файла ldap.conf и их описание можно посмотреть набрав команду:

Код: Выделить всё

# man ldap.conf
Теперь откроем slapd.conf. Сделаем его следующего содержания:

Код: Выделить всё

#Тут идут подключения различных схем. Последняя схема качается отсюда 
#(http://www.lissyara.su/articles/freebsd/mail/postfix+dovecot+spamassasin+clamav+ldap+mysql/).
# Там же будут лежать файлы для заполнения БД данными

include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/openldap.schema
include         /usr/local/etc/openldap/schema/postfix.schema

#Уровень логирования

loglevel        256

#максимальное количество сообщений, возвращаемых при поиске

sizelimit       500

#Количество секунд, в течение которых сервер будет пытаться обработать запрос

timelimit       3600

#Через сколько секунд сбрасывать зависшее соединение

idletimeout     5

#Различные файлики

pidfile   		    /var/run/openldap/slapd.pid
argsfile    		    /var/run/openldap/slapd.args
modulepath  	    /usr/local/libexec/openldap
logifile		    /var/log/openldap/slapd.log

#Модуль какой БД загружать

moduleload      back_bdb

#Сразу на будущее настраиваем права доступа к разделам наших контейнеров

access to *
        by self write
        by users read
        by anonymous auth
access to dn.children="ou=accounts,dc=mydomain,dc=com"
        by dn="cn=vmail,ou=accounts,dc=mydomain,dc=com" read
        by anonymous auth

#Как хранить пароли в базе

password-hash {CLEARTEXT}

#БД для хранения

database        bdb

#Суффикс для базы

suffix          "dc=mydomain,dc=com"

#рутовая запись для ldap-сервера. Это главный юзер, наш админ

rootdn          "cn=test,dc=mydomain,dc=com"

#Пароль в хеше

rootpw          {MD5}I8FDgI7m39sARCwYJMawkQ==

#Где хранить данные?

directory       /var/db/ldapdatabase

#Как индексировать данные?

index   objectClass     eq
Теперь настроим логирование для нашего сервера. По умолчанию логи выводятся на сислог, в терминал.
Для перенастройки нам надо добавить следующую строку в syslog.conf (не забываем предварительно создать директорию openldap в /var/log):

Код: Выделить всё

local4.*                                        /var/log/openldap/slapd.log
рестартуем:

Код: Выделить всё

#/etc/rc.d/syslogd restart
После этого в лог должна начать сыпаться информация.

Примечание: Пароль для rootpw можно сгенерировать при помощи следующей команды:

Код: Выделить всё

# slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}CY9rzUYh03PK3k6DJie09g==
Последнюю строку копируем в rootpw. О других схемах шифрования смотрите в man spappasswd.

После этого запустим наш сервер LDAP:

Код: Выделить всё

# /usr/local/etc/rc.d/slapd start
Здесь же можете сразу посмотреть в лог-файл, - он должен содержать информацию о первом запуске.

Проверяем, запустился ли наш сервер (должны получить что то такое):

Код: Выделить всё

#ps –axuw | grep slap
ldap         79143   0.0  0.8 406560  16660  ??  Ss   Thu11AM      0:09.44 /usr/local/libexec/slapd -h ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://localhost
Теперь переходим к наполнению базы.

Создадим в системе группу и пользователя vmail - через этого юзера мы будем подключаться к LDAP для считывания информации об аккаунтах.

Код: Выделить всё

# pw add group vmail
# pw adduser vmail -g vmail -d /nonexistent -c "Virtual Mail Accounts" -s /sbin/nologin
# passwd vmail
Задаем пароль. Теперь создаем где-нибудь файлик с расширением .ldif и наполняем его следующим содержимым:

Код: Выделить всё

dn: dc=mydomain,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: mydomain.com
description: My Organization
businessCategory: Form of Organization
telephoneNumber: 111111
facsimileTelephoneNumber: 111112
street: Some Street 69
o: Test

dn: ou=accounts, dc=mydomain,dc=com
objectClass: top
objectClass: organizationalUnit
ou: accounts

dn: cn=vmail,ou=accounts, dc=mydomain,dc=com
objectClass: top
objectClass: person
cn: vmail
sn: vmail

dn: vdo=vDomain,ou=accounts, dc=mydomain,dc=com
objectClass: TopPostfix
vdo: vDomain

dn: vuo=vUsers,ou=accounts,dc=mydomain,dc=com
objectClass: TopPostfix
vuo: vUsers

dn: vruo=vRRU,ou=accounts,dc=mydomain,dc=com
objectClass: TopPostfix
vruo: vRRU

dn: vao=vAlias,ou=accounts,dc=mydomain,dc=com
objectClass: TopPostfix
vao: vAlias

dn: vto=vTransport,ou=accounts,dc=mydomain,dc=com
objectClass: TopPostfix
vto: vTransport
Теперь добавляем первую информацию в базу:

Код: Выделить всё

# ldapadd -x -W -D "cn=test,dc=mydomain,dc=com" -f /ГдеТамВашФайлик/имяФайла.ldif
Теперь можно создавать почтовых пользователей, для дальнейших проверок. Мы создадим одного пользователя и с такой схемой и будем рабоать. Остальных пользователей можно будет задать аналогично.

Создадим где-нибудь файлик virtual-users.ldif и сделаем его следующего содержания:

Код: Выделить всё

dn: cn=test,vuo=vUsers,ou=accounts,dc=mydomain,dc=com
objectClass: top
objectClass: posixAccount
objectClass: VUPostfix
objectClass: person
objectClass: inetOrgPerson
sn: test
cn: test
initials: test
mail: test@mydomain.ru
o:TEST
description: Test Users
homeDirectory: mydomain.ru/test/
vuQuota: 1048576
vuActive: 1
vuAuth: 1
vuUserrealm: mail.mydomain.com
uidNumber: 1004
gidNumber: 1002
uid:test
Примечание:

• homeDirectory – указано относительное местоположение домашней директории. Это нормально. В дальнейшем, когда мы будем настраивать pop3 и smtp сервер, мы поймем, почему тут указывали именно так.
• uidNumber – uid пользователя vmail. Доступ к почте имеет этот пользователь
• gidNumber – gid группы vmail.

Эти параметры надо указывать исходя из настроек своей среды.

Добавим информацию в БД LDAP:

Код: Выделить всё

# ldapadd -x -W -D "cn=test,dc=mydomain,dc=com " -f virtual-users.ldif
Теперь задаем пароли для наших пользователей:

Код: Выделить всё

# ldappasswd -W -S -D "cn=test,dc=mydomain,dc=com" "cn=vmail,ou=accounts,dc=mydomain,dc=com"
# ldappasswd -W -S -D "cn=test,dc=mydomain,dc=com" "cn=test,vuo=vUsers ,ou=accounts,dc=mydomain,dc=com "
Теперь необходимо добавить информацию о виртуальных доменах.
Предположим, что наш сервер обслуживает 2 домена – mydomain.com и mydomain-second.com.

Создаем где-нибудь файлик virtual-domain.ldif следующего содержания:

Код: Выделить всё

dn: vd=mydomain.com,vdo=vDomain,ou=accounts,dc=mydomain,dc=com
objectclass: VDPostfix
vdName: mydomain.com
vdStatus: 1
vdDescription: Primary Domain
vdClasses: MyUserSender
vd: mydomain.com

dn: vd=mydomain-second.com,vdo=vDomain,ou=accounts,dc=mydomain,dc=com
objectClass: VDPostfix
vdName: mydomain-second.com
vdStatus: 1
vdDescription: Secondary Domain
vdClasses: MyUserSender
vd: mydomain-second.com
Теперь также добавляем информацию о виртуальных доменах в базу:

Код: Выделить всё

# ldapadd -x -W -D "cn=test,dc=mydomain,dc=com " -f virtual-domain.ldif
На этом с LDAP, пожалуй, всё.

Все модификация и добавления данных в базу производились в соответствии со схемой postfix.schema.

Вы можете просмотреть её или даже изменить по своему усмотрению и/или нуждам.

Теперь проведем установку postfix только для того, чтобы создать необходимые директории, которые нам понадобятся для дальнейшей настройки. Полная настройка Postfix будет производиться ниже по ходу статьи.

Единственное, что не забудьте создать домашний каталог виртуального пользователя (в данном случае в /usr/home/) и дать права на эту директорию пользователю vmail и группе vmail:

Код: Выделить всё

# cd /usr/home
# mkdir virtualmail
# cd virtualmail
# mkdir mydomain.com
# mkdir mydomain-second.com
# cd /usr/home/
# chown –R vmail:vmail virtualmail/

Код: Выделить всё

Установка SSL и Postfix (только установка)
Перед установкой Postfix и Dovecot в системе должен быть установлен openSSL.

Установим OpenSSL из портов, хотя после установки FreeBSD в системе уже есть установленный стандартный OpenSSL. Мне всегда как то спокойнее устанавливать версию из портов, предварительно обновив их.

Код: Выделить всё

# cd /usr/ports/security/openssl
# make config
Выбираем следующие опции:
  • Shared
    Threads
    SSE2
    ASM
    ZLIB
    SCTP
    MD2

Код: Выделить всё

# make install clean
После окончания установки вы получите следуюие строки:

Код: Выделить всё

OpenSSL shared libraries have been installed in:
  /usr/local

..................
Здесь много текста про shared libraries, маны к ним, про ldd и т.д.
..................

Copy /usr/local/openssl/openssl.cnf.sample to /usr/local/openssl/openssl.cnf
and edit it to fit your needs.

..................
Снова текст в стиле блаблабла
..................

      For more information, and contact details about the security
      status of this software, see the following webpage:
http://www.openssl.org/
Обратите внимание на строку «Copy /usr/local/openssl/openssl.cnf.sample to /usr/local/openssl/openssl.cnf and edit it to fit your needs.»

Это нам понадобиться чуть позже.

Установка завершена. Переходим к настройке, - проведем подготовку перед началом создания сертификатов для POP3- и SMTP-серверов.

Сначала добавим информацию об SSL в make.conf, чтобы каждое новое приложение собиралось с поддержкой OpenSSL:

Код: Выделить всё

# echo "WITH_OPENSSL_PORT=YES" >> /etc/make.conf
Теперь вспоминаем про сообщение «Copy /usr/local/openssl/openssl.cnf.sample to /usr/local/openssl/openssl.cnf and edit it to fit your needs.» и пониманием, что после установки в системе будут находиться конфигурационные файлы в двух местах:
  • /etc/ssl
    /usr/local/openssl/
  • /usr/local/openssl/openssl.cnf.sample - это файл конфигурации OpenSSL, установленного из портов.
    /etc/ssl/openssl.cnf.old - это файл конфигурации стандартного OpenSSL, идущего вместе с установленной системой
Я переименовал эти файлы следующим образом:

Код: Выделить всё

# mv /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.old
# cd /usr/local/openssl
# mv openssl.cnf.sample openssl.cnf
Конфигурационный файл OpenSSL можно не настраивать. Прописанные там опции вполне подходят для нашей конфигурации.

Теперь, при установке других сервисов у нас в системе уже будет OpenSSL, что позволит нам с легкостью создавать сертификаты и подключать их.

Теперь установим SMTP-сервер Postfix.

Установка и настройка Postfix

Устанавливаем PostFix из портов:

Код: Выделить всё

# cd /usr/ports/mail/postfix
# make config
помечаем следующие опции:
  • PCRE
    SASL2
    DOVECOT
    TLS
    OPENLDAP
    TEST
    SPF
В процессе установки появится окошко для настройки dovecot 1.2.17. Да, так как мы выбрали авторизацию через dovecot при настройке установки postfix’a нам необходимо сразу установить и dovecot. Я выбрал следующие пункты:
  • KQUEUE
    SSL
    LDAP
В конце установки Вам будет задан вопрос, заменить ли Postfix'ом стандартный Sendmail (будет переписан mailer.conf) – соглашайтесь:

Код: Выделить всё

Warning: you still need to edit myorigin/mydestination/mynetworks
    parameter settings in /usr/local/etc/postfix/main.cf.

    See also http://www.postfix.org/STANDARD_CONFIGURATION_README.html
    for information about dialup sites or about sites inside a
    firewalled network.

    BTW: Check your /etc/aliases file and be sure to set up aliases
    that send mail for root and postmaster to a real person, then
    run /usr/local/bin/newaliases.

install  -o root -g wheel -m 555 /usr/ports/mail/postfix/work/postfix-2.9.4/auxiliary/rmail/rmail /usr/local/bin/rmail
install  -o root -g wheel -m 555 /usr/ports/mail/postfix/work/postfix-2.9.4/auxiliary/qshape/qshape.pl /usr/local/bin/qshape
install  -o root -g wheel -m 444 /usr/ports/mail/postfix/work/postfix-2.9.4/man/man1/qshape.1 /usr/local/man/man1
===> Installing rc.d startup script(s)
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y
После согласия получим следующее сообщение:

Код: Выделить всё

To enable postfix 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"
Установка завершена. Добавим Postfix в автозагрузку, чтобы он запускался при старте системы:

Код: Выделить всё

# ee /etc/rc.conf
Добавляем строку:

Код: Выделить всё

postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
Подробное описание настроек и конфигурирование Postfix представлено в соответствующем разделе. Сейчас необходимо просто провести установку для того, чтобы появились необходимые каталоги. Далее, мы будем создавать сертификаты для POP3 и SMTP-серверов. Для этого нам понадобится каталог куда мы сможем сохранить наш сертификаты. В моей среде это каталог внутри папки, куда устанавливается postfix.

Установка и настройка Dovecot (POP3-сервера Dovecot с Sieve, LDA и SASL)

"Dovecot — свободный IMAP- и POP3-сервер, разрабатываемый в расчёте на безопасность. Особенности сервера Поддержка форматов почтовых ящиков mbox и Maildir, высокое быстродействие благодаря индексации содержимого ящиков. Честно говоря я очень доволен этой прогой!"(с)

Dovecot уже будет установлен в системе, потому что при установке postfix’a мы выбирали опции для dovecot и устанавливали его.

Вы можете проверить, установлен ли postfix набрав следующую команду:

Код: Выделить всё

# pkg_version -v | grep dovecot
dovecot-1.2.17                      =   up-to-date with port
Документация

После завершения установки в папке /usr/local/etc/ появятся следующие конфигурационные файлы:
  • dovecot.conf - основной файл конфигурации нашего POP3-сервера
    dovecot-ldap.conf - файл для настройки работы с LDAP.
У dovecot очень хороший сайт и вики, которая содержит тонны информации по настройке этой программы: http://dovecot.org.

Кроме того, в папке /usr/local/share/examples/dovecot/ Вы сможете найти примеры настройки и описание тех же конфигурационных файлов.

Сначала нам необходимо добавить информацию о dovecot в файл автозагрузки (пусть стартует сразу при загрузке системы):

Код: Выделить всё

# ee /etc/rc.conf
Добавляем следующую строчку:

Код: Выделить всё

dovecot_enable="YES"
Теперь переходим к настройке конфигурационного файла (/usr/local/etc/dovecot.conf). Приведем его к следующему виду:

Код: Выделить всё

#Базовая директория, где хранятся .pid-файлы, файлы авторизации и другие необходимые для #работы сервера данные

base_dir = /var/run/dovecot/

#Какие протоколы мы будем использовать

protocols = pop3s

#Разрешить или запретить авторизацию plain

disable_plaintext_auth = no

#Отключать ли клиентские IMAP-, POP3-соединения при выключении dovecot. Если эта опция #установлена в “no”, То можно проводить апгрейд dovecot без принудительного отключения #клиентов

shutdown_clients = yes

#Логи, пути и их стиль

log_path = /var/log/dovecot/dovecot-main.log
info_log_path = /var/log/dovecot/dovecot-debug.log
log_timestamp = "%b %d %H:%M:%S "

#Настройки SSL

ssl = yes
ssl_cert_file = /etc/ssl/mail.mydomain.com-dovecot-cert.pem
ssl_key_file = /etc/ssl/mail.mydomain.com-dovecot-unen-key.pem
ssl_ca_file =  /etc/ssl/mydomain.com-dovecot-CAcert.pem
verbose_ssl = yes

#Директория для авторизации. Тут создаются сокеты при авторазации.

login_dir = /var/run/dovecot/login

#Так как у нас используется отдельный пользователь для проведения логина (а не рутовый), то #ставим эту опцию в yes.

login_chroot = yes

#Пользователь, под которым запускается процесс логина.

login_user = dovecot

#Максимальный объем процесса логина

login_process_size = 64

#Создавать на каждый логин-соединение отдельный процесс. При использовании TLS опция “yes” #является предпочтительной

login_process_per_connection = yes

#Количество логин-процессов для прослушивания новых соединений

login_max_processes_count = 35

#Приветствие сервера

login_greeting = You want some mail, do you?

#Как вести логирование процесса логина

login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s

#Где находятся почтовые каталоги. Эта настройка определяется значениями из файла dovecot-#ldap.conf.

mail_location = maildir:%h

#Пользователь и группа, которые имеют доступ к почте. Через этого пользователя будет #производиться получение почты. Т.е. пользователь vmail и группа vmail должна иметь доступ к #почтовым каталогам

mail_uid = vmail
mail_gid = vmail

#Группа, которая  периодически используется для привилигированных операций. Как правило тут #стоит группа mail, для доступа к каталогу /var/mail.

mail_privileged_group = vmail

#разрешать ли пользователям полным доступ к почтовым каталогам

mail_full_filesystem_access = no

#Опция для отладки

mail_debug = yes

#Как логировать отладку

mail_log_prefix = "%Us(%u): "

#Использовать дотлокинг

dotlock_use_excl = yes

#Подробный вывод процессов использования сервара. Выводит имя пользователя и ip-адресс.

verbose_proctitle = yes

#Валидные uid/gid для пользователей. Это устанавливается для того, чтобы обезопасить себя от #того, что никто не сможет залогиниться, как демон.

first_valid_uid = 1004
last_valid_uid = 1004
first_valid_gid = 1002
last_valid_gid = 1002

#Максимальное количество подключений. Когда достигается указанный лимит, новые #пользователи не имеют возможности подключиться к системе.

max_mail_processes = 115

#Сохранять почту при помощи LF, а не с использованием CR+LF. Эта опция ускоряет работу #сервера.

mail_save_crlf = no

#При копировании сообщения сохранять жесткие ссылки. Это также оказывает хорошее влияние #на производительность

maildir_copy_with_hardlinks = yes

#Настройка протокола pop3. По сути небольшие настройки для корректных отображения писем в #почтовых клиентах конечных пользователей.

protocol pop3 {
       pop3_uidl_format = %08Xu%08Xv
       pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}

#Настройки для локального доставщика. Вызов локального доставщика производится на стороне #SMTP-сервера, котгда тот принял письмо и думает, кому его отдать, чтобы положить в нужное #место. Этот вызов мы настроим, когда дойдем до конфигурирование Postfix’a.

protocol lda {

#Адрес, куда пересылать различную информацию, например сообщения о работе сервера или #отчеты о проблемных письмах

  postmaster_address = it

#Имя хоста

  hostname = mail.mydomain.com

#Сокет для авторизации

  auth_socket_path      = /var/run/dovecot/auth-master

#Как вести логирование для локального доставщика

  deliver_log_format    = mail from %f: %$

#Какой плагин использовать для локального доставщика

  mail_plugins = sieve
  mail_plugin_dir = /usr/local/lib/dovecot/lda

#Путь к отправке

  sendmail_path = /usr/local/sbin/sendmail

#Автоматически ответы об отвержении писем

  rejection_subject = Rejected: %s
  rejection_reason = Your message to <%t> was automatically rejected:%n%r

#Пути лог-файлов

  log_path = /var/log/dovecot/deliver-error.log
  info_log_path = /var/log/dovecot/deliver-info.log
}

#Время жизни кешированной сессии для авторизации. Залогинившись первый раз, информация #об авторизации будет храниться это время.

auth_cache_ttl = 3500

#Как проводить авторизацию. Нужен нижний регистр (L) и имя пользователя (u) с доменным #именем

auth_username_format = %Lu

#Подробности авторизации

auth_verbose = yes

#Вести отладку авторизации

auth_debug = yes

#Настройки для авторизации

auth default {

#Поддерживаемые механизмы авторизации

  mechanisms = plain login digest-md5 cram-md5

#База, в которой хранятся данные о паролях

  passdb ldap {
    args = /usr/local/etc/dovecot-ldap.conf
  }

#База, в которой хранятся данные о пользователях.

  userdb ldap {
    args = /usr/local/etc/dovecot-ldap.conf
  }

#Пользователь, который выполняет контроль авторизации. Он получает пароли и имена #пользователей.

user = dovecot-auth

#Настройки мастер-сокета. Месторасположение, права и пользователь/группа, имеющие право #доступа. Этот блок используется для «пускания» пользователей на сервер для получения почты.

  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0600
      user = vmail
      group = vmail
    }

#Настройки клиент-сокета. Месторасположение, права и пользователь/группа, имеющие право #доступа. Этот блок используется для работы SASL.

    client {

#Запомните этот путь. Он будет использован в дальнейшем для Postfix при настройке SASL-#авторизации через dovecot.

      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}

#Где искать наш плагин

plugin {

#Запомните название файла, оно потребуется ниже

   sieve_before=/usr/local/lib/dovecot/lda/before.sieve
}
В системе уже существуют пользователь vmail и группа vmail. Теперь нужно создать пользователя dovecot-auth, - при установке dovecot этот пользователь не создается:

Код: Выделить всё

# pw adduser dovecot-auth –g mail –d /nonexistent –c “dovecot-auth” –s /sbin/nologin
Теперь надо позаботиться о настройке sieve, SSL, SASL и подключением к LDAP, а также создать необходимые каталоги для лог-файлов.

Настройка sieve.

В соответствии с конфигурацией

Установим сам фильтр:

Код: Выделить всё

# cd /usr/ports/mail/dovecot-sieve/
# make install clean
Теперь настроем его, чтобы она складывал письма в отстойник.

Переходим в каталог /usr/local/lib/dovecot/lda/. Создаем файл before.sieve. В него пишем:

Код: Выделить всё

require "fileinto";
if anyof (header :contains "Subject" "SPAM")
{
  fileinto "spam";
}
else
{
  keep;
}
Теперь компилим наш before.sieve:

Код: Выделить всё

# sievec /usr/local/lib/dovecot/lda/before.sieve
Настройка SASL.

Кусок настроенного конф. файла dovecot.conf включает поддержку SASL-аутентификации (см. ниже). Дальнейшие необходимые настройки уже будут проводиться на стороне Postfix’a.

Код: Выделить всё

…
client {
     path = /var/spool/postfix/private/auth
     mode = 0660
     user = postfix
     group = postfix
   }
 }

Подключение к LDAP

Приведем dovecot-ldap.conf к следующему виду:

Код: Выделить всё

hosts = localhost
dn = cn=vmail,ou=accounts,dc=mydomain,dc=com
dnpass = ThisIsMyPassword
ldap_version = 3
base = ou=accounts, dc=mydomain,dc=com
deref = never
scope = subtree
user_attrs = homeDirectory=home=/usr/home/virtualmail/%$,uidNumber=uid,gidNumber=gid
user_filter = (&(objectClass=posixAccount)(mail=%u))
pass_attrs = mail=user,userPassword=password
pass_filter = (&(objectClass=posixAccount)(mail=%u))
default_pass_scheme = PLAIN
Теперь сгенерируем сертификаты для нашего POP3- и SMTP-серверов.

Сгенерируем сертификаты для SMTP- и POP3-сервера.

Для SMTP

Подготовим перловский скрипт, который будем использовать. В качестве рабочей папки будем использовать папку certs:

Код: Выделить всё

# cd /usr/local/openssl
# mkdir certs
# cp misc/CA.pl certs/
# sed -I .old 's/365/1095/' openssl.cnf
Теперь запустим скрипт для создания CA:

Код: Выделить всё

# cd /usr/local/openssl/certs
# export OPENSSL=/usr/local/bin/openssl #данная команда актуальна для BASH'a. Для других оболочек может использоваться SETENV
# ./CA.pl -newca
Тут нас попросят ввести имя сертификата. Так как мы создаем новый сертификат, то можно просто нажать Enter. Затем последует вопрос о парольной фразе. Введите и запомните, она еще пригодится. Заполните остальные предлагаемые поля. После указания электронной почты, Вас попросят ввести challenge password. Нажмите Enter дважды, пропустив тем самым этот шаг. Наконец, Вас снова попросят ввести парольную фразу, которую Вы запомнили ранее. После этого будет создан файл ./demoCA/private/cakey.pem.
Теперь создаем запрос на сертификат:

Код: Выделить всё

# ./CA.pl -newreq
Снова будет спрошена парольная фраза. Когда дойдете до пункта Common Name - будьте крайне аккуратны, потому что значения там необходимо указывать, как host.example.com.
Также можно указать значение как *.example.com.
Теперь из этого запроса создаем сертификат:

Код: Выделить всё

# ./CA.pl -signreq
Снова вводим парольную фразу, затем дважды отвечает YES. После этого мы получим подписанный сертификат (newcert.pem) и закрытый ключ (newkey.pem). В директории demoCA (в этой же папке) есть файл CA и закрытый ключ к нему - cacert.pem и cakey.pem соответственно.
Сделаем копии этих файлов и потом воспользуемся ими для настройки Postfix'а (далее укажем их в конфиге). Копировать будем в каталог postfix'a - /usr/local/etc/postfix/ssl – там необходимо создать эту папку ssl перед продолжением.

Код: Выделить всё

# cp newcert.pem /usr/local/etc/postfix/ssl/mail.mydomain.com-cert.pem
# cp newkey.pem /usr/local/etc/postfix/ssl/mail.mydomain.com-encrypted-key.pem
# cp demoCA/cacert.pem /usr/local/etc/postfix/ssl/mydomain.com-CAcert.pem
# cp demoCA/private/cakey.pem /usr/local/etc/postfix/ssl/mydomain.com-encrypted-CAkey.pem
Наши закрытые ключи являются зашифрованными. Чтобы каждый раз почтовый клиент пользователя не запрашивал пароль для сертификата, сделаем его незашифрованным. Хотя, конечно, вписывать пароль каждый раз будет еще секьюрнее:

Код: Выделить всё

# openssl rsa -in mail.mydomain.com-encrypted-key.pem -out mail.mydomain.com-unencrypted-key.pem
Также является очень важным момент установки CA Сертификата как рутовый сертификат на системах под управлением WIndows. Это позволит избежать сообщения об ошибке корневого сертификата - например, в моей системе outlook стал работать и отправлять почту ТОЛЬКО после того, как я установил этот сертификат, как рутовый. Для сравнения - The Bat! и Thunderbird заработали сразу и без проблем.

Код: Выделить всё

# openssl x509 -in mydomain.com-CAcert.pem -inform PEM –out mydomain.com-CAcert.cer -outform DER
Также не забываем настроить права доступа:

Код: Выделить всё

# chmod 644 /usr/local/etc/postfix/ssl/mydomain.com-cert.pem /usr/local/etc/postfix/ssl/mydomain.com-CAcert.pem
# chmod 400 /usr/local/etc/postfix/ssl/mail.mydomain.com-unencrypted-key.pem
Шифруем траффик POP3 для Dovecot

Покомандно:

Код: Выделить всё

# cd /usr/local/openssl
# mkdir certs
Будем считать, что в прошлый раз мы эту папочку после переноса нужных файлов-сертификатов-ключей удалили

Код: Выделить всё

# cp misc/CA.pl certs/
# sed -I .old 's/365/1095/' openssl.cnf
Или достаточно просто проверить в конфиге openssl.cnf строку default_days = 1095

Иии, поехали - запускаем создание СА:

Код: Выделить всё

# cd /usr/local/openssl/certs
# export OPENSSL=/usr/local/bin/openssl
Данная команда актуальна для BASH'a. Для других оболочек может использоваться SETENV

Код: Выделить всё

# ./CA.pl –newca
Кстати да. Проверьте сохранилась ли Ваша переменная OPENSSL (для bash это выглядит как echo $OPENSSL) - если будет пусто, то экспортируйте значение заново, иначе не сработает.

Теперь создаем запрос:

Код: Выделить всё

# ./CA.pl –newreq
Не забываем, что при создании файлов cert и key надо ОБЯЗАТЕЛЬНО указывать Common Name как host.example.com - или *.example.com, иначе Ваши сертификаты потом не будут работать.
Теперь подписываем:

Код: Выделить всё

# ./CA.pl –signreq
Теперь копируем. Сертификаты для dovecot я решил обозвать кодовым словом "dovecot" и переместить их в директорию /etc/ssl:

Код: Выделить всё

# cp newcert.pem /etc/ssl/mail.mydomain.com-dovecot-cert.pem
# cp newkey.pem /etc/ssl/mail.mydomain.com-dovecot-en-key.pem
# cp demoCA/cacert.pem /etc/ssl/mydomain.com-dovecot-CAcert.pem
# cp demoCA/private/cakey.pem /etc/ssl/mydomain.com-encrypted-CAkey.pem
Наши закрытые ключи являются зашифрованными. Чтобы каждый раз почтовый клиент пользователя не запрашивал пароль для сертификата, сделаем его незашифрованным. Хотя, конечно, вписывать пароль каждый раз будет еще секьюрнее:

Код: Выделить всё

# openssl rsa -in mail.mydomain.com-dovecot-en-key.pem -out mail.mydomain.com-dovecot-unen-key.pem
Также является очень важным момент установки CA Сертификата как рутовый сертификат на системах под управлением WIndows. Это позволит избежать сообщения об ошибке корневого сертификата - например, в моей системе outlook стал работать и отправлять почту ТОЛЬКО после того, как я установил этот сертификат, как рутовый. Для сравнения - The Bat! и Thunderbird заработали сразу и без проблем.

Итак, после генерации сертификата (переделываем его в расширение cer - виндовое расширение - и делаем в формате DER - также для виндов), надо будет его передать на машины под управление Windows и установить:

Код: Выделить всё

# openssl x509 -in mydomain.com-dovecot-CAcert.pem -inform PEM -out mydomain.com-dovecot-CAcert.cer -outform DER
Также не забываем настроить права доступа:

Код: Выделить всё

# chmod 644 /etc/ssl/mail.mydomain.com-dovecot-cert.pem /etc/ssl/mydomain.com-dovecot-CAcert.pem
# chmod 400 /etc/ssl/mail.mydomain.com-dovecot-unen-key.pem
Создаем папки и файлы для логов Dovecot и запускаемся

Код: Выделить всё

# cd /var/log
# mkdir dovecot
# cd dovecot
# touch dovecot-main.log
# touch dovecot-debug.log
# touch deliver-error.log
# touch deliver-info.log
# /usr/local/etc/rc.d/dovecot start
Starting dovecot.
# ps -axuw | grep dovecot
root         35587  46.0  0.7  13656   3488  ??  R     5:53PM   0:06.24 ssl-build-param /var/db/dovecot/ssl-parameters.dat
root         35586   0.0  0.7  13652   3480  ??  Ss    5:53PM   0:00.01 /usr/local/sbin/dovecot -c /usr/local/etc/dovecot.conf
dovecot-auth 35588   0.0  0.8  13836   3836  ??  S     5:53PM   0:00.01 dovecot-auth
dovecot      35589   0.0  0.9  13732   4392  ??  S     5:53PM   0:00.01 pop3-login
dovecot      35590   0.0  0.9  13732   4392  ??  S     5:53PM   0:00.01 pop3-login
dovecot      35591   0.0  0.9  13732   4392  ??  S     5:53PM   0:00.01 pop3-login
root         35593   0.0  0.3   9748   1276   0  S+    5:53PM   0:00.00 grep dovecot
Небольшой итог

Сейчас у нас есть:
1. Настроенный LDAP-сервер, в котором есть необходимые данные для работы нашего домена. Он настроен и работает в полноценном режиме.
2. У нас есть POP3s-сервер. Соединение с этим сервером шифруется при помощи TLS-сертификата, который мы создали при помощи OpenSSL, который также установили из портов.
3. У нас есть УСТАНОВЛЕННЫЙ, но не настроенный SMTP-сервер – Postfix. Также для него у нас уже созданы сертификаты TLS, а также подготовлена SASL-аутентификация через dovecot.
Также в косвенной степени для него мы подготовили правило для доставщика писем, которое будет обрабатываться после того, как Postfix получит письмо, отдаст его SA на проверку не спам ли это.

Сейчас мы установим все фильтры, которые будут использоваться в нашей системе – ClamAV, ClamSMTP, SpamAssassin (а к нему Razor-Agents, Pyzor + все это в MySQL) и Grey-listing.

После того, как у нас будут установлены все фильтры и будут составлены конфигурационные файлы под них, - мы их подключим к Postfix.

Также я сразу же приведу конечный конфиг Postfix’a. После этого мы все это запустим и протестируем.

Фильтры

ClamAV

Начнем с установки ClamAV. Идем в нужный нам порт:

Код: Выделить всё

# cd /usr/ports/security/clamav
# make config
Помечаем нужные нам опции:
  • ARC
    ARJ
    LHA
    LLVM
    TESTS
    UNRAR
    UNZOO
И устанавливаем:

Код: Выделить всё

# make install clean
После этого сразу добавляем его в автозагрузку:

Код: Выделить всё

# cd /etc/ && ee rc.conf
Добавляем нужные нам строки:

Код: Выделить всё

clamav_clamd_enable="YES" #Собственно, сам антивирус
clamav_freshclam_enable="YES" #Софтина для обновления антивирусных баз
Документация

Необходимая информация, в общем то, находится в мане:

Код: Выделить всё

# man clamd.conf
Теперь надо отредактировать конфигурационный файл clamd.conf. Он лежит в /usr/local/etc/.
Приведем его к следующему виду:

Код: Выделить всё

#Лог-файл, где его хранить. Не забудем потом создать соответствующую папку в нежном месте

LogFile /var/log/clamav/clamd.log

#Отключает системный блок, которые не даст ClamAV запускатьтся несколько раз с одним и тем #же конфигом.

LogFileUnlock no

#Отключаем ограничение на максимальный размер лог-файла.

LogFileMaxSize 0

#Логировать время записей

LogTime yes

#Вести логирование «чистых» файлов, не содержащих вырусы

LogClean yes

#Вести ли логирование через сислог?

LogSyslog no

#Подробное логирование

LogVerbose yes

#Где наш pid-файл (файлы, отображающий идентификатор процесса clamd)

PidFile /var/run/clamav/clamd.pid

#Временная директория. Туда складыватются файлы для проверки

TemporaryDirectory /var/tmp

#БД откуда брать инфу о вирусах

DatabaseDirectory /var/db/clamav

#Локальный сокет, для прослушивания «демоном». Через этот сокет будет осуществляться связь с #clamsmtpd (см. настройку ниже).

LocalSocket /var/run/clamav/clamd.sock

#Права на сокет

LocalSocketMode 660

#Удалять ли зависший сокет после неудачного завершения раобты

FixStaleSocket yes

#Максимальная очередь подключений

MaxConnectionQueueLength 100

#Эта опция необходима, если проверка ведется по удаленному протоколу. Т.е. другая машина #передает файл на проверку на эту машину. Эта опция регулирует максимальный разрем такой #передачи

StreamMaxLength 10M

#Максимальное количество потоков, запускаемых одновременно

MaxThreads 30

#Таймаут на ожидание данных от сокета

ReadTimeout 150

#Таймаут, после которого антивирус сбрасывает соединение, если от клиента не поступает #никаких дальнейших команд

CommandReadTimeout 5

#Максимальная очередь проверки

MaxQueue 100

#Максимальная рекурсия директорий. Внутри проверяемого файла может быть много вложенных #папок. Эта опция говорит, насколько «глубоко» имеет смысл заходить.

MaxDirectoryRecursion 20

#Следовать ли при проверке папок символическим ссылкам

FollowDirectorySymlinks yes

#То же самое, но при проверке файлов

FollowFileSymlinks yes

#Сканировать файлы и директории на других файловых системах

CrossFilesystems yes

#Самопроверка (например, актуальность базы или файлов) каждые…

SelfCheck 1800

#Когда попадает вирус, то как о нем сообщать?

VirusEvent /bin/echo "VIRUS ALERT: %v" >> /var/log/clamav/virus.log

#Разрешать доступ связанным группам?

AllowSupplementaryGroups no

#Пользователем, от котоого запускать проверку

User clamav

#Переключаться ли на фоновую работу

Foreground no

#Далее идут настройка для самого процесса сканирования

DetectPUA yes
IncludePUA Spy
IncludePUA Scanner
IncludePUA RAT
AlgorithmicDetection yes
ScanPE yes
ScanELF yes
DetectBrokenExecutables yes
ScanOLE2 yes
ScanPDF yes
ScanMail yes
ScanPartialMessages no
PhishingSignatures yes
PhishingScanURLs yes
PhishingAlwaysBlockSSLMismatch no
PhishingAlwaysBlockCloak no
ScanHTML yes
ScanArchive yes

#Максимальный объем сканирования. Именно такой объем будет просканирован

MaxScanSize 10M

#Максимальный размер файла, который может быть передан на сканирование

MaxFileSize 10

#Максимальная глубина сканирования архивов

MaxRecursion 20
Также, в добавок к нашему антивируса мы получили установленную программу, которая будет обновлять нам базы - freshclam. В автозагрузку мы его уже добавили, - осталось поправить конфиг. Приведем его к такому виду:

Код: Выделить всё

#где хранятся базы

DatabaseDirectory /var/db/clamav

#Место для лог-файла

UpdateLogFile /var/log/clamav/freshclam.log

#Логирование сообщения с указанием времени

LogTime yes

#Подробное логирование

LogVerbose yes

#Логирование через syslog

LogSyslog no

#Где наш файл-идентификатор процесса

PidFile /var/run/clamav/freshclam.pid

#Владелец базы

DatabaseOwner clamav

#Разрешить ли доступ дополнительным группам

AllowSupplementaryGroups no

#Откуда тянуть обновления базы

DNSDatabaseInfo current.cvd.clamav.net
DatabaseMirror database.clamav.net

#Сколько раз в день проверять наличие обновления для баз

Checks 24

ScriptedUpdates yes

#Извещать сам антивирусник о том, что базы обновились

NotifyClamd /usr/local/etc/clamd.conf

#Переключаться в в фоновые режим или нет

Foreground no

#Проверять ли целостность базы после обновлений

TestDatabases yes
С проверкой входящих сообщений всё. Теперь установим и настроим ClamSMTP - будем проверять исходящие сообщения.

Не забываем создать требуемые директории под логи:

Код: Выделить всё

# cd /var/log/
# mkdir clamav
По идее, после установки clamav там уже будет создана необходимая папка.

ClamSMTP

Переходим в нужный нам порт:

Код: Выделить всё

# cd /usr/ports/security/clamsmtp
# make config
Отмечаем необходимые опции:

LOCAL

И далее:

Код: Выделить всё

# make install clean
Документация

Про настройку clamsmtp можно почитать в мане:

Код: Выделить всё

# man clamsmtpd.conf
Теперь настроим конфигурационный файл - он лежит в /usr/local/etc/ и называется clamsmtp-sample.conf.

Переименуем этот файл в clamsmtp.conf:

Код: Выделить всё

# mv clamsmtpd.conf-sample clamsmtpd.conf
Приведем его к такому виду:

Код: Выделить всё

#Адрес smtp-сервера куда слать проверенные почтовые сообщения. Схема такая: сначала #почтовик (Postfix) получает письмо. Отдает его на порт 10025 (см. настройку «Listen» в данном #конфиге) антивируснику clamsmtp. Тот в свою очередь, через сокет (см. настройку «ClamAddress» #в данном конфиге и настройку  «LocalSocket» в конфиге ClamAV) , отдает письмо на проверку #ClamAV. Через сокет же письмо возвращается в clamsmtp и через порт 10026 (Вот эта настройка #ниже «OutAddress») вгружается обратно в Postfix.

OutAddress: 10026

#Максимальное количество одновременных соединений, которые буду обслуживаться

MaxConnections: 100

#Таймаут на получение данных при новом подключении инициированном из сети

TimeOut: 180

#Актуально для медленных соединений. Пока еще не завершена проверка файла на медленном #соединении, будет посылаться команда, поддерживающая такое соединение

KeepAlives: 0

#Адрес, где демон «слушает»

Listen: 127.0.0.1:10025

#Сокет, через который можно подключиться к ClamAV (см. настройку clamd.conf – настройка должна указывать на тот же сокет-файл, что и в конфиге clamd.conf)

ClamAddress: /var/run/clamav/clamd.sock

#Переписываем заголовок после проверки

Header: X-Virus-Scanned: ClamAV using ClamSMTP

#Директория для временных файлов. Она должна быть доступна как clamsmtpd, так и clamav

TempDirectory: /tmp

#Что делать при обнаружении вируса. В данном случае сообщение просто отбрасывается.

Action: drop

#так как сообщения отбрасываются, то и карантин нам не нужен

Quarantine: off

#Пользователь, под которым запускается сервис.

User: clamav
И не забываем добавлять в автозагрузку:

Код: Выделить всё

# echo 'clamsmtpd_enable="YES"' >> /etc/rc.conf
SpamAssassin

А если быть совсем точным, то мы начнем с установки мускула.
Перейдем в порт, запустим установку:

Код: Выделить всё

#cd /usr/ports/databases/mysql41-server
#make install clean
Для этой версии мускула нету конфигурируемых опций.

Я вырал данную версию мускула из-за того, что у меня на этом же серваке вертится и сайт. Сайт работает на очень старой админке, которая, в свою очередь, работает только на этой версии мускула. Этим я лишь хочу сказать, что вы можете установить любую другую версию мускула, например, - самую последнюю.

После установки выполняем следующие шаги. Сначала говорим, что база данных должна принадлежать пользователю mysql, который появится в системе сразу после завершения установки мускула:

Код: Выделить всё

# mysql_install_db --user=mysql
Получим после этого такое сообщение:

Код: Выделить всё

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h mail.mydomain.com password 'new-password'
See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local ; /usr/local/bin/mysqld_safe &

You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests

Please report any problems with the /usr/local/bin/mysqlbug script!
Запомним это сообщение и сделаем следующие шаги (которые будут включать то, что написано в сообщении).

Затем, сделаем этого пользователя владельцем необходимых файлов:

Код: Выделить всё

# chown -R mysql:mysql /var/db/mysql
Теперь также идем в rc.conf и добавляем строки:

Код: Выделить всё

# ee /etc/rc.conf
mysql_enable=”YES”
Запускаем мускул от нашего пользователя:

Код: Выделить всё

# /usr/local/bin/mysqld_safe -user=mysql &
Входим в мускул и меняем пароль рута:

Код: Выделить всё

# /usr/local/bin/mysqladmin -u root password "МойПарольКмускулу"
Или же можно сделать пароль таким образом (заодно и пустые логины, если таковые имеются, удалим):

Код: Выделить всё

# mysql -u root mysql
> UPDATE user SET Password=PASSWORD('mysql_root_password') WHERE User='root';
> DELETE FROM user WHERE User=' '; #ЗДЕСЬ УДАЛИТЬ ПРОБЕЛ МЕЖДУ КАВЫЧКАМИ!
> FLUSH PRIVILEGES;
> QUIT;
При установке сам мускул не создает для себя конфигурационного файла – его можно и нужно создать на основе файлов my-*.cnf, которые лежат в /usr/local/share/mysql/.

Скопируем наш конфигурационный файл в /var/db/mysql/ и дадим правильные права:

Код: Выделить всё

# cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf
# chmod 640 /var/db/mysql/my.cnf
И перейдем к редактированию этого файла (я не буду объяснять конфигурационные опции мускула, так как это выходит за рамки данной статьи. Скажу лишь, что опций, указанных ниже, будет вполне достаточно, чтобы это все заработало):

Код: Выделить всё

[client]
port            = 3306
socket          = /tmp/mysql.sock
 [mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 256M
max_allowed_packet = 10M
table_cache = 256
sort_buffer_size = 8M
read_buffer_size = 4M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 8
log-bin
server-id       = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
Теперь установим SpamAssassin.

Код: Выделить всё

# cd /usr/ports/mail/p5-Mail-SpamAssassin/
# make config
Помечаем следующие опции для сборки:
  • AS_ROOT
    SPAMC
    DKIM
    SSL
    GNUPG
    MYSQL
    RAZOR
    DCC
Устанавливаем:

Код: Выделить всё

# make install clean
В конце, при завершении установки, вам будет задан вопрос, обновить ли базы spamassassin’a – соглашайтесь, а вернее запустите:

Код: Выделить всё

# sa-update
Теперь можно переходить к созданию базы данных для SpamAssassin и настройки конфигурационного файла.

Сразу хочу отметить, что в данной инструкции будет настраиваться только глобальные настройки. Т.е. в MySQL будет хранится только AWL (autowhitelisting - история каждой переписки и оценивание на её основе последующих писем, и данных bayes - собственно правила обучения. Когда мы будет "кормить" фильтр письмами ham и spam, то он будет считывать письмо и заносить соответствующие данные в базу о том, что считать спамом, а что нет. Вот эти данные и будут храниться в SQL).

Начнем с создания БД.

Для начала сообщим фильтру необходимые параметры для запуска. Занесем в rc.conf следующие строчки:

Код: Выделить всё

spamd_enable="YES"
spamd_flags="-d -x -u spamd -H /var/spool/spamd -s /var/log/spamassassin/spamd.log -m 16 -q"
Теперь идем в мускул:

Код: Выделить всё

use mysql;
insert into user (Host, User, Password) values('localhost','spamassassin',password("SApassword"));
insert into db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv) values('localhost','spamassassin','spamassassin','Y','Y','Y','Y');
create database spamassassin;
quit
Создаем таблицы в нашей БД. После установки из портов у нас появятся нужные файлы, для создания требуемых таблиц. Так что ничего самим писать не придется. Воспользуемся этими файлами. Они лежат тут: /usr/local/share/doc/p5-Mail-SpamAssassin/sql

Код: Выделить всё

# cd /usr/local/share/doc/p5-Mail-SpamAssassin/sql
# mysql -h localhost -u root -p spamassassin < awl_mysql.sql
# mysql -h localhost -u root -p spamassassin < bayes_mysql.sql
Установка и настройка Pyzor

Установку Pyzor необходимо выполнить из портов, хотя он должен быть установлен вместе с фильтром (проверьте это):

Код: Выделить всё

# cd /usr/ports/mail/pyzor
# make install
После завершения установки Pyzor необходимо выполнить команду pyzor discover, после чего в Вашей домашней папке появится папка .pyzor, а в ней файл servers. На данном этапе настройка Pyzor заканчивается.

Установка и настройка Razor-Agents

Установку Razor-Agents необходимо выполнить из портов, хотя он должен быть установлен вместе с фильтром (проверьте это):

Код: Выделить всё

# cd /usr/ports/mail/razor-agents
# make install
После завершения установки Razor-Agents необходимо выполнить команды razor-admin -create и razor-admin -register, после чего в Вашей домашней папке появится папка .razor, а в ней несколько файлов. На данном этапе настройка Razor заканчивается.

Установка и настройка DCC

Установку DCC необходимо выполнить из портов:

Код: Выделить всё

# cd /usr/ports/mail/dcc-dccd
# make install
Какая-либо дополнительная настройка не требуется. Работоспособность DCC можно проверить, выполнив команду cdcc 'info'. Внимание, для корректной работы DCC Ваш брандмауэр должен разрешать прохождение UDP-трафика с 6277 порта серверов, находящихся во внешней сети, поэтому добавьте соответствующие правила, если они отсутствуют.

Теперь переходим к конфигу. Он лежит в папке /usr/local/etc/mail/spamassassin/ - local.cf.

Приводим его к такому виду:

Код: Выделить всё

#Переписывать заголовок. Именно по этой записи будет ориентироваться локальный доставщик и #его плагин sieve, который мы настроили ранее. Если заголовок будет переписан и в нем будет #содержаться слово SPAM, то такое письмо не попадет в конечный ящик пользователей.

rewrite_header Subject *****SPAM*****

#режим модификации сообщения, если оно расценено как СПАМ. В данном случае у нас #модифицируется заголовок сообщения. В случае, если здесь параметр будет указан 1, то #оригинальное сообщение будет сохранено и прикреплено к новому, если письмо будет #расценено как спам.

report_safe 0

#не проверять сообщения из этих подсетей

trusted_networks 192.168.0.

#Метод блокировки файлов при обращении к ним, во избежание повреждения файлов.

lock_method flock

#Сколько должно набрать письмо баллов при оценке, чтобы быть расцененым, как спам

required_score 5.0

#Использовать БД bayes при анализер

use_bayes 1

#Использовать автообучение. После каждого анализа база анализированных писем пополняется

bayes_auto_learn 1

#Игнорировать следующие заголовки

bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status

#Минимальное количество проанализированных писем перед тем, как SA «примется за работу»

bayes_min_ham_num 50
bayes_min_spam_num 50

#Минимальный балл, необходимый SA, чтобы он добавил в БД письмо, расцененное, как НЕспам

bayes_auto_learn_threshold_nonspam 0.001

#Минимальный балл, необходимый SA, чтобы он добавил в БД письмо, расцененное, как спам

bayes_auto_learn_threshold_spam 12.0

#Где хранится bayes

bayes_store_module              Mail::SpamAssassin::BayesStore::MySQL

#параметры подключения к MySQL

bayes_sql_dsn                   DBI:mysql:spamassassin:localhost
bayes_sql_username              spamassassin
bayes_sql_password              :tknfzCbcntvf6969

#Где хранится AWL

auto_whitelist_factory          Mail::SpamAssassin::SQLBasedAddrList

#параметры подключения к MySQL

user_awl_dsn                    DBI:mysql:spamassassin:localhost
user_awl_sql_username           spamassassin
user_awl_sql_password           :tknfzCbcntvf6969
user_awl_sql_table              awl

#Использовать ли pyzor

use_pyzor 1

# Использовать ли razor. Аналогично можно поступить с DCC (но у меня он не включен)

use_razor2 1

#Не обращаться к RBL спискам

skip_rbl_checks 1

#Раздел для плагинов. Не используется у меня

ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
# Put here some data, if you want make work the plugin
endif # Mail::SpamAssassin::Plugin::Shortcircuit
Не забываем включить наши фильтры. В папке фильтра (/usr/local/etc/mail/spamassassin/) есть файлы в стиле v310.pre - в этих файлах мы можем подключать плагины. Нам важно, чтобы был включен AWL, Bayes, Razor, Pyzor.

На этом настройка SA закончилась.

GreyListing

Для постфикса есть специальный "свой" грейлистинг - postgrey.

Устанавливается и настраивается довольно (если не ОЧЕНЬ) просто.

Код: Выделить всё

# cd /usr/ports/mail/postgrey
# make install clean
После завершения установки у нас появятся два файлика в папке /usr/local/etc/postfix/

Код: Выделить всё

postgrey_whitelist_clients 
postgrey_whitelist_recipients 
В файле whitelist_clients (белый список клиентов), вы можете определить список почтовых серверов, которые вы не хотите подвергать фильтрации по серому списку. Например, потому, что вы доверяете этим узлам, или потому что это узел, который имеет проблемы с серым списком.

В файле whitelist_recipients (белый список адресатов), вы можете указать список адресатов, на которых не распространяется действие серого списка.

Определяйте содержимое этих файлов по своему желанию.

Теперь идем в rc.conf и добавляем следующие строки:

Код: Выделить всё

postgrey_enable="YES"
postgrey_flags="--delay=300 --max-age=31 --inet=localhost:10023 -d"
Обязательно запоминаем параметр postgrey_flags, а именно порт. Он нам понадобиться позже, при настройке postfix’a.

Дополнительные параметры можно посмотреть в мане (man postgrey или в справке perldoc postgrey). Тут мы определили время, на которое передача сообщения откладывается (300 секунд = 5 минут), время на которое наш сервер "запомнит" адрес (31 день) и, наконец, на каком порту слушаться.

Теперь можно настраивать конфиг postfix и запускать весь софт, проверять работу.

Настройка Postfix


Требуемые для настройки почтового сервера файлы лежат в папке /usr/local/etc/postfix:
  • main.cf
    master.cf
Начнем с main.cf. Приведем этот файл к следующему виду:

Код: Выделить всё

#различные директории
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
alias_maps = hash:/etc/mail/aliases
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
#Месторасположение различной документации (данные пути не являются обязательными)
html_directory = /usr/local/share/doc/postfix
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = /usr/local/share/doc/postfix
#Права
mail_owner = postfix
default_privs = nobody
#Сетевые настройки
myhostname = mail.mydomain.com
mydomain = localhost
myorigin = $mydomain
inet_interfaces = all
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost.$myhostname, localhost
mynetworks_style = host
mynetworks = 127.0.0.0/24
inet_protocols = ipv4
#Какое приветствие выдавать при подключении к серверу
smtpd_banner = $myhostname ESMTP $mail_name
#Отладка
debug_peer_level = 5
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5
#Где искать команду «послать почту» Postfix’a. Используется для вставки в очередь писем.
setgid_group = maildrop
###Включаем поддержу SASL
#Включение поддержки старых почтовых клиентов для исп-я авторизации
broken_sasl_auth_clients = yes
#включение поддержки SASL
smtpd_sasl_auth_enable = yes
#используем авторизацию dovecot
smtpd_sasl_type = dovecot
#Указываем путь к тому же сокету, что указан в конфиге dovecot.conf в блоке 
#socket listen {
#    master {
#    path = /var/run/dovecot/auth-master
#      mode = 0600
#      user = vmail
#      group = vmail
#    }
#    client {
#      path = /var/spool/postfix/private/auth
#      mode = 0660
#      user = postfix
#      group = postfix
#    }
#  }
smtpd_sasl_path = /var/spool/postfix/private/auth
#Realm для SASL аутентификации
smtpd_sasl_local_domain = $mydomain
#Запрет анонимной аутентификации
smtpd_sasl_security_options = noanonymous
#Включаем поддержку TLS
#сообщать клиентам о поддержке TLS
smtpd_use_tls = yes
smtpd_tls_security_level = may
#использовать аутентификацию SMTP только для TLS-соединений
smtpd_tls_auth_only = yes
#местонахождение закрытого ключа сервера
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/mail.mydomain.com--unencrypted-key.pem
#местонахождение сертификата сервера
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/mail.mydomain.com -cert.pem
#местонахождение самоподписного доверенного сертификата
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/mydomain.com-CAcert.pem
smtpd_tls_session_cache_database = btree:/var/db/postfix/smtpd_tls_session_cache
#детальность сообщений о TLS-активности, выводимых в лог
smtpd_tls_loglevel = 3
#3апрашивать заголовки сообщений с информацией о версии протокола и алгоритме шифрования
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl/sasl_passwd
#имя устройства-генератора псевдослучайных чисел (PRNG)
tls_random_source = dev:/dev/urandom
#Настраиваем виртуальных пользователей
virtual_transport = dovecot
virtual_mailbox_base = /usr/home/virtualmail
virtual_mailbox_domains = ldap:$config_directory/ldap/virtual_domain.cf
virtual_minimum_uid = 100
virtual_uid_maps = ldap:$config_directory/ldap/virtual_uid.cf
virtual_gid_maps = $virtual_uid_maps
virtual_mailbox_maps = ldap:$config_directory/ldap/virtual_mailbox_recipient.cf
virtual_alias_maps = ldap:$config_directory/ldap/virtual_aliases.cf
#Делаем необходимые настройки, чтобы наш локальный доставщик dovecot для виртуальных #пользователей работал
dovecot_destination_recipient_limit = 1
mailbox_transport = dovecot
smtpd_sender_login_maps = ldap:$config_directory/ldap/virtual_sender_login.cf
#Фильтр антивируса clamSMTP. Здесь мы говорим, чтобы письмо отправлялось на порт 10025, #который слушается clamSMTP (см. конфиг clamSMTP)
content_filter = clamsmtpd:127.0.0.1:10025
receive_override_options = no_address_mappings
###Боремся против спама
#1. Ограничиваем размер сообщения
message_size_limit = 10485760
#2. Изменяем коды ответов об ошибках для того, чтобы у спамеров было меньше озможностей #для анализа, почему их сообщение не проходит
invalid_hostname_reject_code = 550
non_fqdn_reject_code = 550
unknown_address_reject_code = 550
unknown_client_reject_code = 550
unknown_hostname_reject_code = 550
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
unknown_local_recipient_reject_code = 550
#3. Затем необходимо запретить использование адресов, отличных от определенных в документе #RFC-821, запретить использование
# команды VRFY и потребовать обязательное использование команды HELO/EHLO
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_helo_required = yes
smtp_always_send_ehlo = yes
smtpd_hard_error_limit = 8
smtpd_delay_reject = yes
#4. Ограничения
smtpd_etrn_restrictions =
  permit_mynetworks,
  reject
smtpd_helo_restrictions=
  permit_mynetworks,
  reject_invalid_helo_hostname,
  reject_non_fqdn_hostname,
  reject_invalid_hostname,
  check_helo_access hash:/usr/local/etc/postfix/checks/access_helo
smtpd_data_restrictions=
  permit_mynetworks,
  reject_multi_recipient_bounce,
  reject_unauth_pipelining
smtpd_sender_restrictions=
  check_sender_access hash:/usr/local/etc/postfix/checks/access_sender,
  permit_sasl_authenticated,
  permit_mynetworks,
  reject_non_fqdn_sender,
  reject_unknown_sender_domain,
  reject_unlisted_sender,
  reject_unverified_sender,
  check_sender_access hash:/usr/local/etc/postfix/checks/access_sender
smtpd_recipient_restrictions=
  permit_sasl_authenticated,
  permit_mynetworks,
  reject_unauth_destination,
#Здесь мы включаем поддержку грейлистинга. Передаем письмо на проверку на порт 10023, #который прослушивается нашим postgrey (см. конфиг postgrey)
  check_policy_service inet:127.0.0.1:10023,
  reject_unauth_pipelining,
  reject_unknown_client_hostname,
  reject_non_fqdn_recipient,
  reject_unknown_recipient_domain,
  reject_unverified_recipient,
  reject_unlisted_recipient,
  reject_invalid_helo_hostname,
  reject_non_fqdn_helo_hostname,
  reject_non_fqdn_sender,
  reject_unknown_sender_domain,
  reject_unverified_sender,
smtpd_client_restrictions=
  permit_sasl_authenticated,
  reject_plaintext_session,
  check_client_access hash:/usr/local/etc/postfix/access_client,
  check_client_access pcre:/usr/local/etc/postfix/access_client.pcre
#5. Временные интервалы. Все задержки указаны в соответствии с RFC 2821
smtpd_timeout=5m
smtpd_starttls_timeout=5m
smtp_mail_timeout=5m
smtp_rcpt_timeout=5m
smtp_data_init_timeout=2m
smtp_data_xfer_timeout=3m
smtp_data_done_timeout=10m
maximal_queue_lifetime=4d
bounce_queue_lifetime=4d
queue_run_delay=30m
minimal_backoff_time=3h
maximal_backoff_time=5h
#6. Проверки заголовков
header_checks=pcre:$config_directory/checks/header_check
mime_header_checks=pcre:$config_directory/checks/mime_check
Теперь опишем параметры, указанные в разделе *_restrictions:

permit_mynetworks - разрешить доступ из доверенных сетей
permit_sasl_authenticated - разрешить доступ клиентам, прошедшим процедуру аутентификации SMTP
reject_unauth_destination - если наш сервер является конечной точкой следования почтового сообщения (сервер может быть релеем для других доменов, но в нашем случае эта возможность не используется) запретить отправку сообщений, получатели которых находятся за пределами доменов, описанных в параметрах $mydestination, $inet_interfaces и $virtual_maps (говоря другими словами, запретить Postfix быть открытым релеем)
reject_unauth_pipelining - запретить некорректное использование команд конвейерной обработки
check_client_access hash:... - проверить, разрешен ли доступ в файле, являющемся параметром данного ограничения (файл access_client имеет формат, описанный в access(5), его содержимое и рекомендации по использованию приведены ниже)
check_client_access pcre:... - ограничение аналогично предыдущему, за исключением того, что используется другой формат файла (файл access_client.pcre имеет формат, описанный в pcre_table(5), его содержимое приведено ниже)
reject_unknown_client_hostname - запретить доступ клиентам, не зарегистрированным в DNS
check_helo_access hash:... - проверить, разрешено ли выданное клиентом приветствие в файле, являющемся параметром данного ограничения (файл имеет формат, описанный в access(5), его содержимое и рекомендации по использованию приведены ниже)
reject_invalid_helo_hostname - запретить доступ, если имя хоста, содержащееся в выданном клиентом приветствии, имеет некорректный синтаксис
reject_non_fqdn_helo_hostname - запретить доступ, если имя хоста, содержащееся в выданном клиентом приветствии, не является FQDN
check_sender_access hash:... - проверить, разрешен ли адрес отправителя сообщения в файле, являющемся параметром данного ограничения (файл имеет формат, описанный в access(5), его содержимое и рекомендации по использованию приведены ниже)
reject_non_fqdn_sender - запретить доступ, если адрес отправителя сообщения имеет некорректный формат
reject_unknown_sender_domain - запретить доступ, если для имени домена адреса отправителя не существует A или MX запись в DNS
reject_unverified_sender - запретить доступ, если адрес отправителя не может быть проверен (механизм проверки описан в Postfix Address Verification Howto)
reject_non_fqdn_recipient - запретить доступ, если адрес получателя сообщения имеет некорректный формат
reject_unknown_recipient_domain - запретить доступ, если для имени домена адреса получателя не существует A или MX запись в DNS
reject_unverified_recipient - запретить доступ, если адрес получателя не может быть проверен (механизм проверки описан в Postfix Address Verification Howto)

Теперь приводим master.cf к следующему виду:

Код: Выделить всё

smtp      inet  n       -       n       -       -       smtpd
#Этой строкой мы добавляем фильтр контента письма – подключаем на spamassassin
    -o content_filter=spamassassin
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
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
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     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
### Здесь настраивается передача письма в clamSMTP и опции для этой передачи
clamsmtpd      unix  -       -       n       -       16      smtp
  -o smtp_send_xforward_command=yes
  -o smtp_enforce_tls=no
#А здесь мы пихаем проверенное письмо обратно Postfix’у (см. конфиг clamsmtpd.conf, где указан #порт 10026). Сами clamsmtp и clamav взаимодействуют через сокет
127.0.0.1:10026 inet  n -       n       -       16      smtpd
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
###Здесь мы подключаем наш фильтр с параметрами
spamassassin      unix        -       n    n   -   -      pipe
 flags=Rq user=spamd argv=/usr/local/bin/spamc -u spamd -e /usr/local/sbin/sendmail -f $sender $recipient
###Здесь мы включаем с параметрами доставщик почты для виртуальных пользователей
dovecot   unix  -       n       n       -       -       pipe
 flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}
В соответствии с конфигурацией main.cf привожу содержимое требуемых файлов.
Создаем в папке /usr/local/etc/postfix папку ldap.

В нее кладем следующие файлы:
  • transport.cf
    virtual_domain.cf
    virtual_quota.cf
    virtual_uid.cf
    virtual_aliases.cf
    virtual_mailbox_recipient.cf
    virtual_sender_login.cf
transport.cf

Код: Выделить всё

(пусто)
virtual_domain.cf

Код: Выделить всё

bind = yes
bind_dn = cn=vmail,ou=accounts,dc=mydomain,dc=com
bind_pw = lamerionok69
server_host = 127.0.0.1
server_port = 389
search_base = vdo=vDomain,ou=accounts,dc=mydomain,dc=com
query_filter = (&(vdName=%s)(vdStatus=1))
result_attribute = vdName
result_format = %s
version = 3
scope = sub
virtual_aliases.cf

Код: Выделить всё

bind = yes
bind_dn = cn=vmail,ou=accounts,dc=mydomain,dc=com
bind_pw = lamerionok69
server_host = 127.0.0.1
server_port = 389
search_base = vao=vAlias,ou=accounts,dc=mydomain,dc=com
query_filter = (&(vaName=%s)(vaStatus=1))
result_attribute = vaMail
result_format = %s
version = 3
virtual_mailbox_recipient.cf

Код: Выделить всё

bind = yes
bind_dn = cn=vmail,ou=accounts,dc=mydomain,dc=com
bind_pw = test
server_host = 127.0.0.1
server_port = 389
search_base = vuo=vUsers,ou=accounts,dc=mydomain,dc=com
query_filter = (&(mail=%s)(vuActive=1)(vuAuth=1))
result_attribute = homeDirectory
result_format = %s
version = 3
virtual_quota.cf

Код: Выделить всё

(пусто)

virtual_sender_login.cf

Код: Выделить всё

bind = yes
bind_dn = cn=vmail,ou=accounts,dc=mydomain,dc=com
bind_pw = test
server_host = 127.0.0.1
server_port = 389
search_base = vuo=vUsers,ou=accounts,dc=mydomain,dc=com
query_filter = (&(mail=%s)(vuActive=1)(vuAuth=1))
result_attribute = mail
result_format = %s
version = 3
virtual_uid.cf

Код: Выделить всё

bind = yes
bind_dn = cn=vmail,ou=accounts,dc=mydomain,dc=com
bind_pw = lamerionok69
server_host = 127.0.0.1
server_port = 389
search_base = vuo=vUsers,ou=accounts,dc=mydomain,dc=com
query_filter = (&(mail=%s)(vuActive=1)(vuAuth=1))
result_attribute = uidNumber
result_format = %s
version = 3
Создаем в каталоге /usr/local/etc/postfix папку checks.
В нее кладем следующие файлы:
  • access_sender
    access_helo
    access_client
    access_client.pcre
    header_check
    mime_check
Теперь "пофайлово" описываем содержимое.

access_sender:

Код: Выделить всё

пусто
Файл access_sender предназначен в основном для разрешения доступа отправителей, адреса или имена доменов которых попали в какой-либо блэклист, или удаленный сервер запрещает проверку их существования. Для разрешения доступа нужного отправителя или всех отправителей нужного домена необходимо добавить правила вида <Почтовый адрес отправителя> OK или @<Имя домена отправителя> OK, соответственно. После изменения файла access_sender необходимо выполнить команду:

Код: Выделить всё

# postmap access_sender
Сейчас этот файл пустой. Пополняйте его по мере необходимости.

access_helo

Код: Выделить всё

127.0.0.1               REJECT Your server configured incorrectly
localhost               REJECT Your server configured incorrectly
localhost.localdomain   REJECT Your server configured incorrectly
localhost.mydomain.com  REJECT Your server configured incorrectly
192.168                 REJECT Your server configured incorrectly
mail.mydomain.com       REJECT Your server configured incorrectly
Правил запрещают доступ клиентам, выдающим некорректное приветсвие (domain.com необходимо заменить на FQDN нашего домена, 1.2.3.4 - на IP-адрес нашего сервера, а вместо email.mydomain.com подставить все FQDN нашего сервера, заданные в DNS записями типа A и CNAME). Также можно подставлять правила, которые разрешают доступ нужным нам коряво настроенным клиентам (коды ошибок и сообщения, выдаваемые при блокировке клиентов, можно изменить на свое усмотрение). После изменения файла access_helo необходимо выполнить команду:

Код: Выделить всё

# postmap access_helo
access_client

Код: Выделить всё

пусто
Файл access_client предназначен в основном для разрешения доступа с хостов, которые не зарегистрированы в DNS (в России таких немало), или попали в какой-либо блэклист (среди таких часто оказываются бесплатные почтовые системы, доски объявлений, форумы и т.п.). Для таких хостов необходимо задать правила вида <IP-адрес> OK и/или hostname OK. Для того, чтобы запретить доступ какому-либо клиенту, необходимо использовать REJECT вместо OK. После изменения файла access_client необходимо выполнить команду:

Код: Выделить всё

# postmap access_client
Сейчас этот файл пуст. Дополняете его по мере необходимости.

access_client.pcre

Файл access_client.pcre предназначен для блокировки абонентов dial-up, кабельных и xdsl сетей, которые не сочли нужным зарегистрировать "нормальное" имя в DNS. Большая часть таких абонентов - СПАМеры. Если Вам все же нужно принимать сообщения от одного из таких абонентов, добавьте его имя хоста или IP-адрес в файл access_client, рассмотренный выше. Файл access_client.pcre имеет следующее содержимое (коды ошибок и сообщения, выдаваемые при блокировке клиентов, можно изменить на свое усмотрение):

Код: Выделить всё

/[ax]dsl.*\..*\..*/i    REJECT Your message looks like SPAM
/\.dsl.*\..*\..*/i      REJECT Your message looks like SPAM
/cable.*\..*\..*/i      REJECT Your message looks like SPAM
/client.*\..*\..*/i     REJECT Your message looks like SPAM
/dhcp.*\..*\..*/i       REJECT Your message looks like SPAM
/dial.*\..*\..*/i       REJECT Your message looks like SPAM
/dialup.*\..*\..*/i     REJECT Your message looks like SPAM
/dslam.*\..*\..*/i      REJECT Your message looks like SPAM
/host.*\..*\..*/i       REJECT Your message looks like SPAM
/node.*\..*\..*/i       REJECT Your message looks like SPAM
/pool.*\..*\..*/i       REJECT Your message looks like SPAM
/ppp.*\..*\..*/i        REJECT Your message looks like SPAM
/user.*\..*\..*/i       REJECT Your message looks like SPAM
header_check

Код: Выделить всё

/^Content-(Type|Disposition):.*namespace:*=.*\.com/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.exe/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.acm/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.ax/         REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.bat/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.bin/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.bpl/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.cat/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.cmd/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.cpl/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.dat/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.dll/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.dpl/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.drv/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.inf/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.ini/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.msc/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.nls/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.ocx/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.olb/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.pif/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.rom/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.scr/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.sys/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.tlb/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.vbs/        REJECT
/^Content-(Type|Disposition):.*namespace:*=.*\.vxd/        REJECT
mime_check

Код: Выделить всё

/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)com)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)exe)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)acm)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)ax)(\?=)?"?\s*$/        REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)bat)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)bin)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)bpl)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)cat)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)cmd)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)cpl)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)dat)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)dll)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)dpl)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)drv)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)inf)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)ini)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)msc)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)nls)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)ocx)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)olb)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)pif)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)rom)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)scr)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)sys)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)tlb)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)vbs)(\?=)?"?\s*$/       REJECT
/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)vxd)(\?=)?"?\s*$/       REJECT
Запускаемся!

Проверяем еще раз файл rc.conf:

Код: Выделить всё

# cat /etc/rc.conf

postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
dovecot_enable="YES"
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
clamsmtpd_enable="YES"
mysql_enable="YES"
spamd_enable="YES"
spamd_flags="-d -x -u spamd -H /var/spool/spamd -s /var/log/spamassassin/spamd.log -m 16 -q"
postgrey_enable="YES"
postgrey_flags="--delay=300 --max-age=31 --inet=localhost:10023 -d"
slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://localhost/ ldap://192.168.0.90/"'
Теперь стартуем все сервисы, необходимые нам

Код: Выделить всё

# cd /usr/local/etc/
# rc.d/clamav-freshclam start
Подождите минутку, пока обновятся базы. После этого сам антивирусник сможет запуститься.

Код: Выделить всё

# rc.d/clamav-clamd start
# rc.d/clamsmtpd start
# rc.d/sa-spamd start
# rc.d/postgrey start
# rc.d/postfix start

mysql-server – он у нас уже запущен
dovecot start – он у нас уже запущен
slapd – он у нас уже запущен

На этом настройка заканчивается.

Литература
Основные статьи:
Postfix + Dovecot + SpamAssasin + Clamav с аворизацией в LDAP или MySQL
Postfix + SASL + LDAP + Courier-IMAP + SSL
Почтовая система среднего офиса на базе Postfix

TLS/SSL
Postfix TLS Support
Postfix + TLS + SASL on FreeBSD

ClamAV/clamSMTP
Подключение ClamAV антивируса к postfix на FreeBSD

SpamAssassin + MySQL + PostFix
My SpamAssassin MySQL How-To
Postfix и Spamassassin: Как фильтровать спам

PostGrey
Postgrey. Установка и настройка грейлиста

Ldap
См. основные статьи

Postfix vs Spam
Filtering spam with Postfix

Общее
Postfix Configuration Parameters
Postfix Howtos and FAQs

Раздел вопросов вынесу в отдельный пост =)

Надеюсь, сие чтиво будет хоть кому-нибудь полезно...
Только FreeBSD, только хардкор

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение mr. brightside » 2012-10-18 18:16:21

Вопросы

1. В документации встречались следующие опции для добавления в rc.conf:

Код: Выделить всё

sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_procname="/usr/local/libexec/postfix/master"
Нужны ли они?

2. В документации встречались следующие опции для включения TLS:

Код: Выделить всё

smtp_use_tls = yes
smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtp_tls_key_file = /usr/local/openssl/certs/email.faeton-spb.ru-unencrypted-key.pem
smtp_tls_cert_file = /usr/local/openssl/certs/email.faeton-spb.ru-cert.pem
smtp_tls_CAfile = /usr/local/openssl/certs/faeton-spb.ru-CAcert.pem
smtp_tls_session_cache_database = btree:/var/db/postfix/smtp_tls_session_cache
В чем принципиальная разница между smtp и smtpd? В моем случае все заработало только при использовании smtpd

3. Что за параметр:

Код: Выделить всё

smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl/sasl_passwd
При настройке своей связки почта никак не хотела доставляться, пока я не прописал эту опцию в свой конфиг. Как только я добавил эту строку и перезапустил сервер – письмо пришло.

При этому, я даже не создал соответствующую папку и файл, но письмо пришло. В чем тут дело?

4. Помогите написать скрипт, который будет уведомлять меня о вирусах. Вот то, что я нашел, но оно не работает:

Код: Выделить всё

#!/bin/sh
DOMAIN=mydomain.com
# Email address to send alerts to
ADMIN= test@mydomain.com
# formail should be in PATH
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
LINE="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
if [ X`echo $SENDER | egrep $DOMAIN` != "X" ];
then MAILTO=$SENDER,$ADMIN
else MAILTO=`echo "$RECIPIENTS" | egrep $DOMAIN | tr '\n' ','`$ADMIN
fi

(echo "Virus name: $VIRUS"
echo "Sender: $SENDER"
echo "Recipient(s): $RECIPIENTS"
echo
if [ "x$EMAIL" != "x" ] && [ -f $EMAIL ]
then
echo "Quarantined to: $EMAIL"
fi
) | cat -v | mail -s "$VIRUS found on mailserver" $MAILTO
5. Как можно проверить работу Clam-антивируса?

6. Включение Clam-антивируса можно произвести со следующими опциями (закомментированы те, с которыми у меня не заработало):

Код: Выделить всё

# AV scan filter (used by content_filter)
clamsmtpd      unix  -       -       n       -       16      smtp
  -o smtp_send_xforward_command=yes
  -o smtp_enforce_tls=no
#  -o max_use=50
#  -o smtp_data_done_timeout=1200s
#  -o disable_dns_lookups=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet  n -       n       -       16      smtpd
#  -o mynetworks=127.0.0.0/8
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
#  -o local_recipient_maps=
#  -o relay_recipient_maps=
#  -o smtpd_restriction_class=
#  -o smtpd_client_restrictions=permit_mynetworks,reject
#  -o smtpd_data_restrictions=reject_unauth_pipelining
#  -o smtpd_end_of_data_restrictions=
#  -o strict_rfc821_envelopes=yes
#  -o smtpd_error_sleep_time=0
#  -o smtpd_soft_error_limit=1001
#  -o smtpd_hard_error_limit=1000
#  -o smtpd_client_connection_count_limit=0
#  -o smtpd_client_connection_rate_limit=0
#  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
#  -o local_header_rewrite_clients=
#  -o smtpd_use_tls=no
Поясните кто-нибудь, почему с ними не работает и нужны ли они вообще?

7. При включении в master.cf поддержки SpamAssasin мы указываем следующие строки:

Код: Выделить всё

spamassassin     unix        -       n    n   -   -      pipe
flags=Rq user=spamd argv=/usr/local/bin/spamc -u spamd -e /usr/local/sbin/sendmail -f $sender $recipient
Здесь флаги добавлять такие же, как для запуска SA или...?

8. Нужно ли мне собирать все, что только можно с SSL и создавать сертификаты для всех элементов почты? Или созданных сертификатов вполне достаточно? (например, LDAP)

9. Аналогичный вопрос для dovecot-ldap.conf. Там есть строки:

Код: Выделить всё

#tls = no
#tls_ca_cert_file =
#tls_ca_cert_dir =
#tls_cert_file =
#tls_key_file =
#tls_cipher_suite =
#tls_require_cert =
Имеет ли смысл делать доступ через сертификаты к сервису LDAP, который находится на этом же серваке?

10. Не нарушает ли безопасность (или другие каноны) следующая настройка dovecot.conf:

Код: Выделить всё

socket listen {
   #master {
     path = /var/run/dovecot/auth-master
     mode = 0600
     user = vmail
     group = vmail
Другими словами, правильно ли указывать юзера vmail владельцем этого файла или нужно идти другим путем?

11. Не заработали следующие параметры для main.cf:

Код: Выделить всё

#transport_maps = ldap:$config_directory/ldap/transport.cf
#virtual_mailbox_limit_maps = ldap:$config_directory/ldap/virtual_quota.cf
#virtual_mailbox_limit_inbox = no
#virtual_mailbox_limit_override=yes
#virtual_maildir_extended=yes
#virtual_overquota_bounce=yes
#virtual_maildir_limit_message="Sorry, maximum quota reached!"
#virtual_create_maildirsize=yes
И в описании конфига я не нашел информации по данным параметрам. Однако, они приводятся в некоторых статьях. Что с ними не так?
Только FreeBSD, только хардкор

ivan__
сержант
Сообщения: 234
Зарегистрирован: 2009-08-11 15:48:32
Откуда: Питер

Re: Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение ivan__ » 2012-10-18 21:28:36

Терпения нехватило и на треть :cz2:
mr. brightside писал(а):1. В документации встречались следующие опции для добавления в rc.conf:

Код: Выделить всё
sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_procname="/usr/local/libexec/postfix/master"


Нужны ли они?
Нет, Sendmail выключен же.
mr. brightside писал(а):2. В документации встречались следующие опции для включения TLS:

Код: Выделить всё
smtp_use_tls = yes
smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtp_tls_key_file = /usr/local/openssl/certs/email.faeton-spb.ru-unencrypted-key.pem
smtp_tls_cert_file = /usr/local/openssl/certs/email.faeton-spb.ru-cert.pem
smtp_tls_CAfile = /usr/local/openssl/certs/faeton-spb.ru-CAcert.pem
smtp_tls_session_cache_database = btree:/var/db/postfix/smtp_tls_session_cache


В чем принципиальная разница между smtp и smtpd? В моем случае все заработало только при использовании smtpd
http://www.postfix.org/TLS_LEGACY_README.html

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение mr. brightside » 2012-10-18 21:33:01

ivan__ писал(а):Терпения нехватило и на треть :cz2:
я старался =)

старался максимально подробно изложить от и до
Только FreeBSD, только хардкор

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение mr. brightside » 2012-10-22 10:07:18

ivan__ писал(а):
mr. brightside писал(а): В чем принципиальная разница между smtp и smtpd? В моем случае все заработало только при использовании smtpd
http://www.postfix.org/TLS_LEGACY_README.html
Из прочитанного понял, что:

- smtp - клиент, делающий отправку писем на другие хосты. Берет письма из почтовой очереди и отсылает. Не зря он при этом называется "The Postfix SMTP+LMTP client".
- smtpd - (или SMTP server) принимает письма и складывает их в очередь входящих сообщений, которые далее, по видимо передаются различным доставщикам, например локальному.

Но я все равно не понял, нужно ли мне прописывать tls-опции для smtp?

Насколько я понял, то при отправке письма я подключаюсь к SMTPD с использованием подключенных сертификатов, далее, отдав ему письмо, при отсылке будет использоваться STMP, верно нет? :cz2:
Только FreeBSD, только хардкор

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение mr. brightside » 2012-10-30 9:35:01

Что, никто не может помочь мне с оставшимися вопросами? =(
Только FreeBSD, только хардкор

ivan__
сержант
Сообщения: 234
Зарегистрирован: 2009-08-11 15:48:32
Откуда: Питер

Re: Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение ivan__ » 2012-11-01 9:22:22

mr. brightside писал(а):Вопросы
3. Что за параметр:

Код: Выделить всё

smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl/sasl_passwd

Код: Выделить всё

smtpd_sasl_local_domain = $mydomain
mr. brightside писал(а):5. Как можно проверить работу Clam-антивируса?
Логично бы было отправить вирус по почте.

И вообще почитай книжечку "Postfix. Подробное руководство." - я уверен, что там ты найдешь почти все ответы на свои вопросы и перестанешь заниматься тупым копипастоми и задавать потом вопросы.

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Настройка почтовой системы на основе Postfix.

Непрочитанное сообщение mr. brightside » 2012-11-01 11:48:51

ivan__ писал(а):И вообще почитай книжечку "Postfix. Подробное руководство."
ах, как я люблю это псевдопоучащие посты, рассчитанные на фрустрацию :ROFL:

Во-первых, я перекопал кучу литературы и не занимался тупым "копипастОмИ". Да, кое-что я скопировал, но привел ниже ссылки.

Из этого всего вышло руководство от и до, которое я проверил на системе. Вполне возможно, что оно сможет помочь кому-либо и не придется бегать в поисках.

Во-вторых, книжечку я уже читаю. Это также логично, как и чтение манов =) Но, все равно спасибо
Только FreeBSD, только хардкор