2. СБОРКА Unreal3.2.7
cd /home/admin/source/Unreal3.2.7
./Config
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for Unreal3.2.7
This program will help you to compile your IRC server, and ask you
questions regarding the compile-time settings of it during the process.
regarding the setup of it, during the process.
If you have problems regarding the setup & compile, read Unreal.nfo to get
more information on where to get help. Please, before running this setup,
read the documentation in the "doc" folder. Docs are also avail online @
http://www.unrealircd.com/unreal32docs.html
[Enter to continue]
<enter>
Пролистываем лицензионное соглашение и снова <enter>
Do you want to enable the server anti-spoof protection?
[No] -> <enter>
What directory are all the server configuration files in?
[/home/admin/conf] -> /home/admin/conf <enter>
What is the path to the ircd binary including the name of the binary?
[/home/admin/bin] -> /home/admin/bin <enter>
Would you like to compile as a hub or as a leaf?
Type Hub to select hub and Leaf to select leaf.
[Hub] -> <enter>
What is the hostname of the server running your IRCd?
[irc.mypage.ru] -> irc.mypage.ru <enter> !!!** URL вашего сервера **!!!
What should the default permissions for your configuration files be? (Set this to 0 to disable)
It is strongly recommended that you use 0600 to prevent unwanted reading of the file
[0600] -> <enter>
Do you want to support SSL (Secure Sockets Layer) connections?
[No] -> <enter>
Do you want to enable IPv6 support?
[No] -> <enter>
Do you want to enable ziplinks support?
[Yes] -> <enter>
If you know the path to zlib on your system, enter it here. If not
leave this blank
[] -> <enter>
Do you want to enable remote includes?
[No] -> <enter>
Do you want to enable prefixes for chanadmin and chanowner?
This will give +a the & prefix and ~ for +q (just like +o is @)
Supported by the major clients (mIRC, xchat, epic, eggdrop, Klient,
PJIRC, irssi, CGI:IRC, etc.)
This feature should be enabled/disabled network-wide.
[Yes] -> <enter>
What listen() backlog value do you wish to use? Some older servers
have problems with more than 5, others work fine with many more.
[5] -> <enter>
How far back do you want to keep the nickname history?
[2000] -> <enter>
What is the maximum sendq length you wish to have?
[3000000] -> <enter>
How many buffer pools would you like?
This number will be multiplied by MAXSENDQLENGTH.
[18] -> <enter>
How many file descriptors (or sockets) can the IRCd use?
[1024] -> <enter>
Would you like any more parameters to configure?
Write them here:
[]-> <enter>
По завершению:
make
По завершению:
make install
Готово...
Чистим конфигурационный файл и вбиваем туда нижеуказанный конфиг, предварительно заменив все что с коментами своими значениями
cp /dev/null /home/admin/conf/unrealircd.conf
nano home/admin/conf/unrealircd.conf
loadmodule "/home/admin/conf/modules/commands.so"; // проверяем правильность
loadmodule "/home/admin/conf/modules/cloak.so"; // путей к файлам
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";
me
{
name "irc.mypage.ru"; //имя сервера
info "My IRC server"; //информация о сервере
numeric 101;
};
admin
{
"vovan"; //свой ник
"vovan@kalyan.ru"; //свое мыло
};
class clients
{
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers
{
pingfreq 90;
maxclients 10;
sendq 1000000;
connfreq 100;
};
allow
{
ip *@*;
hostname *@*;
class clients;
maxperip 5;
};
listen *:6667;
oper vovan //свой ник
{
class clients;
from
{
userhost vovan@kalyan.ru; // свое мыло
};
password "12345"; //свой пароль
flags
{
global;
};
};
link services.irc.loc
{
username *;
hostname 127.0.0.1;
bind-ip 127.0.0.1;
port 6667;
password-connect "qwerty"; //изменив этот пароль также нужно будет изменить
password-receive "qwerty"; //его в RemoteServer файла /home/admin/data/services.conf
class servers;
};
drpass
{
restart "12345"; // пароль на рестарт и
die "12345"; // выключение сервера
};
log "ircd.log"
{
maxsize 2097152;
flags
{
oper;
kline;
connects;
server-connects;
kills;
errors;
sadmin-commands;
chg-commands;
oper-override;
spamfilter;
};
};
ban nick
{
mask "*C*h*a*n*S*e*r*v*";
reason "Reserved for Services";
};
official-channels
{
"#test"; //имя канала
"#help";
};
set
{
network-name "mypage.ru"; // Просто
default-server "irc.mypage.ru"; // смените
services-server "services.mypage.ru"; // mypage.ru
stats-server "stats.icr.mypage.ru"; // на ваш урл
help-channel "#help";
hiddenhost-prefix "xex";
cloak-keys
{
"aosdrfewtrefgrestgtrgZbSFGSEt46";
"dgdsfergergergegregergFGSDFGes5y";
"FDGerrt54tsgrg5yhrthththrtFDGe44";
};
hosts
{
local "locop.icr.mypage.ru"; //Просто
global "ircop.icr.mypage.ru"; //
coadmin "coadmin.icr.mypage.ru"; //смените
admin "admin.icr.mypage.ru"; //mypage.ru
servicesadmin "csops.icr.mypage.ru"; //
netadmin "netadmin.icr.mypage.ru"; //на ваш урл
host-on-oper-up "no";
};
};
set { allowed-nickchars { windows-1251; }; };
set {
kline-address "kline@irc.mypage.ru";
modes-on-connect "+ixw";
modes-on-oper "+xwgs";
options {
hide-ulines;
show-connect-info;
};
maxchannelsperuser 1;
anti-spam-quit-message-time 10s;
oper-only-stats "okfGsMRUEelLCXzdD";
throttle {
connections 3;
period 60s;
};
anti-flood {
nick-flood 3:60;
};
spamfilter {
ban-time 1d;
ban-reason "Spam/Advertising";
virus-help-channel "#help";
};
Сохраняем и запускаем сервер
/home/admin/bin/ircd
Коннектимся к нашему серверу и проверяем....
Если все работает - переходим к установке сервисов..
3. СБОРКА anope-1.6.5
cd /home/admin/source/anope-1.6.5
./configure
-========================= A N O P E ==========================-
For more detailed information on the features of Anope1.6 please
read the self-named documentation found on the 'docs' directory.
Anope is a set of IRC Service expanded upon Lara's Epona, based
on Andy Church's IRC Services. For all your Anope needs please
visit our portal at http://www.anope.org/
Please read the INSTALL file for install/upgrade instructions.
Reading the FAQ and README files would be a good idea too. (all
documentation is located on directory 'docs').
-================================================== ============-
Beginning Services configuration.
Using defaults from config.cache. To ignore, either rm config.cache
or give the command-line option "-ignore-cache".
Note: press Return for the default, or enter a new value.
In what directory do you want the binaries to be installed?
[/home/admin/anope_bin] /home/admin/anope_bin <enter>
Where do you want the data files to be installed?
[/home/admin/data] /home/admin/data <enter>
Which group should all Services data files be owned by? (If Services
should not force files to be owned by a particular group, just press
Return.)
[] <enter>
What should the default umask for data files be (in octal)?
(077 = only accessible by owner; 007 = accessible by owner and group)
[077] <enter>
Select the closest to the type of server on your IRC network:
1) DreamForge 4.6.7 [dated IRCd, upgrade to a current one]
2) Bahamut 1.4.27 [or later]
3) UnrealIRCd 3.1.1 [or later]
4) UltimateIRCd 2.8.2 [or later]
5) UltimateIRCd 3.0.0 [alpha26 or later]
6) Hybrid IRCd 7.0 [experimental]
7) ViagraIRCd 1.3.x [or later]
8) PTlink 6.15.0 [experimental]
[3] 3 <enter>
Do you want to use the MD5 message-digest algorithm to encrypt passwords?
(Selecting "yes" protects your passwords from being stolen if someone
gains access to the Services databases, but makes it impossible to recover
forgotten passwords. There is no way to reverse this operation, so make
sure you really want to enable it.)
[no] no <enter>
Do you want to compile Anope with threading support?
If you want to use the proxy detector, you MUST have this. If you get
compilation errors, you should disable this feature and try again.
[no] no <enter>
Do you want to compile Anope with MySQL support?
At this time Anope is able to dump all databases into MySQL. That means
you get a read-only copy of the data. If you plan to run any module that
uses MySQL, you should enable this option as well.
[no] no <enter>
Do you want to compile Anope with Module support?
This will allow you to load and unload external modules of code without
restarting services. You can find several Anope modules on our website.
This requires libdl, if you have problems compiling disable this option.
(this option is ignored on OpenBSD for the time being)
[no] no <enter>
По завершению:
make
По завершению:
make install
Готово
Создаем файл конфига, также вписываем туда параметры, указанные ниже, предварительно заменив все что с коментами своими значениями
nano home/admin/data/services.conf
RemoteServer localhost 6667 "qwerty" // Смените пароль на тот, который указан в link services.irc.loc в файле unrealircd.conf
ServerName "services.irc.loc"
ServerDesc "Services for IRC Networks"
ServiceUser "services@localhost.net"
NickServName "NickServ" "Nickname Server"
ChanServName "ChanServ" "Channel Server"
MemoServName "MemoServ" "Memo Server"
BotServName "BotServ" "Bot Server"
HelpServName "HelpServ" "Help Server"
OperServName "OperServ" "Operator Server"
GlobalName "Global" "Global Noticer"
HostServName "HostServ" "vHost Server"
PIDFile services.pid
MOTDFile services.motd
NickServDB nick.db
ChanServDB chan.db
BotServDB bot.db
OperServDB oper.db
NewsDB news.db
ExceptionDB exception.db
HostServDB hosts.db
HelpChannel "#help"
NetworkDomain "irc.mypage.ru" //укажите свой URL
NetworkName "MyIRC.ru" //название своей сети
StrictPasswords
BadPassLimit 5
BadPassTimeout 1h
UpdateTimeout 5m
ExpireTimeout 30m
ReadTimeout 5s
WarningTimeout 4h
TimeoutCheck 3s
KeepLogs 7
KeepBackups 3
ForceForbidReason
LogUsers
HideStatsO
GlobalOnCycle
GlobalOnCycleMessage "Services are restarting, they will be back shortly - please be good while we're gone"
GlobalOnCycleUP "Services are now back online - have a nice day"
AnonymousGlobal
ProxyThreads 5
ProxyMessage1 "I will now detect if you're using an insecure proxy."
ProxyMessage2 "If you see a connection on port 23, 1080, 3128 or 8080 from"
ProxyMessage3 "my.box.net, please disregard it, as it is the detector in action."
ProxyMessage4 "See http://proxy.myirc.net/ for information about our proxy policy."
ProxyCheckWingate
ProxyCheckSocks4
ProxyCheckSocks5
ProxyCheckHTTP1
ProxyCheckHTTP2
ProxyCheckHTTP3
ProxyTimeout 15s
ProxyTestServer "1.2.3.4" 6667
ProxyExpire 30d
ProxyCacheExpire 1d
ProxyAkillReason "You're using an insecure proxy. See http://proxy.myirc.net/config.html for information about how to config your proxy in a safe manner."
WallProxy
ProxyMax 50
NSForceEmail
NSDefSecure
NSDefPrivate
NSDefHideEmail
NSDefHideUsermask
NSDefMemoSignon
NSDefMemoReceive
NSDefLanguage 11
NSRegDelay 30s
NSExpire 21d
NSMaxAliases 16
NSAccessMax 32
NSEnforcerUser enforcer@localhost.net
NSReleaseTimeout 1m
NSListMax 50
NSGuestNickPrefix "Guest"
NSSecureAdmins
NSStrictPrivileges
NSRestrictGetPass
CSDefKeepTopic
CSDefPeace
CSDefSecure
CSDefSecureFounder
CSDefSignKick
CSDefXOP
CSMaxReg 3
CSExpire 14d
CSDefBantype 2
CSAccessMax 1024
CSAutokickMax 32
CSAutokickReason "User has been banned from the channel"
CSInhabit 15s
CSListMax 50
CSRestrictGetPass
MSMaxMemos 20
MSSendDelay 3s
MSNotifyAll
BSDefGreet
BSDefFantasy
BSDefSymbiosis
BSMinUsers 1
BSBadWordsMax 50
BSKeepData 10m
BSSmartJoin
BSGentleBWReason
ServicesRoot "vovan" //свой ник
SuperAdmin
LogMaxUsers
AutoKillExpiry 30d
ChanKillExpiry 30d
SGLineExpiry 30d
SQLineExpiry 30d
SZLineExpiry 30d
AkillOnAdd
KillClonesAkillExpire 30m
DisableRaw
WallOper
WallBadOS
WallOSGlobal
WallOSMode
WallOSClearmodes
WallOSKick
WallOSAkill
WallOSSGLine
WallOSSQLine
WallOSSZLine
WallOSNoOp
WallOSJupe
WallOSRaw
WallGetpass
WallSetpass
WallForbid
WallDrop
LimitSessions
DefSessionLimit 3
MaxSessionLimit 100
ExceptionExpiry 1d
SessionLimitExceeded "The session limit for your host %s has been exceeded."
MaxSessionKill 15
SessionAutoKillExpiry 30m
AddAkiller
Сохраняем и запускаем
/home/admin/anope_bin/services
Смотрим в процессах, если его там нет - смотрим логи в
/home/admin/data/logs/
Если стартанул без проблем, идем на наш канал и пишем к примеру
/msg ChanServ help
В ответ сервер выдаст список команд.... Все работает... Про команды думаю говорить не стоит...
Переходим к установке бота
ПРИМЕЧАНИЕ С ОФФСАЙТА
Для сборки Eggdrop вам обязательно необходим и Tcl (язык программирования,
который используется в ядре бота). Проверить наличие Tcl можно набрав в
shell команду: tclsh (или tclshX.X, где X.X версия Tcl)
Если вы получите приглашение в виде символа "%", значит Tcl есть. Если нет,
то установите. Рекомендуемые к установке версии Tcl: 8.0.x или 8.3.x
Скачать Tcl в исходниках можно с ftp-сайта:
ftp://ftp.scriptics.com/pub/tcl/
Порядок сборки Tcl:
1) Распакуйте архив с Tcl (tar -zxf tcl8.x.x.tar.gz)
2) Зайдите в директорию с нужной платформой (cd tcl8.x.x/unix)
3) Наберите './configure'
4) Наберите 'make'
5) Наберите 'make install'
И в /usr/local/lib появится libtcl8.x.x.so, в /usr/local/include директория
tcl8.x.x, а в /usr/local/bin tcl-shell tclsh.
4. СБОРКА eggdrop
cd /home/admin/source/eggdrop1.6
./configure
По завершению
make config
По завершению
make install DEST=/home/admin/bot
Все. Бот установлен.
Создаем файл конфига, также вписываем туда параметры, указанные ниже, предварительно заменив все что с коментами своими значениями
nano /home/admin/bot/eggdrop.conf
#! /home/admin/bot/eggdrop //смотрим правильность путей (эта строка обязательна)
set username "TAHK" // имя бота
set admin "vovan <email: vovan@kolyan.ru>" //ник и мыло хозяина бота
set network "my.irc.bot.not.linked"
set timezone "EST"
set offset "5"
set my-hostname "irc.mypage.ru" //свой адрес
set max-logs 5
set max-logsize 0
set quick-logs 0
set raw-log 0
logfile mco * "logs/eggdrop.log"
logfile jpkom #test "logs/test.log" //имя нашего канала и имя файла логов для бота
set log-time 1
set keep-all-logs 0
set logfile-suffix ".%d%b%Y"
set switch-logfiles-at 300
set quiet-save 0
set console "mkcobxs"
set userfile "test.user"
set sort-users 0
set help-path "help/"
set text-path "text/"
set temp-path "/tmp"
set motd "text/motd"
set telnet-banner "text/banner"
set userfile-perm 0600
set botnet-nick "TANK" //ник бота
listen 3333 all
set remote-boots 2
set share-unlinks 1
set protect-telnet 0
set dcc-sanitycheck 0
set ident-timeout 5
set require-p 0
set open-telnets 0
set stealth-telnets 0
set use-telnet-banner 0
set connect-timeout 15
set dcc-flood-thr 3
set telnet-flood 5:60
set paranoid-telnet-flood 1
set resolve-timeout 15
set ignore-time 15
set hourly-updates 00
set owner "vovan" //свой ник
// Перед запуском лучше всего зарегистрировать ник бота на NickServ, а затем
// этот пароль прописать здесь, что бы бот самоавторизовывался, вместо 123456 укажите пароль, который указали на NickServ
set init-server {putquick "PRIVMSG NickServ : 123456"}
set notify-newusers "$owner"
set default-flags "hp"
set whois-fields "url birthday"
set die-on-sighup 0
set die-on-sigterm 1
unbind dcc n tcl *dcc:tcl
unbind dcc n set *dcc:set
set must-be-owner 1
unbind dcc n simul *dcc:simul
set max-dcc 50
set allow-dk-cmds 1
set dupwait-timeout 5
set mod-path "modules/"
loadmodule blowfish
checkmodule blowfish
loadmodule dns
loadmodule channels
set chanfile "tank.chan"
set force-expire 0
set share-greet 0
set use-info 1
set global-flood-chan 10:60
set global-flood-deop 3:10
set global-flood-kick 3:10
set global-flood-join 5:60
set global-flood-ctcp 3:60
set global-flood-nick 5:60
set global-aop-delay 5:30
set global-idle-kick 0
set global-chanmode "nt"
set global-stopnethack-mode 0
set global-revenge-mode 0
set global-ban-time 120
set global-exempt-time 60
set global-invite-time 60
set global-chanset {
-autoop -autovoice
-bitch +cycle
+dontkickops +dynamicbans
+dynamicexempts +dynamicinvites
-enforcebans +greet
-inactive -nodesynch
-protectfriends +protectops
-revenge -revengebot
-secret -seen
+shared +statuslog
+userbans +userexempts
+userinvites -protecthalfops
-autohalfop
}
channel add #test { // название вашего канала
chanmode "+nt-likm"
idle-kick 0
stopnethack-mode 1
revenge-mode 0
ban-time 120
exempt-time 60
invite-time 60
aop-delay 5:30
flood-chan 10:60
flood-deop 3:10
flood-kick 3:10
flood-join 5:60
flood-ctcp 3:60
flood-nick 5:60
}
channel set #dom +enforcebans +dynamicbans +userbans +dynamicexempts
channel set #dom +userexempts +dynamicinvites +userinvites +protectops
channel set #dom +protectfriends +statuslog +revenge -protecthalfops
channel set #dom +revengebot +dontkickops +autovoice +autoop -autohalfop
channel set #dom -bitch -secret -shared +greet +cycle
loadmodule server
set net-type 0
set nick "TAHK" //название
set altnick "TAHK" //бота
set realname "TAHK bot" //
bind evnt - init-server evnt:init_server
proc evnt:init_server {type} {
global botnick
putquick "MODE $botnick +i-ws"
}
set default-port 6667
set servers {
localhost:6667
}
set keep-nick 1
set strict-host 0
set quiet-reject 1
set lowercase-ctcp 0
set answer-ctcp 3
set flood-msg 5:60
set flood-ctcp 3:60
set never-give-up 1
set server-cycle-wait 60
set server-timeout 60
set servlimit 0
set check-stoned 1
set serverror-quit 1
set max-queue-msg 300
set trigger-on-ignore 0
set exclusive-binds 0
set double-mode 1
set double-server 1
set double-help 1
set optimize-kicks 1
set stack-limit 4
loadmodule ctcp
set ctcp-mode 0
loadmodule irc
set bounce-bans 1
set bounce-exempts 0
set bounce-invites 0
set bounce-modes 0
set max-bans 30
set max-exempts 20
set max-invites 20
set max-modes 30
set kick-fun 0
set ban-fun 0
set learn-users 0
set wait-split 600
set wait-info 180
set mode-buf-length 200
unbind msg - ident *msg:ident
unbind msg - addhost *msg:addhost
set opchars "@"
set no-chanrec-info 0
set prevent-mixing 1
set max-dloads 3
set dcc-block 0
set copy-to-tmp 1
set xfer-timeout 30
set share-compressed 1
set files-path ""
set incoming-path ""
set upload-to-pwd 0
set filedb-path ""
set max-file-users 20
set max-filesize 1024
loadmodule notes
set notefile "tank.notes"
set max-notes 50
set note-life 60
set allow-fwd 0
set notify-users 1
set notify-onjoin 1
loadmodule console
set console-autosave 1
set force-channel 0
set info-party 0
loadmodule uptime
source scripts/alltools.tcl
source scripts/action.fix.tcl
source scripts/userinfo.tcl
source scripts/botnetop.tcl
loadhelp userinfo.help
if {[info exists net-type]} {
switch -- ${net-type} {
"0" {
# EFnet
source scripts/quotepong.tcl
}
"2" {
# Undernet
source scripts/quotepass.tcl
}
}
}
Сохраняем. Запускаем бота...
Первый старт делаем с ключом -m и указанием файла конфига
cd /home/admin/bot
./eggdrop -m eggdrop.conf
Если все идет по плану - бото зайдет на наш канал #test
Выполним на канале команду
/msg TAHK hello
И установим пароль на авторизацию бота
После этого убиваем наш PID с ботом и запускаем его заново без каких либо ключей
cd /home/admin/bot
./eggdrop
Вот вроде и все..
Если что то и напутал, то только из за того что многобукаф ))
Belfigor
09.12.2008, 09:44
Почтовый сервер на основе Postfix+Dovecot+Mysql+AMaViS
Необходимые компоненты
* Postfix чтобы получать поступающие письма из internet и хранит их в почтовых ящиках пользователей на жёстком диске .
* Dovecot, Позволяет пользователям получать их письма на почтовый клиент через POP3 и IMAP
* Squirrelmail Как интерфейс webmail
* MySQL КАК база данных системы, которая загружает информацию о ваших доменах , отчетности пользователя и email пересылок
* AMaViS ДЛЯ сканирования поступающих писем на наличие вирусов, spam и нежелательных вложений .
Расписывать подробно тут про Postfix и Dovecot я не намерен , если кого то интересует дополнительная информация , добро пожаловать сюда Postfix http://afti.ru/start.html , Dovecot http://www.dovecot.org/
Для начало в /etc/apt/sources.list надо добавить нужные ссылки на допольнительные репозитарии , будем использовать редактор vim
vim /etc/apt/sources.list
в открывшемся файле добавляем следующие строки , в моём случае это локальный репозит , вы же можете использовать репозиты из интернета
далее выполняем
aptitude update или apt-get update
Теперь установим Postfix с поддержкой Mysql , устанавливать будем с зависимостями
aptitude install postfix-mysql
Затем нужно установиться сам Mysql , в котором будут храниться базы данных почтового сервера .В этих базах будут содержаться структуры таблиц доменов , транспорта , квоты , юзеры и их пароли .
aptitude install mysql-server-5.0
Ставим Dovecot , он будет обслуживать запросы пользователей с помощью протоколов imap, imaps, pop3, pop3s
aptitude install dovecot-pop3d
aptitude install dovecot-imapd
Желательно , установить спам-фильтры и антивирус , если вы не хотите , чтобы ваш почтовый сервер стал сервером рассылки спама и вирусов и попал бы в блэк-листы !
aptitude install amavisd-new libclass-dbi-mysql-perl
aptitude install spamassassin clamav-daemon cpio arj zoo nomarch lzop cabextract pax
Установим OpenSSL , он будет создавать сертификаты SSL (SSL (англ. Secure Sockets Layer — уровень защищённых сокетов) — криптографический протокол, обеспечивающий безопасную передачу данных по сети Интернет)
aptitude install openssl
Для облегчения установим PhpMyAdim , сам уже довольно редко пользуюсь им , просто он будет нужен для облегчения работы с базами данных mysql
aptitude install phpmyadmin libapache2-mod-php5 php5-mysql
Так с этим вроде бы покончили , приступаем к созданию баз данных и юзеров , для начало установим пароль на mysql
mysqladmin password ваш пароль
Создадим базу данных под названием mailserver
mysqladmin -p create mailserver
Создавать базы данных , юзеров и таблицы , можно и другими способами , не посредственно из mysql или с помощью phpmyadmin
Теперь заходим в mysql
mysql -u root -p ваш пароль
и выполняем следующие команды , создаём пользователя mailuser c паролем mailuser2008 для базы данных mailserver
mysql>
GRANT SELECT ON mailserver.*
TO mailuser@localhost
IDENTIFIED BY 'mailuser2008';
mysql> use mailserver;
Database changed
Создаём таблицу виртуальных доменов
mysql> CREATE TABLE `virtual_domains` (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
) ENGINE = InnoDB;
Создадим таблицу виртуальных юзеров
mysql>CREATE TABLE `virtual_users` (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT(11) NOT NULL,
user VARCHAR(40) NOT NULL,
password VARCHAR(32) NOT NULL,
CONSTRAINT UNIQUE_EMAIL UNIQUE (domain_id,user),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE = InnoDB;
Также нужно создать таблицу виртуальных алиасов , для пересылки писем с одного аккаунта на другой аккаунт
mysql>CREATE TABLE `virtual_aliases` (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT(11) NOT NULL,
source VARCHAR(40) NOT NULL,
destination VARCHAR(80) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE = InnoDB;
Выходим из mysql
exit
################################################## ########## #####
Примеры созданных таблиц
virtual_domains id name
1 example.com
2 foobar.org
virtual_users
id domain_id user password
1 1 john summersun
2 1 steve veryloud
virtual_aliases
id domain_id source destination
1 1 steve steve.miller@gmail.com
2 2 kerstin kerstin42@yahoo.com
3 2 kerstin kerstin@mycompany.com
################################################## ########## ######
Начинаем создавать конфигурационные файлы для Postfix
vim /etc/postfix/mysql-virtual-mailbox-domains.cf
в файле прописываем следующие строки
user = mailuser
password = mailuser2008
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'
создаём следующие файлы конфигураций
Внесём изменения в конфигурационный файл Postfix main.cf , выполняем это командой postconf -e , postconf -e добавляет конфигурационные строки в наш main.cf
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Возвращаемся в mysql в БД mailserver
mysql -p mailserver
Там создаём виртуальный домен
INSERT INTO virtual_domains (id, name) VALUES (1, 'example.com');
exit
Возвращаемся в консоль и проверяем правильность настроек виртуального домена командой, не забудьте сменить домен с example.com на свой.
postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Результат должен быть:
1
Добавляем юзера и группу vmail
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Вносим их в main.cf
postconf -e virtual_uid_maps=static:5000
postconf -e virtual_gid_maps=static:5000
Опять возвращаемся в mysql
mail - u root -p ваш пароль
и создаём виртуально пользователя , например belfigor
mysql>
INSERT INTO virtual_users (id, domain_id, user, password)
VALUES (1, 1, 'belfigor', MD5('belfigorsuperstar'));
Проверям :
mysql>
SELECT CONCAT(virtual_users.user, '@', virtual_domains.name) AS email
FROM virtual_users
LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id;
Mysql должно напечатать следущие :
+------------------+
| email |
+------------------+
|belfigor@example.com |
+------------------+
Директория для этого юзера будет создана , такого типа /home/vmail/example.com/belfigor
Выполняем запрос на поле пароля в mysql
SELECT CONCAT(virtual_users.user, '@', virtual_domains.name) AS email,
virtual_users.password
FROM virtual_users
LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id;
Результат должен быть такой :
+------------------+----------------------------------+
| email | password |
+------------------+----------------------------------+
| belfigor@example.com | 14cbfb845af1f030e372b1cb9275e6dd |
+------------------+----------------------------------+
Потом нам необходимо создать view в базе данных для нормальной работы сервера Postfix
mysql -u root -p ваш пароль
mysql>use mailserver;
mysql>
CREATE VIEW view_users AS
SELECT CONCAT(virtual_users.user, '@', virtual_domains.name) AS email,
virtual_users.password
FROM virtual_users
LEFT JOIN virtual_domains ON virtual_users.domain_id=virtual_domains.id;
Создадим cf файл
vim /etc/postfix/mysql-virtual-mailbox-maps.cf
user = mailuser
password = mailuser2008
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM view_users WHERE email='%s'
Добавляем в main.cf эти строки
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
Проверяем если такой виртуальный юзер на сервере
postmap -q belfigor@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
Если видим результат 1 значит всё в порядке
Создадим в БД mailserver алиасы для юзера belfigor@example.com
mysql>
INSERT INTO virtual_aliases (id, domain_id, source, destination)
VALUES (1, 1, 'belfigor', 'belfigor@example.com'),
(2, 1, 'belfigor', 'raymond@gmail.com');
И тут же создаём view для виртуальных алиасов
mysql>
CREATE VIEW view_aliases AS
SELECT CONCAT(virtual_aliases.source, '@', virtual_domains.name) AS email,
destination
FROM virtual_aliases
LEFT JOIN virtual_domains ON virtual_aliases.domain_id=virtual_domains.id;
Проверим наши алиасы:
mysql>
SELECT * FROM view_aliases;
Видим:
+------------------+-------------------+
| email | destination |
+------------------+-------------------+
|belfigor@example.com |belfigor@example.com|
|belfigor@example.com | raymond@gmail.com|
+------------------+-------------------+
Выходим из mysql quit;
Создём ещё один cf файл
vim /etc/postfix/mysql-virtual-alias-maps.cf
В него вносим
user = mailuser
password = mailuser2008
hosts = 127.0.0.1
dbname = mailserver
query = SELECT destination FROM view_aliases WHERE email='%s'
Тестируем postmap -q belfigor@example.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Назначения должно быть следующего вида
belfigor@example.com,raymond@gmail.com
Сотворим cf файл
vim /etc/postfix/mysql-email2email.cf
в нём пишем
user = mailuser
password = mailuser2008
hosts = 127.0.0.1
dbname = mailserver
query = SELECT email FROM view_users WHERE email='%s'
Проверяем :
postmap -q belfigor@example.com mysql:/etc/postfix/mysql-email2email.cf
Результат :
belfigor@example.com
Добавим также строки в наш main.cf
Выставим нужные права , на наши конфигурационные файлы
chgrp postfix /etc/postfix/mysql-*.cf
chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf
Следующий шаг , пересылка писем через Dovecot LDA
Находим файл master.cf в директории /etc/postfix/master.cf
в конце добавляем такие строки
vim /etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
После перегружаем Postfix
postfix reload
Добавляем в main.cf строки , в консоли набираем
postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
################################################## ########## ####
C Postfix пока закончили , переходим к настройке Dovecot
Начнём с конфигурационного файла Dovecot который находиться в директории /etc/dovecot/
vim /etc/dovecot/dovecot.conf
Убираем # (с закомментированных строк)
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
mail_location = maildir:/home/vmail/%d/%n/Maildir
Затем найдите секцию namespace private и пропишите следующие
namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
Секция "auth default"должна выглядеть так :
mechanisms = plain login
Эта секция
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
Скажет Dovecot , что пароли хранятся в SQL database :
userdb static {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
Идём в секцию socket listen и приводим её в такое состояние
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
Ну и на последок в секции protocol lda
Прописываем следующие
protocol lda {
log_path = /home/vmail/dovecot-deliver.log
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = postmaster@example.com
mail_plugins = cmusieve
global_script_path = /home/vmail/globalsieverc
}
Отредактируем файл dovecot-sql.conf
vim /etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mailuser2007
default_pass_scheme = PLAIN-MD5
password_query = SELECT email as user, password FROM view_users WHERE email='%u';
Перезагрузим Dovecot
/etc/init.d/dovecot restart
Срочно бежим в логи и проверяем /var/log/mail.log, должно быть ТАК :
dovecot: Dovecot v1.0.rc15 starting up
dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mymailserver)
Выставим нужные права на /etc/dovecot/dovecot.conf
chgrp vmail /etc/dovecot/dovecot.conf
chmod g+r /etc/dovecot/dovecot.conf
Перезагружаем Postfix и Dovecot
/etc/init.d/postfix restart
/etc/init.d/dovecot restart
################################################## ########## #####
Теперь настаёт очень ОТВЕТСТВЕННЫЙ момент , мы начинаем КВН :D , шутка , мы будем тестировать наши smtp
и pop сервера !
в консоли :
telnet localhost smtp
дожно появиться следующие
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
скажем серверу "привет"
ehlo example.comсервер должен нам ответить так :
250-my-new-mailserver
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Теперь пошлём тестовое письмо :
mail from:<raymond@example.com>
Так , всё в порядке , сервер сказал нам:
250 2.1.0 Ok
Письмо адресуем belfigor@example.com
rcpt to:<belfigor@example.com>
И видим , что Postfix разрешил :
250 2.1.5 Ok
Теперь мы готовы отсылать почту:
data
Postfix тоже соглашается и разрешает нам посылать почту и в итоге выводит нам такие строки:
354 End data with <CR><LF>.<CR><LF>
Напечатаем письмо
Hi belfigor,
I know , that you hacked Microsoft , it's fine :d .
.
Жмём ENTER :
Postfix , сообщает нам ,что получил почту и поставил в очередь под очередью ID:
250 2.0.0 Ok: queued as A9D64379C4
Низкий поклон тебе Postfix и мы выходим
quitСмотрим логи ,/var/log/mail.log
postfix/smtpd[...]: connect from localhost[127.0.0.1]
postfix/smtpd[...]: 5FF712A6: client=localhost[127.0.0.1]
postfix/cleanup[...]: 5FF712A6: message-id=<...>
postfix/qmgr[...]: 5FF712A6: from=<raymond@example.com>, size=364, nrcpt=1 (queue active)
postfix/pipe[...]: 5FF712A6: to=<belfigor@example.com>, relay=dovecot, ..., status=sent (delivered via dovecot service)
postfix/qmgr[...]: 5FF712A6: removed
postfix/smtpd[...]: disconnect from localhost[127.0.0.1]
Если всё настроено верно то должно быть так !
Но если в логах вы видите ошибки , выполните команду postfix check для проверки правильности настроек и прав доступа на файлы, команда должна отдать пустой результат.
И всё ошибки и какие то отклонения от нормального функционала , можно проглядеть тут :
/var/log/mail.log
/var/log/mail.err
/var/log/mail.warn
/var/log/mail.info
################################################## ########## #####
Идём в нашу домашнию директорию cd /home/vmail/example.com/belfigor
и видим вот такие папки
./cur
./new
./new/1179521979.V801I2bbf7M15352.mailtest
./tmp
Очень удобно работать с папками и директориями с помощью midnight commander
установим его
apt-get install mc
################################################## ########## #####
Тестируем POP сервер
telnet localhost pop3
Сервер отвечает:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
Логинемся:
user belfigor@example.comDovecot ответил :
+OK
Здорово, теперь посылаем пароль :
pass belfigorsuperstar
Ну вот мы и дома :
+OK Logged in.
Просмотрим наши письма :
list
Dovecot ответит нам , что у нас есть одно письмо :
+OK 1 messages:
1 474
Выберем письмо под номером 1:
retr 1
Dovecot посылает нам письмо :
+OK 474 octets
Return-Path: <raymond@example.com>
X-Original-To: belfigor@example.com
Delivered-To: belfigor@example.com
Received: from example.com (localhost [127.0.0.1])
by ... (Postfix) with ESMTP id 692DF379C7
for <john@example.com>; Fri, 18 May 2007 22:59:31 +0200 (CEST)
Message-Id: <...>
Date: Fri, 18 May 2007 22:59:31 +0200 (CEST)
From: steve@example.com
To: undisclosed-recipients:;
Hi Belfigor,
I know, that you hacked Microsoft , it's fine :d
.
Ну что же , как видим всё работает просто замечательно , и мы с чистой совестью и с радостным чувством , выходим с сервера
quit
+OK Logging out.
Connection closed by foreign host.
Тестировать IMAP у меня как то нет уже желания .
Так что начинаем созвать SSL/TLS , сертификаты доверий
в консоли :
openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem \
-keyout /etc/ssl/private/dovecot.pem
В консоли появятся такие строки:
Generating a 1024 bit RSA private key
.........++++++
............................++++++
writing new private key to '/etc/ssl/certs/dovecot.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Во время создания ключа и сертификата , вам зададут несколько вопросов, ответить на них нужно следущим образом , в моём случае это :
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Belgorod
Locality Name (eg, city) []:Belgorod
Organization Name (eg, company) [Internet Widgits Pty Ltd]:workaround.org
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:mailtest.workaround.org
Email Address []:postmaster@workaround.org
Выставим права на этот сертификат :
chmod o= /etc/ssl/private/dovecot.pem
################################################## ########## #####
Аутификация по SMTP
правим наш main.cf
postconf -e mynetworks=192.168.0.0/24
Настройки SASL
postconf -e smtpd_sasl_type=dovecot
postconf -e smtpd_sasl_path=private/auth
postconf -e smtpd_sasl_auth_enable=yes
postconf -e smtpd_recipient_restrictions=permit_mynetworks,per mit_sasl_a uthenticated,reject_unauth_destination
Проглядеть значение всех параметров можно используя команду
postconf
Создадим ещё один ключ/сертификат ,уже выше указанным методом:
openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem \
-keyout /etc/ssl/private/postfix.pem
Ключи и сертификаты , будут лежать у нас в директории
/etc/ssl/certs/dovecot.pem и /etc/ssl/private/dovecot.pem
Выставим права на них
chmod o= /etc/ssl/private/postfix.pem
Укажем Postfix на эти сертификаты
postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
SMTP аутификация в Postfix будет отсылаться в plain text и будет проходить в закодированной передаче верительных грамот,
установим эти параметры
postconf -e smtpd_use_tls=yes
postconf -e smtpd_tls_auth_only=yes
__________________________________________________ _____________
Переходим к настройке AMaViS
Фильтрация spam и viruses
В файле /etc/amavis/conf.d/15-content_filter_mode , удаляем комментарии # возле
@bypass_... это сделает наши фитры рабочими
в файле /etc/spamassassin/local.cf добавляем строку [/code]
bayes_auto_expire 0Этим мы отключаем автоматическое истечения срока распознования спам писем .
Перезагружаем AMaViS
/etc/init.d/amavis restartНужно удостовериться что AMaViS слушает TCP port 10024 :
netstat -nap | grep 10024
Вывод :
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 12345/amavisdНа наличие ошибок смотрим /var/log/mail.log
Несколько слов о функциях Аmavis ,если например нам послали письмо из интернета , то его сначало получит Postfix на порту 25 , затем если Postfix разрешит это письмо , то он перешлёт его к AMaViS на TCP порт 10024 (SMTP)и если оно соответствует теребывания политики AMaViS , то AMaViS посылает его обратно Postfix на TCP порт 10025 (SMTP)
Для этого выполним следущие команды :
postconf -e content_filter=smtp-amavis:[127.0.0.1]:10024
postconf -e receive_override_options=no_address_mappings
Так же нужно добавить smtp-amavis службу в файл /etc/postfix/master.cf , в конце файла прописываем
vim /etc/postfix/master.cf
smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20[/quote][quote]
127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,rej ect -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_ unknown_recipient_checks -o local_header_rewrite_clients=
Перегружаем Postfix
postfix reload
Приступаем к настройке Сlamav
Добавим clamav в члены группы amavis
adduser clamav amavis
презагружаем демона
/etc/init.d/clamav-daemon restart
Отредактируем файл
vim /etc/amavis/conf.d/50-user
перед "1;"
Прописываем эти строки
@lookup_sql_dsn = ( ['DBI:mysql:database=mailserver;host=127.0.0.1;port =3306', 'mailuser', 'mailuser2008']);
$sql_select_policy = 'SELECT name FROM virtual_domains WHERE CONCAT("@",name) IN (%k)';
Ребут
/etc/init.d/amavis restart
Теперь посылаем письмо belfigor@example.com , если вы проверите заголовки письма , то вы найдёте строки добавленные Amavis
X-Virus-Scanned: Debian amavisd-new at mymailserverX-Spam-Score: 0X-Spam-Level:X-Spam-Status: No, score=0 tagged_above=-9999 required=6.31 tests=[none]
Теперь все входящие письма будут проверяться на спам и вирусы
Попробуем отослать нашему юзеру спам письмо
sendmail belfigor@example.com < /usr/share/doc/spamassassin/examples/sample-spam.txtВ /var/log/mail.log мы увидем строки прописынные Amavis
amavis[13001]: (13001-02) Passed SPAM, <...> -> <john@example.com>, ...
Выставим права на файл :
chmod o= /etc/amavis/conf.d/50-user
################################################## ###############
Ну думаю на этом я пока и остановлюсь , значит заводить новых юзеров можно , не посредственно в mysql
mysql>
INSERT INTO virtual_users (id, domain_id, user, password)
VALUES (1, 1, 'новый юзер', MD5('пароль юзера'));
Или через phpMyAdmin , я выбрал скрип написынный на php mail_control.php очень лёгкий и удобный , можно легко и быстро создавать домены и юзеров .
Теперь Белку (squirrelmail) я не люблю , и просто заюзал Mozilla Thunderbird , а для Веб интерфейса пожно использовать roundcube , UebiMiau и ещё много других разных клиентов можно найти в инетерете .
От себя хочу сказать , что это не полный перевод , если кто желает подробно вникнуть с суть дела , то добро пожаловать сюда http://workaround.org/articles/ispmail-etch/ , для гуру и опытных почтоводов , этот скромный мануал думаю не пригодиться , а вот новичкам с самый раз , свои конфиги я выкладывать не буду , дабы не было банального копипаста , поверте он не даёт ничего хорошо , уже лучше поседеть суток так двое , трое и самому понять работу данного почтового сервера ! имхо
По данном мануалу , почтовый сервер был поднят и настроен 5 раз , ошибок не наблюдалось , багов пока тоже . Одновременно на другом сервера заюзал связку
Postfix, Courier, MySQL And SquirrelMail (Ubuntu 8.04 LTS) , опять же имхо , но Postfix+Dovecot+Mysql+AMaViS мне понравилась больше, хотя у каждой связки есть свои приемушества !
Желаю успехов на поднятии и настройки почтовых серверов , с уважением Belfigor .
источник http://workaround.org/articles/ispmail-etch/
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot