

AWSのEC2を用いてホームページを作成しているのですが、そのホームページにお問い合わせ(メールフォーム)のページを作成しようと考えています。  
そこで、こちらのフリーのメールフォームを用いようと頑張っているのですが、どうもうまくいきません。  
<http://www.synck.com/contents/download/cgi-perl/mailform_jcode.html>

EC2のほうでSMTPのポートを解放し、CGIの動作環境を整え、メールフォームを使用するためのJcodeを導入し、  
フォームから送信ボタンを押して、「送信できました」という画面までは表示されるようになったのですが、メールが届きませんでした。

sendmail がうまく動いていないのかな？と考え、EC2にsshでログインし

[code]

    $ sudo sendmail <送信先のメールアドレス>
    
[/code]

と、メールを送信したところ、メールが届きませんでした。

[code]

    $ sudo service sendmail status 
    
[/code]

で、sendmailが動作していることは確認しました。

ですので、まずはsendmailがEC2で正しく動かせるように、いろいろ行っているのですが、  
メールを送信できませんでした。  
どうすれば、正しくsendmailを動作させることができるでしょうか。

また、メールフォームからメールを送信できない他の理由は考えられるでしょうか。

追記(2016/05/19 18:38)=============================================  
「サブミッションポートを使う」ということでセキュリティグループに  
EC2サーバのほうで インバウンド カスタムTCP(587) を設定し、  
sendmail.mc内の

[code]

    DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
    
[/code]

のコメントアウトを解除してサブミッションポートを使用するようにしました。

しかし、seamailの動作テストを以下のようにして

[code]

    $ sudo sendmail ***@softbank.ne.jp
    $ From:support@<ドメイン>
    $ To:***@softbank.ne.jp
    $ Subject:テスト送信
    $
    $ テスト送信です
    $ .
    
[/code]

/var/spool/mail/ec2-user を確認したところ送信失敗していました。

[code]

    ...(略)
    Arrival-Date: Mon, 16 May 2016 09:25:09 GMT
    
    Final-Recipient: RFC822; \*\*\*@softbank.ne.jp
    Action: failed
    Status: 5.1.1
    Remote-MTA: DNS; [127.0.0.1]
    Diagnostic-Code: SMTP; 550 5.1.1 <\*\*\*@softbank.ne.jp>... User unknown
    Last-Attempt-Date: Mon, 16 May 2016 09:25:45 GMT
    
    --u4G9P9UN003320.\*/ip-\*-\*-\*-\*.ap-northeast-1.compute.internal
    Content-Type: message/rfc822
    Content-Transfer-Encoding: 8bit
    ...(略)
    
[/code]

さらに、User unknown とあったので  
local-host-names のファイルに ドメインを追加したのですが、うまく動作しませんでした。


CC BY-SA 3.0
2016-05-15T21:46:12.710
24885
2016-05-16T10:51:42.960
2016-05-16T09:39:16.557
13404
13404
question
aws sendmail amazon-ec2
EC2で運営しているサイトのメールフォームからsendmailを利用したメール送信ができない


TCP/25はブロックされてるのでサブミッションポート(TCP/587)を使ってください。

Amazon SES
を使う方法もあります。アマゾンのスライドショーが参考になると思いますのでご紹介しておきます→[AWSからのメール送信](http://www.slideshare.net/AmazonWebServicesJapan/aws-30934799)

**迷惑メールにならない為の対策**

  1. サーバーによっては 接続元が実在するか DNS でチェックする場合があります。 
    * DNS ドメインの MX レコードが有るかどうか
    * ehlo (helo) で名乗ったホスト名を DNS クエリで正引きできるか
    * IP を逆引きして ehlo (helo) で名乗ったホストと一致するかどうか
    * MX と A レコード は Route53 を使うか、既にお使いの DNS で設定してください。
    * 逆引きは AWS に申請が必用です [申請フォーム](https://aws.amazon.com/forms/ec2-email-limit-rdns-request)
  2. 加えて AWS では次の対応を推奨しています。SES と Rotue53 を使うと 設定は自動化できるので面倒であればSESとRoute53を使ってください。 
    * SPF(Sender Policy Framework)/Sender ID を設定する
    * DKIM(DomainKeys Identified Mail) を設定する
  3. RBL に 現在使用中のEIPが登録されてないかチェックする 
    * EIP は使い回しなので 過去の使用者が スパマーで IP がブラックリストに乗っている可能性があります。RBL に登録されていないか検索して 載っていれば EIP を再度取得すると良いでしょう。
    * [Request to Remove Email Sending Limitations](https://aws.amazon.com/forms/ec2-email-limit-rdns-request) で RBL からの登録解除の申請もできるようです。
  4. 携帯キャリアによっては メール本文をチェックしています。本文が1行だけのメールは ブロックされることもあります。

SMTP サーバーを立てるのは色々と面倒ですので、送信専用であれば SES と Route53 を使って EC2 の sendmail は SES
にリレーするのがオススメです。


CC BY-SA 3.0
2016-05-16T03:06:18.123
24893
2016-05-16T10:51:42.960
2016-05-16T10:51:42.960
5008
5008
24885
answer


「送信できました」という画面が表示されるということは、おそらく、メールフォームと同じホストで稼働する sendmail
を使ってメールを送ろうとして、メールキュー (/var/spool/clientmqueue/, /var/spool/mqueue/)
には入るけれど、そこから外部に送信できない状況ではないかと思います。

以下を確認ください。

  * sendmail サービスは起動していますか？
  * メールキュー (/var/spool/clientmqueue/, /var/spool/mqueue/) にファイルはありませんか？
  * メールログ (/var/log/mailog, /var/log/mail.log など)には何かエラーは出ていませんか？

OS、sendmail のバージョンと sendmail の設定、ログがあると、何かわかるかもしれません。


CC BY-SA 3.0
2016-05-16T09:46:48.397
24901
2016-05-16T09:46:48.397
4603
24885
answer