taskselを使用してUbuntu 11.04、LAMPをインストールしました。
PHP mail()
が機能しないことがわかりました。
私はそれか何かを有効にする必要があると思いますか?それ、どうやったら出来るの?
taskselを使用してUbuntu 11.04、LAMPをインストールしました。
PHP mail()
が機能しないことがわかりました。
私はそれか何かを有効にする必要があると思いますか?それ、どうやったら出来るの?
回答:
phpのメールマニュアルから:
必要条件
メール機能を使用できるようにするには、PHPにインストール済みの稼働中の電子メールシステムが必要です。使用するプログラムは、php.iniファイルの構成設定によって定義されます。
つまり、何らかのメールサーバーをインストールし、それを使用するようにphpを構成する必要があります。通常、このメールサーバーはUbuntuの接尾辞です。ただし、コーディングしているPHP側が最終的にホスティングサービス側(xmissionなど)に保存される場合、メールサーバーはほとんどの場合既にそこにインストールされています。その場合は、ローカルではなくオンラインでサイトをテストするだけです。
独自のシステムでテストする必要がある場合、または独自のホームサーバーでホストする必要がある場合は、次の手順に進みます。
インストール:postfix / sudo apt-get install postfix
プロセス中に、どのモードでpostfixをインストールするか尋ねられます。次の4つのモードがあります。
残りのインストールオプションは、この一般的な構成の選択に依存します。
ほとんどの場合、サテライトインストールを選択します。つまり、メールは外部プロバイダーを使用して送信されます。smtp-server(送信メールサーバー)として、プロバイダーのsmtpを指定する必要があります。残りのオプションは自明です。
ほとんどのsmtpサーバーでは、メールを送信するためにパスワード認証が必要です。したがって、postfixはそのパスワードを知る必要があります。また、考慮すべき暗号化などがあります(グーグルで検索する必要があります)。これは、パスワード認証(sasl)を使用してpostfixを構成する方法です。
以下を使用して 、ソフトウェアセンターアイコンをクリックするか、ターミナルからlibsasl2-modulesおよび sasl2-bin をインストールします 。
sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
次の行を追加してsasl-authを有効にします /etc/postfix/main.cf
# add to /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noplaintext noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
次の/etc/postfix/sasl_password
ような行でファイルを作成します。
smtp.gmail.com USERNAME@gmail.com:USERPASSWORD
実際のパスワード、ユーザー名、およびSMTPアドレスを置き換えます。
後置記号を更新:
sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password
sudo postmap hash:/etc/postfix/sasl_password
sudo postmap /etc/postfix/sender_canonical
sudo /etc/init.d/postfix restart
あなたは回避する必要がある場合がありますバグを「許可が拒否された」によってchown postfix:postfix /etc/postfix
事前に。
ほとんどの場合、これでうまくいくはずです。ただし、一部のsmtpプロバイダーでは、送信者または暗号化として特定のアドレスが必要です。
関連:PEAR :: Mailインターフェースも興味があるかもしれません。
Gmail(およびおそらく他のサービス)は、標準で安全でないとみなされる可能性があるため、この方法でメールを送信しようとすることを好まない場合があります。あなたの認証。また、POP3を有効にする必要があります。
それに対抗するには、こちらをご覧ください。(安全のために、ダミーのGmailアカウントを作成します)
既に述べたように、自宅のコンピューターでアプリケーションを開発しているときにphpからメールを送信するだけであれば、postfixは過剰になります。
私は個人的に非常にシンプルで軽量なパッケージssmtpを使用しています。smtpサーバーを使用して送信メールを送信します。次を実行してインストールします:
sudo apt-get install ssmtp
次に/etc/ssmtp/ssmtp.conf
、ファイルを編集し、既存のメールハブの行をコメントアウトして、次の行を追加します(この例はgmail smtpサーバー用です)。
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>
(Gmailのユーザー名とパスワードを入力します。もちろん、他のSMTPサーバーを使用できます)。
php.iniが正しいことを確認してくださいsendmail_path
。次のようになります。
sendmail_path = /usr/sbin/sendmail -t
(@ dima-lと@ omar-sabicのコメントから:ssmtp
インストールがを/usr/sbin/sendmail
指すシンボリックリンクを作成する必要があるため、ここで指定する必要はありませんssmtp
。そうでない場合は指定する必要がありますsendmail_path = /usr/sbin/ssmtp -t
)
Apacheをリロードすると、PHPが送信メールを送信できるようになります。
sendmail_path = /usr/sbin/ssmtp -t
。これは、おかげで働いていた
/usr/sbin/sendmail
、ssmtpを正しく指すシンボリックリンクを作成する必要があります。だから、使用しては、sendmail_path = /usr/sbin/sendmail -t
同様に動作するはずです
ssmtp
(いくつかの有用な注意事項が見つかりました):DebianでPHPメールを設定する方法 -この質問+このリンクはプログラムの設定に役立ちました。
FromLineOverride=YES
、次のエラーを回避するために、次の行を追加する必要がありました550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHPでは、メールを送信するためにSMTPクライアントが必要です。この機能を果たすために、Postfixのようなフル機能のメール転送エージェント(MTA)をインストールすることもできますが、PHPを介してメールを送信するだけの場合はやり過ぎです。代わりに、msmtpをインストールしてください。軽量で、設定がはるかに簡単です。
msmtpをインストールする
sudo apt-get install msmtp-mta ca-certificates
構成する
新しい構成ファイルを作成します。
sudo vi /etc/msmtprc
...次の構成情報を使用します。
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <username@example.net>
password <password>
from <address-to-receive-bounces@example.net>
syslog LOG_MAIL
「<」および「>」内のすべてで表される構成データを置き換える必要があります(これらを含めて、削除します)。ホスト/ユーザー名/パスワードには、メールプロバイダーを介してメールを送信するための通常の資格情報を使用します。
PHPに使用するように指示する
sudo vi /etc/php5/apache2/php.ini
この単一行を追加します。
sendmail_path = /usr/bin/msmtp -t
cat <<EOF | msmtp <receiver@test.com> Subject: test This is a test! EOF
これは古い質問であり、上記の価値のある答えがありますが、私exim
は自分の環境に必要でした。また、sendmailが最初にインストールされていることを確認してください($ which sendmail
--usr / sbin / sendmailのようなものが返されるはずです)。linode.comで良いガイドを見つけましたが、要点は次のとおりです。
apt-get install exim4-daemon-light mailutils
に続く:
dpkg-reconfigure exim4-config
インタラクティブなエディターが表示されます。
素晴らしい答え、コンフユーズ。
「ダミーのGmailアカウント」について追加することが1つあります。
安全性の低いアプリケーションを許可するようにGmailアカウントを設定する必要があるため、これを強くお勧めします:https : //www.google.com/settings/u/0/security/lesssecureapps
それ以外の場合は、「Webブラウザを使用してログインしてください」/var/log/mail.log
ファイルにもう一度入力してください」というエラーが表示されます。
また、ルート証明書をgmail smtpサーバーに送信しない限り、タイムアウトエラーが発生することがわかりました。これをする:
sudo nano /etc/postfix/main.cf
ファイルの最後に以下を追加します
smtp_tls_CAfile = /etc/postfix/cacert.pem
次に、thawteルート証明書をcacert.pem
ファイルにコピーします。
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
ここに私が使用したリンクがあります:UbuntuでGmail SMTPを使用するようにPostfixを構成する| EasyEngine
うまくいけば、これで誰かが毛包を少し節約できます...
Dima L.が提供するソリューションは、システムにとって最も簡単で軽量な方法であることがわかりました。
設定をより明確にするための追加です。ファイルにコメントする必要hostname
があり/etc/ssmtp/ssmtp.conf
ます。サンプルssmtp.conf
ファイルは次のとおりです。
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
AuthUser=mail@yourdomain.com
AuthPass=YOUREMAILPASSWORD
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
#hostname=
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES