文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux下sendmail的配置详解2之基本配置篇

Linux下sendmail的配置详解2之基本配置篇

时间:2007-01-30  来源:wanghui912

(二)Sendmail的配置

配置前我先说一下:我采用的是公网IP。所用域名是:tpwb.cn。

我们先确定一下自己的NDS服务器。看看我们开通MX记录没有。

开通MX记录后我们才能用域名来收发邮件

如何开通,我推荐一个网址:

http://www.magicwinmail.com/technic_net_mx.htm

注:如果你是免费域名,采用花生壳等软件的话,一样要开通MX

如何开通,网上有。如果你找不到的话,或者在linux下安装花生壳有问题的话可以给我留言。我会尽快给你答复。这里不做讨论了。

下面看一下我的MX

[root@tpwb mail]# nslookup

> set q=mx

> tpwb.cn

Server:         202.106.196.115

Address:        202.106.196.115#53

Non-authoritative answer:

tpwb.cn mail exchanger = 10 211.101.46.251. (或者是你的域名)

211.101.46.251是我的IP,tpwb.cn是我的域名。

如果你和我的类似,那么咱们开始下一部

我们先查看一下mail目录下的文件,我们一会将会对它们进行更改

[root@tpwb ~]# cd /etc/mail

[root@tpwb mail]# ls

access          helpfile          Makefile      submit.cf      virtusertable

access.db       local-host-names  sendmail.cf   submit.cf.bak  virtusertable.db

domaintable     mailertable       sendmail.mc   submit.mc

domaintable.db  mailertable.db    spamassassin  trusted-users

1,   access 数据库文件,用于配置邮件中继。

2,   sendmail.mc,sendmail的主要配置文件。

3、local-host-names域名文件 可以用他来实现虚拟域名或多域名支持。

4、mail别名文件aliases。

5、邮件控制文件

relay、ok、reject和discard。

relay: 可以实现转发。

ok: 是用来允许用户的任意访问,它会覆盖任何其它已建立的检查(实际设置中,最好不要设为这项,除非你对该用户是绝对信任的);

reject: 可以实现对来访地址的拒绝,它根本就不容许该地址与你的邮件服务器进行连接通信;

discard: 的作用是在接收到传输的邮件消息后,把它丢弃掉。在发送者看来,他的邮件的确是接收了,但他并不知道,发送的目的地址根本不可能接收到他的邮件,服务器巧妙地欺骗了他。

我在这里这是简单介绍一下,详细的解释自己去查找资料,我以后也会在写关于服务器相关术语的文章。

我们首先看一下sendmail.mc这个文件的内容

[root@tpwb ~]# cat /etc/mail/sendmail.mc

.......

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl   (将sendmail-cf/m4/cf.m4包含进来)

VERSIONID(`setup for Red Hat Linux')dnl (定义版本信息)

OSTYPE(`linux')dnl (选择包含操作系统指定属性的文件)

........

define(`confDEF_USER_ID',``8:12'')dnl (指定使用的用户ID为8,组ID为12)

dnl define(`confAUTO_REBUILD')dnl

define(`confTO_CONNECT', `1m')dnl   (设置等待连接的最大时间为1分钟)

define(`confTRY_NULL_MX_LIST',true)dnl (若MX记录指向本机,则sendmail直接连接到远程主机)

define(`confDONT_PROBE_INTERFACES',true)dnl (sendmial不会自动将服务器的网络接口视为有效地址)

define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl(设置procmail的存放路径)

define(`ALIAS_FILE', `/etc/aliases')dnl (设置邮件别名存放路径)

define(`STATUS_FILE', `/var/log/mail/statistics')dnl

define(`UUCP_MAILER_MAX', `2000000')dnl (设置处理信息的最大限制为2M)

define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl (设置用户数据库文件路径)

define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl (设置限制某些邮件命令的标志)

define(`confAUTH_OPTIONS', `A')dnl 仅在授权成功时。将AUTH参数加到邮件的消息头中

.......

FEATURE(`no_default_msa',`dnl')dnl (允许MSA被DAMEMON_OPTION覆盖的默认设置)

FEATURE(`smrsh',`/usr/sbin/smrsh')dnl (设置邮件发送器smrsh的存放路径)

FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl (设置邮件发送器数据库的存放路径)

FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl (设置虚拟邮件域数据库的存放路径)

FEATURE(redirect)dnl (支持.redirect虚拟域)

FEATURE(always_add_domain)dnl (增加主机名到所有本地发送的邮件)

FEATURE(use_cw_file)dnl (装载/etc/mail/local-host-names文件中定义的主机名)

FEATURE(use_ct_file)dnl  (装载可信任用户名单)

........

FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl (使用procmail作为本地邮件发送者)

FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl (从/etc/mail/access.db装载可以中继的域)

FEATURE(`blacklist_recipients')dnl (根据访问数据库的值过滤外来邮件)

EXPOSED_USER(`root')dnl (禁止伪装发送者地址中出现root用户)

........

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl (指定sendmail作为MTA运行时的参数)

........

FEATURE(`accept_unresolvable_domains')dnl 设置可以接受不能由NDS主机所发送的邮件

........

LOCAL_DOMAIN(`localhost.localdomain')dnl 设置本地域

........

MAILER(smtp)dnl (指定sendmail所有SMTP发送者,包括smtp,esmtp,smtp8,和replay)

MAILER(procmail)dnl (指定使用procmail作为本地邮件的发送者)

[root@tpwb ~]# vi /etc/mail/sendmail.mc

由于邮件服务器默认只对本地回环网络提供邮件服务,所以我们把上面的

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

改为

DAEMON_OPTIONS(`Port=smtp,Addr=邮件服务器的ip, Name=MTA')dnl

sendmail.cf是一般人不能看懂的,所以我们要用m4(宏配置)对/etc/mail/sendmail.mc修改来完成对sendmail.cf的修改。

[root@tpwb mail]# # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

[root@tpwb mail]#

如果在执行m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 报错的话,那么检查是否安装sendmail-cf.*.rpm是否安装:

下面要对local-host-names进行修改

[root@tpwb mail]# vi local-host-names

# local-host-names - include all aliases for your machine here.

tpwb.cn 加入你的域名,这个是我的。

"local-host-names" 3L, 73C written                           

[root@tpwb mail]#

由于sendmail默认是不转发邮件的,所以我们在这个文件中加入211.101.46,使它为211.101.46.1

这个网段转发邮件

[root@tpwb mail]# vi access

 

# Check the /usr/share/doc/sendmail/README.cf file for a description

# of the format of this file. (search for access_db in that file)

# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc

# package.

#

# by default we allow relaying from localhost...

localhost.localdomain           RELAY

localhost                     RELAY

211.101.46.                   RELAY

126.com                     RELAY

163.com                     RELAY

sohu.com                    RELAY

sian.com                    DISCARD

[email protected]      REJECT

这里表示允许本机和211.101.46.0/24网段中的机为允许进行中继(设为RELAY)

同样把126,163,搜狐的邮箱设为可以转发,

阻挡新浪邮箱的地址进行转发。同时不在RELAY范围的邮箱地址都不会进行转发。

阻挡[email protected] 的邮箱地址

建议大家可一个一个试一下,看看是否达到了允许,阻挡的效果。我通过测试后,全部正确。当然要在都配置完在测试,好,我们继续

保存,

同时再将access的内容导入access.db实现对access.db的配置(因为access.db不能直接进行更改,所以使用导入的方式实现配置),命令如下

[root@tpwb mail]# makemap hash access.db < access

You have new mail in /var/spool/mail/root

大家可以看到当我配置到这里时,root已经收到了一封邮件。

 

重新一下sendmail服务器。

[root@tpwb mail]# service sendmail restart

Shutting down sendmail: [  OK  ]

Shutting down sm-client: [  OK  ]

Starting sendmail: [  OK  ]

Starting sm-client: [  OK  ]

 

[root@tpwb home]# netstat -l

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State     

.......     

tcp      0      0 211.101.46.251:smtp         *:*                         LISTEN                                   

......

SMTP已经开启。

在来检查smtp25端口是否打开)

[root@tpwb home]# netstat -tnl | grep :25

tcp        0      0 211.101.46.251:25           0.0.0.0:*                   LISTEN     

关掉放火墙:

[root@tpwb etc]# service iptables stop

Flushing firewall rules: [  OK  ]

Setting chains to policy ACCEPT: filter [  OK  ]

Unloading iptables modules: [  OK  ]

到此我们完成了一半的工作。我们可以正常发送邮件了

可以用OUTLOOK试一下,但还不能接受,

我们继续….

修改/etc/dovecot.conf文件

将:

#protocols = imap imap3

更改为:

protocols = imap imap3 pop3 pop3s (启动imap imap3 pop3 pop3s功能)

 

[root@tpwb etc]# vi dovecot.conf

 

## Dovecot 1.0 configuration file

 ......

#  imap imaps pop3 pop3s

protocols = imap imaps pop3 pop3s  去掉前面的#

 ......

 保存

重新启动一下POP3

[root@tpwb etc]# service dovecot restart

Stopping Dovecot Imap: [FAILED]

Starting Dovecot Imap: [  OK  ]

查看一下

[root@tpwb etc]# netstat -nl

......     

tcp     0     0 :::110     :::*                LISTEN     

在来看一下pop3110端口是否打开

 [root@tpwb etc]# netstat -tnl | grep :110

tcp        0      0 :::110                      :::*                        LISTEN    

呵呵,好了,如果你还不会,我无语了。

这样接受,发送邮件都可以了 我们在用outlook试一下。

下一篇文章 Linux下sendmail的配置详解3之带认证配置篇

相关阅读 更多 +
排行榜 更多 +
小小盗贼正版下载

小小盗贼正版下载

休闲益智 下载
骨骼实验室手机版下载安装

骨骼实验室手机版下载安装

飞行射击 下载
pubgtool画质助手官方正版下载

pubgtool画质助手官方正版下载

游戏工具 下载