Chinaunix

标题: linux 如何配置可以实现只发送邮件的功能 [打印本页]

作者: zhangbin    时间: 2010-01-27 16:59
标题: linux 如何配置可以实现只发送邮件的功能
应用目的: 将系统中一些软件运行的部分结果定时发送到个人邮箱(可以是公司的邮箱,也可以是公共的邮箱如gmail等)
当前环境:redhat 5.× server x64,系统自带sendmail,公司有独立的DNS服务器。机器通过代理可以连接到公网。

由于对mail这一部分内容以前没有接触,对一些概念、原理没有一点认识,所以希望从大家这里获得详细的实现方法。谢谢大家
作者: jerrywjl    时间: 2010-01-27 17:06
如果确认你的机器能够连接到internet,并且能有DNS支持,那么启动sendmail服务即可。任何配置都不用改。反正你是配置外发邮件嘛!
作者: zhangbin    时间: 2010-01-27 17:17
谢谢楼上的关注。
linux机器配置了dns的信息,可以ping到smtp.gmail.com。
将sendmail服务启动,服务有两个sendmail和sm-client。但是,我用mail发一个信息给gmail的邮箱,在mail命令发出后,看不到任何回显的信息,在邮箱中不能接受到发出的邮件。我不知道从哪里查看问题出在哪里?(发给公司邮箱的邮件也没有收到)
同时,我修改过sendmail。cf文件,将smtp.gmail.com地址添加进去,重启sendmail服务,还是没有结果。
作者: 大丫的小哥    时间: 2010-01-27 17:26
这个要求实际上是在内网搭建一个自用的邮件系统,只需要内网一台能上网的机器就可以了。装好sendmail,然后同时安装pop服务(当然你要用本机发邮件就不用了,不过很少有人这么用吧),就是dovecot软件包,在光盘里面有,具体哪个忘记了,可以找一下!稍微修改一下sendmail和dovecot的配置启动服务就可以用了!你要是只发送到特定的几个邮箱,只需要在access里面设置一下relay就可以了,如果要发送到不特定的邮箱,可以通过服务器认证的方式,这个就还需要安装sasl。然后在linux系统里面添加一个用户就可以在其他客户端用outlook发信了,但是是收不到外面回复的信的!你自己的邮箱地址是在local-host-name里面设置,比如设置为abc.com你的发信地址就是linux用户@abc.com.
作者: vermouth    时间: 2010-01-27 17:27
先给自己发,测试下。
作者: jerrywjl    时间: 2010-01-27 18:14
原帖由 大丫的小哥 于 2010-1-27 17:26 发表
这个要求实际上是在内网搭建一个自用的邮件系统,只需要内网一台能上网的机器就可以了。装好sendmail,然后同时安装pop服务(当然你要用本机发邮件就不用了,不过很少有人这么用吧),就是dovecot软件包,在光盘 ...


这个问题我做过测试,前提是你这台服务器的环境和我描述的一样——内网中,但可以通过NAT上外网,用telnet 127.0.0.1 25试试看。对于发信的过程,用tail -f /var/log/maillog跟踪看日志。
作者: blueswxs    时间: 2010-01-27 22:01
原帖由 jerrywjl 于 2010-1-27 18:14 发表


这个问题我做过测试,前提是你这台服务器的环境和我描述的一样——内网中,但可以通过NAT上外网,用telnet 127.0.0.1 25试试看。对于发信的过程,用tail -f /var/log/maillog跟踪看日志。



作者: 7717060    时间: 2010-01-27 22:32

作者: nagaregawa    时间: 2010-01-27 22:53
标题: 回复 #1 zhangbin 的帖子
学习
作者: zhangbin    时间: 2010-01-28 15:28
我给本机root用户发邮件,只有很少的时候能成功,其他还没有测试。
当前的环境:
/etc/host
    127.0.0.1    localhost
    *.*.*.120    HP9400-2          #固定的本地ip地址

/etc/resolv.conf
    *.*.*.194                #实际的dns服务器地址,可以ping通smtp.gmail.com,说明该地址在起作用

发邮件命令:
    mail -s "test"  root@localhost  < test.txt
    mail -s "test2"  root@HP9400-2  < test.txt
    mail -s "test3"  root  < test.txt
只有向root@localhost发邮件,有时可以成功,其他都不成功。

其他问题:
1、重启sengmail时,启动时间会超过5分钟
2、写/var/log/maillog的时间滞后,mail命令发出后很长时间才写日志。

请大家帮忙诊断一下问题在哪里?
作者: xuledw    时间: 2010-01-28 16:08
/etc/mail/sendmail.cf中Addr为你自己的IP地址或者改配置文件中关于域名的部分
O DaemonPortOptions=Port=smtp,Addr=192.168.1.19, Name=MTA
启动sendmail后看看netstat -nltp监听的端口是帮定到那个IP了
另外组合/etc/hosts看看是否能加快启动sendmail
如:
# cat /etc/hosts
192.168.1.19        mail.abc.com lfzhangtest2        localhost
# netstat -nltp
tcp        0      0 192.168.1.19:25             0.0.0.0:*                   LISTEN      6342/sendmail: acce
# telnet mail.abc.com 25
Trying 192.168.1.19...
Connected to mail.abc.com (192.168.1.19).
Escape character is '^]'.
220 mail.abc.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 28 Jan 2010 16:01:21 +0800
quit
221 2.0.0 mail.abc.com closing connection
Connection closed by foreign host.
作者: tomasea    时间: 2010-01-28 16:09
原帖由 zhangbin 于 2010-1-28 15:28 发表
我给本机root用户发邮件,只有很少的时候能成功,其他还没有测试。
当前的环境:
/etc/host
    127.0.0.1    localhost
    *.*.*.120    HP9400-2          #固定的本地ip地址

/etc/resolv.conf
     ...

看一下maillog什么内容
作者: tomasea    时间: 2010-01-28 16:11
# netstat -nltp
tcp        0      0 192.168.1.19:25             0.0.0.0:*                   LISTEN      6342/sendmail: acce

你的sendmail只监听本机的ip,到配置文件里修改一下
作者: jerrywjl    时间: 2010-01-28 16:51
2、写/var/log/maillog的时间滞后,mail命令发出后很长时间才写日志。


时间很长,多数还是因为DNS解析上面有问题。不过到底是不是,还是要看log。
作者: zhangbin    时间: 2010-01-28 17:00
原帖由 xuledw 于 2010-1-28 16:08 发表
/etc/mail/sendmail.cf中Addr为你自己的IP地址或者改配置文件中关于域名的部分
O DaemonPortOptions=Port=smtp,Addr=192.168.1.19, Name=MTA
启动sendmail后看看netstat -nltp监听的端口是帮定到那个IP了
另 ...


谢谢回复。
现在机器没有加入到域中,所以在hosts文件中只有127.0.0.1   localhost和本地IP一行。
你提到修改/etc/mail/sendmail.cf文件,我想,在缺省情况下,smtp的地址是127.0.0.1 时,给本机的root发邮件应该是可以的,但是现在给root@localhost发的邮件都收不到,这就比较奇怪了。(是不是有些服务需要关闭,现在刚安装好的系统)
我也按你说的方法试了一下:
1、修改/etc/mail/sendmail.mc文件
2、m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
3、service sendmail restart
4、 netstat -nltp
    tcp        0      0  *.*.*.120:25            0.0.0.0:*                   LISTEN      3567/sendmail: acce
   原来是:
    tcp        0      0 127.0.0.1:25            0.0.0.0:*                   LISTEN      3567/sendmail: acce

结果: root还是收不到邮件。
/var/log/maillog日志信息:
Jan 28 08:49:12 HP9400-2 sendmail[3944]: My unqualified host name (HP9400-2) unknown; sleeping for retry
Jan 28 08:49:35 HP9400-2 sendmail[3948]: My unqualified host name (HP9400-2) unknown; sleeping for retry
Jan 28 08:49:43 HP9400-2 sendmail[3950]: My unqualified host name (HP9400-2) unknown; sleeping for retry
Jan 28 08:50:12 HP9400-2 sendmail[3944]: unable to qualify my own domain name (HP9400-2) -- using short name
Jan 28 08:50:12 HP9400-2 sendmail[3944]: o0S0oC0B003944: from=root, size=105, class=0, nrcpts=1, msgid=<201001280050.o0S0oC0B003944@HP9400-2>, relay=root@localhost
Jan 28 08:50:12 HP9400-2 sendmail[3944]: o0S0oC0B003944: to=root@localhost, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30105, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
Jan 28 08:50:35 HP9400-2 sendmail[3948]: unable to qualify my own domain name (HP9400-2) -- using short name
Jan 28 08:50:35 HP9400-2 sendmail[3948]: o0S0oZ4V003948: from=root, size=42, class=0, nrcpts=1, msgid=<201001280050.o0S0oZ4V003948@HP9400-2>, relay=root@localhost
Jan 28 08:50:35 HP9400-2 sendmail[3948]: o0S0oZ4V003948: to=root@HP9400-2, delay=00:00:00, mailer=esmtp, pri=30042, dsn=4.4.3, stat=queued
Jan 28 08:50:43 HP9400-2 sendmail[3950]: unable to qualify my own domain name (HP9400-2) -- using short name
Jan 28 08:50:43 HP9400-2 sendmail[3950]: o0S0ohv4003950: from=root, size=103, class=0, nrcpts=1, msgid=<201001280050.o0S0ohv4003950@HP9400-2>, relay=root@localhost
Jan 28 08:50:43 HP9400-2 sendmail[3950]: o0S0ohv4003950: to=root@HP9400-2, delay=00:00:00, mailer=esmtp, pri=30103, dsn=4.4.3, stat=queued

[ 本帖最后由 zhangbin 于 2010-1-28 17:04 编辑 ]
作者: jerrywjl    时间: 2010-01-28 18:38
我还是那个意见,如果你只是配置外发邮件,在/etc/hosts中加这行没有意义:

*.*.*.120    HP9400-2          #固定的本地ip地址

而且你的名称格式也不是FQDN格式,这样肯定有问题。你要确认你往GOOGLE发信,你nslookup的时候set mx能够获得GOOGLE.COM的mx记录。
作者: scorer1120    时间: 2010-01-29 15:08
1. 那个 HP9400-2 需要加到 /etc/mail/local-host-names 中,才能收到 寄往@HP9400-2的信件。
2. 还有请把sendmail 监听端口从原来的127.0.0.1 改成0.0.0.0
这样你服务器就没有问题了,要再寄不到,就是你MTU找不到mail主机的原因了,mail主机没问题的。

PS1:你想往外面GMAIL.COM寄信,你还要在/etc/mail/access 中添加自己本地192.168.0     允许RELAY.这样你局域网的机器就可以通过这台MAIL SERVER  发送出去邮件了。

PS2:但……不知道GMAIL会不会把你的邮件当垃圾来扔掉。反正往外面发是肯定能发的,就看对方收不收。
作者: 大丫的小哥    时间: 2010-02-01 13:05
1. 那个 HP9400-2 需要加到 /etc/mail/local-host-names 中,才能收到 寄往@HP9400-2的信件。
2. 还有请把 ...
scorer1120 发表于 2010-01-29 15:08

我想这个回复能解决楼主目前的问题。但是一个邮件系统所涉及的面还是很多的,我也是刚在内网配置完成不久,这有一份简单的配置步骤,短信发给你。
作者: comcn2    时间: 2010-02-03 09:35
二楼说的很对,一般情况下,不需要做任何配置只要能联网,有DNS就可以发邮件了
作者: sky-鹏    时间: 2010-02-03 13:10
我这有sendmail的资料你要不要
作者: 万里北国    时间: 2010-02-05 13:31

作者: liulihua_cu    时间: 2010-03-02 21:15
本帖最后由 liulihua_cu 于 2010-03-02 21:21 编辑

我家里的系统是通过pppoe上网的,由于不是固定IP,经常变,所以如果我不在家的时候要对家里的电脑进行操作,须要ppp0的ip,我是用以下方法做的

mail client: mutt
http://www.mutt.org
配置文件
#cat ~/.muttrc
set locale = zh_CN.utf8
set charset = utf8
set sendmail = "/usr/bin/msmtp -a biz-gmail"
set realname = "biz-bjing@gmail.com"
set use_from = yes
set editor = "nano"
my_hdr From: Name<biz-bjing@gmail.com>
my_hdr Reply-To: Name<biz-bjing@china.com>
set envelope_from_address = "biz-bjing@gmail.com"
set use_envelope_from = yes


mail-mta:msmtp
配置文件
# cat ~/.msmtprc
# http://msmtp.sourceforge.net/
defaults
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
account biz-gmail
host smtp.gmail.com
from biz-bjing@gmail.com
auth on
user biz-bjing@gmail.com
password password_for_biz_bjing
port 587
account default:biz-gmail


将ppp0的外网ip及当时日期时间发到邮箱 someone@gmail.com
将 ~/sendip 加入到cron内可实现每多长时间发一次ppp0的ip到指定邮箱
# cat ~/sendip
#/bin/bash
/sbin/ifconfig ppp0|grep 'inet addr:'|cut -d: -f2|awk '{print $1}'|mutt -s " `date` " someone@gmail.com

作者: freefounder    时间: 2010-03-03 17:20
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2