AWS で新しく Web サーバーを構築し、メール送信の CGI を動かしたい。
その際、SES を使うのではなく、既に EC2 で構築済みのメールサーバーを経由して送りたい。
環境
メールサーバー
- CentOS 7
- Postfix
Web サーバー
- AmazonLinux
※メールサーバーと Web サーバーは AWS の同じプライベート空間にある状態。
メールサーバー側の設定
AWS の同じプライベート空間のサーバーをアクセス許可
AWS の同じプライベート空間のサーバーからならアクセスを受け付けるように Postfix の main.cf を設定する。
1 2 3 4 5 | # 同じプライベート空間のサーバーを mynetworks に追加 mynetworks = 172.31.0.0/16 # mynetworks をアクセス許可に追加 smtpd_recipient_restrictions = permit_mynetworks |
※設定変更後は postfix を再起動する。
Web サーバ側の設定
mailx のインストール
コマンドラインでメールを送るため、mailx をインストールする。
1 | # yum install mailx |
Relay Host を設定する
Amazon Linux では sendmail-cf が入っていなかったので、インストールする。
1 | # yum install sendmail-cf |
/etc/mail/sendmail.mc を編集して、relay host を設定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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)dnl |
sendmail.cf を生成する。
1 2 | # cd /etc/mail/ # make sendmail.cf |
sendmail を再起動する
1 2 | # systemctl restart sendmail # systemctl enable sendmail |
設定の確認
1 2 | # sendmail -bv xxxxx@xxxxx.jp xxxxx@xxxxx.jp... deliverable: mailer relay, host [メールサーバのプライベートIPアドレス], user xxxxx@xxxxx.jp |
コメント