Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| email:configure-dovecot [2025/03/03 17:23] – willy | email:configure-dovecot [2025/03/13 14:05] (current) – [Configuring Dovecot] willy | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Configuring Dovecot ====== | + | ====== |
| - | Changes | + | Dovecot configuation is stored |
| + | |||
| + | For each file, i will show you the changes from the defaults that you need to apply. | ||
| + | |||
| + | ===== Main changes ===== | ||
| + | |||
| + | You need to enable the selected protocols and change the login greeting, as i don't like to let others know that i use dovecot, for security reasons. | ||
| + | |||
| + | Edit **doveconf.conf**: | ||
| < | < | ||
| - | protocols = imap sieve managesieve | + | protocols = imap lmtp sieve |
| login_greeting = IMAP server ready. | login_greeting = IMAP server ready. | ||
| + | # Optional DEBUG stuff to enable if things don't work: | ||
| + | # | ||
| + | # | ||
| + | #auth_debug = yes | ||
| + | # | ||
| + | #mail_debug = yes | ||
| + | # | ||
| </ | </ | ||
| - | Changes in dovecot-sql.conf.ext: | + | ===== Setup link to postfix ===== |
| + | |||
| + | Changes in **conf.d/ | ||
| + | < | ||
| + | service lmtp { | ||
| + | unix_listener / | ||
| + | group = postfix | ||
| + | mode = 0660 | ||
| + | user = postfix | ||
| + | } | ||
| + | |||
| + | service auth { | ||
| + | unix_listener / | ||
| + | group = postfix | ||
| + | mode = 0660 | ||
| + | user = postfix | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | This is required because postfix will use dovecot to deliver mail to mailboxes internally and to perform SASL authentication as well. | ||
| + | |||
| + | ===== Setup Sieve ===== | ||
| + | |||
| + | Sieve let's you create custom filters that will filter your inbound emails. | ||
| + | |||
| + | Changes in **conf.d/ | ||
| + | < | ||
| + | protocol lmtp { | ||
| + | mail_plugins = $mail_plugins sieve | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | And specify which folder should store the filters. | ||
| + | |||
| + | Changes in **conf.d/ | ||
| + | < | ||
| + | plugin { | ||
| + | sieve = file:/ | ||
| + | </ | ||
| + | |||
| + | ===== Setup authentication ===== | ||
| + | |||
| + | Changes in **conf.d/ | ||
| + | < | ||
| + | auth_mechanisms = plain login | ||
| + | # | ||
| + | # | ||
| + | #!include auth-system.conf.ext | ||
| + | !include auth-sql.conf.ext | ||
| + | </ | ||
| + | |||
| + | ===== Setup SQL backend ===== | ||
| + | |||
| + | Changes in **dovecot-sql.conf.ext**: | ||
| < | < | ||
| driver = sqlite | driver = sqlite | ||
| Line 16: | Line 85: | ||
| </ | </ | ||
| - | Changes in conf.d/ | + | ===== Setup mailboxes ===== |
| + | |||
| + | Changes in **conf.d/ | ||
| < | < | ||
| mail_location = maildir:/ | mail_location = maildir:/ | ||
| Line 23: | Line 94: | ||
| </ | </ | ||
| - | Changes in conf.d/ | + | ===== Setup TLS ===== |
| - | < | + | |
| - | auth_mechanisms | + | You need to point to the Let's Encrypt certificates. |
| - | # | + | |
| - | # | + | |
| - | </ | + | |
| - | Changes in conf.d/ | + | Changes in **conf.d/ |
| < | < | ||
| ssl_cert = </ | ssl_cert = </ | ||
| Line 36: | Line 104: | ||
| </ | </ | ||
| - | <file - dovecot.conf> | + | ===== Setup Sieve and ManageSieve ===== |
| + | |||
| + | TBD | ||
| + | |||
| + | <code> | ||
| # Sieve | # Sieve | ||
| managesieve_notify_capability = mailto | managesieve_notify_capability = mailto | ||
| managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i; | managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i; | ||
| + | </ | ||
| - | service auth { | ||
| - | unix_listener / | ||
| - | group = postfix | ||
| - | mode = 0660 | ||
| - | user = postfix | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| + | ===== Testing ===== | ||
| + | |||
| + | Start dovecot | ||
| + | |||
| + | Check that login works: | ||
| + | <code bash> | ||
| + | doveadm auth test -a / | ||
| + | </ | ||
| + | |||
| + | Test IMAP: | ||
| + | <code bash> | ||
| + | telnet mail.mydomain.com 143 | ||
| + | Trying 1.2.3.4... | ||
| + | Connected to mail.mydomain.com. | ||
| + | Escape character is ' | ||
| + | * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] IMAP </ | ||
| + | |||
| + | Test that login works: | ||
| + | <code bash> | ||
| + | telnet 127.0.0.1 1143 | ||
| + | Trying 127.0.0.1... | ||
| + | Connected to 127.0.0.1. | ||
| + | Escape character is ' | ||
| + | * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] IMAP server ready. | ||
| + | a login user@mydomain.com password | ||
| + | a OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE] Logged in | ||
| + | </ | ||
| + | |||
| + | Test TLS works: | ||
| + | <code bash> | ||
| + | openssl s_client -connect mail.mydomain.com: | ||
| + | [ expect similar output as above ] | ||
| + | </ | ||
| + | |||
| + | Test STARTTLS works: | ||
| + | <code bash> | ||
| + | openssl s_client -connect mail.mydomain.com: | ||
| + | [ expect similar output as above ] | ||
| + | </ | ||
| + | If all those checks worked fine, your dovecot seems all set! | ||