FreeBSD使用Postfix MTA配置AWS SES

时间:2020-01-09 10:38:30  来源:igfitidea点击:

如何在FreeBSD Unix服务器上运行的Postfix中集成和配置Amazon/AWS SES?

Amazon Simple Email Service(SES)是一项托管电子邮件服务,可让您使用您的电子邮件地址和域发送和接收电子邮件。
通常,SES用于发送大量电子邮件或路由电子邮件,而无需借助AWS提供的云服务器托管MTA。
我们可以使用Perl/Python/PHP API通过SES发送电子邮件。
在本教程中,我们将配置FreeBSD服务器或运行Postfix的监狱来通过AWS SES路由所有传出电子邮件。

使用Postfix配置AWS SES的过程

在开始使用Amazon SES和FreeBSD服务器的Postfix之前,您需要注册AWS,包括SES。
您需要验证您的电子邮件地址和其他设置。
确保您还创建了一个用于SES访问的用户并下载了凭据。

步骤1如果在FreeBSD上启用,则禁用Sendmail

我们需要使用sysrc命令来安全地编辑系统rc文件。
让我们禁用sendmail,运行:

## Make sure sendmail service stopped for Postfix ##
# service sendmail stop
## Disable sendmail service specific ##
# sysrc sendmail_enable="NO"
# sysrc sendmail_submit_enable="NO"
# sysrcsendmail_outbound_enable="NO"
# sysrc sendmail_msp_queue_enable="NO"

还要禁用/删除sendmail服务器服务特定的cronjobs /

# vi /etc/periodic.conf

追加/修改如下:

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

保存并关闭文件。

步骤2安装postfix

运行以下pkg命令以在FreeBSD Unix云服务器上安装Postfix MTA:

# pkg update
# pkg upgrade
# pkg search postfix
## filter sasl specific postifx package using the grep command ##
# pkg search postfix | grep sasl
## Install it ##
# pkg install postfix-sasl

在FreeBSD启动时启用后缀:

# sysrc postfix_enable="YES"
postfix_enable:  -> YES

确保在/usr/local/etc/mail/mailer.conf文件中激活Postfix,如下所示。
使用mkdir命令创建一个新目录:

# mkdir -p /usr/local/etc/mail

使用install命令安装文件:

# install -m 0644 /usr/local/share/postfix/mailer.conf.postfix /usr/local/etc/mail/mailer.conf

步骤3为Amazon SES配置postfix

让我们看看如何使用基于Amazon SES for FreeBSD的smarthost将Postfix配置为传出MTA。
首先,设置SES区域:

# I am using US West (Oregon) 
# Feel free to replace MTA as per your AWS region 
SES_MTA="email-smtp.us-west-2.amazonaws.com"

接下来运行postconf命令以使用Amazon SES配置Postfix:

postconf -e "relayhost = [${SES_MTA}]:587" \
"smtp_sasl_auth_enable = yes" \
"smtp_sasl_security_options = noanonymous" \
"smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd" \
"smtp_use_tls = yes" \
"smtp_tls_security_level = encrypt" \
"smtp_tls_note_starttls_offer = yes"

为Postfix MTA设置Amazon/AWS SES USERNAME和PASSWORD

使用文本编辑器(例如NA命令/vim命令)编辑/usr/local/etc/postfix/sasl_passwd,执行:

# vim /usr/local/etc/postfix/sasl_passwd

追加(替换AWS IAM/SES提供的SMTP_USER和SMTP_PASSWORD):

[email-smtp.us-west-2.amazonaws.com]:587 SMTP_USER:SMTP_PASSWORD

保存并关闭文件。
首先使用chmod命令保护文件安全,然后创建一个新数据库:

# chmod -v 0600 /usr/local/etc/postfix/sasl_passwd
`/usr/local/etc/postfix/sasl_passw`

在Linux/Unix Shell提示符下,执行以下postmap命令以创建用于MTA凭据的哈希表数据库:

# postmap -v hash:/usr/local/etc/postfix/sasl_passwd
postmap: name_mask: ipv4
postmap: name_mask: host
postmap: inet_addr_local: configured 3 IPv4 addresses
postmap: been_here: 127.0.0.1/32: 0
postmap: been_here: 192.168.2.236/32: 0
postmap: been_here: 10.8.0.2/32: 0
postmap: mynetworks_core: 127.0.0.1/32 192.168.2.236/32 10.8.0.2/32 
postmap: open hash /usr/local/etc/postfix/sasl_passwd
postmap: Compiled against Berkeley DB version 1

配置CA证书路径以进行验证

Postfix服务器需要找到CA证书。
因此,要验证Amazon SES服务器证书,请运行:

# postconf -e 'smtp_tls_CAfile = /etc/ssl/cert.pem'

启动Postfix服务

使用服务命令:

# service postfix start
# service postfix status
postfix is running as pid 15935.

请参阅Postfix日志文件

使用cat命令/tail命令:

# tail -f /var/log/maillog

步骤4在FreeBSD服务器上测试Amazon SES与Postfix的集成

使用sendmail命令,如下所示:

sendmail -f [email protected] [email protected]
From:  <[email protected]>
Subject: Postfix email server integration with Amazon SES
This message was sent using Amazon SES on my FreeBSD Unix server
I hope this works out