同福

使用Sendmail+Dovecot搭建邮件服务器【20210323】

介绍

介绍

福哥发现很多网站都要通过邮箱来注册账号,去申请别人的邮箱需要提交好多资料,烦人啊!最后福哥决定自己搭建一个邮箱服务器好了。

福哥用sendmail搭建自己的电子邮箱系统,sendmail是linux操作系统的软件,所以服务器选用的是centos7。

安装

安装sendmail

sendmail是搭建电子邮箱系统的基础服务

yum -y install sendmail sendmail-cf m4

安装cyrus

cyrus是用来实现smtp认证的服务

yum -y install cyrus-sasl cyrus-sasl-md5 cyrus-sasl-plain cyrus-sasl-lib

安装dovecot

yum -y install dovecot

安装perl环境

openwebmail是perl编写的,需要安装perl环境

yum -y install perl-TextIconv perl-CGI perl-CPAN perl-suidper perl-YAML

安装apache

既然是用来跑perl,那么用yum安装一个就可以了

yum install httpd

安装openwebmail

从官网下载最新版本

wget http://openwebmail.org/openwebmail/download/release/openwebmail-2.53.tar.gz

配置

配置sendmail

sendmail.mc

打开 /etc/mail/sendmail.mc

去掉以下内容前面的注释(“dnl ”)

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

找到以下内容,把127.0.0.1改成0.0.0.0

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

找到以下内容,去掉前面的注释(“dnl ”),将域名mydomain.com替换成自己的,例如:abc.com

dnl MASQUERADE_AS(`mydomain.com')dnl

去掉以下内容前面的注释(“dnl ”)

dnl FEATURE(masquerade_envelope)dnl

去掉以下内容前面的注释(“dnl ”)

dnl FEATURE(masquerade_entire_domain)dnl

找到以下内容,去掉前面的注释(“dnl ”),将域名localhost替换成自己的,例如:abc.com

dnl MASQUERADE_DOMAIN(localhost)dnl

在以下内容前面增加注释(“dnl ”)

EXPOSED_USER(`root')dnl

通过mc文件生成cf文件

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

access

打开 /etc/mail/access

在里面写上邮箱服务器的IP地址或者域名

test.tongfu.net                    RELAY

使用makemap生成db文件

makemap hash /etc/mail/access.db < /etc/mail/access

local-host-names

打开 /etc/mail/local-host-names

在里面写上邮箱服务器的域名

test.tongfu.net

重启sendmail

重启sendmail服务

systemctl restart sendmail

配置saslauthd

设置认证方式

打开 /etc/sysconfig/saslauthd

设置认证方式为shadow

MECH=shadow

重启saslauthd

重启saslauthd服务

systemctl restart saslauthd

配置dovecot

10-auth.conf

打开 /etc/dovecot/conf.d/10-auth.conf

把 disable_plaintext_auth 设置为 no

disable_plaintext_auth = no

找到以下内容,设置邮箱域名,例如:abc.com

auth_realms = abc.com

找到以下内容,设置邮箱域名,例如:abc.com

auth_default_realm = abc.com

找到以下内容,设置成 %n

auth_username_format = %n

10-ssl.conf

打开 /etc/dovecot/conf.d/10-ssl.conf

把 ssl 设置为 yes

ssl = yes

10-mail.conf

打开 /etc/dovecot/conf.d/10-mail.conf

修改 mail_location

mail_location = mbox:~/mail:INBOX=/var/mail/%n

重启dovecot

重启dovecot服务

systemctl restart dovecot

自动创建INBOX目录

dovecot需要在用户目录下创建INBOX目录,我们可以通过修改模板用户skel的.bashrc文件来做这个事情

打开 /etc/skel/.bashrc

在里面添加代码

# Create mail directory
if [ ! -d ~/mail/.imap/INBOX ] ; then
        mkdir -p ~/mail/.imap/INBOX
fi

这样新创建的用户登录的时候就会自动创建INBOX目录了

福哥发现在使用 useradd 创建用户后,即使通过客户端连接 pop3 服务器,INBOX目录也不会自动创建。需要在服务器上通过 su 登录新用户手动创建才行。

自动启动

设置sendmail,saslauthd,dovecot的自动启动

systemctl enable sendmail
systemctl enable saslauthd
systemctl enable dovecot

测试

配置

通过foxmail配置一下

8840b19e8fee9932.jpg

发送

随便写了一封邮件,发出去吧

23ca958899e014bb.jpg

接收

点击收取就可以收到刚刚发送的邮件了

338349ec74284330.jpg

总结

今天福哥带着大家学会了如何通过sendmail在linux系统上面搭建自己的邮箱服务器。

需要注意的是想要自己的邮箱服务器可以使用需要满足如下几点要求:

  • 我们的邮箱服务器必须有公网IP地址,一般情况下就是通过主机托管或者购买云主机方式获得

  • 我们必须拥有一个域名,可以不是顶级域名,但是需要有管理权限

  • 我们必须有权为域名添加MX记录,这个一般情况下是需要到域名注册商的后台去操作的