2

У меня недавно установлен сервер Debian 8, созданный для замены старого сервера postfix, работающего на Debian Lenny. При необходимости я установил и перенастроил следующие новые пакеты на новом сервере:

  • постфикс 2.11.3-1
  • dovecot 2.2.13-12 ~ deb8u1
  • amavisd-new 2.10.1-2 ~ deb8u1
  • spamassasin 3.4.0-6
  • clamav 0.99.2+dfsg-0+deb8u2
  • dkimproxy 1.4.1-3

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

Чего я не могу сделать, так это отправить любого пользователя, включая локальных пользователей, с самого сервера. Это влияет не только на «почту» консольной программы, но и на ежедневные отчеты, отправляемые с помощью скриптов, вызываемых в заданиях cron. Попытки использовать 'mail' или через файлы сценариев, пытающиеся отправить в локальные учетные записи, приводят к:

status=deferred (delivery temporarily suspended: host 127.0.0.1[127.0.0.1] refused to talk to me: 421 Internal error (Next hop is down))

main.cf:

mailbox_size_limit = 0
message_size_limit = 30000000

queue_directory = /var/spool/postfix

command_directory = /usr/sbin

daemon_directory = /usr/lib/postfix

mail_owner = postfix

myhostname = host.domain.com

myorigin = $mydomain

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

virtual_alias_maps = hash:/etc/postfix/virtual

mynetworks = 10.0.0.0/8, 127.0.0.0/8

relay_domains =

virtual_alias_domains = 

alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

content_filter = smtp-amavis:[127.0.0.1]:10028
smtp-amavis_destination_concurrency_limit = 20

smtpd_helo_required = yes
disable_vrfy_command = yes
smtpd_delay_reject = no

header_checks = regexp:/etc/postfix/header_checks.regexp
nested_header_checks =

smtpd_client_restrictions =
smtpd_helo_restrictions =
smtpd_sender_restrictions =
smtpd_recipient_restrictions =
        reject_unlisted_recipient,
        check_client_access    hash:/etc/postfix/GEN000_override,
        check_client_access  regexp:/etc/postfix/fqrdns.regexp,
        check_helo_access      hash:/etc/postfix/access,
        check_helo_access    regexp:/etc/postfix/helo_blacklist.regexp,
        check_sender_access    hash:/etc/postfix/blacklist,
        check_sender_access  regexp:/etc/postfix/sender_blacklist.regexp,
        check_sender_mx_access cidr:/etc/postfix/mx_access.txt,
        check_sender_access    hash:/etc/postfix/bdwl
        check_client_access    hash:/etc/postfix/broken_helos,
        reject_invalid_hostname,
        reject_non_fqdn_sender,
        reject_unknown_sender_domain,
        reject_unknown_recipient_domain,
        check_sender_access regexp:/etc/postfix/filter_10026_catchall,
        permit_mynetworks,
        reject_non_fqdn_hostname,
        reject_non_fqdn_recipient,
        reject_unauth_destination,
        check_recipient_access hash:/etc/postfix/restricted,
        reject_unknown_client,
        reject_unknown_hostname,
        reject_rbl_client zen.spamhaus.org,
        reject_rbl_client bl.spamcop.net,

smtpd_data_restrictions =
        reject_unauth_pipelining

debug_peer_level = 2

debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         xxgdb $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix

newaliases_path = /usr/bin/newaliases.postfix

mailq_path = /usr/bin/mailq.postfix

setgid_group = postdrop

html_directory = no

manpage_directory = /usr/share/man

sample_directory = /usr/share/doc/postfix-2.1.5/samples

readme_directory = /usr/share/doc/postfix-2.1.5/README_FILES

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=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
inet_protocols = ipv4

master.cf:

smtp      inet  n       -       n       -       -       smtpd
pickup    fifo  n       -       n       60      1       pickup
        -o content_filter=dkimsign:127.0.0.1:10026
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
old-cyrus unix  -       n       n       -       -       pipe
  flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
cyrus     unix  -       n       n       -       -       pipe
  user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
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=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient

scache    unix  -       -       n       -       1       scache
discard   unix  -       -       n       -       -       discard
tlsmgr    unix  -       -       n       1000    1       tlsmgr

smtp-amavis unix -      -       n     -       2  smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20

127.0.0.1:10025 inet n  -       n     -       -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks_style=host
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

retry     unix  -       -       n       -       -       error
proxywrite unix -       -       n       -       1       proxymap

submission  inet  n     -       n       -       -       smtpd
    -o smtpd_etrn_restrictions=reject
    -o smtpd_sasl_auth_enable=yes
    -o content_filter=dkimsign:[127.0.0.1]:10027
    -o receive_override_options=no_address_mappings
    -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
    -o smtpd_client_restrictions=permit_mynetworks,reject

dkimsign    unix  -       -       n       -       10       smtp
    -o smtp_send_xforward_command=yes
    -o smtp_discard_ehlo_keywords=8bitmime,starttls

127.0.0.1:10028 inet  n  -      n       -       10      smtpd
    -o content_filter=
    -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8

Метод проб и ошибок определил, что отключение этого фильтра содержимого в master.cf ...

pickup    fifo  n       -       n       60      1       pickup
        -o content_filter=dkimsign:127.0.0.1:10026

... позволяет обрабатывать почту, отправленную по почте или через cron. Однако проблема не существует, если эта строка включена на исходном сервере postfix (2.5.5-1.1+lenny1). Унаследовав старый сервер, я не совсем в курсе того, что делает эта линия, но старый сервер работает и работает годами, поэтому я не хочу слепо вынимать линию, не зная, что я могу сломать процесс.

Вот некоторые результаты вывода netstat -tapn, показывающие, что сервер прослушивает порт 10026:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      1/init
tcp        0      0 127.0.0.1:10023         0.0.0.0:*               LISTEN      4404/postgrey.pid -
tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      4731/amavisd-new (m
tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      4699/master
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      4385/mysqld
tcp        0      0 127.0.0.1:10026         0.0.0.0:*               LISTEN      4424/perl
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      4699/master
tcp        0      0 127.0.0.1:10027         0.0.0.0:*               LISTEN      4442/perl
tcp        0      0 127.0.0.1:10028         0.0.0.0:*               LISTEN      4699/master
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      1/init
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      3205/rpcbind

А вот то же самое с оригинального полнофункционального сервера:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:60000         0.0.0.0:*               LISTEN      3649/postgrey.pid -
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      4254/dovecot
tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      3504/amavisd (maste
tcp        0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN      4186/master
tcp        0      0 127.0.0.1:10026         0.0.0.0:*               LISTEN      4098/perl
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3573/mysqld
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      4186/master
tcp        0      0 127.0.0.1:10027         0.0.0.0:*               LISTEN      4106/perl
tcp        0      0 127.0.0.1:10028         0.0.0.0:*               LISTEN      4186/master
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      4146/inetd
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      4254/dovecot

За исключением порта для postgrey, я убедился, что все порты 100xx соответствуют функциям на обоих серверах.

На данный момент я не знаю, где еще искать. Пожалуйста, помоги, если можешь!

2 ответа2

2

Я нашел ответ! Оказывается, предыдущий администратор не учел включить раздел в master.cf для указания порта ретрансляции, который был указан в файле dkimproxy_in.conf:

# specify what address/port DKIMproxy should listen on
listen    127.0.0.1:10026

# specify what address/port DKIMproxy forwards mail to
relay     127.0.0.1:10029

Добавление этого раздела в master.cf вылечило проблему:

127.0.0.1:10029 inet  n  -      n       -       10      smtpd
    -o content_filter=
    -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8

По-видимому, оригинальная система, работающая на lenny, каким-то образом допускает упущение, не вызывая каких-либо проблем или жалоб.

Спасибо тем, кто нашел время, чтобы прочитать и / или ответить!

-1

Кажется, это проблема, у которой просто нет единственного решения.

измените следующее в своем файле "main.cf" и дайте мне знать, если это работает для вас, на вашем месте, я бы попробовал решения по одному, чтобы увидеть, какой из них на самом деле вызывает ошибку, (но если думать вслух Я думаю, что все они должны быть изменены.

1.

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

изменить на:

mydestination = $myhostname, $mydomain, localhost.localdomain, localhost

2.

mynetworks = 10.0.0.0/8, 127.0.0.0/8

изменить на:

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

3. добавить:

inet_interfaces = all

4. добавить:

relayhost = [127.0.0.0]

Определение RelayHost:

relayhost (по умолчанию: пусто)

Адрес следующего перехода нелокальной почты; переопределяет нелокальные домены в адресах получателей. Эта информация отменяется с помощью relay_transport, sender_dependent_default_transport_maps, default_transport, sender_dependent_relayhost_maps и с таблицей transport(5).

В интрасети укажите имя домена организации. Если ваш внутренний DNS не использует записи MX, вместо этого укажите имя хоста шлюза интрасети.

В случае SMTP укажите имя домена, имя хоста, имя хоста: порт, [имя хоста]: порт, [адрес хоста] или [адрес хоста]: порт. Форма [имя хоста] отключает поиск MX.

Если вы подключены через UUCP, обратитесь к файлу UUCP_README за полезной информацией.

Примеры:

relayhost = $mydomain

relayhost = [gateway.example.com]

relayhost = uucphost

relayhost = [an.ip.add.ress]

после просмотра примеров relayhost я почти испытываю желание предложить такое решение:

relayhost = mynetworks

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