Назад | Перейти на главную страницу

Устройство vCenter не будет использовать сервер ретрансляции почты

tl; dr: - sendmail настроен на использование сервера ретрансляции, но по-прежнему настаивает на использовании 127.0.0.1 в качестве ретранслятора, что приводит к тому, что почта не отправляется.


У нас есть устройство vCenter с открытым исходным кодом (версия 5.0), управляющее нашим кластером ESXi. При подключении к нему через vSphere Client вы можете настроить сервер ретрансляции SMTP для использования, перейдя в Administration > vCenter Server Settings > MAIL. Здесь вы можете установить значение SMTP-сервера. Я просмотрел их документацию, а также подтвердил по телефону с поддержкой, что все, что вам нужно сделать для настройки почты, - это ввести IP-адрес реле или fqdn в это поле и нажать OK.

Ну, я сделал это, а почта все еще не отправлялась. Итак, я подключаюсь по SSH к серверу (это SuSE) и смотрю / var / log / mail, и похоже, что он пытается ретранслировать электронную почту через 127.0.0.1 и отклоняет ее. Просматривая файлы конфигурации, я вижу, что /etc/sendmail.cf и /etc/mail/submit.cf. Вы можете настроить элементы в /etc/sysconfig/sendmail и беги SuSEconfig --module sendmail чтобы сгенерировать их в файлы .cf на основе того, что находится в / etc / sysconfig / sendmail.

Итак, играя, я вижу, что когда вы устанавливаете значение SMTP-сервера в vCenter gui, все, что он делает, это меняет строку «DS» в /etc/mail/submit.cf, чтобы иметь DS[myrelayserver.com].

Глядя в Интернет, может показаться, что линия DS - единственное, что вам нужно изменить, чтобы использовать сервер ретрансляции. Я позвонил по телефону с поддержкой VMWare и потратил 2 часа, пытаясь изменить ЛЮБОЙ параметр, который имел какое-либо отношение к реле, и мы не смогли заставить его НЕ использовать 127.0.0.1 в качестве реле. Следует отметить, что каждый раз, когда мы вносили какие-либо изменения в конфигурацию, мы перезапускали службу sendmail.

Кто-нибудь знает, что происходит? Есть идеи, как я могу это исправить?

Есть два файла конфигурации, с которыми работают более новые версии sendmail. Эти submit.cf и sendmail.cf. Не меняй тоже sumbit.mc (который используется для производства submit.cf) или submit.cf сам. Они используются, когда локальная почтовая программа разветвляет sendmail для отправки электронной почты, и все, что они делают, это ретранслируют почту для отправки на sendmail демон, который слушает 127.0.0.1:25

Так что все, что вам нужно сделать, это либо вручную поменять DS. sendmail.cf и присвойте ему значение вроде:

DS[relay.server]

включая скобки, или измените макрос SMART_HOST в sendmail.mc:

define(`SMART_HOST', `[relay.server]')dnl

Если вы измените sendmail.mc вам нужно произвести новый sendmail.cf а затем перезапустите sendmail демон. В Debian вы запускаете sendmailconfig. В CentOS вы запускаете оба /etc/mail/make с последующим service sendmail restart. Извините, я не использую SuSE.

В системах Red Hat есть /etc/mail/access файл для sendmail.

И пример содержания:

# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
Connect:localhost.localdomain           RELAY
Connect:localhost                       RELAY
Connect:127.0.0.1                       RELAY
172.16.2.116                            RELAY
172.16.2.17                             RELAY

Вы должны определить IP-адрес вашего vCenter в этом файле (или его эквиваленте в SuSE) и перезапустить демон.

Редактировать:

Я предполагал, что вы настроили Sendmail для прослушивания чего-либо, кроме адреса обратной связи. Войдите в sendmail.mc file и ищите эту строфу.

dnl # The following causes sendmail to only listen on the IPv4 loopback address
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

Вы хотите закомментировать последнюю строку, добавив dnl. Итак, вы должны получить:

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

Перезапустите службу sendmail и попробуйте еще раз.

Редактировать:

OP пытается настроить свое устройство vSphere на базе Linux для ретрансляции через другой почтовый сервер. Это просто случай определения SMARTHOST. В файле sendmail.mc найдите строку, в которой говорится:

dnl define(`SMART_HOST', `smtp.your.provider')dnl

Уберите строку комментария и введите имя вашего почтового сервера. Если имя вашего почтового сервера mail.bootylicious.com, ваша результирующая строка sendmail.mc будет выглядеть так:

define(`SMART_HOST', `mail.bootylicious.com')dnl

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

Перезапустите Sendmail.

Это странно, но это единственный способ заставить его работать ...

Имя, которое я хотел замаскировать, - mydomain.com. Сервер vCenter имел имя хоста mycluster с mycluster и mycluster.vmware.com в /etc/hosts (почему vmware.com, я понятия не имею ... это требуется для устройств, или наш подрядчик, настроивший его, сделал это неправильно? Или устройство делает это по умолчанию? Кто-нибудь знает?).

Чтобы все заработало, мне пришлось добавить mydomain.com в файл / etc / hosts сервера vCenter для 127.0.0.1 и :: 1. Но не только это, я должен был указать его ДО mycluster и mycluster.vmware.com. Похоже, что sendmail просматривает / etc / hosts, берет первое имя, указанное в 127.0.0.1, и устанавливает его в качестве домена отправителя ??

Во всяком случае, это работает сейчас. Когда триггер в vCenter срабатывает и отправляет электронное письмо, vCenter сообщает, что он не может отправить электронное письмо, но примерно через 60 секунд я действительно получаю его. Так что что-то все еще не так, но, по крайней мере, работает.

На Suse Enterprise Linux 11 SP2 у меня работало следующее:

vi /etc/sysconfig/sendmail


# change SMARTHOST to your relay
SENDMAIL_SMARTHOST="[x.x.x.x]"

# change to YES, to not resolve DNS
SENDMAIL_NOCANONIFY="yes"

SuSEconfig --module sendmail

service sendmail restart

Моим решением было добавить 127.0.0.2 в файл хоста.

sudo sh -c 'echo "127.0.0.2 server1" >> /etc/hosts'