Ubuntu中sendmail的安装、配置

       由于项目须要一个邮件server功能,用已有的企业邮箱又有各种限制,就来捣鼓了下和这个相关的一些东西。通常是有好几个选择,比方Postfix,sendmail,qmail,第一个我之前用过。可是项目需求仅仅有发邮件,也不知怎的就选择了sendmail,事实证明还是不要作。废话不说,结合自己的一些经验总结一下,希望能让大家少踩坑。

一、安装

必装:

  1. sudo apt-get install sendmail  
  2. sudo apt-get install sendmail-cf  
  3. sudo apt-get install mailutils

可选:

  1. squirrelmail              //提供webmail          
  2. spamassassin          //提供邮件过滤  
  3. mailman                   //提供邮件列表支持  
  4. dovecot                   // 提供IMAP和POP接收邮件server守护进程
  5. sharutils                  // 提供带附件的功能

终端输入命令:ps aux |grep sendmail
输出例如以下:

root     20978  0.0  0.3   8300  1940 ?

        Ss   06:34   0:00 sendmail: MTA: accepting connections          
root     21711  0.0  0.1   3008   776 pts/0    S+   06:51   0:00 grep sendmail 

说明sendmail 已经成功安装并启动了

二、配置

(1)/etc/mail/sendmail.mc

(a)配置sendmail能够连接不论什么server

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl         改动Addr=0.0.0.0

(b)加入auth配置(注意字符串前面不是单引號,而是键盘中的波浪号键上的符号)

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

(c)启用access_db和trust_users

加入FEATURE(use_ct_file)

改动FEATURE(`access_db', , `skip')dnl为FEATURE(`access_db')dnl

(2)/etc/mail/access

将须要使用该邮件server的IP依照下面格式增加到该文件里:Connect:your_ip RELAY

然后更新access_db:makemap hash /etc/mail/access.db < /etc/mail/access

(3)/etc/mail/trusted-users

将须要使用该邮件server的IP依照下面格式增加到该文件里:一行一个ip

最后生成新的配置文件:

  1. cd /etc/mail  
  2. mv sendmail.cf sendmail.cf~      //做一个备份  
  3. m4 sendmail.mc > sendmail.cf   //>的左右有空格,提示错误没有安装sendm
为了防止其它邮件server将邮件投入垃圾邮件,能够加入spf记录。加入方式是在域名DNS管理里加入一条TXT记录,内容类似于

“v=spf1 ip4:67.202.107.106 -all”,同一时候改动/etc/host,在127.0.0.1 localhost之后将邮件server域名及主机名加进去

三、測试

(1)本机測试

1.一般的邮件: mail test@126.com  Cc 编辑抄送对象,Subject:邮件主题,输入回车,邮件正文后,按Ctrl-D结束

2.高速发送方式: echo “邮件正文” | mail -s 邮件主题 test@126.com

3.以文件内容作为邮件正文来发送: mail -s test test@126.com < test.txt

4.发送带附件的邮件: uuencode 附件名称 附件显示名称 | mail -s 邮件主题 发送地址

       比如: uuencode test.txt test.txt | mail -s Test test@126.com

(2)其它机器測试

# -*- coding: UTF-8 -*-                                                                                                                                                

import smtplib 

from email.mime.text import MIMEText  

from email.mime.multipart import MIMEMultipart

if __name__ == "__main__":

to = "to email addr"

    me = "your email addr"

    content = "test"

    msg = MIMEMultipart('alternative') 

    msg['Subject'] = "test"  

    msg['From'] = me  

    msg['To'] = to

    part2 = MIMEText(content, 'html',_charset='utf-8')

    msg.attach(part2)

    try:  

        server = smtplib.SMTP(your email server)  

        server.sendmail(me, to, msg.as_string())  

        server.quit() 

    except Exception, e:  

        print e

原文地址:https://www.cnblogs.com/wgwyanfs/p/7398950.html