По соображениям безопасности 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.