如何获取通过 IMAP(而不是 POP)连接的 dovecot 电子邮件服务器的用户列表?
我们的服务器设置为通过 LDAP/PAM 进行身份验证。有没有一种简单的方法可以获取通过 IMAP 而不是 POP 访问邮件的用户列表?我即将将我们的服务器迁移到 Google Apps,并且只想迁移我的 IMAP 用户的所有邮件(总共几百个用户中的几百个)。显然,POP 邮件将与客户端分开迁移。
我宁愿只迁移 IMAP 用户,而不是整个域,因为这样会迁移大量留在服务器中的 POP 邮件,这些邮件已经在客户端的电子邮件程序中被读取/分类/删除。迁移所有这些额外的无用剩余 POP 邮件可能会浪费数周的迁移时间。
我想,如果有人能帮我分析一些日志,看看谁连接了 IMAP 端口(995 或 993),我就可以得到一个列表。我知道我有原始的 dovecot 日志,但希望能找到更干净的解决方案。
答案1
获取登录列表:
cat /var/log/mail.log | grep imap-login
现在我们需要将其精简为更实用的内容——过滤掉用户名并消除重复项:
cat /var/log/mail.log | grep imap-login:\ Login | sed -e 's/.*Login: user=<\(.*\)>, method=.*/\1/g' | sort | uniq
这将获取完整的 imap 登录(提供名称),使用 sed 和正则表达式剪切名称,对其进行排序,然后获取唯一的名称。