首先,我遵循了这封信的指南:https://www.davd.eu/byecloud-building-a-mailserver-with-modern-webmail/

我正在尝试为服务器创建一个邮件服务器,但是我认为我应该先在本地测试上述实现。确保至少可以启动并运行所有内容,以便在尝试在服务器上之前可以查看期望的内容。这是我所做的:

  • 在“/ etc / hosts”中添加了“127.0.0.1 mail.fancydomain.tld”(我想首先使用mail.fancydomain.tld而不是我的实际域,以便在遵循指南的同时尽量减少邮件服务器的更改) )
  • 我创建了这个“docker-compose.yml”:
       version: "3"
    
        services:
          rainloop:
            image: hardware/rainloop
            links:
              - mail
            volumes:
              - ./data/rainloop:/rainloop/data
    
          mail:
            image: tvial/docker-mailserver:latest
            restart: always
            hostname: mail
            domainname: fancydomain.tld
            container_name: mail
            ports:
              - "25:25"
              - "143:143"
              - "587:587"
              - "993:993"
              - "4190:4190"
            volumes:
              - ./data/mail/data:/var/mail
              - ./data/mail/state:/var/mail-state
              - ./mail/config:/tmp/docker-mailserver/
              - ./data/entry/acme/acme-v01.api.letsencrypt.org/sites/mail.fancydomain.tld:/tmp/ssl:ro
            environment:
              - ENABLE_SPAMASSASSIN=1
              - ENABLE_CLAMAV=1
              - ENABLE_FAIL2BAN=1
              - ENABLE_POSTGREY=1
              - ONE_DIR=1
              - DMS_DEBUG=0
              - ENABLE_MANAGESIEVE=1
            cap_add:
              - NET_ADMIN
    
          entry:
            image: abiosoft/caddy:0.10.4
            restart: always
            privileged: true
            links:
              - rainloop
            ports:
              - "80:80"
              - "443:443"
            volumes:
              - ./entry/Caddyfile:/etc/Caddyfile
              - ./data/entry:/root/.caddy
    

    这个“docker-compose.yml”与前面提到的站点提供的存在一个小的差异。我所做的就是按照指南的指示,删除仅在本地运行的环境变量,并以“SSL_”为前缀。
  • 我在当前工作目录中创建了一个名为“entry”的目录,并创建了一个包含以下内容的“Caddyfile”:
       http://mail.fancydomain.tld {
            proxy / rainloop:8888 {
                transparent
            }
        }
    

    同样,与网站上提供的内容仅相差很小。出于与步骤2相同的原因,我在域名前加上了“http://”前缀。
  • 我已使用docker-compose up -d
  • 成功启动了容器
  • 我跑了:curl -o setup.sh https://raw.githubusercontent.com/tomav/docker-mailserver/master/setup.sh; chmod a+x ./setup.sh获得安装脚本。
  • 我运行了
  • :带有这些确切凭据的./setup.sh email add [email protected] fancypassword,再次最小化了更改以保持跟踪。
  • 我通过运行./setup.sh config dkim设置了DKIM记录,但是我没有进一步处理这些记录...因为我不确定在本地如何处理这些记录。
  • 我通过“http://mail.fancydomain.tld/”成功连接到RainLoop Webmail客户端,并继续使用“http://mail.fancydomain.tld/?admin”以以下凭据登录:Login = admin密码= 12345
  • 我进入“域”>“添加域”,并使用填写的表格如下:
    Name: fancydomain.tld
        IMAP
          Server: mail
          Port: 143
          Secure: STARTTLS
        SMTP
          Server: mail
          Port: 587
          Secure: STARTTLS
          Use short login: Checked
          Use authentication: Checked
        SIEVE
          Allow sieve scripts: Checked
          Server: mail
          Port: 4190
          Secure: STARTTLS
    
  • 从这里我返回到“http://mail.fancydomain.tld”,并尝试使用此登录名登录到Webmail客户端:[email protected] Password = fancypassword

  • 这是我得到错误的地方:“无法连接到服务器”

    我不确定从这里要去哪里。我根本不知道如何解决问题。请问我应该做些什么来排除故障并弄清楚错误出在哪里,可以帮忙吗?

    谢谢!

    18/07/01更新:所以...我在“/ etc / hosts”中添加了“127.0.0.1邮件”,它可以正常工作! RainLoop现在可以连接到我的邮件服务器!但是,这提出了一个新问题。对于步骤9,我尝试使用“mail.fancydomain.tld”代替三个“服务器”字段的“邮件”,并且根据测试,连接被拒绝。为什么拒绝整个域而不是短域的连接?

    最佳答案

    该解决方案可以确保RainLoop和Mail这两个容器共享一个桥接网络。然后,所有配置可以保持不变。

    09-05 14:27