分类: LINUX
2012-09-06 11:14:43
sendmail中如果非root用户想实现邮件转发功能,可以通过.forward文件来实现,这个文件是放在用户主目录下的
如用户peter的主目录是/home/peter
[peter@station11 ~]$ cat /home/peter/.forward
test
\peter
[peter@station11 ~]$
如果邮件的转发同时要转发给本身一份,则需要在用户名前添加一个\代表取消转发,免得无限循环下去呵!
清空maillog记录
[root@station11 ~]# > /var/log/maillog
发测试邮件
[root@station11 ~]# ls -l | mail -s "test .forward file function "
检查mail的log信息
[root@station11 ~]# cat /var/log/maillog
Jan 2 14:10:42 station11 sendmail[26665]: o02MAg5a026665: from=root, size=303, class=0, nrcpts=1, msgid=<>,
Jan 2 14:10:42 station11 sendmail[26666]: o02MAgIw026666: from=<>, size=609, class=0, nrcpts=1, msgid=<>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Jan 2 14:10:42 station11 sendmail[26665]: o02MAg5a026665: , ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30303, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o02MAgIw026666 Message accepted for delivery)
Jan 2 14:10:42 station11 sendmail[26667]: o02MAgIw026666: to=test, ctladdr=<> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=60847, dsn=2.0.0, stat=Sent
Jan 2 14:10:42 station11 sendmail[26667]: o02MAgIw026666: to=\\peter, ctladdr=<> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=60847, dsn=2.0.0, stat=Sent
[root@station11 ~]#
看maillog日志格式:
时间戳++++++++主机名(这里是station11)++++++++服务器软件名++++to=发送给谁++++ctladdr=谁发的邮件stat=Send说明邮件已发送出去,但不保证对端收到呵,但能说明本端服务配置基本是正常的
还有一种方法是查mailq,mailq显示出站邮件队列,如果 报告队列中有消息则说明本地或者远程配置或者网络有问题呵!自己给自己发邮件则说明本地配置有问题了
[root@station11 mqueue]# mailq
/var/spool/mqueue is empty
Total requests: 0
这时要说明的是一个权限问题,.forward文件只允许属主有写权限,其他不能有写要限
[root@station11 ~]# ls /home/peter/.forward -l
-rwxrwxr-x 1 peter peter 12 Jan 1 15:06 /home/peter/.forward
[root@station11 ~]# > /var/log/maillog
[root@station11 ~]# ls -l | mail -s "test .forward permission " peter
[root@station11 ~]# mailq
/var/spool/mqueue is empty
Total requests: 0
[root@station11 ~]# su - test
[test@station11 ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/test": 2 messages 1 new 2 unread
U 1 Fri Jan 1 15:22 20/722 "test ls command 2"
>N 2 Sat Jan 2 14:10 20/921 "test .forward file function"
& q
Held 2 messages in /var/spool/mail/test
[test@station11 ~]$ su - peter
Password:
[peter@station11 ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/peter": 3 messages 2 new 3 unread
U 1 Fri Jan 1 15:06 20/722 "test ls command 1"
>N 2 Sat Jan 2 14:10 20/921 "test .forward file function"
N 3 Sat Jan 2 14:36 20/896 "test .forward permission"
& q
Held 3 messages in /var/spool/mail/peter
[peter@station11 ~]$ exit
logout
[test@station11 ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/test": 2 messages 2 unread
>U 1 Fri Jan 1 15:22 20/722 "test ls command 2"
U 2 Sat Jan 2 14:10 21/931 "test .forward file function"
& q
Held 2 messages in /var/spool/mail/test
[test@station11 ~]$ exit
logout
[root@station11 ~]# cat /var/log/maillog
Jan 2 14:36:05 station11 sendmail[27438]: o02Ma5sj027438: from=root, size=278, class=0, nrcpts=1, msgid=<>,
Jan 2 14:36:05 station11 sendmail[27439]: o02Ma5SB027439: from=<>, size=584, class=0, nrcpts=1, msgid=<>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Jan 2 14:36:05 station11 sendmail[27440]: o02Ma5SB027439: forward /home/peter/.forward: Group writable file <===test用户收不到邮件的原因在这里
Jan 2 14:36:05 station11 sendmail[27438]: o02Ma5sj027438: to=peter, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30278, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o02Ma5SB027439 Message accepted for delivery)
Jan 2 14:36:05 station11 sendmail[27440]: o02Ma5SB027439: to=<>, ctladdr=<> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30822, dsn=2.0.0, stat=Sent
[root@station11 ~]#
下面是更新了权限后,test用户很书就收到邮件,注意邮件标题呵!
[root@station11 ~]# chmod 700 /home/peter/.forward
[root@station11 ~]#
[root@station11 ~]#
[root@station11 ~]#
[root@station11 ~]# > /var/log/maillog
[root@station11 ~]# ls -l | mail -s "test .forward permission XXXXXXXXXXXXXX " peter
[root@station11 ~]# su - test
[test@station11 ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/test": 3 messages 1 new 3 unread
U 1 Fri Jan 1 15:22 20/722 "test ls command 2"
U 2 Sat Jan 2 14:10 21/931 "test .forward file function"
>N 3 Sat Jan 2 14:38 20/911 "test .forward permission XXXXXXXXXXXXXX"
& q
Held 3 messages in /var/spool/mail/test
[test@station11 ~]$