一、DNS配置

类型

名称    TTL 
 A mail  128.199.254.32  1小时 

MX

 @ mail.example.com(优先:10) 1小时 

TXT

@  v=spf1 mx:mail.example.com ip4:128.199.254.32 ~all  1小时 
 TXT mail._domain  keyv=DKIM1;k=rsa; p=MIGfMA0GCSqGSI…  1小时 

 

其中可以先配置A和MX记录,

两个TXT记录用于“反垃圾邮件”,其中DKIM需要本机配置,后文会详细说明。


二、Postfix安装及配置

2.1 事先设置好hostname的话,Postfix可以自动配置好很多参数,节省时间。

  1. # echo “example.com” > /etc/hostname

2.2 安装postfix

  1. # apt update
  2. # apt install mailutils

默认选项为Internet Siteexample.com 按回车。

2.3 基本配置

修改文件 /etc/postfix/main.cf

  1.  
  2. myhostname = mail.example.com
  3.  
  4. mydomain = example.com
  5.  
  6.  
  7. mydestination = $myhostname, localhost.$mydomain, $mydomain
  8.  
  9. inet_interfaces = loopback-only

然后重启服务。

  1. # systemctl restart postfix

2.4 现在已经可以发邮件了,测试一下看能不能收到。

  1. $ echo body of the email | mail -s subject line your_email_address

2.5 (可选配置)使用TLS加密

三、反垃圾设置:SPFDKIMDMARC

3.1 SPF只是添加DNS记录即可,这里重点说一下DKIM的安装配置

  1. # apt install opendkim opendkim-tools

3.2 编辑文件 /etc/opendkim.conf 追加如下配置到文件最下边:AutoRestart YesAutoRestartRate /1h

  1. UMask
  2. Syslog yes
  3. SyslogSuccess Yes
  4. LogWhy Yes
  5. Canonicalization relaxed/simple
  6. ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
  7. InternalHosts refile:/etc/opendkim/TrustedHosts
  8. KeyTable refile:/etc/opendkim/KeyTable
  9. SigningTable refile:/etc/opendkim/SigningTable
  10. Mode sv
  11. PidFile /var/run/opendkim/opendkim.pid
  12. SignatureAlgorithm rsa-sha256

  13. UserID opendkim:opendkim
  14. Socket inet:@localhost

3.3  编辑/etc/default/opendkim,注释掉原用的SOCKET配置,增加新配置:

  1. SOCKET="inet:12301@localhost"

3.4 编辑/etc/postfix/main.cf, 增加如下配置:

  1. milter_protocol = milter_default_action = accept

其中, 当postfix版本为2.6+,milter_protocol=6; 版本为2.3到2.5,milter_protocol=2;

查看postfix版本信息:

  1. $ postconf -d | grep mail_version

如果已经有smtpd_milters 和 non_smtpd_milters配置,追加如下:

  1. smtpd_milters = unix:/spamass/spamass.sock, inet:localhost: non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:

如果没有相关配置,直接用:

  1. smtpd_milters = inet:localhost: non_smtpd_milters = inet:localhost:

3.5 执行如下命令

  1. $ sudo mkdir /etc/opendkim $ sudo mkdir /etc/opendkim/keys

3.6 创建 /etc/opendkim/TrustedHosts , 前三行不要改动

  1. 127.0.0.1
  2. localhost
  3. 192.168.0.1/
  4.  
  5. *.example.com

3.7 创建/etc/opendkim/KeyTable

  1. mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

3.8 创建/etc/opendkim/SigningTable

  1. *@example.com mail._domainkey.example.com

3.9 执行如下命令:

  1. $ cd /etc/opendkim/keys $ sudo mkdir example.com
  2.  
  3. $ cd example.com $ sudo opendkim-genkey -s mail d example.com
  4.  
  5. $ sudo chown opendkim:opendkim mail.private

3.10 接下来创建一个DNS TXT记录:

其中,名字为mail._domainkey

值要参考/etc/opendkim/keys/example.com/mail.txt, 格式为:

  1. v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB

3.11重启服务,即可。

  1. $ sudo service postfix restart $ sudo service opendkim restart

如有错误,请查看日志:/var/log/mail.err 和/var/log/mail.log

参考文档:

[1]“如何在Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器” , http://blog.csdn.net/zstack_org/article/details/69525954

[2]“email基础篇 SPF设置说明”, https://tieba.baidu.com/p/3166555301?red_tag=1967972912

[3]“SSL对邮件加密的支持 Postfix+SSL配置”, http://shellyli.iteye.com/blog/1534717

Ubuntu16.04搭建Postfix作为SMTP服务器的更多相关文章

  1. Ubuntu16.04搭建OpenVPN

    Ubuntu16.04搭建OpenVPN 2018年12月27日 15:50:59 VinQin 阅读数:21042   简介 如果在一个非信任网络下比如旅社或者咖啡店的WiFi网络下,想要通过你的智 ...

  2. Ubuntu16.04搭建LAMP开发环境

    Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...

  3. ubuntu16.04搭建ftp服务器

    因为习惯了vs进行开发,所以对于Linux的代码编辑开发都在vs里面进行,通常我们都是ssh远程登录到Linux,使用ftp或者sftp共享Linux目录里面的文件方便对文件的共享,这里介绍一下在ub ...

  4. Harbor 企业级私有仓库 Ubuntu16.04 搭建及使用

    一.Harbor简介 1.1.什么是Harbor 几个VMware中国的人搞了一个容器镜像仓库.Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 1.2.Harbor架 ...

  5. ubuntu16.04搭建个人简易DLP

    前言 最近一朋友让我帮忙搭建一台服务器,用做公司的服务器,但是该服务器需要满足一些安全要求,于是乎就有了下面的解决过程^_^ 需求 期望普通用户和管理员都能ssh登陆服务器,但禁止scp或者其他方式下 ...

  6. TestLink+Jenkins在Ubuntu16.04搭建集成测试环境

    序章 序1:TestLink和TestLink-API-Python-client 目前TestLink的最新版本是1.9.19 TestLink-API-Python-client支持的TestLi ...

  7. centos6.8 搭建postfix/dovecot邮件服务器

    postfix/dovecot邮件服务器 安装配置参考链接  http://www.cnblogs.com/jkklearn/p/7280045.html (domain 为自己域名 xxx.com) ...

  8. 【.NetCore学习】ubuntu16.04 搭建.net core mvc api 运行环境

    查看linux内核版本 uname -a 打印结果 python@ubuntu:~$ uname -a Linux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed ...

  9. Ubuntu 16.04搭建php5.6 Web服务器环境

    Ubuntu 16.04默认安装php7.0环境,但是php7目前兼容性并不是很好,如果自行安装php5需要清除php7的已安装包,否则会报错. 移除默认及已安装的PHP包 sudo dpkg -l ...

随机推荐

  1. Shiro笔记(一)基本概念

    Shiro笔记(一)基本概念 一.简介 Shiro是一个Java安全框架,可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. Authentication:身份认证/登录,验证用户是 ...

  2. 并查集 (Union-Find Sets)及其应用

    定义 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.常常在使用中以森林来表示. 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的 ...

  3. C#高级编程9 第17章 使用VS2013-C#特性

    C#高级编程9 第17章 使用VS2013 编辑定位到 如果默认勾选了这项,请去掉勾选,因为勾选之后解决方案的目录会根据当前文件选中. 可以设置项目并行生成数 版本控制软件设置 所有文本编辑器行号显示 ...

  4. ASP.NET 多次点击button后事件执行多次 并发解决 频繁操作解决办法

    首先让我们体验一下频繁操作: 1)打开项目,在后台aspx.cs等服务器页面,设置断点. 2)点击页面按钮 3)调试开始进入断点,然后重复点击页面按钮 4)服务器第一次事件已经处理完毕,调试再次进入了 ...

  5. Java基础-多线程-①线程的创建和启动

    简单阐释进程和线程 对于进程最直观的感受应该就是“windows任务管理器”中的进程管理: (计算机原理课上的记忆已经快要模糊了,简单理解一下):一个进程就是一个“执行中的程序”,是程序在计算机上的一 ...

  6. 使用 Docker 搭建 Tomcat 运行环境

    转自: http://m.oschina.net/blog/616526, 版权归原作者所有. 1 Docker与虚拟机     2 搭建过程 2.1 准备宿主系统 准备一个 CentOS 7操作系统 ...

  7. CNC系统的多任务并行处理

    (1) CNC系统的多任务性.CNC系统通常作为一个独立的过程控制单元用于工业自动化生产中,因此它的系统软件必须完成管理和控制两大任务.系统的管理部分包括输入.I/O处理.显示和诊断.系统的控制部分包 ...

  8. java监控指定路径下文件及文件夹变化

    之前用jdk7的WatchService API(java.nio.file包)来做目录下的子文件监控,后改为使用commons-io包.主要有下面几点不同:1. WatchService是采用扫描式 ...

  9. ui-router 1.0 001 - resolve, component, sref-active

    特性介绍: state支持component形式 state的Resolve配置可以在激活state之前先获取数据, 绑定给component ui-sref-active="active& ...

  10. 在Linux平台上搭建EasyDarwin,编译代码并简单部署

    測试环境: Ubuntu gcc / g++ 从https://github.com/EasyDarwin/EasyDarwin下载代码 1.编译 第一步:进入源码文件夹下 cd ./EasyDarw ...