Debian.pro

Блог для пользователей и администраторов Debian


Debian, exim4. Настраиваем SMTP сервер для нашего веб-сервера.

В данной статье я рассмотрю один из самых быстрых способов настройки smtp-демона для нашего вебсервера. Если вам нужен сервер, который ещё и должен принимать почту — проходите мимо. Эта статья подойдёт для тех, кто принимает почту гуглом или яндексом (на своём домене, само собой), но не хочет дергать их SMTP серверы, чтобы слать письма.

Внимание! Этот мануал описывает то, как настроить SMTP сервер (сервер отправки писем), отправить письмо через который можно только с того же сервера (то есть с localhost). При этом не будет требоваться никакой авторизации! Будьте внимательны.

lamp-server:~# aptitude install exim4
lamp-server:~# dpkg-reconfigure exim4-config

Отвечаем на вопросы:
General type of mail configuration: internet site; mail is sent and received directly using SMTP
System mail name: желательно вписываем сюда обратную зону для вашего IP интерфейса eth0. Либо просто full hostname сервера (mail.debian.pro, например)
IP-addresses to listen on for incoming SMTP connections: 127.0.0.1
Other destinations for which mail is accepted: оставляем пустым. Это список локальных доменов — нам он не нужен.
Domains to relay mail for: если не знаете зачем оно, то оставляйте пустое поле
Machines to relay mail for: аналогично, если не знаем — оставляем пустым
Keep number of DNS-queries minimal (Dial-on-Demand)? No
Delivery method for local mail: неважно что
Split configuration into small files? Yes

Ещё могут спросить, кому перенаправлять почту локального админа. Впишите свою почту, например — туда будут отправляться письма от крона.

Теперь вы можете отправлять письма при помощи апача (чуть позже опишу как настроить) или командой вида echo «Testing Exim» | mail -s Test vlad@debian.pro

Ну и да — не стоит спамить ;)
Так же не используйте этот метод для тех случаев, когда доступ к серверу по ssh (или даже по ftp в каталоги, доступные по http) имеют доступ люди, которые могут начать спамить.

Как ограничить список ящиков, которым можно отправлять письма с сервера — читаем здесь.


Комментарии (25):

  1. Большое спасибо за пост. Всё настроил.

  2. Dmirty :

    Спасибо, настроил, протестировал — все отсылается.

    Только вот проблема. в /etc/crontab:

    MAILTO=***@gmail.com

    Письма не приходят почему то =( Не подскажете куда копать?

  3. Гм. Что именно вы в /etc/crontab написали?

  4. Evgeny :

    a mozhno li kakto dobavit ssl podpis k pismam
    chtoby pismo uhodjashie s servaka avtomatom podpisyvalos kljuchem usera?
    i kak opcija kodirovalos

  5. А exim тут при чем? Подпись в клиентах или скриптах, которые шлют письма, добавляется.

  6. someone :

    А как настроить авторизацию на сервере через imap или pop3 ?

  7. По одному из кучи соответствующих мануалов в сети.
    Вы вообще статью читали? или просто так в рандомное окошко вопрос написали?

  8. UNIm96 :

    IP-addresses to listen on for incoming SMTP connections: 127.0.0.1 (нам же не нужен open relay?)

    Если я оставлю это поле пустым смогу ли я принимать почту и при этом не спамить(не быть open relay)?

    И надо ли для отсутствия open relay сделать так:

    Other destinations for which mail is accepted: mydomain.org; smtp.mydomain.org; mail.mydomain.org
    Domains to relay mail for: пусто
    Machines to relay mail for: пусто

  9. >Этот мануал описывает то, как настроить SMTP сервер (сервер отправки писем), отправить письмо через который можно только с того же сервера (то есть с localhost). При этом не будет требоваться никакой авторизации для «доверенных» доменов! Будьте внимательны.

  10. UNIm96 :

    То есть надо в exim4.conf.template прописать метод аутентификации и тогда все будет в ажуре?

  11. noname :

    это работает на asw free.
    в спам письмо не идет после `mail example@gmail.com`
    но и адрес отправителя бредовый получается
    а вот это
    echo «testing» | /usr/sbin/sendmail -f real@gmail.com fake@gmail.com
    идет сразу лесом в папку спам
    а вот
    echo «testing» | /usr/sbin/sendmail -f real@gmail.com real2@gmail.com
    не показывает от кого письмо, но и не отправляет в спам

    А вопрос простой, можно ли сделать сервер просто рассылки без получения, собственно, почты?
    Можно тыкнуть ссылкой ну или просто сказать можно или нет

  12. Вы спрашиваете у админов, как правильно спамить? Хорошая шутка =)

  13. noname :

    хм, ну если подразумевать под спамом, письмо с линком для подтверждения почты, то — да.
    А отправка письма в папку спам, для меня, просто индикатор насколько все правильно настроено.
    Но я так понял, что проще и надежнее погуглить…

  14. Погуглить что?
    Письма по этому мануалу отправляются вполне себе. Проблем с ним (если преследовать изначальную цель — smtp для сайта) — никто не испытывал.
    Вы же пытаетесь послать через exim какую-то чушь. Подменяете адрес.
    Нахрена?

  15. zloyded :

    Жду второй части! Как обещано!

  16. @zloyded
    А что я во второй части обещал-то?
    Тут вроде всё, разве что это полезно почитать — https://debian.pro/1139

  17. отправленные письма ворачиваються обратно(как сделать аунтификацию):
    This message was created automatically by mail delivery software.

    A message that you sent could not be delivered to one or more of its
    recipients. This is a permanent error. The following address(es) failed:

    jeka.bodrov@gmail.com
    SMTP error from remote mail server after end of data:
    host gmail-smtp-in.l.google.com [2a00:1450:4001:c02::1a]:
    550-5.7.1 [2a01:4f8:140:33e6::2] Our system has detected that this message does
    550-5.7.1 not meet IPv6 sending guidelines regarding PTR records and
    550-5.7.1 authentication. Please review
    550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error for more
    550 5.7.1 information. q43si2671663eeo.75 — gsmtp

    —— This is a copy of the message, including all the headers. ——

    Return-path:
    Received: from www-data by imbars with local (Exim 4.80)
    (envelope-from )
    id 1WDt8b-00056i-5L
    for jeka.bodrov@gmail.com; Thu, 13 Feb 2014 11:03:21 +0100
    To: =?utf-8?B?0J/QtdGC0Y8g0JjQstCw0L3QvtCy?=
    Subject: =?utf-8?B?0JLQsNGIINC30LDQutCw0LfRgyDihJYyMDAwMDAwMDIg0L/QtdGA0LXQstC10LTRkdC9INCyINGB0L7RgdGC0L7Rj9C90LjQtSDCq9C80L7QtNC10YDQsNGG0LjRjyDQt9Cw0LrQsNC30LDCuw==?=
    X-PHP-Originating-Script: 33:__adminhtml.php
    From: =?utf-8?Q?=D0=9E=D1=82=D0=B4=D0=B5=D0=BB=20=D0=BF=D1=80=D0=BE=D0=B4=D0=B0=D0=B6=20=20imbars.ru?=
    Date: Thu, 13 Feb 2014 14:03:21 +0400
    Content-Type: text/html; charset=utf-8
    Content-Transfer-Encoding: quoted-printable
    Content-Disposition: inline
    MIME-Version: 1.0
    Message-Id:

  18. > not meet IPv6 sending guidelines regarding PTR records and
    Вот здесь проблема. Приводите в соответствие AAAA, A записи, hostname и PTR-записи для ipv4/ipv6

  19. Здравствуйте, можете подсказать где сменить PTR запись. У меня физический сервер за роутером в DMZ с выделеным IP ростелекома. На яндекс почта через раз в спам попадает. На гугл вообще не приходит.
    В письмах на яндексе видно что отсылает их некий 85-192-172-70.dsl.esoo.ru. Записи DNS вот http://pastebin.com/cPZe5ggD.
    Домен на ukraine.com.ua. Спасибо

  20. и еще пролема в том, что 1 письмо exim шлет очень долго, примерно секунд 20. У меня вебсервер на регистрации или отправке заказов выдает таймаут. С чем может быть связано?

  21. Ростелеком тебе менять PTR не будет.
    Тебе куда-то сюда — https://debian.pro/1128

  22. Михаил :

    Ну с ними я вроде как договорился, пообещали их техподдержки перезвонить. А где посомтреть причину по которой гугл не берет письма, вот как пару комментов выше?

  23. Ещё раз повторяю:
    «Тебе куда-то сюда — https://debian.pro/1128»

    В твоей ситуации бестолку пытаться настроить exim напрямую.

  24. Добрый день. Может подскажите как посмотреть сформировавшуюся очередь из писем, чтобы понять что отправляется. Может лог какой можно настроить? Забиваются письма и exim4 жестко грузит процессор

  25. > посмотреть сформировавшуюся очередь из писем
    exiqgrep

    > Может лог какой можно настроить?
    /var/log/exim/mainlog + google -=> php mail log

Написать комментарий