LAMP

’tag’

Отправка писем через localhost, LAMP и postfix в Ubuntu 14.04

Август 10, 2014

Ранее уже многократно пытался настроить sendmail на локалке (не путать с сервером, домен localhost) и на новой системе вновь решил это сделать и ничего не вышло. Сначала он у меня зависал надолго, но на этот раз удалось сделать, чтобы отрабатывал быстро, но отправлять он в итоге письма так и не стал, хотя статус вызова mail был true.

Конспектирую, так как описанные настройки postfix пришлось совмещать и все наконец-то заработало!

Вот код php скрипта:

<?php
try {
	echo ( int ) mail( 'mymail@yandex.ru', 'hello', 'message' );
} catch ( RuntimeException $e ) {
	print_r( $e );
}
?>

А вот результат (заголовки письма на почте):

Return-Path: <mailfrom@gmail.com>
Received: from yasamposebe.localdomain (ppp85-141-143-38.pppoe.mtu-net.ru. [85.141.143.38])
        by mx.google.com with ESMTPSA id f9sm13453063lbd.46.2014.08.10.05.29.58
        for <mailto@gmail.com>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Sun, 10 Aug 2014 05:29:58 -0700 (PDT)
Received: by yasamposebe.localdomain (Postfix, from userid 33)
	id 3F7022A41F4; Sun, 10 Aug 2014 16:29:58 +0400 (MSK)
To: mailto@gmail.com
Subject: hello
X-PHP-Originating-Script: 1000:index.php
Message-Id: <20140810122958.3F7022A41F4@yasamposebe.localdomain>
Date: Sun, 10 Aug 2014 16:29:58 +0400 (MSK)
From: mailfrom@gmail.com (www-data)

message

Воспользовался в сумме двумя инструкциями:

  1. http://onedev.net/post/277
  2. https://rtcamp.com/tutorials/linux/ubuntu-postfix-gmail-smtp/

Во 2-й не было того, что должно быть в 1-й и это очень важно. Если возникнет проблема и у меня о ней ни слова, открываем 2-ю ссылку, там нереальное количество комментариев.

Основной прикол в том, что как только сделал все по 1-й инструкции у меня отправка работать не стала.

Приступим.

Шаг 1

Выполняем в терминале:

sudo apt-get install postfix ca-certificates

Шаг 2

Правим или создаем следующий файл: /etc/postfix/mail.cf

Содержимое заменяем на:

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

Шаг 3

Создавать файлы transport и generic и генерить по ним db не нужно.

Шаг 4

Создаем файл: /etc/postfix/sasl_passwd

Вставляем в него:

[smtp.gmail.com]:587 USERNAME@gmail.com:PASSWORD

Шаг 5

Выставляем верные права:

sudo chmod 400 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Шаг 6 (микс)

Этот шаг по-моему ни на что не влияет и состоит из комбинаций к обоих ресурсов.

1) Выполняем:

ln -s /etc/ssl/certs/Equifax_Secure_CA.pem /etc/postfix/cacert.pem

2) Выполняем:

cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem

Кажется, что это должно защищать вашу почту от взломщиков, но не уверен и очень сильно.

Шаг 7

Все, перегружаем postfix:

sudo /etc/init.d/postfix reload

Шаг 8

Для настройки PHP открываем /etc/php5/apache2/php.ini и добавляем строчку (или редактируем):

sendmail_path = /usr/sbin/sendmail -t -i -f mailfrom@gmail.com

Итог

Выполняем мой скрипт и ничего не доходит. Смотрим логи:

tail /var/log/mail.log

и видим:

Aug 10 17:06:26 localhost postfix/qmgr[10887]: 1E8EE2A60F0: from=<mailfrom@gmail.com>, size=363, nrcpt=1 (queue active)
Aug 10 17:06:27 localhost postfix/smtp[10893]: 1E8EE2A60F0: to=<mailto@gmail.com>, relay=smtp.gmail.com[74.125.143.109]:587, delay=1.8, delays=0.08/0.01/0.79/0.94, dsn=2.0.0, status=sent (250 2.0.0 OK 1407675987 ok1sm13606396lbc.18 - gsmtp)
Aug 10 17:06:27 localhost postfix/qmgr[10887]: 1E8EE2A60F0: removed
Aug 10 17:08:33 localhost postfix/pickup[10886]: EA5C02A60F0: uid=33 from=<mailfrom@gmail.com>
Aug 10 17:08:33 localhost postfix/cleanup[10909]: EA5C02A60F0: message-id=<20140810130833.EA5C02A60F0@yasamposebe.localdomain>
Aug 10 17:08:34 localhost postfix/qmgr[10887]: EA5C02A60F0: from=<mailfrom@gmail.com>, size=363, nrcpt=1 (queue active)
Aug 10 17:08:34 localhost postfix/smtp[10911]: EA5C02A60F0: SASL authentication failed; server smtp.gmail.com[74.125.143.109] said: 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsqB?534-5.7.14 KhsSR6I87oK_C4TxS1NdQVQS0PzikND9qj70eQUKk8MeycvYLSVk3BUS0n1iw4_mpyZqQ4?534-5.7.14 3yMySUSy7AyIQTC_-H5OFkRu4_h9s-S-8lQfWUpmmMPQC5auCDcLZJoiShf7RbwUYPA3WN?534-5.7.14 kY8Q2WVTwMAFBLLK3I1w0DJYeWKL1NLJunjI0_j7fgGhZY1R37qD6c-kHtKUiv8WSWS0rB?534-5.7.14 s2GcHKw> Please log in via your web browser and then try again.?534-5.7.14 Learn more at?534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 xu8sm4583002lab.41 - gsmtp
Aug 10 17:08:35 localhost postfix/smtp[10911]: EA5C02A60F0: SASL authentication failed; server smtp.gmail.com[74.125.143.108] said: 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbtLc?534-5.7.14 31FFOiu5FqZ0Bfjx2r1ySB4Sk0YcmdfsVWH5-Gh9JYixVrhSegWVvaLeiv70vybEEbXYTa?534-5.7.14 LN9iG7Zj6lLE0CQyfj5ahIn_aBsjT--qNNkzx9XoJQwVNGkfL59w880vDElZemD3oxSaja?534-5.7.14 LqO_5fggvWCw2ol4D9_yOzlq1vtp69C5pD2n8tWOPkexG3hWHZMDaVVF8jn-loCGR1EbzY?534-5.7.14 v5j77eg> Please log in via your web browser and then try again.?534-5.7.14 Learn more at?534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 kz1sm4588917lab.11 - gsmtp
Aug 10 17:08:35 localhost postfix/smtp[10911]: connect to smtp.gmail.com[2a00:1450:4010:c04::6d]:587: Network is unreachable
Aug 10 17:08:35 localhost postfix/smtp[10911]: EA5C02A60F0: to=<mailto@gmail.com>, relay=none, delay=1.3, delays=0.11/0.01/1.2/0, dsn=4.4.1, status=deferred (connect to smtp.gmail.com[2a00:1450:4010:c04::6d]:587: Network is unreachable)

Вот мы и подошли к главному. Несмотря на все, пройти аутентификацию не получается. В добавок мы получаем на почту письмо от Google с темой "Ненадежным приложениям разрешен доступ к аккаунту Google". Переходим по ссылке и возможно подтверждаем наши действия, но это не помогает.

Решение - необходимо выполнить все шаги:

  1. переходим по ссылке и жмем "Продолжить": https://accounts.google.com/DisplayUnlockCaptcha
  2. переходим по ссылке и подтверждаем действия при необходимости: https://security.google.com/settings/security/activity
  3. главное, открываем вкладку "Безопасность" в профиле Google: https://www.google.com/settings/security - на панели "Доступ к аккаунту" жмем "Настройки" и выбираем "Включить".

После 3-го пункта повторяем отправку и все работает. Не уверен, что п. 3 безопасен, поэтому лучше его выключать в периоды, когда разработка не ведется и проверять отправку писем на localhost не требуется.

В завершение

Спасибо обоим авторам. Время идет и что-то может меняться. Уверен, что кому-то пригодится моя инструкция. В особенности мне самому, когда настанет время все переустанавливать.

Tags: , , , ,
Записано в Linux    |    Постоянная ссылка

Активация mod_rewrite в Ubuntu LAMP

Август 18, 2012

Открываем файл:

/etc/apache2/sites-available/default

Заменяем "AllowOverride None" на "AllowOverride All" для нужной директории.

Выполняем команды в терминале:

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

Теперь можно использовать файл .htaccess и директиву "RewriteEngine On".

Tags: , , ,
Записано в Joomla, Ubuntu    |    Постоянная ссылка

Установка phpDocumentor в Ubuntu 10 и связанные проблемы

Май 28, 2012

Если ранее PhpDocumentor не был установлен в Ubuntu 10, то проблем не возникнет.

Поиск в Интернете позволил мне найти очень хорошую статью на эту тему на английском:

Прежде установки самого phpDocumentor следует установить LAMP. Как это сделать хорошо написано в данной статье:

Установка LAMP

Приведу пример установки Apache + PHP 5 версии + MySQL + PhpMyAdmin. Далее команды терминала:

apt-get update
aptitude install apache2 php5 libapache2-mod-php5
aptitude install mysql-server mysql-client php5-mysql
apt-get install phpmyadmin

Если команды с префиксом "aptitude" не работают, то можно элементарно открыть Менеджер пакетов Synaptic и в ручную найти, отметить для установки и установить следующие компоненты:

  • apache2
  • php5
  • libapache2-mod-php5

После установить:

  • mysql-server
  • mysql-client
  • php5-mysql

И в завершение:

  • phpmyadmin

В процессе установки будет предложено задать пароль для MySQL и PhpMyAdmin, если не ошибаюсь. Желательно использовать один и тот же пароль в обоих случаях во избежание путаницы.

После открываем следующий файл:
/etc/apache2/apache2.conf

и в любое место вставляем строку:
Include /etc/phpmyadmin/apache.conf

Останавливаем и вновь запускаем Apache:

sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start

Можно пробовать открыть следующий адрес:

PhpMyAdmin доступен по адресу:

Установка phpDocumentor

Теперь что касается непосредственно установки phpDocumentor:

sudo apt-get install php-pear
sudo pear config-set data_dir /var/www
sudo pear install --alldeps PhpDocumentor

phpDocumentor установлен. Теперь осталось задать папку, где будут храниться папки документации:

sudo mkdir /var/www/PhpDocumentor-output
sudo chown www-data /var/www/PhpDocumentor-output

Документацию можно сформировать через Терминал:

phpdoc --output HTML:frames:DOM/earthli --directory /var/www/joomla17/ --target /var/www/PhpDocumentor-output/joomla17/ --title 'Joomla 1.7' --defaultpackagename 'Joomla' --defaultcategoryname 'Joomla' --parseprivate on --sourcecode on

Список параметров и описания к ним можно отобразить в Терминале с помощью команды:

phpdoc -h

Описания параметров и примеры использования phpDocumentor можно найти на этой странице:

Проблемы при установке phpDocumentor

Сегодня я уже сделал одну большую ошибку, решив установить phpDocumentor версии 2. Сломалась, как версия 1.4.4, так и 2 не стала работать.

Еще ранее я нечаянно удалил папку с phpDocumentor:
/var/www/PhpDocumentor

Если пробовать заново установить phpDocumentor по схеме, указанной выше, то ничего не получится. Для того, чтобы решить проблему сначала нужно скачать оригинальные файлы от версии 1.4.4:

На странице по ссылке нужно сверху нажать на ссылку "Download PhpDocumentor-1.4.4.zip". Затем распаковать архив на компьютере и перенести его в папку:
/var/www/PhpDocumentor

Если же была неудачная попытка установить phpDocumentor2, то необходимо:

  • удалить папки:
    • /var/www/PhpDocumentor
    • /usr/share/php/PhpDocumentor
    • /usr/share/php/PEAR
  • удалить файл:
    • /usr/bin/phpdoc

После этого через виртуальную машину Oracle VM VirtualBox или на другой компьютер установить Ubuntu 10 и поставить на него phpDocumentor 1.4.4. Затем скопировать папки и файл, который мы удалили ранее. Все должно работать.

Что касается phpDocumentor2, то более даже не буду пробовать его установить.

Изначально скачал phpDocumentor2 здесь:

Потом скопировал его в папку /var/www/phpDocumentor2. Затем запустил installer.php. Не помню, но вроде ничего не произошло.

Увидел рекомендации разработчиков по установке. Выполнил в Терминале 2 команды:

pear channel-discover pear.phpdoc.org
pear install phpdoc/phpDocumentor-alpha

После этого более ни одна из версий phpDocumentor не работала и пришлось все восстанавливать несколько часов.

Tags: , , ,
Записано в Ubuntu    |    Постоянная ссылка