linux下smtp服务器搭建

  • postfix安装和配置
    • postfix安装
    • 安装sasldb、saslauthd
    • 配置postfix并启用smtp
    • 查看postfix配置文件的所有配置项
    • sasldb2建立smtp用户和密码
    • 测试postfix配置文件并启动postfix
  • 配置DNS服务器
    • 编辑主配置文件
    • 修改区域配置文件
    • 编辑区域数据配置文件
    • 创建反向区域数据配置文件
    • 启动DNS服务
    • 测试smtp服务器是否正常使用
  • client端配置发件人
    • 配置smtp服务器和默认发件人
    • 配置DNS
    • 发件命令

postfix安装和配置

参考 https://blog.jjonline.cn/linux/185.html 作者:晶晶
使用postfix搭建smtp服务器,主要用于测试防火墙垃圾邮件识别

postfix安装

#开始yum安装前 更换yum源 建议aliyun源 参考:https://blog.jjonline.cn/linux/171.html
#备份原先的yum源信息

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

#从阿里云镜像站下载centos6的repo

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo

#最后yum重新生成缓存

yum makecache
yum remove sendmail #卸载sendmail
yum remmove postfix #卸载postfix
yum install postfix #重新安装postfix

#yum安装会自动建立postfix用户组和用户名

yum install crontabs #因为卸载postfix的时候系统定时服务也被卸载 核心服务 也同步安装下

安装sasldb、saslauthd

yum install cyrus-sasl* #提供smtp的虚拟账户和密码服务

#sasldb2包含在saslauthd当中 就不要再问为什么没有安装sasldb2的shell代码了
#当前mta查看
alternatives --display mta

#设置mta
/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix

#再次查看mta
alternatives --display mta

#输出结果最后一行会有类似如下的提示:mta即设置完毕
#Current `best’ version is /usr/sbin/sendmail.postfix.

postfix开机启动设置,因为采用sasldb2提供postfix的smtp账户和密码,无需saslauthd服务运行,故而saslauthd服务不用启动—看吧,使用sasldb2还减少资源占用:

chckconfig postfix on

配置postfix并启用smtp

postfix配置文件在/etc/postfix目录下,主要修改的配置文件为:/etc/postfix/main.cf

vi /etc/postfix/main.cf
#vi编辑postfix配置文件
#找到如下配置项酌情修改

myhostname = mail.jjonline.com.cn
#postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IPmydomain = jjonline.com.cn
#域名myorigin = $mydomain
#本机postfix的邮箱域名后最 此项默认值使用myhostname
#此处使用了前项mydomain 也就是说本机postfix邮箱后缀为:@jjonline.com.cninet_interfaces = localhost
#指定postfix系统监听的网络接口 此处必须是localhost或127.0.0.1或内网ip
#若注释或填入公网ip 服务器的25端口将对公网开放
#默认值为all 即监听所有网络接口
#此项指定localhost后 本机postfix就只能发邮件不能接收邮件inet_protocols = ipv4
#网络协议 ipv6在国内还不怎么普及 这里ipv4即可mydestination = $myhostname, localhost.$mydomain, localhost
#指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。
#此项配置中$myhostname表示postfix接受@$myhostname为后缀的邮箱的邮件 逗号分割支持指多项#此项默认值使用myhostnamelocal_recipient_maps =
#此项制定接收邮件的规则 可以是hash文件 此项对本次配置无意义 可以直接注释mynetworks = 42.121.107.189, 10.200.9.xxx, 127.0.0.1
#指定你所在的网络的网络地址
#鄙人生产服务器公网IP42.121.107.189、内网ip10.200.9.xxx(第四位做了隐藏)、以及localhost的ip127.0.0.1
#请依据实际情况修改
#如果配置不正确发送邮件时会报Relay access denied,配置信任的接收的ip地址smtpd_banner = JJonline.Cn ESMTP Server
#指定MUA通过smtp连接postfix时返回的header头信息
#原始配置附带有postfix版本号 去掉即可,此项酌情处理#SMTP Config
#有的配置文件中没有显示下面的命令,手打敲上即可
broken_sasl_auth_clients = ye
#指定postfix兼容MUA使用不规则的smtp协议--主要针对老版本的outlook 此项对于本次配置无意义smtpd_client_restrictions = permit_sasl_authenticated
#指定可以向postfix发起SMTP连接的客户端的主机名或ip地址
#此处permit_sasl_authenticated意思是允许通过sasl认证(也就是smtp链接时通过了账号、密码效验的用户)的所有用户smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#发件人在执行RCPT TO命令时提供的地址进行限制规则 此处照搬复制即可smtpd_sasl_auth_enable = yes
#指定postfix使用sasl验证 通俗的将就是启用smtp并要求进行账号、密码效验smtpd_sasl_local_domain = $mydomain
#指定SMTP认证的本地域名 本次配置可以使用 smtpd_sasl_local_domain = '' 或干脆注释掉 默认为空smtpd_sasl_security_options = noanonymous
#取消smtp的匿名登录 此项默认值为noanonymous smtp若能匿名登录危害非常大 此项请务必指定为noanonymousmessage_size_limit = 5242880
#指定通过postfix发送邮件的体积大小 此处表示5Msmtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
#防止出现Relay access denied报错

查看postfix配置文件的所有配置项

postconf #不带任何命令参数 即可输出所有postfix配置项以及默认值

sasldb2建立smtp用户和密码

某种意义上来讲:smtp的账户密码建立也就是建立邮箱账户(类似jjonline@jjonline.cn的邮箱地址)。

#配置postfix启用sasldb2作为smtp的账号秘密效验方式
#编辑通过sasl启用smtp账号密码效验的配置

vi /etc/sasl2/smtpd.conf #vi写入或编辑内容如下:

 pwcheck_method: auxpropauxprop_plugin: sasldbmech_list: plain login CRAM-MD5 DIGEST-MD5

#这里需要注意的是:这个配置文件的位置是64位机器上的,32位机器应该在:/usr/lib/sasl2/smtpd.conf

#创建smtp账号

saslpasswd2 -c -u postconf -h mydomain test #回车会要求输入密码,连续两次
#表示创建test@$mydomain的邮箱账号(也是smtp的账号)和密码
#本例就是创建test@jjonline.com.cn账号和密码
#此处注意的是smtp登录用的账号并不是单纯的用户名 而是整个邮箱地址字符串
#假设此处设置的smtp账号test@jjonline.com.cn密码为test123 下方测试时要用到

#查看sasldb2的用户和密码

sasldblistusers2
#此命令进用户查看sasldb的用户情况
#此命令回车后会输出诸如这样的内容:test@jjonline.com.cn: userPassword

#每次添加smtp用户完毕之后需重启postfix或reload

测试postfix配置文件并启动postfix

#测试postfix配置文件
service postfix check
#没有问题的话会返回着色[ok]字样
#启动postfix
service postfix start
#设置postfix开机启动
chkconfig postfix on
#更改sasldb2数据的权限,让postfix可以读取
chmod 755 /etc/sasldb2

配置DNS服务器

参考https://blog.51cto.com/12227558/2074095 作者:0行云流水0
#安装DNS服务
yum install bind -y

编辑主配置文件

#主要修改
listen-on port 53 { 10.180.X.X; };#修改自己DNS的ip,这里是10.180.X.X的ip,为linux的管理ip

options {listen-on port 53 { 10.180.X.X; };listen-on-v6 port 53 { ::1; };directory     "/var/named";dump-file     "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";recursing-file  "/var/named/data/named.recursing";secroots-file   "/var/named/data/named.secroots";allow-query     { any; };

#检查语法错误,没有提示表示没有语法错误
named-checkconf

修改区域配置文件

vi /etc/named.rfc1912.zones
#根据自己实际拓扑配置,这里的linux pc为多网卡pc,根据拓扑需要因此配置的ip为其他网卡的ip
#这里的域名为上面smtp服务器域名
#下面配置请手动自己添加

zone "jjonline.com.cn" IN {type master;file "jjonline.com.cn.zone";
};
zone "44.60.45.209.in-addr.arpa"{#注意这里的ip为反向ip,实际的ip为209.45.60.44type master;file "jjonline.com.cn.local";
};

#检查语法错误,没有提示表示没有语法错误
named-checkconf

编辑区域数据配置文件

cd /var/named
cp -p named.localhost jjonline.com.cn.zone
#创建正向区域数据配置文件(注意,由于我是复制另一个样式文件,复制文件时必须加“-P”,表示复制过来的时候文件权限保持不变)

#编辑正向区域数据配置文件
vi jjonline.com.cn.zone
#手动修改NS MX和IN A三条,注意域名后面有一个点

$TTL 1D
@      IN SOA    @ rname.invalid. (0    ; serial1D    ; refresh1H    ; retry1W    ; expire3H )    ; minimumNS    mail.jjonline.com.cn.MX 10   mail.jjonline.com.cn.
mail    IN A    209.45.60.44

创建反向区域数据配置文件

cp -p named.localhost jjonline.com.cn.local
vi jjonline.com.cn.local
#手动修改NS MX和PTR三条,注意域名后面有一个点

$TTL 1D
@    IN SOA    ly6118.com.cn. rname.invalid. (0    ; serial1D    ; refresh1H    ; retry1W    ; expire3H )    ; minimumNS    mail.jjonline.com.cn.MX 10   mail.jjonline.com.cn.
10      PTR     mail.jjonline.com.cn.

#检查语法错误,没有提示表示没有语法错误
named-checkconf

启动DNS服务

#启动命令
systemctl start named

#设置开机启动
systemctl enable named

#设置服务器域名
vi /etc/resolv.conf

原本配置域名为114.114.114.114
把新建的DNS服务器域名添加到第一条,不然解析不了,不影响其他正常上网活动

nameserver 10.180.X.X
nameserver 114.114.114.114

#解析域名
nslookup mail.jjonline.com.cn
#能够正常解析出域名和ip即可

测试smtp服务器是否正常使用

telnet mail.jjonline.com.cn 25

#可以通过查看mail日志确定是否发送成功
vi /var/log/maillog

client端配置发件人

client端仍然使用linux pc,也可以使用windows 直接telnet mail.jjonline.com.cn 25注意要配置域名解析
这里client端使用mailx
参考https://blog.csdn.net/liang19890820/article/details/53115334 作者:一去丶二三里
#安装mailx
yum install -y mailx

配置smtp服务器和默认发件人

#smtp协议是邮件发件协议,所有发出去的邮件都会先经过smtp server,然后再转发给对应的收件服务器,再转发给对应的收件人

vi /etc/mail.rc
#在文件末尾添加以下信息

set bsdcompat
set from=test@jjonline.com.cn
set smtp=mail.jjonline.com.cn
set smtp-auth-user=test@jjonline.com.cn
set smtp-auth-password=*******
set smtp-auth=login

配置DNS

vi /etc/resolv.conf
在第一条添加
nameserver 10.180.X.X
#ip为之前smtp server搭建的DNS服务器IP,要确保路由可达,不然很有可能解析不出来smtp server的域名

发件命令

#其中 echo 后面的是邮件的正文
echo “邮件正文” | mail -s “邮件主题” 123456@qq.com
#以文件 file.txt 的内容为邮件正文发送
cat file.txt | mail -s “邮件主题” 123456@qq.com

#这里发送简单邮件
echo “this is a test mail,thks” | mail -v -s “test mail” test1@126.com

#在smtp server上通过查看日志可以看到是否发送成功
#要想在126等邮箱中收到可以参考https://www.cnblogs.com/ilanni/p/5294611.html

#本次smtp server搭建主要是用于测试经过防火墙能否识别垃圾邮件,由于大多商用邮件服务器比如126等都有反垃圾邮件功能,因此这里不关注是否收件人是否收到邮件,主要关注发件人群发邮件,经过防火墙被识别为垃圾邮件,并阻断发件人和smtp server之间的连接。

linux下smtp服务器搭建相关推荐

  1. Linux下FTP服务器搭建

    Linux下FTP服务器搭建 一.FTP介绍 二.环境介绍 三.FTP服务端搭建步骤 1.安装相关软件包 2.启动FTP并检查状态 3.检查服务端口运行状态 4.修改FTP配置文件 5.关闭selin ...

  2. linux下svn服务器搭建及使用

    文章目录 1. 安装svn客户端 2. 安装svn服务器 3. 在svn目录下创建版本库 4. 修改版本库配置文件 4.1 修改 authz 文件 4.2 设置密码 passwd 4.3 修改 svn ...

  3. linux 下ntp服务器,Linux下NTP服务器搭建(示例代码)

    一.搭建准备 1.确定自己的时区 #date命令可以查看当前系统时间,中国的时区为CST.使用tzselect命令进行配置时区 配置文件的修改:/etc/sysconfig/clock 2.检查NTP ...

  4. 嵌入式转linux服务器,嵌入式linux下web服务器搭建

    一.移植编译生成boa二进制文件 Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右.作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接 ...

  5. linux下ftp服务器搭建详解

    总体搭建流程: 1.安装vsftpd 2.配置vsftpd.conf配置文件 3.启动vsftpd服务器(安装完后默认是启动的) 4.客户端发起连接 5.传递数据(上传,下载) 6.关闭连接 详解 1 ...

  6. Linux下Samba服务器搭建

    linux文件共享之samba服务器 --ubuntu 宗旨:技术的学习是有限的,分享的精神是无限的. 关闭LINUX防火墙命令: #ufwdisable 然后就在windows下ping一下linu ...

  7. 基于Linux下的服务器搭建(网络编程)

    这是服务器,客户端是qt编写的.看情况再写吧 注意这是头文件: #include <stdio.h> #include <string.h> #include <stdl ...

  8. Linux下SVN服务器搭建(CentOS+Subversion)

    svn(subversion)是近年来崛起的版本管理工具,是CVS的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件.svn服务器有2种运行方式:独立服务器和借助apache等web服务 ...

  9. linux svn 面板,Linux下SVN服务器搭建(CentOS+Subversion)

    安装 (centos下yum即可方便的完成安装) # yum install subversion 测试安装是否成功: # svnserve --version 回车显示版本说明安装成功 建立版本库 ...

  10. linux下pppoe服务器搭建

    查看是否安装所需要的包. [root@MASTER ~]# rpm -qa |grep rp-pppoe rp-pppoe-3.5-32.1 配置文件目录在/etc/ppp下 [root@MASTER ...

最新文章

  1. amd r5 m330 linux驱动下载,AMDAMD Radeon(TM) R5 M330 14.502.1014.0000显卡驱动官方正式版下载,适用于win8.1-64-驱动精灵...
  2. SLES修改本地FTP安装源
  3. JAVA-初步认识-第十三章-多线程(验证同步函数的锁)
  4. class-dump获取iOS私有api
  5. c 包含其他文件_C语言:全局变量在多个c文件中公用的方法!
  6. 编辑php程序推荐的软件,PHP程序员都爱用的开发工具推荐
  7. python内置函数__import__
  8. jquery mysql jsp_jsp+jquery+mysql实现的一个简单的学生管理系统
  9. clear java_方法clear()在Java中做什么?
  10. 魏尔斯特拉斯函数 matlab,函数变换论文,关于《复变函数积分变换》教学相关参考文献资料-免费论文范文...
  11. windows命令大全
  12. 最新多功能工具箱小程序源码+功能超级多
  13. 街景影像分析入门(二)无需秘钥,抓取百度街景影像
  14. Unbuntu18.04系统定制化制作与再生龙镜像生成
  15. 将多个word文件合并为一个的方法
  16. springboot+VUE整合websocket
  17. page_fault_in_nonpaged_area(win32k.sys)错误解决方法
  18. python测量血压_利用TensorFlow2.0为胆固醇、血脂、血压数据构建时序深度学习模型(python完整源代码)...
  19. 上海理工大学计算机学硕调剂,上海理工大学2019考研调剂信息公告
  20. 认真的雪歌词的c语言编码,认真的雪吉他谱薛之谦C调_认真的雪歌词歌谱

热门文章

  1. java的帮助文档(API)
  2. 使用SQLyog创建表
  3. oracle常见sql笔试题,一路SQL笔试题
  4. 2021数据安全与个人信息保护技术白皮书
  5. HBase的安装和配置
  6. PR开场片头视频模板 多帧城市闪点社交媒体短视频pr模板
  7. AppScan安装教程
  8. win32com 操作excel
  9. OpenWrt 固件定制
  10. css参考-img标签