Автор: Renegade: Дата: 01.02.2011
Скажу я вам некошерно когда мыло админа [email]vasya_pupkin@mail.ru[/email]
Совсем.
Скаежм купили вы VPS, у того же геймсервиса. Будем учистя использовать его по полной (прости Фален :D )
Итак, имеете вы VPS, и привязанный к нему домен puperRO.ru
Правда же неплохо будет иметь контактное мыло [email]admin@puperro.ru[/email]
Также можно завести почту на своём домене для всего админсостава и хелперов. Это прибавит солидности.
В последующих гайдах я расскажу вам как проводить "совсемнеспамовые" рассылки по игрокам своего сервера.
Итак, настраиваем почту.
За основу берём что вы купили VPS под линукс. "Счастливые" обладатели винды могут грусно всхлипнуть и пойти листать другие темы.
Сразу предупреждаю, будет оченьмногабукаф и вам понадобятся хотябы минимальные знания юникс систем.
Виртуальные пользователи и домены, почтовый сервер на основе Postfix, Courier, MySQL и SquirrelMail
В данном руководстве описана установка почтового сервера Postfix, в который использует виртуальных пользователей и виртуальные домены (т.е. все учетные записи и наименование доменов сохраняются в базе данных MySQL). Также показана установка и настройка Courier (Courier-POP3, Courier-IMAP), с возможностью аутентификации Postfix с использованием базы данных MySQL.
В результате Postfix будет поддерживать SMTP-AUTH, TLS и quota (по умолчанию поддержка квот не встроена в Postfix и я покажу как необходимо применить path к Postfix). Пароли будут хранится в базе данных в зашифрованном виде (в большинстве руководств я обнаружил, что пароли хранятся в не зашифрованном виде в текстовых файлах, которые создают угрозу безопасности). Кроме этого в данном руководстве рассмотрена установка и настройка Amavisd, SpamAssassin и ClamAV это дает возможность сканировать сообщения на наличие вирусов и спама. Я также покажу как установить веб интерфейс к почте SquirrelMail для того чтобы пользователи могли получать, отправлять почту изменять свои пароли.
Преимущество такой «виртуальной» установки (виртуальные пользователи и домены хранятся в базе данных MySQL) состоит в том, что такая установка обладает большей гибкостью и мощностью, чем установка с «реальными» пользователями. С таким «виртуальным» почтовым сервером можно легко обрабатывать тысячи пользователей и доменов. Кроме этого ими легче управлять, так управление осуществляется через базу данных MySQL, вы с легкостью можете добавлять новые или изменять существующие. Отпадает необходимость использование команды postmap для создания bd файлов, нет необходимости перезагрузки Postfix и т.п. Для управления базой данных вы можете использовать веб инструменты, такие как phpmyadmin, установка которого также описанна в данном руководстве. Третье преимущество заключается в том, что пользователи будут иметь адрес электронной почты в качестве имени пользователя электронной почты (вместо имени пользователя + адрес электронной почты), которые легче понять и запомнить.
Начинаем.
Убедитесь, что вы зашли как суперпользователь.
Очень важным является, чтобы вы сделали символическую ссылку /bin/sh на /bin/bash...
ln -sf /bin/bash /bin/sh
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass
apt-get install build-essential dpkg-dev fakeroot debhelper libgdbm-dev libldap2-dev libpcre3-dev libssl-dev libsasl2-dev postgresql-server-dev-8.2 po-debconf dpatch libmysqlclient15-dev lsb-release libcdb-dev libdb-dev
cd /usr/src
apt-get source postfix
postconf -d | grep mail_version
root@umberro:/usr/src# postconf -d | grep mail_version
mail_version = 2.5.1
milter_macro_v = $mail_name $mail_version
root@server1:/usr/src#
wget http://vda.sourceforge.net/VDA/postfix-2.5.1-vda-ng.patch.gz
gunzip postfix-2.5.1-vda-ng.patch.gz
cd postfix-2.5.1
patch -p1 < ../postfix-2.5.1-vda-ng.patch
dpkg-buildpackage
dpkg-buildpackage: warning: Failed to sign .dsc and .changes file
ls -l
root@umberro:/usr/src# ls -l
total 5804
drwxr-sr-x 19 root src 4096 2008-05-15 00:36 postfix-2.5.1
-rw-r--r-- 1 root src 235739 2008-05-15 00:35 postfix_2.5.1-2ubuntu1.diff.gz
-rw-r--r-- 1 root src 787 2008-05-15 00:35 postfix_2.5.1-2ubuntu1.dsc
-rw-r--r-- 1 root src 2236 2008-05-15 00:37 postfix_2.5.1-2ubuntu1_i386.changes
-rw-r--r-- 1 root src 1165838 2008-05-15 00:37 postfix_2.5.1-2ubuntu1_i386.deb
-rw-r--r-- 1 root src 3153629 2008-02-26 03:04 postfix_2.5.1.orig.tar.gz
-rw-r--r-- 1 root src 57952 2008-03-24 01:51 postfix-2.5.1-vda-ng.patch
-rw-r--r-- 1 root src 39796 2008-05-15 00:37 postfix-cdb_2.5.1-2ubuntu1_i386.deb
-rw-r--r-- 1 root src 139888 2008-05-15 00:37 postfix-dev_2.5.1-2ubuntu1_all.deb
-rw-r--r-- 1 root src 916386 2008-05-15 00:37 postfix-doc_2.5.1-2ubuntu1_all.deb
-rw-r--r-- 1 root src 46694 2008-05-15 00:37 postfix-ldap_2.5.1-2ubuntu1_i386.deb
-rw-r--r-- 1 root src 41730 2008-05-15 00:37 postfix-mysql_2.5.1-2ubuntu1_i386.deb
-rw-r--r-- 1 root src 41530 2008-05-15 00:37 postfix-pcre_2.5.1-2ubuntu1_i386.deb
-rw-r--r-- 1 root src 41796 2008-05-15 00:37 postfix-pgsql_2.5.1-2ubuntu1_i386.deb
root@server1:/usr/src#
dpkg -i postfix_2.5.1-2ubuntu1_i386.deb
dpkg -i postfix-mysql_2.5.1-2ubuntu1_i386.deb
mysqladmin -u root -p create mail
mysql -u root -p
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;
USE mail;
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
TYPE=MyISAM;
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
TYPE=MyISAM;
CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
) TYPE=MyISAM;
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) TYPE=MyISAM;
quit;
Автор: Renegade: Дата: 01.02.2011
Настройка Saslauthd
Сначала выполним следующую команду:
mkdir -p /var/spool/postfix/var/run/saslauthd
vi /etc/default/saslauthd
#
# Settings for saslauthd daemon
# Please read /usr/share/doc/sasl2-bin/README.Debian for details.
#
# Should saslauthd run automatically on startup? (default: no)
START=yes
# Description of this saslauthd instance. Recommended.
# (suggestion: SASL Authentication Daemon)
DESC="SASL Authentication Daemon"
# Short name of this saslauthd instance. Strongly recommended.
# (suggestion: saslauthd)
NAME="saslauthd"
# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam -- use PAM
# rimap -- use a remote IMAP server
# shadow -- use the local shadow password file
# sasldb -- use the local sasldb database file
# ldap -- use LDAP (configuration is in /etc/saslauthd.conf)
#
# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"
# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""
# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5
# Other options (default: -c -m /var/run/saslauthd)
# Note: You MUST specify the -m option or saslauthd won't run!
#
# See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information.
# See the saslauthd man page for general information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
vi /etc/pam.d/smtp
auth required pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd: mail_admin_password
sql_database: mail
sql_select: select password from users where email = '%u'
adduser postfix sasl
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart
vi /etc/courier/authdaemonrc
[...]
authmodulelist="authmysql"
[...]
cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
cat /dev/null > /etc/courier/authmysqlrc
vi /etc/courier/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME mail_admin
MYSQL_PASSWORD mail_admin_password
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
#MYSQL_NAME_FIELD
MYSQL_QUOTA_FIELD quota
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
telnet localhost pop3
чтобы убедится, что наш сервер POP3 корректно работает. Мы должны увидеть +OK Hello. (введите quit для возврата в оболочку Linux).
[...]
postmaster: root
root: postmaster@yourdomain.tld
[...]
[...]
postmaster: root
root: administrator
[...]
newaliases
/etc/init.d/postfix restart
Автор: Renegade: Дата: 01.02.2011
Установка amavisd-new, SpamAssassin и ClamAV (необязательный но желательный пункт)
Для установки amavisd-new, spamassassin и clamav, выполним следующую команду:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax
vi /etc/amavis/conf.d/15-content_filter_mode
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it back
#
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it back
#
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
1; # ensure a defined return
vi /etc/amavis/conf.d/20-debian_defaults
[...]
$QUARANTINEDIR = "$MYHOME/virusmails";
$quarantine_subdir_levels = 1; # enable quarantine dir hashing
$log_recip_templ = undef; # disable by-recipient level-0 log entries
$DO_SYSLOG = 1; # log via syslogd (preferred)
$syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages
$syslog_facility = 'mail';
$syslog_priority = 'debug'; # switch to info to drop debug output, etc
$enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny)
$enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1
$inet_socket_port = 10024; # default listening socket
$sa_spam_subject_tag = '***SPAM*** ';
$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.31; # triggers spam evasive actions
$sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
$sa_mail_body_size_limit = 200*1024; # don't waste time on SA if mail is larger
$sa_local_tests_only = 0; # only tests which do not require internet access?
[...]
$final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine)
$final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA
$final_spam_destiny = D_BOUNCE;
$final_bad_header_destiny = D_PASS; # False-positive prone (for spam)
[...]
vi /etc/amavis/conf.d/50-user
use strict;
#
# Place your configuration directives here. They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#
$pax='pax';
#------------ Do not modify anything below this line -------------
1; # ensure a defined return
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'
vi /etc/postfix/master.cf
[...]
amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
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_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_bind_address=127.0.0.1
/etc/init.d/postfix restart
netstat -tap
убедимся, что Postfix (master) прослушивает 25 (smtp) и 10025 порт, а amavisd-new расположен на 10024:
root@server1:/etc/postfix# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost.localdo:10024 *:* LISTEN 15645/amavisd (mast
tcp 0 0 localhost.localdo:10025 *:* LISTEN 16677/master
tcp 0 0 localhost.localdo:mysql *:* LISTEN 6177/mysqld
tcp 0 0 *:www *:* LISTEN 5367/apache2
tcp 0 0 *:smtp *:* LISTEN 16677/master
tcp6 0 0 [::]:imaps [::]:* LISTEN 14020/couriertcpd
tcp6 0 0 [::]:pop3s [::]:* LISTEN 14088/couriertcpd
tcp6 0 0 [::]:pop3 [::]:* LISTEN 14051/couriertcpd
tcp6 0 0 [::]:imap2 [::]:* LISTEN 13983/couriertcpd
tcp6 0 0 [::]:ssh [::]:* LISTEN 4006/sshd
tcp6 0 52 server1.example.com:ssh 192.168.0.210%8191:3340 ESTABLISHED 4059/0
root@server1:/etc/postfix#
Автор: Renegade: Дата: 01.02.2011
Предупреждения при превышении квоты
Для того чтобы получать сообщения об превышении квоты почтовых ящиков пользователей сделаем так:
cd /usr/local/sbin/
wget http://puuhis.net/vhcs/quota.txt
mv quota.txt quota_notify
chmod 755 quota_notify
vi /usr/local/sbin/quota_notify
[...]
my $POSTFIX_CF = "/etc/postfix/main.cf";
my $MAILPROG = "/usr/sbin/sendmail -t";
my $WARNPERCENT = 80;
my @POSTMASTERS = ('postmaster@yourdomain.tld');
my $CONAME = 'My Company';
my $COADDR = 'postmaster@yourdomain.tld';
my $SUADDR = 'postmaster@yourdomain.tld';
my $MAIL_REPORT = 1;
my $MAIL_WARNING = 1;
[...]
print "Subject: WARNING: Your mailbox is $lusers{$luser}% full.\n";
[...]
print "Your mailbox: $luser is $lusers{$luser}% full.\n\n";
[...]
0 0 * * * /usr/local/sbin/quota_notify &> /dev/null
telnet localhost 25
ehlo localhost
250-STARTTLS
250-AUTH LOGIN PLAIN
root@server1:/usr/local/sbin# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
root@server1:/usr/local/sbin#
quit
Автор: Renegade: Дата: 01.02.2011
Заполнение базы данных и ее тестирование
Для заполнения базы данных будем использовать оболочку MySQL:
mysql -u root -p
USE mail;
INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('sales@example.com', ENCRYPT('secret'), 10485760);
INSERT INTO `forwardings` (`source`, `destination`) VALUES ('info@example.com', 'sales@example.com');
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');
quit;
postfix reload
apt-get install mailx
mailx admin@example.com
root@server1:/usr/local/sbin# mailx admin@example.com
Subject: Welcome <-- ENTER
Welcome! Have fun with your new mail account. <-- ENTER
<-- CTRL+D
Cc: <-- ENTER
root@server1:/usr/local/sbin#
Автор: Renegade: Дата: 01.02.2011
заерзервировано
Автор: Renegade: Дата: 01.02.2011
для продолжения
Автор: Renegade: Дата: 01.02.2011
гайда
Автор: Fallen angel: Дата: 01.06.2011
Скаежм купили вы VPS, у того же геймсервиса. Будем учистя использовать его по полной (прости Фален :D )
Автор: Renegade: Дата: 01.06.2011
Ну значит будет для тех кто купил дедик.