Требуется установить промежуточный сервер для приема и отсылки почты.
Сейчас почта работает через smart-host наружу, раздача внутри доменых
пользователей, -понятно- по pop3.
Что-то не соображу, с помощью чего это можно сделать?
>Требуется установить промежуточный сервер для приема и отсылки почты.
>Сейчас почта работает через smart-host наружу, раздача внутри доменых
>пользователей, -понятно- по pop3.
>Что-то не соображу, с помощью чего это можно сделать?
а какой сакраментальный смысл "промежуточного" сервера?
>Требуется установить промежуточный сервер для приема и отсылки почты.
>Сейчас почта работает через smart-host наружу, раздача внутри доменых
>пользователей, -понятно- по pop3.
>Что-то не соображу, с помощью чего это можно сделать?Привет!
http://www.coruscant.demon.co.uk/mike/sendmail/examples.html
Это конфигурация почтового хаба под sendmail. Перегоняет через себя входящую и исходящую почту. Во время приема производит проверку только домена. Для включения проверки и имен юзеров нужно добавить:
FEATURE(`blacklist_recipients')
И работать с access - файлом.
http://www.opennet.me/openforum/vsluhforumID1/38136.html - здесь все это обсуждалось.
Если у тебя внутри Exchange, могу поделиться опытом автоматического переноса списка существующих адресов.
>>Требуется установить промежуточный сервер для приема и отсылки почты.
>>Сейчас почта работает через smart-host наружу, раздача внутри доменых
>>пользователей, -понятно- по pop3.
>>Что-то не соображу, с помощью чего это можно сделать?
>
>Привет!
>http://www.coruscant.demon.co.uk/mike/sendmail/examples.html
>Это конфигурация почтового хаба под sendmail. Перегоняет через себя входящую и исходящую
>почту. Во время приема производит проверку только домена. Для включения проверки
>и имен юзеров нужно добавить:
>FEATURE(`blacklist_recipients')
>И работать с access - файлом.
>http://www.opennet.me/openforum/vsluhforumID1/38136.html - здесь все это обсуждалось.
>Если у тебя внутри Exchange, могу поделиться опытом автоматического переноса списка существующих
>адресов.
Ага если не сложно и не жалко поделись, очень обяжешь
>>>Требуется установить промежуточный сервер для приема и отсылки почты.
>>>Сейчас почта работает через smart-host наружу, раздача внутри доменых
>>>пользователей, -понятно- по pop3.
>>>Что-то не соображу, с помощью чего это можно сделать?
>>
>>Привет!
>>http://www.coruscant.demon.co.uk/mike/sendmail/examples.html
>>Это конфигурация почтового хаба под sendmail. Перегоняет через себя входящую и исходящую
>>почту. Во время приема производит проверку только домена. Для включения проверки
>>и имен юзеров нужно добавить:
>>FEATURE(`blacklist_recipients')
>>И работать с access - файлом.
>>http://www.opennet.me/openforum/vsluhforumID1/38136.html - здесь все это обсуждалось.
>>Если у тебя внутри Exchange, могу поделиться опытом автоматического переноса списка существующих
>>адресов.
>Ага если не сложно и не жалко поделись, очень обяжешь
Ok! Если чего-то не понятно, уточняй.
Перенос ведется с помощью программы ADMIN.exe (exchange administrator) под 5.5. Файл со всем барахлом выкладывается на FTP машины с Exсhange, оттуда он забирается машиной-mail-hub, из него выдираются e-mail-адреса и происходит сборка access-файла (Perl-скрипт)
Содержимое bat-файла на Exchange:
copy C:\admin\userexport\exportfields.txt C:\admin\userexport\exchusers_abby.txt
D:\Programs\Ex\bin\ADMIN.EXE /e C:\admin\userexport\exchusers_abby.txt /n /o C:\admin\userexport\userexport_abby.ini
Содежимое exportfields.txt
Obj-Class tab E-mail addresses tab Secondary-Proxy-Addresses
tab - в смысле табуляция (поля задаем)Содержимое userexport_abby.ini
[Export]
DirectoryService=имя_сервера_Exchange
Basepoint=
ExportObject=All
InformationLevel=Minimal
BasepointOnly=No
RawMode=No
HiddenObjects=Yes
Subcontainers=No
CodePage=0
; 09 = TAB
ColumnSeparator=09
; 37 = %
MVSeparator=37
; 34 = "
QuoteCharacter=34Все это копирование и остальной изврат с ini - файлами сделаны для экспорта всех адресов, по умолчанию экспортируются только reply-адреса и то, только маилбоксов, не групп.
На FreeBSD для автоматического скачивания поставил lftp-2.6.11
Скрипт на перле-скачивает файло, вытаскивает адреса, формирует и запускает access-файл, следит за тем чтобы ненароком не сотворить глупостей (чтобы все адреса не потереть, такое было :)) и отсылает отчеты о сделанных изменениях. Я не программер, так что извиняйте за возможную топорность.
#!/usr/bin/perl -w
use strict;
my $input = "/etc/mail/userexport";
my $output = "/etc/mail/userexport/access_mailboxes";
my $access = "/etc/mail/access";
my $access_mailboxes = "/etc/mail/userexport/access_mailboxes";
my $access_new = "/etc/mail/userexport/access_new";
my $access_global = "/etc/mail/userexport/access_global";
my $ourdomains = "/etc/mail/userexport/ourdomains";
my $exception = "/etc/mail/userexport/exception";
my $message = "/etc/mail/userexport/message";
my $log = "/etc/mail/userexport/log";
my @ourdomains;
my @exception;
my @mailboxes;
my @old_mailboxes;
my @added_strings;
my @deleted_strings;
my $l;
my $k;
my $string;
my $result;
my $domain;
my $address;
my @fields;
my $count=0;
my $old_count=0;
system "cd /etc/mail/userexport";
system "/usr/local/bin/lftp -e 'set ftp:passive-mode off && mget -E /Mail/userexport/exchusers*.txt && bye' -u user,pass mail.inel.ru";open OURDOMAINS, "$ourdomains" or die "Cannot find $ourdomains\n";
while (<OURDOMAINS>) {
chomp;
push @ourdomains, $_;
}
close OURDOMAINS;open EXCEPTION, "$exception" or die "Cannot find $exception\n";
while (<EXCEPTION>) {
chomp;
push @exception, $_;
}
close EXCEPTION;open OUTPUT, "$output" or die "Cannot find $output\n";
while (<OUTPUT>) {
$old_count ++;
push @old_mailboxes, $_;
}close OUTPUT;
foreach (<$input/exchusers_*>) {
open INPUT, "$_" or die "Cannot find $_\n";
while (<INPUT>) {
@fields = split /smtp/i, $_;
foreach (@fields) {
if (/:(.*@.*\.\w*)/) {
$address = $1;
$domain = ($1 =~ /^.*@(.*\.\w*$)/);
$domain = $1;
foreach (@ourdomains) {
if ($domain eq $_) {
$result = "noexception";
foreach (@exception) {
$result = "excpetion" if ($address eq $_);
}
if ($result eq "noexception") {
$count ++;
$string = "To:\L$address\E\t\tRELAY\n";
push @mailboxes, $string;
}
}
}
}
}
}
}foreach $l (@old_mailboxes) {
$result = "noconcur";
foreach $k (@mailboxes) {
$result = "concur" if ($l eq $k);
}
push @deleted_strings, $l if ($result eq "noconcur");
}foreach $l (@mailboxes) {
$result = "noconcur";
foreach $k (@old_mailboxes) {
$result = "concur" if ($l eq $k);
}
push @added_strings, $l if ($result eq "noconcur");
}#die "Warning, to much changes!!!\nWas:\t$old_count\nNow\t$count\n" if ($old_cou
nt - $count > 10 || $count - $old_count > 10);if ($old_count - $count > 10 || $count - $old_count > 10) {
system 'cat /etc/mail/userexport/toomuch | mail -s "Mail base, warning"
admin@inel.ru';
system 'cat /etc/mail/userexport/toomuch | mail -s "Mail base, warning"
serge@inel.ru';
die;
}open OUTPUT, ">$output" or die "Cannot find $output\n";
foreach (@mailboxes) {
# print "$_";
print OUTPUT "$_";
}
close OUTPUT;print "deleted_strings\n @deleted_strings\n";
print "added_strings\n @added_strings\n";
print "Total was addresses: $old_count\n";
print "Total addresses: $count\n";
if ($count != $old_count) {
print "Sending letter\n";
open ACCESS_NEW, ">$access_new" or die "Cannot find $access_new\n";
open ACCESS_MAILBOXES, "$access_mailboxes" or die "Cannot find $access_mailboxes\n";
while (<ACCESS_MAILBOXES>) {
print ACCESS_NEW "$_";
}close ACCESS_MAILBOXES;
open ACCESS_GLOBAL, "$access_global" or die "Cannot find $access_global\n";
while (<ACCESS_GLOBAL>) {
print ACCESS_NEW "$_";
}close ACCESS_NEW;
close ACCESS_GLOBAL;my $date = `date "+%d%-%m-%Y_%H:%M:%S"`;
system "cp $access $access\_\_$date";
sleep 1;
system "cp $access_new $access";
print "$access file relaced,\nold file named $access\_\_$date";
sleep 1;
system "cd /etc/mail";
system "chown -R root /etc/mail/";
system "makemap hash /etc/mail/access < /etc/mail/access";
system "chown -R mailnull /etc/mail/";
open MESSAGE, ">$message" or die "Cannot find $message\n";
print MESSAGE "deleted_strings\n @deleted_strings\n";
print MESSAGE "added_strings\n @added_strings\n";
print MESSAGE "Total was addresses: $old_count\n";
print MESSAGE "Total addresses now: $count\n";
print MESSAGE "$access file relaced,\nold file named $access\_\_$date";
close MESSAGE;
system 'cat /etc/mail/userexport/message | mail -s "Mail base" admin@domain.ru';}
Для andrew: разгрузить сервер от spamasassin-a.
Для Владимира: Помотрел, ключевое слово mailertable?
>Для andrew: разгрузить сервер от spamasassin-a.
>Для Владимира: Помотрел, ключевое слово mailertable?
Народ а собственно в чём проблема? Только перенос? Или?
>Для andrew: разгрузить сервер от spamasassin-a.
>Для Владимира: Помотрел, ключевое слово mailertable?Сорри, не понял, про что это ты..
В общем из того обсуждения наверное важнее всего это итоговое сообщение:29. "Sendmail и имена получателей"
Сообщение от OlAB on 29-Дек-03, 11:26 (MSK)
>>обламывает всех с диагностикой mail box disabled
>>а пользователя user@domain.ru обламывает с диагностикой releying denied
>>:-((
>Дык а у тя в relay-domains эти домены прописаны?
>Дай relay-domains
>mailertable и access
>посмотреть...
нет - файла relay-domains у меня не было совсем! ... пока я не начао заморачиваться с такой схемой - все работало без него - достаточно было прописать домен в access...
Сейчас все работает! - спасибо!привожу для всех рабочее решение:
в файл access надо прописать так:
To:user@domain.ru OK
.... по строчке на каждого пользователя
To:another@domain.ru OK
To:domain.ru REJECTнадо создать файл relay-domains
и прописать в него
domain.ruпересобрать access.db
перезапустить sendmail и все должно заработать...
Большое спасибо Всем за помощь в решении вопроса.#################################
Единственное, я использую RELAY вместо OK и использую свой текст отлупаПривожу копию своего m4 (здесь добавлено использование spamcop):
divert(-1)
#
# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
##
# This is a generic configuration file for 4.4 BSD-based systems,
# including 4.4-Lite, BSDi, NetBSD, and FreeBSD.
# It has support for local and SMTP mail only. If you want to
# customize it, copy it to a name appropriate for your environment
# and do the modifications there.
#divert(0)dnl
VERSIONID(`$Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $')dnl
OSTYPE(bsd4.4)dnl
FEATURE(`nouucp', `reject')dnl
FEATURE(`always_add_domain')dnl
MASQUERADE_AS(`domain.ru')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`mailertable')dnl
FEATURE(`access_db')dnl
FEATURE(`blacklist_recipients')dnl
FEATURE(`enhdnsbl', `bl.spamcop.net', `"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}', `t')dnl
DOMAIN(generic)dnl
MAILER(`smtp')dnl
dnl Turn off ident querying, which is usually wrong and slows things down
define(`confTO_IDENT', `0')dnl
dnl Since the bastion box never delivers mail to disk or anything that
dnl generally requires it to assume a user's identity, we can run it as
dnl something other than root, which is very good.
define(`confRUN_AS_USER', `mailnull:mailnull')dnl
dnl Sendmail defaults to giving out all kinds of useful (to hackers)
dnl information in the greeting message. There are still a number of
dnl ways to get Sendmail to give you that information, but this makes
dnl it a little harder.
define(`confSMTP_LOGIN_MSG', `')dnl
dnl This disables all of the commands that would allow an outsider to
dnl confirm email addresses, see who root mail is sent to, etc.
define(`confPRIVACY_FLAGS', `goaway')dnl
dnl Send a copy of bounce messages to the postmaster
define(`confCOPY_ERRORS_TO', `postmaster')dnlИспользуются файлы:
local-host-names
В нем имя того куда идут поста внутрь
exchange.domain.rurelay-domains
Прописаны внутренние почтовые домены:
domain.ru
domain2.rumailertable
domain.ru esmtp:[exchange.domain.ru]
domain2.ru esmtp:[exchange.domain.ru]access
Используем для безопасности:To:use1@domain.ru RELAY
............
To:usern@domain.ru RELAYTo:use1@domain2.ru RELAY
............
To:usern@domain2.ru RELAYTo:domain.ru ERROR:"550 Nonexisting mailbox"
To:domain2.ru ERROR:"550 Nonexisting mailbox"
Connect:exchange.domain.ru RELAY
Connect:123.123.234.234 RELAY# Friends, not spammers
#############################################
Connect:194.226.218.5 OK
Connect:62.118.251 OK
################ BLACK LIST #################66.218.66.81 ERROR:"550 You are blacklisted [66.218.66.81]"
66.218.66.92 ERROR:"550 You are blacklisted [66.218.66.92]"