Отправляем письма с помощью sendmail(+Postfix).

Если сразу что-то не сделаешь, то точно не сделаешь. Так что по горячим следам – sendmail.
Вообще, у кого-то, вероятно работает всё сразу(или кто-то что-то настраивал, но не рассказал;) У меня, как всегда, не работало. Но, опять же, благодаря кому-то(спасибо, Ваня:), определилось с большой степенью вероятности, что проблема не в запросах, которыми я письмо отправить пытаюсь, а в настройках. Ну а дальше поиск – первый результат, показавшийся мне разумным, был про настройку postfix’а. Конечно, я тут же отправилась настраивать его=)
Сам пост с настройкой http://hints.macworld.com/article.php?story=20081217161612647
Продублирую всё равно у себя, ибо, как оно бывает, оригинал может оказаться недоступным(так я в выходные пирог испечь пыталась, когда сайт с рецептом в самый нужный момент решил меня порадовать,  отобразив 502 код ошибки)

Открываем на редактирование(я использую vi, в режим редактирования переходим с помощью клавиши i, а выходим esc) /etc/postfix/main.cf и в конце файла дописываем:
relayhost = smtp.yourisp.com # (+ можно указать порт smtp.yourisp.com:587)
smtp_sasl_auth_enable = yes
smtp_use_tls = yes
smtp_enforce_tls = yes
smtp_sasl_security_options =
smtp_sasl_tls_security_options =
smtp_sasl_tls_verified_security_options =
smtp_tls_loglevel = 2 # optional if you wan to see what’s going on with the TLS negotiation in /var/log/mail.log
smtp_sasl_password_maps = hash:/etc/postfix/smtp_sasl_passwords
smtp_tls_per_site = hash:/etc/postfix/smtp_tls_sites
tls_random_source = dev:/dev/urandom
Сохраняется всё командой :wq!
Теперь создаем /etc/postfix/smtp_sasl_passwords со следующим содержимым:
smtp.yourisp.com username:password
И создаем /etc/postfix/smtp_tls_sites таким:
smtp.yourisp.com MUST_NOPEERMATCH
Теперь выполняем след. команды:
$ cd /etc/postfix
$ chmod go-rx smtp_sasl_passwords
$ postmap smtp_sasl_passwords
$ postmap smtp_tls_sites
Ну вот, можно проверить, получилось ли что-нибудь, например, так:
echo “Hello” | mail -s “Test” you@domain.com
А так можно посмотреть логи:
tail -f /var/log/mail.log

Итак, казалось бы после выполнения предыдущих пунктов должно всё заработать, по крайней мере я рассчитывала на это очень. Но, конечно, нет) А всё почему: 1. всегда проверяйте, что ваш макбук подключен к сети, и вайфай, как всегда не отвалился(моему не повезло с этим)
2. если сконфигурировал postfix , да вообще любой сервис – убедись, что он запущен.
Думаю, понятно, что у меня были за проблемы=)Восстановив подключение к сети и запустив постфикс, письма я отправила, но ключевое не то, что отправила, а то, что они дошли.
Ну, понятное дело, что если мы настроили зачем-то себе сервер, да еще и отправляем письма таким вот способом, мало просто отправить какое-то абстрактное письмо.
Так что теперь часть про парочку команд sendmail, которыми пользовалась я:
1. printf “subject”| sendmail mymail@test.ru <test.rtf – тут я прикладываю файл, из которого сформируется description письма(файлы: у меня так и не дошли руки разобраться с кодировкой, а  с ней неладное, ввиду того, что эта неприятность меня не блокировала)
2.  Чтобы был в письме красивый адрес отправителя добавляем опцию –f: printf “Subject: test” | sendmail -f mymail@test.ru mymail@test.ru ( тут еще и без описания)
3. Еще можно отправить письмо так : echo “oololo” | sendmail mymail@test.ru ( с телом, но без темы)
4. И вот так  (echo “Subject: subject”; echo “body”)| sendmail mymail@test.ru – скобки тут нужны, да
5. Добавить кого-либо в копию  письма также можно через echo(если мне кто-нибудь поведает более красивый или правильный, да или просто другой способ, буду только рада)
6.И заголовки я  добавляю через echo(и опять же открыт вопрос про альтернативные варианты): (echo “Subject: testMailHeader to”; echo “CC:test@test.ru”;echo “To:test1@test.ru”; echo “Message-Id:<1111111111111@test.test.ru>”; echo “X-Test-test:test”) | sendmail -f mymail@test.ru -t  test1@test.ru.ru

Да, и кстати, не стоит забывать смотреть логи, в них столько всего полезного бывает;)
P.S. Пост я начинала со словами “по горячим следам”, ага, как же, с момента написания основной части, до момента, когда я дописала пункт 6, прошло…тадаам. 17 дней. Такие дела.

You may also like

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *