Linux搭建smtp服务器+laravel5.2发邮件配置

/** * 这里主要是想通过自己搭建smtp服务器,配置laravel5.2框架,实现邮箱发邮件功能, * 主要内容是搭建smtp服务器,laravel5.2发邮件顺手提一下 */

/** * 1.laravel5.2通过Mail实现发邮件的功能 * 2.搭建自己的smtp服务器 * 3.修改mail的配置,将主机和账号修改为自己的smtp代理服务器 * * 相关技术基础(php基础知识、laravel5.2框架的简单操作、Linux运维基础知识) */

/** * 1.laravel5.2通过mail实现发邮件的功能 * * 首先修改config里面关于mail的配置文件 * vim ./config/mail.phpreturn [‘driver‘ => ‘smtp‘,‘host‘ => ‘smtp.exmail.qq.com‘,‘port‘ => 465,‘from‘ => [‘address‘ => ‘anywhere‘, ‘name‘ => ‘云享客‘],‘encryption‘ => ‘ssl‘,‘username‘ => ‘[email protected]‘,‘password‘ => ‘mypasswd‘,‘sendmail‘ => ‘/usr/sbin/sendmail -bs‘,]; * driver是驱动为smtp, * host就是smtp代理服务器,我有一个腾讯企业邮箱的账号,腾讯企业邮箱的smtp是smtp.exmail.qq.com * port是465,encryption是ssl,这个是腾讯smtp服务器相关的,一般在邮箱的安全设置里面可以找到这些 * from里面的address可以随便写,name也是,这个属于邮件部分,跟发送影响不大 * username和password就是腾讯企业邮箱的账号, * 有了这些配置之后,可以直接在控制器里面调用mail的send方法发送邮件。 * * * vim ./app/Http/Controllers/MailController.phpuse Illuminate\Support\Facades\Mail;//sendMail functionprivate function sendMail(){$name = $this->name;$userid = $this->userid;$token = $this->token;$time = $this->time;$telplate = $this->telplate;$email = $this->email;

$flag = Mail::send($telplate,[‘name‘=>$name,‘userid‘=>$userid,‘email‘=>$email,‘token‘=>$token,‘time‘=>$time],function($message){$to = $this->email;$message ->to($to)->subject(‘your subject‘);});if($flag){return true;}else{return false;}} * * 邮件发送的核心就是Mial::send(); * 其中$telplate就是邮件的详细内容部分,可以通过html和css定义为任意的样式,很灵活。 * 接着一个数组就是$telplate的参数部分, * $to是发送到的邮箱地址, * subject是邮件主题 * 模板同样放在views里面。比如$this->telplate = ‘email.index‘,就是./resouces/views/email/index.blade.php * 通常需要传递到模板的参数至少有时间,用户标识和token, * 时间用来控制链接生效时间,token避免违法请求,用户唯一标识在用户认证激活的时候用来分辨是属于哪个用户。 * 这里只是达到发邮件的目的,其他内容在laravel框架分类里面会提及。 */

/** * 2.搭建自己的smtp服务器 * (在上面的配置里面,我们使用的smtp服务器是腾讯的企业邮箱代理服务器, * 第三方的免费使用的代理服务器会有一些限制,比如说条数内容的限制,我们想搭建一台自己的 * smtp服务器来替代smtp.exmail.qq.com) * * 首先需要有一台物理主机,不管是租云服务器或者是去中关村买一台,根据需要自己配置。 * 我这里是租了一台测试版的阿里云ecs,可以满足我的简单的发邮件需求。 * 我的阿里云ecs装的centos6.5操作系统,现在我们一步一步的搭建配置我们自己的smtp服务器。 * * 需要确定我们将使用postfix代替sendmail发送邮件,具体原因有很多,不赘述。 * * * 通过yum安装postfix dovecot cyrus-sasl * 修改postfix的配置文件 * vim /etc/postfix/main.cf * * myhostname=test.mail.com * * mydomain=mail.com * * myorigin = $mydomain * * inet_interfaces = $myhostname,localhost * * inet_protocols = ipv4 * * mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain * * mynetworks = 0.0.0.0/0 * * 加上以下配置禁止不验证就发送smtpd_sasl_auth_enable = yessmtpd_sasl_local_domain = $myhostnamesmtpd_sasl_security_options = noanonymous#smtpd_sender_restrictions = permit_mynetworks,reject_unauth_sender,reject_authenticated_sender_login_mismatch,reject_sender_login_mismatchsmtpd_sender_restrictions = permit_sasl_authenticated,reject_authenticated_sender_login_mismatch,reject_sender_login_mismatchsmtpd_recipient_restrictions = permit_sasl_authenticated,reject_non_fqdn_hostname,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_invalid_hostname,reject_unauth_destination * * 重启postfix:service postfix restart; * failed, tail /var/log/maillog  报错host无法识别 * vim /etc/host 添加主机解析到域名: * 121.xxx.xxx.xxx test.mail.com * 121.xxx.xxx.xxx mail.com * service postfix restart ok了 * * 测试telnet 121.xxx.xxx.xxx 25 * Trying 121.xxx.xxx.xxx... * Connected to 121.xxx.xxx.xxx. * Escape character is ‘^]‘. * 220 test.mail.com ESMTP Postfix postfix * ehlo mail.com * 250-test.mail.com * 250-PIPELINING * 250-SIZE 10240000 * 250-VRFY * 250-ETRN * 250-AUTH PLAIN LOGIN * 250-ENHANCEDSTATUSCODES * 250-8BITMIME * 250 DSN * mail from:12223 * 250 2.1.0 Ok * rcpt to:[email protected] * 504 5.5.2 <12223>: Sender address rejected:  * need fully-qualified address * * 这里被拒绝提示需要认证账号,因为我在配置文件里面做了这样的要求 * 我们新建用户 * useradd mymailer * passwd mymailer * * 在用户模板下面创建用户邮箱目录授予700权限 * mkdir /etc/skel/Maildir * chmod 700 /etc/skel/Maildir * * 为用户创建邮箱目录授予700权限,并将邮箱目录设置为用户所有 * mkdir /home/mymailer/Maildir * chmod 700 /home/mymailer/Maildir/ * chown mymailer Maildir/ * * 为用户设置smtp认证密码 * saslpasswd2 -u 121.42.148.193 -c mymailer * * 改变sasl的属性和所属组 * chgrp postfix /etc/sasldb2 * chmod 640 /etc/sasldb2 * * 修改smtp.com,不使用系统用户密码作为用户的SMTP认证密码 * vim /etc/sasl2/smtpd.com * pwcheck_method: auxprop * * 修改sasl配置 * vi /etc/sysconfig/saslauthd * #MECH=pam * FLAGS=sasldb * * 重启相关服务 * /etc/rc.d/init.d/saslauthd start * service postfix restart * * 在本地 * [[email protected] mymailer]# telnet test.mail.com 25 * Trying 121.xxx.xxx.xxx... * Connected to test.mail.com. * Escape character is ‘^]‘. * 220 test.mail.com ESMTP Postfix postfix * ehlo mymailer * 250-test.mail.com * 250-PIPELINING * 250-SIZE 10240000 * 250-VRFY * 250-ETRN * 250-AUTH PLAIN LOGIN * 250-ENHANCEDSTATUSCODES * 250-8BITMIME * 250 DSN * auth login * 334 VXNlcm5hbWU6 * bXltYWlsZXI= * 334 UGFzc3dvcmQ6 * MTIzNDU2 * 235 2.7.0 Authentication successful * mail from:[email protected] * 250 2.1.0 Ok * rcpt to:[email protected] * 250 2.1.5 Ok * data * 354 End data with <CR><LF>.<CR><LF> * test mail * . * 250 2.0.0 Ok: queued as D0251C03F3 * quit * * (auth login之后需要输入的经过base64处理的账号和密码,可以通过 * printf ‘mymailer‘ |openssl base64 * printf ‘mypass‘ |openssl base64 * 得到) * 这里就算是搭建发送成功,如果出现没有收到邮件的意外情况, * 可以查看/var/log/maillog * 很有可能被退信了,比如我发往163 *  * to=<[email protected]>,  * relay=163mx01.mxmail.netease.com * [220.181.14.137]:25, delay=21, delays=20/0.01/1.1/0.02,  * dsn=5.0.0, status=bounced  * (host 163mx01.mxmail.netease.com[220.181.14.137] * said: 550 MI:SPF 163 mx36, * VsCowAA3ayWf4stXRgB2BQ--.37232S2 1472979616 * http://mail.163.com/help/help_spam_16.htm? * ip=121.42.148.193&hostid=mx36&time=1472979616 (in reply to  * MAIL FROM command)) *  * 因为域名没有解析,买个域名,解析到服务器就ok了,还不会被送往垃圾箱。 */

/** * 3.修改laravel中mail的配置,将主机和账号修改为自己的smtp代理服务器 * 假设你已经买了一个域名,并且已经成功解析:mail.domain.com * * 那么,vim ./config/main.phpreturn [‘driver‘ => ‘smtp‘,‘host‘ => ‘mail.domain.com‘,‘port‘ => 25,‘from‘ => [‘address‘ => ‘[email protected]‘, ‘name‘ => ‘someone‘],‘encryption‘ => ‘ssl‘,‘username‘ => ‘mymailer‘,‘password‘ => ‘yourpass‘,‘sendmail‘ => ‘/usr/sbin/sendmail -bs‘,]; * 然后测试一下,ok */
时间: 2024-10-23 23:51:08

Linux搭建smtp服务器+laravel5.2发邮件配置的相关文章

Linux搭建DNS服务器

DNS相关概念 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53. 作用:解析域名 区域:正向区域.反向区域 记录: A记录 MX记录:搭建邮件服务器 PTR记录:反向记录,出现在反向区域中 CNAME记录:别名记录 NS记录:DNS授权服

Linux搭建SVN 服务器

Linux搭建SVN 服务器 1          安装SVN 2          使用客户端连接 2.1       使用windows的客户端 2.2       使用Linux下的命令行 3          FAQ 3.1       命令行方式连接,提示svn: No repository found in 'svn://192.168.11.229/project'错误? 3.2       执行命令# svn co svn://192.168.11.229/project时提示“

Linux 搭建SVN 服务器

一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中. 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动. 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史. SVN中的一些概念 : (1). repository(源代码库) 源代码统一存放的地方 (2). Checkout (提取) 当你手上没有源代码的时候,你需要从r

linux 搭建https 服务器 (apache)

一.  安装准备 1.    安装Openssl 要使Apache支持SSL,需要首先安装Openssl支持.这里使用的是openssl-0.9.8k.tar.gz 下载Openssl:http://www.openssl.org/source/ tar -zxf openssl-0.9.8k.tar.gz    //解压安装包 cd openssl-0.9.8k                 //进入已经解压的安装包 ./config                          //配

linux搭建web服务器

linux httpd 假设服务器地址为192.168.80.20/24 1.   将准备安装的httpd软件包共享给everyone , (1)在linux上mount.cifs  //真机IP地址/共享文件夹名   /media / ls  /meidia/ 查看 tar    xjvf   httpd-2.4.10.tar.bz2    -C  /usr/src       解压至/usr/src下 下面两个插件是httpd2.4以后的版本所需要的 http://ftp.jaist.ac.

Linux 搭建SVN 服务器(转)

一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中. 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动. 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史. SVN中的一些概念 : (1). repository(源代码库) 源代码统一存放的地方 (2). Checkout (提取) 当你手上没有源代码的时候,你需要从r

Linux搭建SVN 服务器(转)

转自:http://my.oschina.net/lionel45/blog/298305 Linux搭建SVN 服务器 作者: 沈小然    日期:2014年 8月 5日 1          安装SVN 官网下载:http://subversion.apache.org/packages.html SVN客户端:TortoiseSVN,官网下载:http://tortoisesvn.net/downloads.html # yum install subversion 1.       新建

原 Linux搭建SVN 服务器2

原 Linux搭建SVN 服务器 发表于1年前(2014-08-05 17:55)   阅读(12257) | 评论(3) 31人收藏此文章, 我要收藏 赞3 摘要 Linux搭建SVN 服务器 目录[-] Linux搭建SVN 服务器 1          安装SVN 2          使用客户端连接 2.1       使用windows的客户端 2.2       使用Linux下的命令行 3          FAQ 3.1       命令行方式连接,提示svn: No repos

使用Linux搭建FTP服务器实现文件共享

使用Linux搭建FTP服务器实现文件共享... ---------------- Linux中的文件共享:FTPVSFTPDVSFTPD虚拟用户 FTP可以用在Linux与Linux 和Windows与Linux之间,跨平台使用 Samba可以用在Linux与Linux 和Windows与Linux之间,跨平台使用-----------------林那克斯FTp:File Transfer Protocol 文件传输协议的缩写,是基于网络来传输文件的应用层协议 FTp可以通过网络来传输文件,是