Назад | Перейти на главную страницу

Altermime работает только с веб-почтой (postfix + amavis)

Я видел в Интернете другие ссылки на эту проблему, но они относятся к другим почтовым серверам. В моем случае я использую Postfix и Dovecot, за Инструкции Линоде. В мой стек входят postfix, dovecot, opendkim, amavis, spamassassin, roundcube, sieve, ubuntu.

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

Вот несколько выдержек из моего /etc/postfix/master.cf:

smtp       inet  n       -       y       -       -       smtpd
-o content_filter=spamassassin
-o content_filter=dfilt:

127.0.0.1:10025 inet n   -       y       -       -       smtpd
-o content_filter=

-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o mynetworks=127.0.0.0/8

-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

spamassassin unix -     n       n       -       -       pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}

policyd-spf  unix  -       n       n       -       0       spawn
user=policyd-spf argv=/usr/bin/policyd-spf
dfilt unix -     n       n       -       -       pipe
flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient}

Из /etc/amavis/conf.d:

$log_level = 5;
$sa_debug = 1;
$altermime = '/usr/bin/altermime';
# @local_domains_maps = ['127.0.0.1','127.0.0.1:10025','domain.com', 'mail.domain.com','hostname.domain.com','localhost','localhost.localdomain'];
$defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ];
# @disclaimer_options_bysender_maps = ( { '.' => '$3.$5' });
@altermime_args_disclaimer = qw(--disclaimer=/etc/postfix/disclaimer.txt --disclaimer-b64=/etc/postfix/disclaimer.txt --disclaimer-html=/etc/postfix/disclaimer.txt --force-for-bad-html);
$policy_bank{'MYNETS'} = { 
  originating => 1,
  os_fingerprint_method => undef,
  allow_disclaimers => 1,
};
$policy_bank{'MYUSERS'} = {
  originating => 1,
  allow_disclaimers => 1,
};

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

В / etc / postfix / отказ от ответственности:

INSPECT_DIR=/var/spool/filter
SENDMAIL=/usr/sbin/sendmail
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
trap "rm -f in.$$" 0 1 2 3 15
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit
$EX_TEMPFAIL; }
cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
/usr/bin/altermime --input=in.$$ \
--disclaimer=/etc/postfix/disclaimer.txt \
--disclaimer-html=/etc/postfix/disclaimer.txt \
--disclaimer-b64=/etc/postfix/disclaimer.txt ||
                { echo Message content rejected; echo Message content rejected >> /etc/postfix/footers/errors.log; exit $EX_UNAVAILABLE; }
$SENDMAIL -oi "$@" <in.$$
exit $?

Если я перезапущу amavis и dovecot, а затем отправлю электронное письмо, altermime отлично работает в веб-почте, но не Thunderbird или клиент на моем устройстве Android.

Кроме того, если я бегу tail /var/log/mail.log -n 200 | grep "altermime", Никогда не упоминается altermime - даже когда я успешно прикрепляю отказ от ответственности к веб-почте! Поэтому я не знаю, как дальше устранять эту проблему.