在Debian Squeeze上运行Mailman on Nginx(LEMP)/ Ubuntu 11.04 / 11.10
来自Debian / Ubuntu存储库的Mailman软件包配有Apache,但不适用于nginx。 本教程将介绍如何在nginx vhost中使用Debian Squeeze / Ubuntu 11.04 / 11.10 Mailman软件包。 Nginx是一个HTTP服务器,比Apache使用的资源少得多,并提供了更快的网页,特别是静态文件。
我不会保证这将为您工作!
1初步说明
我想在名为www.example.com
/ example.com
的vhost中使用文件根/var/www/www.example.com/web的Mailman
。
您应该有一个工作的LEMP安装(这包括MySQL安装),如这些教程所示:
Ubuntu用户注意事项:
因为我们必须使用root权限运行本教程的所有步骤,所以我们可以使用字符串sudo
在本教程中添加所有命令,也可以通过键入来成为root
sudo su
2安装Fcgiwrap
为了让nginx服务于Mailman的Web界面,我们需要安装fcgiwrap
软件包:
apt-get install fcgiwrap
安装完成后, fcgiwrap
守护进程应该已经启动了; 它的套接字是/var/run/fcgiwrap.socket
。 如果没有运行,可以使用/etc/init.d/fcgiwrap
脚本启动它。
3 Vhost配置
如果您尚未设置nginx vhost,可以按如下方式设置:
我的www.example.com
网站的文档根目录是/var/www/www.example.com/web
- 如果不存在,创建如下:
mkdir -p /var/www/www.example.com/web
接下来,我们为/ etc / nginx / sites-available /
目录中的www.example.com
vhost创建一个基本的nginx vhost配置,如下所示:
vi /etc/nginx/sites-available/www.example.com.vhost
server { listen 80; server_name www.example.com example.com; root /var/www/www.example.com/web; if ($http_host != "www.example.com") { rewrite ^ http://www.example.com$request_uri permanent; } index index.php index.html; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /\. { deny all; access_log off; log_not_found off; } location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ { expires max; log_not_found off; } } |
要启用该vhost,我们从/ etc / nginx / sites-enabled /
目录创建一个符号链接:
cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/www.example.com.vhost www.example.com.vhost
重新加载nginx以使更改生效:
/etc/init.d/nginx reload
4安装Mailman + Mailman Vhost配置
您可以在这里找到一个详细的Mailman安装指南: 如何安装和配置Mailman(使用Postfix)在Debian Squeeze
基本的Mailman安装如下:
apt-get install mailman
在我们可以启动Mailman之前,必须创建名为mailman
的第一个邮件列表:
newlist mailman
root @ server1:〜#newlist mailman
输入运行列表的人的电子邮件:
< - admin电子邮件地址,例如info@example.com
初始邮递员密码:
邮件列表中的< - admin密码
要完成创建邮件列表,您必须编辑/ etc /别名(或
等效)文件,添加以下行,并可能运行
`newaliases'程序:
##邮件邮件列表
邮递员:“| / var / lib / mailman / mail / mailman post mailman”
mailman-admin:“| / var / lib / mailman / mail / mailman admin mailman”
mailman-bounces:“| / var / lib / mailman / mail / mailman bounces mailman”
mailman确认:“| / var / lib / mailman / mail / mailman确认邮件员”
mailman-join:“| / var / lib / mailman / mail / mailman join mailman”
mailman-leave:“| / var / lib / mailman / mail / mailman leave mailman”
mailman-owner:“| / var / lib / mailman / mail / mailman owner mailman”
邮件请求:“| / var / lib / mailman / mail / mailman请求邮件员”
mailman-subscribe:“| / var / lib / mailman / mail / mailman subscribe mailman”
mailman-unsubscribe:“| / var / lib / mailman / mail / mailman取消订阅邮件员”
点击输入以通知邮递员所有者...
< - ENTER
root @ server1:〜#
之后打开/ etc /别名
...
vi /etc/aliases
...并添加以下行:
[...] mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" |
跑
newaliases
之后重启Postfix:
/etc/init.d/postfix restart
然后启动Mailman守护进程:
/etc/init.d/mailman start
打开/etc/nginx/sites-available/www.example.com.vhost
...
vi /etc/nginx/sites-available/www.example.com.vhost
...并将以下部分添加到服务器{}
容器中:
server { [...] location /cgi-bin/mailman { root /usr/lib/; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/share/images/mailman; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } [...] } |
请确保在fastcgi_pass unix:
line中使用正确的套接字。 默认情况下, fcgiwrap
套接字是/var/run/fcgiwrap.socket
。
这定义了您的vhost的别名/ cgi-bin / mailman /
,这意味着您可以访问Mailman管理界面以获取http:// <vhost> / cgi-bin / mailman / admin / <listname>上的列表
,并且可以在http:// <vhost> / cgi-bin / mailman / listinfo / <listname>
找到邮件列表用户的网页。
在http:// <vhost> / pipermail下,
您可以找到邮件列表存档。
重新加载nginx:
/etc/init.d/nginx reload
而已! 您现在可以访问http://www.example.com/cgi-bin/mailman/admin/mailman
来管理邮件员邮件列表...
...和http://www.example.com/cgi-bin/mailman/listinfo/mailman
访问邮件邮件列表的公共页面(用户可以在其中订阅):
在http://www.example.com/pipermail下,
您可以找到邮件列表存档:
5链接
- 邮递员 : http : //www.gnu.org/s/mailman/index.html
- nginx: http : //nginx.org/
- nginx维基: http : //wiki.nginx.org/
- Debian: http : //www.debian.org/
- Ubuntu: http : //www.ubuntu.com/
关于作者
Falko Timme是所有者 Timme Hosting (超快nginx网页托管)。 他是youcl(自2005年以来)的主要维护者, 也是ISPConfig的核心开发人员之一 (自2000年起)。 他还为O'Reilly的“Linux系统管理”一书作出了贡献。