stefanoxjx
07-05-2007, 17:31
Ciao a tutti, ormai è da tempo immemore che sto cercando di capire come funziona dspam.
Oggi mi sono detto, "ok, cancello tutto e riparto da zero seguendo la documentazione debian"; morale!!!, dopo aver seguito passo passo la documentazione debian e aver controllato e ricontrollato che sia tutto giusto, alla prima prova non funziona na minchi@!!!!
O meglio, cerco di essere più chiaro:
Questa è la guida debian che sto seguendo:
$Id: postfix.txt,v 1.3 2006/01/18 16:48:53 jonz Exp $
POSTFIX INTEGRATION
Please follow the instructions in the README for building DSPAM. Once DSPAM
has been built, the following instructions may be used to integrate it with
postfix.
INTEGRATING DSPAM AS A CONTENT FILTER
The most seamless way to integrate DSPAM into Postfix is as a content filter.
This requires very little work, and allows the two to communicate seamlessly.
You may want to first read Postfix's FILTER_README from the Postfix source tree
to familiarize yourself with what we're doing. In a nutshell, Postfix sends all
mail to the content filter instead of delivering it. It's the content filter's
job to then pass the [modified] message back into Postfix (called reinjection)
or do something else with the message. By default, DSPAM will quarantine
what it believes is spam, but it can be configured to tag it instead. We will
use DSPAM's LMTP and SMTP functionality to integrate the two seamlessly
together like so:
[Postfix] (LMTP) -> [DSPAM] [Postfix] -> { Delivery }
|___ (SMTP Reinjection) ____|
Step 1: Configure DSPAM as a server daemon
The first step is to configure DSPAM to listen as an LMTP server on a local
UNIX socket. This is what Postfix will connect to when it sends messages to
DSPAM. Be sure you have configured DSPAM with the --enable-daemon option.
You will need to use an MT-safe storage driver, such as MySQL or PostgreSQL.
Once you have DSPAM installed, make the following changes in dspam.conf:
ServerMode auto
ServerParameters "--deliver=innocent"
ServerIdent "localhost.localdomain"
ServerPID /var/run/dspam.pid
ServerDomainSocketPath "/tmp/dspam.sock"
This will tell DSPAM to listen on /tmp/dspam.sock using the options above.
You'll also need to configure DSPAM to pass the good mail back into Postfix.
Comment out any "TrustedDeliveryAgent" option in dspam.conf and replace it
with the options below. We'll use local TCP port 10026 in our example.
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
This tells DSPAM to deliver using SMTP to port 10026 on the local machine.
We'll configure Postfix to listen on this port for reinjection.
Finally, you'll want to use DSPAM's ParseToHeader option. This option tells
DSPAM to automatically train when it sees a spam- or notspam- address in
the To: header. Depending on how you have configured DSPAM to manage users,
your settings may be slightly different. On a typical setup, where the
entire email address is the user's DSPAM username, you would use something
like this:
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full
This means if a user forwards their spam to spam-bob@domain.com, the
username will be set to bob@domain.com and the training mode will be set to
"learn spam".
You can then start DSPAM: dspam --daemon &
Step 2: Configure Postfix to use a content filter
The next step is to configure Postfix to use DSPAM as a content filter.
This is relatively simple and requires only a minor change to your
master.cf file:
Change:
smtp inet n - n - - smtpd
To:
smtp inet n - n - - smtpd
-o content_filter=lmtp:unix:/tmp/dspam.sock
This tells Postfix to send all mail to DSPAM for content filtering.
Step 3: Configure a Reinjection Port
You'll also need to configure Postfix to listen on a local port for
reinjection. This is where DSPAM sends back the "good" mail (or alternatively,
tagged mail also). Add this to your master.cf:
localhost:10026 inet n - n - - 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
Any mail sent to localhost:10026 will be delivered in whatever way you
have configured Postfix, without being passed through DSPAM again. This is
also where DSPAM will deliver false positives to when they are retrained by
the user.
You're now good to go! Turn on Postfix and do a little testing. Send a message
to yourself on port 25. It should have X-DSPAM headers. Send a message to
yourself on port 10026. It should not.
If you are deadset against running DSPAM as a server daemon, this design can
be changed to call DSPAM via commandline, and have DSPAM reinject by calling
Postfix's sendmail function. I wouldn't recommend this, but here's how.
Instead of configuring DSPAM's DeliveryHost and Server options, you'll want to
configure DSPAM to call sendmail to deliver mail:
TrustedDeliveryAgent /usr/sbin/sendmail
Trust postfix
Use the same ParseToHeader options already outlined above. Next, instead of
having Postfix pass the message to DSPAM via LMTP, you can use:
smtp inet n - - - - smtpd -o content_filter=dspam:
dspam unix - n n - 10 pipe
flags=Ru user=vmail argv=/usr/local/bin/dspam --deliver=innocent
--user ${recipient} -i -f $sender -- $recipient
INTEGRATING DSPAM AS A DELIVERY PROXY
Postfix can optionally be configured to integrate with DSPAM as a delivery
proxy if you're using a third party delivery agent for final delivery to
your mailbox.
The first step in getting DSPAM to work is to get mail delivery to work with
one of these external LDAs before integrating DSPAM with postfix.
You can configure DSPAM with the appropriate LDA using --with-delivery-agent=
at configure time or by specifying TrustedDeliveryAgent in dspam.conf.
For example:
TrustedDeliveryAgent "/usr/bin/procmail"
You'll also want to configure the untrusted delivery agent in a similar
fashion:
UntrustedDeliveryAgent "/usr/bin/procmail -d %u"
If you are using maildrop, you'll need to be sure you've compiled maildrop to
trust the user that dspam is running as.
Once you have configured a local delivery agent into DSPAM, the simplest way
to configure postfix for local users is to set the mailbox_command directive
to point to DSPAM. This can be done by editing /etc/postfix/main.cf:
mailbox_command = /usr/local/bin/dspam --deliver=innocent --user $USER -- -d %u
If you're running a delivery agent (such as cyrdeliver) that has a problem
with the top 'From' header, you may need to perform some sed magic:
mailbox_command = sed '1{/^From /d;}' | /usr/local/bin/dspam --deliver=innocent --user $USER -- -d %u
Now, configure the aliases as prescribed in the README and you're good to go!
CYRUS INTEGRATION
If you're using Cyrus to deliver mail locally, you'll want to specify the
following in dspam.conf:
TrustedDeliveryAgent "/usr/sbin/cyrdeliver $u"
Then use the following in Postfix:
mailbox_command = /usr/local/bin/dspam --user ${user} --deliver=innocent
Di tutta la guida, se guardate la parte in grassetto vedete che arrivati in quel punto basta fare una piccola prova che bla bla bla...........
Inutile dirvi che a me non funziona, anche perchè senno non starei scrivendo disperatamente questo appello di aiuto :D
Allora, questo è il main.cf di postfix:
# 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
# TLS parameters
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:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_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 = keope.testserver.it
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = keope.testserver.it, localhost.testserver.it, localhost
relayhost = 192.168.0.254
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
questo è il master.cf di postfix:
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
-o content_filter=lmtp:unix:/tmp/dspam.sock
#submission inet n - - - - smtpd
# -o smtpd_enforce_tls=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n - - - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628 inet n - - - - qmqpd
pickup fifo n - - 60 1 pickup
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
smtp unix - - - - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - - - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error 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=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
localhost:10026 inet n - n - - 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
e questo è il file di configurazione di dspam
## $Id: dspam.conf.in,v 1.72 2006/05/14 15:40:42 jonz Exp $
## dspam.conf -- DSPAM configuration file
##
#
# DSPAM Home: Specifies the base directory to be used for DSPAM storage
#
Home /var/spool/dspam
#
# StorageDriver: Specifies the storage driver backend (library) to use.
# You'll only need to set this if you are using dynamic storage driver plugins.
# The default when one storage driver is specified is to statically link. Be
# sure to include the path to the library if necessary, and some systems may
# use an extension other than .so.
#
# Options include:
#
# libmysql_drv.so libpgsql_drv.so libsqlite_drv.so
# libsqlite3_drv.so libora_drv.so libhash_drv.so
#
# IMPORTANT: Switching storage drivers requires more than merely changing
# this option. If you do not wish to lose all of your data, you will need to
# migrate it to the new backend before making this change.
#
StorageDriver /usr/lib/dspam/libmysql_drv.so
#
# Trusted Delivery Agent: Specifies the local delivery agent DSPAM should call
# when delivering mail as a trusted user. Use %u to specify the user DSPAM is
# processing mail for. It is generally a good idea to allow the MTA to specify
# the pass-through arguments at run-time, but they may also be specified here.
#
# Most operating system defaults:
#TrustedDeliveryAgent "/usr/bin/procmail" # Linux
#TrustedDeliveryAgent "/usr/bin/mail" # Solaris
#TrustedDeliveryAgent "/usr/libexec/mail.local" # FreeBSD
#TrustedDeliveryAgent "/usr/bin/procmail" # Cygwin
#
# Other popular configurations:
#TrustedDeliveryAgent "/usr/cyrus/bin/deliver" # Cyrus
#TrustedDeliveryAgent "/bin/maildrop" # Maildrop
#TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned" # Exim
#
TrustedDeliveryAgent "/usr/bin/procmail"
#
# Untrusted Delivery Agent: Specifies the local delivery agent and arguments
# DSPAM should use when delivering mail and running in untrusted user mode.
# Because DSPAM will not allow pass-through arguments to be specified to
# untrusted users, all arguments should be specified here. Use %u to specify
# the user DSPAM is processing mail for. This configuration parameter is only
# necessary if you plan on allowing untrusted processing.
#
#UntrustedDeliveryAgent "/usr/bin/procmail -d %u"
#
# SMTP or LMTP Delivery: Alternatively, you may wish to use SMTP or LMTP
# delivery to deliver your message to the mail server. You will need to
# configure with --enable-daemon to use host delivery, however you do not need
# to operate in daemon mode. Specify an IP address or UNIX path to a domain
# socket below as a host.
#
# If you would like to set up DeliveryHost's on a per-domain basis, use
# the syntax: DeliveryHost.domain.com 1.2.3.4
#
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
#
# FallbackDomains: If you want to specify certain domains as fallback domains,
# enable this option. For example, you could create a user @domain.com, and
# if bob@domain.com does not resolve to a known user on the system, the user
# could default to your @domain.com user. NOTE: This also requires designating
# fallbackDomain for the domain name;
# e.g. dspam_admin ch pref domain.com fallbackDomain on
#
#FallbackDomains on
#
# Quarantine Agent: DSPAM's default behavior is to quarantine all mail it
# thinks is spam. If you wish to override this behavior, you may specify
# a quarantine agent which will be called with all messages DSPAM thinks is
# spam. Use %u to specify the user DSPAM is processing mail for.
#
#QuarantineAgent "/usr/bin/procmail -d spam"
#
# DSPAM can optionally process "plused users" (addresses in the user+detail
# form) by truncating the username just before the "+", so all internal
# processing occurs for "user", but delivery will be performed for
# "user+detail". This is only useful if the LDA can handle "plused users"
# (for example Cyrus IMAP) and when configured for LMTP delivery above
#
#EnablePlusedDetail on
#
# Quarantine Mailbox: DSPAM's LMTP code can send spam mail using LMTP to a
# "plused" mailbox (such as user+quarantine) leaving quarantine processing
# for retraining or deletion to be performed by the LDA and the mail client.
# "plused" mailboxes are supported by Cyrus IMAP and possibly other LDAs.
# The mailbox name must have the +
#
#QuarantineMailbox +quarantine
#
# OnFail: What to do if local delivery or quarantine should fail. If set
# to "unlearn", DSPAM will unlearn the message prior to exiting with an
# un successful return code. The default option, "error" will not unlearn
# the message but return the appropriate error code. The unlearn option
# is use-ful on some systems where local delivery failures will cause the
# message to be requeued for delivery, and could result in the message
# being processed multiple times. During a very large failure, however,
# this could cause a significant load increase.
#
OnFail error
# Trusted Users: Only the users specified below will be allowed to perform
# administrative functions in DSPAM such as setting the active user and
# accessing tools. All other users attempting to run DSPAM will be restricted;
# their uids will be forced to match the active username and they will not be
# able to specify delivery agent privileges or use tools.
#
Trust root
Trust dspam
Trust mail
Trust mailnull
Trust smmsp
Trust daemon
Trust postfix
#Trust nobody
#Trust majordomo
#
# Debugging: Enables debugging for some or all users. IMPORTANT: DSPAM must
# be compiled with debug support in order to use this option. DSPAM should
# never be running in production with debug active unless you are
# troubleshooting problems.
#
# DebugOpt: One or more of: process, classify, spam, fp, inoculation, corpus
# process standard message processing
# classify message classification using --classify
# spam error correction of missed spam
# fp error correction of false positives
# inoculation message inoculations (source=inoculation)
# corpus corpusfed messages (source=corpus)
#
#Debug *
#Debug bob bill
#
#DebugOpt process spam fp
#
# ClassAlias: Alias a particular class to spam/nonspam. This is useful if
# classifying things other than spam.
#ClassAliasSpam badstuff
#ClassAliasNonspam goodstuff
#
# Training Mode: The default training mode to use for all operations, when
# one has not been specified on the commandline or in the user's preferences.
# Acceptable values are: toe, tum, teft, notrain
#
TrainingMode teft
#
# TestConditionalTraining: By default, dspam will retrain certain errors
# until the condition is no longer met. This usually accelerates learning.
# Some people argue that this can increase the risk of errors, however.
#
TestConditionalTraining on
#
# Features: Specify features to activate by default; can also be specified
# on the commandline. See the documentation for a list of available features.
# If _any_ features are specified on the commandline, these are ignored.
#
# NOTE: For standard "CRM114" Markovian weighting, use sbph
#
#Feature sbph
#Feature noise
Feature chained
Feature whitelist
# Training Buffer: The training buffer waters down statistics during training.
# It is designed to prevent false positives, but can also dramatically reduce
# dspam's catch rate during initial training. This can be a number from 0
# (no buffering) to 10 (maximum buffering). If you are paranoid about false
# positives, you should probably enable this option.
#Feature tb=5
#
# Algorithms: Specify the statistical algorithms to use, overriding any
# defaults configured in the build. The options are:
# naive Naive-Bayesian (All Tokens)
# graham Graham-Bayesian ("A Plan for Spam")
# burton Burton-Bayesian (SpamProbe)
# robinson Robinson's Geometric Mean Test (Obsolete)
# chi-square Fisher-Robinson's Chi-Square Algorithm
#
# You may have multiple algorithms active simultaneously, but it is strongly
# recommended that you group Bayesian algorithms with other Bayesian
# algorithms, and any use of Chi-Square remain exclusive.
#
# NOTE: For standard "CRM114" Markovian weighting, use 'naive', or consider
# using 'burton' for slightly better accuracy
#
# Don't mess with this unless you know what you're doing
#
#Algorithm chi-square
#Algorithm naive
Algorithm graham burton
#
# PValue: Specify the technique used for calculating PValues, overriding any
# defaults configured in the build. These options are:
# graham Graham's Technique ("A Plan for Spam")
# robinson Robinson's Technique
# markov Markovian Weighted Technique
#
# Unlike algorithms, you may only have one of these defined. Use of the
# chi-square algorithm automatically changes this to robinson.
#
# Don't mess with this unless you know what you're doing.
#
#PValue robinson
#PValue markov
PValue graham
#
# SupressWebStats: Enable this if you are not using the CGI, and don't want
# .stats files written.
#SupressWebStats on
#
# ImprobabilityDrive: Calculate odds-ratios for ham/spam, and add to
# X-DSPAM-Improbability headers
#ImprobabilityDrive on
#
# Preferences: Specify any preferences to set by default, unless otherwise
# overridden by the user (see next section) or a default.prefs file.
# If user or default.prefs are found, the user's preferences will override any
# defaults.
#
Preference "spamAction=tag"
Preference "signatureLocation=message" # 'message' or 'headers'
Preference "showFactors=on"
#Preference "spamAction=tag"
#Preference "spamSubject=SPAM"
#
# Overrides: Specifies the user preferences which may override configuration
# and commandline defaults. Any other preferences supplied by an untrusted user
# will be ignored.
#
AllowOverride trainingMode
AllowOverride spamAction spamSubject
AllowOverride statisticalSedation
AllowOverride enableBNR
AllowOverride enableWhitelist
AllowOverride signatureLocation
AllowOverride showFactors
AllowOverride optIn optOut
AllowOverride whitelistThreshold
# --- Oracle ---
#OraServer "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SID=PROD)))"
#OraUser dspam
#OraPass changeme
#OraSchema dspam
# --- SQLite ---
#SQLitePragma "synchronous = OFF"
# --- Hash ---
# HashRecMax: Default number of records to create in the initial segment when
# building hash files. 100,000 yields files 1.6MB in size, but can fill up
# fast, so be sure to increase this (to a million or more) if you're not using
# autoextend.
#
# Primes List:
# 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, 49157, 98317, 196613,
# 393241, 786433, 1572869, 3145739, 6291469, 12582917, 25165843, 50331653,
# 100663319, 201326611, 402653189, 805306457, 1610612741, 3221225473,
# 4294967291
#
HashRecMax 98317
# HashAutoExtend: Autoextend hash databases when they fill up. This allows
# them to continue to train by adding extents (extensions) to the file. There
# will be a small delay during the growth process, as everything needs to be
# closed and remapped.
#
HashAutoExtend on
# HashMaxExtents: The maximum number of extents that may be created in a single
# hash file. Set this to zero for unlimited
#
HashMaxExtents 0
# HashExtentSize: The record size for newly created extents. Creating this too
# small could result in many extents being created. Creating this too large
# could result in excessive disk space usage.
#
HashExtentSize 49157
# HashMaxSeek: The maximum number of records to seek to insert a new record
# before failing or adding a new extent. Setting this too high will exhaustively
# scan each segment and kill performance. Typically, a low value is acceptable
# as even older extents will continue to fill over time.
#
HashMaxSeek 100
# HashConcurrentUser: If you are using a single, stateful hash database in
# daemon mode, specifying a concurrent user will cause the user to be
# permanently mapped into memory and shared via rwlocks.
#
#HashConcurrentUser user
# HashConnectionCache: If running in daemon mode, this is the max # of
# concurrent connections that will be supported. NOTE: If you are using
# HashConcurrentUser, this option is ignored, as all connections are read-
# write locked instead of mutex locked.
HashConnectionCache 10
# LDAP: Perform various LDAP functions depending on LDAPMode variable.
# Presently, the only mode supported is 'verify', which will verify the existence
# of an unknown user in LDAP prior to creating them as a new user in the system.
# This is useful on some systems acting as gateway machines.
#
#LDAPMode verify
#LDAPHost ldaphost.mydomain.com
#LDAPFilter "(mail=%u)"
#LDAPBase ou=people,dc=domain,dc=com
# Optionally, you can specify storage profiles, and specify the server to
# use on the commandline with --profile. For example:
#
#Profile DECAlpha
#MySQLServer.DECAlpha 10.0.0.1
#MySQLPort.DECAlpha 3306
#MySQLUser.DECAlpha dspam
#MySQLPass.DECAlpha changeme
#MySQLDb.DECAlpha dspam
#MySQLCompress.DECAlpha true
#
#Profile Sun420R
#MySQLServer.Sun420R 10.0.0.2
#MySQLPort.Sun420R 3306
#MySQLUser.Sun420R dspam
#MySQLPass.Sun420R changeme
#MySQLDb.Sun420R dspam
#MySQLCompress.Sun420R false
#
#DefaultProfile DECAlpha
#
# If you're using storage profiles, you can set failovers for each profile.
# Of course, if you'll be failing over to another database, that database
# must have the same information as the first. If you're using a global
# database with no training, this should be relatively simple. If you're
# configuring per-user data, however, you'll need to set up some type of
# replication between databases.
#
#Failover.DECAlpha SUN420R
#Failover.Sun420R DECAlpha
# If the storage fails, the agent will follow each profile's failover up to
# a maximum number of failover attempts. This should be set to a maximum of
# the number of profiles you have, otherwise the agent could loop and try
# the same profile multiple times (unless this is your desired behavior).
#
#FailoverAttempts 1
#
# Ignored headers: If DSPAM is behind other tools which may add a header to
# incoming emails, it may be beneficial to ignore these headers - especially
# if they are coming from another spam filter. If you are _not_ using one of
# these tools, however, leaving the appropriate headers commented out will
# allow DSPAM to use them as telltale signs of forged email.
#
#IgnoreHeader X-Spam-Status
#IgnoreHeader X-Spam-Scanned
#IgnoreHeader X-Virus-Scanner-Result
#
# Lookup: Perform lookups on streamlined blackhole list servers (see
# http://www.nuclearelephant.com/projects/sbl/). The streamlined blacklist
# server is machine-automated, unsupervised blacklisting system designed to
# provide real-time and highly accurate blacklisting based on network spread.
# When performing a lookup, DSPAM will automatically learn the inbound message
# as spam if the source IP is listed. Until an official public RABL server is
# available, this feature is only useful if you are running your own
# streamlined blackhole list server for internal reporting among multiple mail
# servers. Provide the name of the lookup zone below to use.
#
# This function performs standard reverse-octet.domain lookups, and while it
# will function with many RBLs, it's strongly discouraged to use those
# maintained by humans as they're often inaccurate and could hurt filter
# learning and accuracy.
#
#Lookup "sbl.yourdomain.com"
#
# RBLInoculate: If you want to inoculate the user from RBL'd messages it would
# have otherwise missed, set this to on.
#
#RBLInoculate off
#
# Notifications: Enable the sending of notification emails to users (first
# message, quarantine full, etc.)
#
Notifications off
#
# Purge configuration: Set dspam_clean purge default options, if not otherwise
# specified on the commandline
#
PurgeSignatures 14 # Stale signatures
PurgeNeutral 90 # Tokens with neutralish probabilities
PurgeUnused 90 # Unused tokens
PurgeHapaxes 30 # Tokens with less than 5 hits (hapaxes)
PurgeHits1S 15 # Tokens with only 1 spam hit
PurgeHits1I 15 # Tokens with only 1 innocent hit
#
# Purge configuration for SQL-based installations using purge.sql
#
#PurgeSignature off # Specified in purge.sql
#PurgeNeutral 90
#PurgeUnused off # Specified in purge.sql
#PurgeHapaxes off # Specified in purge.sql
#PurgeHits1S off # Specified in purge.sql
#PurgeHits1I off # Specified in purge.sql
#
# Local Mail Exchangers: Used for source address tracking, tells DSPAM which
# mail exchangers are local and therefore should be ignored in the Received:
# header when tracking the source of an email. Note: you should use the address
# of the host as appears between brackets [ ] in the Received header.
#
LocalMX 127.0.0.1
#
# Logging: Disabling logging for users will make usage graphs unavailable to
# them. Disabling system logging will make admin graphs unavailable.
#
SystemLog on
UserLog on
#
# TrainPristine: for systems where the original message remains server side
# and can therefore be presented in pristine format for retraining. This option
# will cause DSPAM to cease all writing of signatures and DSPAM headers to the
# message, and deliver the message in as pristine format as possible. This mode
# REQUIRES that the original message in its pristine format (as of delivery)
# be presented for retraining, as in the case of webmail, imap, or other
# applications where the message is actually kept server-side during reading,
# and is preserved. DO NOT use this switch unless the original message can be
# presented for retraining with the ORIGINAL HEADERS and NO MODIFICATIONS.
#
#TrainPristine on
#
# Opt: in or out; determines DSPAM's default filtering behavior. If this value
# is set to in, users must opt-in to filtering by dropping a .dspam file in
# /var/dspam/opt-in/user.dspam (or if you have homedirs configured, a .dspam
# folder in their home directory). The default is opt-out, which means all
# users will be filtered unless a .nodspam file is dropped in
# /var/dspam/opt-out/user.nodspam
#
Opt in
#
# TrackSources: specify which (if any) source addresses to track and report
# them to syslog (mail.info). This is useful if you're running a firewall or
# blacklist and would like to use this information. Spam reporting also drops
# RABL blacklist files (see http://www.nuclearelephant.com/projects/rabl/).
#
#TrackSources spam nonspam
#
# ParseToHeaders: In lieu of setting up individual aliases for each user,
# DSPAM can be configured to automatically parse the To: address for spam and
# false positive forwards. From there, it can be configured to either set the
# DSPAM user based on the username specified in the header and/or change the
# training class and source accordingly. The options below can be used to
# customize most common types of header parsing behavior to avoid the need for
# multiple aliases, or if using LMTP, aliases entirely..
#
# ParseToHeader: Parse the To: headers of an incoming message. This must be
# set to 'on' to use either of the following features.
#
# ChangeModeOnParse: Automatically change the class (to spam or innocent)
# depending on whether spam- or notspam- was specified, and change the source
# to 'error'. This is convenient if you're not using aliases at all, but
# are delivering via LMTP.
#
# ChangeUserOnParse: Automatically change the username to match that specified
# in the To: header. For example, spam-bob@domain.tld will set the username
# to bob, ignoring any --user passed in. This may not always be desirable if
# you are using virtual email addresses as usernames. Options:
# on or user take the portion before the @ sign only
# full take everything after the initial {spam,notspam}-.
#
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full
#
# Broken MTA Options: Some MTAs don't support the proper functionality
# necessary. In these cases you can activate certain features in DSPAM to
# compensate. 'returnCodes' causes DSPAM to return an exit code of 99 if
# the message is spam, 0 if not, or a negative code if an error has occured.
# Specifying 'case' causes DSPAM to force the input usernames to lowercase.
# Spceifying 'lineStripping' causes DSPAM to strip ^M's from messages passed
# in.
#
#Broken returnCodes
#Broken case
#Broken lineStripping
#
# MaxMessageSize: You may specify a maximum message size for DSPAM to process.
# If the message is larger than the maximum size, it will be delivered
# without processing. Value is in bytes.
#
#MaxMessageSize 4194304
#
# Virus Checking: If you are running clamd, DSPAM can perform stream-based
# virus checking using TCP. Uncomment the values below to enable virus
# checking.
#
# ClamAVResponse: reject (reject or drop the message with a permanent failure)
# accept (accept the message and quietly drop the message)
# spam (treat as spam and quarantine/tag/whatever)
#
#ClamAVPort 3310
#ClamAVHost 127.0.0.1
#ClamAVResponse accept
#
# Daemonized Server: If you are running DSPAM as a daemonized server using
# --daemon, the following parameters will override the default. Use the
# ServerPass option to set up accounts for each client machine. The DSPAM
# server will process and deliver the message based on the parameters
# specified. If you want the client machine to perform delivery, use
# the --stdout option in conjunction with a local setup.
#
#ServerPort 24
#ServerQueueSize 32
ServerPID /var/run/dspam.pid
#
# ServerMode specifies the type of LMTP server to start. This can be one of:
# dspam: DSPAM-proprietary DLMTP server, for communicating with dspamc
# standard: Standard LMTP server, for communicating with Postfix or other MTA
# auto: Speak both DLMTP and LMTP; auto-detect by ServerPass.IDENT
#
ServerMode auto
# If supporting DLMTP (dspam) mode, dspam clients will require authentication
# as they will be passing in parameters. The idents below will be used to
# determine which clients will be speaking DLMTP, so if you will be using
# both LMTP and DLMTP from the same host, be sure to use something other
# than the server's hostname below (which will be sent by the MTA during a
# standard LMTP LHLO).
#
#ServerPass.Relay1 "secret"
#ServerPass.Relay2 "password"
# If supporting standard LMTP mode, server parameters will need to be specified
# here, as they will not be passed in by the mail server. The ServerIdent
# specifies the 250 response code ident sent back to connecting clients and
# should be set to the hostname of your server, or an alias.
#
# NOTE: If you specify --user in ServerParameters, the RCPT TO will be
# used only for delivery, and not set as the active user for processing.
#
ServerParameters "--deliver=innocent"
ServerIdent "localhost.localdomain"
# If you wish to use a local domain socket instead of a TCP socket, uncomment
# the following. It is strongly recommended you use local domain sockets if
# you are running the client and server on the same machine, as it eliminates
# much of the bandwidth overhead.
#
ServerDomainSocketPath "/tmp/dspam.sock"
#
# Client Mode: If you are running DSPAM in client/server mode, uncomment and
# set these variables. A ClientHost beginning with a / will be treated as
# a domain socket.
#
#ClientHost /tmp/dspam.sock
#ClientIdent "secret@Relay1"
#
#ClientHost 127.0.0.1
#ClientPort 24
#ClientIdent "secret@Relay1"
# RABLQueue: Touch files in the RABL queue
# If you are a reporting streamlined blackhole list participant, you can
# touch ip addresses within the directory the rabl_client process is watching.
#
#RABLQueue /var/spool/rabl
# DataSource: If you are using any type of data source that does not include
# email-like headers (such as documents), uncomment the line below. This
# will cause the entire input to be treated like a message "body"
#
#DataSource document
# ProcessorWordFrequency: By default, words are only counted once per message.
# If you are classifying large documents, however, you may wish to count once
# per occurrence instead.
#
#ProcessorWordFrequency occurrence
# ProcessorBias: Bias causes the filter to lean more toward 'innocent', and
# usually greatly reduces false positives. It is the default behavior of
# most Bayesian filters (including dspam).
#
# NOTE: You probably DONT want this if you're using Markovian Weighting, unless
# you are paranoid about false positives.
#
ProcessorBias on
# Include a directory with configuration items.
Include /etc/dspam/dspam.d/
## EOF
A questa punto, facendo il little testing :D, succede che:
- Se invio una mail tramite il comando sendmail stefano@localhost < /etc/resolv.conf, la mail viene recapitata senza problemi ma non risulta esaminata da dspam:
May 7 18:11:34 keope postfix/pickup[3836]: E063C189F0: uid=0 from=<root>
May 7 18:11:34 keope postfix/cleanup[3877]: E063C189F0: message-id=<20070507161134.E063C189F0@keope.testserver.it>
May 7 18:11:34 keope postfix/qmgr[3837]: E063C189F0: from=<root@keope.testserver.it>, size=385, nrcpt=1 (queue active)
May 7 18:11:35 keope postfix/local[3879]: E063C189F0: to=<stefano@keope.testserver.it>, orig_to=<stefano>, relay=local, delay=0.17, delays=0.09/0.01/0/0.07, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
May 7 18:11:35 keope postfix/qmgr[3837]: E063C189F0: removed
e l'header dell'email è:
From root@keope.testserver.it Mon May 7 18:11:34 2007
Return-Path: <root@keope.testserver.it>
X-Original-To: stefano
Delivered-To: stefano@keope.testserver.it
Received: by keope.testserver.it (Postfix, from userid 0)
id E063C189F0; Mon, 7 May 2007 18:11:34 +0200 (CEST)
Message-Id: <20070507161134.E063C189F0@keope.testserver.it>
Date: Mon, 7 May 2007 18:11:34 +0200 (CEST)
From: root@keope.testserver.it (root)
To: undisclosed-recipients:;
search .
nameserver 217.194.176.21
nameserver 212.216.172.162
- se invece provo a spedire una mail tramite telnet localhost 25, il risultato è questo:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 keope.testserver.it ESMTP Postfix (Debian/GNU)
helo pippo.com
250 keope.testserver.it
mail from:<pippo@pippo.com>
250 2.1.0 Ok
rcpt to:<stefano@localhost>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject: prova
ciao
.
250 2.0.0 Ok: queued as 2F12D189EF
fin qui tutto ok, ma dal mail.log:
May 7 18:14:59 keope postfix/smtpd[3883]: connect from localhost[127.0.0.1]
May 7 18:15:36 keope postfix/smtpd[3883]: 2F12D189EF: client=localhost[127.0.0.1]
May 7 18:15:41 keope postfix/cleanup[3887]: 2F12D189EF: message-id=<20070507161536.2F12D189EF@keope.testserver.it>
May 7 18:15:41 keope postfix/qmgr[3837]: 2F12D189EF: from=<pippo@pippo.com>, size=363, nrcpt=1 (queue active)
May 7 18:15:41 keope postfix/lmtp[3888]: 2F12D189EF: to=<stefano@localhost>, relay=none, delay=21, delays=21/0.01/0/0, dsn=4.4.1, status=deferred (connect to keope.testserver.it[/tmp/dspam.sock]: No such file or directory)
May 7 18:15:55 keope postfix/smtpd[3883]: disconnect from localhost[127.0.0.1]
e la mail non arriva da nessuna parte :cry:
Però:
keope:/etc/dspam# ls -l /tmp
totale 0
srwxrwxrwx 1 root dspam 0 2007-05-07 18:26 dspam.sock
Ci ho perso la giornata su questa cosa, ho provato a spostare, cambiare, girare, rifare, controllare, ricontrollare............ ma non ne esco :cry: :cry: :cry: :cry: :cry: :cry:
Scusate la lungaggine, però volevo esporre le cose nel modo più chiaro possibile!!!
Cosa sto sbagliando secondo voi?
Grazie dei consigli.
Ciao.
Oggi mi sono detto, "ok, cancello tutto e riparto da zero seguendo la documentazione debian"; morale!!!, dopo aver seguito passo passo la documentazione debian e aver controllato e ricontrollato che sia tutto giusto, alla prima prova non funziona na minchi@!!!!
O meglio, cerco di essere più chiaro:
Questa è la guida debian che sto seguendo:
$Id: postfix.txt,v 1.3 2006/01/18 16:48:53 jonz Exp $
POSTFIX INTEGRATION
Please follow the instructions in the README for building DSPAM. Once DSPAM
has been built, the following instructions may be used to integrate it with
postfix.
INTEGRATING DSPAM AS A CONTENT FILTER
The most seamless way to integrate DSPAM into Postfix is as a content filter.
This requires very little work, and allows the two to communicate seamlessly.
You may want to first read Postfix's FILTER_README from the Postfix source tree
to familiarize yourself with what we're doing. In a nutshell, Postfix sends all
mail to the content filter instead of delivering it. It's the content filter's
job to then pass the [modified] message back into Postfix (called reinjection)
or do something else with the message. By default, DSPAM will quarantine
what it believes is spam, but it can be configured to tag it instead. We will
use DSPAM's LMTP and SMTP functionality to integrate the two seamlessly
together like so:
[Postfix] (LMTP) -> [DSPAM] [Postfix] -> { Delivery }
|___ (SMTP Reinjection) ____|
Step 1: Configure DSPAM as a server daemon
The first step is to configure DSPAM to listen as an LMTP server on a local
UNIX socket. This is what Postfix will connect to when it sends messages to
DSPAM. Be sure you have configured DSPAM with the --enable-daemon option.
You will need to use an MT-safe storage driver, such as MySQL or PostgreSQL.
Once you have DSPAM installed, make the following changes in dspam.conf:
ServerMode auto
ServerParameters "--deliver=innocent"
ServerIdent "localhost.localdomain"
ServerPID /var/run/dspam.pid
ServerDomainSocketPath "/tmp/dspam.sock"
This will tell DSPAM to listen on /tmp/dspam.sock using the options above.
You'll also need to configure DSPAM to pass the good mail back into Postfix.
Comment out any "TrustedDeliveryAgent" option in dspam.conf and replace it
with the options below. We'll use local TCP port 10026 in our example.
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
This tells DSPAM to deliver using SMTP to port 10026 on the local machine.
We'll configure Postfix to listen on this port for reinjection.
Finally, you'll want to use DSPAM's ParseToHeader option. This option tells
DSPAM to automatically train when it sees a spam- or notspam- address in
the To: header. Depending on how you have configured DSPAM to manage users,
your settings may be slightly different. On a typical setup, where the
entire email address is the user's DSPAM username, you would use something
like this:
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full
This means if a user forwards their spam to spam-bob@domain.com, the
username will be set to bob@domain.com and the training mode will be set to
"learn spam".
You can then start DSPAM: dspam --daemon &
Step 2: Configure Postfix to use a content filter
The next step is to configure Postfix to use DSPAM as a content filter.
This is relatively simple and requires only a minor change to your
master.cf file:
Change:
smtp inet n - n - - smtpd
To:
smtp inet n - n - - smtpd
-o content_filter=lmtp:unix:/tmp/dspam.sock
This tells Postfix to send all mail to DSPAM for content filtering.
Step 3: Configure a Reinjection Port
You'll also need to configure Postfix to listen on a local port for
reinjection. This is where DSPAM sends back the "good" mail (or alternatively,
tagged mail also). Add this to your master.cf:
localhost:10026 inet n - n - - 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
Any mail sent to localhost:10026 will be delivered in whatever way you
have configured Postfix, without being passed through DSPAM again. This is
also where DSPAM will deliver false positives to when they are retrained by
the user.
You're now good to go! Turn on Postfix and do a little testing. Send a message
to yourself on port 25. It should have X-DSPAM headers. Send a message to
yourself on port 10026. It should not.
If you are deadset against running DSPAM as a server daemon, this design can
be changed to call DSPAM via commandline, and have DSPAM reinject by calling
Postfix's sendmail function. I wouldn't recommend this, but here's how.
Instead of configuring DSPAM's DeliveryHost and Server options, you'll want to
configure DSPAM to call sendmail to deliver mail:
TrustedDeliveryAgent /usr/sbin/sendmail
Trust postfix
Use the same ParseToHeader options already outlined above. Next, instead of
having Postfix pass the message to DSPAM via LMTP, you can use:
smtp inet n - - - - smtpd -o content_filter=dspam:
dspam unix - n n - 10 pipe
flags=Ru user=vmail argv=/usr/local/bin/dspam --deliver=innocent
--user ${recipient} -i -f $sender -- $recipient
INTEGRATING DSPAM AS A DELIVERY PROXY
Postfix can optionally be configured to integrate with DSPAM as a delivery
proxy if you're using a third party delivery agent for final delivery to
your mailbox.
The first step in getting DSPAM to work is to get mail delivery to work with
one of these external LDAs before integrating DSPAM with postfix.
You can configure DSPAM with the appropriate LDA using --with-delivery-agent=
at configure time or by specifying TrustedDeliveryAgent in dspam.conf.
For example:
TrustedDeliveryAgent "/usr/bin/procmail"
You'll also want to configure the untrusted delivery agent in a similar
fashion:
UntrustedDeliveryAgent "/usr/bin/procmail -d %u"
If you are using maildrop, you'll need to be sure you've compiled maildrop to
trust the user that dspam is running as.
Once you have configured a local delivery agent into DSPAM, the simplest way
to configure postfix for local users is to set the mailbox_command directive
to point to DSPAM. This can be done by editing /etc/postfix/main.cf:
mailbox_command = /usr/local/bin/dspam --deliver=innocent --user $USER -- -d %u
If you're running a delivery agent (such as cyrdeliver) that has a problem
with the top 'From' header, you may need to perform some sed magic:
mailbox_command = sed '1{/^From /d;}' | /usr/local/bin/dspam --deliver=innocent --user $USER -- -d %u
Now, configure the aliases as prescribed in the README and you're good to go!
CYRUS INTEGRATION
If you're using Cyrus to deliver mail locally, you'll want to specify the
following in dspam.conf:
TrustedDeliveryAgent "/usr/sbin/cyrdeliver $u"
Then use the following in Postfix:
mailbox_command = /usr/local/bin/dspam --user ${user} --deliver=innocent
Di tutta la guida, se guardate la parte in grassetto vedete che arrivati in quel punto basta fare una piccola prova che bla bla bla...........
Inutile dirvi che a me non funziona, anche perchè senno non starei scrivendo disperatamente questo appello di aiuto :D
Allora, questo è il main.cf di postfix:
# 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
# TLS parameters
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:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_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 = keope.testserver.it
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = keope.testserver.it, localhost.testserver.it, localhost
relayhost = 192.168.0.254
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
questo è il master.cf di postfix:
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
-o content_filter=lmtp:unix:/tmp/dspam.sock
#submission inet n - - - - smtpd
# -o smtpd_enforce_tls=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n - - - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628 inet n - - - - qmqpd
pickup fifo n - - 60 1 pickup
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
smtp unix - - - - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - - - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error 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=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
localhost:10026 inet n - n - - 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
e questo è il file di configurazione di dspam
## $Id: dspam.conf.in,v 1.72 2006/05/14 15:40:42 jonz Exp $
## dspam.conf -- DSPAM configuration file
##
#
# DSPAM Home: Specifies the base directory to be used for DSPAM storage
#
Home /var/spool/dspam
#
# StorageDriver: Specifies the storage driver backend (library) to use.
# You'll only need to set this if you are using dynamic storage driver plugins.
# The default when one storage driver is specified is to statically link. Be
# sure to include the path to the library if necessary, and some systems may
# use an extension other than .so.
#
# Options include:
#
# libmysql_drv.so libpgsql_drv.so libsqlite_drv.so
# libsqlite3_drv.so libora_drv.so libhash_drv.so
#
# IMPORTANT: Switching storage drivers requires more than merely changing
# this option. If you do not wish to lose all of your data, you will need to
# migrate it to the new backend before making this change.
#
StorageDriver /usr/lib/dspam/libmysql_drv.so
#
# Trusted Delivery Agent: Specifies the local delivery agent DSPAM should call
# when delivering mail as a trusted user. Use %u to specify the user DSPAM is
# processing mail for. It is generally a good idea to allow the MTA to specify
# the pass-through arguments at run-time, but they may also be specified here.
#
# Most operating system defaults:
#TrustedDeliveryAgent "/usr/bin/procmail" # Linux
#TrustedDeliveryAgent "/usr/bin/mail" # Solaris
#TrustedDeliveryAgent "/usr/libexec/mail.local" # FreeBSD
#TrustedDeliveryAgent "/usr/bin/procmail" # Cygwin
#
# Other popular configurations:
#TrustedDeliveryAgent "/usr/cyrus/bin/deliver" # Cyrus
#TrustedDeliveryAgent "/bin/maildrop" # Maildrop
#TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned" # Exim
#
TrustedDeliveryAgent "/usr/bin/procmail"
#
# Untrusted Delivery Agent: Specifies the local delivery agent and arguments
# DSPAM should use when delivering mail and running in untrusted user mode.
# Because DSPAM will not allow pass-through arguments to be specified to
# untrusted users, all arguments should be specified here. Use %u to specify
# the user DSPAM is processing mail for. This configuration parameter is only
# necessary if you plan on allowing untrusted processing.
#
#UntrustedDeliveryAgent "/usr/bin/procmail -d %u"
#
# SMTP or LMTP Delivery: Alternatively, you may wish to use SMTP or LMTP
# delivery to deliver your message to the mail server. You will need to
# configure with --enable-daemon to use host delivery, however you do not need
# to operate in daemon mode. Specify an IP address or UNIX path to a domain
# socket below as a host.
#
# If you would like to set up DeliveryHost's on a per-domain basis, use
# the syntax: DeliveryHost.domain.com 1.2.3.4
#
DeliveryHost 127.0.0.1
DeliveryPort 10026
DeliveryIdent localhost
DeliveryProto SMTP
#
# FallbackDomains: If you want to specify certain domains as fallback domains,
# enable this option. For example, you could create a user @domain.com, and
# if bob@domain.com does not resolve to a known user on the system, the user
# could default to your @domain.com user. NOTE: This also requires designating
# fallbackDomain for the domain name;
# e.g. dspam_admin ch pref domain.com fallbackDomain on
#
#FallbackDomains on
#
# Quarantine Agent: DSPAM's default behavior is to quarantine all mail it
# thinks is spam. If you wish to override this behavior, you may specify
# a quarantine agent which will be called with all messages DSPAM thinks is
# spam. Use %u to specify the user DSPAM is processing mail for.
#
#QuarantineAgent "/usr/bin/procmail -d spam"
#
# DSPAM can optionally process "plused users" (addresses in the user+detail
# form) by truncating the username just before the "+", so all internal
# processing occurs for "user", but delivery will be performed for
# "user+detail". This is only useful if the LDA can handle "plused users"
# (for example Cyrus IMAP) and when configured for LMTP delivery above
#
#EnablePlusedDetail on
#
# Quarantine Mailbox: DSPAM's LMTP code can send spam mail using LMTP to a
# "plused" mailbox (such as user+quarantine) leaving quarantine processing
# for retraining or deletion to be performed by the LDA and the mail client.
# "plused" mailboxes are supported by Cyrus IMAP and possibly other LDAs.
# The mailbox name must have the +
#
#QuarantineMailbox +quarantine
#
# OnFail: What to do if local delivery or quarantine should fail. If set
# to "unlearn", DSPAM will unlearn the message prior to exiting with an
# un successful return code. The default option, "error" will not unlearn
# the message but return the appropriate error code. The unlearn option
# is use-ful on some systems where local delivery failures will cause the
# message to be requeued for delivery, and could result in the message
# being processed multiple times. During a very large failure, however,
# this could cause a significant load increase.
#
OnFail error
# Trusted Users: Only the users specified below will be allowed to perform
# administrative functions in DSPAM such as setting the active user and
# accessing tools. All other users attempting to run DSPAM will be restricted;
# their uids will be forced to match the active username and they will not be
# able to specify delivery agent privileges or use tools.
#
Trust root
Trust dspam
Trust mail
Trust mailnull
Trust smmsp
Trust daemon
Trust postfix
#Trust nobody
#Trust majordomo
#
# Debugging: Enables debugging for some or all users. IMPORTANT: DSPAM must
# be compiled with debug support in order to use this option. DSPAM should
# never be running in production with debug active unless you are
# troubleshooting problems.
#
# DebugOpt: One or more of: process, classify, spam, fp, inoculation, corpus
# process standard message processing
# classify message classification using --classify
# spam error correction of missed spam
# fp error correction of false positives
# inoculation message inoculations (source=inoculation)
# corpus corpusfed messages (source=corpus)
#
#Debug *
#Debug bob bill
#
#DebugOpt process spam fp
#
# ClassAlias: Alias a particular class to spam/nonspam. This is useful if
# classifying things other than spam.
#ClassAliasSpam badstuff
#ClassAliasNonspam goodstuff
#
# Training Mode: The default training mode to use for all operations, when
# one has not been specified on the commandline or in the user's preferences.
# Acceptable values are: toe, tum, teft, notrain
#
TrainingMode teft
#
# TestConditionalTraining: By default, dspam will retrain certain errors
# until the condition is no longer met. This usually accelerates learning.
# Some people argue that this can increase the risk of errors, however.
#
TestConditionalTraining on
#
# Features: Specify features to activate by default; can also be specified
# on the commandline. See the documentation for a list of available features.
# If _any_ features are specified on the commandline, these are ignored.
#
# NOTE: For standard "CRM114" Markovian weighting, use sbph
#
#Feature sbph
#Feature noise
Feature chained
Feature whitelist
# Training Buffer: The training buffer waters down statistics during training.
# It is designed to prevent false positives, but can also dramatically reduce
# dspam's catch rate during initial training. This can be a number from 0
# (no buffering) to 10 (maximum buffering). If you are paranoid about false
# positives, you should probably enable this option.
#Feature tb=5
#
# Algorithms: Specify the statistical algorithms to use, overriding any
# defaults configured in the build. The options are:
# naive Naive-Bayesian (All Tokens)
# graham Graham-Bayesian ("A Plan for Spam")
# burton Burton-Bayesian (SpamProbe)
# robinson Robinson's Geometric Mean Test (Obsolete)
# chi-square Fisher-Robinson's Chi-Square Algorithm
#
# You may have multiple algorithms active simultaneously, but it is strongly
# recommended that you group Bayesian algorithms with other Bayesian
# algorithms, and any use of Chi-Square remain exclusive.
#
# NOTE: For standard "CRM114" Markovian weighting, use 'naive', or consider
# using 'burton' for slightly better accuracy
#
# Don't mess with this unless you know what you're doing
#
#Algorithm chi-square
#Algorithm naive
Algorithm graham burton
#
# PValue: Specify the technique used for calculating PValues, overriding any
# defaults configured in the build. These options are:
# graham Graham's Technique ("A Plan for Spam")
# robinson Robinson's Technique
# markov Markovian Weighted Technique
#
# Unlike algorithms, you may only have one of these defined. Use of the
# chi-square algorithm automatically changes this to robinson.
#
# Don't mess with this unless you know what you're doing.
#
#PValue robinson
#PValue markov
PValue graham
#
# SupressWebStats: Enable this if you are not using the CGI, and don't want
# .stats files written.
#SupressWebStats on
#
# ImprobabilityDrive: Calculate odds-ratios for ham/spam, and add to
# X-DSPAM-Improbability headers
#ImprobabilityDrive on
#
# Preferences: Specify any preferences to set by default, unless otherwise
# overridden by the user (see next section) or a default.prefs file.
# If user or default.prefs are found, the user's preferences will override any
# defaults.
#
Preference "spamAction=tag"
Preference "signatureLocation=message" # 'message' or 'headers'
Preference "showFactors=on"
#Preference "spamAction=tag"
#Preference "spamSubject=SPAM"
#
# Overrides: Specifies the user preferences which may override configuration
# and commandline defaults. Any other preferences supplied by an untrusted user
# will be ignored.
#
AllowOverride trainingMode
AllowOverride spamAction spamSubject
AllowOverride statisticalSedation
AllowOverride enableBNR
AllowOverride enableWhitelist
AllowOverride signatureLocation
AllowOverride showFactors
AllowOverride optIn optOut
AllowOverride whitelistThreshold
# --- Oracle ---
#OraServer "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SID=PROD)))"
#OraUser dspam
#OraPass changeme
#OraSchema dspam
# --- SQLite ---
#SQLitePragma "synchronous = OFF"
# --- Hash ---
# HashRecMax: Default number of records to create in the initial segment when
# building hash files. 100,000 yields files 1.6MB in size, but can fill up
# fast, so be sure to increase this (to a million or more) if you're not using
# autoextend.
#
# Primes List:
# 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593, 49157, 98317, 196613,
# 393241, 786433, 1572869, 3145739, 6291469, 12582917, 25165843, 50331653,
# 100663319, 201326611, 402653189, 805306457, 1610612741, 3221225473,
# 4294967291
#
HashRecMax 98317
# HashAutoExtend: Autoextend hash databases when they fill up. This allows
# them to continue to train by adding extents (extensions) to the file. There
# will be a small delay during the growth process, as everything needs to be
# closed and remapped.
#
HashAutoExtend on
# HashMaxExtents: The maximum number of extents that may be created in a single
# hash file. Set this to zero for unlimited
#
HashMaxExtents 0
# HashExtentSize: The record size for newly created extents. Creating this too
# small could result in many extents being created. Creating this too large
# could result in excessive disk space usage.
#
HashExtentSize 49157
# HashMaxSeek: The maximum number of records to seek to insert a new record
# before failing or adding a new extent. Setting this too high will exhaustively
# scan each segment and kill performance. Typically, a low value is acceptable
# as even older extents will continue to fill over time.
#
HashMaxSeek 100
# HashConcurrentUser: If you are using a single, stateful hash database in
# daemon mode, specifying a concurrent user will cause the user to be
# permanently mapped into memory and shared via rwlocks.
#
#HashConcurrentUser user
# HashConnectionCache: If running in daemon mode, this is the max # of
# concurrent connections that will be supported. NOTE: If you are using
# HashConcurrentUser, this option is ignored, as all connections are read-
# write locked instead of mutex locked.
HashConnectionCache 10
# LDAP: Perform various LDAP functions depending on LDAPMode variable.
# Presently, the only mode supported is 'verify', which will verify the existence
# of an unknown user in LDAP prior to creating them as a new user in the system.
# This is useful on some systems acting as gateway machines.
#
#LDAPMode verify
#LDAPHost ldaphost.mydomain.com
#LDAPFilter "(mail=%u)"
#LDAPBase ou=people,dc=domain,dc=com
# Optionally, you can specify storage profiles, and specify the server to
# use on the commandline with --profile. For example:
#
#Profile DECAlpha
#MySQLServer.DECAlpha 10.0.0.1
#MySQLPort.DECAlpha 3306
#MySQLUser.DECAlpha dspam
#MySQLPass.DECAlpha changeme
#MySQLDb.DECAlpha dspam
#MySQLCompress.DECAlpha true
#
#Profile Sun420R
#MySQLServer.Sun420R 10.0.0.2
#MySQLPort.Sun420R 3306
#MySQLUser.Sun420R dspam
#MySQLPass.Sun420R changeme
#MySQLDb.Sun420R dspam
#MySQLCompress.Sun420R false
#
#DefaultProfile DECAlpha
#
# If you're using storage profiles, you can set failovers for each profile.
# Of course, if you'll be failing over to another database, that database
# must have the same information as the first. If you're using a global
# database with no training, this should be relatively simple. If you're
# configuring per-user data, however, you'll need to set up some type of
# replication between databases.
#
#Failover.DECAlpha SUN420R
#Failover.Sun420R DECAlpha
# If the storage fails, the agent will follow each profile's failover up to
# a maximum number of failover attempts. This should be set to a maximum of
# the number of profiles you have, otherwise the agent could loop and try
# the same profile multiple times (unless this is your desired behavior).
#
#FailoverAttempts 1
#
# Ignored headers: If DSPAM is behind other tools which may add a header to
# incoming emails, it may be beneficial to ignore these headers - especially
# if they are coming from another spam filter. If you are _not_ using one of
# these tools, however, leaving the appropriate headers commented out will
# allow DSPAM to use them as telltale signs of forged email.
#
#IgnoreHeader X-Spam-Status
#IgnoreHeader X-Spam-Scanned
#IgnoreHeader X-Virus-Scanner-Result
#
# Lookup: Perform lookups on streamlined blackhole list servers (see
# http://www.nuclearelephant.com/projects/sbl/). The streamlined blacklist
# server is machine-automated, unsupervised blacklisting system designed to
# provide real-time and highly accurate blacklisting based on network spread.
# When performing a lookup, DSPAM will automatically learn the inbound message
# as spam if the source IP is listed. Until an official public RABL server is
# available, this feature is only useful if you are running your own
# streamlined blackhole list server for internal reporting among multiple mail
# servers. Provide the name of the lookup zone below to use.
#
# This function performs standard reverse-octet.domain lookups, and while it
# will function with many RBLs, it's strongly discouraged to use those
# maintained by humans as they're often inaccurate and could hurt filter
# learning and accuracy.
#
#Lookup "sbl.yourdomain.com"
#
# RBLInoculate: If you want to inoculate the user from RBL'd messages it would
# have otherwise missed, set this to on.
#
#RBLInoculate off
#
# Notifications: Enable the sending of notification emails to users (first
# message, quarantine full, etc.)
#
Notifications off
#
# Purge configuration: Set dspam_clean purge default options, if not otherwise
# specified on the commandline
#
PurgeSignatures 14 # Stale signatures
PurgeNeutral 90 # Tokens with neutralish probabilities
PurgeUnused 90 # Unused tokens
PurgeHapaxes 30 # Tokens with less than 5 hits (hapaxes)
PurgeHits1S 15 # Tokens with only 1 spam hit
PurgeHits1I 15 # Tokens with only 1 innocent hit
#
# Purge configuration for SQL-based installations using purge.sql
#
#PurgeSignature off # Specified in purge.sql
#PurgeNeutral 90
#PurgeUnused off # Specified in purge.sql
#PurgeHapaxes off # Specified in purge.sql
#PurgeHits1S off # Specified in purge.sql
#PurgeHits1I off # Specified in purge.sql
#
# Local Mail Exchangers: Used for source address tracking, tells DSPAM which
# mail exchangers are local and therefore should be ignored in the Received:
# header when tracking the source of an email. Note: you should use the address
# of the host as appears between brackets [ ] in the Received header.
#
LocalMX 127.0.0.1
#
# Logging: Disabling logging for users will make usage graphs unavailable to
# them. Disabling system logging will make admin graphs unavailable.
#
SystemLog on
UserLog on
#
# TrainPristine: for systems where the original message remains server side
# and can therefore be presented in pristine format for retraining. This option
# will cause DSPAM to cease all writing of signatures and DSPAM headers to the
# message, and deliver the message in as pristine format as possible. This mode
# REQUIRES that the original message in its pristine format (as of delivery)
# be presented for retraining, as in the case of webmail, imap, or other
# applications where the message is actually kept server-side during reading,
# and is preserved. DO NOT use this switch unless the original message can be
# presented for retraining with the ORIGINAL HEADERS and NO MODIFICATIONS.
#
#TrainPristine on
#
# Opt: in or out; determines DSPAM's default filtering behavior. If this value
# is set to in, users must opt-in to filtering by dropping a .dspam file in
# /var/dspam/opt-in/user.dspam (or if you have homedirs configured, a .dspam
# folder in their home directory). The default is opt-out, which means all
# users will be filtered unless a .nodspam file is dropped in
# /var/dspam/opt-out/user.nodspam
#
Opt in
#
# TrackSources: specify which (if any) source addresses to track and report
# them to syslog (mail.info). This is useful if you're running a firewall or
# blacklist and would like to use this information. Spam reporting also drops
# RABL blacklist files (see http://www.nuclearelephant.com/projects/rabl/).
#
#TrackSources spam nonspam
#
# ParseToHeaders: In lieu of setting up individual aliases for each user,
# DSPAM can be configured to automatically parse the To: address for spam and
# false positive forwards. From there, it can be configured to either set the
# DSPAM user based on the username specified in the header and/or change the
# training class and source accordingly. The options below can be used to
# customize most common types of header parsing behavior to avoid the need for
# multiple aliases, or if using LMTP, aliases entirely..
#
# ParseToHeader: Parse the To: headers of an incoming message. This must be
# set to 'on' to use either of the following features.
#
# ChangeModeOnParse: Automatically change the class (to spam or innocent)
# depending on whether spam- or notspam- was specified, and change the source
# to 'error'. This is convenient if you're not using aliases at all, but
# are delivering via LMTP.
#
# ChangeUserOnParse: Automatically change the username to match that specified
# in the To: header. For example, spam-bob@domain.tld will set the username
# to bob, ignoring any --user passed in. This may not always be desirable if
# you are using virtual email addresses as usernames. Options:
# on or user take the portion before the @ sign only
# full take everything after the initial {spam,notspam}-.
#
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full
#
# Broken MTA Options: Some MTAs don't support the proper functionality
# necessary. In these cases you can activate certain features in DSPAM to
# compensate. 'returnCodes' causes DSPAM to return an exit code of 99 if
# the message is spam, 0 if not, or a negative code if an error has occured.
# Specifying 'case' causes DSPAM to force the input usernames to lowercase.
# Spceifying 'lineStripping' causes DSPAM to strip ^M's from messages passed
# in.
#
#Broken returnCodes
#Broken case
#Broken lineStripping
#
# MaxMessageSize: You may specify a maximum message size for DSPAM to process.
# If the message is larger than the maximum size, it will be delivered
# without processing. Value is in bytes.
#
#MaxMessageSize 4194304
#
# Virus Checking: If you are running clamd, DSPAM can perform stream-based
# virus checking using TCP. Uncomment the values below to enable virus
# checking.
#
# ClamAVResponse: reject (reject or drop the message with a permanent failure)
# accept (accept the message and quietly drop the message)
# spam (treat as spam and quarantine/tag/whatever)
#
#ClamAVPort 3310
#ClamAVHost 127.0.0.1
#ClamAVResponse accept
#
# Daemonized Server: If you are running DSPAM as a daemonized server using
# --daemon, the following parameters will override the default. Use the
# ServerPass option to set up accounts for each client machine. The DSPAM
# server will process and deliver the message based on the parameters
# specified. If you want the client machine to perform delivery, use
# the --stdout option in conjunction with a local setup.
#
#ServerPort 24
#ServerQueueSize 32
ServerPID /var/run/dspam.pid
#
# ServerMode specifies the type of LMTP server to start. This can be one of:
# dspam: DSPAM-proprietary DLMTP server, for communicating with dspamc
# standard: Standard LMTP server, for communicating with Postfix or other MTA
# auto: Speak both DLMTP and LMTP; auto-detect by ServerPass.IDENT
#
ServerMode auto
# If supporting DLMTP (dspam) mode, dspam clients will require authentication
# as they will be passing in parameters. The idents below will be used to
# determine which clients will be speaking DLMTP, so if you will be using
# both LMTP and DLMTP from the same host, be sure to use something other
# than the server's hostname below (which will be sent by the MTA during a
# standard LMTP LHLO).
#
#ServerPass.Relay1 "secret"
#ServerPass.Relay2 "password"
# If supporting standard LMTP mode, server parameters will need to be specified
# here, as they will not be passed in by the mail server. The ServerIdent
# specifies the 250 response code ident sent back to connecting clients and
# should be set to the hostname of your server, or an alias.
#
# NOTE: If you specify --user in ServerParameters, the RCPT TO will be
# used only for delivery, and not set as the active user for processing.
#
ServerParameters "--deliver=innocent"
ServerIdent "localhost.localdomain"
# If you wish to use a local domain socket instead of a TCP socket, uncomment
# the following. It is strongly recommended you use local domain sockets if
# you are running the client and server on the same machine, as it eliminates
# much of the bandwidth overhead.
#
ServerDomainSocketPath "/tmp/dspam.sock"
#
# Client Mode: If you are running DSPAM in client/server mode, uncomment and
# set these variables. A ClientHost beginning with a / will be treated as
# a domain socket.
#
#ClientHost /tmp/dspam.sock
#ClientIdent "secret@Relay1"
#
#ClientHost 127.0.0.1
#ClientPort 24
#ClientIdent "secret@Relay1"
# RABLQueue: Touch files in the RABL queue
# If you are a reporting streamlined blackhole list participant, you can
# touch ip addresses within the directory the rabl_client process is watching.
#
#RABLQueue /var/spool/rabl
# DataSource: If you are using any type of data source that does not include
# email-like headers (such as documents), uncomment the line below. This
# will cause the entire input to be treated like a message "body"
#
#DataSource document
# ProcessorWordFrequency: By default, words are only counted once per message.
# If you are classifying large documents, however, you may wish to count once
# per occurrence instead.
#
#ProcessorWordFrequency occurrence
# ProcessorBias: Bias causes the filter to lean more toward 'innocent', and
# usually greatly reduces false positives. It is the default behavior of
# most Bayesian filters (including dspam).
#
# NOTE: You probably DONT want this if you're using Markovian Weighting, unless
# you are paranoid about false positives.
#
ProcessorBias on
# Include a directory with configuration items.
Include /etc/dspam/dspam.d/
## EOF
A questa punto, facendo il little testing :D, succede che:
- Se invio una mail tramite il comando sendmail stefano@localhost < /etc/resolv.conf, la mail viene recapitata senza problemi ma non risulta esaminata da dspam:
May 7 18:11:34 keope postfix/pickup[3836]: E063C189F0: uid=0 from=<root>
May 7 18:11:34 keope postfix/cleanup[3877]: E063C189F0: message-id=<20070507161134.E063C189F0@keope.testserver.it>
May 7 18:11:34 keope postfix/qmgr[3837]: E063C189F0: from=<root@keope.testserver.it>, size=385, nrcpt=1 (queue active)
May 7 18:11:35 keope postfix/local[3879]: E063C189F0: to=<stefano@keope.testserver.it>, orig_to=<stefano>, relay=local, delay=0.17, delays=0.09/0.01/0/0.07, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
May 7 18:11:35 keope postfix/qmgr[3837]: E063C189F0: removed
e l'header dell'email è:
From root@keope.testserver.it Mon May 7 18:11:34 2007
Return-Path: <root@keope.testserver.it>
X-Original-To: stefano
Delivered-To: stefano@keope.testserver.it
Received: by keope.testserver.it (Postfix, from userid 0)
id E063C189F0; Mon, 7 May 2007 18:11:34 +0200 (CEST)
Message-Id: <20070507161134.E063C189F0@keope.testserver.it>
Date: Mon, 7 May 2007 18:11:34 +0200 (CEST)
From: root@keope.testserver.it (root)
To: undisclosed-recipients:;
search .
nameserver 217.194.176.21
nameserver 212.216.172.162
- se invece provo a spedire una mail tramite telnet localhost 25, il risultato è questo:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 keope.testserver.it ESMTP Postfix (Debian/GNU)
helo pippo.com
250 keope.testserver.it
mail from:<pippo@pippo.com>
250 2.1.0 Ok
rcpt to:<stefano@localhost>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject: prova
ciao
.
250 2.0.0 Ok: queued as 2F12D189EF
fin qui tutto ok, ma dal mail.log:
May 7 18:14:59 keope postfix/smtpd[3883]: connect from localhost[127.0.0.1]
May 7 18:15:36 keope postfix/smtpd[3883]: 2F12D189EF: client=localhost[127.0.0.1]
May 7 18:15:41 keope postfix/cleanup[3887]: 2F12D189EF: message-id=<20070507161536.2F12D189EF@keope.testserver.it>
May 7 18:15:41 keope postfix/qmgr[3837]: 2F12D189EF: from=<pippo@pippo.com>, size=363, nrcpt=1 (queue active)
May 7 18:15:41 keope postfix/lmtp[3888]: 2F12D189EF: to=<stefano@localhost>, relay=none, delay=21, delays=21/0.01/0/0, dsn=4.4.1, status=deferred (connect to keope.testserver.it[/tmp/dspam.sock]: No such file or directory)
May 7 18:15:55 keope postfix/smtpd[3883]: disconnect from localhost[127.0.0.1]
e la mail non arriva da nessuna parte :cry:
Però:
keope:/etc/dspam# ls -l /tmp
totale 0
srwxrwxrwx 1 root dspam 0 2007-05-07 18:26 dspam.sock
Ci ho perso la giornata su questa cosa, ho provato a spostare, cambiare, girare, rifare, controllare, ricontrollare............ ma non ne esco :cry: :cry: :cry: :cry: :cry: :cry:
Scusate la lungaggine, però volevo esporre le cose nel modo più chiaro possibile!!!
Cosa sto sbagliando secondo voi?
Grazie dei consigli.
Ciao.