从没有接触过 Linux ,更不用说如何配置 send mail。在从PM那里接到这个 task 之前,对邮件服务器的概念是比较模糊的,更不知道还有 send mail 这么一档子事情。既然 task 的 deadline 已经制定,并且就是一周之后的这个时间,天,只能从 google 开始了。(看来以后还真的需要对 Linux 进行一些必要的了解,至少应该知道 etc 目录在什么地方,因为这个我还是询问了 Nicky 之后才知道的)
下面的文字绝大部分来自于 internet,我只是综合了一下,对自己的配置步骤进行一个大致的总结,同时我此时只是关心如何发送邮件,而不关心如何收取的事情。
1. 修改/etc/mail/sendmail.mc
#vi /etc/mail/sendmail.mc
将下面四行改为如下(如果原本就是如下的样式,则不需要进行任何修改,恭喜你):
# TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
# define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
# dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
# DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
第一行和第二行是去掉行首的注释。
”TRUST_AUTH_MECH” 的作用是使 sendmai l不管 access 文件中如何设置,都能 relay 那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件。
”confAUTH_MECHANISMS" 的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。
第三行是加上注释,以便让sendmail可以侦听所有网络设备,为整个网络提供服务,而不仅仅只对本机提供服务。
第四行是修改的,原来内容是:
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
去掉行首的注释符,并且将内容修改成Port=25
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
在smtp的默认端口(25)上进行认证,而不是587端口。这样就强制所有使用该邮件服务器进行邮件转发的用户在认证后才能发邮件了。
2.运行:
# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
用m4重新生成sendmail.cf文件,记住,如果你对sendmail.mc文件进行了修改,就一定要执行此步骤,这样保证你的sendmail.cf是全新的。
3.修改/etc/mail/local-host-names,
将希望该邮件服务器使用的邮箱名加进去,比如邮箱为:peter@xxxx.com则将xxxx.com加入到该文件中。
# local-host-names - include all aliases for your machine here.
xxxx.com
mail.xxxx.com
4.修改/etc/mail/access,
在这里添加上你要收发邮件所通过的IP出口***.***.***.***,这里我们的IP是192.168.4.102,给他放任的权限RELAY(所有)。
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.4.102 RELAY
记得,在你修改完这个文件后要执行makemap hash access.db < access,
这样可以保证你所建立的表是最新的
(如果你想给一个网段里的所有IP赋予 relay 权限,那么可以直接输入 192.168.4 RELAY)
5.修改/etc/hosts,
这个文件也很重要,他是设定你邮件服务器域名的关键,根据你的不同,可以自行设置。
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 xxxx .com xxxx
127.0.0.1 localhost.localdomain localhost
192.168.4.1 xxxx.com xxxx
(192.168.4.1 在这里我配置的是当前 Linux 的网关)
OK,目前为止我们的邮件服务器已经配置完成
6.下面要重新启动两个邮件服务
重启sendmail服务,运行:
# service sendmail restart
重启xinetd服务,运行:
# service xinetd restart
运行netstat命令看smtp和pop3服务是否都已经启动
# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 ethergns.com:ipp *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
udp 0 0 *:32768 *:*
.......
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 2435 /tmp/.font-unix/fs7100
........
接着写一段 JavaMail 来发送 E-mail 就可以了。
reference
1.http://bbs.chinaunix.net/viewthread.php?tid=817853
下面的文字绝大部分来自于 internet,我只是综合了一下,对自己的配置步骤进行一个大致的总结,同时我此时只是关心如何发送邮件,而不关心如何收取的事情。
1. 修改/etc/mail/sendmail.mc
#vi /etc/mail/sendmail.mc
将下面四行改为如下(如果原本就是如下的样式,则不需要进行任何修改,恭喜你):
# TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
# define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
# dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
# DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
第一行和第二行是去掉行首的注释。
”TRUST_AUTH_MECH” 的作用是使 sendmai l不管 access 文件中如何设置,都能 relay 那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件。
”confAUTH_MECHANISMS" 的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。
第三行是加上注释,以便让sendmail可以侦听所有网络设备,为整个网络提供服务,而不仅仅只对本机提供服务。
第四行是修改的,原来内容是:
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
去掉行首的注释符,并且将内容修改成Port=25
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
在smtp的默认端口(25)上进行认证,而不是587端口。这样就强制所有使用该邮件服务器进行邮件转发的用户在认证后才能发邮件了。
2.运行:
# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
用m4重新生成sendmail.cf文件,记住,如果你对sendmail.mc文件进行了修改,就一定要执行此步骤,这样保证你的sendmail.cf是全新的。
3.修改/etc/mail/local-host-names,
将希望该邮件服务器使用的邮箱名加进去,比如邮箱为:peter@xxxx.com则将xxxx.com加入到该文件中。
# local-host-names - include all aliases for your machine here.
xxxx.com
mail.xxxx.com
4.修改/etc/mail/access,
在这里添加上你要收发邮件所通过的IP出口***.***.***.***,这里我们的IP是192.168.4.102,给他放任的权限RELAY(所有)。
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
192.168.4.102 RELAY
记得,在你修改完这个文件后要执行makemap hash access.db < access,
这样可以保证你所建立的表是最新的
(如果你想给一个网段里的所有IP赋予 relay 权限,那么可以直接输入 192.168.4 RELAY)
5.修改/etc/hosts,
这个文件也很重要,他是设定你邮件服务器域名的关键,根据你的不同,可以自行设置。
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 xxxx .com xxxx
127.0.0.1 localhost.localdomain localhost
192.168.4.1 xxxx.com xxxx
(192.168.4.1 在这里我配置的是当前 Linux 的网关)
OK,目前为止我们的邮件服务器已经配置完成
6.下面要重新启动两个邮件服务
重启sendmail服务,运行:
# service sendmail restart
重启xinetd服务,运行:
# service xinetd restart
运行netstat命令看smtp和pop3服务是否都已经启动
# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 ethergns.com:ipp *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
udp 0 0 *:32768 *:*
.......
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 2435 /tmp/.font-unix/fs7100
........
接着写一段 JavaMail 来发送 E-mail 就可以了。
reference
1.http://bbs.chinaunix.net/viewthread.php?tid=817853