邮件服务器相关(extmail/postfix/smtp/pop3/IMAP etc)
要配置一个postfix发邮件,需要以 xx@test.aslibra.com 发送邮件
同时提供smtp服务给局域网其它服务器提供发送邮件服务
安装好postfix后,可以参考如下配置文件(去掉注释内容):
/etc/postfix/main.cf
PHP发送邮件可以使用phpmailer
扩展阅读:
1 带smtp认证的postfix配置
http://hi.baidu.com/jedibd/blog/item/7b73ab25a7b7e06d35a80f45.html
2 CentOS下(PostFix)SMTP服务器的构建
http://www.fuancn.cn/html/ServerSettings/Linux/CentOS/20084288.html
3 phpmailer,smtp发送邮件实例
http://blog.51yip.com/php/910.html/comment-page-1
4 postfix邮件服务的基本配置
http://eastwalk.blogbus.com/logs/57585048.html
5 Postfix服务的基本配置
http://book.51cto.com/art/200904/118655.htm
6 telnet smtp发邮件
http://hi.baidu.com/guixiao_zhou/blog/item/49f8a73259a9f2210a55a9ec.html
7 簡易 Mail Server 架設 -- Postfix 設定
http://linux.vbird.org/linux_server/0390postfix.php
同时提供smtp服务给局域网其它服务器提供发送邮件服务
安装好postfix后,可以参考如下配置文件(去掉注释内容):
/etc/postfix/main.cf
myhostname = test.aslibra.com
mydomain = test.aslibra.com
mynetworks = 192.168.1.0/24, 127.0.0.0/8
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myorigin = $myhostname
inet_interfaces = all
unknown_local_recipient_reject_code = 550
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
mydomain = test.aslibra.com
mynetworks = 192.168.1.0/24, 127.0.0.0/8
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myorigin = $myhostname
inet_interfaces = all
unknown_local_recipient_reject_code = 550
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
PHP发送邮件可以使用phpmailer
include('libraries/class.phpmailer.php');
$mail = new PHPMailer();
$mail->CharSet="UTF-8";
$mail->IsSMTP(); // 经smtp发送
$mail->Host = $this->smtp_ip; // SMTP 服务器
$mail->SMTPAuth = false; // 局域网不需要SMTP 认证
$mail->From = $from; // 发信人
$mail->FromName = $fromuser; // 发信人别名
$mail->Sender = $from;
$mail->AddAddress($to); // 收信人
if(isset($ccmail)){
$mail->AddCC($ccmail); // cc收信人
}
if(isset($bccmail)){
$mail->AddCC($bccmail); // bcc收信人
}
$mail->WordWrap = 50;
$mail->IsHTML(true); // 以html方式发送
$mail->Subject = $title; // 邮件标题
$mail->Body = $content; // 邮件内空
$mail->Send();
$mail = new PHPMailer();
$mail->CharSet="UTF-8";
$mail->IsSMTP(); // 经smtp发送
$mail->Host = $this->smtp_ip; // SMTP 服务器
$mail->SMTPAuth = false; // 局域网不需要SMTP 认证
$mail->From = $from; // 发信人
$mail->FromName = $fromuser; // 发信人别名
$mail->Sender = $from;
$mail->AddAddress($to); // 收信人
if(isset($ccmail)){
$mail->AddCC($ccmail); // cc收信人
}
if(isset($bccmail)){
$mail->AddCC($bccmail); // bcc收信人
}
$mail->WordWrap = 50;
$mail->IsHTML(true); // 以html方式发送
$mail->Subject = $title; // 邮件标题
$mail->Body = $content; // 邮件内空
$mail->Send();
扩展阅读:
1 带smtp认证的postfix配置
http://hi.baidu.com/jedibd/blog/item/7b73ab25a7b7e06d35a80f45.html
2 CentOS下(PostFix)SMTP服务器的构建
http://www.fuancn.cn/html/ServerSettings/Linux/CentOS/20084288.html
3 phpmailer,smtp发送邮件实例
http://blog.51yip.com/php/910.html/comment-page-1
4 postfix邮件服务的基本配置
http://eastwalk.blogbus.com/logs/57585048.html
5 Postfix服务的基本配置
http://book.51cto.com/art/200904/118655.htm
6 telnet smtp发邮件
http://hi.baidu.com/guixiao_zhou/blog/item/49f8a73259a9f2210a55a9ec.html
7 簡易 Mail Server 架設 -- Postfix 設定
http://linux.vbird.org/linux_server/0390postfix.php
最近对postfix的使用又产生了点兴趣,特实验并整理一下相关的使用:
一 安装
yum install postfix
参考:postfix基本配置和设定DNS
二 配置默认发送域名
配置文件可以设定:
mydomain = mail.yourdomain.com
myhostname = yourdomain.com
如果不行,可以试试这样(笨人方法):
hostname yourdomain.com
service postfix restart
这样发出的邮件就是 xx@yourdomain.com
三 配置收邮件
inet_interfaces = all
四 希望收到的邮件提供给PHP处理
修改 aliases文件要执行 newaliases 才能生效
这样发给 aslibra@yourdomain.com 的邮件会交给 /tmp/m.php 处理
程序参考: PHP处理postfix的邮件内容
五 希望增加收邮件的域名
别的域名的邮件发到此服务器是会有出错提示的,不处理的,修改一下即可
mydestination = $myhostname, localhost.$mydomain, localhost, www.aslibra.com
这样 xx@www.aslibra.com 的邮件就可以处理了
六 希望做邮件转发
比如 xxxx@www.aslibra.com 全部都交给php处理,这个用处很大,可以用程序处理用户邮件交互
1 编辑 /etc/postfix/canonical 增加一行
@www.aslibra.com aslibra@yourdomain.com
2 postconf -e canonical_maps=hash:/etc/postfix/canonical
3 postmap /etc/postfix/canonical
这样邮件就都交给前面设定的用户了,继而交给php处理了
# 参考资料:
1 Postfix 邮件转发
一 安装
yum install postfix
参考:postfix基本配置和设定DNS
二 配置默认发送域名
配置文件可以设定:
mydomain = mail.yourdomain.com
myhostname = yourdomain.com
如果不行,可以试试这样(笨人方法):
hostname yourdomain.com
service postfix restart
这样发出的邮件就是 xx@yourdomain.com
三 配置收邮件
inet_interfaces = all
四 希望收到的邮件提供给PHP处理
cat /etc/aliases | grep aslibra
aslibra: "| php -q /tmp/m.php"
aslibra: "| php -q /tmp/m.php"
修改 aliases文件要执行 newaliases 才能生效
这样发给 aslibra@yourdomain.com 的邮件会交给 /tmp/m.php 处理
程序参考: PHP处理postfix的邮件内容
五 希望增加收邮件的域名
别的域名的邮件发到此服务器是会有出错提示的,不处理的,修改一下即可
mydestination = $myhostname, localhost.$mydomain, localhost, www.aslibra.com
这样 xx@www.aslibra.com 的邮件就可以处理了
六 希望做邮件转发
比如 xxxx@www.aslibra.com 全部都交给php处理,这个用处很大,可以用程序处理用户邮件交互
1 编辑 /etc/postfix/canonical 增加一行
@www.aslibra.com aslibra@yourdomain.com
2 postconf -e canonical_maps=hash:/etc/postfix/canonical
3 postmap /etc/postfix/canonical
这样邮件就都交给前面设定的用户了,继而交给php处理了
# 参考资料:
1 Postfix 邮件转发
发送文本邮件
发送纯附件
注:需要用到sharutils
ubuntu下这样安装即可:
发送文本+附件
更多内容可以参阅:
http://linux.chinaunix.net/bbs/viewthread.php?tid=905943
echo "content" | mail -s "subject" {email}
发送纯附件
uuencode aslibra.com.sql aslibra.com.sql | mail -s subject {email}
注:需要用到sharutils
ubuntu下这样安装即可:
apt-get install sharutils
发送文本+附件
echo "content:www.aslibra.com" >/tmp/mail ;uuencode aslibra.com.sql aslibra.com.sql >>/tmp/mail; cat /tmp/mail | mail -s subject {email}
更多内容可以参阅:
http://linux.chinaunix.net/bbs/viewthread.php?tid=905943
本文整理中。。
前言
发送一封邮件能够正常的到达用户的收件箱,期间会受哪些因素影响呢?
1 PHP编程,按正常方式发出
2 邮件发送程序(本文是postfix)处理并发出
3 邮件接收服务器确认是否垃圾邮件
4 用户邮件终端解析邮件内容
怎么样的邮件不正常?
1 PHP没有做好编码处理,直接导致乱码问题
2 postfix域配置不正常,导致邮件服务器验证失败,断定为垃圾邮件
3 客户端解析内容的兼容性差
如何进行环境配置
先安装postfix,系统自带的sendmail也可以发送,但明显比postfix用起来麻烦
简单的发邮件,两者都可以
centOS里执行 yum install postfix 即可。
假设我们要配置的发送人的邮箱是 root@notify.aslibra.com
那需要设定两个内容:
1 设定机器名为notify.aslibra.com,@后面那段
永久设定可以在 /etc/sysconfig/network 修改,否则以上设置重启后会被修改
这个hostname很重要,邮件服务器主要审查的就是此名称是否为合法的发送者
默认是localhost,不改名称很容易就变成垃圾邮件
2 notify.aslibra.com 的TXT记录,包含发邮件的服务器的公网IP,假设是1.2.3.4
添加一条TXT的记录为“v=spf1 ipv4:1.2.3.4 a mx ~all”
此操作是声明哪些ip可以用此域发邮件
更多请参考《postfix基本配置和设定DNS》
启动服务测试
启动postfix或者sendmail,然后命令行方式发送一封英文邮件试试
如果能够收到,那说明发送邮件已经正常
下面可以用php来完成更加复杂的邮件,比如html和中文支持
发送实例分析
关于 base64_encode 函数:
参考阅读内容:
1 HTML EMAIL WITH JPEG ATTACHMENTS TUTORIAL
2 用PHP MAIL()函数发送HTML邮件
3 解決寄件者名稱與信件標題亂碼問題
4 PHP发送UTF-8编码中文邮件标题乱码的解决
前言
发送一封邮件能够正常的到达用户的收件箱,期间会受哪些因素影响呢?
1 PHP编程,按正常方式发出
2 邮件发送程序(本文是postfix)处理并发出
3 邮件接收服务器确认是否垃圾邮件
4 用户邮件终端解析邮件内容
怎么样的邮件不正常?
1 PHP没有做好编码处理,直接导致乱码问题
2 postfix域配置不正常,导致邮件服务器验证失败,断定为垃圾邮件
3 客户端解析内容的兼容性差
如何进行环境配置
先安装postfix,系统自带的sendmail也可以发送,但明显比postfix用起来麻烦
简单的发邮件,两者都可以
centOS里执行 yum install postfix 即可。
假设我们要配置的发送人的邮箱是 root@notify.aslibra.com
那需要设定两个内容:
1 设定机器名为notify.aslibra.com,@后面那段
hostname notify.aslibra.com
永久设定可以在 /etc/sysconfig/network 修改,否则以上设置重启后会被修改
这个hostname很重要,邮件服务器主要审查的就是此名称是否为合法的发送者
默认是localhost,不改名称很容易就变成垃圾邮件
2 notify.aslibra.com 的TXT记录,包含发邮件的服务器的公网IP,假设是1.2.3.4
添加一条TXT的记录为“v=spf1 ipv4:1.2.3.4 a mx ~all”
此操作是声明哪些ip可以用此域发邮件
更多请参考《postfix基本配置和设定DNS》
启动服务测试
启动postfix或者sendmail,然后命令行方式发送一封英文邮件试试
如果能够收到,那说明发送邮件已经正常
下面可以用php来完成更加复杂的邮件,比如html和中文支持
发送实例分析
关于 base64_encode 函数:
引用
本函数将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。在 BASE64 编码后的字符串只包含英文字母大小写、阿拉伯数字、加号与反斜线,共 64 个基本字符,不包含其它特殊的字符,因而才取名 BASE64。编码后的字符串比原来的字符串长度再加 1/3 左右。更多的 BASE64 编码信息可以参考 RFC2045 文件之 6.8 节。
参考阅读内容:
1 HTML EMAIL WITH JPEG ATTACHMENTS TUTORIAL
2 用PHP MAIL()函数发送HTML邮件
3 解決寄件者名稱與信件標題亂碼問題
4 PHP发送UTF-8编码中文邮件标题乱码的解决
要试用google的企业邮箱,只需要你有一个域名即可,当然,人家对cn域名不支持。
对于邮件系统,一般有如下的问题需要处理:
1 高稳定性的服务器维护
2 垃圾邮件的维护
3 用户的管理
在google的企业邮箱,提供的服务挺好:
使用步骤:
1 申请启用
注册 Google 企业应用标准版
填写你的域名即可,比如aslibra.com
2 填写好你的信息
这步骤填写完了就基本可以了,国家地区里,选择中国香港吧,选择中国说不支持
3 填写管理员账号
启用后,你就可以登录管理了,比如
http://www.google.com/a/aslibra.com/
4 启动 Google 企业应用套件
验证域名所有权我觉得cname比较好,到域名管理的后台操作一下就好
提交后会提示你:我们正在验证域名所有权。完成这一过程可能会需要 48 小时。
对于邮件系统,一般有如下的问题需要处理:
1 高稳定性的服务器维护
2 垃圾邮件的维护
3 用户的管理
在google的企业邮箱,提供的服务挺好:
引用
Gmail企业邮箱是Google通过Gmail平台,向中小企业、家庭团体、学校组织等提供的免费邮箱服务,它的特点,我总结有三:
一是,使用自己的域名作为邮箱后缀,比如我用自己的域名qasn.com设立了我的专有邮箱kong#qasn.com;一般企业邮箱就是要达到这样的效果,用企业网站相同后缀的邮箱。
二是,免费,标准版和教育版都是免费的,而且最多可以创建50个相同后缀的邮箱;专业版是需要付费的,50美元每年每个账户。一般中小企业用标准版就够了。
三是,享受免费7G的超大容量。
这样的优势你还花钱购买服务低劣的企业邮箱吗?
一是,使用自己的域名作为邮箱后缀,比如我用自己的域名qasn.com设立了我的专有邮箱kong#qasn.com;一般企业邮箱就是要达到这样的效果,用企业网站相同后缀的邮箱。
二是,免费,标准版和教育版都是免费的,而且最多可以创建50个相同后缀的邮箱;专业版是需要付费的,50美元每年每个账户。一般中小企业用标准版就够了。
三是,享受免费7G的超大容量。
这样的优势你还花钱购买服务低劣的企业邮箱吗?
使用步骤:
1 申请启用
注册 Google 企业应用标准版
填写你的域名即可,比如aslibra.com
2 填写好你的信息
引用
注册 Google 企业应用标准版 (第 2 步,共 3 步)
Google 企业应用标准版仅限于 50 个用户帐户。您想拥有更多用户帐户或其他高级功能吗?请免费试用 Google 企业应用专业版。
Google 企业应用标准版仅限于 50 个用户帐户。您想拥有更多用户帐户或其他高级功能吗?请免费试用 Google 企业应用专业版。
这步骤填写完了就基本可以了,国家地区里,选择中国香港吧,选择中国说不支持
3 填写管理员账号
启用后,你就可以登录管理了,比如
http://www.google.com/a/aslibra.com/
4 启动 Google 企业应用套件
引用
要启动 Google 企业应用套件,您需要验证您拥有您的域名 - 365dog.com。 验证域名的所有权 使用指南
验证域名所有权我觉得cname比较好,到域名管理的后台操作一下就好
提交后会提示你:我们正在验证域名所有权。完成这一过程可能会需要 48 小时。
使用postfix发送邮件,需要你对本身配置做些修正,另外,也需要你设置相应的DNS,否则发送邮件会容易当做垃圾邮件。
我们做几个步骤来看看收信的影响:
1 安装后不设置
2 设置hostname和domain
3 设置MX记录
4 设置SPF
以下说明的信息为了去除隐私信息,做过一些名称修改:
= 1 没有任何配置 =
我们看到,发信人是root@localhost.localdomain,明显不对的
回复邮件也肯定收不到,我们至少需要用户能够回复,当然,除非你不想。
= 2 设置hostname和domain =
postfix里面修改参数可以用以上的方式,检查参数
可以是 postconf myhostname
我们做几个步骤来看看收信的影响:
1 安装后不设置
2 设置hostname和domain
3 设置MX记录
4 设置SPF
以下说明的信息为了去除隐私信息,做过一些名称修改:
= 1 没有任何配置 =
引用
Delivered-To: your-email@gmail.com
Received: by 10.114.181.20 with SMTP id d20cs1238waf;
Mon, 4 Jan 2010 17:33:21 -0800 (PST)
Received: by 10.141.90.17 with SMTP id s17mr7576023rvl.196.1262655201126;
Mon, 04 Jan 2010 17:33:21 -0800 (PST)
Return-Path:
Received: from localhost.localdomain ([219.232.1.2])
by mx.google.com with ESMTP id 20si58728702pwj.8.2010.01.04.17.33.18;
Mon, 04 Jan 2010 17:33:19 -0800 (PST)
Received-SPF: neutral (google.com: 219.232.1.2 is neither permitted nor denied by best guess record for domain of root@localhost.localdomain) client-ip=219.232.1.2;
Authentication-Results: mx.google.com; spf=neutral (google.com: 219.232.1.2 is neither permitted nor denied by best guess record for domain of root@localhost.localdomain) smtp.mail=root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
id 7BF5120DF2C; Mon, 4 Jan 2010 21:33:09 -0500 (EST)
To: your-email@gmail.com
Subject: test in 95
Message-Id: <20100105023309.7BF5120DF2C@localhost.localdomain>
Date: Mon, 4 Jan 2010 21:33:09 -0500 (EST)
From: root@localhost.localdomain (root)
test
Received: by 10.114.181.20 with SMTP id d20cs1238waf;
Mon, 4 Jan 2010 17:33:21 -0800 (PST)
Received: by 10.141.90.17 with SMTP id s17mr7576023rvl.196.1262655201126;
Mon, 04 Jan 2010 17:33:21 -0800 (PST)
Return-Path:
Received: from localhost.localdomain ([219.232.1.2])
by mx.google.com with ESMTP id 20si58728702pwj.8.2010.01.04.17.33.18;
Mon, 04 Jan 2010 17:33:19 -0800 (PST)
Received-SPF: neutral (google.com: 219.232.1.2 is neither permitted nor denied by best guess record for domain of root@localhost.localdomain) client-ip=219.232.1.2;
Authentication-Results: mx.google.com; spf=neutral (google.com: 219.232.1.2 is neither permitted nor denied by best guess record for domain of root@localhost.localdomain) smtp.mail=root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
id 7BF5120DF2C; Mon, 4 Jan 2010 21:33:09 -0500 (EST)
To: your-email@gmail.com
Subject: test in 95
Message-Id: <20100105023309.7BF5120DF2C@localhost.localdomain>
Date: Mon, 4 Jan 2010 21:33:09 -0500 (EST)
From: root@localhost.localdomain (root)
test
我们看到,发信人是root@localhost.localdomain,明显不对的
回复邮件也肯定收不到,我们至少需要用户能够回复,当然,除非你不想。
= 2 设置hostname和domain =
postconf -e "myhostname=aslibra.com"
postconf -e "mydomain=mail.aslibra.com"
postfix reload
postconf -e "mydomain=mail.aslibra.com"
postfix reload
postfix里面修改参数可以用以上的方式,检查参数
可以是 postconf myhostname
master.cf 配置文件详解以下为例,按顺序分别说明各栏的意义以及它们的默认值
1 2 3 4 5 6 7 8
cyrus unix - n n - - pipe
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${ extension }
1、服务名称(server name)
服务器组件的名称。实际的命名规则,随该服务的传送类型(第二栏)而定。
2、传送方式 (transport type)
传送服务所用的通信方法。有效的传送方式包括与inet、unix与fifo 。inet方法表示服务可通过“网络套接字”(network socket)来访问,这类服务的对象可以是同系统上的其他进程,或是网络上其他主机的客户端进程。网络套接字服务的名称(第一栏),是et用服务方的“IP地址”(主机名称也可以)与“通信端口 ”(数值或/etc/service 定义的端口的符号名称)的组合来表示,例如: 192.168.1.2:25、localhost:smtp 。如果服务方恰好位于本地主机上,则 “ IP地址 ”与冒号都可以省略。
unix代表“Unix domain socket”,而fifo代表“命名管道”(named pipe)。两者都是同机器不同进程之间的通信机制,而且同样使用特殊文件为通信中介。unix与fifo服务的名称与Unix标准文件名的命名规则相同,但是不包含目录路径的部分。Postfix使用服务名称来创建通信中介用的特殊文件。Unix domain socket与命名管道两者都是Unix的标准“进程间通信机制”(interprocess communications,通常简称为IPC) 。更详尽的信息,请参阅有关Unix程序设计的书籍。
1 2 3 4 5 6 7 8
cyrus unix - n n - - pipe
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${ extension }
1、服务名称(server name)
服务器组件的名称。实际的命名规则,随该服务的传送类型(第二栏)而定。
2、传送方式 (transport type)
传送服务所用的通信方法。有效的传送方式包括与inet、unix与fifo 。inet方法表示服务可通过“网络套接字”(network socket)来访问,这类服务的对象可以是同系统上的其他进程,或是网络上其他主机的客户端进程。网络套接字服务的名称(第一栏),是et用服务方的“IP地址”(主机名称也可以)与“通信端口 ”(数值或/etc/service 定义的端口的符号名称)的组合来表示,例如: 192.168.1.2:25、localhost:smtp 。如果服务方恰好位于本地主机上,则 “ IP地址 ”与冒号都可以省略。
unix代表“Unix domain socket”,而fifo代表“命名管道”(named pipe)。两者都是同机器不同进程之间的通信机制,而且同样使用特殊文件为通信中介。unix与fifo服务的名称与Unix标准文件名的命名规则相同,但是不包含目录路径的部分。Postfix使用服务名称来创建通信中介用的特殊文件。Unix domain socket与命名管道两者都是Unix的标准“进程间通信机制”(interprocess communications,通常简称为IPC) 。更详尽的信息,请参阅有关Unix程序设计的书籍。





