Настройка почтового сервера
Реализация:
Для начала поставим программу, которая будет заниматься нашей почтой.
Код: Выделить всё
server# cd /usr/ports/mail/postfix
server# make install clean
┌────────────────────────────────────────────────────────────────────┐
│ Options for postfix 2.6.5,1 │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │[X] PCRE Perl Compatible Regular Expressions │ │
│ │[X] SASL2 Cyrus SASLv2 (Simple Auth. and Sec. Layer) │ │
│ │[ ] DOVECOT Dovecot SASL authentication method │ │
│ │[ ] SASLKRB If your SASL req. Kerberos select this option │ │
│ │[ ] SASLKRB5 If your SASL req. Kerberos5 select this option │ │
│ │[ ] SASLKMIT If your SASL req. MIT Kerberos5 select this option│ │
│ │[ ] TLS Enable SSL and TLS support │ │
│ │[ ] BDB Berkeley DB (choose version with WITH_BDB_VER) │ │
│ │[X] MYSQL MySQL maps (choose version with WITH_MYSQL_VER) │ │
│ │[ ] PGSQL PostgreSQL maps (choose with DEFAULT_PGSQL_VER) │ │
│ │[ ] OPENLDAP OpenLDAP maps (choose ver. with WITH_OPENLDAP_VER)│ │
│ │[ ] CDB CDB maps lookups │ │
│ │[ ] NIS NIS maps lookups │ │
│ │[ ] VDA VDA (Virtual Delivery Agent 32Bit) │ │
│ │[ ] TEST SMTP/LMTP test server and generator │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│ [ OK ] Cancel │
└────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────────┐
│ Options for cyrus-sasl 2.1.23 │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ [ ] BDB Use Berkeley DB │ │
│ │ [X] MYSQL Use MySQL │ │
│ │ [ ] PGSQL Use PostgreSQL │ │
│ │ [ ] SQLITE Use SQLite │ │
│ │ [ ] DEV_URANDOM Use /dev/urandom │ │
│ │ [ ] ALWAYSTRUE Enable the alwaystrue password verifier │ │
│ │ [ ] KEEP_DB_OPEN Keep handle to Berkeley DB open │ │
│ │ [X] AUTHDAEMOND Enable use of authdaemon │ │
│ │ [X] LOGIN Enable LOGIN authentication │ │
│ │ [X] PLAIN Enable PLAIN authentication │ │
│ │ [ ] CRAM Enable CRAM-MD5 authentication │ │
│ │ [ ] DIGEST Enable DIGEST-MD5 authentication │ │
│ │ [ ] OTP Enable OTP authentication │ │
│ │ [ ] NTLM Enable NTLM authentication │ │
│ │ │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│ [ OK ] Cancel │
└────────────────────────────────────────────────────────────────────┘
Сначала создаю группу и пользователя, от которого все это будет крутиться - ну привычнее всего это сделать через sysinstall.
Код: Выделить всё
─────────────────────────────────────── User and Group Management ───────────────────────────┐
│ │
│ ┌───────────── Add a new group ─────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Group name: GID: │ │
│ │ ┌──────────────────┐ ┌────────┐ │ │
│ │ │vmail │ │1002 │ │ │
│ │ └──────────────────┘ └────────┘ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ Group members: │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ ┌──────┐ ┌──────────┐ │ │
│ │ │ [OK] │ │ CANCEL │ │ │
│ │ └──────┘ └──────────┘ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └───────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
│ │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
┌────────────────────────────────────────── User and Group Management ───────────────────────────┐
│ ┌────────────────── Add a new user ────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Login ID: UID: Group: Password: │ │
│ │ ┌──────────────┐ ┌──────┐ ┌──────┐ ┌─────────────┐ │ │
│ │ │vmail │ │1004 │ │vmail │ │******** │ │ │
│ │ └──────────────┘ └──────┘ └──────┘ └─────────────┘ │ │
│ │ │ │
│ │ Full name: Member groups: │ │
│ │ ┌───────────────────────────────┐ ┌─────────────┐ │ │
│ │ │Mail System Group │ │ │ │ │
│ │ └───────────────────────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ Home directory: Login shell: │ │
│ │ ┌──────────────────┐ ┌───────────────────────────┐ │ │
│ │ │/home/mail │ │/sbin/nologin │ │ │
│ │ └──────────────────┘ └───────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────┐ ┌──────────┐ │ │
│ │ │ [OK] │ │ CANCEL │ │ │
│ │ └──────┘ └──────────┘ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────────────────────────────┘ │
│ │
│ │
│ │
│ │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
Код: Выделить всё
mynetworks = 127.0.0.0/8
relayhost = [192.168.1.7]
alias_maps = hash:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
mail_spool_directory = /var/mail
smtpd_banner = Zavod im Struzhkina mail system
maps_rbl_reject_code = 554
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
transport_maps = mysql:/usr/local/etc/postfix/sql/mysql_transport.cf
virtual_mailbox_base = /usr/home/mail/virtual
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_uid_maps = static:1004
virtual_gid_maps = static:1002
relay_domains = $transport_maps, $virtual_mailbox_domains
local_recipient_maps = $virtual_mailbox_maps $virtual_maps $transport_maps
smtpd_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_sasl_password_maps = mysql:/usr/local/etc/postfix/sql/mysql_sasl.cf
always_bcc = copy@stniva.ru
Код: Выделить всё
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = password
where_field = username
additional_conditions = and active = '1'
Код: Выделить всё
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = transport
where_field = domain
Код: Выделить всё
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
Код: Выделить всё
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
Код: Выделить всё
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
additional_conditions = and active = '1'
Код: Выделить всё
server# mkdir /usr/home/mail
server# chown vmail:vmail /usr/home/mail
server# chmod 700 /usr/home/mail
server# mkdir /usr/home/mail/virtual
server# chown vmail:vmail /usr/home/mail/virtual
server# chmod 700 /usr/home/mail/virtual
Код: Выделить всё
server# ./postfix start
postfix/postfix-script: starting the Postfix mail system
server# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.sarhleb.ru ESMTP Sendmail 8.14.3/8.14.3; Tue, 19 Jan 2010 15:38:00 +0300 (MSK)
ehlo mail
250-server.sarhleb.ru Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
quit
221 2.0.0 server.sarhleb.ru closing connection
Connection closed by foreign host.
server#
Ставим базу данных. Хочется сказать что возможно у вас это все уже стоит и работает, но на данном сервере этого не оказалось, а так как я описываю реальный процесс установки сервера - то буду писать все что вижу.
Код: Выделить всё
cd /usr/ports/databases/mysql50-server
make install clean
работать с базой из командной строки не наглядно, потому поставим вебмордочку
Код: Выделить всё
cd /usr/ports/databases/phpmyadmin
make install clean
┌────────────────────────────────────────────────────────────────────┐
│ Options for phpMyAdmin 3.3.2 │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ [ ] SUPHP suPHP support │ │
│ │ [X] BZ2 bzip2 library support │ │
│ │ [X] GD GD library support │ │
│ │ [ ] MYSQLI Improved MySQL support │ │
│ │ [X] OPENSSL OpenSSL support │ │
│ │ [X] PDF PDFlib support (implies GD) │ │
│ │ [X] ZLIB ZLIB support │ │
│ │ [X] MCRYPT MCrypt library support │ │
│ │ [X] ZIP Zip compression support │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│ [ OK ] Cancel │
└────────────────────────────────────────────────────────────────────┘
Код: Выделить всё
xglyph.c: In function 'CheckTransform':
xglyph.c:4717: warning: passing argument 1 of 'sscanf' makes pointer from integer without a cast
gmake[1]: *** [xglyph.lo] Error 1
gmake[1]: Leaving directory `/usr/ports/devel/t1lib/work/t1lib-5.1.2/xglyph'
gmake: *** [XXXX] Error 1
*** Error code 1
Код: Выделить всё
fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8-stable/All/t1lib-5.1.2_1,1.tbz
cd /usr/ports/x11-toolkits/libXaw
make install clean
pkg_add t1lib-5.1.2_1,1.tbz
Итак, первое что делаю - это пишу себе в блокнотик что у меня как-то криво обновлена ось и надо будет на досуге заняться этим - скорее всего как нить на выходных попробую пересобрать все пакеты - это так же как обновить, но посжно просто взять перекомпилировать уже стоящее - практически наверняка поможет
Теперь можно и запустить вебмордочку. Апачь у меня стоял - для прокси использовался, но тут php, потому немного модифиципуем файл апача - в /usr/local/etc/apache22/httpd.conf нахожу index.html и добавляю рядом index.php в результате чего я получил вот такую конструкцию
Код: Выделить всё
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
Код: Выделить всё
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Код: Выделить всё
server# /usr/local/etc/rc.d/apache22 reload
Performing sanity check on apache22 configuration:
Syntax OK
Performing sanity check on apache22 configuration:
Syntax OK
Performing a graceful restart
Код: Выделить всё
ln -s /usr/local/www/phpMyAdmin /usr/home/www/proxy/phpmyadmin
После чего заходим по адресу http://192.168.39.2/phpmyadmin/ и любуемся тем, что сделали...
... Продолжение читайте в следующей статье