Я установил Ubuntu 11.04, LAMP с помощью tasksel.
Я нахожу, что PHP mail()
не работает.
Я полагаю, мне нужно включить его или что-то в этом роде? Как мне это сделать?
Я установил Ubuntu 11.04, LAMP с помощью tasksel.
Я нахожу, что PHP mail()
не работает.
Я полагаю, мне нужно включить его или что-то в этом роде? Как мне это сделать?
Как уже отмечалось, postfix был бы излишним, если вам просто нужно отправлять электронные письма с php во время разработки приложений на вашем домашнем компьютере.
Я лично использую очень простой и легкий пакет ssmtp. Он будет использовать любой smtp-сервер для отправки исходящих электронных писем.Установите его, запустив:
sudo apt-get install ssmtp
Затем отредактируйте /etc/ssmtp/ssmtp.conf
файл, закомментируйте существующую строку mailhub и добавьте следующие строки (этот пример предназначен для smtp-сервера gmail):
mailhub=smtp.gmail.com:587UseSTARTTLS=YESAuthUser=<YOUR-EMAIL>@gmail.comAuthPass=<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:
Требования
Для того чтобы функции почты были доступны, PHP требует установленной и работающей системы электронной почты. Используемая программа определяется настройками конфигурации в файле php.ini.
Это означает, что вам нужно установить какой-то почтовый сервер и настроить php для его использования. Обычно этот почтовый сервер является постфиксным в Ubuntu. Однако - если сторона php, которую вы кодируете, в конечном итоге будет сохранена на стороне службы хостинга (например, xmission), почтовый сервер, скорее всего, уже будет установлен там. В этом случае просто протестируйте свой сайт онлайн, а не локально.
Если вам нужно протестировать его в вашей собственной системе или вы хотите разместить его на своем собственном домашнем сервере, тогда продолжайте:
Установка: постфикс /
sudo apt-get install postfix
Во время процесса вас спросят, в каком режиме вы хотите установить postfix. Существует четыре возможных режима:
Остальные параметры установки зависят от вашего выбора этой общей конфигурации.
Скорее всего, вы выберете спутниковую установку. Это означает, что почта будет отправляться с использованием внешнего поставщика. В качестве smtp-сервера (сервера исходящей почты) вам затем нужно будет указать smtp ваших поставщиков. Остальные варианты говорят сами за себя.
Большинство smtp-серверов требуют аутентификации по паролю для отправки почты. Так что postfix нужно будет знать этот пароль. Также необходимо учитывать такие вещи, как шифрование (которое вам придется поискать в Google). Вот как вы настраиваете postfix с помощью аутентификации по паролю (sasl):
Устанавливать libsasl2-модули и sasl2-бункер
щелкнув по значкам Центра программного обеспечения или из терминала с помощью:
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 требуют определенного адреса в качестве отправителя или шифрования.
Связанный: ГРУША::Почта интерфейс также может представлять для вас интерес.
Gmail (и, возможно, другим сервисам) может не понравиться, что вы пытаетесь отправить почту таким образом, поскольку по их стандартам это может быть сочтено небезопасным и заблокирует вашу попытку, т.Е. на экране ничего не произойдет или где-то весь процесс заблокирует вашу аутентификацию. Также ваш POP3 должен быть включен.
Чтобы противостоять этому, смотрите здесь. (Если вы хотите быть в безопасности, создайте фиктивную учетную запись Gmail)
Для отправки почты PHP требуется SMTP-клиент. Вы могли бы установить полнофункциональный агент передачи почты (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 ontls_starttls ontls_trust_file /etc/ssl/certs/ca-certificates.crt# Set up a default account's settings.account defaulthost <smtp.example.net>port 587auth onuser <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
Должно быть простое решение. Вам просто нужно установить 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
который приведет вас к интерактивному редактору.
Отличный ответ, постоянное использование.
Мне нужно добавить кое-что о "фиктивной учетной записи gmail".:
Это настоятельно рекомендуется, поскольку вам необходимо настроить свою учетную запись 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
Вот ссылка, которую я использовал : Настройте Postfix для использования Gmail SMTP в Ubuntu | EasyEngine
Надеюсь, это спасет кому-то несколько волосяных фолликулов...
Я нашел решения, предоставленные Дима Л. это самый простой и легкий способ доступа к системе.
Просто небольшое дополнение для большей ясности в настройке. Вы должны прокомментировать 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.commailhub=smtp.yourdomain.comUseSTARTTLS=YESAuthUser=mail@yourdomain.comAuthPass=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: addressFromLineOverride=YES
Это просто и легко отправить из вашего gmail. Send E-mail From Localhost on Ubuntu with PHP - Kvcodes