Я установил Ubuntu 11.04, ЛАМПА с помощью tasksel.
Я нахожу это PHP mail()
не работает.
Я предполагаю, что должен включить его или что-то? Как я делаю это?
Из почтового руководства php:
Требования
Чтобы почтовые функции были доступны, PHP требует установленной и рабочей почтовой системы. Программа, которая будет использоваться, определяется параметрами конфигурации в файле php.ini.
Это означает, что необходимо установить своего рода mailserver и настроить php для использования его. Обычно этот mailserver является постфиксом в Ubuntu. Однако - если php сторона Вы кодируете, будет в конечном счете сохранен на стороне услуги хостинга (например, xmission), почтовый сервер будет, скорее всего, уже установлен там. В этом случае просто протестируйте свой сайт онлайн вместо локально.
Если необходимо протестировать его в собственной системе или средний для хостинга его на собственном сервере дома, чем возобновляют:
Установка: постфикс / sudo apt-get install postfix
Во время процесса Вас спросят, в котором режиме Вы хотите установленный постфикс. Существует четыре возможных режима:
Остальная часть опций установки зависит от Вашего выбора этой общей конфигурации.
Скорее всего, Вы выберете спутниковую установку. Это означает, что почта будет отправлена с помощью поставщика экстерна. Как smtp-сервер (сервер исходящей почты) необходимо будет затем указать поставщиков smtp. Остальная часть опций сам объяснительная.
Большинство smtp-серверов требует, чтобы аутентификация по паролю отправила почту. Таким образом, постфикс должен будет знать тот пароль. Также существуют вещи как шифрование для рассмотрения (который необходимо будет погуглить). Это - то, как Вы настраиваете постфикс с помощью аутентификации по паролю (sasl):
libsasl2-модули установки и sasl2-мусорное-ведро путем нажатия на значки Software Center или от терминального использования:
sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
Включите sasl-автору путем добавления этих строк к /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),
Должна быть простая фиксация. Просто необходимо установить Постфикс, который делает фактическое пользование электронной почтой.
sudo apt-get install postfix
Вы хотите выполнить это от терминала (а не центр программного обеспечения), потому что он должен спросить Вас несколько вопросов об установке. Необходимо быть находкой, чтобы просто принять все значения по умолчанию (локально-единственный, и т.д.).
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 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
Как уже отмечено, постфикс был бы излишеством, если просто необходимо послать электронные письма от php при разработке приложений на домашнем компьютере.
Я лично использую очень простой и легкий пакет ssmtp. Это будет использовать любой smtp сервер для отправки исходящих электронных писем. Установите его путем выполнения:
sudo apt-get install ssmtp
Затем редактирование /etc/ssmtp/ssmtp.conf
файл, прокомментируйте существующую mailhub строку и добавьте следующие строки (этим примером является для 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
)
Перезагрузите апача, и Ваш php должен смочь послать исходящие электронные письма теперь.
Это - старый вопрос и выше существуют достойные ответы, но мне было нужно 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
Вот ссылка, которую я использовал: Настройте Постфикс для Использования Gmail SMTP на Ubuntu | 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