SYNOPSIS
kolab_smtpdpolicy [-v]DESCRIPTION
kolabdelegated Postfix SMTPD policy server for Kolab. This server implements various policies for Kolab:1) Only authenticated users can use sender <username>@$domain
2) Some distribution lists are only available to authenticated users
Logging is sent to syslogd.
How it works: each time a Postfix SMTP server process is started it connects to the policy service socket, and Postfix runs one instance of this PERL script. By default, a Postfix SMTP server process terminates after 100 seconds of idle time, or after serving 100 clients. Thus, the cost of starting this PERL script is smoothed out over time.
To run this from /etc/postfix/master.cf:
policy unix - n n - - spawn user=kolab-n argv=/usr/bin/perl /usr/libexec/postfix/kolab_smtpdpolicy
To use this from Postfix SMTPD, use in /etc/postfix/main.cf:
smtpd_recipient_restrictions = ... reject_unauth_destination check_policy_service unix:private/policy ... smtpd_sender_restrictions = ... check_policy_service unix:private/policy ...
NOTE: specify check_policy_service AFTER reject_unauth_destination or else your system can become an open relay.
To test this script by hand, execute kolab_smtpdpolicy, optionally with the option -v to print debugging output. Example for OpenPKG based installations:
# su - kolab $ /kolab/etc/kolab/kolab_smtpdpolicy -v
Each query is a bunch of attributes. Order does not matter, and the demo script uses only a few of all the attributes shown below:
request=smtpd_access_policy protocol_state=RCPT protocol_name=SMTP helo_name=some.domain.tld queue_id=8045F2AB23 [email protected] [email protected] client_address=1.2.3.4 client_name=another.domain.tld instance=123.456.7 sasl_method=plain sasl_username=you sasl_sender= size=12345 [empty line]
The policy server script will answer in the same style, with an attribute list followed by a empty line:
action=DUNNO [empty line]
OPTIONS AND ARGUMENTS
- -v
COPYRIGHT AND AUTHORS
See AUTHORS fileLICENSE
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You can view the GNU General Public License, online, at the GNU Project's homepage; see <http://www.gnu.org/licenses/gpl.html>.