Рейтинг:0

Почтовый сервер не будет получать электронные письма - Postfix / Dovecot / Raspberry Pi

флаг in

Задний план

Я работаю над настройкой почтового сервера с использованием Raspberry Pi в качестве хоста. Я в основном использовал это руководство как моя помощь, но я, кажется, застрял. У меня есть служба по месту жительства, но у меня есть учетная запись на dynu.com со службами «Исходящая ретрансляция SMTP» и «Сохранение электронной почты / пересылка», чтобы обойти это. Они также размещают мое доменное имя.

Проблема

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

Порты

Используя сканер портов, я могу определить следующее:

  • Порт 25 = заблокирован
  • Порт 2525 = разблокирован
  • Порт 143 = разблокирован
  • Порт 465 = разблокирован
  • Порт 993 = разблокирован

Все порты успешно перенаправляются через маршрутизатор на мой почтовый хост.

Тестирование OpenSSL (работает)

С помощью команды openssl s_client -connect mail.xxx.com:993 -quiet (где xxx — мой фактический домен) я могу войти, используя пароль пользователя для входа , `b выбрать входящие', 'c выйти' Использование моего фактического доменного имени, а не localhost, заставляет меня чувствовать, что это настроено правильно.

Мониторинг mail.log при получении письма

Единственная запись, которая появляется: введите описание изображения здесь

Я вижу в своем сервисе Dyno Email Store/Forward, что они просто сидят и никогда не передают:

введите описание изображения здесь

У меня настроена служба пересылки/сохранения электронной почты Dyno следующим образом:

введите описание изображения здесь

Мне может даже не понадобиться эта служба пересылки / хранения электронной почты, поскольку порт 993 не заблокирован моим провайдером? Я просто использую его, потому что я тоже не могу заставить его работать без него, поэтому могу попробовать что-то другое.

Соответствующие файлы конфигурации

Main.cfg

smtpd_banner = $myhostname ESMTP $mail_name (Raspbian)
биф = нет

append_dot_mydomain = нет

readme_directory = нет

# См. http://www.postfix.org/COMPATIBILITY_README.html -- по умолчанию 2 на
# свежие установки.
уровень_совместимости = 2

# TLS-параметры
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=да
smtpd_tls_session_cache_database = btree:${каталог_данных}/smtpd_scache
smtp_tls_session_cache_database = btree:${каталог_данных}/smtp_scache

smtpd_relay_restrictions = Permit_MyNetworks Permit_Sasl_аутентифицированный 
defer_unauth_destination
myhostname = xxx.com (у меня здесь настоящий)
mydomain = xxx.com (у меня здесь настоящий)

мое происхождение = $ мой домен

мой пункт назначения = локальный хост, локальный хост.локальный домен

#добавлен
smtp_sasl_auth_enable = да
smtp_sasl_password_maps = хеш:/etc/postfix/sasl_passwd
smtp_sasl_security_options = неанонимный

ретранслятор = [relay.dynu.com]:2525
smtp_sasl_use_tls = да
smtp_sasl_auth_enable = да
smtp_sasl_security_options = неанонимный
smtp_generic_maps = хеш:/etc/postfix/общий

мои сети = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
почтовый ящик_размер_лимит = 0
получатель_разделитель = +
inet_interfaces = все


smtpd_recipient_restrictions =
    разрешение_sasl_аутентифицированный,
    разрешение_mynetworks,
    reject_unauth_destinations

smtpd_helo_restrictions =
    разрешение_mynetworks,
    разрешение_sasl_аутентифицированный,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname,
    хеш check_helo_access:/etc/postfix/helo_access

smtpd_sasl_type = голубятня
smtpd_sasl_path = частный/авторизация
smtpd_sasl_auth_enable = да
smtpd_tls_auth_only = да

Master.cf

#
# Конфигурационный файл главного процесса Postfix. Для получения подробной информации о формате
# файла, см. справочную страницу master(5) (команда: "man 5 master" или
# он-лайн: http://www.postfix.org/master.5.html).
#
# Не забудьте выполнить "постфиксную перезагрузку" после редактирования этого файла.
#
# ================================================ ==========================
# тип сервиса private unpriv chroot wakeup maxproc command + args
# (да) (да) (нет) (никогда) (100)
# ================================================ ==========================
smtp инет n - y - - smtpd
2525 инет н - н - - smtpd
#smtp inet n - y - 1 постскрин
#smtpd проход - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
#отправка inet n - y - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=шифровать
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=нет
# -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, отклонить
# -o milter_macro_daemon_name=ИСХОДЯЩИЙ
smtps инет п - - - - smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=да
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,отклонить
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=нет
# -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, отклонить
# -o milter_macro_daemon_name=ИСХОДЯЩИЙ
#628 инет п-у--qmqpd
пикап unix n - y 60 1 пикап
очистка unix n - y - 0 очистка
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix--y 1000? 1 тлсмгр
переписать unix--y--тривиально-переписать
отказ unix - - y - 0 отказ
отложить unix - - y - 0 отказов
трассировка unix - - y - 0 отказов
проверить unix - - y - 1 проверить
прошить unix -ы 1000? 0 флеш
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
реле unix--y--smtp
        -o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - y - - showq
ошибка unix--y--ошибка
повторите попытку unix--y--ошибка
отбросить unix--y--отбросить
локальный unix - n n - - локальный
виртуальный unix - n n - - виртуальный
lmtp unix--y--lmtp
наковальня unix - - y - 1 наковальня
архив unix - - y - 1 архив
postlog unix-dgram n - n - 1 postlogd
#
# ================================================ ====================
# Интерфейсы к программному обеспечению, отличному от Postfix. Обязательно изучите инструкцию
# страниц программного обеспечения, отличного от Postfix, чтобы узнать, какие параметры ему нужны.
#
# Многие из следующих сервисов используют доставку Postfix pipe(8)
# агент. См. справочную страницу pipe(8) для получения информации о ${recipient}
# и другие параметры конверта сообщения.
# ================================================ ====================
#
# почтовая рассылка. Подробности смотрите в файле Postfix MAILDROP_README.
# Также укажите в main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - канал
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
# 
# ================================================ ====================
#
# Последние версии Cyrus могут использовать существующую запись "lmtp" master.cf.
#
# Указываем в cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Укажите в main.cf одно или несколько из следующего:
# mailbox_transport = lmtp:inet:localhost
# виртуальный_транспорт = lmtp:inet:localhost
#
# ================================================ ====================
#
# Cyrus 2.1.5 (Амос Гуо)
# Также указать в main.cf: cyrus_destination_recipient_limit=1 
#
#cyrus unix - n n - - труба
# user=cyrus argv=/cyrus/bin/deliver -e -r ${отправитель} -m ${расширение} ${пользователь}
#
# ================================================ ====================
# Старый пример доставки через Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ================================================ ====================
#
# Подробности конфигурации смотрите в файле Postfix UUCP_README.
#
uucp unix - n n - - канал
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Другие внешние способы доставки.
#
ifmail unix - n n - - канал
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - канал
  флаги=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
бэкенд-подсистема масштабирования unix — n n — 2 канала
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} 
${пользователь} ${расширение}
почтальон unix - n n - - труба
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${пользователь}

Dovecot 10-master.conf

Определенно прослушивается порт 993, как показано выше:

служба imap-логин {
  порт = 143
}
inet_listener IMAP {
  порт = 993
  SSL = да
}

Если есть какие-либо другие файлы конфигурации, которые необходимо проверить/выложить, дайте мне знать, и я могу показать.

Почтовый сервис Dynu / конфигурация fetchmail

Конфигурация Дину:

введите описание изображения здесь

Я также могу указать имя пользователя и пароль для входа:

введите описание изображения здесь

Fetchmailrc:

# /etc/fetchmailrc для общесистемного режима демона

# Этот файл должен быть chmod 0600, владелец fetchmail



set daemon 300 # Пул каждые 5 минут

set syslog # журнал через средство syslog

установить корень постмастера



set no bouncemail # избегайте потерь при ошибках 4xx

                            # с другой стороны, ошибки 5xx получаются

                            # более опасный...

# Хосты в пул


# По умолчанию ============================================== ===============
# Установите для антиспама значение -1, так как гораздо безопаснее использовать его вместе с

# нет отказов

значения по умолчанию:

тайм-аут 300

антиспам -1

пакетный лимит 100

опрос store1.dynu.com протокол POP3 имя пользователя "eric" пароль "пароль"

Итак, в приведенной выше конфигурации я все еще не получаю электронные письма.Должны ли имя пользователя и пароль в fetchmail совпадать с теми, что указаны в аутентификации для dynu? Это опрос store1.dynu.com протокол POP3 имя пользователя "eric" пароль "пароль" порция да?

флаг fr
Попробуйте опросить пользователя ETRN по протоколу store1.dynu.com. `
флаг fr
Исправление, это должно было быть `fetchdomains`, а не `user`: `poll store1.dynu.com протокол ETRN fetchdomains `.
Eric F avatar
флаг in
@Tomek Спасибо за предложение! Я пробовал это, но все равно никакие электронные письма не проходят. Я обнаружил, что мне не хватает `home_mailbox = Maildir/` и `mailbox_command = ` в моем файле main.cf. Добавление этих строк теперь позволяет мне отправлять электронное письмо самому себе (внутреннему в мою собственную сеть), что больше, чем я мог сделать раньше. Все еще не могу отправить извне, хотя
Eric F avatar
флаг in
@tomek Наконец-то я заработал! Ключ был в том, чтобы установить мой порт ETRN на dynu на 465 и аутентифицироваться, используя мое имя пользователя и пароль. Большое спасибо за вашу помощь, Томек!!
Рейтинг:2
флаг fr

Вы путаете разные сервисы. Ваш сервер промежуточного хранения @dynu настроен для ETRN. Это означает, что вы ДОЛЖНЫ инициировать передачу электронной почты с использованием протокола ETRN, и в результате dynu свяжется с вашим SMTP-сервером, вероятно, через порт ETRN (993), указанный выше. Вам не нужно голубятня слушать там, просто постфикс.

Один клиент ETRN, о котором я знаю, это fetchmail. Его справочная страница имеет это примечание:

Режим ETRN позволяет запрашивать совместимый сервер ESMTP (например, BSD sendmail версии 8.8.0 или выше), чтобы немедленно открыть отправитель-SMTP соединение с вашим клиентским компьютером и начать пересылку любые элементы, адресованные вашему клиентскому компьютеру в очереди сервера недоставленная почта.

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я никогда не запускал такую ​​настройку и не могу гарантировать, что это сработает.

РЕДАКТИРОВАТЬ: Команда fetchmail, вероятно, такова:

fetchmail store1.dynu.com -p etrn --fetchdomains <имя_вашего_домена>

давая следующую строку опроса:

протокол опроса store1.dynu.com etrn fetchdomains <your_domain_name>
Eric F avatar
флаг in
Спасибо за ответ. Я полагаю, что «SquirrelMail» делает то же самое? Я спрашиваю только потому, что это в исходной статье, которую я использовал (https://samhobbs.co.uk/2013/12/raspberry-pi-email-server-part-3-squirrelmail). Мне все еще нужен этот компонент независимо от клиентская сторона? Мне все еще нужно это, даже если я решу не использовать службу хранения / переадресации электронной почты dynu?
флаг fr
`dovecot` — это сервер IMAP и POP3, предназначенный для представления электронной почты из локального хранилища клиентским приложениям, таким как `thundirbird` или даже `outlook`. `squirrelmail`, насколько я помню, является веб-клиентом и, вероятно, может (или даже должен) использовать сервер IMAP или POP3 в качестве своего бэкенда. Так что он МОЖЕТ вам понадобиться, если вы хотите иметь веб-интерфейс, но он совершенно не нужен для самого ETRN.
Eric F avatar
флаг in
Большое спасибо! Я попробую установить/настроить fetchmail и отпишусь
флаг fr
Кстати, ваш порт ETRN, вероятно, должен быть не 993 (поскольку у вас там есть dovecot), а 26 или 2525. И вы должны настроить postfix для прослушивания этого порта. Или маршрутизатор, чтобы перенаправить его соответствующим образом.
Eric F avatar
флаг in
Как заставить postfix слушать этот порт? Оба 2526 и 26 открыты. Это в master.cf?
флаг fr
У вас уже есть постфикс, прослушивающий порт 2525, как я только что заметил в файле master.cf. Вероятно, это должен быть ваш порт ETRN.
Eric F avatar
флаг in
Томек - Уже БОЛЬШОЕ СПАСИБО за помощь. Наконец-то я установил fetchmail (вручную), но он работает. Смотрите мой обновленный вопрос, так как я все еще должен упустить что-то маленькое...

Ответить или комментировать

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