Задача: Задействовать аккаунт Gmail (или Google Apps for Domain) для отправки почты с сайта под управлением виртуальной машины Битрикс.
Решение простое:
Cоздать файл /home/bitrix/.msmtprc со следующим содержимым:
account default
logfile /home/bitrix/.msmtp.log
host smtp.gmail.com
port 587
from <логин>@gmail.com
auth on
user <логин>
password <пароль>
tls on
tls_starttls on
tls_certcheck off |
Далее, выполняем (ниже распишу зачем это необходимо):
ln /home/bitrix/.msmtprc /root/.msmtprc
chmod 0600 /home/bitrix/.msmtprc |
Всё. Дело сделано. Для проверки можете послать себе проверочное сообщение с сервера:
php -r "mail('test@email.com', 'Test', 'Test');" |
Решение подробное: (задействуем стандартный инструментарий VMBitrix)
Подключаемся к машине по ssh под учётной записью root:
ssh root@<ip-адрес vmbitrix> |
После ввода пароля (по-умолчанию, - bitrix. Меняйте!) попадаем на стартовый экран:
Bitrix virtual appliance version '1.0.1.5'
To manage your appliance please browse to https://<ip-адрес vmbitrix>:5480
Zend control panel is disabled
To manage Bitrix please browse to https://<ip-адрес vmbitrix> or http://<ip-адрес vmbitrix>
Available actions:
0. Virtual appliance information
1. Change root password
2. Get a new IP address via DHCP
3. Assign a new IP address (manual)
4. Mail sending system parameters
5. Set Bitrix working protocol(s): HTTPS only
6. Enable ZendServerCE control panel
7. Change bitrix password
8. Virtual server reboot
9. Virtual server shutdown
10.Quit to shell
Type a number and press ENTER |
Вводим 4, тем самым выбирая пункт "Mail sending system parameters". Появляется приглашение ввести "SMTP server name". Вводим данные по шагам:
=======================================
Mail sending subsystem setting
=======================================
SMTP server name: smtp.gmail.com
SMTP port (press ENTER to leave default value, SMTP port = 25): 587
Default sender address: <мой логин>@gmail.com
Is SMTP authorization required?
1) Yes
2) No
#? 1
Username: <мой логин>
Password: <мой пароль>
=======================================
Current SMTP authorization parameters
=======================================
SMTP server: smtp.gmail.com
SMTP port: 587
Default sender address: <мой логин>@gmail.com
Is SMTP authorization required?: Yes
Username: <мой логин>
Password: <мой пароль>
=======================================
Save changes?
1) Yes
2) No
#? 1
|
Внимание! Если вы хотите использовать почту Google Apps for Domain, то вместо <мой логин> используйте полное название почтового ящика, например <мой логин>@my_domain.ru.
После выполнения этих действий создастся (или перепишется) файл /home/bitrix/.msmtprc в котором будут прописаны введённые в предыдущем шаге данные. Но почта работать не будет. Для окончательной настройки перезаходим на VMBitrix под учётной записью bitrix:
ssh bitrix@<ip-адрес vmbitrix> |
После ввода пароля (по-умолчанию, - bitrix. Меняйте!) выполняем команды:
echo "tls on" >> /home/bitrix/.msmtprc
echo "tls_starttls on" >> /home/bitrix/.msmtprc
echo "tls_certcheck off" >> /home/bitrix/.msmtprc |
Можно просто дописать в конец файла /home/bitrix/.msmtprc (для тех, кто знает про vim и иже с ним) следующий текст:
tls on
tls_starttls on
tls_certcheck off |
Это настройки TLS, необходимые для работы с почтовыми серверами Google.
Что бы не заморачиваться с загрузкой и установкой сертификата, мы выключили его проверку опцией "tls_certcheck off". Подключить его к настройкам можно позже.
Наконец, нам необходимо в домашней папке суперпользователя (root) создать симлинк на файл "/home/bitrix/.msmtprc". Дело в том, что при отправке почты с сайта настройки берутся из"/root/.msmtprc", а конфигуратор "Mail sending system parameters" пишет в "/home/bitrix/.msmtprc". Стандартный функционал настройки параметров отправки почты просто не работает на VMBitrix 1.1.15 без этого симлинка. Так же, убедимся что права на файл конфигурации MSMTP равны 600:
ssh root@<ip-адрес vmbitrix>
...
ln /home/bitrix/.msmtprc /root/.msmtprc
chmod 0600 /home/bitrix/.msmtprc |
Теперь проверим нашу конфигурацию в работе:
php -r "mail('test@email.com', 'Test', 'Test');" |
Вместо test@email.com, естественно, введите email на который хотите получить тестовое письмо с сервера. Если не приходит, - загляните в "Спам".