Настройка почты
Да, я понимаю, что сейчас это выглядит, как бложик сисадмина, но раз я этим уже занимаюсь, нужно поделиться своим опытом — авось кому время сэкономлю.
Может вы заметили, что после переезда на свой сервер, по почте не приходило никаких уведомлений. Это потому, что почты еще не было. Нужно исправлять это недоразумение.

Я планирую как отправлять, так и принимать почту и не очень хочу заниматься все этой почтовой ерундой (подпись сообщений, антиспам), поэтому прием почты я оставлю яндексу. Благо, у них есть сервис "почта для домена".
Система передачи сообщений будет примерно такая:
mini_sendmail (chroot)->exim4 (localhost) -> яндекс -> адресат.
Идея в том, что в chroot'е находится маленькая статически собранная которая подменяет собой sendmail. Когда php отправляет почту, этак программка передает письмо для отправки exim'y, а тот уже отправляет письмо как считает нужным.
По большей части делать нужно то, что написано вот тут.
Естественно, оно сразу не заработало. Выдавало segmentation fault. Пропущу пару часов страданий и расскажу решение, начало makefile нужно переписать вот так:
После этого, добавляем в php.ini путь
Для проверки, создаем файлик mail.php
Запускаем его. Уряяяя, все работает.
Самое классное насколько теперь просто добавлять ящики, буквально в три клика:

Так как мой основной ящик — bsvi@narod.ru, я хочу, чтобы письма с bsvi@tqfp.org пересылались туда. И это тоже легко сделать, для этого в яндексе нужно зайти «Почта → Настройка → Сбор почты» и дописать вот такое:

Вуаля, теперь все валится в один ящик.
Может вы заметили, что после переезда на свой сервер, по почте не приходило никаких уведомлений. Это потому, что почты еще не было. Нужно исправлять это недоразумение.

Я планирую как отправлять, так и принимать почту и не очень хочу заниматься все этой почтовой ерундой (подпись сообщений, антиспам), поэтому прием почты я оставлю яндексу. Благо, у них есть сервис "почта для домена".
Система передачи сообщений будет примерно такая:
mini_sendmail (chroot)->exim4 (localhost) -> яндекс -> адресат.
Основной сервер
В качестве основного почтового сервера у меня стоит exim4 (стоял по умолчанию), ничего против него не имею, пусть так и остается. Итак, сначала настраиваем exim4. Я это делал по вот этой инструкции. Тут все просто и быстро.PHP email chroot
Так как у меня php находится за chroot'ом, c почтой возникло куча проблем. Начитавшись много всего, я выбрал решение на основе статически собранного mini_sendmail'а.Идея в том, что в chroot'е находится маленькая статически собранная которая подменяет собой sendmail. Когда php отправляет почту, этак программка передает письмо для отправки exim'y, а тот уже отправляет письмо как считает нужным.
По большей части делать нужно то, что написано вот тут.
Естественно, оно сразу не заработало. Выдавало segmentation fault. Пропущу пару часов страданий и расскажу решение, начало makefile нужно переписать вот так:
BINDIR =/usr/local/sbin
MANDIR =/usr/local/man
CC =gcc
CFLAGS =-Os
LDFLAGS =-g -static
LDLIBS =$(SYSV_LIBS)
После этого, добавляем в php.ini путь
sendmail_path = /usr/sbin/sendmail -t -i -f bsvi@tqfp.org
Для проверки, создаем файлик mail.php
<?php
var_dump(mail("bsvi@narod.ru", "PHP Test mail", "Hope this works! "));
?>
Запускаем его. Уряяяя, все работает.
Яндекс
Я держу основную свою почту на яндексе, поэтому буду им и пользоваться для сбора почты и в качесте web-интерфейса. Сообщаем о своем желании Яндексу, после чего заменяем MX и SPF записи в DNS. Естественно, нужно будет подождать часик, пока изменения дойдут до яндекса. Уря, все работает.Самое классное насколько теперь просто добавлять ящики, буквально в три клика:

Так как мой основной ящик — bsvi@narod.ru, я хочу, чтобы письма с bsvi@tqfp.org пересылались туда. И это тоже легко сделать, для этого в яндексе нужно зайти «Почта → Настройка → Сбор почты» и дописать вот такое:

Вуаля, теперь все валится в один ящик.
0 комментариев