📄 1417.html
字号:
</tbody></table>
<p> </p>
<h2><a name="a.7.4"></a>7.4. 运行</h2>
<p> 启动命令如下:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail postfix]# <span class="type">/usr/sbin/postfix start</span></p></td>
</tr>
</tbody></table>
<h2><a name="a.7.5"></a>7.5. 测试Postfix</h2>
<p> 启动Postfix后,首先检查日志/var/log/messages有无错误信息,然后检查进程,应该有如下进程存在:检查端口及进程:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail postfix]#<font color="#ff0000"> </font><span class="type">pstree
|grep master</span></p>
<p> </p>
<p>|-master-+-pickup</p>
<p> </p></td>
</tr>
</tbody></table>
<p> 接着检查端口,应该有如下端口打开:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail postfix]# <span class="type">netstat -an |grep LISTEN</span></p>
<p> </p>
<p>tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN</p>
<p> </p></td>
</tr>
</tbody></table>
<p> 再检测SMTP服务是否正常:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail postfix]# <span class="type">telnet localhost 25</span></p>
<p>Trying 127.0.0.1...<br>
Connected to localhost.<br>
Escape character is '^]'.<br>
220 mail.cngnu.org ESMTP Postfix<br>
<span class="type">QUIT</span><br>
221 Bye<br>
Connection closed by foreign host.</p></td>
</tr>
</tbody></table>
<p> 使用如下命令测试postfix的SMTP的认证(这里仅测试了“virtualuser@cngnu.org”,“trueuser”请自行测试):</p>
<p> PLAIN认证方式:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail postfix]# <font color="#ff0000">perl -MMIME::Base64 -e
\</font></p>
<p><font color="#ff0000">> 'print encode_base64("virtualuser\@cngnu.org\000virtualuser\@cngnu.org\000testpw");'</font><br>
dmlydHVhbHVzZXJAY25nbnUub3JnAHZpcnR1YWx1c2VyQGNuZ251Lm9yZwB0ZXN0cHc=</p>
<p> </p>
<p>[root@mail postfix]# <span class="type">telnet localhost 25</span></p>
<p>Trying 127.0.0.1...<br>
Connected to localhost.<br>
Escape character is '^]'.<br>
220 mail.cngnu.org ESMTP Postfix</p>
<p class="type">EHLO cngnu</p>
<p>250-mail.cngnu.org</p>
<p>250-PIPELINING</p>
<p>250-SIZE 10240000</p>
<p>250-VRFY</p>
<p>250-ETRN</p>
<p>250-AUTH LOGIN PLAIN</p>
<p>250-AUTH=LOGIN PLAIN</p>
<p></p>
<p>250-XVERP</p>
<p>250 8BITMIME</p>
<p class="type">AUTH PLAIN dmlydHVhbHVzZXJAY25nbnUub3JnAHZpcnR1YWx1c2VyQGNuZ251Lm9yZwB0ZXN0cHc==</p>
<p>235 Authentication successful</p>
<p class="type">QUIT</p>
<p>221 Bye</p>
<p>Connection closed by foreign host.</p>
<p> </p>
<p>[root@mail postfix]# <font color="#ff0000">perl -MMIME::Base64 -e \</font></p>
<p><font color="#ff0000">> 'print encode_base64("trueuser\000trueuser\000testpw");'</font><br>
dHJ1ZXVzZXIAdHJ1ZXVzZXIAdGVzdHB3</p>
<p> </p></td>
</tr>
</tbody></table>
<p> LOGIN认证方式:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail postfix]# <font color="#ff0000">perl -MMIME::Base64 -e
\</font></p>
<p><font color="#ff0000">> 'print encode_base64("virtualuser\@cngnu.org");'</font></p>
<p>dmlydHVhbHVzZXJAY25nbnUub3Jn</p>
<p>[root@mail postfix]# <font color="#ff0000">perl -MMIME::Base64 -e \</font></p>
<p><font color="#ff0000">> 'print encode_base64("testpw");'</font></p>
<p>dGVzdHB3</p>
<p> </p>
<p>[root@mail postfix]# <span class="type">telnet localhost 25</span></p>
<p>Trying 127.0.0.1...<br>
Connected to localhost.<br>
Escape character is '^]'.<br>
220 mail.cngnu.org ESMTP Postfix</p>
<p class="type">EHLO cngnu</p>
<p>250-mail.cngnu.org</p>
<p>250-PIPELINING</p>
<p>250-SIZE 10240000</p>
<p>250-VRFY</p>
<p>250-ETRN</p>
<p>250-AUTH LOGIN PLAIN</p>
<p>250-AUTH=LOGIN PLAIN</p>
<p></p>
<p>250-XVERP</p>
<p>250 8BITMIME</p>
<p class="type">AUTH LOGIN</p>
<p><i>3</i>34 VXNlcm5hbWU6</p>
<p class="type">dmlydHVhbHVzZXJAY25nbnUub3Jn</p>
<p>334 UGFzc3dvcmQ6</p>
<p class="type">dGVzdHB3</p>
<p>235 Authentication successful</p>
<p class="type">QUIT</p>
<p>221 Bye</p>
<p>Connection closed by foreign host.</p>
<p> </p>
<p>[root@mail postfix]# <font color="#ff0000">perl -MMIME::Base64 -e \</font></p>
<p><font color="#ff0000">> 'print encode_base64("trueuser");'</font></p>
<p>dHJ1ZXVzZXI=</p>
<p>[root@mail postfix]# <font color="#ff0000">perl -MMIME::Base64 -e \</font></p>
<p><font color="#ff0000">> 'print encode_base64("testpw");'</font></p>
<p>dGVzdHB3</p>
<p> </p></td>
</tr>
</tbody></table>
<p> 此时,由于还没有安装Cyrus-IMAP以及创建邮箱,所以还不能提交邮件,请继续下一步。</p>
<p> 这里使用Perl里面的MIME::Base64模块(如果需要安装:perl -MCPAN -e 'install
MIME::Base64;')来取得这个验证串:perl -MMIME::Base64 -e 'print
base64_encode("用户名\000用户名\000密码");'来得到MIME-Base64编码的验证串(“\000”是八进制的ASCII
(0)字符)。此外,你也可以使用mmencode来生成,mmencode可以在metamail这个包里面找到。</p>
<h1><a name="a.8"></a>8. 安装Cyrus-IMAP</h1>
<h2><a name="a.8.1"></a>8.1. 下载</h2>
<p> <a href="javascript:if(confirm('http://asg.web.cmu.edu/cyrus/download/ \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://asg.web.cmu.edu/cyrus/download/'" tppabs="http://asg.web.cmu.edu/cyrus/download/">http://asg.web.cmu.edu/cyrus/download/</a></p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail postfix]# <span class="type">cd /usr/src</span></p>
<p>[root@mail src]# <span class="type">wget <a href="javascript:if(confirm('ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.1.16.tar.gz \n\nThis file was not retrieved by Teleport Pro, because it did not meet the project\'s file type specifications. \n\nDo you want to open it from the server?'))window.location='ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.1.16.tar.gz'" tppabs="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.1.16.tar.gz">ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.1.16.tar.gz</a>
</span></p></td>
</tr>
</tbody></table>
<h2><a name="a.8.2"></a>8.2. 编译与安装</h2>
<p> 在RedHat系列的Linux中,其Kerberos的头文件不在标准的地方,所以需要在编译配置前用env命令指定。此外取消对ucdsnmp的支持:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail src]# <span class="type">tar -zxf cyrus-imapd-2.1.16.tar.gz</span></p>
<p>[root@mail src]# <span class="type">cd cyrus-imapd-2.1.16</span></p>
<p> </p>
<p>[root@mail cyrus-imapd-2.1.16]# <span class="type">env CPPFLAGS=-I/usr/kerberos/include
\ </span></p>
<p>><span class="type"> ./configure --with-cyrus-prefix=/usr/cyrus
\</span></p>
<p>> <span class="type">--with-sasl=/usr/lib/sasl2 --with-auth=unix
\ </span></p>
<p>> <font color="#ff0000">--without-ucdsnmp --with-krb=/usr/kerberos</font></p>
<p> </p>
<p>[root@mail cyrus-imapd-2.1.16]# <span class="type">make depend</span></p>
<p>[root@mail cyrus-imapd-2.1.16]# <span class="type">make all CFLAGS=-O</span></p>
<p>[root@mail cyrus-imapd-2.1.16]# <span class="type">make install</span>
</p>
</td>
</tr>
</tbody></table>
<p> 如果编译时提示没有找到com_err.h,请复制当前目录的et目录下面的com_err.h到/usr/include:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail cyrus-imapd-2.1.16]# <span class="type">cp et/com_err.h
/usr/include </span></p>
</td>
</tr>
</tbody></table>
<p> </p>
<p> Cyrus-IMAP的安装脚本有问题,cyradm(现在使用的是Perl版本,原来的TCL版本不再支持)所需要的perl模块被安装到一些不在Perl的标准@INC的目录里,需要手工安装。</p>
<p> </p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail cyrus-imapd-2.1.16]# <span class="type">cd perl/imap</span></p>
<p>[root@mail imap]# <span class="type">perl Makefile.PL</span></p>
<p>[root@mail imap]# <span class="type">make install</span></p>
</td>
</tr>
</tbody></table>
<p> </p>
<h2><a name="a.8.3"></a>8.3. 配置</h2>
<p> 创建主配置文件/etc/cyrus.conf:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail imap]# <span class="type">cd ../..</span></p>
<p>[root@mail cyrus-imapd-2.1.16]# <span class="type">cp master/conf/small.conf
/etc/cyrus.conf</span></p>
</td>
</tr>
</tbody></table>
<p> 添加cyrus-imap的管理账号cyrus,并设置密码为“cyrus”(实际应用中可以使用更加复杂的密码),但是没有指定有效的SHELL,以防止使用它来登录:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail cyrus-imapd-2.1.16]# <span class="type">useradd -g mail
-M -s/no/shell -d/var/imap cyrus</span></p>
<p>[root@mail cyrus-imapd-2.1.16]# <span class="type">passwd cyrus</span></p>
<p>Changing password for user cyrus</p>
<p>New password: <span class="type">cyrus</span></p>
<p>BAD PASSWORD: it it too short</p>
<p>Retype new password: <span class="style2">cyrus</span></p>
<p>passwd: all authentocation tokens updated successfully</p></td>
</tr>
</tbody></table>
<p> </p>
<p> 创建IMAP配置文件/etc/imapd.conf,管理员是cyrus:</p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td> <p>[root@mail cyrus-imapd-2.1.16]# <span class="type">vi /etc/imapd.conf</span></p></td>
</tr>
</tbody></table>
<p> </p>
<table border="0" width="100%" bgcolor="#ccffcc">
<tbody><tr>
<td bgcolor="#ffffcc">
<p>configdirectory: /var/imap</p>
<p>partition-default: /var/spool/imap</p>
<p>admins: cyrus</p>
<p>sasl_pwcheck_method: saslauthd</p>
<p>sasl_mech_list: plain</p>
<p>unixhierarchysep: yes</p>
<p>altnamespace: yes</p>
</td>
</tr>
</tbody></table>
<p> 在/etc/imapd.conf中使用了unixhierarchysep
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -