FreeBSD使用Postfix MTA配置AWS SES
如何在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