Dovecot konfigurace

1. Požadavky

2. Odkazy

3. Instalace Dovecot

Připojte se pomocí SSH k FreeBSD serveru, připojte se k vytvořenému jail, kde je nainstalován postfix server (jexec mail tcsh), a nainstalujte Dovecot pomocí portsnap. Je to z důvodu nutnosti konfigurace podpory PostgreSQL, která není nastavena v rámci pkg balíčku.

portsnap fetch
portsnap extract
cd /usr/ports/mail/dovecot2/
make config
# při konfiguraci dovecot2 nastavte:
# set PGSQL=on: PostgreSQL maps (uses DEFAULT_PGSQL_VER)
# set SSL=on: SSL protocol support
make install clean
  • Poznámka: Pokud je již postfix server nainstalován pomocí instalačního návodu, potom mužete tento krok přeskočit a nainstalujte pouze pigeonhole.
cd /usr/ports/mail/dovecot2-pigeonhole
make install clean

Automatické spouštění dovecot serveru se provede aktualizací souboru '/etc/rc.conf'.

echo 'dovecot_enable="YES"' >> /etc/rc.conf
  • Poznámka: Pro spuštění více instancí dovecot serveru nastavte proměnnou 'dovecot_config' obsahující názvy konfiguračních souborů oddělených mezerami.

4. Konfigurace Dovecot

Vytvořte a zabezpečte IMAPS SSL/TLS certifikáty pro dovecot (nebo použijte existující, které umístěte do vytvořeného adresáře).

mkdir -p /etc/ssl/dovecot
cd /etc/ssl/dovecot
openssl req -new -x509 -nodes -out imap.example.com.cert -keyout imap.example.com.key -days 3650
chmod 640 /etc/ssl/dovecot/*
chgrp -R dovecot /etc/ssl/dovecot

Konfigurace Dovecot2 je umístěna v adresáři '/usr/local/etc/dovecot/conf.d'. Nejprve nakopírujte soubory a adresáře z '/usr/local/etc/dovecot/example-config/' do adresáře '/usr/local/etc/dovecot/' a poté upravte následující konfigurační soubory.

file /usr/local/etc/dovecot/dovecot.conf

#remove '#' from the line !include conf.d/*.conf
protocols = imap sieve
listen = <ip_address>
file /usr/local/etc/dovecot/conf.d/10-auth.conf

#remove '#' from the line !auth-sql.conf.ext
#comment the line !include auth-system.conf.ext
disable_plaintext_auth = yes
auth_default_realm = example.com

Nastavení adresáře Maildir pro ukládání přijatých zpráv.

file /usr/local/etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/mnt/mail/%d/%n
mail_gid = mail
mail_uid = mailnull
mail_privileged_group = mail
first_valid_uid = 26
last_valid_uid = 26
first_valid_gid = 6
last_valid_gid = 6
maildir_copy_with_hardlinks = yes
auth_socket_path = /var/run/dovecot/auth-userdb
  • Poznámka: 'mail_location = maildir:/mnt/mail/%d/%n' by měla obsahovat stejný adresář, který je definován proměnnou 'virtual_mailbox_base = /mnt/mail' v konfiguračním souboru '/usr/local/etc/postfix/main.cf' pro postfix. Stejné parametry musí obsahovat i proměnné 'uid' a 'gid'.

Zakázání IMAP protokolu bez SSL a nastavení SASL verifikace smtp-auth pro postfix.

file /usr/local/etc/dovecot/conf.d/10-master.conf

service imap-login {
    inet_listener imap {
        port = 0
    }
}

service auth {
    unix_listener auth-userdb {
        #mode = 0666
        #user =
        #group =
    }
    # Postfix smtp-auth
        unix_listener /var/spool/postfix/private/auth {
        mode = 0666
    }
    # Auth process is run as this user.
    #user = $default_internal_user
}

Nastavení vygenerovaných SSL certifikátů.

file /usr/local/etc/dovecot/conf.d/10-ssl.conf

# SSL certificates
ssl = yes
ssl_cert = </etc/ssl/dovecot/example.com.crt
ssl_key  = </etc/ssl/dovecot/example.com.key

# SSL certificates for specific domain
#local_name test.example.com {
#    ssl_cert = </etc/ssl/dovecot/imap.test.example.com.cert
#    ssl_key  = </etc/ssl/dovecot/imap.test.example.com.key
#}

Aktivace sieve pluginu.

file /usr/local/etc/dovecot/conf.d/15-lda.conf

protocol lda {
    # Space separated list of plugins to load (default is global mail_plugins).
    postmaster_address = postmaster@example.com
    mail_plugins = $mail_plugins sieve
    lda_mailbox_autocreate = yes
    lda_mailbox_autosubscribe = yes
#    log_path = /var/log/dovecot-lda-errors.log
#    info_log_path = /var/log/dovecot-lda.log
}

nastavení ManageSieve protocolu.

file /usr/local/etc/dovecot/conf.d/20-managesieve.conf

service managesieve-login {
    inet_listener sieve {
        port = 4190
    }
}

service managesieve {
    # Max. number of ManageSieve processes (connections)
    #process_limit = 1024
}

protocol sieve {
    mail_max_userip_connections = 10
    # Explicitly specify the SIEVE and NOTIFY capability reported by the server before
    # login. If left unassigned these will be reported dynamically according to what
    # the Sieve interpreter supports by default (after login this may differ depending
    # on the user).
#    managesieve_sieve_capability =
#    managesieve_notify_capability =
#    log_path = /var/log/dovecot-sieve-errors.log
#    info_log_path = /var/log/dovecot-sieve.log
}

Nastavení sieve pluginu.

file /usr/local/etc/dovecot/conf.d/90-plugin.conf

plugin {
    # Used by both the Sieve plugin and the ManageSieve protocol
    sieve = /mnt/mail/%d/%n/.dovecot.sieve
    sieve_dir = /mnt/mail/%d/%n/.sieve
    sieve_extensions = +notify +imapflags
    recipient_delimiter = +
}

Nastavení autorizace uživatelů pomocí PostgreSQL databáze.

file /usr/local/etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
    driver = sql
    args = /usr/local/etc/dovecot/dovecot-sql.conf
}
userdb {
    driver = static
    args = /usr/local/etc/dovecot/dovecot-sql.conf
}

Abychom mohli provádět SQL dotazy v databázi (např. pro lokální doručování nebo autorizaci uživatelů), musíme povolit přistup do databáze 'mail', kterou požívá postfix. Proto po připojení k PostgreSQL instalaci spusťte následující příkazy.

su pgsql
createuser --pwprompt --encrypted --no-createrole --no-createdb dovecot

psql mail
GRANT SELECT ON mailbox,alias TO dovecot;
  • Poznámka: Nezapomeňte nastavit autentizační soubor '/mnt/sql/pgsql/data/pg_hba.conf' pro uživatele 'dovecot' a znovu načíst konfiguraci PostgreSQL.

Vytvořte soubor s SQL dotazy pro autorizaci uživatelů.

file /usr/local/etc/dovecot/dovecot-sql.conf.ext

driver = pgsql
connect = host= postgresql_ip_address_or_fqdn dbname=mail user=dovecot password=dovecot_sql_password
default_pass_scheme = BLF-CRYPT
password_query = \
  SELECT username as user, password \
  FROM mailbox WHERE username = '%u' AND active = true
user_query = \
  SELECT concat('/mnt/mail/', mailbox.domain, '/', mailbox.local_part) as home, '26' as uid, '6' as gid \
  FROM alias, mailbox WHERE alias.address='%u' and alias.goto=mailbox.username

5. Spuštění a kotrola dovecot serveru

Spuštění dovecot serveru

service dovecot start

SSL IMAP spojeni se může otestovat pomocí příkazu:

openssl s_client -connect imap.example.com:imaps

Komentáře