Announcement

Collapse
No announcement yet.

Почтовый сервер на базе Postfix, Dovecot и Ubuntu 12.04 LTS и виртуальных доменов

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Почтовый сервер на базе Postfix, Dovecot и Ubuntu 12.04 LTS и виртуальных доменов

    Название: Почтовый сервер на базе Postfix, Dovecot и Ubuntu 12.04 LTS и виртуальных доменов.
    1. После установки Ubuntu Server 12.04.3 LTS выполним обновление пакетов
    Code:
    sudo apt-get update
    sudo apt-get upgrade
    2. Устанавливаем Postfix, Dovecot, MySQL и другие необходимые пакеты
    Code:
    sudo apt-get install postfix dovecot-common dovecot-imapd mysql-server mysql-client postfix-mysql dovecot-mysql sasl2-bin
    В процессе установки MySQL задаем пароль root в MySQL: sqlrootpass
    В процессе установки Postfix выбираем тип конфигурации «no configuration» (без конфигурации)
    3. Подключаемся к MySQL
    Code:
    mysql -u root –p
    и создаем базу данных, в которой будут храниться учетные записи почтовых аккаунтов
    Code:
    CREATE DATABASE base0;
    Code:
    USE base0;
    Внимание! Далее будет использоваться пользователь root и hen gfhjkm для доступа к базе данных почтовых аккаунтов в MySQL.
    создаем таблицу доменов
    Code:
    CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
    Создаем таблицу …
    Code:
    CREATE TABLE forwardings ( source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
    Создаем таблицу для пользователей
    Code:
    CREATE TABLE users ( user varchar(80) NOT NULL, email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
    CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
    4. Проверим, что MySQL связана с localhost (127.0.0.1). Для найдем в файле /etc/mysql/my.cnf строку bind-address = 127.0.0.1
    Code:
    grep 'bind-address' /etc/mysql/my.cnf
    в результате выполнения команды на экран должно быть выведено
    Code:
    bind-address            = 127.0.0.1
    5. Создаем группу vmail и пользователя vmail, входящего в эту группу.
    Code:
    sudo groupadd -g 5000 vmail
    sudo useradd -g vmail -u 5000 vmail
    6. Создадим каталог, где будут размещаться почтовые ящики:
    Code:
    sudo mkdir /var/vmail
    сменим имя и группу владельца созданной директории на vmail:vmail
    Code:
    sudo chown vmail:vmail  /var/vmail
    дадим владельцу и его группе полные права на каталог, а другим все запретим
    Code:
    sudo chmod 770 /var/vmail
    Начинаем конфигурировать Postfix.
    7. Создаем конфигурационный файл для доступа к почтовым доменам в базе данных MySQL
    Code:
    sudo nano /etc/postfix/mysql-virtual_domains.cf
    user = root
    password = 12345
    dbname = base0
    query = SELECT domain AS virtual FROM domains WHERE domain = '%s'
    hosts = 127.0.0.1
    8. Создаем конфигурационный файл для определения автоматической пересылки писем с ящика на ящик
    Code:
    sudo nano /etc/postfix/mysql-virtual_forwardings.cf
    user = root
    password = 12345
    dbname = base0
    query = SELECT destination FROM forwardings WHERE source = '%s'
    hosts = 127.0.0.1
    9. Создаем конфигурационный файл для доступа к почтовым аккаунтам в базе данных MySQL
    Code:
    sudo nano /etc/postfix/mysql-virtual_mailboxes.cf
    user = root
    password = 12345
    dbname = base0
    query = SELECT CONCAT( SUBSTRING_INDEX(email, '@', -1), '/' , SUBSTRING_INDEX(email, '@', 1), '/' ) FROM users WHERE email = '%s'
    hosts = 127.0.0.1
    10. Создаем конфигурационный файл для виртуального отображения почты
    Code:
    sudo nano /etc/postfix/mysql-virtual_email2email.cf
    user = root
    password = 12345
    dbname = base0
    query = SELECT email FROM users WHERE email = '%s'
    hosts = 127.0.0.1
    11. Владельцем данных конфигурационных файлов должен быть root, группой владельца - postfix
    Code:
    sudo chown root /etc/postfix/mysql-virtual_*.cf
    sudo chgrp postfix /etc/postfix/mysql-virtual_*.cf
    12. Редактируем конфигурационный файл главного модуля main
    Code:
    sudo nano /etc/postfix/main.cf
    Пишем туда следующее:
    Code:
    smtpd_banner = $myhostname ESMTP (Ubuntu)
    #Отключаем использование comsat
    biff = no
    #Запрещаем автоматически дополнять неполное доменное имя в адресе письма
    append_dot_mydomain = no
    #Указываем имя нашего хоста
    myhostname = ubuntu.myubuntu.org
    # Указываем файл с псевдонимами почтовых ящиков
    alias_maps = hash:/etc/postfix/aliases
    #Указываем, для каких доменов будем принимать почту
    mydestination = localhost
    # Не будем ограничивать размер почтовых ящиков
    mailbox_size_limit = 0
    recipient_delimiter = +
    #Указываем прослушивание на всех сетевых интерфейсах
    inet_interfaces = all
    #Указываем обязательность использование клиентами команды helo
    smtpd_helo_required = yes
    #Описываем доступ доменам, почтовым ящикам и т.д.
    virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
    virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
    virtual_mailbox_base = /var/vmail
    virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
    virtual_minimum_uid = 100
    virtual_uid_maps = static:5000
    virtual_gid_maps = static:5000
    home_mailbox = Maildir/
    local_recipient_maps = $virtual_mailbox_maps
    #Описываем авторизацию по SMTP для клиентов не из доверенной зоны
    smtpd_sasl_type = dovecot
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_path = private/auth
    smtpd_sasl_security_options = noanonymous
    #broken_sasl_auth_clients = yes
    #Указываем каталог очереди для Postfix
    queue_directory = /var/spool/postfix
    smtpd_recipient_restrictions =  permit_mynetworks,  permit_sasl_authenticated, reject_unauth_destination
    proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps  $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
    smtp_use_tls = yes
    smtpd_use_tls = yes
    smtp_tls_note_starttls_offer = yes
    smtpd_tls_key_file = /etc/dovecot/example.key
    smtpd_tls_cert_file = /etc/dovecot/example.cert
    smtpd_tls_loglevel = 1
    smtpd_tls_received_header = yes
    smtpd_tls_session_cache_timeout = 1s
    tls_random_source = dev:/dev/urandom
    13. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель будет представляться именем нашего сервера
    Code:
    sudo nano /etc/postfix/helo.list
    example.org 550 Don't use my hostname
    прохешируем
    Code:
    sudo postmap /etc/postfix/helo.list
    14. Задаем сообщение, которое будет выводить Postfix в случае, если отправитель извне будет говорить, что он из нашей сети
    Code:
    sudo nano /etc/postfix/ext_sender
    example.org 450 Do not use my domain in your envelope sender
    прохешируем
    Code:
    sudo postmap /etc/postfix/ext_sender
    15. Настраиваем демон saslauthd для взаимодействия с Postfix
    Code:
    sudo mkdir -p /var/spool/postfix/var/run/saslauthd
    sudo nano /etc/default/saslauthd
    необходимо проверить, чтобы были закомментированы все строки, и написать следующее:
    Code:
    START=yes
    DESC="SASL Authentication Daemon"
    NAME="saslauthd"
    MECHANISMS="pam"
    MECH_OPTIONS=""
    THREADS=5
    OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
    16. Настраиваем pam-аутентификацию
    Code:
    sudo nano /etc/pam.d/smtp
    Пишем туда следующее:
    Code:
    auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=user passwdcolumn=password crypt=1
    account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=user passwdcolumn=password crypt=1
    17. Настраиваем Postfix для взаимодействия с saslauthd
    Code:
    sudo nano /etc/postfix/sasl/smtpd.conf
    Пишем туда следующее:
    Code:
    pwcheck_method: saslauthd
    mech_list: plain login
    allow_plaintext: true
    auxprop_plugin: mysql
    sql_hostnames: 127.0.0.1
    sql_user: root
    sql_passwd: 12345
    sql_database: base0
    sql_select: SELECT password FROM users WHERE user = '%u'
    18. Владельцем данных файлов должен быть root
    Code:
    sudo chown root /etc/pam.d/smtp /etc/postfix/sasl/smtpd.conf
    19. Редактируем конфигурационный файл Postfix
    Code:
    sudo nano /etc/postfix/master.cf
    Добавляем следующие строки
    Code:
    dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
    submission inet n - - - - smtpd
      -o smtpd_tls_security_level=encrypt
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_sasl_type=dovecot
      -o smtpd_sasl_path=private/auth
      -o smtpd_sasl_security_options=noanonymous
      -o smtpd_sasl_local_domain=$myhostname
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject
      -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
      -o smtpd_sender_restrictions=reject_sender_login_mismatch
      -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
    smtps inet n - n - - smtpd
      -o syslog_name=postfix/smtps
      -o smtpd_tls_wrappermode=yes
      -o smtpd_sasl_auth_enable=yes
    20. Добавляем пользователя postfix в группу sasl
    Code:
    sudo adduser postfix sasl
    21. Конфигурируем Dovecot
    Code:
    sudo nano /etc/dovecot/dovecot.conf
    Нужно убедится в том, что все строки закомментированы и добавить следующее
    Code:
    !include_try /usr/share/dovecot/protocols.d/*.protocol
    #Разрешаем авторизацию в plaintext
    disable_plaintext_auth = no
    # Журнал будем писать в файл /var/log/dovecot.err
    log_path = /var/log/dovecot.err
    # Формат даты и времени для регистрируемых событий
    log_timestamp = "%Y-%m-%d %H:%M:%S "
    #Включаем SSL
    ssl = yes
    ssl_cert =< /etc/dovecot/example.cert
    ssl_key =< /etc/dovecot/example.key
    #Строка приветствия при ответе сервера
    login_greeting = Dovecot ready.
    #Описываем тип (maildir) и местонахождения почтовых ящиков (/var/vmail/%d/%n) %d - имя сервера, %n - имя пользователя
    mail_location = maildir:/var/vmail/%d/%n
    #Задаем идентификатор пользователя и группы, с которыми будет работать dovecot
    mail_uid = 5000
    mail_gid = 5000
    mail_privileged_group = vmail
    valid_chroot_dirs = /var/vmail
    #Настраиваем вывод отладочных сообщений
    auth_verbose = yes
    auth_debug = yes
    auth_debug_passwords = yes
    #Типы допустимых вариантов аутентификации
    auth_mechanisms = plain login digest-md5
    #Задаем параметры аутентификации
    passdb {
     driver = sql 
     args = /etc/dovecot/dovecot-sql.conf
    }
    service auth {
      unix_listener auth-userdb {
        mode = 0660
        user = virtual
        group = virtual
      }
      unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        # Assuming the default Postfix user and group
        user = postfix
        group = postfix      
      }
    }
    service imap-login { 
    inet_listener imap { 
    port = 0
     }
    inet_listener imaps { 
    port = 993
    ssl = yes
    }
    }
    22. Настраиваем параметры соединения с базой данных MySQL
    Code:
    sudo nano /etc/dovecot/dovecot-sql.conf
    Пишем туда следующее:
    Code:
    driver = mysql
    connect = host=127.0.0.1 dbname=base0 user=root password=12345
    default_pass_scheme = CRYPT
    password_query = SELECT email AS user , password FROM users WHERE (user = '%u') or (email = '%u');
    23. Проверяем конфигурацию Dovecot
    Code:
    dovecot -a
    24. Создадим в базе данных MySQL почтовый домен и два пользователя
    Code:
    mysql -u root -p
    USE base0;
    INSERT INTO domains (domain) VALUES ('example.org');
    INSERT INTO users (user, email, password) VALUES ('support', 'support@example.org', ENCRYPT('125148'));
    INSERT INTO users (user, email, password) VALUES ('terra', 'terra@example.org', ENCRYPT('148125'));
    25. Создадим сертификат и ключ для SSL
    Code:
    cd /etc/dovecot
    Code:
    sudo openssl req -new -outform PEM -out example.cert -newkey rsa:2048 -nodes -keyout example.key -keyform PEM -days 365 -x509
    В итоге в каталоге /etc/dovecot будет создан сертификат
    Code:
     example.cert и ключ 
    example.key
    26. Владельцем ключа должен быть root
    Code:
    sudo chown root /etc/dovecot/example.key
    27. Перезапускаем saslauthd, dovecot и postfix
    Code:
    sudo service saslauthd restart
    sudo service dovecot restart
    sudo service postfix restart
    28. в Thunderbird настройки:
    Code:
    imap порт 993 имя пользователя user1 SSL/TLS обычный пароль
    smtp порт 465 имя пользователя user1 SSL/TLS обычный пароль
    29. Далее установим, squirrelmail (это веб интерфейс, для нашей почты.) и создадим симлинк в корневую папку нашего веб сервера (у меня апач поэтому папка будет иметь следующее название www)
    Code:
    apt-get install squirrelmail 
    ln -s /usr/share/squirrelmail/ /var/www/webmail
    IPv6 Certification Badge for terra2039

  • #2
    Конфигурационные файлы.

    Конфигурационные файлы.
    main.cf
    Code:
    smtpd_banner = $myhostname ESMTP (debian)
    #Отключаем использование comsat
    biff = no
    #Запрещаем автоматически дополнять неполное доменное имя в адресе письма
    append_dot_mydomain = no
    #Указываем имя нашего хоста
    myhostname = gw0.nauk.name
    # Указываем файл с псевдонимами почтовых ящиков
    alias_maps = hash:/etc/aliases
    #Указываем, для каких доменов будем принимать почту
    mydestination = localhost
    # Не будем ограничивать размер почтовых ящиков
    mailbox_size_limit = 0
    recipient_delimiter = +
    #Указываем прослушивание на всех сетевых интерфейсах
    inet_interfaces = all
    #Указываем обязательность использование клиентами команды helo
    smtpd_helo_required = yes
    #Описываем доступ доменам, почтовым ящикам и т.д.
    virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
    virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
    virtual_mailbox_base = /var/vmail
    virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
    virtual_minimum_uid = 100
    virtual_uid_maps = static:5000
    virtual_gid_maps = static:5000
    home_mailbox = Maildir/
    local_recipient_maps = $virtual_mailbox_maps
    #Описываем авторизацию по SMTP для клиентов не из доверенной зоны
    smtpd_sasl_type = dovecot
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_path = private/auth
    smtpd_sasl_security_options = noanonymous
    #broken_sasl_auth_clients = yes
    #Указываем каталог очереди для Postfix
    queue_directory = /var/spool/postfix
    smtpd_recipient_restrictions =  permit_mynetworks,  permit_sasl_authenticated, reject_unauth_destination
    proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps  $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_can$
    smtp_use_tls = yes
    smtpd_use_tls = yes
    smtp_tls_note_starttls_offer = yes
    smtpd_tls_key_file = /etc/dovecot/nauk.key
    smtpd_tls_cert_file = /etc/dovecot/nauk.cert
    smtpd_tls_loglevel = 1
    smtpd_tls_received_header = yes
    smtpd_tls_session_cache_timeout = 1s
    tls_random_source = dev:/dev/urandom
    master.cf
    Code:
    #
    # Postfix master process configuration file.  For details on the format
    # of the file, see the master(5) manual page (command: "man 5 master").
    #
    # Do not forget to execute "postfix reload" after editing this file.
    #
    # ==========================================================================
    # service type  private unpriv  chroot  wakeup  maxproc command + args
    #               (yes)   (yes)   (yes)   (never) (100)
    # ==========================================================================
    smtp      inet  n       -       -       -       -       smtpd
    #submission inet n       -       -       -       -       smtpd
    #  -o smtpd_tls_security_level=encrypt
    #  -o smtpd_sasl_auth_enable=yes
    #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    #  -o milter_macro_daemon_name=ORIGINATING
    #smtps     inet  n       -       -       -       -       smtpd
    #  -o smtpd_tls_wrappermode=yes
    #  -o smtpd_sasl_auth_enable=yes
    #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    #  -o milter_macro_daemon_name=ORIGINATING
    #628       inet  n       -       -       -       -       qmqpd
    pickup    fifo  n       -       -       60      1       pickup
    cleanup   unix  n       -       -       -       0       cleanup
    qmgr      fifo  n       -       n       300     1       qmgr
    #qmgr     fifo  n       -       -       300     1       oqmgr
    tlsmgr    unix  -       -       -       1000?   1       tlsmgr
    rewrite   unix  -       -       -       -       -       trivial-rewrite
    bounce    unix  -       -       -       -       0       bounce
    defer     unix  -       -       -       -       0       bounce
    trace     unix  -       -       -       -       0       bounce
    verify    unix  -       -       -       -       1       verify
    flush     unix  n       -       -       1000?   0       flush
    proxymap  unix  -       -       n       -       -       proxymap
    proxywrite unix -       -       n       -       1       proxymap
    smtp      unix  -       -       -       -       -       smtp
    # When relaying mail as backup MX, disable fallback_relay to avoid MX loops
    relay     unix  -       -       -       -       -       smtp
       -o smtp_fallback_relay=
    #       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
    showq     unix  n       -       -       -       -       showq
    error     unix  -       -       -       -       -       error
    retry     unix  -       -       -       -       -       error
    discard   unix  -       -       -       -       -       discard
    local     unix  -       n       n       -       -       local
    virtual   unix  -       n       n       -       -       virtual
    lmtp      unix  -       -       -       -       -       lmtp
    anvil     unix  -       -       -       -       1       anvil
    scache    unix  -       -       -       -       1       scache
    #
    # ====================================================================
    # Interfaces to non-Postfix software. Be sure to examine the manual
    # pages of the non-Postfix software to find out what options it wants.
    #
    # Many of the following services use the Postfix pipe(8) delivery
    # agent.  See the pipe(8) man page for information about ${recipient}
    # and other message envelope options.
    # ====================================================================
    #
    # maildrop. See the Postfix MAILDROP_README file for details.
    # Also specify in main.cf: maildrop_destination_recipient_limit=1
    #
    maildrop  unix  -       n       n       -       -       pipe
      flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
    #
    # ====================================================================
    #
    # Recent Cyrus versions can use the existing "lmtp" master.cf entry.
    #
    # Specify in cyrus.conf:
    #   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
    #
    # Specify in main.cf one or more of the following:
    #  mailbox_transport = lmtp:inet:localhost
    #  virtual_transport = lmtp:inet:localhost
    #
    # ====================================================================
    #
    # Cyrus 2.1.5 (Amos Gouaux)
    # Also specify in main.cf: cyrus_destination_recipient_limit=1
    #
    #cyrus     unix  -       n       n       -       -       pipe
    #  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
    #
    # ====================================================================
    # Old example of delivery via Cyrus.
    #
    #old-cyrus unix  -       n       n       -       -       pipe
    #  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
    #
    # ====================================================================
    #
    # See the Postfix UUCP_README file for configuration details.
    #
    uucp      unix  -       n       n       -       -       pipe
      flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
    #
    # Other external delivery methods.
    #
    ifmail    unix  -       n       n       -       -       pipe
      flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
    bsmtp     unix  -       n       n       -       -       pipe
      flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
    scalemail-backend unix   -   n   n   -   2   pipe
      flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
    mailman   unix  -       n       n       -       -       pipe
      flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
      ${nexthop} ${user}
    #dovecot transport
    dovecot unix - n n - - pipe
         flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
    dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
    submission inet n - - - - smtpd
      -o smtpd_tls_security_level=encrypt
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_sasl_type=dovecot
      -o smtpd_sasl_path=private/auth
      -o smtpd_sasl_security_options=noanonymous
      -o smtpd_sasl_local_domain=$myhostname
      -o smtpd_client_restrictions=permit_sasl_authenticated,reject
      -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
      -o smtpd_sender_restrictions=reject_sender_login_mismatch
      -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
    smtps inet n - n - - smtpd
      -o syslog_name=postfix/smtps
      -o smtpd_tls_wrappermode=yes
      -o smtpd_sasl_auth_enable=yes
    dovecot.conf
    Code:
    !include_try /usr/share/dovecot/protocols.d/*.protocol
    #Разрешаем авторизацию в plaintext
    disable_plaintext_auth = no
    # Журнал будем писать в файл /var/log/dovecot/dovecot.err
    log_path = /var/log/dovecot/dovecot.err
    # Формат даты и времени для регистрируемых событий
    log_timestamp = "%d-%m-%Y %H:%M:%S "
    #Включаем SSL
    ssl = yes
    ssl_cert =< /etc/dovecot/nauk.cert
    ssl_key =< /etc/dovecot/nauk.key
    #Строка приветствия при ответе сервера
    login_greeting = Dovecot ready.
    #Описываем тип (maildir) и местонахождения почтовых ящиков (/var/vmail/%d/%n) %d - имя сервера, %n - имя пользователя
    mail_location = maildir:/var/vmail/%d/%n
    #Задаем идентификатор пользователя и группы, с которыми будет работать dovecot
    mail_uid = 5000
    mail_gid = 5000
    mail_privileged_group = vmail
    valid_chroot_dirs = /var/vmail/
    #Настраиваем вывод отладочных сообщений
    auth_verbose = yes
    auth_debug = yes
    auth_debug_passwords = yes
    #Типы допустимых вариантов аутентификации
    auth_mechanisms = plain login digest-md5
    #Задаем параметры аутентификации
    passdb {
     driver = sql
     args = /etc/dovecot/dovecot-sql.conf
    }
    service auth {
      unix_listener auth-userdb {
        mode = 0660
        user = vmail
        group = vmail
      }
      unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        user = postfix
        group = postfix
      }
    }
    service imap-login {
    inet_listener imap {
    port = 143
     }
    inet_listener imaps {
    port = 993
    ssl = yes
    }
    }
    dovecot-sql.conf
    Code:
    driver = mysql
    connect = host=127.0.0.1 dbname=base01 user=root password=12345
    default_pass_scheme = CRYPT
    password_query = SELECT email AS user , password FROM users WHERE (user = '%u') or (email = '%u');
    IPv6 Certification Badge for terra2039

    Comment


    • #3
      postfix antispam config

      main.cf
      Code:
      smtpd_banner = $myhostname ESMTP (debian)#Отключаем использование comsat
      biff = no
      #Запрещаем автоматически дополнять неполное доменное имя в адресе письма
      append_dot_mydomain = no
      #Указываем имя нашего хоста
      myhostname = gw0.purgatory.name
      # Указываем файл с псевдонимами почтовых ящиков
      alias_maps = hash:/etc/aliases
      #Указываем, для каких доменов будем принимать почту
      mydestination = localhost
      # Не будем ограничивать размер почтовых ящиков
      mailbox_size_limit = 0
      recipient_delimiter = +
      #Указываем прослушивание на всех сетевых интерфейсах
      inet_interfaces = all
      relayhost =
      #Далее следуют проверки HELO, т. к. многие спаммеры или пропускают команду SMTP HELO или посылают заведомо неверные данные.
      smtpd_delay_reject = yes
      smtpd_helo_required = yes
      smtpd_helo_restrictions = permit_mynetworks, check_helo_access hash:/etc/postfix/helo_access, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_invalid_hostname, permit
      #Описываем доступ доменам, почтовым ящикам и т.д.
      #Далее следует цепочка фильтрации по отправителю письма.
      smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, check_sender_access regexp:/etc/postfix/sender_access, reject_non_fqdn_sender, reject_unknown_sender_domain, permit
      virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
      virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
      virtual_mailbox_base = /var/vmail
      virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
      virtual_minimum_uid = 100
      virtual_uid_maps = static:5000
      virtual_gid_maps = static:5000
      home_mailbox = Maildir/
      local_recipient_maps = $virtual_mailbox_maps
      #Описываем авторизацию по SMTP для клиентов не из доверенной зоны
      smtpd_sasl_type = dovecot
      smtpd_sasl_auth_enable = yes
      smtpd_sasl_path = private/auth
      smtpd_sasl_security_options = noanonymous
      #broken_sasl_auth_clients = yes
      #Указываем каталог очереди для Postfix
      queue_directory = /var/spool/postfix
      smtpd_recipient_restrictions =  permit_mynetworks,  permit_sasl_authenticated, reject_unauth_destination, reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, check_recipient_access regexp:/etc/postfix/r$
      smtpd_client_restrictions = permit_mynetworks, reject_rbl_client bl.spamcop.net, reject_rbl_client cbl.abuseat.org, permit
      proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps  $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_can$
      smtp_use_tls = yes
      smtpd_use_tls = yes
      smtp_tls_note_starttls_offer = yes
      smtpd_tls_key_file = /etc/dovecot/purgatory.key
      smtpd_tls_cert_file = /etc/dovecot/purgatory.cert
      smtpd_tls_loglevel = 1
      smtpd_tls_received_header = yes
      smtpd_tls_session_cache_timeout = 1s
      tls_random_source = dev:/dev/urandom
      #DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891

      master.cf
      Code:
      ## Postfix master process configuration file.  For details on the format
      # of the file, see the master(5) manual page (command: "man 5 master").
      #
      # Do not forget to execute "postfix reload" after editing this file.
      #
      # ==========================================================================
      # service type  private unpriv  chroot  wakeup  maxproc command + args
      #               (yes)   (yes)   (yes)   (never) (100)
      # ==========================================================================
      smtp      inet  n       -       -       -       -       smtpd
      smtps     inet  n       -       -       -       -       smtpd
      #submission inet n       -       -       -       -       smtpd
      #  -o smtpd_tls_security_level=encrypt
      #  -o smtpd_sasl_auth_enable=yes
      #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
      #  -o milter_macro_daemon_name=ORIGINATING
      #smtps     inet  n       -       -       -       -       smtpd
      #  -o smtpd_tls_wrappermode=yes
      #  -o smtpd_sasl_auth_enable=yes
      #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
      #  -o milter_macro_daemon_name=ORIGINATING
      #628       inet  n       -       -       -       -       qmqpd
      pickup    fifo  n       -       -       60      1       pickup
      cleanup   unix  n       -       -       -       0       cleanup
      qmgr      fifo  n       -       n       300     1       qmgr
      #qmgr     fifo  n       -       -       300     1       oqmgr
      tlsmgr    unix  -       -       -       1000?   1       tlsmgr
      rewrite   unix  -       -       -       -       -       trivial-rewrite
      bounce    unix  -       -       -       -       0       bounce
      defer     unix  -       -       -       -       0       bounce
      trace     unix  -       -       -       -       0       bounce
      verify    unix  -       -       -       -       1       verify
      flush     unix  n       -       -       1000?   0       flush
      proxymap  unix  -       -       n       -       -       proxymap
      proxywrite unix -       -       n       -       1       proxymap
      smtp      unix  -       -       -       -       -       smtp
      # When relaying mail as backup MX, disable fallback_relay to avoid MX loops
      relay     unix  -       -       -       -       -       smtp
         -o smtp_fallback_relay=
      #       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
      showq     unix  n       -       -       -       -       showq
      error     unix  -       -       -       -       -       error
      retry     unix  -       -       -       -       -       error
      discard   unix  -       -       -       -       -       discard
      local     unix  -       n       n       -       -       local
      virtual   unix  -       n       n       -       -       virtual
      lmtp      unix  -       -       -       -       -       lmtp
      anvil     unix  -       -       -       -       1       anvil
      scache    unix  -       -       -       -       1       scache
      #
      # ====================================================================
      # Interfaces to non-Postfix software. Be sure to examine the manual
      # pages of the non-Postfix software to find out what options it wants.
      #
      # Many of the following services use the Postfix pipe(8) delivery
      # agent.  See the pipe(8) man page for information about ${recipient}
      # and other message envelope options.
      # ====================================================================
      #
      # maildrop. See the Postfix MAILDROP_README file for details.
      # Also specify in main.cf: maildrop_destination_recipient_limit=1
      #
      maildrop  unix  -       n       n       -       -       pipe
        flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
      #
      # ====================================================================
      #
      # Recent Cyrus versions can use the existing "lmtp" master.cf entry.
      #
      # Specify in cyrus.conf:
      #   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
      #
      # Specify in main.cf one or more of the following:
      #  mailbox_transport = lmtp:inet:localhost
      #  virtual_transport = lmtp:inet:localhost
      #
      # ====================================================================
      #
      # Cyrus 2.1.5 (Amos Gouaux)
      # Also specify in main.cf: cyrus_destination_recipient_limit=1
      #
      #cyrus     unix  -       n       n       -       -       pipe
      #  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
      #
      # ====================================================================
      # Old example of delivery via Cyrus.
      #
      #old-cyrus unix  -       n       n       -       -       pipe
      #  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
      #
      # ====================================================================
      #
      # See the Postfix UUCP_README file for configuration details.
      #
      uucp      unix  -       n       n       -       -       pipe
        flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
      #
      # Other external delivery methods.
      #
      ifmail    unix  -       n       n       -       -       pipe
        flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
      bsmtp     unix  -       n       n       -       -       pipe
        flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
      scalemail-backend unix   -   n   n   -   2   pipe
        flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
      mailman   unix  -       n       n       -       -       pipe
        flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
        ${nexthop} ${user}
      #dovecot transport
      dovecot unix - n n - - pipe
           flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
      dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
      submission inet n - - - - smtpd
        -o smtpd_tls_security_level=encrypt
        -o smtpd_sasl_auth_enable=yes
        -o smtpd_sasl_type=dovecot
        -o smtpd_sasl_path=private/auth
        -o smtpd_sasl_security_options=noanonymous
        -o smtpd_sasl_local_domain=$myhostname
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject
        -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
        -o smtpd_sender_restrictions=reject_sender_login_mismatch
        -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
      smtps inet n - n - - smtpd
        -o syslog_name=postfix/smtps
        -o smtpd_tls_wrappermode=yes
        -o smtpd_sasl_auth_enable=yes
      policy-spf  unix  -       n       n       -       -       spawn
           user=nobody argv=/usr/bin/policyd-spf
      Для корректной работы, данной конфигурации, необходимо выполнить, следующие действия.
      Code:
      nano /etc/postfix/sender_access
      Code:
      nano /etc/postfix/ext_sender
      Code:
      nano /etc/postfix/helo_access
      Code:
      postmap /etc/postfix/sender_access
      Code:
      postmap /etc/postfix/helo_access
      Code:
      postmap /etc/postfix/ext_sender
      Code:
      aptitude install postfix-policyd-spf-python postgrey
      Далее перезапускаем, постфикс.
      Code:
      service postfix restart
      Last edited by terra; 20.02.2015, 10:40.
      IPv6 Certification Badge for terra2039

      Comment


      • #4
        Долго искал как иметь свой майл сервер, огромное спасибо.

        Comment


        • #5
          Originally posted by paul514 View Post
          Долго искал как иметь свой майл сервер, огромное спасибо.
          мелочи. должно работать. мануал максимально точен.
          IPv6 Certification Badge for terra2039

          Comment

          Working...
          X