AWS で新しくウェブサーバーを構築し、メール送信の CGI を動かしたい。
その際、SES を使うのではなく、既に EC2 で構築済みのメールサーバーを経由して送りたい。
環境
メールサーバー
- CentOS 7
- Postfix
ウェブサーバー
- AmazonLinux
※メールサーバーとウェブサーバーは AWS の同じプライベート空間にある状態。
メールサーバー側の設定
AWS の同じプライベート空間のサーバーをアクセス許可
AWS の同じプライベート空間のサーバーからならアクセスを受け付けるように Postfix の main.cf を設定する。
# 同じプライベート空間のサーバーを mynetworks に追加
mynetworks = 172.31.0.0/16
# mynetworks をアクセス許可に追加
smtpd_recipient_restrictions = permit_mynetworks※設定変更後は postfix を再起動する。
Web サーバ側の設定
mailx のインストール
コマンドラインでメールを送るため、mailx をインストールする。
yum install mailxRelay Host を設定する
Amazon Linux では sendmail-cf が入っていなかったので、インストールする。
yum install sendmail-cf/etc/mail/sendmail.mc を編集して、relay host を設定する。
define(`SMART_HOST', `[メールサーバのプライベートIPアドレス]')dnl
以下をコメント(dnl)にした
dnl define(`confAUTH_REALM', `mail')dnl
dnl define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
dnl define(`confSERVER_KEY', `/etc/pki/tls/private/sendmail.key')dnl
dnl define(`confTLS_SRV_OPTIONS', `V')dnl
下記を追加
MASQUERADE_AS(`xxxxx.jp')dnl
FEATURE(masquerade_envelope)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnlsendmail.cf を生成する。
cd /etc/mail/
make sendmail.cfSendmail を再起動する。
systemctl restart sendmail
systemctl enable sendmail設定の確認
sendmail -bv xxxxx@xxxxx.jp
(out) xxxxx@xxxxx.jp... deliverable: mailer relay, host [メールサーバのプライベートIPアドレス], user xxxxx@xxxxx.jp


コメント