运维新人!
分类: 系统运维
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,添加用户就要写全命令路径!