Skip Navigation

Docker email server to host mail archive

Hey all,

I have given up hope of hosting my own mail server but was hoping for one that would serve as an archive -

  • downloads new emails via IMAP from my mail provider on a regular basis
  • allows my mail clients to connect via IMAP to view and search emails

Any suggestions for a docker solution for this?

Thanks

7

You're viewing a single thread.

7 comments
  • I use dovecot for this. And thunderbird to actually move/archive the emails. I use caddy for many of my services, so I have pointed dovecot to caddys certificates (for "my.domain"), since it manages certificates through let's encrypt. I had a plan to install postfix for sending internal emails from my self-hosted services, but it seemed like a bit of configuration and I got busy with other stuff

    I made an excerpt from my docker-compose.yml, but you probably have to figure out some things on your own

    
    version: '3.4'
    
    services:
      dovecot:
        image: dovecot/dovecot:2.3.20
        restart: unless-stopped
        volumes:
          - ./dovecot/:/etc/dovecot
          - /mnt/storage/dovecot/mail:/srv/mail
          - ./caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/wildcard_.my.domain/wildcard_.my.domain.crt:/etc/ssl/cert.crt
          - ./caddy/data/caddy/certificates/acme-v02.api.letsencrypt.org-directory/wildcard_.my.domain/wildcard_.my.domain.key:/etc/ssl/key.key
        ports:
          - 993:993
    

    contents of ./dovecot folder:

    dovecot.conf
    passwords
    

    contents of dovecot.conf (I think I searched online to find a good example, I don't remember where from..)

    ## manage this file
    
    mail_home=/srv/mail/%Lu
    mail_location=sdbox:~/Mail
    mail_uid=1000
    mail_gid=1000
    
    protocols = imap pop3 submission sieve lmtp
    
    first_valid_uid = 1000
    last_valid_uid = 1000
    
    passdb {
      driver = passwd-file
      args = scheme=argon2i /etc/dovecot/passwords
    }
    
    ssl=yes
    ssl_cert=</etc/ssl/cert.crt
    ssl_key=</etc/ssl/key.key
    
    namespace {
      inbox = yes
      separator = /
    
      mailbox Drafts {
        auto = subscribe
        special_use = \Drafts
      }
      mailbox Sent {
        auto = subscribe
        special_use = \Sent
      }
      mailbox Spam {
        auto = subscribe
        special_use = \Junk
      }
      mailbox Trash {
        auto = subscribe
        special_use = \Trash
      }
      mailbox Archive {
        auto = subscribe
        special_use = \Archive
      }
    }
    
    service lmtp {
      inet_listener {
        port = 24
      }
    }
    
    listen = *
    
    log_path=/dev/stdout
    info_log_path=/dev/stdout
    debug_log_path=/dev/stdout
    
You've viewed 7 comments.