免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1184 | 回复: 0
打印 上一主题 下一主题

netlinux(sendmail简单配置) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-11 13:17 |只看该作者 |倒序浏览
介绍性文章,简单讲了sendmail的配置,而且也没有具体的介绍sendmail情况,因为网上有关他的文章太多了.
[color="#3300cc"]电子邮件的运行机制是由IETF出版的一组相关RFC文档定义,其中包括了SMTP、POP3、IMAP4、MIME等标准规范,涉及邮件传递、存取、安全等诸多方面。其在实现中主要包括两个部分MUA和MTA,MUA提供用户管理界面,MTA负责邮件传递。
[color="#3300cc"]SMTP定义邮件服务器间的通信,即邮件从发送端到接收端的传递过程,端口25。
[color="#3300cc"]MTA就确定这个邮件要路由到哪里,以及如何路由,常见的如SENDMAIL、QMAIL、POSTFIX、EXIM等;Windows的Exchange、imail等。
[color="#3300cc"]MUA是邮件系统为用户提供的可读写、发送邮件界面,通常使用的有elm、pine或email等程序。
[color="#3300cc"]POP协议规定,用户的邮件投递到一个中间机器上,叫做POP服务器,客户机通过端口110与服务器连接。
[color="#3300cc"]IMAP同POP一样,提供客户机存取远程服务器中的信件的功能,但能比POP提供更高效、更强大的邮件访问功能,支持同时对多个信箱进行访问,多个用户同时访问一个信箱,支持客户机取出信件的子集,支持客户机与服务器间的同步。
[color="#3300cc"]下面以sendmail为例,介绍简单的邮件服务器实现过程:
[color="#3300cc"]Redhat9 会默认安装Sendmail,如果没有选择安装他,则要到安装光盘中找到以下文件安装:
[color="#3300cc"]sendmail-812.8-4.i386.rpm sendmail可执行程序
[color="#3300cc"]sendmail-cf-812.8-4.i386.rpm  sendmail.cf生成器
[color="#3300cc"]sendmail-doc-812.8-4.i386.rpm  sendmail.cf文档
[color="#3300cc"]使用rpm -ivh sendmail-8-i386.rpm进行安装
[color="#3300cc"]安装后就是使用了,步骤如下:
[color="#3300cc"]首先,激活服务service sendmail res[color="#ff0000"]tart ,再使用[color="#ff0000"]netstat -ln -A inet 察看端口状态,看25端口是否开启
[color="#3300cc"]进入/etc/mail编辑主配置文件,修改SMTP守护进程监听ip地址为服务器ip(在264行)[color="#ff0000"]vi +264 sendmail.cf
# SMTP daemon options
[color="#ff0000"]O DaemonPortOptions=Port=smtp,Addr=192.168.0.151, Name=MTA
# SMTP client options
#O ClientPortOptions=Family=inet, Address=0.0.0.0
# Modifiers to define {daemon_flags} for direct submissions
#O DirectSubmissionModifiers
# Use as mail submission program? See sendmail/SECURITY
#O UseMSP
# privacy flags
O PrivacyOptions=authwarnings,novrfy,noexpn,restrictqrun
[color="#3300cc"]编辑/etc/mail/access文件,如果没有就创建,更改如下:
[color="#330000"]localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
[color="#ff0000"]192.168.0                                  RELAY
[color="#3300cc"]这里表示允许本机和192.168.0.0/24网段中的机为允许进行中继(设为RELAY),添加的纪录是根据我两台机器的ip来设的。
[color="#3300cc"]再将access的内容导入access.db实现对access.db的配置(因为access.db不能直接进行更改,所以使用导入的方式实现配置),命令如下:
[color="#ff0000"]makemap hash access.db
[color="#3300cc"]因为我配置了域名服务器来进行解析,所以下一步是重启域名服务有没有开启(没有建DNS的就不用了,没有建DNS因该如何做,稍后会介绍):
[color="#ff0000"]service named restart
[color="#3300cc"]nslookup mail.aaa.com [color="#ff0000"]//解析邮件纪录,看DNS是否工作正常
[color="#3300cc"]然后是建立SMTP后缀,并设置可用邮件后缀,编辑/etc/mail/local-host-names文件
[color="#330000"]# local-host-names - include all aliases for your machine here.
[color="#3300cc"]mail.aaa.com   [color="#ff0000"]//建立这条纪录,因为我建的DNS中的邮件纪录为mail.aaa.com,aaa.com是我的域名。
[color="#3300cc"]aptech.com    [color="#ff0000"]//这一条纪录是为后面的试验“虚拟用户”准备的
[color="#3300cc"]现在邮件服务器基本可以工作了。
[color="#3300cc"]telnet mail.aaa.com 25   //telnet到25端口,[color="#ff3300"]telnet 192.168.0.151 25(192.168.0.151是我设的ip)也可以。
[color="#3300cc"]如果连接成功,服务器会返回一个表示通信连接成功的220应答代码,如果telnet不到,就察看25端口有没有打开。
[color="#3300cc"]HELO mail.aaa.com   [color="#ff0000"]//向服务器表识发件人的身份,成功,会收到250应答代码,这一步可以省略。
[color="#ff0000"]mail from :root@mail.aaa.com   //指定发件人为root,成功就会返回250应答代码.
[color="#ff0000"]rcpt to :net1@mail.aaa.com   //指定收件人地址为
[color="#ff0000"]net1@mail.aaa.com
[color="#ff0000"],成功就会返回250应答代码.
[color="#ff0000"]data //发送data命令,准备开始传输邮件内容,成功会返回354应答代码,表示准备接收邮件内容,可以在下一行开始输入邮件内容。
[color="#3300cc"]邮件内容写完后回车并输入“.”结束 回车后会返回250代码。
[color="#3300cc"]quit结束,退出。
[color="#3300cc"] 使用mail查看文件.
[color="#3300cc"]现在来介绍没有架设DNS因该如何做:
[color="#3300cc"]首先,在/etc/hosts里面建一条记录
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1         hsxlinux        localhost.localdomain        localhost
[color="#ff0000"]192.168.0.151        mail.aaa.com   //192.168.0.151是sendmail服务器ip,mail.aaa.com是sendmail的域名[color="#3300cc"]像上面一样,在access里添加记录,使允许中继.在导入access.db里,因为防火墙默认会阻止25端口,所以在服务器端需要开启防火墙的25端口.[color="#3399cc"]客户机访问:[color="#3300cc"]客户机首先要将DNS指向服务器(如果不指向,在/etc/hosts里面添加一条和上面一样的记录)[color="#3300cc"]如果不出意外,就可以用telnet mail.aaa.com 25访问了,如果是DNS指向的方式就telnet 192.168.0.151 25.[color="#3300cc"]设置别名:
[color="#3300cc"]首先,编辑/etc/aliases,在最后面添加如下记录:# trap decode to catch security attacks
decode:                root
# Person who should get root's mail
#root:                marc
administrator :root  //设置root的别名为administrtor,冒号左边的为别名,右边的为当前系统用户.
user :net1
guest :nobody[color="#3300cc"]使用命令newliases生成新的别名信息库[color="#3300cc"]这样就可以了,当发往别名邮箱时,也就是发往root用户的邮箱中.[color="#3300cc"]进入/etc/aliases添加一条记录如下:# trap decode to catch security attacks
decode:                root
# Person who should get root's mail
#root:                marc
administrator :root
user :net1
guest :nobody
[color="#ff3300"]mailgrp : root net1 net2 [color="#ff0000"]//定义一个邮件组,将root、net1、net2三个用户加入这个组,当向组发送邮件时,也会向组中的用户发送邮件.[color="#3399cc"]虚拟邮件帐号:[color="#3300cc"]当网络中存在多个域,而在另一个域中又不想再建立同样的用户时,可以使用sendmail的虚拟邮件帐户功能.我在[color="#3300cc"]首先,编辑local-host-names添加另一个域的域名aptech.com,编辑virtusertable,打开后文件中没有内容,我添加了如下内容:
[color="#ff3300"]net@aptech.com
[color="#3300cc"]   root   [color="#ff0000"]//让root帐号对应aptech.com域中的net帐户.   
[color="#ff3300"]net1@aptech.com
[color="#ff3300"]  net1[color="#3300cc"]将配置写入数据库:[color="#ff3300"]makemap hash virtusertable.db [color="#3300cc"]然后,在测试一下,如果不出意外,是可以成功的.[color="#3300cc"]设置mail验证:[color="#3300cc"]首先,检查组件cyrus-sasl-2.1.10-4有没有安装,如果没有就先安装,再用命令sendmail -d0.1 -bv检验是否支持安全验证.[color="#3300cc"]编辑/etc/mail/sendmail.mc,在43行44行找到如下内容:dnl #
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
[color="#3300cc"]将前面代表注释的"dnl"去掉:dnl #
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl[color="#3300cc"]再找到第92行,同样将前边的注释去掉:DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 587 for
dnl # mail from MUAs that authenticate. Roaming users who can't reach their
dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
dnl # this useful.
dnl #
[color="#ff0000"]DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl[color="#ff0000"][color="#3300cc"]将修改导入sendmail.cf,因为sendmail.cf才是真正的配置文件:[color="#ff0000"]m4 sendmail.mc >sendmail.cf[color="#3300cc"]service sendmail restart重启sendmail服务,这个时候,一般会出错,说sendmail.cf 39行出错,vi sendmail.cf干脆删掉39行,因为也没用,就可以了.[color="#3300cc"]service sendmail restart重启服务,然后telnet会出错,Cnection refused,这是因为sendmail 的264行中ip被覆盖了,编辑sendmail.mc,将264行的ip改回来,并使用[color="#3300cc"]命令:m4 sendmail.mc >sendmail.cf,然后重启sendmail服务.[color="#3300cc"]然后,当你使用linux中的客户端软件Evolution发送邮件,就会需要进行SMTP验证.[color="#339999"]linux实现POP3和IMAP:[color="#3300cc"]首先,检查IMAP组件有没有安装,安装后就进行如下步骤:[color="#3300cc"]cd /etc/xinetd.d进入xinetd.d目录,编辑ipop3文件[color="#ff0000"] # default: off
# description: The POP3 service allows remote users to access their mail
#              using an POP3 client such as Netscape Communicator, mutt,
#               or fetchmail.
service pop3
{
        [color="#ff0000"]disable        = yes
        socket_type                = stream
        wait                        = no
        user                        = root
        server                        = /usr/sbin/ipop3d
        log_on_success        += HOST DURATION
        log_on_failure        += HOST
}
[color="#ff0000"][color="#3300cc"] 其中有一行"disable = yes",将yes改为no,开启pop3功能(同样的,可以通过编辑imap文件,做同样修改,也可以开启imap功能).[color="#3300cc"]然后,重启xinetd服务,就可以通过pop3来接收邮件了,可以通过linux中的客户端软件Evolution,或windows中的outlook进行测试.[color="#ff0000"]
    [color="#ff0000"]


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12088/showart_60997.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP