Difference between revisions of "Postfix tls mysql dovecot"
From linux360
(→Compilarea si instalarea programelor postfix si dovecot: Added syntax highlight, fixed code formatting) |
m (→Configurarea bazei de date in mysql) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 31: | Line 31: | ||
==Crearea unui certificat self-signed== | ==Crearea unui certificat self-signed== | ||
− | < | + | <code><sh/>cd /etc/postfix |
− | cd /etc/postfix | ||
mkdir ssl | mkdir ssl | ||
cd ssl | cd ssl | ||
− | openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650 | + | openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650</code> |
− | </ | ||
− | |||
==Configurare postfix== | ==Configurare postfix== | ||
Line 254: | Line 251: | ||
postdov.sql: | postdov.sql: | ||
− | < | + | <code><sql/>-- |
− | -- | ||
-- Table structure for table `alias` | -- Table structure for table `alias` | ||
-- | -- | ||
Line 271: | Line 267: | ||
-- | -- | ||
− | INSERT INTO alias VALUES ('root@domeniu.ro','administrator@domeniu.ro','domeniu. | + | INSERT INTO alias VALUES ('root@domeniu.ro','administrator@domeniu.ro','domeniu.ro'); |
− | ro'); | ||
-- | -- | ||
-- Table structure for table `domain` | -- Table structure for table `domain` | ||
Line 304: | Line 299: | ||
uid int(11) NOT NULL default '0', | uid int(11) NOT NULL default '0', | ||
gid int(11) NOT NULL default '0', | gid int(11) NOT NULL default '0', | ||
− | + | block enum('y','n') NOT NULL default 'n' | |
) TYPE=MyISAM; | ) TYPE=MyISAM; | ||
Line 311: | Line 306: | ||
-- | -- | ||
− | INSERT INTO users VALUES ('administrator','$1$3totus54$6J1/1ETB/LdZHHt5D1bv7.',' | + | INSERT INTO users VALUES ('administrator','$1$3totus54$6J1/1ETB/LdZHHt5D1bv7.','root/',0,'domeniu.ro',400,400,'n');</code> |
− | root/',0,'domeniu.ro',400,400,'n'); | ||
− | </ | ||
Fisierul postdov.sql creeaza tabelele necesare pentru postfix si dovecot, precum si un cont administrator si un alias catre acest cont. Parola implicita pentru acest cont este '123456'. | Fisierul postdov.sql creeaza tabelele necesare pentru postfix si dovecot, precum si un cont administrator si un alias catre acest cont. Parola implicita pentru acest cont este '123456'. | ||
Parola este de tipul MD5. Un mic script pentru generarea parolelor poate fi urmatorul. | Parola este de tipul MD5. Un mic script pentru generarea parolelor poate fi urmatorul. | ||
− | < | + | <code><html/> |
− | |||
− | |||
<form method="post" action="'.$_SERVER['PHP_SELF'].'"> | <form method="post" action="'.$_SERVER['PHP_SELF'].'"> | ||
− | + | <input type="text" name="pass" size="13"> | |
− | + | <input type="submit" name="doit" value="generate"> | |
</form> | </form> | ||
− | + | <?php | |
if (CRYPT_MD5 == 1 && $_POST['pass']) { | if (CRYPT_MD5 == 1 && $_POST['pass']) { | ||
echo 'MD5: ' . crypt($_POST['pass'], '$1$3totus54$') . "\n"; | echo 'MD5: ' . crypt($_POST['pass'], '$1$3totus54$') . "\n"; | ||
}; | }; | ||
− | ?> | + | ?></code> |
− | </ | ||
==Testarea serverului== | ==Testarea serverului== |
Latest revision as of 11:33, 27 November 2006
Contents
Scopul Ghidului
Creearea unui mailserver cu ajutorul programelor postfix,mysql, dovecot si interfata de webmail squirrelmail. In loc de clasicul cyrus saslauth o sa folosim dovecot-sasl, postfix-ul 2.3 are suport pentru acesta.
Nota
Instalarea s-a facut pe o distributie Slackware 10.2 cu mysql instalat si apache. Acest ghid nu se va ocupa de instalarea serverului mysql si nici de configurarea si instalarea serverului de web apache. In functie de distributia folosita unele comenzi necesita o mica modificare de cale (vezi mysql in configurarea postfix-ului).
Compilarea si instalarea programelor postfix si dovecot
In momentul scrierii acestui ghid versiunile folosite au fost cele mai noi.
Instalare postfix
<sh/>wget http://postfix.imar.ro/postfix-release/experimental/postfix-2.3-20060202.tar.gz
tar -zxf postfix-2.3-20060202.tar.gz
cd postfix-2.3-20060202
make tidy
make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -DUSE_TLS -I/usr/include/mysql -DUSE_SASL_AUTH \
-DDEF_SASL_SERVER=\"dovecot\"' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -lssl -lcrypto'
make useradd postfix groupadd postdrop make install
Instalare dovecot
<sh/>wget http://www.dovecot.org/releases/dovecot-1.0.beta2.tar.gz
tar -zxf dovecot-1.0.beta2.tar.gz
cd dovecot-1.0.beta2
./configure --prefix=/usr --sysconfdir=/etc/dovecot --with-mysql
make
make install
Crearea unui certificat self-signed
<sh/>cd /etc/postfix
mkdir ssl
cd ssl
openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650
Configurare postfix
main.cf:
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix unknown_local_recipient_reject_code = 550 mynetworks_style = subnet mailbox_command = debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = postdrop html_directory = no manpage_directory = /usr/man/ sample_directory = /etc/postfix mynetworks = 127.0.0.0/8 readme_directory = no myhostname = domeniu.ro smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,rejec t_unauth_destination inet_interfaces = all transport_maps = mysql:/etc/postfix/mysql_virtual_transport.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_base = /home/mails virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_limit = 51200000 virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_transport = virtual virtual_uid_maps = mysql:/etc/postfix/uid.cf virtual_gid_maps = mysql:/etc/postfix/gid.cf virtual_create_maildirsize = yes virtual_mailbox_extended = yes virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps .cf virtual_mailbox_limit_override = yes virtual_maildir_limit_message = Sorry, the user's maildir has no space available in their inbox. virtual_overquota_bounce = yes relay_domains = mysql:/etc/postfix/mysql_relay_domains_maps.cf virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limi t_maps.cf proxy_read_maps = $local_recipient_maps $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $mydestination $virtual_mailbox_d omains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtpd_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
gid.cf:
hosts=localhost user=mailuser password=mailpass dbname=email table=users select_field=gid where_field=userid
uid.cf:
hosts=localhost user=mailuser password=mailpass dbname=email table=users select_field=uid where_field=userid
mysql_relay_domains_maps.cf:
hosts = localhost dbname = email user = mailuser password = mailpass table = domain select_field = domain where_field = domain
mysql_virtual_alias_maps.cf:
hosts = localhost dbname = email user = mailuser password = mailpass table = alias select_field = goto where_field = email
mysql_virtual_domains_maps.cf:
hosts = localhost dbname = email user = mailuser password = mailpass table = domain select_field = domain where_field = domain
mysql_virtual_mailbox_limit_maps.cf:
hosts = localhost dbname = email user = mailuser password = mailpass table = users select_field = quota where_field = userid
mysql_virtual_mailbox_maps.cf:
hosts = localhost dbname = email user = mailuser password = mailpass table = users select_field = home where_field = userid
mysql_virtual_transport.cf:
hosts = localhost dbname = email user = mailuser password = mailpass table = domain select_field = transport where_field = domain
Configurare dovecot
dovecot.conf :
base_dir = /var/run/dovecot/ protocols = imap pop3s imaps pop3 listen = * ssl_disable = no ssl_cert_file = /etc/postfix/ssl/smtpd.pem ssl_key_file = /etc/postfix/ssl/smtpd.pem disable_plaintext_auth = no login_user = postfix first_valid_uid = 400 mail_debug = no default_mail_env = maildir:/home/mails/%h/ protocol imap { } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } auth default { mechanisms = plain digest-md5 cram-md5 passdb sql { args = /etc/dovecot/dovecot-mysql.conf } userdb sql { args = /etc/dovecot/dovecot-mysql.conf } user = root socket listen { client { path = /var/spool/postfix/private/auth mode = 0666 } } }
dovecot-mysql.conf:
driver=mysql default_pass_scheme = crypt connect = host=localhost dbname=email user=mailuser password=mailpass password_query = SELECT password FROM users WHERE userid = '%n' user_query = SELECT home, uid , gid FROM users WHERE userid = '%n';
Configurarea bazei de date in mysql
Se va folosi fisierul postdov.sql pentru crearea tabelelor in baza de date cu numele email. I se va da acces userului mailuser si cu parola mailpass drept de citire pentru baza de date email. Atentie: Este recomandat sa schimbati parola si userul in toate fisierele de configurare.
postdov.sql:
<sql/>--
-- Table structure for table `alias`
--
CREATE TABLE alias (
email varchar(255) NOT NULL default , goto text NOT NULL, domain varchar(255) NOT NULL default , PRIMARY KEY (email), KEY domain (domain)
) TYPE=MyISAM;
-- -- Dumping data for table `alias` --
INSERT INTO alias VALUES ('root@domeniu.ro','administrator@domeniu.ro','domeniu.ro'); -- -- Table structure for table `domain` --
CREATE TABLE domain (
domain varchar(255) NOT NULL default , transport varchar(50) NOT NULL default 'virtual', PRIMARY KEY (domain)
) TYPE=MyISAM;
-- -- Dumping data for table `domain` --
INSERT INTO domain VALUES ('domeniu.ro','virtual');
-- -- Table structure for table `users` -- -- -- Table structure for table `users` --
CREATE TABLE users (
userid varchar(255) NOT NULL default , password varchar(255) NOT NULL default , home varchar(255) NOT NULL default , quota int(10) NOT NULL default '0', domain varchar(255) NOT NULL default , uid int(11) NOT NULL default '0', gid int(11) NOT NULL default '0', block enum('y','n') NOT NULL default 'n'
) TYPE=MyISAM;
-- -- Dumping data for table `users` --
INSERT INTO users VALUES ('administrator','$1$3totus54$6J1/1ETB/LdZHHt5D1bv7.','root/',0,'domeniu.ro',400,400,'n');
Fisierul postdov.sql creeaza tabelele necesare pentru postfix si dovecot, precum si un cont administrator si un alias catre acest cont. Parola implicita pentru acest cont este '123456'.
Parola este de tipul MD5. Un mic script pentru generarea parolelor poate fi urmatorul.
<html/>
<form method="post" action="'.$_SERVER['PHP_SELF'].'"> <input type="text" name="pass" size="13"> <input type="submit" name="doit" value="generate"> </form>
<?php
if (CRYPT_MD5 == 1 && $_POST['pass']) { echo 'MD5: ' . crypt($_POST['pass'], '$1$3totus54$') . "\n"; };
?>
Testarea serverului
Va trebui sa creeam intai directorul in care vor fi casutele postale
mkdir /home/mails
Pornirea serverelor binenteles si mysql trebuie sa fie pornit si configurat corespunzator.
postfix start dovecot
Verificam daca totul este in regula pana acum: Pentru postfix
telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 domeniu.ro ESMTP Postfix ehlo localhost 250-domeniu.ro 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN DIGEST-MD5 CRAM-MD5 250-AUTH=PLAIN DIGEST-MD5 CRAM-MD5 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN
Si pentru dovecot
telnet 127.0.0.1 143 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. * OK Dovecot ready.