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)
手がかりはありますか?
/bin/mail -s "Enter Subject Line here" -a
/home/.../whateverFileYouWantAttached
"you@YourEmailAddress"
< /home/me/textBody.letter
上記のコマンドを試してください:)
sendmailのセットアップ 。それはあなたのディストリビューションに依存しますが、これはまったく難しいことではありません。特定の質問がある場合は、質問してください。
これを質問しているのなら、おそらくまだ銃をジャンプしてsendmailjustttをセットアップするべきではありません。
あなたはいくつかのことを考慮に入れる必要があります:
ISPは電子メールの送信を許可していますか?サーバー以外のIP範囲にいる可能性があるため、多くの電子メールプロバイダーが完全にブロックします。
差出人アドレスとしてどのアドレスを使用しますか?このアドレス(SPF、DomainKeysなど)から送信する権限がありますか?そうでない場合、メッセージは電子メールプロバイダーによってスパムとして検出される可能性があります。
最後に、確かに重要なことですが、本当に独自のSMTPサービスを使用する必要がありますか? ISPを使用するだけでは不十分な理由は何ですか?
昔は、SMTPサーバーをセットアップすることは大したことではありませんでした。現在、設定は簡単かもしれませんが、実際に人のメールボックスにメッセージを取得するように設定することは困難です。
上記の提案のいずれも自宅の私のCentOSシステムでは機能していないことを確認できます。1つではありません。迷惑です!
次に、CentOS 6.4を実行している新しいAmazonインスタンスで同じことを試しました。デフォルトの設定でも、問題なくメールを送信できます。私がしなければならなかったすべては
yum install mailx
その後、上記のメール送信は魅力のように機能します。 Jakubがやろうとしていることには、sendmailなどの複雑な機能をインストールする必要はありません。
ここには私の設定可能なファイアウォールがないので、それは私のISPとの何らかの設定でなければなりません。
次のことを行う必要があります。
Sudo yum install postfix telnet mailx
Sudo /etc/init.d/postfix start
Sudo vi /etc/postfix/main.cf
変化する mydestination = mydomain.com, localhost.mydomain.com, localhost
に
mydestination = localhost.mydomain.com, localhost
コマンドラインから以下を使用してテストします
.
No. 4-電子メールの本文を完了するための完全な停止があります。これでメールが届くはずです。
上記により、MTA(Mail Transfer Agent)が機能するようになります。より高度な設定に役立ついくつかのリソースは、CentOSの電子メール設定に関する slicehost's 記事(CentOSおよび電子メールセクションにスクロールダウン)にあります。ホスト名、RDNS(リバースDNS)、およびSPF(送信者ポリシーフレームワーク)レコードをDNSプロバイダーに正しく設定することを検討する必要があります。
/etc/mail.rcを変更して、smtpアドレスを設定しましたか?
Postfixは正しい方向に進んでいますが、Gmailがあなたが少なくともリモートで合法であると考えない限り(たとえば、スパマーではありません)、メールが配信される可能性はほとんどありません。
プロセスはここに投稿するには少し複雑ですが、これを実現する(そしてメールを配信する)ために私が見つけた最も簡単な方法は、独自のGmailアカウントをトランスポートとして使用して、postfixをリレーとして設定することです。
私が使用するプロセスの詳細は次のとおりです。
http://rs20.mine.nu/w/2011/07/gmail-as-relay-Host-in-postfix/
(sendmailのように)自己署名証明書を設定する必要はなく、私の経験では、それは機能します!
Sendmailで動作するはずですが、postfixをインストールして設定ファイルにmydestinationを設定してみてください。
簡単な解決策は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