linux下sendmail邮件系统安装操作记录

电子邮件系统的组成:

1)邮件用户代理(Mail User Agent , MUA),MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口。 最常用的 MUA 有: linux 中的 mail , elm , pine 等。 Windows 的 outlook , foxmail 等 
2)邮件代理器( Mail Transfer Agent , MTA ) MTA 负责邮件的存储和转发( store and forward )。 MTA 监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接受到的邮件进行缓冲。 在 linux 下的 MTA 程序有: sendmail , qmail 等, 
3)邮件提交代理( Mail Submmission Agent , MSA ) MSA 负责消息有 MTA 发送之前必须完成的所有准备工作和错误检测, MSA 就像在 MUA 和 MTA 之间插入了一个头脑清醒的检测员对所有的主机名,从 MUA 得到的信息头等信息进行检测。 
4)邮件投递代理( Mail Ddlivery Agent , MDA ) MDA 从 MTA 接收邮件并进行适当的本地投递,可以投递个一个本地用户,一个邮件列表,一个文件或是一个程序。 Linux 下常用的 MDA 是 mail.local , smrsh 和 procmail ( www.procmail.org ) 
5)邮件访问代理( Mail Access Agent , MAA ) MAA 用于将用户连接到系统邮件库,使用 POP 或 IMAP 协议收取邮件。 Linux 下常用的 MAA 有 UW-IMAP , Cyrus-IMAP , COURIER-IMAP 等 邮件中继: 就是当邮件向目的地址传输时,一旦源地址和目的地址都不是本地系统,那么本地系统就是邮件的中继(中转站)。

MUA 使用者透过这个程序与邮件服务器沟通,包括收信(以 POP3 连接收信服务器程序 imapd)或寄信(以SMTP 连接 MTA),例如: Outlook Express……等。
MTA 使用 SMTP 通讯协议将信件传递到不同邮件主机上面,例如: sendmail, postfix, Qmail……等。
MSA 是新版 sendmail 发展给 SSMTP 进行 TLS/SSL 联机的 client 端代理器。
MDA 收到信后将信件分配到不同使用者信箱内,算是 MTA 的一个子系统,譬如 BBS 从定义上来说也算是 MDA( BBS 功能复杂,当然不仅仅是 MDA),有些 MDA 被设计来进行滤信动作,它们必须在 local 端运作,因此又被称为 LDA,例如: procmail……等。
MailBox 尚未被使用者下载的邮件,会暂存在服务器的硬盘空间里,称之为信箱。所有使用者信箱的总合必须约等于该分割区总容量的一半,以避免造成信箱尚有空间但邮件系统却无法运作的现象。
Mail Gateway 是一种特殊的邮件服务器,通常扮演代理器的角色,负责统筹某机构内所有信件的收发,并分配邮件给下属的邮件服务器们,透过这个机制能够加速邮件的交换,并且能够进行一致的滤信控制。

sendmail是linux系统中一个邮箱系统,如果我们在系统中配置好sendmail就可以直接使用它来发送邮箱。

sendmail的配置文件

/etc/mail/sendmail.cf :Sendmail的主配置文件;
/etc/mail/access :中继访问控制;
/etc/mail/domaintable ;域名映射;
/etc/mail/local-host-names ;本地主机别名;
/etc/mail/mailertable :为特定的域指定特殊的路由规则;
/etc/mail/virtusertable :虚拟域配置。

中继的配置

是指一台服务器接受并传递源地址和目的地址都不是本服务器的邮件。
在两个文件中进行设置:
/etc/mail/relay-domains
/etc/mail/access。

一、安装软件

[[email protected] ~]# yum install -y sendmail
[[email protected] ~]# yum install -y sendmail-cf

启动saslauthd服务进行SMTP验证(默认是安装的,如果没有,就手动安装)

[[email protected] ~]# service saslauthd start
Starting saslauthd: [ OK ]

二、邮件服务配置

1)配置Senmail的SMTP认证
将下面两行内容前面的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。
[[email protected] ~]# vim /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

2) 设置Sendmail服务的网络访问权限(如果是直接本机调用,可以不用操作,采用默认的127.0.0.1。不过最后还是改成0.0.0.0)
将127.0.0.1改为0.0.0.0,意思是任何主机都可以访问Sendmail服务。
如果仅让某一个网段能够访问到Sendmail服务,将127.0.0.1改为形如192.168.1.0/24的一个特定网段地址。
[[email protected] ~]# vim /etc/mail/sendmail.mc
......
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

3)生成配置文件
Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。如果系统无法识别m4命令,说明sendmail-cf软件包没有安装
[[email protected] ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

4)启动服务
[[email protected] ~]# service sendmail start
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
[[email protected] ~]# service saslauthd restart
Stopping saslauthd: [ OK ]
Starting saslauthd: [ OK ]

将服务加入自启行列
[[email protected] ~]# chkconfig sendmail on
[[email protected] ~]# chkconfig saslauthd on
[[email protected] ~]# chkconfig --list |grep sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[[email protected] ~]# chkconfig --list |grep saslauthd
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

三、测试发送邮箱

(1)第一种方式:安装sendmail即可使用。
[[email protected] ~]# yum -y install mailx

创建一个邮件内容文件,然后发邮件(注意-s参数后的邮件标题要用单引号,不能使用双引号,否则发邮件会失败!)
[[email protected] ~]# echo 'This is test mail'>/root/content.txt 
[[email protected] ~]# cat /root/content.txt 
This is test mail
[[email protected] ~]# mail -s 'Test MAIL' ******@163.com < /root/content.txt 

查看已收到邮件:

如果不想通过文件发送邮件内容也可以这么发送,也可以使用管道符直接发送邮件内容,效果同文件发送邮件内容一样.

[[email protected] ~]# echo "This is test mail." | mail -s 'Mail Test' ******@163.com

查看已收到邮件:

如果是发送给多个邮件,就使用-c参数,如下:

[[email protected] ~]# echo "This is test mail" | mail -s 'test' -c ******@sina.com ******@163.com
(2)第二种方式:利用外部的smpt服务器
上面第一种方式中,/bin/mail命令会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。
而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的。

修改/etc/mail.rc文件(有的版本叫/etc/nail.rc,添加下面内容:
set [email protected] smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login

参数说明:
from是发送的邮件地址
smtp是发生的外部smtp服务器的地址
smtp-auth-user是外部smtp服务器认证的用户名。注意一定要填写邮件全称!!
smtp-auth-password是外部smtp服务器认证的用户密码
smtp-auth是邮件认证的方式

配置完成后,就可以正常发送邮件了,如下
[[email protected] ~]# vim /etc/mail.rc                     //在文件底部添加
set from=******@3dmedcare.com smtp=smtp.3dmedcare.com smtp-auth-user=******@3dmedcare.com smtp-auth-password=3DMed123 smtp-auth=login

现在开始发邮件:
[[email protected] ~]# echo "hello world" |mail -s 'test666' ****[email protected]

原文地址:http://blog.51cto.com/dengaosky/2070124

时间: 2024-10-29 22:07:54

linux下sendmail邮件系统安装操作记录的相关文章

linux下监控用户的操作记录

想知道用户登陆系统后都操作了什么,怎么办? 别急,linux下有一个script工具,专门记录终端会话中所有输入输出结果,并存放到指定文件中. 先看看怎么录制吧! 1.创建日志存放目录 # mkdir /opt/operation_log # chmod 777 -R /opt/operation_log 2.设置用户登陆后自动录制 # vi /etc/profile   #末尾追加一下内容 if [ $UID -ge 500 ]; then    exec script -t 2>/opt/o

linux下mutt邮件发送系统安装操作记录

之前介绍了Linux下sendmail和sendemail邮件系统环境部署,今天介绍下使用mutt发送邮件的环境部署过程.mutt这个软件,它是一款基于文字界面的邮件客户端,是一款功能强大的email程序,非常小巧,可以用它来读写,回复保存和删除你的邮件,能在linux命令行模式下收发邮件和附件. 1)mutt的安装[[email protected] ~]# yum -y install sendmail                  //需要安装sendmail并开启防火墙的25端口,如

linux下的邮件服务器

既然总结了windows下的邮件服务器,那么linux下的邮件服务器也一起总结一下. 在中职技能比赛中邮件服务器不管是linux和windows原理都是一样,只不过实现的方式有所区别,windows2003下一般是安装并配置SMTP和POP3服务,linux下一般是配置sendmail(起着SMTP协议作用)和dovecot(起着POP3协议作用)这两个服务.当然windows下exichange服务器在真实环境中用的比较多,不过此处范围限定在中职就不再赘述. linux下邮件服务器的要点: 1

linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(三) 使用 maildrop 投递邮件

 linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(三) 使用 maildrop 投递邮件 十六.配置postfix使用maildrop投递邮件 maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一.它从标准输入接受信息并投递到用户邮箱:maildrop既可以将邮件投递到mailboxes格式邮箱,亦可以将其投递到maildirs格式邮箱.同时,maildrop可以从文件中读取入站邮件过滤指示,并由此决定是将邮件

二十七、Linux下常用的shell命令记录

本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看.修改命令,有CPU.内存.硬盘.网络.系统管理等命令.但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会持续更新. 说明,我是在一个Centos 6.4 64位的虚拟机系统进行测试.本文介绍的命令都会在此Centos下运行验证(也有部分命令会在我的suse/ubuntu系统里测试的,会做特明说明),但运行结果就不再列出了. 硬件篇 CPU相关 lscpu #查看的是cpu的统计信息. cat /pro

linux下文件的读写操作(openreadwrite)

linux下文件的读写操作(openreadwrite) 转 http://www.2cto.com/os/201403/285837.html open(打开文件) 相关函数 read,write,fcntl,close,link,stat,umask,unlink,fopen 表头文件 #include<sys/types.h>#include<sys/stat.h>#include<fcntl.h> 定义函数 int open( const char * path

Linux下mysql的常用操作

Linux下mysql的常用操作: 显示数据库 show databases; 选择数据库 use 数据库名; 显示数据库中的表 show tables; 显示数据表的结构 describe 表名; 显示表中的记录 SELECT * FROM 表名 建库 create databse 库名; 建表 create table 表名 (字段设定列表): mysql> create table name( -> id int auto_increment not null primary key ,

Linux下apache+php搭建配置记录

linux下apache+php搭建配置记录 第1章  环境说明 1.1 系统说明 CentOS 6.4 1.2 软件说明 httpd-2.4.2.tar.gz apr-util-1.4.1.tar.gz apr-1.4.6.tar.gz pcre-8.13.tar.gz php-5.4.3.tar.bz2 libmcrypt-2.5.8.tar.gz mhash-0.9.9.9.tar.gz 第2章  Apache搭建说明 2.1 安装依赖包 yum install make openldap

windows和linux下结束循环的操作

#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string word; string line; while (getline(cin,line)) { istringstream istr(line); while(istr>>word) cout<<word<<"#"; cou