web-dev-qa-db-ja.com

CentOSサーバーでメールを送信する方法

CentOS 5.5を使用して、ささやかなホームサーバーを構築しました。サーバーが私のGmailアカウントや、cronジョブなどのさまざまなメールアカウントにメールを送信できるようにしたいのですが。また、PHP私がサーバー上で実行/開発しているアプリケーションでも同様に電子メールを送信できるようになっているとよいでしょう。あるいは、サーバーがmailコマンドを介して電子メールを送信できるようにすることもできます。

Linuxサーバーをメールサーバーとして設定したり、sendmailを設定したりすることについてGoogleの検索結果が100万件あることは知っています。しかし、それらは私が探しているものではないようです...少なくともそうは思いません。他のクライアントがメールやそのような複雑なものを送信するために接続できるいくつかの企業サーバーをセットアップしようとはしていません。

私は私のものについてのメールを私のサーバーに送って欲しいだけです。それは簡単なはずです...誰かが私を正しい方向に向けることができますか?

[〜#〜]更新[〜#〜]

以下のユーザーのリクエストに従って、私はこのコマンドを試しました:

/bin/mail -s "My Subject" "[email protected]" < /home/john/test

エラーなどはありません。しかし、メールが受信トレイに表示されることはありません。これが私のmaillogです

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<[email protected]>, size=11209, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: [email protected], ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

手がかりはありますか?

21
Jake Wilson

/bin/mail -s "Enter Subject Line here" -a/home/.../whateverFileYouWantAttached"you@YourEmailAddress"< /home/me/textBody.letter

上記のコマンドを試してください:)

13
Rajat

簡単な答え:

sendmailのセットアップ 。それはあなたのディストリビューションに依存しますが、これはまったく難しいことではありません。特定の質問がある場合は、質問してください。

複雑な答え:

これを質問しているのなら、おそらくまだ銃をジャンプしてsendmailjustttをセットアップするべきではありません。

あなたはいくつかのことを考慮に入れる必要があります:

  1. ISPは電子メールの送信を許可していますか?サーバー以外のIP範囲にいる可能性があるため、多くの電子メールプロバイダーが完全にブロックします。

  2. 差出人アドレスとしてどのアドレスを使用しますか?このアドレス(SPF、DomainKeysなど)から送信する権限がありますか?そうでない場合、メッセージは電子メールプロバイダーによってスパムとして検出される可能性があります。

  3. 最後に、確かに重要なことですが、本当に独自のSMTPサービスを使用する必要がありますか? ISPを使用するだけでは不十分な理由は何ですか?

昔は、SMTPサーバーをセットアップすることは大したことではありませんでした。現在、設定は簡単かもしれませんが、実際に人のメールボックスにメッセージを取得するように設定することは困難です。

6

上記の提案のいずれも自宅の私のCentOSシステムでは機能していないことを確認できます。1つではありません。迷惑です!

次に、CentOS 6.4を実行している新しいAmazonインスタンスで同じことを試しました。デフォルトの設定でも、問題なくメールを送信できます。私がしなければならなかったすべては

yum install mailx

その後、上記のメール送信は魅力のように機能します。 Jakubがやろうとしていることには、sendmailなどの複雑な機能をインストールする必要はありません。

ここには私の設定可能なファイアウォールがないので、それは私のISPとの何らかの設定でなければなりません。

3
Jay Versluis

次のことを行う必要があります。

  1. Sudo yum install postfix telnet mailx
  2. Sudo /etc/init.d/postfix start
  3. Sudo vi /etc/postfix/main.cf
  4. 変化する mydestination = mydomain.com, localhost.mydomain.com, localhost

    mydestination = localhost.mydomain.com, localhost

コマンドラインから以下を使用してテストします

  1. メールアドレス@ example.com件名:
  2. Demoslice.com Testからのテストメール
  3. メールの本文。
  4. .

No. 4-電子メールの本文を完了するための完全な停止があります。これでメールが届くはずです。

上記により、MTA(Mail Transfer Agent)が機能するようになります。より高度な設定に役立ついくつかのリソースは、CentOSの電子メール設定に関する slicehost's 記事(CentOSおよび電子メールセクションにスクロールダウン)にあります。ホスト名、RDNS(リバースDNS)、およびSPF(送信者ポリシーフレームワーク)レコードをDNSプロバイダーに正しく設定することを検討する必要があります。

2
seanl

/etc/mail.rcを変更して、smtpアドレスを設定しましたか?

1
PiNoYBoY82

Postfixは正しい方向に進んでいますが、Gmailがあなたが少なくともリモートで合法であると考えない限り(たとえば、スパマーではありません)、メールが配信される可能性はほとんどありません。

プロセスはここに投稿するには少し複雑ですが、これを実現する(そしてメールを配信する)ために私が見つけた最も簡単な方法は、独自のGmailアカウントをトランスポートとして使用して、postfixをリレーとして設定することです。

私が使用するプロセスの詳細は次のとおりです。

http://rs20.mine.nu/w/2011/07/gmail-as-relay-Host-in-postfix/

(sendmailのように)自己署名証明書を設定する必要はなく、私の経験では、それは機能します!

0
GeoSword

Sendmailで動作するはずですが、postfixをインストールして設定ファイルにmydestinationを設定してみてください。

0
Caterpillar

簡単な解決策はsendmailではなく、sendEmailです。

http://caspian.dotconf.net/menu/Software/SendEmail/#download

到達可能なSMTPサーバーを介して送信するように簡単に設定できるPerlスクリプト-私はそれを常にGmailアカウントを介して送信するために使用しますが、通常のSMTP over TCP onポート25など.

私は通常、sendEmail Perlスクリプトを自分のGmail用シェルスクリプトでラップします。

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    [email protected]
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "[email protected]" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "[email protected]" >> $1
                echo "pwd=my-password" >> $1
                echo "A Shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
0
Stabledog