当前位置:   article > 正文

gitlab配置postfix通过内网的smtp服务器发送邮件_gitlab postfix

gitlab postfix

背景:公司内网的gitlab要发送邮件,但gitlab无法连接互联网,只能通过连接内网的smtp邮件服务器来发送邮件,以下是我找了很久的配置方法!!新测有效!
前堤:内网要有DNS服务器、邮件服务器

1)gitlab所在的服务器安装postfix smtp客户端设置SASL身份认证所需要的软件:
yum -y install cyrus-sasl-lib cyrus-sasl cyrus-sasl-plain

2)修改gitlab服务器postfix配置文件:/etc/postfix/main.rf
增加以下内容:
#启用 SMTP 客户端 SASL 身份验证
smtp_sasl_auth_enable = yes
#过滤 PLAIN 和 LOGIN 以外的 SASL 认证方式
smtp_sasl_mechanism_filter = plain, login
启用依赖于发件人的 SASL 身份验证
smtp_sender_dependent_authentication = yes
#设置记录发件人和其对应 SMTP 服务器的文件
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
#设置记录发件人和其对应账号信息的文件
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

设置 SMTP TLS 加密会话 SASL 安全选项(较默认设置,这里删除了禁止明文密码认证方式)
#smtp_sasl_tls_security_options = noanonymous #如果内网的smtp服务器未启用SSL验证,该项可不增加
设置 SMTP TLS 客户端 CA 证书列表(这里指定系统默认 CA 证书)
#smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt #如果内网的smtp服务器未启用SSL验证,该项可不增加

设置 TLS 策略表(为指定 SMTP 服务器会话启用 TLS 加密)

#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy" #如果内网的smtp服务器未启用SSL验证,该项可不增加

3)创建相关的配置文件
创建记录发件人和其账号信息的配置文件
#支持添加多个邮箱账号,每行一个,格式为“发件人地址 + 空格 + 邮箱账号 + 冒号 + 邮箱密码”,目前分配给gitlab发送邮件的邮箱账号是git@abc.com
cat > /etc/postfix/sasl_passwd << “EOF”
git@abc.com git@abc.com:git_AF
EOF

#创建记录发件人和其 SMTP 服务器的文件
SMTP 服务器域名用 [] 括住表示关闭 MX 查找(如果开启 MX 查找,会将邮件发送到域名 MX 记录里的目标)
如果之前添加了多个邮箱账号,这里也要相应添加记录
#公司的邮件服务器是mail.abc.com,端口是25
cat > /etc/postfix/sender_relay << “EOF”
git@abc.com [mail.abc.com]:25
EOF

通过postmap命令生成经hash处理过的数据库文件,以供postfix使用:
postmap /etc/postfix/sasl_passwd
postmap /etc/postfix/sender_relay
会生成sasl_passwd.db和sender_relay.db文件

4)重启postfix
运行命令:postfix check 检查配置文件是否有误
没问题后重启postfix服务:
systemctl restart postfix
3.3 修改gitlab的配置文件
修改gitlab配置文件/etc/gitlab/gitlab.rb,修改以下两行

设置gitlab_email_from的值与postfix中使用的邮箱账号一致,目前分配给gitlab发送邮件的邮箱账号是git@abc.com。
重载配置文件使其生效:gitlab-ctl reconfigure
3.4 测试邮件发送功能
在gitalb服务器运行命令:
gitlab-rails console
在进入的终端中输入以下发送邮件的测试命令,测试向test@abc.com这个邮箱发送邮件,主题是Message Subject,邮件内容是Message Body
Notify.test_email(‘test@abc.com’, ‘Message Subject’, ‘Message Body’).deliver_now
输出结果如下,说明gitlab本身已将邮件发送出去:

登录test@abc.com邮箱,检查是否成功接收到邮件:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/208043
推荐阅读
相关标签
  

闽ICP备14008679号