3

По соображениям безопасности sendmail по умолчанию настроен на прием соединения из локальной системы (127.0.0.1), чтобы избежать проблемы с открытым почтовым ретранслятором. Но,

Как заставить sendmail принимать почту из интернета?

В статье на http://www.cyberciti.biz/tips/sendmail-is-only-accepting-connections-from.html говорится, чтобы удалить часть Addr=127.0.0.1 из

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

в

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

будет "заставлять принимать соединение с любого хоста". Я сделал это:

$ grep smtp /etc/mail/sendmail.mc
dnl DAEMON_OPTIONS(`Family=inet6, Name=MTA-v6, Port=smtp, Addr=::1')dnl
DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp')dnl
MAILER(`smtp')dnl

Тем не менее, похоже, я все еще не могу принимать входящие электронные письма из Интернета. Так прокомментировал это как предложено Moonpoint:

$ grep smtp /etc/mail/sendmail.mc
dnl DAEMON_OPTIONS(`Family=inet6, Name=MTA-v6, Port=smtp, Addr=::1')dnl
dnl DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp')dnl
MAILER(`smtp')dnl

% make
Updating databases ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/databases...
Creating /etc/mail/relay-domains
# Optional file...
Updating Makefile ...
Reading configuration from /etc/mail/sendmail.conf.
Validating configuration.
Creating /etc/mail/Makefile...
Updating sendmail.cf ...
The following file(s) have changed:
  /etc/mail/sendmail.cf /etc/mail/local-host-names
** ** You should issue `/etc/init.d/sendmail reload` ** **

% /etc/init.d/sendmail reload
 * Reloading Mail Transport Agent (MTA) sendmail                    [ OK ]

Тем не менее, я думаю, что он работает не так, как ожидалось, потому что раньше, по крайней мере, я получал сообщение об ошибке "Relaying denied", но теперь, когда я пытался отправить электронное письмо в свою систему через Google, в течение 10 минут ничего не происходило. Пытаясь решить проблему самостоятельно, я обращаюсь к http://support.moonpoint.com/blog/blosxom/2015/04/04#smtp-telnet-commands и пытался подключить мой сервер с помощью telnet . Но сразу же я получаю сообщение об ошибке "Отказано в соединении":

$ telnet xpt.mydomain.org 25
Trying 104.243.xx.xx...
telnet: Unable to connect to remote host: Connection refused

Удалив этот dnl чтобы вернуться к тому, что я получил раньше, теперь я могу по крайней мере подключиться:

$ telnet xpt.mydomain.org 25
Connected to xpt.mydomain.org.
Escape character is '^]'.
220 mail.xpt.mydomain.net ESMTP Sendmail 8.14.4/8.14.4/Debian-2.1ubuntu4; Sun, 14 Jun 2015 22:16:13 -0400; (No UCE/UBE) logging access from: my.remote.domain

что мне делать, если я хочу принимать входящие электронные письма из Интернета?

Обновление: я уже настроил sendmail в качестве почтового сервера для своей локальной сети и подумал, что настроил sendmail для приема электронной почты для соответствующего доменного имени, которое я использую для электронной почты на сервере, но вот что я получил:

% sendmail -bv me@xpt.mydomain.org
me@xpt.mydomain.org... deliverable: mailer relay, host mail.myisp.com, user me@xpt.mydomain.org

Теперь я знаю, что это не так (на самом деле это было настроено с другим динамическим именем DNS, которое у меня есть), поэтому я изменяю его на xpt.mydomain.org. И теперь это выглядит хорошо:

% sendmail -bv me@xpt.mydomain.org
me@xpt.mydomain.org... deliverable: mailer local, user me

Однако, используя внешнюю учетную запись электронной почты для отправки электронной почты в мою систему, я получил:

Delivery to the following recipient failed permanently:

     me@xpt.mydomain.org

Technical details of permanent failure:
Google tried to deliver your message, but it was rejected by the server for the recipient domain xpt.mydomain.org by xpt.mydomain.org. [104.243.xx.xx].

The error that the other server returned was:
550 5.7.1 <me@xpt.mydomain.org>... Relaying denied

----- Original message -----

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=mime-version:date:message-id:subject:from:to:content-type;
        bh=0rLnzRsn....

Хорошо, я рад, что спамеры не могут использовать мой сервер Sendmail для ретрансляции электронной почты, но я также не получаю письма.

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

Обновление 2: пытаясь самостоятельно устранить проблему, я продолжил ее, чтобы протестировать полный протокол SMTP с использованием telnet . Странно то, что я не получил ошибку "Relaying denied" при использовании telnet:

...
mail from: testing@example.com
250 2.1.0 testing@example.com... Sender ok
rcpt to: testing2@example.com
550 5.7.1 testing2@example.com... Relaying denied
rcpt to: me@xpt.mydomain.org
250 2.1.5 me@xpt.mydomain.org... Recipient ok
Data
354 Enter mail, end with "." on a line by itself
This is a test message.
.
250 2.0.0 t5F2ItI0008331 Message accepted for delivery
quit
221 2.0.0 mail.xpt.mydomain.net closing connection
Connection closed by foreign host.

Так что теперь все работает нормально сейчас. Большое спасибо Moonpoint !!!

Спасибо

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.10
Release:        13.10
Codename:       saucy

$ apt-cache policy sendmail-bin
sendmail-bin:
  Installed: 8.14.4-2.1ubuntu4
  Candidate: 8.14.4-2.1ubuntu4
  Version table:
 *** 8.14.4-2.1ubuntu4 0
        500 http://us.archive.ubuntu.com/ubuntu/ saucy/universe amd64 Packages
        100 /var/lib/dpkg/status

PS. Еще немного о том, почему я хочу это сделать - все, что я хочу сделать, - это разрешить моему серверу sendmail принимать почту из Интернета для моего личного использования. Я пытался выполнить эти 5 простых шагов несколько раз,

Как настроить простой почтовый сервер на Debian за 5 простых шагов
http://cnedelcu.blogspot.ca/2014/01/how-to-set-up-simple-mail-server-debian-linux.html

Но, в конце концов, они никогда не работали, и я даже не знаю, что пошло не так. Поэтому я думаю, что самый простой способ - вместо этого включить мой сервер sendmail.

1 ответ1

1

Вы настроили sendmail на прием электронной почты для соответствующего доменного имени, которое вы используете для электронной почты на сервере? Например, если ваше доменное имя - example.com, а действительный адрес электронной почты в системе должен быть xpt@example.com, если вы запускаете команду sendmail -bv xpt@example.com из корневой учетной записи в системе, указывает ли это что электронная почта является доставляемой и ссылается на "почтовую локальную" и локальную учетную запись? Например, вы видите что-то похожее на следующее?

# sendmail -bv xpt@example.com
xpt@example.com... deliverable: mailer local, user xpt

Если у вас есть sendmail, настроенный на прием электронной почты для соответствующего имени домена, он будет ссылаться на "mailer local" и локальную учетную запись.

Обновление: вывод, предоставленный вами командой sendmail -bv указывает мне, что у вас нет sendmail, настроенного на прием электронной почты, адресованной xpt.mydomain.org. Чтобы sendmail принимал электронную почту для доменного имени, вам нужно добавить это доменное имя, xpt.mydomain.org, в /etc/mail/local-host-names затем выполнить команду makemap hash /etc/mail/local-host-names < /etc/mail/local-host-names . Не беспокойтесь о сообщениях "нет RHS для LHS", которые вы можете увидеть при вводе команды. Попробуйте это, а затем снова запустите ту же sendmail -bv me@xpt.mydomain.org . При повторном запуске команды sendmail -bv me@xpt.mydomain.org вы должны увидеть ссылку на "mailer local", а не "mailer relay", а затем "user" должна сопровождаться локальной учетной записью, а не "me". @ xpt.mydomain.org». См. Получение sendmail для приема электронной почты для домена для примера вывода команд makemap и sendmail -bv .

Обновление 2: Вы ссылались на то, что Sendmail принимает подключения только из статьи localhost (127.0.0.1 IP) , но, возможно, вы не внесли изменения, необходимые для строки ниже в /etc/mail/sendmail.mc:

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.cf из файла sendmail.mc с помощью следующей команды, чтобы sendmail принимал отправленные электронные письма. почтовыми клиентами за пределами сервера, на котором работает sendmail.

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

После того, как вы перестроили файл с помощью команды m4, вам нужно перезапустить sendmail. В статье предлагается сделать это с помощью /etc/init.d/sendmail restart Если эта команда не перезапускает sendmail в вашей системе, например, если она выдает сообщение No such file or directory message , попробуйте service sendmail restart или systemctl restart sendmail , После того, как вы перезапустили sendmail, он должен принять электронную почту для действительных адресов электронной почты в системе, т. Е. Для доменов, указанных в файле local-host-names.

У вас есть внешняя учетная запись электронной почты, которую вы можете использовать для отправки электронной почты на адрес в вашей системе, например Hotmail, Gmail или другую учетную запись электронной почты? Если это так, что вы видите в отскоченном электронном письме сейчас, если отправляете на действительный адрес электронной почты в вашей системе? Какая ошибка указана в отклоненном письме?

Даже если вы правильно настроили sendmail, вам могут потребоваться другие вопросы, чтобы иметь возможность получать электронную почту из Интернета. Вы заявили, что правила брандмауэра настроены правильно. Вам могут потребоваться соответствующие правила брандмауэра как в системе, в которой работает sendmail, так и в любом внешнем маршрутизаторе / брандмауэре в локальной сети (LAN), в которой находится ваш сервер sendmail. Чтобы внешние почтовые серверы могли обмениваться данными с вашим почтовым сервером, если маршрутизатор / брандмауэр в вашей локальной сети использует трансляцию сетевых адресов (NAT), вам необходимо настроить это устройство для переадресации подключений к порту 25, протоколу простой передачи почты (SMTP). порт, используемый для доставки электронной почты с одного почтового сервера на другой, с брандмауэра / маршрутизатора на сервер sendmail.

Если у вас есть необходимые правила брандмауэра и все необходимые параметры переадресации портов, то внешняя система должна иметь возможность успешно подключиться к порту 25 на вашем сервере sendmail. Вы можете проверить, возможно ли это, что поможет сузить источник проблемы, используя одну из многочисленных служб проверки портов, предоставляемых бесплатно несколькими веб-сайтами. Например, вы можете использовать тестер переадресации портов. Если вы не запускаете тест со своего сервера, вам может потребоваться указать IP-адрес, который будут видны внешним системам при попытке установить связь с вашим сервером, который будет отличаться от IP-адреса, который вы ему присвоили, если есть межсетевой экран или маршрутизатор в сети, в которой находится ваш сервер, используя NAT, который отделяет ваш сервер от Интернета. Чтобы найти адрес, который увидят внешние системы, вы можете использовать любой из ряда бесплатных сервисов, которые покажут вам видимый снаружи IP-адрес устройства, если вы посетите веб-сайт организации, предоставляющей эту услугу. Например, вы можете использовать веб-браузер для посещения whatismyip.com с вашего сервера sendmail. Затем на сайте Port Forwarding Tester вы будете использовать этот IP-адрес для "Удаленного адреса" и 25 для номера порта. Когда вы нажимаете "Проверить", вы должны увидеть "Порт 25 открыт", за которым следуют предоставленные вами IP-адреса, если у вас правильно настроены необходимые правила брандмауэра и все необходимые переадресации портов.

Вы также можете использовать telnet в системе за пределами вашей сети, чтобы попытаться подключиться к порту 25 на вашем сервере sendmail. Вы должны увидеть ответ от sendmail на вашем сервере, если у вас есть необходимые правила брандмауэра и все необходимые переадресации портов на месте. Если вы можете установить соединение с портом 25 на вашем сервере sendmail, вы можете выполнить SMTP-команды, которые позволят вам попытаться отправить тестовое сообщение учетной записи на вашем сервере. Например, см. Проверка доставки электронной почты с помощью команд SMTP.

Если вы можете успешно доставлять электронную почту этим способом, то, возможно, у вас нет подходящей записи почтового обменника (MX) для вашего почтового сервера. Предположим, полное доменное имя для вашего сервера sendmail - example.com. Если кто-то, использующий Hotmail, Gmail или любой другой почтовый сервер, кроме вашего почтового сервера, отправляет вам электронную почту, скажем, с помощью xpt@example.com, другой почтовый сервер проверит, какой сервер или серверы электронной почты предназначены для обработки электронной почты. example.com. Это не обязательно должен быть example.com. Например, вы можете использовать службу электронной почты, предоставляемую внешним поставщиком электронной почты, скажем, bigemailprovider.com.

Вы можете использовать сервис поиска MX, чтобы проверить записи MX для вашего домена. Просто введите свое доменное имя и нажмите "Поиск MX". Например, эта ссылка покажет вам результаты для gmail.com. Если вы попытаетесь отправить сообщение электронной почты с вашего сервера sendmail на адрес gmail.com, ваш сервер выполнит аналогичную проверку и увидит аналогичные результаты. У Google есть много почтовых серверов, которые могут принимать почту с других серверов для пользователей Gmail. Вы увидите список таких серверов с различными настройками и IP-адресами. Ваш сервер и другие сначала попробуют сервер с самым низким предпочтением. Например, сервер Gmail с предпочтением 5 будет опробован раньше, чем сервер с предпочтением 10. Если ваш сервер не может обмениваться данными с сервером Gmail с предпочтением 5, он попытается использовать сервер с предпочтением 10, возможно, попробовав множество серверов Gmail, прежде чем сдаться.

Если вы не видите никаких записей MX для своего домена, это нормально. Если вы используете example.com, а MX-запись не существует для example.com, другой почтовый сервер будет предполагать, что IP-адрес example.com должен быть там, где он должен попытаться доставить электронную почту. Если вы видите записи MX, указывающие на другие IP-адреса, отличные от адреса вашего сервера sendmail, вам может потребоваться изменить записи MX для вашего домена через веб-страницу настроек системы доменных имен (DNS), предоставленную вашим регистратором доменных имен. Например, компания, через которую вы зарегистрировали доменное имя для вашего сервера. Некоторые регистраторы по умолчанию создают записи MX, указывающие на их почтовые серверы, когда вы регистрируете домен. Вы можете выполнить ту же проверку самостоятельно из командной строки в системе Unix, Linux, OS X или Microsoft Windows, используя команду nslookup для проверки записей MX. Например, nslookup -querytype=mx gmail.com

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .