Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
it:linux:mail_server [2016/02/06 08:49]
kourim [Mail server]
it:linux:mail_server [2016/02/07 19:28] (aktuální)
kourim [Nastavení Dovecot]
Řádek 3: Řádek 3:
  
 <sxh bash>​apt-get install postfix postfix-pgsql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-pgsql</​sxh>​ <sxh bash>​apt-get install postfix postfix-pgsql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-pgsql</​sxh>​
 +
 +Co je potřeba mít všechno připravené dopředu:
 +  * nainstalovanou Postgresql
 +  * nastaven hostname na serveru
 +  * vlastnit doménu se správně nastavenými DNS záznamy
 +  * nastaven reverzní DNS záznam
  
 ==== Nastavení Postgresql ==== ==== Nastavení Postgresql ====
Řádek 59: Řádek 65:
 </​sxh>​ </​sxh>​
  
-==== Nastavení ​postfixu ​====+==== Nastavení ​Postfix ​==== 
 +  - vytvoříme zálohu všech konfiguračních souborů, kde budeme něco editovat<​sxh bash>cp /​etc/​postfix/​main.cf /​etc/​postfix/​main.cf.orig 
 +cp /​etc/​postfix/​master.cf /​etc/​postfix/​master.cf.orig</​sxh>​ 
 +  - zeditujeme /​etc/​postfix/​main.cf,​ aby se dostal do tohoto stavu {{:​it:​linux:​postfix_main.txt|main.cf}} 
 +    * nastavíme všechyn smtpd_* vlastnosti podle ukázky <sxh bash>​smtpd_tls_cert_file=/​etc/​dovecot/​dovecot.pem 
 +smtpd_tls_key_file=/​etc/​dovecot/​private/​dovecot.pem 
 +smtpd_use_tls=yes 
 +smtpd_tls_auth_only = yes 
 + 
 +#Enabling SMTP for authenticated users, and handing off authentication to Dovecot 
 +smtpd_sasl_type = dovecot 
 +smtpd_sasl_path = private/​auth 
 +smtpd_sasl_auth_enable = yes 
 + 
 +smtpd_recipient_restrictions = 
 +        permit_sasl_authenticated,​ 
 +        permit_mynetworks,​ 
 +        reject_unauth_destination</​sxh>​ 
 +    * všechny výskyty example.com přepíšeme na naší doménu 
 +    * na řádku 44 přepíšeme hostname na server hostname 
 +  - vytvoříme konfigurační soubory pro připojení na databázi, vyplníme uživatelské jméno a heslo zadané dříve<​sxh bash; title: /​etc/​postfix/​pgsql-virtual-mailbox-domains.cf>​ 
 +user = mailuser 
 +password = mailuserpass 
 +hosts = 127.0.0.1 
 +dbname = mailserver 
 +query = SELECT 1 FROM virtual_domains WHERE domain_name='​%s'​ 
 +</​sxh><​sxh bash; title: /​etc/​postfix/​pgsql-virtual-mailbox-maps.cf>​ 
 +user = mailuser 
 +password = mailuserpass 
 +hosts = 127.0.0.1 
 +dbname = mailserver 
 +query = SELECT 1 FROM virtual_users WHERE email='​%s'​ 
 +</​sxh><​sxh bash; title: /​etc/​postfix/​pgsql-virtual-alias-maps.cf>​ 
 +user = mailuser 
 +password = mailuserpass 
 +hosts = 127.0.0.1 
 +dbname = mailserver 
 +query = SELECT destination FROM virtual_aliases WHERE source='​%s'​ 
 +</​sxh><​sxh bash; title: /​etc/​postfix/​pgsql-virtual-email2email.cf>​ 
 +user = mailuser 
 +password = mailuserpass 
 +hosts = 127.0.0.1 
 +dbname = mailserver 
 +query = SELECT email FROM virtual_users WHERE email='​%s'​ 
 +</​sxh>​ 
 +  - restartujeme postfix<​sxh bash>​service postfix restart</​sxh>​ 
 +  - nyní můžeme otestovat to, jestli postfix na nové konektory reaguje správně<​sxh bash>​postmap -q example.com pgsql:/​etc/​postfix/​pgsql-virtual-mailbox-domains.cf 
 +postmap -q email@example.com pgsql:/​etc/​postfix/​pgsql-virtual-mailbox-maps.cf 
 +postmap -q alias@example.com pgsql:/​etc/​postfix/​pgsql-virtual-alias-maps.cf</​sxh>​ 
 +  - nyní je potřeba upravit ještě /​etc/​postfix/​master.cf,​ aby se dostal do tohoto stavu {{:​it:​linux:​postfix_master.txt|master.cf}} 
 +    * je potřeba odkomentovat řádek začínající submission a všechny -o navazující 
 +    * je potřeba odkomentovat řádek začínající smtps a všechny -o navazující 
 +  - restartujeme postfix<​sxh bash>​service postfix restart</​sxh>​ 
 +==== Nastavení Dovecot ==== 
 +  - vytvoříme zálohu všech konfiguračních souborů, kde budeme něco editovat <sxh bash>cp /​etc/​dovecot/​dovecot.conf /​etc/​dovecot/​dovecot.conf.orig 
 +cp /​etc/​dovecot/​conf.d/​10-mail.conf /​etc/​dovecot/​conf.d/​10-mail.conf.orig 
 +cp /​etc/​dovecot/​conf.d/​10-auth.conf /​etc/​dovecot/​conf.d/​10-auth.conf.orig 
 +cp /​etc/​dovecot/​dovecot-sql.conf.ext /​etc/​dovecot/​dovecot-sql.conf.ext.orig 
 +cp /​etc/​dovecot/​conf.d/​10-master.conf /​etc/​dovecot/​conf.d/​10-master.conf.orig 
 +cp /​etc/​dovecot/​conf.d/​10-ssl.conf /​etc/​dovecot/​conf.d/​10-ssl.conf.orig 
 +</​sxh>​ 
 +  - zeditujeme hlavní konfigurační soubor /​etc/​dovecot/​dovecot.conf do tohoto stavu {{:​it:​linux:​dovecot_dovecot.txt|dovecot.conf}} 
 +  - zeditujeme soubor /​etc/​dovecot/​conf.d/​10-mail.conf,​ který se stará o ukládání/​získávání emailů z file systému, aby vypadal takto {{:​it:​linux:​dovecot_10-mail.conf.txt|10-mail.conf}}<​sxh bash>​mail_location = maildir:/​var/​mail/​vhosts/​%d/​%n 
 +... 
 +mail_privileged_group = mail</​sxh>​ 
 +  - ověříme, aby nám seděli práva na /​var/​mail<​sxh bash>ls -ld /var/mail 
 +drwxrwsr-x 2 root mail 4096 Mar  6 15:08 /​var/​mail</​sxh>​ 
 +  - vytvoříme si adresáře na ukládání emailu a přidělíme je nově vytvořenému uživateli vmail<​sxh bash>​mkdir -p /​var/​mail/​vhosts/​example.com 
 + 
 +groupadd -g 5000 vmail 
 +useradd -g vmail -u 5000 vmail -d /var/mail 
 + 
 +chown -R vmail:vmail /var/mail 
 +</​sxh>​ 
 +  - zeditujeme soubor /​etc/​dovecot/​conf.d/​10-auth.conf,​ který se stará authentikaci uživatelů,​ aby následující parametry měli tyto hodnoty<​sxh bash>​disable_plaintext_auth = yes 
 +auth_mechanisms = plain login 
 +#!include auth-system.conf.ext ​  # zakomentovat tento řádek 
 +!include auth-sql.conf.ext ​      # odkomentovat tento řádek 
 +</​sxh>​ 
 +  - zeditujeme souboru /​etc/​dovecot/​conf.d/​auth.sql.conf.ext<​sxh bash>​passdb { 
 +  driver = sql 
 +  args = /​etc/​dovecot/​dovecot-sql.conf.ext 
 +
 +userdb { 
 +  driver = static 
 +  args = uid=vmail gid=vmail home=/​var/​mail/​vhosts/​%d/​%n 
 +}</​sxh>​ 
 +  - zeditujeme /​etc/​dovecot/​dovecot-sql.conf.ext,​ kde se drží informace o připojení na databázi, těmito hodnotami<​sxh bash>​driver = pgsql 
 +connect = host=localhost dbname=mailserver user=mailuser password=heslo 
 +default_pass_scheme = SHA512 
 +password_query = SELECT email as user, password FROM virtual_users WHERE email='​%u';​ 
 +</​sxh>​ 
 +  - změníme vlastníka a práva kolem dovecot aplikace<​sxh bash>​chown -R vmail:​dovecot /​etc/​dovecot 
 +chmod -R o-rwx /​etc/​dovecot</​sxh>​ 
 +  - zeditujeme /​etc/​dovecot/​conf.d/​10-master.conf,​ kde se nastavují jaké protokoly a kde se používají<​sxh bash>​service imap-login { 
 +  inet_listener imap { 
 +    port = 0 
 +  } 
 +  inet_listener imaps { 
 +    port = 993 
 +    ssl = yes 
 +  } 
 +  ... 
 +  service pop3-login { 
 +    inet_listener pop3 { 
 +      port = 0 
 +    } 
 +    inet_listener pop3s { 
 +      port = 995 
 +      ssl = yes 
 +    } 
 +    ... 
 +  } 
 +  ... 
 +}</​sxh><​sxh bash> 
 +service lmtp { 
 +  unix_listener /​var/​spool/​postfix/​private/​dovecot-lmtp { 
 +    mode = 0600 
 +    user = postfix 
 +    group = postfix 
 +  } 
 +  # Create inet listener only if you can't use the above UNIX socket 
 +  #​inet_listener lmtp { 
 +    # Avoid making LMTP visible for the entire internet 
 +    #address = 
 +    #port = 
 +  #} 
 +}</​sxh><​sxh bash> 
 +service auth { 
 +  # auth_socket_path points to this userdb socket by default. It's typically 
 +  # used by dovecot-lda,​ doveadm, possibly imap process, etc. Its default 
 +  # permissions make it readable only by root, but you may need to relax these 
 +  # permissions. Users that have access to this socket are able to get a list 
 +  # of all usernames and get results of everyone'​s userdb lookups. 
 +  unix_listener /​var/​spool/​postfix/​private/​auth { 
 +    mode = 0666 
 +    user = postfix 
 +    group = postfix 
 +  } 
 + 
 +  unix_listener auth-userdb { 
 +    mode = 0600 
 +    user = vmail 
 +    #group = 
 +  } 
 + 
 +  # Postfix smtp-auth 
 +  #​unix_listener /​var/​spool/​postfix/​private/​auth { 
 +  #  mode = 0666 
 +  #} 
 + 
 +  # Auth process is run as this user. 
 +  user = dovecot 
 +}</​sxh><​sxh bash> 
 +service auth-worker { 
 +  # Auth worker process is run as root by default, so that it can access 
 +  # /​etc/​shadow. If this isn't necessary, the user should be changed to 
 +  # $default_internal_user. 
 +  user = vmail 
 +}</​sxh>​ 
 +  - zeditujeme /​etc/​dovecot/​conf.d/​10-ssl.conf,​ kde se reší certifikáty,​ těmito vlastnostmi<​sxh bash>​ssl_cert = </​etc/​dovecot/​dovecot.pem 
 +ssl_key = </​etc/​dovecot/​private/​dovecot.pem 
 + 
 +ssl = required</​sxh>​ 
 +  - restartujeme dovecot<​sxh bash>​service dovecot restart</​sxh>​ 
 + 
 +==== Nastavení DKIM ==== 
 +Nainstalujeme dkim 
 +<sxh bash>​apt-get install opendkim opendkim-tools</​sxh>​ 
 +následně přidáme postfix usera do skupiny opendkim<​sxh bash>​adduser postfix opendkim</​sxh>​ 
 + 
 +https://​www.linode.com/​docs/​email/​postfix/​configure-spf-and-dkim-in-postfix-on-debian-8 
 + 
 +==== Nastavení SPF ==== 
 +Nastavení SPF sestává za dvou kroků. Pokud chci, aby se ověřoval můj SPF jinde, je potřeba do DNS záznamů přídat speciální záznam<​sxh>​example.com 1800 TXT v=spf1 a ip4:​ip_serveru -all</​sxh>​toto nastavení ovlivní to, že pokud bude špatně nastaven, tak ostatní servery budou označovat moje emaily jako spam. 
 + 
 +Druhý krok je kontrola SPF na vlastním serveru, aby se případně špatné emaily rovnou zahazovali. Nainstalujeme tedy doplněk na kontrolu<​sxh bash>​apt-get install postfix-policyd-spf-python</​sxh>​do souboru /​etc/​postfix/​master.cf doplníme na konec souboru<​sxh>​policyd-spf ​ unix  -       ​n ​      ​n ​      ​- ​      ​0 ​      ​spawn 
 +    user=policyd-spf argv=/​usr/​bin/​policyd-spf</​sxh>​přidáme do /​etc/​postfix/​main.cf řádek<​sxh>​policyd-spf_time_limit = 3600</​sxh>​a doplníme do vlastnosti **smtpd_recipient_restrictions** na konec check_policy_service unix:​private/​policyd-spf<​sxh>​smtpd_recipient_restrictions = 
 +    ... 
 +    reject_unauth_destination,​ 
 +    check_policy_service unix:​private/​policyd-spf,​ 
 +    ...</​sxh>​Restartujeme postfix<​sxh>​service postfix restart</​sxh>​
  • it/linux/mail_server.1454744987.txt.gz
  • Poslední úprava: 2016/02/06 08:49
  • autor: kourim