On 11 Aug 2020, at 10:48, jin&hitman&Barracuda wrote:

Hello,

I'ld like to ask some questions about filtering/scanning mails. I'm using Postfix-3.4.14 in my setup. However, the questions aren't directly related with Postfix but, as a newbie I don't have such an opportunity to ask this
kind of questions to anyone except this list, so please accept my
apologies.
I need a design which allows me to scan/check e-mails (the DATA portion)
against some words stored in the SQL table. Actually, there are two
tables stored in the same SQL DB which are named "white" and "black". As you probably guess, white db table contains the words acceptable and black
contains the contrary.

To what end?

If the goal is to filter "spam" (specifically: unsolicited bulk email) then I agree with Dr. Venema: try SpamAssassin, either with the single-purpose spamass-milter or via some more comprehensive milter like MIMEDefang or Amavis. However you hook up SpamAssassin to Postfix, it will not make a simple binary decision on filtering based on trivial SQL tables as described, because that mechanism is completely inadequate for spam filtering. SA does include a Naive Bayesian statistical filter that can run out of a SQL RDBMS, and I suppose one could train that filter artificially to behave much like simple allow/deny lists of words, but I would not recommend that approach. SA is not designed or intended to operate as a generic filter, it is only really useful for spam filtering. (Full disclosure: I don't speak for the SpamAssassin Project, but I am a member of the PMC.)

If the goal is the process, i.e. to use simple allow/deny lists of words in a SQL DB to categorize messages, then SpamAssassin in any normal sort of configuration is not the right tool. If you can write a relatively small amount of Perl, then MIMEDefang might be. It is a general filtering framework which CAN use SA and other filtering tools, but it is customized by writing Perl subroutines and designed to do complex message manipulation, so it could be used as a platform for the sort of filtering that you propose.

When I try to find a method, I've found milter
options. There are many milters out there and they offer different
features. Looks like i have to write one to serve my requirements. But, I
still don't know the answers of the questions listed below.

- Are there any other options that allow me to scan a mail against values
stored in an SQL database ?

I am aware of no such tool for use with Postfix or any other MTA. For the purposes that most people want to filter mail, that mechanism is just too simplistic.

- If the only way is using a milter to achieve this goal, when exactly i
should send it to the milter ? Does it matter ?

I'm not clear on what you mean by that...

A milter registers callback routines with the MTA based on what aspects of the SMTP transaction it wants to filter. Since you are filtering the message body, you'd need to register xxfi_body() and xxfi_eom() callbacks if you build a custom milter. Postfix makes those calls synchronously at the end of the SMTP DATA command, the only time when it has message data.

- (Sorry for this one but, let me ask this specific question once.) Instead of writing a new milter, can I use "proxsmtp" project for that purpose ?

I'm not familiar with it, but it appears to be a SMTP proxy, not a milter. It may or may not work with Postfix's proxy interface. Whether you can make it filter mail in the manner you desire, I do not kn ow.

--
Bill Cole
b...@scconsult.com or billc...@apache.org
(AKA @grumpybozo and many *@billmail.scconsult.com addresses)
Not For Hire (currently)

Reply via email to