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 Software Centerアイコンをクリックするか、以下を使用して端末から:
Sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
これらの行を/etc/postfix/main.cf
に追加してsasl-authを有効にします
# 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 [email protected]: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
による 'permission denied' bug を回避する必要があるかもしれません。
ほとんどの場合、これでうまくいくはずです。ただし、一部の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が送信メールを送信できるようになります。
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 <[email protected]>
password <password>
from <[email protected]>
syslog LOG_MAIL
「<」と「>」内のすべてで表される構成データを置き換える必要があります(これらを含む、削除します)。ホスト/ユーザー名/パスワードには、メールプロバイダーを介してメールを送信するための通常の資格情報を使用します。
PHPにそれを使用するように伝えます
Sudo vi /etc/php5/Apache2/php.ini
この単一行を追加します。
sendmail_path = /usr/bin/msmtp -t
簡単な修正である必要があります。実際のメール送信を行うPostfixをインストールするだけです。
Sudo apt-get install postfix
いくつかのセットアップの質問をする必要があるので、ターミナル(ソフトウェアセンターではなく)から実行する必要があります。すべてのデフォルト(ローカルのみなど)をそのまま使用するようにしてください。
これは古い質問であり、上記の価値のある回答がありますが、私は自分の環境にexim
が必要でした。また、最初にsendmailがインストールされていることを確認してください($ which sendmail
-/ usr/sbin/sendmailのようなものが返されるはずです)。 linode.com で良いガイドを見つけましたが、要点は次のとおりです。
apt-get install exim4-daemon-light mailutils
に続く:
dpkg-reconfigure exim4-config
インタラクティブなエディターが表示されます。
グレートアンサー 、con-f-use。
「ダミーのGmailアカウント」について追加することが1つあります。
安全性の低いアプリケーションを許可するようにGmailアカウントを設定する必要があるため、これを強くお勧めします。 https://www.google.com/settings/u/0/security/lesssecureapps それ以外の場合は、 /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
私が使用したリンクは次のとおりです。 buntuでGmail SMTPを使用するようにPostfixを設定| EasyEngine
うまくいけば、これで誰かが毛包を少し節約できます...
Dima L。 によって提供されるソリューションが、システムにとって最も簡単で軽量な方法であることがわかりました。
設定をより明確にするための追加です。 /etc/ssmtp/ssmtp.conf
ファイルでhostname
にコメントする必要があります。サンプル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
[email protected]
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