Bild in Email wirt nicht dagestellt, Anhänge teilweise zerstört

vanedler

Well-Known Member
Hallo Leute,

folgendes Problem mit meinem Server (Apache2.0, PHP4.10, Postfix, Courier). Habe auf meiner Homepage ein Kontaktformular und ein Grußkartensystem. Wenn ich nun eine Email darüber absende, dann kommt ein eigebettetes Bild nicht richtig an. An den Scripten liegt es nicht, da sie auf einem anderen System funktionieren. Sendmail wurde auf meinem Serverkomplett abgeschaltet und durch Postfix ersetzt.

Hier die main.cf von Postfix:

Code:
###Basic Settings###
#
mynetworks = netzwerkname
mynetworks_style = host
mydestination = $transport_maps
#
readme_directory = no
sample_directory = /usr/local/etc/postfix
html_directory = no
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
command_directory = /usr/local/sbin
manpage_directory = /usr/local/man
daemon_directory = /usr/local/libexec/postfix
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
unknown_local_recipient_reject_code = 450
#
#
#
###Message and Queue Settings###
#
message_size_limit = 15728640
# Messages bigger than 15MB not allowed
maximal_queue_lifetime = 30
queue_minfree = 23592960
# 22,5MB minimum free queue garanteed
#
#
#
###Virtual Settings###
#
virtual_mailbox_base = /usr/local/virtual
virtual_transport = virtual
virtual_uid_maps = static:125
virtual_gid_maps = static:125
#
###Postfix MySQL Maps###
#
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
#
#
#
###Additional for quota support###
#
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = yes
virtual_maildir_limit_message = Die Mailbox des Empfängers ist voll. Bitte versuchen Sie es später erneut. Sorry, the user's
#
#
#
####If you want to use MySQL also to store your Backup MX domains, add this as well###
#
relay_domains = mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf
#
#
#
###Sasl2 Authentification###
#
smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name = smtpd
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_banner = $myhostname ESMTP
broken_sasl_auth_clients = yes
smtpd_helo_required = yes
smtpd_delay_reject = no
#disable_vrfy_command = yes
###Smtpd Restrictions###
#
smtpd_client_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
#    reject_unknown_client,
#    reject_rbl_client dul.dnsbl.sorbs.net,
    reject_rbl_client relays.ordb.org,
    reject_rbl_client sbl-xbl.spamhaus.org,
    reject_rbl_client opm.blitzed.org,
    reject_rbl_client list.dsbl.org,
    reject_rbl_client bl.spamcop.net,
#    reject_rhsbl_client dul.dnsbl.sorbs.net,
    reject_rhsbl_client relays.ordb.org,
    reject_rhsbl_client sbl-xbl.spamhaus.org,
    reject_rhsbl_client opm.blitzed.org,
    reject_rhsbl_client list.dsbl.org,
    reject_rhsbl_client bl.spamcop.net,
    permit
#
smtpd_helo_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_invalid_hostname,
#    reject_unknown_hostname,
#    reject_non_fqdn_hostname,
   permit
#
smtpd_sender_restrictions =
    reject_unknown_sender_domain,
    reject_non_fqdn_sender,
    reject_rhsbl_sender dul.dnsbl.sorbs.net,
    reject_rhsbl_sender relays.ordb.org,
    reject_rhsbl_sender sbl-xbl.spamhaus.org,
    reject_rhsbl_sender opm.blitzed.org,
    reject_rhsbl_sender list.dsbl.org,
    reject_rhsbl_sender bl.spamcop.net,
#    reject_sender_login_mismatch,
    check_sender_access hash:/usr/local/etc/postfix/maps/freemail_check,
    permit
#
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_unknown_recipient_domain,
    reject_non_fqdn_recipient,
    permit
#
smtpd_data_restrictions =
    permit_mynetworks,
    reject_unauth_pipelining,
    permit
#
#
#
###PCRE checks against Spamming and not allowed attachement mime-types###
#
smtpd_restriction_classes =
    header_check
    mime_header_check
    body_check
    freemail_hotmail
    freemail_msn
    freemail_yahoo
    freemail_web
    freemail_gmx
    freemail_freenet
#
header_check =
    header_checks pcre:/usr/local/etc/postfix/maps/header_check
#
mime_header_check =
    mime_header_checks pcre:/usr/local/etc/postfix/maps/mime_header_check
#
body_check =
    body_checks = pcre:/usr/local/etc/postfix/maps/body_check
#
freemail_hotmail =
    check_client_access pcre:/usr/local/etc/postfix/maps/freemail_hotmail
#
freemail_msn =
    check_client_access pcre:/usr/local/etc/postfix/maps/freemail_msn
#
freemail_yahoo =
    check_client_access pcre:/usr/local/etc/postfix/maps/freemail_yahoo
#
freemail_web =
    check_client_access pcre:/usr/local/etc/postfix/maps/freemail_web
#
freemail_gmx =
    check_client_access pcre:/usr/local/etc/postfix/maps/freemail_gmx
#
freemail_freenet =
    check_client_access pcre:/usr/local/etc/postfix/maps/freemail_freenet

Hier die Email, einmal heil und einmal kaputt (von meinem Server):

Heile Email von einem anderen System aus:

Code:
Return-Path: <cgi-mailer-bounces-66699332@kundenserver.de>
Delivery-Date: Mon, 07 Feb 2005 18:38:35 +0100
Received: from [212.227.126.189] (helo=moutng.kundenserver.de)
        by mxeu8.kundenserver.de with ESMTP (Nemesis),
        id 0MKt1w-1CyCqJ13OC-0002MN; Mon, 07 Feb 2005 18:38:35 +0100
Received: from [212.227.126.203] (helo=mrvnet.kundenserver.de)
        by moutng.kundenserver.de with esmtp (Exim 3.35 #1)
        id 1CyCqJ-0006e1-00
        for mail@ajwalther.de; Mon, 07 Feb 2005 18:38:35 +0100
Received: from [212.227.119.46] (helo=infong157 ident=8)
        by mrvnet.kundenserver.de with smtp (Exim 3.35 #1)
        id 1CyCqI-0001R4-00
        for mail@ajwalther.de; Mon, 07 Feb 2005 18:38:34 +0100
Received: from [80.228.56.35](IP may be forged by CGI script)
        by infong157.kundenserver.de with HTTP; Mon, 7 Feb 2005 18:38:34 +0100
Date: Mon, 7 Feb 2005 18:38:34 +0100
Precedence: bulk
To: mail@ajwalther.de
Subject: Homepage-Online-Kontaktformular
MIME-Version: 1.0
From: Ihre.Homepage@IhreDomain.com
Content-Type: multipart/mixed;
        boundary="=_f4d1820cba40a9efee677d023b3f7fb1"
Message-ID: <ibjyca.5lzttr@www.meinedomain.de>
X-Provags-ID: kundenserver.de abuse@kundenserver.de sender-info:66699332@infong157
Envelope-To: mail@ajwalther.de

--=_f4d1820cba40a9efee677d023b3f7fb1
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit

text
--=_f4d1820cba40a9efee677d023b3f7fb1
Content-Type: image/pjpeg
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="CAMN0LUNttt.jpg"

/9j/4AAQSkZJRgABAQEASABIAAD/7AARRHVja3kAAQAEAAAAMgAA/9sAQwAIBgYHBgUIBwcHCQkI
... ungefähr noch 200 Zeilen Kuddel-Muddel

Bei obiger Mail geht alles klar. Bild ist in die Email eingebettet und sichtbar. Bei meinem System ist das Bild (s. unten) nicht sichtbar, stattdessen kommt der Code des Bildes als Text....?


Kaputte E-Mail von meinem System:

Code:
Return-Path: <www@webserver.com>
Delivery-Date: Mon, 07 Feb 2005 18:38:48 +0100
Received: from [IP] (helo=mailserver.com)
        by mxeu4.kundenserver.de with ESMTP (Nemesis),
        id 0MKqlY-1CyCqW2WJf-0005At; Mon, 07 Feb 2005 18:38:48 +0100
Received: by mailserver.com (Postfix, from userid 80)
        id 7D52022826; Mon,  7 Feb 2005 18:38:41 +0100 (CET)
To: mail@ajwalther.de
Subject: Homepage-Online-Kontaktformular
MIME-Version: 1.0
From: Ihre.Homepage@IhreDomain.com
Content-Type: multipart/mixed;
        boundary="=_c38363ca149cc6cb4f314a9f5c4f4b76"
Message-ID: <ibjych.enkcnm@www.meinedomain.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64
Date: Mon,  7 Feb 2005 18:38:41 +0100 (CET)
Envelope-To: mail@ajwalther.de
X-SpamScore: 1.629
        tests= MIME_BASE64_NO_NAME MIME_BASE64_TEXT NO_REAL_NAME

LS09X2MzODM2M2NhMTQ5Y2M2Y2I0ZjMxNGE5ZjVjNGY0Yjc2CkNvbnRlbnQtVHlwZTogdGV4dC9w
... ungefähr noch 200 Zeilen Kuddel-Muddel

Das Kuddel-Muddel ist der Quellcode vom Bild. Ist nicht zerstört, wenn man eine Datei daraus macht...

Was ist da nur falsch? Ich komme einfach nicht darauf. Scheint ja schon an Postfix zu liegen...?

Viele Grüße, Vanessa
 
eventuell werden die Bilder von amavis oder SpamAssassin zerhackt.
Im zweiten log taucht eine interresante Meldung auf
Code:
X-SpamScore: 1.629
        tests= MIME_BASE64_NO_NAME MIME_BASE64_TEXT NO_REAL_NAME
da in deiner konfig nichts auf einen kontentfilter hindeutet solltest du mal die master.cf prüfen

wenn du SpamAssassin im einsatz hast prüfe mal den parameter "report_safe".
 
vanedler schrieb:
Was ist da nur falsch? Ich komme einfach nicht darauf. Scheint ja schon an Postfix zu liegen...?

Du solltest mal herausfinden wer für die Content-Type Header zuständig ist.
Ich weiss nicht genau wer dafür zuständig ist, ob MUA (also Dein Skript) oder MTA (in Deinem Fall Postfix). Aber der MUA des Empfängers stellt Dein Bild als Text da weil ihm erzählt wird es sei Text:

vanedler schrieb:
Code:
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64
Date: Mon,  7 Feb 2005 18:38:41 +0100 (CET)
Envelope-To: mail@ajwalther.de
X-SpamScore: 1.629
        tests= MIME_BASE64_NO_NAME MIME_BASE64_TEXT NO_REAL_NAME

LS09X2MzODM2M2NhMTQ5Y2M2Y2I0ZjMxNGE5ZjVjNGY0Yjc2Ck  NvbnRlbnQtVHlwZTogdGV4dC9w
... ungefähr noch 200 Zeilen Kuddel-Mudde
l

SpamAssassin oder was Du da verwendest kommt erst viel später in der Kette, daran wird's nicht liegen.
 
mmm...
Ja da hast du recht. Scheint so als würde der Header zwei mal gebaut. Erst von PHP mit ContentType: Mixed, dann nochmal von Postfix mit ContentType: Text

Bin immer noch am suchen, warum das so ist. Hier nochmal die master.cf:

Code:
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#smtps    inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission   inet    n       -       n       -       -       smtpd
#  -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_etrn_restrictions=reject
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
#tlsmgr   fifo  -       -       n       300     1       tlsmgr
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
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
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
#
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# maildrop. See the Postfix MAILDROP_README file for details.
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
old-cyrus unix  -       n       n       -       -       pipe
  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
cyrus     unix  -       n       n       -       -       pipe
  user=cyrus argv=/cyrus/bin/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

Spamassassin verwende ich schon (wurde bei der Installation von Webmail installiert) ich glaube aber. dass Postfix Spamassassin ignoriert. Sämtliche Spamassassinänderungen haben keine Wirkung. Jedenfalls habe ich (noch) keine Ahnung von Spamassassin...

Vielleicht fällt euch ja noch etwas ein, oder habt einen Tipp ;-)

Vanessa
 
vanedler schrieb:
mmm...
Ja da hast du recht. Scheint so als würde der Header zwei mal gebaut. Erst von PHP mit ContentType: Mixed, dann nochmal von Postfix mit ContentType: Text

Schau Dir Dein Skript nochmal genau an. Ich meine es liegt am Skript und nicht an Deinem MTA.
Ich hab' eben Mal mit Mozilla eine Test-Mail zusammengestellt bestehend aus Text und einem Attachment. Ich hab' sie aber nicht abgesendet sondern nur als Draft auf meinem IMAP Server gespeichert.
Wenn ich nun die eMail anschaue (welche noch keinen MTA gesehen hat), dann stehen da die (korrekten) Eintraege drin:

Code:
Content-Type: multipart/mixed;
 boundary="------------090107050901090404010109"

This is a multi-part message in MIME format.
--------------090107050901090404010109
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

[...]

--------------090107050901090404010109
Content-Type: application/pdf;
 name="file.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="file.pdf"

Ich wollte damit eigentlich nur rausfinden wer fuer die Header zustaendig ist -- sieht so aus als sei es der MUA.
 
Habe noch ein Paar Tests gemacht...

Also am Script liegt es definitiv nicht. Habe noch einen anderen Server, auf dem die Standard Sendmail drauf ist (also ein reiner Webserver) dort läuft das Skript einwandfrei. Ich glaube auch, dass es nicht an Spamassassin liegt. Jedenfalls kann ich dort keinen Fehler finden. Ansonsten habe ich keinen Content-Filter drauf, obwohl ich es auch schon mal mit amavisd und clamad probiert habe...

Ich habe auch noch einen andere Fehler im Mailsystem entdeckt. Manche Emails (vorwiegend html) werden in meinem Webmail gar nicht oder mit Fehlern dargestellt. Als Webmail verwende ich IMP4 von Horde. Wenn ich die Mails (die mit Fehlern) dann per Outlook abhole sind sie aber richtig dargestellt. Bilder sind aber auch mit Outlook als Textanhang...

Ratlos...? ;-(
 
Lösung

zur Info,
es lag ab der mbstring Einstellung in der php.ini.
Weg mit mbstring uns siehe da es funkt...
 
Zurück
Oben