centos下搭建邮件服务器

参考:

Linux系统下邮件服务器的搭建(Postfix+Dovecot+SSL)_linux搭建邮件服务器-CSDN博客

Linux系统中的邮件服务器配置指南-linux运维-PHP中文网

安装&初始化配置

#centos下
yum install -y postfix dovecot

#ubuntu下
apt install -y postfix dovecot-core dovecot-imapd dovecot-lmtpd dovecot-pop3d
General mail configuration type:
选择 3. Internet with smarthost
输入 System mail name: example.com
直接回车 SMTP relay host (blank for none):

设置域名

hostnamectl set-hostname mail.example.com

vim /etc/hosts
添加以下,假设192.168.10.100是本机局域网ip
192.168.10.100 mail.example.com mail
192.168.10.100 example.com

配置postfix

vim /etc/postfix/main.cf
 
myhostname = mail.example.com
mydomain = example.com

myorigin = $mydomain

inet_interfaces = all
inet_protocols = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 允许从本地网络中的其它邮件服务器转发邮件
mynetworks = 127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.0.0.0/8

# 允许外部邮件服务器向本邮件服务器发送邮件
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

home_mailbox = Maildir/

smtpd_banner = $myhostname ESMTP

# 添加到最后
# 规定邮件最大尺寸为10M
message_size_limit = 10485760
# 规定收件箱最大容量为1G
mailbox_size_limit = 1073741824
# SMTP认证
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes

上面配置中smtpd_recipient_restrictions的配置的释义是:

1、permit_mynetworks: 允许来自指定网络的SMTP客户端进行邮件投递。这意味着,如果您在mynetworks配置项中定义了信任的网络范围(如内部网络或已知安全的IP地址段),那么这些来源发送到任何收件人的邮件都将被接受。

2、permit_auth_destination: 如果发件人尝试向邮件服务器本地域或已经通过mydestination、virtual_alias_domains等配置指定为可接受目的地的域名发送邮件,则允许该邮件继续处理。这意味着,只要是发往本服务器负责处理的合法目的地址的邮件都会被接受。

3、permit_sasl_authenticated: 允许所有经过SASL身份验证的用户发送邮件到任何目的地。这适用于那些已经通过SMTP AUTH成功认证的用户,无论他们试图将邮件发送给哪个域。

4、reject: 在上述条件均未匹配的情况下,拒绝其余所有的邮件投递请求。这意味着如果邮件不是从受信任的网络发出,也不是发往本地域,并且发件人也未通过SASL身份验证,则Postfix会拒绝接收和处理这样的邮件。

综上所述,这个配置设计了一个严格的邮件接收策略,优先接受来自内部网络、发往本地管理的目的地以及经过身份验证的用户的邮件,而对于不符合这些条件的任何其他邮件投递请求,系统则直接拒绝。

如果postfix安装后缺少控制脚本,则在/etc/init.d/目录下提供一个脚本来管理postfix的启动与停止

vim /etc/init.d/postfix
#!/bin/bash
#
# postfix      Postfix Mail Transfer Agent
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program \
#              that moves mail from one machine to another.
# processname: master
# pidfile: /var/spool/postfix/pid/master.pid
# config: /etc/postfix/main.cf
# config: /etc/postfix/master.cf
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 3
 
[ -x /usr/sbin/postfix ] || exit 4
[ -d /etc/postfix ] || exit 5
[ -d /var/spool/postfix ] || exit 6
 
RETVAL=0
prog="postfix"
 
start() {
     # Start daemons.
     echo -n $"Starting postfix: "
        /usr/bin/newaliases >/dev/null 2>&1
     /usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"
     RETVAL=$?
     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix
        echo
     return $RETVAL
}
 
stop() {
  # Stop daemons.
     echo -n $"Shutting down postfix: "
     /usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop"
     RETVAL=$?
     [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix
     echo
     return $RETVAL
}
 
reload() {
     echo -n $"Reloading postfix: "
     /usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload"
     RETVAL=$?
     echo
     return $RETVAL
}
 
abort() {
     /usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort"
     return $?
}
 
flush() {
     /usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush"
     return $?
}
 
check() {
     /usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check"
     return $?
}
 
restart() {
     stop
     start
}
 
# See how we were called.
case "$1" in
  start)
     start
     ;;
  stop)
     stop
     ;;
  restart)
     stop
     start
     ;;
  reload)
     reload
     ;;
  abort)
     abort
     ;;
  flush)
     flush
     ;;
  check)
     check
     ;;
  status)
       status master
     ;;
  condrestart)
     [ -f /var/lock/subsys/postfix ] && restart || :
     ;;
  *)
     echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}"
     exit 1
esac
 
exit $?

设置该脚本权限

chmod +x /etc/init.d/postfix

配置dovecot

vi /etc/dovecot/dovecot.conf

# 启用Dovecot服务
protocols = imap pop3 lmtp

#  如果不使用IPv6,请修改为*
listen = *

login_trusted_networks = 0.0.0.0/0
vi /etc/dovecot/conf.d/10-auth.conf
 
disable_plaintext_auth = no
auth_mechanisms = plain login
vi /etc/dovecot/conf.d/10-mail.conf
 
mail_location = maildir:~/Maildir
vi /etc/dovecot/conf.d/10-master.conf

# Postfix smtp验证
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}
vi /etc/dovecot/conf.d/10-ssl.conf
 
# 同时支持ssl和非ssl
ssl = yes

启动服务

#centos下
systemctl start dovecot
systemctl start postfix
systemctl enable dovecot
systemctl enable postfix

#ubuntu下
service dovecot start
service postfix start
chkconfig dovecot on
chkconfig postfix on

查看配置

postconf -n

邮件用户就是系统的用户,例如root,就是一个邮箱用户,邮箱是root@example.com,密码就是root的密码,所以需要创建用户,只要使用useradd创建用户,再使用passwd设置密码。创建用户后,再在用户目录下创建Maildir目录(邮件数据的存储目录)并设置权限

# 创建用户
useradd nineven
#设置密码,会要求输入两次密码
passwd nineven
#创建目录
mkdir /home/nineven/Maildir
chown nineven:nineven /home/nineven/Maildir

测试:可以使用Foxmail等第三方软件来收发邮件。

配置SSL

创建自定义的ssl证书

cd /etc/pki/tls/certs/
#会要求你输入一个大于四位数的密码,输入并记住,下面几个命令会用到
openssl genrsa -aes128 -out email.key 2048
#会要求你验证刚才输入的密码,然后要求输入一系列信息,可以都不输入,一路回车到结束即可
openssl req -new -key email.key -out email.csr
#移除私钥文件的密码保护
openssl rsa -in email.key -out email.key.unsecure
#会要求你验证前面定义过的密码
openssl x509 -req -days 700 -in email.csr -signkey email.key.unsecure -out email.crt

配置

vi /etc/postfix/main.cf
 
# 添加到最后
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/email.crt
smtpd_tls_key_file = /etc/pki/tls/certs/email.key.unsecure
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_loglevel = 0
smtpd_tls_auth_only = yes
smtpd_tls_wrappermode = yes
vi /etc/postfix/master.cf

#将下面行的注释去掉
smtps     inet  n       -       n       -       -       smtpd
vi /etc/dovecot/conf.d/10-ssl.conf
 
# 指定证书
ssl_cert = </etc/pki/tls/certs/email.crt
ssl_key = </etc/pki/tls/certs/email.key.unsecure
#如果key文件有密码,前面我们做的是无密码证书
#ssl_key_password = key文件密码

重启服务

systemctl restart dovecot
systemctl restart postfix

foxmail配置

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建邮件服务器需要多个组件的配合,包括MTA(Mail Transfer Agent)、MUA(Mail User Agent)、MDA(Mail Delivery Agent)、邮件协议等,以下是在 CentOS 7 上搭建邮件服务器的一个基本步骤: 1. 安装必要的软件包: ``` yum install postfix dovecot firewalld ``` 2. 配置 Postfix 编辑 `/etc/postfix/main.cf` 文件,修改以下选项: ``` myhostname = yourdomain.com # 将 yourdomain.com 替换为你的域名 mydomain = yourdomain.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 127.0.0.1/32 ``` 3. 配置 Dovecot 编辑 `/etc/dovecot/dovecot.conf` 文件,修改以下选项: ``` protocols = imap pop3 lmtp listen = * disable_plaintext_auth = no mail_location = maildir:/var/mail/vhosts/%d/%n userdb { driver = passwd } passdb { driver = shadow } ``` 4. 创建用户和邮箱 ``` useradd -m -s /bin/bash username passwd username ``` 然后在 `/etc/postfix/virtual` 文件中添加以下行: ``` [email protected] username ``` 5. 启动服务 ``` systemctl start postfix dovecot firewalld systemctl enable postfix dovecot firewalld ``` 6. 配置防火墙 如果你使用了 firewalld 防火墙,那么需要在防火墙中开启相关端口: ``` firewall-cmd --add-port=25/tcp --permanent firewall-cmd --add-port=143/tcp --permanent firewall-cmd --add-port=993/tcp --permanent firewall-cmd --reload ``` 以上就是一个基本的邮件服务器搭建过程,根据你的需求还需要进一步配置,比如 SSL 证书、反垃圾邮件等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值