ClamAV und Postfix: Clamsmtp, Amavisd-new, Clapf, clamav-milter usw.

klodeckl

New Member
Hallo,

langsam bin ich schon total vergooglet ;-)

Ich habe einen neuen Server aufgesetzt mit Plesk 9.5.2 und möchte da auf Postfix + Spamassassin + ClamAV + RBLs usw. setzen (hatte vorher Qmail mit Spamdyke und Spamassassin). Jetzt habe ich es mit ClamSMTP zum laufen gebracht, dachte das nehme ich, weil es angeblich relativ wenig Speicher benötigt. Allerdings hätte ich gerne, dass eine ausgehende Mail direkt einen Reject bekommt während des sendens. Clamsmtp kann so wie ich das gesehen hat nicht, sondern nur drop, pass oder bounce.

Meine Frage ist jetzt: Was ist der Unterschied zwischen ClamSTMP, Amavis new, Clapf und Clamav-milter bzw. gibt es sonst noch welche und mit welchem kann ich direkt rejecten? Danke für eure Hilfe!!!
 
Okay, ich bin wieder ein Stück weiter mit meinem Wissensdurst gekommen, was ich will ist ein Milter damit ich die während des SMTP-Transports rejecten kann bei einem Virus. Jetzt frage ich mich nur noch, was besser ist, der amavisd-new-milter oder clamav-milter. Was ist besser bzw. braucht weniger Speicher, der clamav-milter?
 
Ich habe nun versucht clamav-milter zum Laufen zu bekommen, aber irgendwas passt nicht:
Code:
Oct  6 03:27:59 xyz postfix/smtpd[11289]: connect from p5DC48862.dip0.t-ipconnect.de[xx.xx.xx.xx]
Oct  6 03:27:59 xyz postfix/smtpd[11289]: warning: connect to Milter service unix:/var/spool/postfix/clamav/clamav-milter.ctl: No such file or directory
Oct  6 03:27:59 xyz postfix/smtpd[11289]: NOQUEUE: milter-reject: CONNECT from p5DC48862.dip0.t-ipconnect.de[xx.xx.xx.xx]: 451 4.7.1 Service unavailable - try again later; proto=SMTP
Oct  6 03:27:59 xyz postfix/smtpd[11289]: NOQUEUE: milter-reject: EHLO from p5DC48862.dip0.t-ipconnect.de[xx.xx.xx.xx]: 451 4.7.1 Service unavailable - try again later; proto=SMTP helo=<klodeckl.fritz.box>

Ich dachte nun immer, es liegt vielleicht am chroot von Postfix, daher habe ich zum einen den Socket anders gelegt:
/etc/clamav/clamav-milter.conf:
MilterSocket /var/spool/postfix/clamav/clamav-milter.ctl

Und /etc/postfix/main.cf:
smtpd_milters = unix:/var/spool/postfix/clamav/clamav-milter.ctl

Hat nichts gebracht.

In der master.cf habe ich auch versucht chroot abzuschalten (das n gesetzt):
smtp unix - - n - - smtp

Auch ohne Erfolg.

Was könnte da noch das Problem sein?
 
Mal im Verzeichnis nachgesehen, ob der Socket auch wirklich dort angelegt wurde? Clamav-Milter und Postfix neu gestartet (Reload reicht IIRC nicht)
Ggfl. mußt du auch die Rechte an dem Socket anpassen, bei Debian geht das über die /etc/default/clamav-milter, wie es bei anderen Distris aussieht, kann ich dir nicht sagen.
 
Der Socket wurde erstellt, die Rechte sind sperangelweit offen und in der /etc/default/clamav-milter steht auch SOCKET_RWGROUP=postfix. Was kann es noch sein?
 
Ich habe bei mir auch den Eintrag smtp inet aus dem chroot genommen. Den solltest du auch noch anpassen, wenn nicht bereit geschehen.
 
Hier noch meine kompletten Config-Dateien:

/etc/postfix/main.cf:
Code:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/postfix_default.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = eckl-medien.de
alias_maps = hash:/etc/aliases, hash:/var/spool/postfix/plesk/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.de.de, localhost, localhost.localdomain
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
virtual_mailbox_maps = hash:/var/spool/postfix/plesk/vmailbox
transport_maps = hash:/var/spool/postfix/plesk/transport
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_use_tls = no
smtpd_timeout = 3600s
smtpd_proxy_timeout = 3600s
smtpd_sender_restrictions = check_sender_access hash:/var/spool/postfix/plesk/blacklists, permit_sasl_authenticated, check_client_access pcre:/var/spool/postfix/plesk/non_auth.re
smtp_send_xforward_command = yes
smtpd_authorized_xforward_hosts = 127.0.0.0/8
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, check_client_access pcre:/var/spool/postfix/plesk/no_relay.re, permit_sasl_authenticated, reject_unauth_destination
virtual_mailbox_base = /var/qmail/mailnames
virtual_uid_maps = static:110
virtual_gid_maps = static:31
virtual_transport = plesk_virtual
plesk_virtual_destination_recipient_limit = 1
smtpd_client_restrictions = 
message_size_limit = 15360000

# clamav-milter
#smtpd_milters = unix:/var/spool/postfix/clamav/clamav-milter.ctl

/etc/postfix/master.cf
Code:
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp inet n - - - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025
#submission inet n       -       -       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       -       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628      inet  n       -       -       -       -       qmqpd
pickup fifo n - - 60 1 pickup -o content_filter=smtp:127.0.0.1:10027
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  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  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
    -o smtp_fallback_relay=
#       -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
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# See the Postfix UUCP_README file for configuration details.
#
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=R user=list:list argv=/usr/lib/plesk-9.0/postfix-mailman ${nexthop} ${user} ${recipient}


plesk_virtual unix - n n - - pipe flags=DORhu user=popuser:popuser argv=/usr/lib/plesk-9.0/postfix-local -f ${sender} -d ${recipient} -p /var/qmail/mailnames
127.0.0.1:10025 inet n n n - - spawn user=mhandlers-user argv=/usr/lib/plesk-9.0/postfix-queue 127.0.0.1 10027 before-queue
127.0.0.1:10026 inet n - - - - smtpd  -o smtpd_client_restrictions=  -o smtpd_helo_restrictions=  -o smtpd_sender_restrictions=  -o smtpd_recipient_restrictions=permit_mynetworks,reject  -o smtpd_data_restrictions=  -o receive_override_options=no_unknown_recipient_checks
127.0.0.1:10027 inet n n n - - spawn user=mhandlers-user argv=/usr/lib/plesk-9.0/postfix-queue 127.0.0.1 10026 before-remote
plesk_saslauthd unix y y y - 1 plesk_saslauthd status=5 listen=6 dbpath=/plesk/passwd.db


smtps inet n - - - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_tls_wrappermode=yes

submission inet n - - - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_proxy_filter=127.0.0.1:10025

/etc/clamav/clamav-milter.conf
Code:
#Automatically Generated by clamav-milter postinst
#To reconfigure clamav-milter run #dpkg-reconfigure clamav-milter
#Please read /usr/share/doc/clamav-base/README.Debian.gz for details
#MilterSocket /var/run/clamav/clamav-milter.ctl
MilterSocket /var/spool/postfix/clamav/clamav-milter.ctl
FixStaleSocket true
User clamav
AllowSupplementaryGroups true
ReadTimeout 120
Foreground false
PidFile /var/run/clamav/clamav-milter.pid
ClamdSocket unix:/var/run/clamav/clamd.ctl
OnClean Accept
OnInfected Quarantine
OnFail Defer
AddHeader Replace
LogSyslog false
LogFacility LOG_LOCAL6
LogVerbose false
LogInfected Off
MaxFileSize 25M
TemporaryDirectory /tmp
LogFile /var/log/clamav/clamav-milter.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0M
MilterSocketGroup clamav
MilterSocketMode 666

/etc/default/clamav-milter
Code:
#
# clamav-milter init options
#

## SOCKET_RWGROUP
# by default, the socket created by the milter has permissions
# clamav:clamav:755. SOCKET_RWGROUP changes the group and changes the
# permissions to 775 to give read-write access to that group.
#
# If you are using postfix to speak to the milter, you have to give permission
# to the postfix group to write 
#
SOCKET_RWGROUP=postfix

Ich komm einfach nicht drauf, was noch das Problem ist…
 
Du hast zwei smtp Einträge in der master.cf, einer vom Type unix (da hast du das chroot ja schon auf n gesetzt) und einen vom Type inet (das ist der erste in deiner master.cf). Und beim ersten mußt du noch das chroot mit dem n rausnehmen.
 
Danke für den Hinweis, hat aber auch nicht gefruchtet :-(
Was kann ich noch machen? Das kann doch nicht sein.

Hier die jetzige Config:

Code:
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025
#submission inet n       -       -       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628      inet  n       -       -       -       -       qmqpd
pickup fifo n - - 60 1 pickup -o content_filter=smtp:127.0.0.1:10027
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  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
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
    -o smtp_fallback_relay=
#       -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
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# See the Postfix UUCP_README file for configuration details.
#
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=R user=list:list argv=/usr/lib/plesk-9.0/postfix-mailman ${nexthop} ${user} ${recipient}


plesk_virtual unix - n n - - pipe flags=DORhu user=popuser:popuser argv=/usr/lib/plesk-9.0/postfix-local -f ${sender} -d ${recipient} -p /var/qmail/mailnames
127.0.0.1:10025 inet n n n - - spawn user=mhandlers-user argv=/usr/lib/plesk-9.0/postfix-queue 127.0.0.1 10027 before-queue
127.0.0.1:10026 inet n - - - - smtpd  -o smtpd_client_restrictions=  -o smtpd_helo_restrictions=  -o smtpd_sender_restrictions=  -o smtpd_recipient_restrictions=permit_mynetworks,reject  -o smtpd_data_restrictions=  -o receive_override_options=no_unknown_recipient_checks
127.0.0.1:10027 inet n n n - - spawn user=mhandlers-user argv=/usr/lib/plesk-9.0/postfix-queue 127.0.0.1 10026 before-remote
plesk_saslauthd unix y y y - 1 plesk_saslauthd status=5 listen=6 dbpath=/plesk/passwd.db


smtps inet n - - - - smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_tls_wrappermode=yes

submission inet n - - - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_restrictions= -o smtpd_proxy_filter=127.0.0.1:10025


Wenn ich beim Versand im Client auf nicht SSL stelle, bekomme ich jetzt eine andere Fehlermeldung:
Oct 6 19:29:21 eckl-medien postfix/smtpd[13727]: warning: SASL authentication failure: no secret in database
Oct 6 19:29:21 eckl-medien postfix/smtpd[13727]: warning: p5DC48A0D.dip0.t-ipconnect.de[93.196.138.13]: SASL CRAM-MD5 authentication failed: authentication failure

Wenn ich wieder auf SSL stelle, die alte Fehlermeldung mit No such file or directory…
 
Okay, habe die Zeile für smtps gefunden und auch auf n gestellt, nun bekomme ich für nicht SSL und SSL die Fehlermeldung:

Oct 6 19:43:47 xyz postfix/smtpd[14143]: warning: p5DC48A0D.dip0.t-ipconnect.de[93.196.138.13]: SASL CRAM-MD5 authentication failed: authentication failure
 
Last edited by a moderator:
Das sieht mir nach einem Problem mit SASL aus, da weiß ich aber nicht, wie Plesk das handhabt, da ich auf meinem Server kein Plesk laufen habe.
 
Sorry, hab leider nur eine Zeiler der Logausgabe kopiert:

Oct 6 20:15:32 xyz postfix/smtpd[14885]: connect from p5DC48A0D.dip0.t-ipconnect.de[93.196.138.13]
Oct 6 20:15:33 xyz postfix/smtpd[14885]: warning: SASL authentication failure: no secret in database
Oct 6 20:15:33 xyz postfix/smtpd[14885]: warning: p5DC48A0D.dip0.t-ipconnect.de[93.196.138.13]: SASL CRAM-MD5 authentication failed: authentication failure

Google lässt mich zumindest vermuten, dass es immer noch mit dem chroot zusammenhängt.
 
Das kannst du ja einfach überprüfen, indem du die Änderungen bez. chroot wieder rückgängig machst.
IIRC chrootet Postfix nach /var/spool/postfix, wenn dein Clamav-Milter den Socket nach /var/spool/postfix/clamav/clamav-milter.ctl schreibt, dann muß der ge-chroot-ete Pfad in der main.cf stehen: /clamav/clamav-milter.ctl
In der clamav-Config bleibt natürlich weiterhin der komplette Pfad stehen, daß Clamav-Milter ja nicht im chroot läuft.
Das hätte mir auch schon eher einfallen können <Brett vorm Kopf wegnehm...>
 
Oh man, das wars! Ist ja logisch, hätte man auch früher drauf kommen können. Vielen Dank!!!

Jetzt ist es aber so, dass die Mail genauso wie bei Clamsmtp nur verworfen wird und ich beim senden auch keinen Error Code bekomme. Wo man das aktiviert habe ich bis jetzt noch in keiner Doku gefunden. Das hier wird in der Log ausgegeben:

Oct 6 21:52:30 xyz postfix/cleanup[16376]: 508F342A4: milter-hold: END-OF-MESSAGE from localhost.localdomain[127.0.0.1]: milter triggers HOLD action; from=<sdfasfs@xyz.de> to=<safd@xyz.de> proto=ESMTP helo=<<sdaf.asfsadf>
 
Habe mir die Config-Einstellungen ergoogelt: http://www.vivaolinux.com.br/etc/clamavmilter.conf

Mit folgenden Einstellungen wird ein reject ausgelöst:

OnInfected Reject
(Standard ist hier Quarantine)

Auch sehr nützlich um die Nachricht anzupassen:
RejectMsg Your message was not delivered because you sent a message containing a virus: %v

Wo gibt es denn eigentlich die offizielle Doku zu den Optionen in der clamavmilter.conf?


Danke nochmal für die tolle Unterstützung! Ist echt super so!
 
Back
Top