我已经在 Ubuntu 14.04 LTS、Postfix 和 Apache 上设置了 Mailman 2.1.16。
通过中继主机发送邮件工作正常,我可以使用 Mailman 的 Web 界面。但 Web 界面对管理请求(订阅请求和保留消息)没有任何作用。这些请求必须由管理员接受,但当我单击“提交所有数据”时,什么也没有发生。
/var/log/mailman/error 显示错误,但时间戳与我的问题无关:
Sep 13 01:54:25 2014 (1161) send_digests() failed: [Errno 13] Permission denied: '/var/lib/mailman/archives/private/hsg/attachments'
Sep 13 01:54:25 2014 (1161) Traceback (most recent call last):
File "/var/lib/mailman/Mailman/Handlers/ToDigest.py", line 99, in process
send_digests(mlist, mboxfp)
File "/var/lib/mailman/Mailman/Handlers/ToDigest.py", line 147, in send_digests
send_i18n_digests(mlist, mboxfp)
File "/var/lib/mailman/Mailman/Handlers/ToDigest.py", line 329, in send_i18n_digests
msg = scrubber(mlist, msg)
File "/var/lib/mailman/Mailman/Handlers/Scrubber.py", line 253, in process
url = save_attachment(mlist, part, dir, filter_html=False)
File "/var/lib/mailman/Mailman/Handlers/Scrubber.py", line 419, in save_attachment
makedirs(fsdir)
File "/var/lib/mailman/Mailman/Handlers/Scrubber.py", line 406, in makedirs
os.makedirs(dir, 02775)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/mailman/archives/private/hsg/attachments'
check_perms -f 给出以下错误:
sudo /usr/lib/mailman/bin/check_perms -f
/var/lib/mailman/icons falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/Mailman falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/mail falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/templates falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/scripts falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/locks falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/logs falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/cron falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/cgi-bin falsche GID (ist: root, soll: list) (korrigiere)
/var/lib/mailman/bin falsche GID (ist: root, soll: list) (korrigiere)
看来 check_perms 无法解决这个问题。这些文件夹都是符号链接,我手动设置了权限,但什么也没发生。
有什么想法吗?有没有什么方法可以调试 Web 界面?
答案1
问题是“错误”的权限是在符号链接上,而不是实际的目录或文件上:
% ll /var/lib/mailman
drwxrwsr-x 4 root list 4096 Nov 2 05:43 archives/
lrwxrwxrwx 1 root root 20 Feb 3 2014 bin -> /usr/lib/mailman/bin/
lrwxrwxrwx 1 root root 24 Feb 3 2014 cgi-bin -> /usr/lib/cgi-bin/mailman/
lrwxrwxrwx 1 root root 21 Feb 3 2014 cron -> /usr/lib/mailman/cron/
drwxrwsr-x 2 root list 4096 Nov 2 05:47 data/
lrwxrwxrwx 1 root root 25 Feb 3 2014 icons -> /usr/share/images/mailman/
drwxrwsr-x 3 root list 4096 Nov 2 05:52 lists/
. . .
在 Ubuntu(所有 Debian?)上,符号链接权限实际上并不重要 - 重要的是其目标的实际权限。尝试更改符号链接的权限将会悄然失败(这就是运行 check_perms 不会执行任何操作的原因)
解决方案是在 chown 上使用 -h 标志:
chown(1) - Linux 手册页
-h, --no-dereference
影响每个符号链接而不是任何引用的文件(仅在可以更改符号链接所有权的系统上有用)
使用 chown -h 命令,然后运行 check_perms 现在应该不会产生任何错误:
% sudo chown -h root:list /var/lib/mailman/*
% sudo /usr/lib/mailman/bin/check_perms -f
No problems found
不过,我不认为这是你的实际问题- 如果您查看,错误不是在您的 check_perms 通知中输出的任何符号链接上引发的,而是在 /archives 中的子目录中引发的,根据您的 check_perm 输出,该子目录具有适当的权限(没有引发“修复”消息)。我不知道这是文件或目录的读取权限还是执行权限,但检查附件目录应该会对此有所了解。
答案2
检查你的 mailman 权限。这些错误可能是由 中的无效权限引起的/var/lib/mailman/
。要修复权限,请运行此命令
sudo /usr/lib/mailman/bin/check_perms -f
有关该命令的文档,请参阅这一页。