Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43046
  • 博文数量: 11
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-09 03:21
个人简介

运维新人!

文章分类

全部博文(11)

文章存档

2015年(1)

2014年(10)

我的朋友

分类: 系统运维

2014-12-01 15:53:32

由于论坛问的sendmail问题有很多重复的,所以写了这个帖子。希望大家查找方便。 
  由于本人技术、精力有限,对sendmail也没有作过太深入的研究。只是以前经常使用,对配置熟一些,希望能在这里起到抛砖引玉的作用。 
其实free的版本的sendmail没什么太多的工具,所有的工具都要自己开发,不好讨论了。这里我们我们主要讨论两方面MTA和webmail,webmail方面我认为最适合的是openwebmail了。 
其他方面东西,希望斑竹老大能给给予整理。 

  首先,建议要配置sendmail的朋友,最好看看着几篇文章。 
sendmail的配置文章,带sasl认证的,心余写的: 
 
我以前写的,关于sendmail+openwebmail的文章,其中openwebmail。1。65可能有点老了,但可以参考: 
 
关于openwebmail对最新版本的文章,这个是必须要看的!: 
 
以上推荐的文章,我都亲自配置过多次,均获得成功。 
下面FAQ的具体内容,我会不停的整理和更新,也希望大家共同维护。 

第一部分:MTA配置: 

前言 
   sendmail作为一个优秀的MTA,一直是UNXI系统中缺省的邮件服务器。在UNIX中,应用程序是和配置文件分开的放置的。就sendmail而言,sendmail的程序是一般放在/usr/sbin目录下(不同的版本UNIX版本路径可能有所不同),而配置文件是放在/etc或者/etc/mail中(不同的版本UNIX版本路径可能有所不同),在sendmail v8.9以后,sendmail增加了一个宏编译文件/sendmail.mc,通过在宏编译文件中加一些选项,再经过编译就可以得到一个sendmail.cf的配置文件,极大的方便了用户。 


1、怎样编译生成sendmail.cf文件? 
a:redhat7.0的版本, 
# m4 /usr/share/sendmail-cf/cf/redhat.mc >; /etc/sendmail.cf 
   redhat7.2以上: 
# m4 /etc/mail/sendmail.mc >; /etc/mail/sendmail.cf  
   如果提示没有发现命令,是没有安装sendmail-cf-*文件包。 
   redhat光盘中有rpm包,可以直接安装。其他版本,download相应的软件包安装。 


2、sendmail如何做能支持POP3? 
a:sendmail本身不支持pop3服务,你要安装相应的ipop3服务软件。 
 这里以redhat8为例,找到安装光盘中的imap*.rpm文件。 
 # rpm -ivh imap*.rpm 
 # vi /etc/xinetd.d/ipop3 
 更改 disable=yes 为 no 
 # /etc/rc.d/init.d/xinetd restart 

3、如何饶过firewall的屏蔽。 
 vi /etc/mail/sendmail.mc 
 Feature ('accept_unresolvable_domains')  
添上这一句,就可以传递那些域名不能从你的邮件服务器所在主机解析的邮件。当邮件在防火墙里面时,必须使用这个特性。否则有些邮件不可到达。使用这个特性后,sendmail就不会直接去试图解析那些邮件地址,而是把邮件转发到上一级邮件服务器,让其去转发,就可以饶过防火墙屏蔽。 

4、sendmail使用的用户账号是系统的 ,这些用户的login shell定义的是no shell(email only),如何让用户自己修改密码?是不是要改用其他的操作系统和软件才能实现啊?  
多谢指点!!! 
a:不用啊,可以自己编写一个shell,给mail user用。  
例如:  
1、更改密码  
2、删除信件。  
3、退出。  
具体你要自己编写。  
也可以编写一个web方式的,来更改密码。  
实在不行,在装一个webmail,通过她来更改密码。例如:openwebmail。 
当然,可以从中分离出更改密码的页面。 

5、本机上可以telnet ip address 25和110端口,但是客户端不行,提示连接失败,为什么?    
xingplayer:  
a:看看防火墙是不是打开了,关闭掉或者设置打开25或者110端口。 
   或者是这个原因, sendmail.cf文件中有一个选项:  
O DaemonPortOptions  


edit /etc/sendmail.cf  
找到:  
# SMTP daemon options  
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA  
添加:  
# SMTP daemon options  
O DaemonPortOptions=Port=smtp,Addr=你的IP, Name=MTA  
保存!  


这样就能够解决问题 

   
6、如何建立一个mail 的dns记录: 
 mail    IN A   192.168.2.11   --你的mail主机地址。 
 @       IN MX   10   mail     ---建立你的mx记录,邮件等级为10。 

7、请教高手,我想知道在Linux下怎样查看和删除当前邮件队列? 
a:查看: 
  #mailq |more  ---看到的是超过正常时间限制的信件 
  #ls /var/spool/mqueue  --队列中所有的信件。 
   删除: 
  # rm -rf /var/spool/mqueue/* 

8、公司内部使用的是Exchange邮件系统。现在希望使用一台linux server来作对外的mail relay.以减轻E2k的负担。应该怎样作?  
我现在用sendmail作对外的relay是没有问题了。但是对于收信,我不清楚怎样配置。  
我不明白,一台server怎樣同時制定不同的規則,因為外發/內送的規則是截然不同的.因为:  
OUtbound: 來源 指定主機(指定@domain) 目標: all host,all domain to internet (這個我東拼西湊,總算基本可以實現,就使用access文件)  

Inbound: 來源 All host,all domain internet 目標:@intra.com.cn  

這樣兩個完全衝突的規則,如何在一個service 的配置中實現?  
我實在是很困惑,還請各位指教指教. 
a:其实我个人觉得,你用了liunx下的sendmail,完全可以替代了exchange,我的一台PIII500,256sdrom,18G的compaq pcserver,我总共10000左右用户,是以前isp做的mail server,100多个公司,也就是100多个虚拟域名。使用率很高,但是当时不提供webmail服务。工作性能良好,从没出现超负荷情况。  

如果你非得要做的话,有一个解决方法。  
首先,sendmail 要装smtp服务,不要装pop3服务了。 exchange都要装smtp and pop3服务。  
在dns server中设置:  
smtp IN A sendmailhost ip address  
pop3 IN A exchangehost ip address  
@ IN MX 10 pop3  
理论分析:  
首先是发信,你的用户给外面的发信,用的smtp服务器是sendmail的主机地址,实现了你的作对外的mail relay。外面的给你的邮件和你公司员工互相发的邮件,在smtp server之间,查找的是mx纪录,而不是A纪录,所以,就发到了pop3主机上,也就是你的exchange主机。还有的是通过你的用户有别名的,到了你的exchange主机上,还要relay,所以,exchange的主机也要启动smtp,但是,它只是很少的转发,没有太大的流量。这样,就应该实现了你的要求。  

这样的结果就是smtp and pop3服务分开了。sendmail负责mail relay,exchange 负责pop3 和别名转发。  
你要是还要exchange负责发给不的信件,在server端设置,就麻烦了。你可以用foxmail,在客户端设置。但是要是公司人多,也非常麻烦。  
还不如我说的,实现smtp and pop3分开,无伤大局。  
不知道可不可以实现你的要求。:) 
9、设置了access,为什么不生效? 
a:首先,你要正确配置/etc/mail/access。还要看你的/sendmail.cf文件中的对access的定义。 
access-db 
Feature(`access_db','hash /etc/mailaccess')  
Feature(`access_db','dbm /etc/mailaccess')  
第一种,是要生成哈希表形式的库文件 
要运行: 
# makemap hash /etc/mail/access.db < /etc/mail/access 
第二种,是传统的数据库格式。 
运行: 
# makemap dbm /etc/mail/access.db < /etc/mail/access 

10、我在我们局域网配置了个mail服务器,出现这样一个问题。请大家帮忙:  
我输入smtp,pop3输入我机器的ip地址没有问题,但输入我的DNS主机器名,就  
不能进行收发mail.  
我问过别人,他说是DSN的配置问题,我通过xwindows配置的,感觉很简单,那里有错呢?  
牵扯到DSN的就是:  
主机器名:test.com  
主DNS:我机器的ip地址  
域名:test.com  
不清楚那里错了,请大家这点。多谢! 
a:首先,保证你的dns server设置正确。  
其次,你还要清楚,你在局域网中测试。你的域名test.com不是合法的。  
正常的dns server是解析不到的。  
你要用主机名和域名测试,要保证客户机使用的dns server要用给你的mail server作解析的dns server保持一致。这样,按照dns server的工作原理,才能给你的可户机作正确的解析。  
有的时候还要reboot客户主机,或直接清除你的cache,才可以的。 

11、我想给邮件服务器上的所有mail用户发新,或给其中指定的很多用户发信,怎么解决啊? 
a:建立别名文件,也就是做群发啊。 
看你的sendmail.cf或者sendmail.mc文件中,应该有定义。 
具体操作: 
1、编辑系统别名文件,添加一个虚拟用户alluser。 
#vi /etc/aliases 
alluser::include:/etc/mail/alluser 
2、重新生效一下。 
#newaliases 
3、编写用户文件,格式是每一行一个用户名。用户名是你公司所有员工的用户名或者你想要转发的用户。 
vi /etc/mail/alluser 
peng 
gadfly 
tiantian 
。。。。 
。。。 
到着,就应该ok了,应该不用重起sendmail进程。 

12、我想对我公司的内部的LINUX9。01邮件服务器(sendmail )进行远程控控制 (包括加用户,系统开关机等)为什么在外面不能用root 用户登陆系统啊。 是不是把普通用户的权限改成系统管理员的权限就可以啊。从那个地方进行修改啊。 目地是对LINUX邮件服务器进行远程控制。  

a:telnet服务默认是不支持root直接登陆的,ssh可以的。但是不提倡,这种习惯不好。。。 

13、先用普通的用户登进去, 再用SU然后输入ROOT的密码可以进入到:  
可以实现关机。重新启动功能,但还是不能加、删除用户。怎样才能实现添加、删除用户的功能呢??? 

a:应该是:  
$su -  
只输入su,是转换了root的uid,但是没有加载环境变量。  
用su -,就加载了环境变量。  
你用su,添加用户就要写全命令路径! 

阅读(1319) | 评论(0) | 转发(0) |
0

上一篇:sendmail.cf 文件注释

下一篇:yum源配置

给主人留下些什么吧!~~