На главную | В раздел

Courier MTA auth from user perl filter

Описание

Этот фильтр является модулем для системы фильтрации входящих сообщений Courier MTA.
Фильтр проверяет, соответствует ли авторизованный пользователь@домен, указанному в заголовке FROM адресу.
В случае, если указанные поля не совпадают, фильт не позволит Courier MTA принять сообщение.

Инсталляция

Прежде всего Вам необходимо настроить фильтрацию в Courier MTA с помощью courier-filter-perl.
Далее, Вам необходимо скачать модуль Courier MTA perl filter for auth user from user check
Распаковать файл туда же, где находятся другие модули-фильтры Courier MTA, в моём случае они находятся в директории /usr/share/courier-filter-perl/perl5/Courier/Filter/Module
В файле настроек, который в моём случае находится в /etc/courier/filters/courier-filter-perl.conf добавить строки use Courier::Filter::Module::AuthFrom; и Courier::Filter::Module::AuthFrom->new() в секцию объявления элементов массива ключа modules
После чего необходимо перезапустить подсистему фильтрации Courier MTA с помощью команды courierfilter restart

Исходный код модуля

#
# Courier::Filter::Module::AuthFrom class
#
# (C) 2012 Konstantin S. Vishnivetsky 
# $Id: AuthFrom.pm 210 2012-07-24 02:19:31Z kvishnivetsky $
#
# 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 3 of the License, 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 should have received a copy of the GNU General Public License
# along with this program.  If not, see .
#
# For contacts:
# WEB: http://www.vishnivetsky.ru
# E-mail: web-projects@vishnivetsky.ru
# SkyPE: kvishnivetsky
# ICQ: 328-468-511
# Phone: +7 913 774-7588
#
#######################################################################

package Courier::Filter::Module::AuthFrom;

use warnings;
use strict;
use utf8;

use constant TRUE   => (0 == 0);
use constant FALSE  => not TRUE;

use base 'Courier::Filter::Module';

sub new {
    my ($class, %options) = @_;

    my $self = $class->SUPER::new(
        %options
    );

    return $self;
}

sub match {
    my ($self, $message) = @_;

    if ($message->authenticated) {
        if (!($message->authenticated_user eq $message->sender)) {
            $self->warn("Auth user ".$message->authenticated_user." not allowed to send from ".$message->sender);
            return sprintf("Auth user ".$message->authenticated_user." not allowed to send from ".$message->sender);
        }
    }

    return undef;
}

TRUE;

Связные статьи

Courier authdaemon socket interface
© Константин С. Вишнивецкий, 2007-2017