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


21

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

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

私は自分のサーバーに何かに関するメールを送ってほしいだけです。簡単なように思えます...誰かが私を正しい方向に向けることができますか?

更新

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

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

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

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, 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)

手がかりはありますか?


1
やってみました?どのような問題が発生していますか?
イグナシオバスケス-アブラムス

何を探しているのか分かりません。Googleで検索し、Linuxメールサーバーのセットアップのチュートリアルを参照します。それは私が欲しいものですか?
ジェイクウィルソン

これがまだ回答されていないことに気付いた。好奇心から、あなたはそれを理解しましたか?マシンがPBLにリストされているかどうかを確認しましたか?spamhaus.org/pbl
ベルミンフェルナンデス

動作しませんでした。以下のポスターは、単に1つの電子メールを送信する必要はないことを意味するため、sendmailのインストールプロセスはまだ行っていません。私の小さなホームサーバーがスパムリストに載っていることは想像できません。これまでにメールを送信したこともないからです。
ジェイクウィルソン

私もへの送信上記の単純なコマンドI試みた10minutemail.comの同じ結果と同じログメッセージを電子メールアカウント
ジェイク・ウィルソン

回答:


13

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

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


1
+1メールを送信するのにデスクトップにメールサーバーが必要ないのと同じように、メールを送信するのにシステムにメールサーバーは必要ありません。メールプログラムは問題ありません。
dunxd

1
私はこのコマンドを試しましたが、うまくいきませんでした。エラーも何もありません。Gmailの受信トレイにメールが表示されません。私のメールログが言うことを上で見てください
ジェイクウィルソン

だから...これが私にとってうまくいかない理由は何ですか?メールを受信して​​いない理由を判断するには、どのログを調べる必要がありますか?
ジェイクウィルソン

6

簡単な答え:

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

複雑な答え:

これを求めているのであれば、おそらく、単に銃を飛ばしてsendmail justttをセットアップするべきではないでしょう。

次のことを考慮する必要があります。

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

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

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

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


3

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

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

yum install mailx

その後、上記のようにメールを送信することは魅力的です。Jakubがやろうとしていることのために、sendmailのような合併症をインストールする必要はありません。

ここで私の終わりに設定可能なファイアウォールを持っていないので、それは私のISPでの設定でなければなりません。


2

以下を行う必要があります。

  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. mail address@example.com件名:
  2. demoslice.com Testからのテストメール
  3. メールの本文。
  4. .

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

上記により、動作するMTA(メール転送エージェント)が得られます。より高度な設定に役立つリソースの一部は、CentOSの電子メール設定に関するスライスホストの記事にあります(CentOSおよび電子メールセクションまでスクロールします)。DNSプロバイダーでホスト名、RDNS(リバースDNS)、およびSPF(送信者ポリシーフレームワーク)レコードを正しく設定することを実際に検討する必要があります。


これは素晴らしい答えです-短くて動作します。
モンクジャック

1

/etc/mail.rcを修正してsmtpアドレスを設定しましたか?


1
の内容/etc/mail.rcは、set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path Via私が何を提案しているのですか?
ジェイクウィルソン

0

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


0

Postfixは正しい軌道に乗っていますが、Gmailが少なくともリモートで合法であると思わない限り(例えば、あなたはスパマーではありません)、メールを配信することはほとんどありません。

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

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

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

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


0

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

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

どんなSMTPサーバーを経由しても送信できるように簡単に設定できるperlスクリプト-私はそれを使用して常にGmailアカウントを介して送信しますが、ポート25のTCPを介した通常のSMTPなどでも機能します。

通常、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:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < 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 "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.