Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300351
  • 博文数量: 67
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 690
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-27 10:27
文章分类

全部博文(67)

文章存档

2007年(11)

2006年(42)

2005年(14)

我的朋友

分类:

2006-05-21 13:47:51


AIX上的sendmail邮件服务器的配置及常见问题

  这两天在看AIX时突然对Sendmail产生了兴趣,CU上基本上都是转载至IBM的内容,当然,官方的是最权威的了。但是很多大侠都是简单的给个链接,很多初学者还是搞不清楚。这里也先转载一下,顺便加些注释。文尾为配置sendmail通过SMTP服务器发Internet邮件内容。IBM的。

以下为内容,加粗的为我根据实际情况加的注释。
提要 AIX上的Sendmail邮件服务器的配置及常见问题
正文 在系统安装完毕后,通常我们只需按照缺省配置启动sendmail邮件服务就可以用mail,outlook,foxmail等常用工具收发邮件了。
根据我的试验,AIX好像不支持在pc上使用foxmail或Outlook以root的用户收取邮件,我注册了个新用户可以了,但是用root时则提示密码错误。没找到官方说明,只是我的试验。
简单操作如下:
# startsrc -s sendmail -a “-bd -q30m” (启动邮件服务后台进程)
可以编辑/etc/rc.tcpip找到start /usr/lib/sendmail这一行,如果被注释掉了,取消注释。这样可以开机自动启动sendmail。验证是否启动使用lssrc -s sendmail,如果为active则表明启动成功。
# vi /etc/inetd.conf, (uncomment the following line)
pop3 --stream --tcp --nowait --root-- /usr/sbin/pop3d pop3d
这篇文章的估计是从英文翻译过来的,有些翻译为中文了,有些还是英文。罗嗦一句吧,他的意思是取消这一行的注释。
# refresh -s inted (刷新超级守护进程,允许pop3客户端连接)
常见问题一、
当我们需要把AIX服务器的root信箱转发到我们的常用个人信箱以保证及时收到系统发出的重要warning或者报错的话,我们就要配置aliases别名。
举例如下:
# vi /etc/aliases
# Alias for mailer daemon
MAILER-DAEMON:root
# Following alias is required by the new mail protocol, RFC 822
postmaster:root
# Aliases to handle mail to msgs and news
nobody: /dev/null
# Alias to which SSA related warnings are mailed
ssa_adm: root
# Alias for admin issue
root: root,test@cn.sendmail.com
这里可能有些刚接触Unix的人不太知道他想说什么,其实他的意思就是在aliases中加入上面两行。
要使改动生效,有两种办法
(1) # sendmail -bi
(2) # newaliases
根据AIX的文档,两者功能完全一样。当然,那个#不要:)
当执行命令遇到如下信息时,我们需要检查目录的许可权限是否设对。
# newaliases
WARNING: Group writable directory /var/spool
WARNING: Group writable directory /var/spool/mqueue
/etc/mail/aliases: 5 aliases, longest 17 bytes, 78 bytes total
# ls -dl /var/spool
drwxrwxr-x --12 bin --bin -- --512 Dec 19 11:26 /var/spool
# ls -dl /var/spool/mqueue
drwxrwxr-x --2 root --system --512 Mar 17 18:08 /var/spool/mqueue
# chmod 755 /var/spool
# chmod 755 /var/spool/mqueue
# newaliases
/etc/mail/aliases: 5 aliases, longest 17 bytes, 78 bytes total
这个我以为不太重要,只是说明权限太大,他将同组人员的写权限封掉了。
另一种警告信息的解决
# sendmail -bi
WARNING: World writable directory /etc
dbm map "Alias0": unsafe map file /etc/aliases
WARNING: cannot open alias database /etc/aliases
Cannot create database for alias file /etc/aliases: A system call received a par
ameter that is not valid.
# ls -dl /etc
drwxrwxrwx --30 root --system ----4096 Mar 17 10:35 /etc
# chmod 755 /etc
# sendmail -bi
/etc/aliases: There are 4 aliases. The longest is 9 bytes, with 57 bytes total.
备注:
除此aliases全局设置方法外,我们还可以编辑用户自己属主目录下的$HOME/.forward
add line with the target mail address, for example

存盘退出后,凡是发到用户的信都会同时转发到
这个方法适用于没有权限改/etc/aliases的用户。
常见问题二、
当我们的/etc/sendmail.cf被误删除,或者被损坏,或者被改的面目全非时,如何处理?
(1) # cp /usr/lpp/bos.net/inst_root/etc/mail/sendmail.cf
/etc/sendmail.cf
备注:在/usr/lpp/bos.net/inst_root/etc目录下有很多系统文件的重要拷贝,如
inetd.conf/rc.tcpip/syslog.conf 等许多许多。
(2) 重新创建 sendmail.cf(以AIX 4.3.3为例) 步骤如下:
首先我们要确认系统中存在下列文件集: bos.adt.base & bos.net.tcp.adt
AIX 将产生定制sendmail配置文件的工具和宏放在/usr/samples/tcpip/sendmail/cf
具体操作步骤如下:
#cd /usr/samples/tcpip/sendmail/cf
这里有我们需要的文件aix433.mc. 它包含我们需要定制的sendmail特性
#cp aix433.mc mysendmail.mc 创建它的一份拷贝
#vi mysendmail.mc
divert(0)dnl
OSTYPE(aix43)dnl
FEATURE(genericstable)dnl
FEATURE(mailertable)dnl
FEATURE(virtusertable)dnl
FEATURE(domaintable)dnl
FEATURE(allmasquerade)dnl
FEATURE(promiscuous_relay)dnl
FEATURE(accept_unresolvable_domains)dnl
FEATURE(accept_unqualified_senders)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)
编辑修改后如下:
#more mysendmail.mc
--------------------------------------------
divert(0)dnl
OSTYPE(aix433)dnl
FEATURE(allmasquerade)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)
--------------------------------------------
注意:在mysendmail.mc中,注释是不起作用的,所以不需要的feature 一定要删除,否则在生成sendmail配置文件时会出错。
下面我们要创建sendmail.cf
# cd /usr/samples/tcpip/sendmail/cf
# m4 ../m4/cf.m4 mysendmail.mc >; mysendmail.cf
# mv mysendmail.cf /etc/sendmail.cf

常见问题三、
当我们用mail -v发送邮件时,发现要过很长时间才能发出才回到提示符,该如何处理?
我刚开始配的时候就是这样,我都写完邮件回到shell好久了,它才突然一下子跳出来一大堆信息,弄得我还以为配错了呢。
# mail -v ql
Subject: test
Just a test
.
Cc:
WARNING: The local host name (r6f50) does not have a domain; fix $j in config fi
le
ql... Connecting to local...
ql... Sent
这个问题的产生是由于我们在sendmail.cf中并未指定域名,那么sendmail宏在处理$j时不知怎么办,那么会延长daemon的处理时间。解决办法是使用空域名。
# vi /etc/hosts
ipaddress hostname hostname.
主要是在原来的记录上加hostname和一个点”.”然后存盘退出
这个说得有点不明白,不是“主要”,而是“就是”,举例来说,如果你的机器叫p520,地址为192.168.1.1,则原先hosts里面有一条记录为
192.168.1.1 p520
现在只需在后面加一条即可
192.168.1.1 p520 p520.
# mail -v ql
Subject: test
Just a test
.
Cc:
ql... Connecting to local...
ql... Sent
再次发送测试,显示问题已经解决。
注意事项:
上述问题是以AIX 4.3.3为例,如果你的系统是AIX 5L,应灵活应用并注意其区别
例如 5.1 的配置文件是/etc/mail/sendmail.cf & /etc/mail/aliases, 但4.3.3的配置是/etc/sendmail.cf & /etc/aliases.
根据我的试验,其实你直接编辑/etc/sendmail.cf和/etc/aliases也行,它会自动更新到mail目录的文件中。
 

  IBM的文档结束,下面复制一点配置sendmail通过SMTP服务器发Internet邮件的信息:
  在TCP/IP网络中,常见的三种主机名解析方法是:DNS、NIS、etc/hosts,如果/etc/resolv.conf存在则先用DNS解析,如果要改变解析顺序,可以修改/etc/netsvc.conf 或变量NSORDER(其优先级高于/etc/netsvc.conf )如在/etc/netsvc.conf 中可定义hosts=local,nis,bind,也可设置NSORDER=local,nis
  1.有DNS的情况
  sendmail 缺省设置与DNS一起工作,不需要对/etc/sendmail.cf做任何修改,设置好/etc/resolv.conf并能连通DNS服务器,就可以发Internet邮件了。
我没有用DNS,没有发言权
  2.使用SMTP代理的情况
  SMTP的全称即为“简单邮件传输协议”,它负责邮件在两台服务器或客户端之间进行交换。习惯上,如果源服务器/客户端将邮件通过SMTP协议传送到其目标服务器上,我们将其称之为“投递”,否则称之为“中继”(RELAY)
  SMTP服务具有以下几个显著的特点:
  1.SMTP服务是匿名服务,并不要求确认发件人与收件人的真实身份;
  2.SMTP服务是明文服务,所有经过SMTP传输的内容均以明文传送。
  使用SMTP代理的情况下,需要对/etc/sendmail.cf做些修改,先要修改DS项,这是配置用来转发邮件的主机。格式如下:
  smtp主机的定义: DS
  DSsmtp xx.com.cn àsmtp的主机名
  或者
  DSsmtp:[xxx.xxx.xxx.xxx] àsmtp的IP地址
  我的配置为DSsmtp:[192.168.1.1]
  本机的定义: Dw, Dm和Cw
  Sendmail 缺省自动定义 Dw (本机的主机名), Dm (域名) 和 Cw (主机别名) 。格式如下:
  Dwxxx //主机名紧挨着Dw写
  Dmcom.cn
  Cwlocalhost
   据我试验,好像这几项不配也没关系。好像它会去hosts里面自己取
  配置完毕后重起sendmail服务,然后可以用sendmail –d0.4查看域名的情况和sendmail版本情况,发送邮件可以用mail –v 显示详细的发送信息。
  如:mail –v
  显示信息如下:
  ... Connecting to [xxx.xxx.xxx.xxx] via smtp...
  220 xxx.com ESMTP
  >>> EHLO xxx.com.cn //发件人的名字就是:用户名@ xxx.com.cn
  250-xxx.com.cn
  250-AUTH LOGIN CRAM-MD5 PLAIN
  250-AUTH=LOGIN CRAM-MD5 PLAIN
  250-PIPELINING
  250 8BITMIME
  >>> MAIL From:<用户名@xxx.com.cn>
  250 ok
  >>> RCPT To:<>
  250 ok
  >>> DATA
  354 go ahead
  >>> . à结束符<回车><换行>.<回车><换行>
  250 ok 1024473751 qp 1714
  ... Sent (ok 1024473751 qp 1714)
  Closing connection to [xxx.xxx.xxx.xxx]
  >>> QUIT
  221 xxx.com.cn
  
  其中>>>后面显示的内容可以手工输入,可以telnet xxx.xxx.xxx.xxx(SMTP代理主机名) 25,一步一步输入,测试整个邮件发送过程,找到故障原因所在。
实际显示跟这可能不太一样,不过没关系,只要收到邮件就可以了。
 
全文完。附sendmail.cf解释一篇:
 
 
阅读(8505) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~