mailman 集成 MHonArc 操作指南
mailman 内置的邮件归档程序pipmail ,不能处理mime类型邮件, 一个图文并茂的邮件 ,会被拆分成多个图片,html的邮件也会另存为一个附件。阅读很不方便。那么如何改善呢? 一般建议使用其他的邮件归档程序和mailman集成,下文描述mailman集成MHonArc的步骤:
–1)下载并安装MHonArc-2.6.16-1.noarch.rpm
— 请参考: http://www.mhonarc.org/#support
— 下载def-mime.mrc 作为默认的resource 文件
— 请参考:http://www.mhonarc.org/MHonArc/doc/rcfileexs/def-mime.mrc.html
–2)配置mailman 使用MHonArc
— 请参考:http://www.mhonarc.org/archive/html/mhonarc-users/2001-10/msg00021.html
— 在/etc/mailman/mm_cfg.py 中添加:
PUBLIC_ARCHIVE_URL = ‘/mhonarchive/%(listname)s’
PRIVATE_ARCHIVE_URL = ‘/mhonarchive/%(listname)s’
PUBLIC_EXTERNAL_ARCHIVER = ‘/usr/bin/mhonarc -rcfile /etc/mailman/def-mime.mrc -add -outdir /var/lib/mhonarc/archives/%(listname)s > /dev/null’
PRIVATE_EXTERNAL_ARCHIVER = ‘/usr/bin/mhonarc -rcfile /etc/mailman/def-mime.mrc -add -outdir /var/lib/mhonarc/archives/%(listname)s > /dev/null’
–3)配置httpd.conf
vi /etc/httpd/conf/httpd.conf
–找到 Alias /icons/ 在下面添加:
Alias /mhonarchive/ “/var/lib/mhonarc/archives/”
<Directory “/var/lib/mhonarc/archives/”>
Options -Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
–4)建立列表目录
cd /var/lib
mkdir /mhonarc
chown root:mailman mhonarc
cd mhonarc
mkdir archives
chown root:mailman archives
cd archives
mkdir testlist
chown root:mailman testlist
chmod 775 testlist
–所有需要 mhonarc 归档的列表,都需要手动建立对应的目录,改变目录的group,写权限.
–当新建一个mailman 列表时,系统还是会在默认的归档目录中自动建立对应的列表目录,
–但不会在EXTERNAL_ARCHIVER 指定的目录中自动建立对应的列表目录.所以很遗憾,需要手动建立.
–5)重启Apache
service httpd restart
–6)初始化转换
prefix=/var/lib/mailman
export prefix
mhonarc -mbox $prefix/archives/private/testlist.mbox/testlist.mbox -outdir /var/lib/mhonarc/archives/testlist -rcfile /etc/mailman/def-mime.mrc
— 转换后在/var/lib/mhonarc/archives/testlist目录下后会产生一个.mhonarc.db 文件,该文件是def-mime.mrc 模板必须的,要使得mailman 对 此文件有读权限。
— 否则mhonarc运行会报错,归档失败,但不影响邮件发送。要避免这个问题可以如下更改:
chown root:mailman .mhonarc.db
把目录的读写权限设置为:755
chmod 755 /var/lib/mhonarc/archives/testlist
把目录的所有者更改为:root:mailman
chown root:mailman /var/lib/mhonarc/archives/testlist
–所有需要 mhonarc 归档的列表,都需要初始化转化一下.
–7)重启mailman
service mailman restart
–8)问题
8.1) 从web访问归档时,提示Forbidden ,不允许访问,怎么办?
答:原因是mailman 使用mhonarc 转换邮件为html的时候, 写文件时, 只有owner和group的读权限,没有other的读权限,所以无法访问.
最简单的方法就是把 apache用户放入到mailman 用户组下去.
比如: usermod -G apache,mailman,cvs_project apache
加入后,需要重启apache.
8.2) 从web访问归档时, 显示的是目录,而不是默认的归档列表页. 怎么办?
答: 使用mhonarc 产生的索引文件名是:threads.html 和maillist.html 没有index.html 所以没有显示默认页面.
最简单的方法,在httpd.conf 中 DirectoryIndex 参数添加 threads.html
DirectoryIndex index.html index.html.var threads.html
加入后,需要重启apache.
8.3) 我发现gforge 集成mailman,由Gforge创建的maillist 不受上述改动的影响
答: 是这样的,在gforge的httpd.conf中,对mailman 别名有自己的定义. 这个问题在有时间的时候可以继续研究.
8.4) 如果哪天我不想使用mhonarc来归档了,还是恢复到pipmail来归档,那么会有什么问题么?
答: mailman的逻辑是,先归档到默认的地方,然后查看是否有外部归档程序,如果有,再交给外部归档程序继续归档.所以原始归档总是存在的.
没有什么问题.
8.5) 从web访问归档时, 发现来自post-notification的html模版的邮件中的中文是乱码,但是outlook发过来的是正常的.怎么解决?
答: 在gmail中查原始文件,发现字符集不对,只需要修改post-notification的html 的email模版就可以了.把字符集改成UTF-8.
–9)其他Mailman相关问题
9.1)如果我原来使用80端口,后来使用:81作为web端口,如何更改以前的列表使得其中的所有链接都带有:81?
答:按照下面的做法即可实现:
进入 mailman 目录(一般是/usr/lib/mailman),在其中新建一個文件 (取名为 webdata 好了),內容为:
web_page_url = ‘http://gforge.retailsolution.cn:81/mailman’
然后使用
$ bin/config_list -i webdata yourlist
命令,你就会得到
Non-standard property restored: web_page_url
这就是成功了。
查看你的管理页面,就会发现里面的链接都已经指向新的域名了。
关于作者:
昵称:商云方 档案信息:顾问, HAND张江技术中心 联系方式:你可以通过yunfang.shang@hand-china.com联系作者 点击查看商云方发表过的所有文章... 本文永久链接: http://blog.retailsolution.cn/archives/2226 |
对本文的评价:
备注:MailMan是在安装完Gforge 后就自动带了。如果需要单独安装Mailman 可参考:http://blog.chinaunix.net/u/30686/showart_422200.html
以maillist :2010sh1为例说明,把一个新建的邮件列表转成MhonArc归档所需执行的脚本:
prefix=/var/lib/mailman
export prefix
cd /var/lib/mhonarc/archives
mkdir 2010sh1
chown root:mailman 2010sh1
chmod 775 2010sh1
mhonarc -mbox $prefix/archives/private/2010sh1.mbox -outdir /var/lib/mhonarc/archives/2010sh1 -rcfile /etc/mailman/def-mime.mrc
cd /var/lib/mhonarc/archives/2010sh1
chown root:mailman .mhonarc.db
chmod 755 /var/lib/mhonarc/archives/2010sh1
chown root:mailman /var/lib/mhonarc/archives/2010sh1
chown mailman:mailman /var/lib/mhonarc/archives/2010sh1/maillist.html
chown mailman:mailman /var/lib/mhonarc/archives/2010sh1/threads.html
service mailman restart
写了个脚本:
mhonarcnewdir.sh
#!/bin/bash
if [ $# != 1 ]
then
echo “Usage: mhonarcnewdir listname (you should create mailman list first then do this command)”
else
echo “Your input list is: ” $1
prefix=/var/lib/mailman
export prefix
cd /var/lib/mhonarc/archives
mkdir $1
chown root:mailman $1
chmod 777 $1
mhonarc -mbox $prefix/archives/private/$1.mbox -outdir /var/lib/mhonarc/archives/$1 -rcfile /etc/mailman/def-mime.mrc
cd /var/lib/mhonarc/archives/$1
chown mailman:mailman .mhonarc.db
chown root:mailman /var/lib/mhonarc/archives/$1
chown mailman:mailman /var/lib/mhonarc/archives/$1/maillist.html
chown mailman:mailman /var/lib/mhonarc/archives/$1/threads.html
service mailman restart
fi
创建 列表三步骤:
1、新建mailman列表
cd /usr/lib/mailman/bin
./newlist –urlhost gforge.retailsolution.cn:81 listname
2、更新sendmail帐户信息
vi /etc/aliases
把刚才新建列表提示的帐户信息拷贝并粘贴到这个文件中,保存后,使用 newaliases 命令更新库信息。
3、信件mhonarc归档文件夹
cd /var/lib/mhonarc/archives
./mhonarcnewdir listname