热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

gentoo系统中安装配置sendmail邮件服务器和dovecot收件器

先说需要安装哪些软件,因为使用的平台是Gentoo操作系统,所以就用gentoo的安装方式1:安装dns域名服务器,如果你在公网,并且有自已的域名,那么不用自已安装域名服务器,(因为邮件服务器要用到域名的解析,反向解析,所以要安装,我尝试用ip地址代替邮
先说需要安装哪些软件,因为使用的平台是Gentoo 操作系统,所以就用gentoo 的安装方式

1安装dns 域名服务器,如果你在公网,并且有自已的域名,那么不用自已安装域名服务器,( 因为邮件服务器要用到域名的解析,反向解析,所以要安装,我尝试用ip 地址代替邮箱域名,失败,所以必须装)
emerge bind bind-tools     版本没要求,默认就行
2安装sendmail
 USE='' mbox  ssl"   emerge  sendmail   
要加上mbox ssl 两个标记,以便让sendmail 支持mbox的邮件存储方式(就是在/var/mail 目录上存不同用户的邮件,而不是在各个用户的~目录下,) 另外还有一个sasl 的标记,不加也可以,好像sendmail 从某个版本对于ssl 的支持不需要sasl 了, 当前的sendmail 是mail-mta/sendmail-8.14.4
3 要用到openssl 库,在进行安全的ssl 连接时,需要用它生成几个文件,好像是证书之类,不太懂,但得装上
emerge -av openssl
4 安装dovecot
USE="ssl   maildir mbox" emerge dovecot  
确保ssl maildir mbox 这几个标记的存在,
sendmail 只负责发邮件,要想收邮件,要用到dovecot

下面是具体的安装过程

一安装并配置bind
sendmail 要用到域名解析,反向域名解析,所以要选安装dns 服务器bind,安装方法及配置见
http://blog.csdn.net/jixiuffff/archive/2009/11/07/4782285.aspx
简要摘写如下
/etc/bind/named.conf
options {
        directory "/var/bind";
        // uncomment the following lines to turn on DNS forwarding,
        // and change the forwarding ip address(es) :
        //forward first;
        //forwarders {
        //      123.123.123.123;
        //      123.123.123.123;
        //};
        listen-on-v6 { none; };
// 注释掉这行
//       listen-on { 127.0.0.1; };
//       listen-on { 127.0.0.1;192.168.1.2; };
        // to allow only specific hosts to use the DNS server:
        //allow-query {
        //      127.0.0.1;
        //};
        // if you have problems and are behind a firewall:
        //query-source address * port 53;
        pid-file "/var/run/named/named.pid";
};
// Briefly, a zone which has been declared delegation-only will be effectively
// limited to containing NS RRs for subdomains, but no actual data beyond its
// own apex (for example, its SOA RR and apex NS RRset). This can be used to
// filter out "wildcard" or "synthesized" data from NAT boxes or from
// authoritative name servers whose undelegated (in-zone) data is of no
// interest.
// See http://www.isc.org/products/BIND/delegation-only.html for more info
//zone "COM" { type delegation-only; };
//zone "NET" { type delegation-only; };
zone "." IN {
        type hint;
        file "named.cache";
};
zone "localhost" IN {
        type master;
        file "pri/localhost.zone";
        allow-update { none; };
        notify no;
};
zone "127.in-addr.arpa" IN {
        type master;
        file "pri/127.zone";
        allow-update { none; };
        notify no;
};
//vi /etc/conf.d/hostname
//hostname="jixiuf.org"
//主机名为jixiuf.org
//我的ip是192.168.1.2 ,
//pri/jixiuf.org.zone 是/etc/bin/pri/jixiuf.org.zone
//实际是/var/bind/pri/目录的一个软链接
//此文件进行正向域名解析 ,由域名得ip
zone "jixiuf.org" IN {
        type master;
        file "pri/jixiuf.org.zone";
        allow-update { none; };
        notify no;
};
//此文件进行反向域名解析,由ip 得域名
zone "192.in-addr.arpa" IN {
    type master;
    file "pri/jixiuf_r.zone";
    allow-update { none; };
    notify no;
};
# Use with the following in named.conf, adjusting the allow list as neede
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "kGKuKdPDjzvUPgJPncVZxw==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

jf pri # cat   /var/bind/pri/jixiuf.org.zone
jixiuf.org 的正向解析文件
$TTL 1W
@       IN      SOA  jixiuf.org.    root.jixiuf.org.  (
                                      2010092203 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      604800     ; Expire - 1 week
                                      86400 )    ; Minimum
@               IN      NS      jixiuf.org.
@               IN      A       192.168.1.2
;三个别名mail.jixiuf.org.    smtp.jixiuf.org. pop3.jixiuf.org.  实际上都是jixiuf.org.的别名,它们具有相同的ip 192.168.1.2
mail            IN      CNAME   jixiuf.org.
smtp            IN      CNAME   jixiuf.org.
pop3            IN      CNAME   jixiuf.org.
@               IN      MX 5       mail.jixiuf.org.

/var/bind/pri/localhost.zone  ,默认即可
反向解析文件
jf pri # cat   /var/bind/pri/jixiuf_r.zone
$ORIGIN 192.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       jixiuf.org. root.jixiuf.org. (
                                        2010092204      ; serial
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
; @ 在这里相当于 jixiuf
@                         1D IN NS           jixiuf.org.
;192.168.1.2 解析为jixiuf.org.  及mail.jixiuf.org. ....
2.1.168                         1D IN PTR          jixiuf.org.
2.1.168                         1D IN PTR          mail.jixiuf.org.
2.1.168                         1D IN PTR          smtp.jixiuf.org.
2.1.168                         1D IN PTR          pop3.jixiuf.org.

测试一下是否成功
正向解析
jixiuf pri # host smtp.jixiuf.org
smtp.jixiuf.org is an alias for jixiuf.org.
jixiuf.org has address 192.168.1.2
jixiuf.org mail is handled by 5 mail.jixiuf.org.
jixiuf pri # host pop3.jixiuf.org
pop3.jixiuf.org is an alias for jixiuf.org.
jixiuf.org has address 192.168.1.2
jixiuf.org mail is handled by 5 mail.jixiuf.org.
jixiuf pri # host mail.jixiuf.org
mail.jixiuf.org is an alias for jixiuf.org.
jixiuf.org has address 192.168.1.2
jixiuf.org mail is handled by 5 mail.jixiuf.org.
jixiuf pri # host jixiuf.org
jixiuf.org has address 192.168.1.2
jixiuf.org mail is handled by 5 mail.jixiuf.org.
反向解析 jixiuf pri # nslookup  192.168.1.2
Server:        127.0.0.1
Address:    127.0.0.1#53
2.1.168.192.in-addr.arpa    name = pop3.jixiuf.org.
2.1.168.192.in-addr.arpa    name = jixiuf.org.
2.1.168.192.in-addr.arpa    name = mail.jixiuf.org.
2.1.168.192.in-addr.arpa    name = smtp.jixiuf.org.
jixiuf pri #
========================================================================================================== 下面是关于sendmail 的了
1 添加两个测试用户
useradd -m -g mail -s /bin/false mail1
useradd       -g mail -s /bin/false mail2
passwd mail1
passwd mail2
mail1 有/home/mail1 目录,而mail2 没有
为mail1 mail2 起个别名, 不起也可以
/etc/mail/aliases
zhang3:  mail1
li4:     mail2
manager:  mail1, mail2
# zhang3@jixiuf.org means mail1@jixiuf.org
#and mail send to manager@jixiuf.org will be send to mail1@jixiuf.org and mail@jixiuf.org

然后运行命令newaliases
编辑 /etc/mail/access
127.0.0.1            RELAY
#192.168.1.2         RELAY
mail.jixiuf.org      RELAY
jixiuf.org           RELAY

然后运行 makemap  hash 表示发送到jixiuf.org mail.jixiuf.org 地址的信才给传送,其他地址的不送
/etc/init.d/sendmail start
此时sendmail 已经可以发信了,但是不能向外网关邮件,因为外网的邮箱服务器无法以我们的ip进行域名反解析(好像是,不太清楚)
在同一网段找另外一台机器,当然用虚拟机也可以(网络桥接)用Outlook Express  发mail1@jixiuf.org   manager@jixiuf.org  发送邮件 ,
smtp pop3 服务器都填写成mail.jixiuf.org 或者jixiuf.org 也可以
但是此时sendmail 发信不支持ssl 连接,所以用户名密码很容易被人监听到
下面进行sendmail 发件通过ssl
在/etc/mail/sendmail.mc 中添加
TRUST_AUTH_MECH("EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN")dnl
define(`confAUTH_MECHANISMS', `EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN GSSAPI KERBEROS_V4')dnl
dnl define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')dnl
define(`CERT_DIR', `/etc/mail/certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/cacert.pem')dnl      1
define(`confSERVER_CERT', `CERT_DIR/cert.pem')dnl   2
define(`confSERVER_KEY', `CERT_DIR/key.pem')dnl     3
define(`confCLIENT_CERT', `CERT_DIR/cert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/key.pem')dnl

然后运行
m4 sendmail.mc  >sendmail.cf  
接下来需要生成证书  这个过程不必理解,
生成的过程
http://www.worldhello.net/doc/email_howto/ar01s01s09.html
 从这篇文章的 1.9.7. 配置 sendmail — 证书管理 做就可以
摘录如下:
$ mkdir /tmp/CA
$ cd /tmp/CA
$ mkdir certs crl newcerts private
$ echo "01" > serial
$ cp /dev/null index.txt
$ cp /usr/local/openssl/openssl.cnf.sample openssl.cnf
    改成cp /etc/ssl/openssl.cnf   openssl.cnf
$ vi openssl.cnf   (set values)       这一步主要修改openssl.cnf 文件中
dir             = ./demoCA              # Where everything is kept
改成
dir             = /tmp/CA              #修改成我们实际的目录
$ openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 -config openssl.cnf
$ openssl req -nodes -new -x509 -keyout newreq.pem -out newreq.pem -days 365 -config openssl.cnf
$ openssl x509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
$ openssl ca -config openssl.cnf -policy policy_anything -out newcert.pem -infiles tmp.pem
$ rm -f tmp.pem
手动修改生成的 newreq.pem文件
Remove the unsigned certificate (leaving the private key 删除证书部分,只保留私钥部分
mkdir /etc/mail/certs
cp cacert.pem   /etc/mail/certs/cacert.pem
cp newreq.pem   /etc/mail/certs/key.pem
cp newcert.pem  /etc/mail/certs/cert.pem
cd /etc/mail/certs/
chmod 400 key.pem
Check key properties
$ openssl x509 -noout -in cacert.pem -text
Make sure that the CN of the CA certificate and CN of the server
certificate are different, because newer versions of Mozilla and
Netscape won't accept the server certificate if it is self-signed
这句不理解,
/etc/init.d/sendmail restart
现在可以通过安全的ssl 进行认证了.

关于sendmail ssl tls 配置两篇不错的文章
http://www.cromwell-intl.com/unix/sendmail-ssl.html
http://www.worldhello.net/doc/email_howto/ar01s01s09.html
====================================================================================================
下面是关于收邮件的   dovecot-1.2.11 ,用到这个软件,安装在上面提过,下面说配置
cd /etc/dovecot/
修改dovecot.conf
添加
protocols = imap imaps pop3 pop3s
listen = *
disable_plaintext_auth = no
log_path = /var/log/mail/err
info_log_path = /var/log/mail/info
ssl = no
#mail_location = mbox:~/mail:INBOX=/var/mail/%u  ,这个指定邮件在什么位置,以便比那儿存取,

/etc/init.d/dovecot/start
此时可以收邮件,但是没使用ssl 不安全
protocols = imap imaps pop3 pop3s
listen = *
disable_plaintext_auth =yes
log_path = /var/log/mail/err
info_log_path = /var/log/mail/info
ssl = yes   # 或者required
ssl_cert_file = /etc/ssl/dovecot/server.pem
ssl_key_file = /etc/ssl/dovecot/server.key
#mail_location = mbox:~/mail:INBOX=/var/mail/%u  ,这个指定邮件在什么位置,以便比那儿存取,


=========================================================================================================
了附 客户端的一些信息











推荐阅读
  • NetCat,因其强大的多功能性和灵活性,被网络安全领域的专业人士誉为‘瑞士军刀’。本文将详细介绍NetCat的功能、应用场景及其在不同平台上的使用方法。 ... [详细]
  • 深入理解FastDFS
    FastDFS是一款高效、简洁的分布式文件系统,广泛应用于互联网应用中,用于处理大量用户上传的文件,如图片、视频等。本文探讨了FastDFS的设计理念及其如何通过独特的架构设计提高性能和可靠性。 ... [详细]
  • 本文针对公司项目中普遍存在的IE浏览器兼容性问题,特别是IE9及以下版本,提出了具体的解决方案,确保用户在这些旧版浏览器中也能顺利实现图片上传预览功能。 ... [详细]
  • mysql 分库分表策略_【数据库】分库分表策略
    关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多, ... [详细]
  • 本文探讨了为何DataWindow.NET在PowerBuilder 11之后版本中不再被支持,并提供了一种在PB12.5中恢复此功能的解决方案。欢迎交流与反馈。 ... [详细]
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • 本文基于https://major.io/2014/05/13/coreos-vs-project-atomic-a-review/的内容,对CoreOS和Atomic两个操作系统进行了详细的对比,涵盖部署、管理和安全性等多个方面。 ... [详细]
  • 深入探讨配置文件的管理与优化
    尽管配置文件的重要性不言而喻,但其管理和安全性问题却常被忽视。本文将详细讨论配置文件的不同管理策略及其优缺点。 ... [详细]
  • 使用Adobe Illustrator打造独特的家族徽章:牡鹿图腾设计教程
    本文详细介绍了一种基于《权力的游戏》灵感,运用Adobe Illustrator创作独特家族图腾——牡鹿徽章的方法。本教程不仅展示了具体的步骤,还提供了多种技巧,帮助读者创作出既具个人特色又符合设计原则的作品。 ... [详细]
  • 在现代多线程编程中,Lock接口提供的灵活性和控制力超越了传统的synchronized关键字。Lock接口不仅使锁成为一个独立的对象,还提供了更细粒度的锁定机制,例如读写锁(ReadWriteLock)。本文将探讨如何利用ReentrantReadWriteLock提高并发性能。 ... [详细]
  • 在安装Ubuntu 12.04后,用户可能会遇到系统菜单中缺少休眠(Hibernate)选项的问题。这通常是由于某些程序的错误导致系统默认禁用了此功能。本文将详细介绍如何恢复和使用休眠选项。 ... [详细]
  • 本文将探讨iOS开发过程中需要掌握的三种关键编程语言——C、Objective-C和Swift,并深入解析面向过程与面向对象编程的概念,同时对比iOS与Android两大移动平台的特点。 ... [详细]
  • 解决ArcEngine中IEngineEditor编辑ArcSDE数据时遇到的0x8004021F错误
    本文探讨了一款自定义GIS插件系统从Personal GeoDatabase迁移到ArcSDE数据源过程中遇到的编辑错误,详细分析了错误原因及解决策略。 ... [详细]
  • 本文介绍了如何从给定的JSON响应中正确地提取产品标题等信息。 ... [详细]
  • 在软件开发领域,测试是确保产品质量的关键环节。本文旨在深入探讨两种特定的测试方法——冒烟测试与随机测试,解析它们的特点、实施方式及应用场景。 ... [详细]
author-avatar
du-qhy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有