debian 9 - 鸽舍圆方筛

debian 9 - 鸽舍圆方筛

我很难理解为了使用 roundcube 的过滤插件而让 sieve 工作时我做错了什么。

我按照指南进行操作https://www.linode.com/docs/guides/email-with-postfix-dovecot-and-mysql/使用基于 SQL 的虚拟用户设置加密邮件服务器。

我从 tarball 安装了 Roundcube,除了创建过滤器之外,它的功能完美。当我尝试创建过滤器时,我收到一条向上滑动的通知,表明它无法与服务器通信。这似乎很公平,在某个地方,seive 和 dovecot 还不是很朋友。

圆形立方体部分此时可能无关紧要。我对此不太熟悉,不知道从哪里开始排除故障,也不知道要寻找什么。

任何帮助将不胜感激

netstat -plnt 显示 dovecot 监听的端口 4190 iptables -L -v -n | grep 4190 显示 ipv4 端口已打开 dovecot -n 报告:

# 2.2.27 (): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 ()
# OS: Linux 4.9.0-12-amd64 x86_64 Debian 9.13 ext4
auth_mechanisms = plain login
mail_location = maildir:/var/mail/vhosts/%d/%n/
mail_privileged_group = mail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  driver = pam
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  sieve = file:~/sieve;active=~/.dovecot.sieve
}
postmaster_address = postmaster at nostalgicmail.com
protocols = imap lmtp sieve sieve
service auth-worker {
  user = vmail
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }
  user = dovecot
}
service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
  process_min_avail = 1
  service_count = 1
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
ssl_cert = </etc/letsencrypt/live/nostalgicmail.com/fullchain.pem
ssl_key =  # hidden, use -P to show it
userdb {
  driver = passwd
}
userdb {
  args = uid=vmail gid=vmail home=/var/vmail/%u
  driver = static
}
protocol lmtp {
  mail_plugins = " sieve"
}
protocol lda {
  mail_plugins = " sieve"
}

答案1

我想写一篇关于我如何解决问题的叙述。希望它可以帮助其他人,并列出一些可以保留以供将来使用的新花絮。

我在其他地方看到了有关调试日志记录的帖子,然后观看系统日志。

vim /etc/dovecot/conf.d/10-logging.conf

#mail_debug = no
mail_debug = yes

tail syslog,重启dovecot,然后登录roundcube

尾-f /var/log/syslog

服务 dovecot 重新启动

~点击、指向、登录电子邮件~

我在系统日志中发现了一些有趣的东西......

Jan 24 06:40:22 hwsrv-753880 systemd[1]: Started Dovecot IMAP/POP3 email server.
Jan 24 06:41:22 hwsrv-753880 dovecot: imap-login: Login: user=<[email protected]>, method=PLAIN, rip=2607:5500:3000:1385::2, lip=2607:5500:3000:1385::2, mpid=31064, TLS, session=<+Cv2vKS5xIMmB1UAMAAThQAAAAAAAAAC>
Jan 24 06:41:22 hwsrv-753880 dovecot: imap([email protected]): Debug: Effective uid=5000, gid=5000, home=/var/vmail/[email protected]
Jan 24 06:41:22 hwsrv-753880 dovecot: imap([email protected]): Debug: Home dir not found: /var/vmail/[email protected]

一条可爱的主目录未找到消息。旁边写着“debug”,这表明除非启用了“debug”,否则您不会看到此内容。我 cd 到 /var 看看...并且 /var/vmail/ 根本不存在!唔...

https://doc.dovecot.org/configuration_manual/mail_location/ 是 dovecot 关于邮件存储位置的文档。它还告诉我:

邮箱自动创建 1.x 时代的 Dovecot 会自动创建邮箱,无论是否设置了 mail_location。在 2.x 中,仅当正确设置 mail_location 时才会触发自动创建。

我通过 SQL 使用虚拟用户,这可能会改变一些事情。我一直在研究 dovecot 文档,并浏览了虚拟用户的主目录https://doc.dovecot.org/configuration_manual/home_directories_for_virtual_users/ 记住上面的正确设置,我必须查看 dovecot 当前的有效设置,并与虚拟用户目录文档页面进行比较。

鸽舍-n 这向您展示了 dovecot 实际使用的(有效)设置

我当前的配置将邮件发送到与文档不匹配的位置。我不确定 dovecot 的内部结构,所以我决定让事情尽可能与文档匹配。由于不了解内部情况,我可能在某些事情上采取了风景优美的路线。

mkdir /var/vmail

chown -R 5000:5000 /var/vmail 我不知道UID和GID 5000是什么用户,也不太关心。这就是Dovecot想要的(看看上面的日志,你就会看到)

grep -rnw '/etc/dovecot' -e 'mail_location' 我不知道在配置文件的海洋中哪里设置了变量。我也不知道它是否在多个位置,因此我使用此 grep 查找 /etc/dovecot 中包含 mail_location 字符串的所有文件。

/etc/dovecot/conf.d/10-mail.conf.orig:13:# path given in the mail_location setting.
/etc/dovecot/conf.d/10-mail.conf.orig:24:#   mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-mail.conf.orig:25:#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf.orig:26:#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
/etc/dovecot/conf.d/10-mail.conf.orig:30:mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf.orig:56:  # mail_location, which is also the default for it.
/etc/dovecot/conf.d/10-mail.conf:13:# path given in the mail_location setting.
/etc/dovecot/conf.d/10-mail.conf:24:#   mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-mail.conf:25:#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf:26:#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
/etc/dovecot/conf.d/10-mail.conf:30:# ~this one is working mail_location = maildir:/var/mail/vhosts/%d/%n/
/etc/dovecot/conf.d/10-mail.conf:31:# mail_location = maildir:/var/vmail/%d/%n/mail
/etc/dovecot/conf.d/10-mail.conf:32:mail_location = maildir:/var/vmail/%u/mail
/etc/dovecot/conf.d/10-mail.conf:58:  # mail_location, which is also the default for it.
/etc/dovecot/dovecot-sql.conf.ext:116:#   mail - Mail location (overrides mail_location setting)
/etc/dovecot/dovecot-sql.conf.ext.orig:115:#   mail - Mail location (overrides mail_location setting)

(旁注,如果你如何阅读上面的内容......跳过这个。
阅读第一部分的所有内容的方法是文件名,然后是行号,然后是该行上的实际文本。有了这些信息,你可以发出 vim +24 /etc/dovecot/conf.d/10-mail.conf 转到您需要修改的文件中的位置。)

我不记得我在哪里读到它,但在我脑海中的某个地方,dovecot 与相对目录根本不能很好地配合,所以我知道我需要使用确切的路径设置 mail_location 。阅读变量上方的文档块,我想出了 mail_location = maildir:/var/vmail/%u/mail

我再次重新启动了 dovecot,并且我之前仍在运行的 syslog 尾部现在闪现了有关未找到主目录的信息,这是使用标准权限创建的。之后,就创建了主目录,等等。在冗长的神奇展示之后,我看到了将筛选规则复制到主目录的奇迹。我登录了 roundcube,一切正常!我将 dubug 重新关闭,再次重新启动 dovecot,感到自豪,并让我的自我膨胀了一点。

最后,sieve 确实配置正确。 Roundcube 配置正确。 Dovecot 正在工作,我完全按照指南进行操作。我终于拿出了文档,花了大约一个小时的时间进行调查,发现问题与文件系统路径有关。

事实证明,无论您多么严格地遵循指南,文档仍然是至高无上的。我觉得很多人已经习惯了即时满足,以至于我们忘记了任何 *UNIX 系统的第一规则......实时FM

相关内容