Я не могу заставить команду 'mail' отправлять почту с моего компьютера Linux Ubuntu 15.10. Файл 'mail.log' обычно сообщает "Тайм-аут соединения".

Я выдаю команду: 'mail -s "my subject" receient@domain.com <имя файла', где 'filename' - это файл, содержащий мое сообщение.

В частности, протокол отчетов:

Jan 5 12:29:53 pegasus postfix/smtp[9006]: connect to mx01.gmx.com[74.208.5.27]:25: Connection timed out
Jan 5 12:30:23 pegasus postfix/smtp[9006]: connect to mx00.gmx.com[74.208.5.4]:25: Connection timed out

Я подозреваю, что мой провайдер (verizon) блокирует порт 25 и, таким образом, вызывает проблему: однако мне не удалось изменить порт smtp на 465 (как рекомендует Verizon) или 587 (как рекомендуют другие). Ниже приведен мой файл master.cf:

smtp inet n - - - - smtpd

465 inet n - - - - smtpd

#smtp inet n - - - 1 postscreen
#smtpd pass - - - - - smtpd
#dnsblog unix - - - - 0 dnsblog
#tlsproxy unix - - - - 0 tlsproxy
#submission inet n - - - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n - - - - smtpd
# -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authentica -o milter_macro_daemon_name=ORIGINATING
#628 inet n - - - - qmqpd
pickup unix n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - - - - smtp
relay unix - - - - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error unix - - - - - error
retry unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}

1 ответ1

0

master.cf только определяет, какие службы и порты будет прослушивать ваш Postfix, т.е. какие входящие соединения принимать. Это не влияет на то, как отправляется исходящая почта.

Теперь, несмотря на то, что Postfix имеет довольно много опций для своего транспорта "smtp", он фактически не позволяет вам менять порт SMTP. Но это нормально, потому что даже если вы сделали изменения исходящий SMTP - порт 587 или что - то, что не будет делать какие - либо хорошие - большинство Приемные серверы не прослушивает этот порт в любом случае; Ваши сообщения об ошибках просто изменится на "Соединение отказано" (или, возможно, «Сообщение отклонено; требуется проверка подлинности»). Порт обмена почтой SMTP (сервер-сервер) - 25, конец истории.


Ваши "рекомендации", вероятно, исходят из инструкций по настройке почтового сервера для приема SMTP-подключений от почтового приложения, такого как Thunderbird или Outlook - на самом деле SMTP-порт «клиент-сервер» (отправка почты) - 587, а некоторые старые конфигурации все еще используют 465 за это.

Сначала порт 25 использовался для всей почты, но позже он был разделен на 25 для обмена почтой сервер-сервер и 587 для отправки почты клиент-сервер. Это позволяет серверу применять разные правила к каждому - например, разрешено устранять определенные проблемы в отправленной клиентом почте, и интернет-провайдеры могут заблокировать порт 25, но при этом разрешить 587.

(Некоторые почтовые приложения использовали порт 465 для "SMTPS" - SMTP с TLS (например, HTTPS) - но у него были недостатки, такие как невозможность его использования для связи сервер-сервер. В конечном итоге он был заменен STARTTLS через порты 25 и 587. С тех пор IANA переназначил порт 465 для другого протокола, и он больше не должен использоваться для почты.)


Так что же делать в вашем случае? Есть несколько общих вариантов.

Во-первых, если вы пытаетесь превратить ваш компьютер в полноценный почтовый сервер для вашего собственного домена:

  • Предпочтительный вариант: попросите вашего интернет-провайдера разблокировать SMTP-соединения. (Некоторые интернет - провайдеры делают удалять блоки , если вы спросите красиво и обещают не спам.)

  • Сделайте так, чтобы Postfix использовал предоставленный провайдером сервер ретрансляции, также известный как smarthost. (Однако, только некоторые интернет-провайдеры предлагают это, и вам все равно придется что-то делать для входящей почты ...)

  • Сделайте все SMTP-соединения проходящими через VPN. (В идеале это должна быть VPN-сеть через ваш собственный арендованный сервер - даже не думайте о VPN типа "Hide my ass", ориентированных на конфиденциальность, они уже блокируют порт 25 одинаково по тем же причинам.)

Или, если вы хотите, чтобы mail отправляла почту с существующей учетной записи (например, Gmail или GMX):

  • Опять же, настройте Postfix для использования сервера ретрансляции Gmail или GMX - по сути, сделайте так, чтобы он работал как обычное почтовое приложение, проходя через [smtp.gmail.com]:587, с вашим именем пользователя и паролем.

    (Существует довольно много руководств по gmail для postfix, но вы также можете полностью заменить Postfix на инструмент для ретрансляции, такой как msmtp или esmtp , который был создан для этой цели.)

  • Или установите s-nail (ранее известный как heirloom-mailx) - версию mail которая знает, как использовать SMTP напрямую, без прохождения через почтовую систему ОС. (Так работают другие почтовые приложения.) Команда по-прежнему будет mail .

    (Если я правильно помню, GNU mailutils также имеет команду mail с поддержкой SMTP.)

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