Установка и настройка Веб-сервера предположим что вы уже уставноили свою ось и пришло время устанавливать серверные приложения. опишу установку и настройку веб-сервера апач с РНР+MySQL. скачиваем и устанавливаем апач. ./configure запускаем с ключем --enable-so чтобы мы могли подключать модули. скачиваем РНР. запускаем ./configure --help сначала. внимательно прочитайте. хотя пойдет и так : ./configure --with-apxs2=/path/to/apache/bin/apxs --with-mysql. в файл /path/to/apache/conf/httpd.conf нужно добавить строчки: LoadModule php5_module modules/libphp5.so - чтобы подключить модуль. и чтобы добавить расширение php как РНР скрипт. так безопаснее. на этом этапе можно потестить все ли нормально получилось. киньте какойнить РНР скрипт в корневую директории веб сервера и зайдите на localhost. если скрип заработал как надо то пока что все нормально. теперь устанавливаем мускуль. тут тоже ./configure без каких либо особых ключей подойдет в принципе. теперь запустим mysqld... и обломаемся. оказывается не созданы нужные такие нужные таблицы как mysql.user например. для этого запускаем mysql_install_db, потом опять mysqld и пробуем подключиться при помощи клиента: mysql. если нормально все то считайте что все уже готово. чтобы настроить виртуальные хосты нужно в секции virtual hosts httpd.conf-a добавить строчки которые я приведу ниже. это упрощеные синтаксис. чтобы узнать подробнее обращяйтесь к офф сайту. хотя вряд ли это вам понадобиться: не забудьте добавить "домен" в файл /etc/hosts или же если у вас есть днс сервер просто добавьте зону.
Настройка Dns сервера если у вас фряха то с днс серверов у вас проблем возникнуть не должно. днс сервер BIND идет с фряхой. конф файлы сервера находятся /etc/namedb. файл named.conf - основной конф файл сервера. там определяются глобальные настройки. например как сервер должен вести себя: сразу редирекить все запросы к внещним днс серверам или сначала посмотреть у себя и только потом редиректить. имхо это наиболее удобная конфигурация. для этого в раздел options нужно добавить forward first; потом собственно список днс серверов в виде forwarders { тут_днс_серверы; };. дальше идут файлы зон. корневую (зона "." ) трогать не будем. просто добавим то что нам нужно. общий синтаксис таков: ну и формат файла зоны: типы могут быть: 1. SOA (Start Of Authority) - главная запись зоны 2. A - связывает ип-адрес с именем 3. CNAME - связывает синонмы 4. MX - сообщяют внешним почтовым серверам о том какие компьютеры используются для доставки почты адресованной домену. 5. NS - ссылаются на серверы имен зоны. запись soa наиболее сложная и содержит несколько элементов: 1. сервер имен 2. почта админа 3. параметры обновления данных. примеры конф. файла сервера и зоны: конф. файл файл зоны в приципе это мона взять за основу для небольшой сети.
Авторизация по ключам в ssh О Боже, зачем? Сейчас всё можно сделать через manager-пакетов/порты без потери гибкости настройки и т.п. Но за неймед +1 Авторизация по ключам в ssh: У клиента: $ cd ~/.ssh/ && ssh-keygen -t rsa id_rsa.pub кладём в ~/.ssh/ сервера и переименовываем(или дописывем в конец существующего) в authorized_keys В sshd_config сервера: PubkeyAuthentication yes(по дефолту)
Описание установки и конфиги Irc сервера (сервер + сервисы + бот) Может кому и пригодится... Так как для установки всего этого нужно прочитать не одну страницу манов... А это так сказать лайт-вариант Данное описание позволит создать и настроить собственный IRC сервер, включая установку и настройку серверов NickServ, ChanServ и пр., а также установка и настройка бота. Поскольку пишу со своего примера, параметры, которые необходимо будет сменить для вашего сервера будут указаны. В этом описании указан только самый необходимый минимум для работы связки сервер-сервис-бот, все остальное в оффдоках ------------------------- 1. ИСХОДНИКИ И ПОДГОТОВКА: VDS, OS: Debian Сам сервер - Unreal3.2.7 Сервер сервисов - anope-1.6.5 Бот - eggdrop1.6 Директория, в которой будут установлены сервера Code: [B][COLOR=SandyBrown]/home/admin/[/COLOR][/B] ------------------------- Создаем необходимые каталоги anope_bin - бинарники anope bin - бинарники Unreal bot - конфиги + бинарники eggdrop conf - конфиги Unreal data - конфиги anope source - исходники Code: [B][COLOR=SandyBrown]cd /home/admin mkdir anope_bin bin bot conf data source[/COLOR][/B] Скачиваем исходники в source Code: [B][COLOR=SandyBrown]cd /home/admin/source wget http://files.alexisnet.net/unreal/Unreal3.2.7.tar.gz wget http://surfnet.dl.sourceforge.net/sourceforge/anope/anope-1.6.5.tar.gz wget http://eggdrop.org.ru/files/eggdrop1.6.18.tar.gz[/COLOR][/B] Распаковываем Code: [B][COLOR=SandyBrown]gunzip -d Unreal3.2.7.tar.gz tar xvf Unreal3.2.7.tar gunzip -d anope-1.6.5.tar.gz tar xvf anope-1.6.5.tar gunzip -d eggdrop1.6.18.tar.gz tar xvf eggdrop1.6.18.tar [/COLOR][/B] Далее установка....
2. СБОРКА Unreal3.2.7 Code: [B][COLOR=SandyBrown]cd /home/admin/source/Unreal3.2.7 ./Config [/COLOR][/B] По завершению: Code: [B][COLOR=SandyBrown]make[/COLOR][/B] По завершению: Code: [B][COLOR=SandyBrown]make install[/COLOR][/B] Готово... Чистим конфигурационный файл и вбиваем туда нижеуказанный конфиг, предварительно заменив все что с коментами своими значениями Code: [B][COLOR=SandyBrown]cp /dev/null /home/admin/conf/unrealircd.conf[/COLOR][/B] Code: [B][COLOR=SandyBrown]nano home/admin/conf/unrealircd.conf[/COLOR][/B] HTML: 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"; //свой ник "[email protected]"; //свое мыло }; 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 [email protected]; // свое мыло }; 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 "[email protected]"; 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"; }; Сохраняем и запускаем сервер Code: [B][COLOR=SandyBrown]/home/admin/bin/ircd[/COLOR][/B] Коннектимся к нашему серверу и проверяем.... Если все работает - переходим к установке сервисов..
3. СБОРКА anope-1.6.5 Code: [B][COLOR=SandyBrown]cd /home/admin/source/anope-1.6.5 ./configure [/COLOR][/B] По завершению: Code: [B][COLOR=SandyBrown]make[/COLOR][/B] По завершению: Code: [B][COLOR=SandyBrown]make install[/COLOR][/B] Готово Создаем файл конфига, также вписываем туда параметры, указанные ниже, предварительно заменив все что с коментами своими значениями Code: [B][COLOR=SandyBrown]nano home/admin/data/services.conf[/COLOR][/B] HTML: RemoteServer localhost 6667 "qwerty" // Смените пароль на тот, который указан в link services.irc.loc в файле unrealircd.conf ServerName "services.irc.loc" ServerDesc "Services for IRC Networks" ServiceUser "[email protected]" 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 [email protected] 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 Сохраняем и запускаем Code: [B][COLOR=SandyBrown]/home/admin/anope_bin/services[/COLOR][/B] Смотрим в процессах, если его там нет - смотрим логи в Code: [B][COLOR=SandyBrown]/home/admin/data/logs/[/COLOR][/B] Если стартанул без проблем, идем на наш канал и пишем к примеру Code: [B][COLOR=SandyBrown]/msg ChanServ help[/COLOR][/B] В ответ сервер выдаст список команд.... Все работает... Про команды думаю говорить не стоит... Переходим к установке бота
ПРИМЕЧАНИЕ С ОФФСАЙТА 4. СБОРКА eggdrop Code: [B][COLOR=SandyBrown]cd /home/admin/source/eggdrop1.6 ./configure [/COLOR][/B] По завершению Code: [B][COLOR=SandyBrown]make config[/COLOR][/B] По завершению Code: [B][COLOR=SandyBrown]make install DEST=/home/admin/bot[/COLOR][/B] Все. Бот установлен. Создаем файл конфига, также вписываем туда параметры, указанные ниже, предварительно заменив все что с коментами своими значениями Code: [B][COLOR=SandyBrown]nano /home/admin/bot/eggdrop.conf[/COLOR][/B] HTML: #! /home/admin/bot/eggdrop //смотрим правильность путей (эта строка обязательна) set username "TAHK" // имя бота set admin "vovan <email: [email protected]>" //ник и мыло хозяина бота 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 и указанием файла конфига Code: [B][COLOR=SandyBrown]cd /home/admin/bot ./eggdrop -m eggdrop.conf[/COLOR][/B] Если все идет по плану - бото зайдет на наш канал #test Выполним на канале команду Code: [B][COLOR=SandyBrown]/msg TAHK hello[/COLOR][/B] И установим пароль на авторизацию бота После этого убиваем наш PID с ботом и запускаем его заново без каких либо ключей Code: [B][COLOR=SandyBrown]cd /home/admin/bot ./eggdrop [/COLOR][/B] Вот вроде и все.. Если что то и напутал, то только из за того что многобукаф ))
Почтовый сервер на основе Postfix+Dovecot+Mysql+AMaViS Ubuntu 8.04 LTS Почтовый сервер на основе 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 Code: vim /etc/apt/sources.list в открывшемся файле добавляем следующие строки , в моём случае это локальный репозит , вы же можете использовать репозиты из интернета далее выполняем Code: aptitude update или apt-get update Теперь установим Postfix с поддержкой Mysql , устанавливать будем с зависимостями Code: aptitude install postfix-mysql Затем нужно установиться сам Mysql , в котором будут храниться базы данных почтового сервера .В этих базах будут содержаться структуры таблиц доменов , транспорта , квоты , юзеры и их пароли . Code: aptitude install mysql-server-5.0 Ставим Dovecot , он будет обслуживать запросы пользователей с помощью протоколов imap, imaps, pop3, pop3s Code: aptitude install dovecot-pop3d aptitude install dovecot-imapd Желательно , установить спам-фильтры и антивирус , если вы не хотите , чтобы ваш почтовый сервер стал сервером рассылки спама и вирусов и попал бы в блэк-листы ! Code: 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 — уровень защищённых сокетов) — криптографический протокол, обеспечивающий безопасную передачу данных по сети Интернет) Code: aptitude install openssl Для облегчения установим PhpMyAdim , сам уже довольно редко пользуюсь им , просто он будет нужен для облегчения работы с базами данных mysql Code: aptitude install phpmyadmin libapache2-mod-php5 php5-mysql Так с этим вроде бы покончили , приступаем к созданию баз данных и юзеров , для начало установим пароль на mysql mysqladmin password ваш пароль Создадим базу данных под названием mailserver mysqladmin -p create mailserver Создавать базы данных , юзеров и таблицы , можно и другими способами , не посредственно из mysql или с помощью phpmyadmin Теперь заходим в mysql PHP: mysql -u root -p ваш пароль и выполняем следующие команды , создаём пользователя mailuser c паролем mailuser2008 для базы данных mailserver PHP: 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 [email protected] 2 2 kerstin [email protected] 3 2 kerstin [email protected] ############################################################ ###### Начинаем создавать конфигурационные файлы для Postfix vim /etc/postfix/mysql-virtual-mailbox-domains.cf в файле прописываем следующие строки создаём следующие файлы конфигураций Внесём изменения в конфигурационный файл Postfix main.cf , выполняем это командой postconf -e , postconf -e добавляет конфигурационные строки в наш main.cf Code: postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf Возвращаемся в mysql в БД mailserver mysql -p mailserver Там создаём виртуальный домен PHP: INSERT INTO virtual_domains (id, name) VALUES (1, 'example.com'); exit Возвращаемся в консоль и проверяем правильность настроек виртуального домена командой, не забудьте сменить домен с example.com на свой. Code: postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf Результат должен быть: 1 Добавляем юзера и группу vmail Вносим их в main.cf Опять возвращаемся в mysql mail - u root -p ваш пароль и создаём виртуально пользователя , например belfigor PHP: mysql> INSERT INTO virtual_users (id, domain_id, user, password) VALUES (1, 1, 'belfigor', MD5('belfigorsuperstar')); Проверям : PHP: 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 PHP: 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; Результат должен быть такой : Code: +------------------+----------------------------------+ | email | password | +------------------+----------------------------------+ | [email protected] | 14cbfb845af1f030e372b1cb9275e6dd | +------------------+----------------------------------+ Потом нам необходимо создать view в базе данных для нормальной работы сервера Postfix mysql -u root -p ваш пароль PHP: 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 Добавляем в main.cf эти строки Проверяем если такой виртуальный юзер на сервере Если видим результат 1 значит всё в порядке Создадим в БД mailserver алиасы для юзера [email protected] PHP: mysql> INSERT INTO virtual_aliases (id, domain_id, source, destination) VALUES (1, 1, 'belfigor', '[email protected]'), (2, 1, 'belfigor', '[email protected]'); И тут же создаём view для виртуальных алиасов PHP: 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; Проверим наши алиасы: Создём ещё один cf файл vim /etc/postfix/mysql-virtual-alias-maps.cf В него вносим Тестируем postmap -q [email protected] mysql:/etc/postfix/mysql-virtual-alias-maps.cf Назначения должно быть следующего вида [email protected],[email protected] Сотворим cf файл vim /etc/postfix/mysql-email2email.cf в нём пишем Code: user = mailuser password = mailuser2008 hosts = 127.0.0.1 dbname = mailserver query = SELECT email FROM view_users WHERE email='%s' Проверяем : Результат : [email protected] Добавим также строки в наш main.cf Выставим нужные права , на наши конфигурационные файлы Code: 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 Code: dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} После перегружаем Postfix Добавляем в main.cf строки , в консоли набираем Code: postconf -e virtual_transport=dovecot postconf -e dovecot_destination_recipient_limit=1 ############################################################ #### C Postfix пока закончили , переходим к настройке Dovecot Начнём с конфигурационного файла Dovecot который находиться в директории /etc/dovecot/ vim /etc/dovecot/dovecot.conf Убираем # (с закомментированных строк) Code: protocols = imap imaps pop3 pop3s disable_plaintext_auth = no mail_location = maildir:/home/vmail/%d/%n/Maildir Затем найдите секцию namespace private и пропишите следующие Code: namespace private { separator = . prefix = INBOX. inbox = yes } Секция "auth default"должна выглядеть так : PHP: mechanisms = plain login Эта секция Code: passdb sql { args = /etc/dovecot/dovecot-sql.conf } Скажет Dovecot , что пароли хранятся в SQL database : PHP: userdb static { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes } Идём в секцию socket listen и приводим её в такое состояние PHP: 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 Прописываем следующие PHP: 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 Code: 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, должно быть ТАК : Выставим нужные права на /etc/dovecot/dovecot.conf Code: chgrp vmail /etc/dovecot/dovecot.conf chmod g+r /etc/dovecot/dovecot.conf Перезагружаем Postfix и Dovecot PHP: /etc/init.d/postfix restart /etc/init.d/dovecot restart ############################################################ ##### Теперь настаёт очень ОТВЕТСТВЕННЫЙ момент , мы начинаем КВН , шутка , мы будем тестировать наши smtp и pop сервера ! в консоли : дожно появиться следующие скажем серверу "привет" сервер должен нам ответить так : Теперь пошлём тестовое письмо : Так , всё в порядке , сервер сказал нам: Письмо адресуем [email protected] И видим , что Postfix разрешил : Теперь мы готовы отсылать почту: Postfix тоже соглашается и разрешает нам посылать почту и в итоге выводит нам такие строки: Напечатаем письмо Жмём ENTER : Postfix , сообщает нам ,что получил почту и поставил в очередь под очередью ID: Низкий поклон тебе Postfix и мы выходим Смотрим логи ,/var/log/mail.log Если всё настроено верно то должно быть так ! Но если в логах вы видите ошибки , выполните команду postfix check для проверки правильности настроек и прав доступа на файлы, команда должна отдать пустой результат. И всё ошибки и какие то отклонения от нормального функционала , можно проглядеть тут : /var/log/mail.log /var/log/mail.err /var/log/mail.warn /var/log/mail.info ############################################################ ##### Идём в нашу домашнию директорию cd /home/vmail/example.com/belfigor и видим вот такие папки Очень удобно работать с папками и директориями с помощью midnight commander установим его Code: apt-get install mc ############################################################ ##### Тестируем POP сервер Сервер отвечает: Логинемся: Dovecot ответил : Здорово, теперь посылаем пароль : Ну вот мы и дома : Просмотрим наши письма : Dovecot ответит нам , что у нас есть одно письмо : Выберем письмо под номером 1: Dovecot посылает нам письмо : Ну что же , как видим всё работает просто замечательно , и мы с чистой совестью и с радостным чувством , выходим с сервера Тестировать IMAP у меня как то нет уже желания . Так что начинаем созвать SSL/TLS , сертификаты доверий в консоли : Code: openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem \ -keyout /etc/ssl/private/dovecot.pem В консоли появятся такие строки: Во время создания ключа и сертификата , вам зададут несколько вопросов, ответить на них нужно следущим образом , в моём случае это : Выставим права на этот сертификат : ############################################################ ##### Аутификация по SMTP правим наш main.cf Настройки SASL Code: 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,permit_sasl_a uthenticated,reject_unauth_destination Проглядеть значение всех параметров можно используя команду postconf Создадим ещё один ключ/сертификат ,уже выше указанным методом: Code: 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 Выставим права на них Укажем Postfix на эти сертификаты SMTP аутификация в Postfix будет отсылаться в plain text и будет проходить в закодированной передаче верительных грамот, установим эти параметры PHP: postconf -e smtpd_use_tls=yes postconf -e smtpd_tls_auth_only=yes _______________________________________________________________ Переходим к настройке AMaViS Фильтрация spam и viruses В файле /etc/amavis/conf.d/15-content_filter_mode , удаляем комментарии # возле Code: @bypass_... это сделает наши фитры рабочими в файле /etc/spamassassin/local.cf добавляем строку [/code] Code: bayes_auto_expire 0 Этим мы отключаем автоматическое истечения срока распознования спам писем . Перезагружаем AMaViS Code: /etc/init.d/amavis restart Нужно удостовериться что AMaViS слушает TCP port 10024 : Code: netstat -nap | grep 10024 Вывод : Code: 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) Для этого выполним следущие команды : Code: 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 PHP: 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,reject -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 Code: postfix reload Приступаем к настройке Сlamav Добавим clamav в члены группы amavis презагружаем демона Отредактируем файл vim /etc/amavis/conf.d/50-user перед "1;" Прописываем эти строки Code: @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)'; Ребут Теперь посылаем письмо [email protected] , если вы проверите заголовки письма , то вы найдёте строки добавленные Amavis Теперь все входящие письма будут проверяться на спам и вирусы Попробуем отослать нашему юзеру спам письмо В /var/log/mail.log мы увидем строки прописынные Amavis Выставим права на файл : Code: chmod o= /etc/amavis/conf.d/50-user ################################################################# Ну думаю на этом я пока и остановлюсь , значит заводить новых юзеров можно , не посредственно в mysql PHP: 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/
*nix скрипт для автобэкапа баз данных mysql, их архивирование и закачка на удаленный ftp. Code: mkdir /usr/back/base/backup_`date "+%Y-%m-%d"` mysqldump --user BACKUPERUSER DATABASENAME > /usr/back/base/backup_`date "+%Y-%m-%d"`/DATABASENAME.sql gzip -r /usr/back/base/backup_`date "+%Y-%m-%d"`/ curl -T /usr/back/base/backup_`date "+%Y-%m-%d"`/DATABASENAME.sql.gz ftp://FTPUSER:PASS6@FTPHOST/ Для того чтобы это работало необходимо также создать пользователя MySQL с SELECT, LOCK TABLES привелегиями.
Простой метод блокировки задачи, чтобы предотвратить запуск копии при еще не отработанном первом процессе (актуально для крон - к примеру wget не отработал до конца - а уже приишло время для повторного запуска ): ###### FREE BSD ##### /usr/bin/lockf -t 0 /tmp/name.lock /usr/local/bin/wget -q http://adres.ru где /tmp/name.lock - файл-флаг (lockf сам создаст этот файл с именем, который указан в параметрах запуска). Файл-флаг привязывает к себе выполняющуюся задачу и не даёт запуститься второму процессу, пока не отработал первый.
кто какой дистрибутив линукс посоветует? сейчас пользуюсь убунту, юзал еще debian и kubuntu. Вот остановился на первой. Может кто юзал red hat? что скажете?
Те которые ты использовал, думаю, можно назвать десктопными. Красная Шапочка - скорее, чисто серверный дистрибутив.
Небольшой совет о том ка сделать что бы проц работал на всю катушку в Убунту 11.10! идете по пути и запускаете файл с именем после того как открыли находим эти строки у вас будет написано ondemand и вы соответственно меняете на performance и перезагружаетесь!