当前位置: 首页 > 工具软件 > Cyrus IMAP > 使用案例 >

简单的sendmail+cyrus-imap的实现

司寇书
2023-12-01

      由于自己所在的学校课程需要我们做sendmail的实验,借助网友的力量,和老师的帮助,当然还有自己的努力,终于将其做成了,之所以这篇文章发表,只因为这个实验,大部分还是自己尝试出来的,有点成就感,关键的还有一些点是网友没有解释清楚的,会导致我们这些初学者极易疏忽,而导致失败。因此我想在次发表下我的意见!希望大家的支持!谢谢!

     

安装数据伯克雷数据库
rpm -ivh db4-4.3.29-9.fc6.i386.rpm db4-utils-4.3.29-9.fc6.i386.rpm db4-devel-4.3.29-9.fc6.i386.rpm
安装cyrus-sasl扩展功能包
rpm -ivh cyrus-sasl-devel-2.1.22-4.i386.rpm
安装域名解析服务器
rpm -ivh bind-9.3.4-10.P1.el5.i386.rpm
安装openssl为以后使用证书先备安装
rpm -ivh openssl-devel-0.9.8e-7.el5.i386.rpm openssl-perl-0.9.8e-7.el5.i386.rpm openssl097a-0.9.7a-9.el5_2.1.i386.rpm krb5-devel-1.6.1-31.el5.i386.rpm zlib-devel-1.2.3-3.i386.rpm e2fsprogs-devel-1.39-20.el5.i386.rpm keyutils-libs-devel-1.2-1.el5.i386.rpm libselinux-devel-1.33.4-5.1.el5.i386.rpm libsepol-devel-1.15.2-1.el5.i386.rpm
卸载系统中的sendmail服务:
rpm -e redhat-lsb
rpm -e fetchmail
rpm -e mutt
rpm -e mdadm
rpm -e sendmail,

首先先配置域名解析服务器

先配置正向域名解析文件xiaofj:
$TTL 83200
@ IN SOA xiaofj.com. root.xiaofj.com. (
 10
 43200
 2160
 43200
 43200 )
 IN NS smtp.xiaofj.com.
 IN MX 10 xiaofj.com.
smtp IN A 192.168.239.100
pop3 IN A 192.168.239.100
在配置下反向域名解析文件toip:
$TTL 83200
@ IN SOA xiaofj.com. root.xiaofj.com. (
 10
 43200
 2160
 43200
 43200 )
 IN NS smtp.xiaofj.com.
100 IN PTR smtp.xiaofj.com.
100 IN PTR pop3.xiaofj.com.
最后配置下主配置文件named.conf:
options {
 directory "/var/named";
};
zone "xiaofj.com" IN {
 type master;
 file "xiaofj";
};
zone "239.168.192.in-addr.arpa" IN {
 type master;
 file "toip";
};
配置好之后重启下域名解析服务:service named restart
nslooup验证下是否成功,
好的

接下来开始安装cyrus-imapd安装包:
1.检查是否安装好RPM的包,有则需要卸载。rpm -qa |grep imap                rpm -e cyrus-imapd
2.没有就可以开始安装了,将网络下载的最新安装包解压:tar -zxvf cyrus-  imapd-2.3.16.tar.gz
3.开始安装前配置:
  ./configure --with-cyrus-prefix=/imapd/sbin --with-sasl=/usr/lib/sasl2/ --prefix=/imapd --with-openssl=/usr/lib/openssl
4.开始编译和安装
  make;make install

开始配置cyrus-imapd:
1.创建cyrus-imapd启动所需的runas的用户cyrus;
  useradd cyrus
  passwd cyrus
2.创建cyrus-imapd所需要的根目录,并设置其所有者和相应的权限:
   cd /var
   mkdir imap
   chown cyrus imap
   chgrp mail imap
   chmod 750 imap

   cd /var/spool
   mkdir imap
   chown cyrus imap
   chgrp mail imap
   chmod 750 imap
3.编写和复制必要的配置文件:imapd.conf 和 cyrus.conf
  configdirectory: /var/imap            ----指定配置文件中的套接字进程的位置
  partition-default: /var/spool/imap    ----指定cyrus邮件用户的邮箱文件
  admins: cyrus root                    ----指定管理员用户
  allowplaintext: 1   ----见注释
  sasl_pwcheck_method: saslauthd        ----指定密码认证方式为saslauthd
  sasl_mech_list: PLAIN                 ----指定认证机制为PLAIN

 

 

  注释:该项是一个及其容易忽略的一个很重要的地方,该项的意思是是否允许使用明文传输密码,需要在没有使用证书加密传输是时指定允许其以明文传输,否则会在使用cyradm管理工具,在登入时出现登入被关闭(login disabled      cyradm: can not authenticate to server with  as cyrus )同时日志文件中提示:perl :no worthy mechs found的错误提示,因此要么使用帮助文件中的命令生成一个加密证书,使用证书加密该传输过程,这时,只要指定证书加密文件,和加密算法即可除去该项,该项默认是不允许明文传输的,即allowplaintext: 0。要使用证书可用下面命令生成证书:openssl req -new -x509 -nodes -out /var/imap/server.pem -keyout /var/imap/serve,然后在imapd.conf文件中追加tls_cert_file: /var/imap/server.pem和tls_key_file: /var/imap/server.pem即可,而allowplaintext: 1就必须改为0,也可省略。
  然后复制安装包中/master/conf/下的几个conf文件中的一个配置文件,到/etc/cyrus.conf即可。

4.使用su cyrus运行安装包中tools文件夹中的mkimap工具生成imapd运行所须的文件和文件夹。
5.(可选步骤)编辑syslog.conf使的imapd服务日志和authd服务日志独立出messages:
  在syslog.conf文件中追加两行: echo local6.debug /var/log/imapd.conf和echo auth.debug /var/log/auth.log,保存退出后,分别touch这两个文件,touch /var/log/imapd.log /var/log/auth.log,最后别忘了重启下syslog服务,否则在下一次重启时是不生效的。
6.在/etc/pam.d/目录下写两个文件,分别为imap和pop文件,这里两个文件是用于指定认证机制的,如果没有生成这两个文件,则会出现authd failed、no worthy mechs found等认证上的错误!切忌!如果还启用了该服务的其他相关功能请注意也要在这个目录下写出该相功能的对应文件,其内容全部一样,如下:
#%PAM-1.0
auth       include      system-auth
account    include      system-auth
7.启动saslauthd服务,并使用saslpasswd2设置相应管理员的认证密码。
saslpasswd2 cyrus
saslpaswwd2 root
8.设置好密码之后,测试该服务是否能正常工作:
testsaslauthd -u cyrus -p password
若出现“0: OK "success."”则证明认证服务是正常的,且账号工作正常!
9.以上步骤做好之后即可启动cyrus-master:打开安装目录:/imapd/sbin/bin/,运行master&,即可启动服务。
10.使用cyradm管理邮件账户,创建邮件账户root和xfj(本地已经建立好的账号):
使用命令cyradm -u cyrus localhost,连接本地服务器,这样直接开的时候就会出现如下错误:
Can't locate Cyrus/IMAP/Shell.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .).
BEGIN failed--compilation aborted.
由于帮助文档并没有相关的说明,但从出错的问题中可以看出是perl5的出现了指定错误,这个问题的出现也许有人会认为是我前面没有指定的原因,其实我是故意不指定的原因是,我指定了,它依然会出现这个问题,它默认安装到了指定的prefix目录下了,这个也是同样的错,即使它安装了。所以,我决定将它进行单独编译。打开安装包的解包目录到./perl/imap,使用命令perl Makefile.PL,然后在make;make install,即可。
回到/imapd/bin下,使用命令cyradm -u cyrus localhost打开管理环境,这是就会提示密码了,输入刚设的密码;进入管理环境,使用cm创建邮箱分别:user.xfj和user.root。(其他管理功能这里就不介绍了,请详看帮助文件),创建好之后,QUIT退出。

 

开始编译和配置sendmail:

编译和安装:
1.先查看下系统中的sendmail是不是已经卸载好了,卸载好了就可以开始安装了,将网络下载的最新安装包解压:tar -zxvf sendmail-current.tar.gz
cd sendmail-8.14.4
bash Build install
开始安装,注意:编译中会有找不到/usr/man/man8等错误提示而停止安装,手动创建该文件夹即可。再重新编译即可。重新编译前先使用命令bash Build clean清除上次编译的内容。

开始配置sendmai:
1.使用命令生成一个cyrusv2.cf文件,该文件通过cyrus-imapd帮助文件中可知在cyrus-imapd*/doc/中,将其拷贝到sendmail-*/cf/cf/下,使用命令bash Build cyrusv2.cf,生成cyrusv2.cf文件,再将其cf文件拷贝成/etc/mail/sendmail.cf。
2.修改当前的/etc/mail/sendmail.cf文件,添加一行:Fw/etc/mail/local-host-names,这可能是cyrus-imapd中缺失的,没有这行,将会导致在发邮件时出现550的错误消息。
3.创建一个/etc/mail/local-host-names:echo xiaofj.com >>/etc/mail/local-host-names。
4.创建/var/spool/mqueue的文件夹:mkdir -p /var/spool/mqueue
5.使用sendmail -bd启动服务即可。

 

由于是一个很简单地实现客户端软件的邮件收发,老师也没有要求,因此没有结合ldap  sql 的服务器,过程也不是很难,注意下该注意的点就可以了

 

谢谢大家的鉴赏,有什么意见或疑问请您留言!

 

 

 

 

 

 类似资料: