AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 533100
Accepted
Nic
Nic
Asked: 2013-08-23 14:32:55 +0800 CST2013-08-23 14:32:55 +0800 CST 2013-08-23 14:32:55 +0800 CST

什么可能导致 Mailman 在版主批准后丢弃邮件?

  • 772

我运行了一个中型 Mailman 系统,该系统最近出现了一个问题,即任何通过审核的邮件都会消失,而不是被传递到邮件列表。这影响了我们的每一个邮件列表。

在单独的网络服务器上执行审核失败

Mailman 环境分为前端和后端两台服务器。后端服务器处理 Postfix 和 Mailman qrunners,而前端服务器托管 Apache 和 Mailman CGI 脚本以调节列表。两台服务器在它们之间共享一个 NFS 挂载,其中包括所有共享的 Mailman 数据。

所有正常的邮件流都正常工作,但是当列表版主登录到 Web 前端并批准邮件时,它会消失得无影无踪。

  1. Postfix smtpd 通过 SMTP 接收传入的消息,然后
  2. Postfix smtpd 将消息传递到/usr/lib/mailman/mail/mailman.
  3. Mailman 将消息写入vette日志文件(后端服务器)标记为等待批准。
  4. 列表版主使用 CGI Web 界面将消息标记为已批准。
  5. Mailman 向日志文件(在前端服务器上)写入一个条目,vette表示已批准保留消息。

此时,与保留的消息相关的 .pck 文件消失了,但没有传递任何内容,也没有创建进一步的日志条目。

审核通过主 Mailman 服务器上的 Web 界面成功

虽然我们通常不会在后端服务器上运行 Mailman Web 界面(以减少攻击面),但我将它运行用于测试目的。当我们在后端服务器上使用 Mailman Web 界面时,消息会正常传递,我们会看到这些日志条目。

  1. smtp使用收件人数量和完成时间更新日志文件
  2. post使用列表名称、消息 ID 和“成功”更新日志文件。

背景

将 Mailman 环境迁移到新服务器后,问题就开始了。它不是自己出现的,很可能是我们尚未发现的一些配置错误的结果。我们正在使用:

  • 两台服务器上的 Scientific Linux 6.3
  • 两台服务器上的 Python 2.6.6
  • 从两台服务器上的操作系统包安装的 Mailman 2.1.12
  • selinux 在后端服务器上处于 Permissive 模式
  • selinux 在前端(Web)服务器上处于强制模式,但没有记录任何日志条目type=AVC。此外,使用setenforce 0并不能解决问题。

我在 Mailman users list 上找到了一篇相关的帖子,但没有提供解决方案。

postfix
  • 2 2 个回答
  • 857 Views

2 个回答

  • Voted
  1. Best Answer
    Nic
    2013-08-24T13:41:09+08:002013-08-24T13:41:09+08:00

    当为 Mailman 使用多个服务器时,每个服务器都需要访问共享存储上的队列目录。而已。

    了解审核消息的去向

    1. 如果一条消息被保留以供审核,则将其移至 $DATA_DIR 并将消息 ID 附加到 $LIST_DATA_DIR/listname/pending.pck。
    2. Mailman Web 界面在pending.pck 中查找要审核的邮件。当主持人批准保留的消息时,它会被移动到 $INQUEUE_DIR 文件夹中。

    哪些数据需要共享?

    如果您有一个单独的服务器来处理 Mailman Web 前端,我建议您这样做。

    必须在共享存储上

    • queue_dir, inqueue_dir, outqueue_dir, cmdqueue_dir, bouncequeue_dir, newsqueue_dir, archqueue_dir, shuntqueue_dir, virginqueue_dir, badqueue_dir, retryqueue_dir,maildir_dir任何运行 Mailman 任务的服务器(包括前端 Web 服务器)都可以访问您的队列文件。

    • DATA_DIR,LIST_DATA_DIR除了邮件队列,还需要共享所有的列表配置文件和持有的邮件文件。

    • PUBLIC_ARCHIVE_FILE_DIR,PRIVATE_ARCHIVE_FILE_DIR如果您使用的是列表存档,那么您还需要共享存档目录。

    应该在共享存储上

    • LOCK_DIR, PID_DIR,PIDFILE我不完全确定,但似乎锁和 pidfiles 应该位于共享存储上,这样如果 qrunner 服务器发生错误,很明显进程异常结束。

    • SITE_PW_FILE,LISTCREATOR_PW_FILE您可能希望您的密码文件位于共享存储上,这样无论您在哪个服务器上,您都可以确保您的主列表密码有效。

    • CONFIG_DIR如果您使用MTA=Postfix,Mailman 将自动在 CONFIG_DIR 中创建别名文件。由于任何带有 Mailman 的机器都可以用来创建或删除列表,因此每台机器也应该能够正确更新共享别名文件。(注意事项:有时您希望在每台机器上配置 Mailman 略有不同,这对于共享的 CONFIG_DIR 可能会很困难。)

    可能在共享存储上

    • LOG_DIR根据您的偏好,您可以将这些目录保留在本地,也可以将它们放在共享存储中。我喜欢将所有日志放在一个正在备份的中央位置,以便在将进程迁移到新服务器后仍然可以使用旧日志。

    • TEMPLATE_DIR如果您完全自定义了 Mailman 模板(例如退回邮件),那么您可能也希望将这些模板放在共享存储中。

    • SPAM_DIR我不知道 SPAM_DIR 的实际用途是什么,但建议所有变量文件都在共享存储上,因此我将其包括在此处。

    仅本地存储

    • WRAPPER_DIR, BIN_DIR, SCRIPTS_DIR,MESSAGES_DIR将二进制文件和脚本保存在本地是一个非常好的主意,这样您就可以利用操作系统提供的软件包进行升级,而不必担心保持共享的二进制文件同步。Mailman 似乎非常注重在涉及共享存储的任何服务器上运行完全相同的版本。

    (2013-09-04 编辑)以下指导由 Mark Sapiro 在 Mailman-Users listserv 上提供。

    我的建议是让标准 GNU Mailman 共享所有可变数据,即 var_prefix 中的所有内容,即所有目录 archives/、data/、lists/、locks/、logs/、qfiles/ 和 spam/,但是你有一个Scientific Linux(Red Hat 衍生)包,因此请参阅http://wiki.list.org/x/KYCB上的常见问题解答,了解这些如何映射到您的安装。

    http://wiki.list.org/x/wgB0上有一个常见问题解答,它在一定程度上解决了这个问题。它可能需要一些补充。请查看所有链接。

    (编辑于 2013-09-04)实际上配置目录应该共享而不是本地。

    • 1
  2. Barry S. Finkel
    2013-12-05T12:42:22+08:002013-12-05T12:42:22+08:00

    Mark Sapiro 于 2013 年 12 月 3 日在 Mailman-users 上发布:

    http://www.mail-archive.com/[email protected]/msg63365.html

    “Mailman 2.1.12 与 Python 2.6+ 不兼容。这已在 2.1.13 中修复。”

    此补丁修复了此特定问题:

    (我在这里不包括补丁,因为格式会被破坏。)

    • 0

相关问题

  • Postfix 在特定端口上接受邮件

  • 让 Postfix 以两种方式处理垃圾邮件

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 后缀电子邮件地址

  • 什么是最好的开源电子邮件解决方案包

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve