Sida 1 av 1

HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 15 feb 2009, 17:35
av northface
Handledningen beskriver hur man kan sätta upp en mailserver med virtuella domäner och användare lagrade i en MySQL databas. I övrigt ingår Postfix, Dovecot samt Postfixadmin. Den senare används av såväl administratörer som användare. Antivirus och antispam kan läggas på enligt http://www.ubuntu-se.org/phpBB3/viewtop ... &sk=t&sd=a

Mailservern är uppsatt på en Hardy Heron server 8.04.2. Funktionen är verifierad.

Öppna ett skal och erhåll root rättigheter;

Kod: Markera allt

sudo -s
MySQL

Installera mysql;

Kod: Markera allt

apt-get install mysql-server mysql-client
Skapa ett lösenord för mysqladmin;

Kod: Markera allt

mysqladmin -u root password <lösenord>
Skapa en databas;

Kod: Markera allt

mysql -u root -p

Kod: Markera allt

CREATE DATABASE mail;
GRANT ALL PRIVILEGES ON mail.* TO 'mail'@'localhost' IDENTIFIED BY 'mail';
quit
Vi ska använda ett SQL schema som finns i Postfix admin (ver.2.1.0) och hämtar detta;

Kod: Markera allt

wget http://downloads.sourceforge.net/postfixadmin/postfixadmin-2.1.0.tgz
Packa upp;

Kod: Markera allt

tar xvfz postfixadmin-2.1.0.tgz
Öppna textfilen DATABASE_MYSQL.TXT;

Kod: Markera allt

nano postfixadmin-2.1.0/DATABASE_MYSQL.TXT
Ta bort alla raderna i sektionen “# Postfix / MySQL. (Motsvarar ung. raderna 26-39.)
Ladda in tabellerna i den nyligen skapade databasen. (Lösenordet är mail)

Kod: Markera allt

mysql -umail -p mail < postfixadmin-2.1.0/DATABASE_MYSQL.TXT
Postfix

Installera Postfix för MySQL;

Kod: Markera allt

apt-get install postfix postfix-mysql
Välj Satellite under installationen om du skickar dina mail genom din ISP:s smtp servrar.

Döp om main.cf;

Kod: Markera allt

mv /etc/postfix/main.cf /etc/postfix/main.cf.orginal
Skapa en ny main.cf och klistra in nedanstående;

Kod: Markera allt

nano /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
#delay_warning_time = 4h
myhostname = <maskin.din.doman>
myorigin = <din.doman>
mydestination = localhost
relayhost = <din ISP smtp server>
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# Virtual mailbox settings
virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf
virtual_minimum_uid = 150
virtual_uid_maps = static:150
virtual_gid_maps = static:8
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

# SASL Authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

# TLS
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_session_cache
smtpd_tls_security_level = may
smtpd_tls_received_header = no
smtpd_tls_loglevel = 1
tls_random_source = dev:/dev/urandom

smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
permit


Observera att raderna under "smtpd_recipient_restrictions =" ska inledas med ett "mellanslag"!!

Skapa följande användare;

Kod: Markera allt

useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual mailbox" vmail
Skapa foldern vmail och sätt behörigheter enligt nedan på denna;

Kod: Markera allt

mkdir /var/vmail
chmod 770 /var/vmail/
chown vmail:mail /var/vmail/
Konfigurering av Postfix för MySQL

Skapa fyra filer och klistra in respektive textrader;

Kod: Markera allt

nano /etc/postfix/mysql_virtual_alias_maps.cf
user = mail
password = mail
hosts = localhost
dbname = mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'

Kod: Markera allt

nano /etc/postfix/mysql_virtual_domains_maps.cf
user = mail
password = mail
hosts = localhost
dbname = mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'

Kod: Markera allt

nano /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = mail
password = mail
hosts = localhost
dbname = mail
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active = '1'

Kod: Markera allt

nano /etc/postfix/mysql_virtual_mailbox_maps.cf
user = mail
password = mail
hosts = localhost
dbname = mail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field = username
additional_conditions = and active = '1'


För att Dovecot ska kunna levera till Postfix behöver master.cf justeras;

Kod: Markera allt

nano /etc/postfix/master.cf
Lägg till längst ned på sidan;
dovecot unix - n n - - pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d $(recipient)


Dovecot

Installera Dovecot;

Kod: Markera allt

apt-get install dovecot-imapd dovecot-pop3d
Döp om dovecot.conf;

Kod: Markera allt

mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orginal
Skapa en ny dovecot.conf och klistra in nedanstående;

Kod: Markera allt

nano /etc/dovecot/dovecot.conf
## Dovecot configuration file
#
base_dir = /var/run/dovecot/
#
# imap imaps pop3 pop3s (use imaps and pop3s if configured for SSL)
protocols = imap pop3
#
# Uncomment the ssl_listen statements and comment out listen if using SSL
protocol imap {
listen = *:143
# ssl_listen = *:993
}
protocol pop3 {
listen = *:110
# ssl_listen = *:995
}
#
log_timestamp = "%Y-%m-%d %H:%M:%S "
syslog_facility = mail
#
# Uncomment these if using SSL
#ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
#ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
#ssl_ca_file = /etc/ssl/mycompany/ca/mycompany.pem
#ssl_verify_client_cert = yes
#ssl_parameters_regenerate = 168
#verbose_ssl = no
#
# Where the mailboxes are located
mail_location = maildir:/var/vmail/%d/%u
#
mail_extra_groups = mail
mail_debug = no
first_valid_uid = 150
last_valid_uid = 150
maildir_copy_with_hardlinks = yes
#
protocol imap {
login_executable = /usr/lib/dovecot/imap-login
mail_executable = /usr/lib/dovecot/imap
imap_max_line_length = 65536
}
protocol pop3 {
login_executable = /usr/lib/dovecot/pop3-login
mail_executable = /usr/lib/dovecot/pop3
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
postmaster_address = postmaster@<din.doman>
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
#
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
#
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = nobody
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0660
user = vmail
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
#
# If you want client certificates, use these lines
# ssl_require_client_cert = yes
# ssl_username_from_cert = yes
}

Döp om dovecot-sql.conf;

Kod: Markera allt

mv /etc/dovecot/dovecot-sql.conf /etc/dovecot/dovecot-sql.conf.orginal
Skapa en ny dovecot-sql.conf och klistra in nedanstående;

Kod: Markera allt

nano /etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=mail user=mail password=mail
# The new name for MD5 is MD5-CRYPT so you might need to change this depending on version
default_pass_scheme = MD5
# Get the mailbox
user_query = SELECT 'var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
# Get the password
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
# If using client certificates for authentication, comment the above and uncomment the following
#password_query = SELECT null AS password, '%u' AS user


Justera rättigheter och ägare;

Kod: Markera allt

chmod 600 /etc/dovecot/*.conf
chown vmail /etc/dovecot/*.conf
Postfix admin
Installera följande;

Kod: Markera allt

apt-get install apache2 libapache2-mod-php5 php5-mysql
Starta om Apache2;

Kod: Markera allt

/etc/init.d/apache2 restart
Flytta tidigare nedladdat paket och byt namn;

Kod: Markera allt

mv postfixadmin-2.1.0 /var/www/postfixadmin
Ändra ägare;

Kod: Markera allt

chown -R root:root /var/www/postfixadmin
Skapa filen config.inc.php;

Kod: Markera allt

cd /var/www/postfixadmin/
cp config.inc.php.sample config.inc.php
Öppna denna och ändra motsvarande nedan;

Kod: Markera allt

nano config.inc.php
$CONF['postfix_admin_url'] = '/var/www/postfixadmin/';
$CONF['postfix_admin_path'] = 'http://<din.domän>/postfixadmin';
$CONF['database_type'] = 'mysqli';
$CONF['database_user'] = 'mail';
$CONF['database_password'] = 'mail';
$CONF['database_name'] = 'mail';

Kontrollera;
http://<din.domän>/postfixadmin/admin/

Vi ska lösenordskydda sidorna för "superadmin":

Kod: Markera allt

mv /var/www/postfixadmin/admin/.htaccess /var/www/postfixadmin/admin/.htaccess.orginal

Kod: Markera allt

nano /var/www/postfixadmin/admin/.htaccess
Klistra in;
AuthUserFile /etc/.htpasswd
AuthName "Postfix Admin"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>


Ändra namn på .htpasswd i foldern;

Kod: Markera allt

mv /var/www/postfixadmin/admin/.htpasswd /var/www/postfixadmin/admin/.htpasswd.orginal
Skapa en användare och lösenord på;
http://www.engr.sjsu.edu/daluu/scripts/htpasswd.php
Skapa en ny .htpasswd i folder /etc/ och klistra in inloggningsuppgifterna enligt <användare:lösenord>

Kod: Markera allt

nano /etc/.htpasswd
Ändra i Apache2;

Kod: Markera allt

nano /etc/apache2/sites-available/default
.
.
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
.
.
Starta om Apache2;

Kod: Markera allt

/etc/init.d/apache2 restart
Kontrollera lösenordsskyddet;
http://<din.doman>/postfixadmin/admin

Kontrollera sedan;
http://<din.doman>/postfixadmin/
Förhoppningsvis ska allt vara ok. Ta då bort filen setup.php;

Kod: Markera allt

rm /var/www/postfixadmin/setup.php
Kör igen;
http://<din.doman>/postfixadmin/
Här kan domänadministratörer* och användare** logga in och administera sina respektive delar. De senare får härifrån klicka sig vidare till ett nytt inloggningsfönster.

*Lista alias och mailadresser.
*Skapa nytt alias i domänen.
*Skapa ny mailadress domän.
*Skicka ett mail till en av mailadresserna.
*Ändra lösenord för adminkontot.
*Visa loggfiler.

**Ändra epost forwardadress.
**Ändra lösenordet.

Handledningen är baserad på ett orginal av J.Chadda, april 2007

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 29 apr 2009, 23:02
av androc
Tack för en bra guide.

Ett problem dock. När jag kompletterar den här installationen med RoundCube webmail (enligt den guiden du hänvisar till) så slutar PostfixAdmin att fungera. Det blir stopp redan vid inloggning, med felkoder från php ála:

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /var/www/postfixadmin/functions.inc.php on line 133

Är det här något känt fel, med känd åtgärd - eller är det bara jag som knappat fel på vägen?

//AR

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 29 apr 2009, 23:04
av androc
Rättelse:
så här ser felutskrift/varningen ut:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /var/www/postfixadmin/functions.inc.php on line 133
//AR

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 21 maj 2009, 13:07
av tzd
Jag har exakt samma problem, dvs:

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /var/www/postfixadmin/functions.inc.php on line 133


Har följt denna guide samt lagt till antivirus, antispam etc. enligt den andra guiden som nämns ovan. Kör detta på en färskinstallerad ubuntu jaunty server.
Google hänvisar hit och till en fransk sida... tyvärr inte mycket info med andra ord :/
Hade varit toppen om någon vet vad detta är och hur man åtgärdar "felet". Det bör noteras att jag lyckats skapa 1 virtuell domän/mailbox i postfixadmin som fungerar strålande men nu hade jag velat skapa några nya "mailboxar" och då går det inte att logga in som sagt.

Tacksam för hjälp!

Mvh,
Johan

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 22 maj 2009, 12:28
av androc
Efter lite trixande verkar det som att problemet är att roundcube vill ha "magic-quotes.." =off för att inte markera fel, och att postfixadmin vill ha det på frö att fungera. Ingen ide om varför det är så här, men ..

Vad jag gjort för att få det funka är att först installera postfixadmin, sen fortsatt med att installera roundcube och under den installationen satt magic_quotes = off. Sen när väl roundcube funkar, satte jag tillbaka magic_quotes..=on. Då verkar både webmailen och admin trivas.
//AR

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 09:34
av jimmysjogren
Någon utav er alla som har problem med att logga in genom tex Outlook osv?

För jag får kontakt men säger hela tiden att auktoriseringen är fel med antingen användare eller lösenord.

Jag har fyllt i allt det med mysql_*.conf och lagt till en mailbox i Postfixadmin också, men vägrar att funka.


Förstår inte redigt var jag gör för fel, någon som vet/kan ge mig några pointers?

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 13:26
av androc
Ett fel många snubblar på att, med flera virtuella domäner, så måste man logga in med hela adressen.
Dvs med adressen user@domän.se
kan man inte logga in som user utan måste ange 'user@domän.se' som anändaridentitet.
//AR

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 14:42
av jimmysjogren
androc: Testade lite olika varianter nu och verkar inte som att det gav något bättre resultat än tidigare tyvärr. Något mera tips som jag kan kolla efter?

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 15:17
av androc
1: kolla i mailloggen så du ser vad den klagar på när du loggar in
2: pröva med en annan mail-klient - för att se om det är outlook-strul
//AR

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 15:22
av jimmysjogren
Detta är redan kollat, inget finns i '/var/log/maillog' och inte heller är det någon skillnad när jag använder Outlook eller mobiltelefon.

Den har någon kontakt, för har jag fel port säger den "connection refused" i stället för användarnamn eller lösenord är fel.

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 15:33
av androc
Då är ju frågan om du anropar rätt port. Har du ställt in att du använder SSL?
//AR

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 15:39
av jimmysjogren
Redigerat.

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 20 aug 2009, 18:17
av jimmysjogren
Redigerat.

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 21 aug 2009, 08:18
av jimmysjogren
Redigerat.

Re: HowTo - mailserver med virtuella domäner & användare + MySQL

Postat: 21 aug 2009, 10:35
av jimmysjogren
Redigerat.