Home » Linux » CentOS » Отправка почты через консоль с авторизацией в linux

Отправка почты через консоль с авторизацией в linux

Для того, чтобы быть в курсе всего, что происходит на сервере, помимо мониторинга, полезно следить за стандартными письмами, которые шлют различные сервисы. Я расскажу, как настроить на сервере отправку писем через стандартный postfix с авторизацией на стороннем smtp сервере. Так же эта настройка будет полезна для отправки почты через консоль linux с авторизацией по smtp.

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.

По-умолчанию, в минимальной установке дистрибутива CentOS 7 уже идет в комплекте почтовый сервер postfix. Его я и буду использовать. Стандартные настройки сервера не дают нормальных возможностей для отправки почты. Сделаем некоторые дополнительные действия.

Для начала, чтобы иметь возможность оперативно проверять отправку почты через консоль, установим программу mailx. Без нее при попытке отправить письмо в консоли, будете получать ошибку:

# mail
bash: mail: command not found

Для того, чтобы это исправить, устанавливаем mailx.

# yum install mailx

После этого можно отправлять со своего сервера сообщения во внешний мир, например вот так.

# df -h | mail -s "Disk usage" admin@mymail.ru

На почту улетит вывод команды df.

Отправка почты через консоль с авторизацией в linux

Но при стандартных настройках ваше письмо либо попадет в спам, либо вообще не будет принято сервером получателя, потому что на вашем сервере нет корректных настроек для отправки почты (dns записи, spf, dkim и т.д.). Чтобы почта нормально отправлялась, надо воспользоваться каким-то внешним почтовым сервером. Настроим postfix на отправку локальных писем через внешний сервер с авторизацией по smtp.

Я взял дефолтный конфиг postfix, очистил его от комментариев и пробелов, добавил в конец свои настройки.

# cat /etc/postfix/main.cf
## DEFAULT CONFIG BEGIN ######################
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = localhost
inet_protocols = all
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
## DEFAULT CONFIG END ######################

# Имя сервера, которое выводит команда hostname
myhostname = centos7-test.xs.local
# Здесь по логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель 
# фигурировало полное имя сервера, так удобнее разбирать служебные сообщения
mydomain = centos7-test.xs.local
mydestination = $myhostname
myorigin = $mydomain
# Адрес сервера, через который будем отправлять почту
relayhost = mailsrv.mymail.ru:25
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may

Создаем файл с информацией об имени пользователя и пароле для авторизации.

# mcedit /etc/postfix/sasl_passwd
mailsrv.mymail.ru:25 admin@mymail.ru:password

Создаем db файл.

# postmap /etc/postfix/sasl_passwd

Теперь можно перезапустить postfix и проверить работу.

# systemctl restart postfix

Отправляем тестовое письмо через консоль. Проверяем почтовый лог.

# tail -n 10 /var/log/maillog

Если у вас там будет похожая ошибка:

postfix/smtp[5420]: warning: SASL authentication failure: No worthy mechs found
postfix/smtp[5420]: 24762774C6: to=<admin@mymail.ru>, relay=mailsrv.mymail.ru[10.10.30.3]:25, delay=450, delays=450/0.03/0.02/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server mailsrv.mymail.ru[10.10.30.3]: no mechanism available)

То необходимо установить еще несколько пакетов:

# yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

После этого перезапускайте postfix и проверяйте отправку в консоли. Если все в порядке, то к стандартному алиасу для root в /etc/aliases, добавьте внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку.

Было:

#root: marc

Стало

root: root,admin@mymail.ru

Обновляем базу сертификатов:

# newaliases

На этом все. Теперь все письма, адресованные локальному root, например, отчеты от cron, будут дублироваться на внешний почтовый ящик, причем с отправкой через внешний нормальный почтовый сервер. Так что письма будут нормально доставляться, не попадая в спам (хотя не обязательно, есть еще эвристические фильтры). Теперь удобно использовать локальную отправку в скриптах, не задавая дополнительные параметры. Все уже настроено, можно использовать простую локальную доставку.

Онлайн курс Безопасность Linux

Если у вас есть желание детальнее разобраться в процессах настройки и обеспечения безопасности локальной и сетевой инфраструктуры, построенной на базе ОС Linux, рекомендую познакомиться с онлайн-курсом «Безопасность Linux» в OTUS. Обучение длится 3 месяца, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Программа курса разработана в виде серии практических воркшопов и ориентирована на подготовленных слушателей, уже обладающих знаниями и опытом в администрировании Linux. Чему научитесь:
  • Применять лучшие мировые практики и стандарты ИБ (Debian, RedHat, MitRE);
  • Использовать средства для обнаружения и эксплуатации уязвимостей в ОС Linux;
  • Устанавливать и конфигурировать сетевые системы обнаружения и предотвращения атак;
  • Работать с системами мониторинга и контейнеризации на базе Docker;
Проверьте себя на вступительном тесте и смотрите детальнее программу по .
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

53 комментария

  1. Аватар

    Здравствуйте. Для защиты реального IP сервера от ddos решил использовать DNS через облако от cloudflare.com, при этом столкнулся с проблемой — для нормальной работы почты для MX записей все равно приходится работать НЕ ЧЕРЕЗ облако, т.е. опять «светить» свой IP. Пробовал еще в этом направлении настроить отправку почты через внешний SMTP (mailgun) – почта заработала, все хорошо, — НО в заголовках отправляемых с сервера писем – все равно «светиться» мой реальный IP сервера. Единственным решением пока, наверное, остается отправка почты через API (чтобы внешний SMTP сервер был сервером – источником писем, без указаний на мой исходящий сервер). Но не знаю, как это реализовать – нет знаний. Нет ли (не предвидится ли) у Вас статьи на тему настройки почты на centos+posfix через внешний SMTP сервер ЧЕРЕЗ API этого SMTP сервера.

    • Zerox

      Почтовый сервер должен быть отдельно от web сайта, если его атакуют. Заголовками писем, генерируемыми на сайте, вы можете управлять. Удаляйте заголовки из писем. Даже если не можете это сделать с помощью изменения скрипта сайта, удалить лишний заголовок можно на почтовом сервере. Если он на postfix, то там это не сильно сложно.

      Все эти задачи не простые и решить их без опыта не получится. Надо либо разбираться, либо покупать защиту от ddos под ключ. Там специалисты точно подскажут, что делать. Но это стоит дорого.

      • Аватар

        К сожалению, пока не получилось удалить заголовки с IP в почте — пробовал через параметр header_checks и smtp_header_checks в файле main.cf, а также только для исходящей почте в файле master.cf.
        А по поводу отдельного почтового домена (поддомена) на другом IP — можно ли этот IP и соответственно почтовый домен (поддомен) сделать на том же сервере, или только отдельно (на другом сервере)?

        • Zerox

          Если почтовый сервер будет на том же сервере, где и web, то вы никак не скроете ip адрес. Это будет технически невозможно, так как в заголовках письма остаются все ip адреса, через которые прошло письмо. Ваш ip адрес будет прописывать в письме сервер, который от вас это письмо получит. Вы этим управлять не сможете.

          • Аватар

            А если почтовик будет на том же сервере, но на другом IP — все равно не скроются?

            • Zerox

              Если на другом ip, то может и можно скрыть. Но я не вижу смысла так заморачиваться. Для почтового сервера хватит виртуалки за 5 долларов. Какой смысл его размещать там же, где и сайт.

              • Аватар

                Т.е. все-таки (если попытаться сэкономить 4 доллара, купив вместо виртуалки, только дополнительный IP за 1 доллар ;-)), если на дополнительный IP повесить (A запись домена example.com), а на первом основном IP сервера оставить сам сервер, а именно почтовый поддомен mail.example.com с той же обратной зоной — mail.example.com – тут нет принципиальных ошибок?

                • Zerox

                  Принципиальных нет.

                • Аватар

                  Покупать только IP не имеет смысла.
                  Если Вы купите IP, а сам почтовый сервер будет расположен на том же сервере то будут DDOS’ить почтовый сервер и увидят что лег основной.
                  Купить сервер для почты можно и дешевле 4$, есть по 100р.
                  Самый простой вариант, разместите на нем скрипт на который будете отправлять методом POST адрес почты, тему и содержимое и используйте.

                  https://…../gate.php?to=….&subj=….&content=…

  2. Аватар

    Zerox, спасибо за детальные инструкции. (сам начинающий)
    1. К сожалению, не получается отправить/получить почту на email, помогите пож-та, что не так:
    __________
    main.cf

    mydomain = centos7main
    mydestination = $myhostname
    myorigin = $mydomain
    # Адрес сервера, через который будем отправлять почту
    relayhost = smtp.gmail.com:587
    smtp_use_tls = yes
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_tls_security_level = may
    header_checks = pcre:/etc/postfix/rewrite_subject
    _______________________
    aliases:

    #root: root,ааа@gmail.com

    ____________________
    sasl_passwd:

    smtp.gmail.com:587 ааа@gmail.com:pass

    ____________
    log:

    Aug  3 12:31:42 CentOS7Main postfix/cleanup[15851]: C621710CD96E: replace: header Subject: Disk usage from local; from= to=: Subject: Disk usage (from server.domain.tld)
    Aug  3 12:31:42 CentOS7Main postfix/cleanup[15851]: C621710CD96E: message-id=
    Aug  3 12:31:42 CentOS7Main postfix/qmgr[15784]: C621710CD96E: from=, size=1123, nrcpt=1 (queue active)
    Aug  3 12:31:42 CentOS7Main postfix/smtp[15853]: warning: database /etc/postfix/sasl_passwd.db is older than source file /etc/postfix/sasl_passwd
    Aug  3 12:31:43 CentOS7Main postfix/smtp[15853]: C621710CD96E: to=, relay=smtp.googlemail.com[74.125.131.16]:587, delay=0.4, delays=0.11/0.02/0.24/0.02, dsn=5.5.1, status=bounced (host smtp.googlemail.com[74.125.131.16] said: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1  https://support.google.com/mail/?p=WantAuthError u15sm15680959lje.89 - gsmtp (in reply to MAIL FROM command))
    Aug  3 12:31:43 CentOS7Main postfix/cleanup[15851]: 36FA710CD984: message-id=
    Aug  3 12:31:43 CentOS7Main postfix/bounce[15855]: C621710CD96E: sender non-delivery notification: 36FA710CD984
    Aug  3 12:31:43 CentOS7Main postfix/qmgr[15784]: 36FA710CD984: from=, size=3307, nrcpt=1 (queue active)
    Aug  3 12:31:43 CentOS7Main postfix/qmgr[15784]: C621710CD96E: removed
    Aug  3 12:31:43 CentOS7Main postfix/smtp[15856]: warning: database /etc/postfix/sasl_passwd.db is older than source file /etc/postfix/sasl_passwd
    Aug  3 12:31:43 CentOS7Main postfix/smtp[15856]: connect to smtp.googlemail.com[2a00:1450:4010:c0e::10]:587: Network is unreachable
    Aug  3 12:31:43 CentOS7Main postfix/smtp[15856]: 36FA710CD984: to=, relay=smtp.googlemail.com[74.125.131.16]:587, delay=0.31, delays=0.02/0.01/0.26/0.02, dsn=5.5.1, status=bounced (host smtp.googlemail.com[74.125.131.16] said: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1  https://support.google.com/mail/?p=WantAuthError h10sm13386091lfp.33 - gsmtp (in reply to MAIL FROM command))
    Aug  3 12:31:43 CentOS7Main postfix/qmgr[15784]: 36FA710CD984: removed
    Aug  3 12:33:00 CentOS7Main postfix/pickup[15783]: 1113A10CD96E: uid=0 from=
    Aug  3 12:33:00 CentOS7Main postfix/cleanup[15851]: 1113A10CD96E: replace: header Subject: Disk usage from local; from= to=: Subject: Disk usage (from server.domain.tld)
    Aug  3 12:33:00 CentOS7Main postfix/cleanup[15851]: 1113A10CD96E: message-id=
    Aug  3 12:33:00 CentOS7Main postfix/qmgr[15784]: 1113A10CD96E: from=, size=1113, nrcpt=1 (queue active)
    Aug  3 12:33:00 CentOS7Main postfix/smtp[15853]: connect to smtp.googlemail.com[2a00:1450:4010:c0e::10]:587: Network is unreachable
    Aug  3 12:33:00 CentOS7Main postfix/smtp[15853]: 1113A10CD96E: to=, relay=smtp.googlemail.com[74.125.131.16]:587, delay=0.36, delays=0.12/0/0.22/0.02, dsn=5.5.1, status=bounced (host smtp.googlemail.com[74.125.131.16] said: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1  https://support.google.com/mail/?p=WantAuthError u9sm13247035lfb.38 - gsmtp (in reply to MAIL FROM command))
    Aug  3 12:33:00 CentOS7Main postfix/cleanup[15851]: 5F2EF10427A5: message-id=
    Aug  3 12:33:00 CentOS7Main postfix/bounce[15855]: 1113A10CD96E: sender non-delivery notification: 5F2EF10427A5
    Aug  3 12:33:00 CentOS7Main postfix/qmgr[15784]: 5F2EF10427A5: from=, size=3275, nrcpt=1 (queue active)
    Aug  3 12:33:00 CentOS7Main postfix/qmgr[15784]: 1113A10CD96E: removed
    Aug  3 12:33:00 CentOS7Main postfix/smtp[15856]: connect to smtp.googlemail.com[2a00:1450:4010:c0e::10]:587: Network is unreachable
    Aug  3 12:33:00 CentOS7Main postfix/smtp[15856]: 5F2EF10427A5: to=, relay=smtp.googlemail.com[74.125.131.16]:587, delay=0.29, delays=0.04/0/0.23/0.02, dsn=5.5.1, status=bounced (host smtp.googlemail.com[74.125.131.16] said: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1  https://support.google.com/mail/?p=WantAuthError x67sm15618609ljb.13 - gsmtp (in reply to MAIL FROM command))
    Aug  3 12:33:00 CentOS7Main postfix/qmgr[15784]: 5F2EF10427A5: removed
    Aug  3 12:41:02 CentOS7Main postfix/postfix-script[15971]: stopping the Postfix mail system

    ____________
    2. «Добавим в файл /etc/postfix/main.cf одну строчку:
    header_checks = pcre:/etc/postfix/rewrite_subject»

    вопрос: в какой части кода необх. вставка этой строки? можно в конце? или?

    • Zerox

      У вас ошибка:
      Authentication Required
      Не проходит авторизация на сервере gmail.

      Там же в логе предупреждение:
      warning: database /etc/postfix/sasl_passwd.db is older than source file /etc/postfix/sasl_passwd
      Подозреваю, что вы не обновили базу с паролями после изменения файла sasl_passwd. После каждого изменения нужно выполнять команду:
      postmap /etc/postfix/sasl_passwd

  3. Аватар
    Ростислав

    У меня вопрос, настроил все по вашей статье.

    Для отправки использую smtp.yandex.ru

    Естественно столкнулся с проблемой — «Яндекс не допускает отправку, когда адрес отправителя не совпадает с адресом пользователя для авторизации»

    Решил ее как здесь предложили:

    «нужно в фале /etc/posstfix/main.cf добавить строку

    smtp_generic_maps = hash:/etc/postfix/generic

    в самом файле /etc/postfix/generic добавить строку

    root@server.mydomain.ru реальное_имя_отправителя@mydomain.ruнужно в фале /etc/posstfix/main.cf добавить строку

    smtp_generic_maps = hash:/etc/postfix/generic

    в самом файле /etc/postfix/generic добавить строку

    root@server.mydomain.ru реальное_имя_отправителя@mydomain.ru»

    ВОПРОС допустим у меня несколько серверов и все они отсылают письма на logs@yandex.ru, так вот как я пойму какой из серверов прислал мне письмо. В поле отправитель буде же везде logs@yandex.ru ? может как то тему можно настроить ?

    • Zerox

      Я не интересовался, как менять тему системных сообщений. Подозреваю, что есть обходной путь через изменение темы у всех писем через postfix. Если хотите все же настроить отправку через один ящик, то копайте в этом направлении. Но лично я бы использовал разные ящики.

      • Аватар

        Нашел решение, может кому будет полезно:

        Добавим в файл /etc/postfix/main.cf одну строчку:
        header_checks = pcre:/etc/postfix/rewrite_subject

        Теперь нужно создать файл /etc/postfix/rewrite_subject и поместить в него правило, которое будет добавлять в тему письма дополнительный текст с именем сервера
        /^Subject: (.*)$/ REPLACE Subject: $1 (from server.domain.tld)

        systemctl restart postfix

        • Zerox

          Спасибо за готовое решение. Как я и предполагал, удобнее всего переименовать тему через postfix. Пожалуй, имеет смысл оформить это как отдельную небольшую заметку. Думаю, будет многим полезно.

        • Аватар

          У меня почему-то postfix не знает, что такое «pcre», заменил на «regexp».
          Заработало!

  4. Аватар

    Oct 29 15:52:54 localhost postfix/qmgr[1968]: CDBB4605FD: from=, size=1096, nrcpt=1 (queue active)
    Oct 29 15:52:54 localhost postfix/qmgr[1968]: 11A086930C: from=, size=944, nrcpt=1 (queue active)
    Oct 29 15:52:54 localhost postfix/qmgr[1968]: 8426F3D6D4: from=, size=949, nrcpt=1 (queue active)
    Oct 29 15:52:54 localhost postfix/error[2031]: CDBB4605FD: to=, orig_to=, relay=none, delay=373, delays=373/0.02/0/0.03, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to smtp.gmail.com[2a00:1450:4010:c0b::6c]:465: Network is unreachable)
    Oct 29 15:52:54 localhost postfix/error[2032]: 11A086930C: to=, relay=none, delay=5075, delays=5075/0.02/0/0.05, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to smtp.gmail.com[2a00:1450:4010:c0b::6c]:465: Network is unreachable)
    Oct 29 15:52:54 localhost postfix/error[2034]: 8426F3D6D4: to=, relay=none, delay=357, delays=357/0.02/0/0.05, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to smtp.gmail.com[2a00:1450:4010:c0b::6c]:465: Network is unreachable)

  5. Аватар

    Здравствуйте. Не отправляется почта на gmail.
    По telnet с сервака порт 465 на smtp.gmail.com открыт.
    Но в логе пишет, что сеть не доступна.(

    Oct 29 15:52:54 localhost postfix/qmgr[1968]: CDBB4605FD: from=, size=1096, nrcpt=1 (queue active)
    Oct 29 15:52:54 localhost postfix/qmgr[1968]: 11A086930C: from=, size=944, nrcpt=1 (queue active)
    Oct 29 15:52:54 localhost postfix/qmgr[1968]: 8426F3D6D4: from=, size=949, nrcpt=1 (queue active)
    Oct 29 15:52:54 localhost postfix/error[2031]: CDBB4605FD: to=, orig_to=, relay=none, delay=373, delays=373/0.02/0/0.03, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to smtp.gmail.com[2a00:1450:4010:c0b::6c]:465: Network is unreachable)
    Oct 29 15:52:54 localhost postfix/error[2032]: 11A086930C: to=, relay=none, delay=5075, delays=5075/0.02/0/0.05, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to smtp.gmail.com[2a00:1450:4010:c0b::6c]:465: Network is unreachable)
    Oct 29 15:52:54 localhost postfix/error[2034]: 8426F3D6D4: to=, relay=none, delay=357, delays=357/0.02/0/0.05, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to smtp.gmail.com[2a00:1450:4010:c0b::6c]:465: Network is unreachable)

    • Zerox

      Отправка идет по сети ipv6. Вероятно она либо не настроена, либо настроена неправильно. Лучше ее отключить полностью, если не используется.

  6. Аватар

    Спасибо за статью и старания)

  7. Аватар

    Хорошая статья, спасибо!
    Вопрос как сделать тоже самое без авторизации? В локалке есть полноценный почтовик который работает для доверенных хостов без авторизации по smtp. Настраиваемый сервер доверенный в данном случае.

  8. Аватар

    Присоединяюсь к вопросу Андрея. Так же сделал все настройки, но почта напрямую для root ну уходит, команда
    df -h | mail -s «Disk usage» root

  9. Аватар
    Николай

    Спасибо за статью!
    Да, с mail.ru не получилось. Получилось с gmail.com
    Только у меня там включена двухэтапная авторизация (с подтверждением по смс) и поэтому нужно было создавать специальный отдельный пароль для приложения. Gmail его сам генерирует. Затем его нужно прописать в /etc/postfix/sasl_passwd
    https://myaccount.google.com/apppasswords

  10. Аватар
    Дмитрий

    Доброго дня суток. Уважаемый Zerox,а вы не планируете статьи по сортировке почты, в частности только консольными клиентами, но не на примере почтового сервера, а обычной машинки, фактически домашней. В гугле в основном упор делается именно на сервера.

  11. Аватар

    Попытка №2.
    Уважаемый Zerox, есть следующая ситуация абсолютно схожая с комментарием Выше.

    Вопрос1: каким образом можно работать из под root, при этом авторизация postfix будет происходить от имени учетки zabbix@mydomain.ru?

    Вопрос2: Прописал Алиасы как у Вас указано. На прямую почту письма ходят, по алиасу root, нет. Где копать?

  12. Аватар

    Собственно присоединяюсь к предыдущему коллеге.
    Суть:
    Работаем под root
    Отправляем почту через smtp.yandex.ru:587

    Есть учетка zabbix@mydomain.ru

    # hostname = Zabbix

    Часть конфига main.cf
    myhostname = Zabbix
    mydomain = myadmin.ru

    Часть конфига sasl_passwd
    smtp.yandex.ru:587 root@mydomain.ru:pass

    Часть конфига aliases
    root: root, info@mydomain.ru

    Собственно вопросы:
    1) Как заставить проходить авторизацию не под root@mydomain.ru (я, конечно, завел пользователя root@mydomain.ru как вынужденную меру, но все же как-то не очень ситуация)
    2) Что-то, видимо делаю не так с алиасами. Напрямую почта уходит, при выполнении mail -s «test» root почта не уходит, хотя в /var/log/maillog ошибок нет. Письмо уходит на «root»

    Помогите с решением вопроса

  13. Аватар

    получаю ошибку авторизации:
    [code]said: 553 5.7.1 Sender address rejected: not owned by auth user. (in reply to MAIL FROM command))[/code]
    с чем может быть связано?

    в [code]/etc/postfix/sasl_passwd[/code]
    прописал:
    [code]smtp.yandex.ru:587 логин:пассворд[/code]
    в main.cf — тоже:
    [code]relayhost = smtp.yandex.ru:587[/code]

    может в этом ошибка?

    Лог:
    [code]
    [root@name-vps-1 rsyslog.d]# tail -n 10 /var/log/maillog
    Feb 6 04:16:35 name-vps-1 postfix/pickup[3363]: D6F8C1371: uid=0 from=
    Feb 6 04:16:35 name-vps-1 postfix/cleanup[3369]: D6F8C1371: message-id=
    Feb 6 04:16:35 name-vps-1 postfix/qmgr[3364]: D6F8C1371: from=, size=767, nrcpt=1 (queue active)
    Feb 6 04:16:36 name-vps-1 postfix/smtp[3371]: D6F8C1371: to=, relay=smtp.yandex.ru[77.88.21.38]:587, delay=0.31, delays=0.06/0.05/0.18/0.02, dsn=5.7.1, status=bounced (host smtp.yandex.ru[77.88.21.38] said: 553 5.7.1 Sender address rejected: not owned by auth user. (in reply to MAIL FROM command))
    Feb 6 04:16:36 name-vps-1 postfix/cleanup[3369]: 367BB1924: message-id=
    Feb 6 04:16:36 name-vps-1 postfix/bounce[3373]: D6F8C1371: sender non-delivery notification: 367BB1924
    Feb 6 04:16:36 name-vps-1 postfix/qmgr[3364]: 367BB1924: from=, size=2707, nrcpt=1 (queue active)
    Feb 6 04:16:36 name-vps-1 postfix/qmgr[3364]: D6F8C1371: removed
    Feb 6 04:16:36 name-vps-1 postfix/smtp[3371]: 367BB1924: to=, relay=smtp.yandex.ru[213.180.204.38]:587, delay=0.15, delays=0.01/0/0.13/0.01, dsn=5.7.1, status=bounced (host smtp.yandex.ru[213.180.204.38] said: 553 5.7.1 Sender address rejected: not owned by auth user. (in reply to MAIL FROM command))
    Feb 6 04:16:36 name-vps-1 postfix/qmgr[3364]: 367BB1924: removed
    [/code]

    • Zerox

      В логе написано, в чем причина ошибки. Яндекс не допускает отправку, когда адрес отправителя не совпадает с адресом пользователя для авторизации:
      Sender address rejected: not owned by auth user.

      • Аватар

        сейчас в from попадает email вида root@mydomain.ru
        где изменить root на нужное мне имя для авторизации?
        т.е. на то что прописано в sasl_passwd ?

        судя по логу (к сожалению часть лога ваш парсер порезал) в начале запроса from присутствует (первые 5 строк с ошибкой), но дальше from — пуст (последние 5 строк с ошибкой)

      • Аватар

        во первом SENDe в to нужный емейл
        во втором SENDe в to попадает root@mydomain.ru (хотя не совсем понимаю, что он пытается отправить на этот емейл, т.к. он ни где вроде бы не прописан)

      • Аватар

        создал временно ящик root@mydomain.ru
        прописал его данные в /etc/postfix/sasl_passwd

        при отправке письма на конкретный ящик, например:
        df -h | mail -s «Disk usage» admin@mydomain.ru
        письмо приходит на admin@mydomain.ru

        при отправке же письма на root, например:
        df -h | mail -s «Disk usage» root
        письмо приходит на root@mydomain.ru

        в /etc/aliases прописано:
        root: root,admin@mydomain.ru
        впрочем, ни чего не меняется и если прописано:
        root: admin@mydomain.ru
        или строка закомментирована
        естественно, что после каждого изменения выполнялись:
        # newaliases
        # systemctl restart postfix

        что-то я совсем запутался :-/

  14. Аватар
    Владимир

    После настроек мне приходит письмо следующего содержания:

    This is the mail system at host centos.localdomain.

    I’m sorry to have to inform you that your message could not
    be delivered to one or more recipients. It’s attached below.

    For further assistance, please send mail to postmaster.

    If you do so, please include this problem report. You can
    delete your own text from the attached returned message.

    The mail system

    (expanded from ): host
    mail.мой провайдер.com[ip.моего.провайдера.почты] said: 550-Verification failed for
    550-Unrouteable address 550 Sender verify failed
    (in reply to RCPT TO command)

    Имеются два прикрепленный файла:
    message2.delivery-status
    message3.eml

    • Zerox

      Это уже вопрос к вашему почтовому провайдеру, через которого вы отправляете. Я не совсем понимаю, что он имеет ввиду, говоря:

      550-Unrouteable address 550 Sender verify failed
      (in reply to RCPT TO command)

      Вы не проходите проверку на отправителя у вашего провайдера почты.

      • Аватар
        Владимир

        Сейчас переключился на настройку Zabbix на боевом сервере(наконец то железку купили хорошую), и проблему с почтой отложил пока. Но есть мысля что гадит сертификат провайдера. Я просто сейчас не помню пробовал ли я с шифрованием почту настраивать или без и какой порт вписывал. А сертификат у провайдера само-подписанный типа и из-за этого бывают проблемы с настройкой почтовых клиентов на смартфонах с iOC и WindowsPhone. Ну не доверяют они сертификату, а принять его что самое интересное не во всех моделях выходит. Выкручиваюсь настраиваю почту через 25 порт без шифрования. На днях проверю свою мысль и отпишусь.

  15. Аватар

    Благодарю.

  16. Аватар

    Спасибо автору за статью, очень полезно. Все отлично работает с Gmail-ом. Почта приходит как было сказано в «Входящие» а не в «Спам».
    Вопрос: Почта отправляется в открытом виде или шифруется пакеты при отправке?

  17. Аватар

    Настроил postfix по вашей статье, письма отправляются и доходят (через smtp.gmail.com). Спасибо!
    Проблемы тоже есть.
    1) Письма приходят только на gmail. На mail.ru — не приходят даже в спам.
    2) Все письма попадают с спам, даже если указать в gmail, что это не спам и добавить почтовый ящик в адресную книгу.

    • Аватар

      При отправке писем с другого SMTP-сервера нужно чтобы адрес отправителя в письме совпадал с реальным адресом отправителя (в частности, чтобы письма приходили на серверы mail.ru)

      нужно в фале /etc/posstfix/main.cf добавить строку

      smtp_generic_maps = hash:/etc/postfix/generic

      в самом файле /etc/postfix/generic добавить строку

      root@server.mydomain.ru реальное_имя_отправителя@mydomain.ru

      и создать хэш
      postmap /etc/postfix/generic

      перезапустить postfix
      systemctl restart postfix

  18. Аватар
    Валерий

    Пытаюсь настроить уведомления, используя сервер mail.ru.
    По ходу настроек узнал, что postfix не работает с ssl)
    Поменял порт на 587, сервер mail.ru стал ругаться на адрес отправителя с ошибкой 550.
    Дописал строку:
    smtp_generic_maps = hash:/etc/postfix/generic
    В файл /etc/postfix/generic добавил:
    root@CentOS.CentOS mail@mail.ru
    Создfk хеш-файл:
    postmap /etc/postfix/generic
    Перезапустил postfix.
    Теперь пишет: «postfix/smtp[54631]: 402C6C7DE6: conversation with smtp.mail.ru[94.100.180.160] timed out while sending DATA command».
    Что с этим делать я не знаю :(

    • Zerox

      Да, я тоже столкнулся с тем, что postfix не умеет работать по ssl, а в инструкции яндекса написано, что надо использовать именно ssl. Но оказалось, что starttls на 587 порту он все-таки поддерживает. В итоге все получилось.

      Но если mail.ru не предлагает альтернатив ssl, то не знаю, что можно сделать. Разве что не пользоваться почтой mail.ru.

      • Аватар
        Валерий

        Сколько раз зарекался не пользоваться mail.ru)

      • Аватар

        Для Gmail не знаете настроек, случайно? )

        • Zerox

          Так а какие там настройки? Только адрес порта поставить 587 и адрес сервера прописать smtp.gmail.com.

          • Аватар

            Сервер входящей почты (IMAP)
            imap.gmail.com
            Требуется SSL: да
            Порт: 993

            Сервер исходящей почты (SMTP)
            smtp.gmail.com
            Требуется SSL: да
            Требуется TLS: да (при наличии)
            Требуется аутентификация: да
            Порт для SSL: 465
            Порт для TLS/STARTTLS: 587

            Полное или отображаемое имя: Ваше имя
            Учетная запись, имя пользователя или адрес электронной почты: Ваш адрес электронной почты полностью
            Пароль: Ваш пароль Gmail

          • Аватар

            С TLS postfix умеет работать?

  19. Аватар

    Подскажите, пожалуйста, Вы редактировали сам файл /etc/postfix/main.cf?
    Или создали новый с другим именем?

    Возможно ли эту схему использовать для настройки на SMTP Google?

    • Zerox

      Редактировал текущий. Создать новый нельзя, нужно именно main.cf редактировать. Можно его скопировать куда-нибудь, чтобы сохранить оригинальное содержание.

      И для google, и для yandex использовать можно, я проверял и использовал. Нужно только правильные настройки smtp пора указать, у них они разные.

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

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.