Linux lnmpの下でmailを使ってメールを送ることができない2つの解決方法
Linuxシステムはlnmp環境を構成した後、mail関数がメールを送信できないという問題が発生しましたが、この問題に遭遇したらどのように解決すればいいのでしょうか。実は2つの方法があります。1つはsendmailコンポーネントではなくpostfixを使って、具体的には編集者に聞いてみましょう。
yum install sendmail
2.次のコマンドを使用してphp-fpmプロセスを再起動します。/etc/init.d/php-fpm restart
3.sendmailが正常に動作しているかどうかを検出/etc/init.d/sendmail status
runningを実行していると表示されたらいいです。
使用可能なコマンド
/etc/init.d/sendmail start(sendmail起動)
/etc/init.d/sendmail stop(sendmailを閉じる)
/etc/init.d/sendmail restart(sendmailを再起動)
4.phpを設定します。ini、sendmailの絶対パスを記入コマンドを使用してphpの編集を開きます。ini
vi /usr/local/php/etc/php.ini
入力?sendmail_path検索ロケーション(またはsendmail_pathを手動でジャンプ)では、デフォルトは次のコードです。
;sendmail_path =
iを押して編集に入り、この行を
sendmail_path = /usr/sbin/sendmail -t –i
Escキーを押して編集を終了し、入力:wq保存終了
5.php-fpmプロセスの再起動/etc/init.d/php-fpm restart
これで成功しました。心配ならphpファイルをmailと名付けてください。phpは、次のコードを使用してテストできます。
《?php
$txt = “hello,you are a good boy!”;
//以下のメールアドレスをあなたの
$mail = ‘[email protected]’;
//メール送信
mail($mail, “My subject”, $txt);
echo ‘message was sent!’;
?》
Webサイトのルートディレクトリに保存してアップロードし、ブラウザで実行します。
http://mail.php
その时、あなたのメールボックスはメールを受け取ることができるはずですが、基本的には迷惑メールの中にあります。注意して見てください。メールが届かない場合は、操作中に正常で、sendmailを再起動したりphpを再起動したりする木があります。一般的には、普通にメールを受け取ることができます。
もちろん、機能は実現しましたが、上のテストコードでテストしたとき、メールを送るのに成功したのは遅くて遅くて、何十秒も1分もかかります。そして私がブログでコメントを発表したり返信したりするのも異常に遅く、ユーザーが待っている心理的な期限を超えています。この効率を最適化する必要があります。そうしないと、この機能を切り落とすしかありません。
ネット上の方法は多くて、このファイルを修正するのはまたそのファイルを修正するので、面倒だと感じて、そこで操作の最も少ない修正を探して、それから成功しました。
変更/etc/hosts、変更前
127.0.0.1 localhost.localdomain localhost
変更
127.0.0.1 localhost.localdomain localhostホスト名
ホスト名を表示するコマンドはhostnameです。
変更が完了したらsendmailを再起動します
service sendmail restart
方法2 sendmailを使わずにpostfixでメールを送ってみるlnmp環境がインストールされてから、lnmpの下でmail関数がメールを送信できないという問題は依然として発生しています。ここではsendmailを送信として使用することをお勧めしません。理由は効率が低く、速度が遅いからです。
yum remove sendmail
それからPostfixをインストールし始めました。これはsendmailに比べて効率が高く、送信速度が速く、メモリが低いので、今のサーバー送信の第一選択と言えます。もちろんsmtpもいいですね。それも間違いありませんが、個人的な趣味は、私はサーバー送信の簡単さが好きです。
Postfixのインストール
yum install postfix
デフォルトMTAをPostfixに変更:
/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix
用事が終わったら、MTAをPostfixに変更したかどうかをもう一度チェックします。
alternatives --display mta
Postfixを設定し、viはmainを編集します。cf
vi /etc/postfix/main.cf
開くと、前の#を削除して、次の項目を見つけて構成します。
myhostname = mail.2zzt.com
mydomain = 2zzt.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.100.10/28, 127.0.0.0/8
relay_domains =
home_mailbox = Maildir/
viオンライン編集が好きではないので、mainを直接ダウンロードすることができます。cfはサーバの/etc/postfix/mainにアップロードする.cfを置き換えましょう
Postfixの検出と起動
service postfix status
//起動していない場合は、次のコマンドを実行します。
service postfix start
起動の設定
chkconfig postfix on
ここまでPostfixはOKですが、phpを手に入れました。inでsendmailの絶対パスを設定!
コマンドを使用してphpの編集を開きます。ini
vi /usr/local/php/etc/php.ini
入力?sendmail_path検索ロケーション(またはsendmail_pathを手動でジャンプ)では、デフォルトは次のコードです。
;sendmail_path =
iを押して編集に入り、この行を
sendmail_path = /usr/sbin/sendmail -t -i
Escキーを押して編集を終了し、入力:wq保存終了
php-fpmプロセスの再起動
/etc/init.d/php-fpm restart
Linux lnmpではmail関数でメールを送信できない解決法を紹介します。sendmailは効率が低く、時間がもったいないので、postfixでメールを送信することをお勧めします。