1.Sendmail邮件服务器快速指南 1
2.Linux系统下安装配置postfix邮件服务器教程
3.Qmail介绍
4.Python-发送邮件(带链接、邮件源码邮件源码附件、代理代理源代码)
Sendmail邮件服务器快速指南 1
人们在互联网上最常使用的就是电子邮件,很多企业用户也经常使用免费电子邮件系统。代理代理本文就以step by step的邮件源码邮件源码方式引导用户从sendmail源代码开始构建一个可以满足基本工作需要的邮件系统。概述
sendmail是代理代理看jdk源码的书最重要的邮件传输代理程序。理解电子邮件的邮件源码邮件源码工作模式是非常重要的。一般情况下,代理代理我们把电子邮件程序分解成用户代理,邮件源码邮件源码传输代理和投递代理。代理代理 用户代理用来接受用户的邮件源码邮件源码指令,将用户的代理代理信件传送至信件传输代理,如:outlook express、邮件源码邮件源码foxmail等。代理代理而投递代理则从信件传输代理取得信件传送至最终用户的邮件源码邮件源码邮箱,如:procmail。
当用户试图发送一封电子邮件的电源控制小程序源码时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器, 并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者察看自己的电子信箱。
显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件(发送邮件不受这个限制)。可以看到,怎样对github源码学习一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者 提交给最终投递程序。 有许多的程序可以作为信件传输代理,但是sendmail是其中最重要的一个,事实证明它可以支持数千甚至更多的用户,而且占用的系统资源相当少。不过,sendmail的配置十分复杂,因此,也有人使用另外的一些工具,如qmail、postfix等等。
当sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给对应的服务器,这是通过DNS服务实现的。例如一封邮件的上海溯源码瓶装燕窝目标地址是ideal@linuxaid.com.cn,那么sendmail首先确定这个地址是用户名(ideal)+机器名(linuxaid.com.cn)的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。
DNS数据中,与电子邮件相关的是MX记录,例如在linuxaid.com.cn这个域的dns数据文件中有如下设置:
IN MX mail
IN MX mail1
mail IN A ...
mail1 IN A ...
显然,在DNS中说明linuxaid.com.cn有两个一个信件交换(MX)服务器,于是,sendmail试图将邮件发送给两者之一。一般来说,排在前面的的MX服务器的优先级别比较高,因此服务 器将试图连接mail.linuxaid.com.cn的端口,试图将信件报文转发给它。如果成功,你的smtp服务器的任务就完成了,在这以后的京东茅台溯源码割断任务,将由mail.linuxaid.com.cn来完成。在一般的情况下,mail换器会自动把信件内容转交给目标主机,不过,也存在这样的情况,目标主机(比如linuxaid.com.cn)可能并不存在,或者不执行smtp服务,而是由其mx交换器来执行信件的管理,这时候,最终的信件将保存在mx机器上,直到用户来察看它。
如果DNS查询无法找出对某个地址的MX记录(通常因为对方没有信件交换主机),那么sendmail将是试图直接与来自邮件地址的主机对话并且发送邮件。例如,test@aidgroup.linuxaid.com.cnDNS中没有对应的MX记录,因此sendmail在确定MX交换器失败后,将从DNS取得对方的IP地址并直接和对方对话试图发送邮件。
工作环境
本文假设用户希望在园区网环境中架设一个电子邮件服务器,为本单位用户提供邮件服务。该服务器拥有一个合法的IP地址...和一个合法的域名mail.linuxaid.com.cn,并且DNS的MX记录也指向该域名(注:这里示例域名和IP地址均为伪造域名和地址)。为了满足域名需求,DNS的域数据文件应该包含以下内容:
IN MX mail
mail IN A ...
试验环境为:redhat6.2、sendmail.8..4、qpopper4.0.3。
软件下载
分别从以下地址下载sendmail和qpopper:
sendmail.8..4.tar.gz /qpopper_general/
Sendmail的配置和安装
Sendmail是目前使用最为广泛的一种E-mail服务器。当前其最新的稳定版本为8..4。下载得到tar.gz格式的压缩包以后,将其存放在/usr/src目录下。
解压软件包:
[root@email src]# tar xvfz sendmail.8..4.tar.gz
[root@email src]# cd sendmail-8..4
编译安装:
[root@email sendmail-8..4]# cd sendmail
[root@email sendmail]# sh Build
生成配置文件:
[root@email sendmail]#cd /usr/src/sendmail-8..4/cf/cf/
一般该目录下应该有config.mc的文件,如果没有则创建新文件config.mc,内容为:
divert(-1)
dnl This is the macro config file used to generate the /etc/sendmail.cf
dnl file. If you modify thei file you will have to regenerate the
dnl /etc/sendmail.cf by running this macro config through the m4
dnl preprocessor:
dnl m4 /etc/sendmail.mc /etc/sendmail.cf
dnl You will need to have the Sendmail-cf package installed for this to work.
include(`/usr/src/sendmail-8..4/cf')
define(`confDEF_USER_ID',`8:')
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
define(`confAUTO_REBUILD')
define(`confTO_CONNECT', `1m')
define(`confTRY_NULL_MX_LIST',true)
define(`confDONT_PROBE_INTERFACES',true)
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
FEATURE(`smrsh',`/usr/sbin/smrsh')
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')
上一页12 下一页
Linux系统下安装配置postfix邮件服务器教程
一,安装postfix,cyrus-sasl,cyrus-imapd
如果yum提示找不到软件包,请换一下源,请参考centos 6推荐使用epel源
代码如下:
[root@localhost ~]# yum install postfix
[root@localhost ~]# yum install cyrus
*二,删除了sendmail
代码如下:
[root@localhost ~]# rpm -e sendmail
或者
代码如下:
[root@localhost ~]# yum remove sendmail
三,更改默认邮件传输代理(MTA)
代码如下:
[root@localhost sasl2]# alternatives --config mta
共有 1 个程序提供“mta”。
选择 命令
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.postfix
按 Enter 来保存当前选择[+],或键入选择号码:1
上面的只有一个postfix,sendmail已经被我删了。可以通过下面命令来查看。
代码如下:
[root@localhost ~]# alternatives --display mta
四,postfix,cyrus-sasl,cyrus-imapd相关配置
1,postfix主配置文件main.cf
代码如下:
[root@localhost postfix]# vim /etc/postfix/main.cf
myhostname = localhost //行,将等号后面的部分改写为本机主机名
mydomain = yip.com //行,设置域名
myorigin = $mydomain //行,把$myhostname改为$mydomain
inet_interfaces = all //行,把后面的localhost改成all
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain //行,把前面的注释拿掉,并加一下$mydomain
mynetworks = ..0.0/, .0.0.0/8 //行,设置内网和本地IP
local_recipient_maps = //行,把前面的注释拿掉。
smtpd_banner = $myhostname ESMTP unknow //行,把前面的注释拿掉,然后把$mail_name ($mail_version)改成unknow
p//在main.cf文件的底部加上以下内容
smtpd_sasl_auth_enable = yes //使用SMTP认证
broken_sasl_auth_clients = yes //让不支持RFC的smtpclient也可以跟postfix做交互。
smtpd_sasl_local_domain = $myhostname // 指定SMTP认证的本地域名
smtpd_sasl_security_options = noanonymous //取消匿名登陆方式
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //设定邮件中有关收件人部分的限制
smtpd_sasl_security_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //设置允许范围
message_size_limit = //邮件大小
mailbox_transport=lmtp:unix:/var/lib/imap/socket/lmtp //设置连接cyrus-imapd的路径
如果不加local_recipient_maps这个配置,收邮件收不到,下面是qq的退信。
收件人邮件地址(tank@yip.com)不存在,邮件无法送达。host mail.yip.com[..***.***] said: 5.1.1: Recipient address rejected: User unknown in local recipient table (in reply to RCPT TO command)
2,cyrus-sasl配置
代码如下:
[root@localhost postfix]# vim /etc/sasl2/smtpd.conf //在文件尾部加上以下内容
log_level: 3 //记录log的模式
saslauthd_path:/var/run/saslauthd/mux //设置一下smtp寻找cyrus-sasl的路径,在这里要提一下的位的机器和位的机器smtpd.conf的路径是不一样的。
p//这是centos 5.5 位机器上smtpd的配置文件
[root@linux sasl2]# ls |grep conf
Sendmail.conf
smtpd.conf
[root@linux sasl2]# pwd
/usr/lib/sasl2
//这是centos 6.0 位机器上smtpd的配置文件,其他地方没有smtpd的配置文件
[root@localhost postfix]# ls /etc/sasl2/ |grep smtpd
smtpd.conf
网上有不少关于postfix安装文章,配置的时候并没有明确提出是位机器,还是位机器。所以在这里标明一下。
3,配置cyrus-imapd
cyrus-imapd的主要配置文件有下面三个
代码如下:
/etc/sysconfig/cyrus-imapd
p/etc/cyrus.conf
p/etc/imapd.conf
这里是默认的配置,也就是说上面三个文件我是没有动过的。在这里提醒一下imapd.conf在这个文件里面,你可以设置管理账号
,设置邮件存放目录,设置密码连接方式等。
五,启动postfix,cyrus-sasl,cyrus-imapd
启动cyrus-imapd服务,就可以同时提供pop和imap服务,如果你已安装了dovecot服务就可以删除掉,cyrus-imapd和dovecot二者选其一就行了,二都可以提供pop和imap服务,不过cyrus-imapd可以为每个用户创建一个信息,而且信箱具有层次结构,比较好管理。建议用cyrus-imapd。
代码如下:
[root@linux sasl2]# /etc/init.d/postfix start
[root@linux sasl2]# /etc/init.d/saslauthd start
[root@linux sasl2]# /etc/init.d/cyrus-imapd start
查看一下进程,
代码如下:
//smtp监听是端口
[root@linux u]# netstat -tpnl |grep smtpd
tcp 0 0 .0.0.1: 0.0.0.0:* LISTEN /smtpd
代码如下:
//(POP3)和(IMAP)端口,下面都已经有了
[root@linux u]# netstat -tpnl |grep cyrus
tcp 0 0 0.0.0.0: 0.0.0.0:* LISTEN /cyrus-master
tcp 0 0 0.0.0.0: 0.0.0.0:* LISTEN /cyrus-master
tcp 0 0 0.0.0.0: 0.0.0.0:* LISTEN /cyrus-master
tcp 0 0 0.0.0.0: 0.0.0.0:* LISTEN /cyrus-master
tcp 0 0 ::: :::* LISTEN /cyrus-master
tcp 0 0 ::: :::* LISTEN /cyrus-master
tcp 0 0 ::: :::* LISTEN /cyrus-master
tcp 0 0 ::: :::* LISTEN /cyrus-master
tcp 0 0 ::: :::* LISTEN /cyrus-master
启动是没有问题的。
六,测试cyrus-sasl
代码如下:
[root@linux t]# passwd cyrus //设置cyrus的密码
[root@linux sasl2]# testsaslauthd -u cyrus -p '