Mailserver på FreeBSD 8.0 (Postfix/Dovecot/MySQL/Apache/PHP)

Permalänk
Medlem

Mailserver på FreeBSD 8.0 (Postfix/Dovecot/MySQL/Apache/PHP)

Detta är en guide hur du installerar en Mail/Webb/Databas-server baserat på FreeBSD.

För er som inte känner till FreeBSD, så är det ett Linux-liknande operativsystem, baserat på BSD, som anses betydligt
stabilare och säkrare än Linux. En sak som jag gillar skarp med FreeBSD är "Ports"-systemet – mer om det senare.

Målet med guiden är att sätta upp en Mail-server med stöd för IMAP och virtuella användare och domäner placerade
i en MySQL-databas. Denna installation passar allt mellan 2 e-postanvändare med en liten domän, till ett större
företag med 10-tals olika domäner och 1000-tals användare.

Guiden är väldigt detaljerad och därmed ganska lång, men förhoppningsvis skall det inte vara några oklarheter

Enjoy
/Kalle

Steg #1 – Installera FreeBSD

Ladda ner FreeBSD 8.0 från http://www.freebsd.org/
Jag nöjer mig med den "lilla" distributionen för i386 som får plats på en CD-R-skiva

Bränn skivan och starta upp din server mha CD-skivan.

Välj Sweden, samt svensk tangentbords-layout
Välj Standard installation

Det första steget är att partitionera disken mha "fdisk". Gränssnittet till fdisk är kanske inte världens enklaste,
men OM du har tänk dig att använda HELA disken till FreeBSD så kan du göra så här:

* Radera alla befintliga "slices" en efter en mha "D" tills du bara har en "unused" slice kvar
* Klicka på "A" - Use entire disk
* Markera den nya "slicen" (kan heta ad0s1 med desc = freebsd) och klicka på "S" - Set bootable
* Klicka på "Q" - Quit

Nästa skärm – välj Standard – No Boot Manager <OK>

Nu är det dags att göra partitioner...

* Klicka på "A" - Auto Defaults om du känner dig osäker, annars kan du ju experimentera lite
* Klicka på "Q" - Finish

Nästa steg är att välja "Distribution" - jag väljer Minimal, MEN väljer OCKSÅ Custom och lägger till
MAN (manualer) och PORTS (det bästa av allt

Klicka på OK och välj "Install from CD"

(Jag skall passa på att komma med ett litet erkännande här. Gränssnittet för installation av FreeBSD är inte helt lysande,
och ibland lyckas jag "trilla förbi" vissa delar av installationen i misstag. Om du känner att du missade nått så börja
bara om från början, vi har ju inte kommit så långt ännu – eller hur?

OK – dags för nätverksinställningar.

Svara "Yes" på frågan om du vill konfigurera nätverksinställningarna och välj sedan ditt nätverkskort i nästa dialogruta.

Svara "No" på frågan om IpV6
Svara "No" på frågan om DHCP

Host = <min_server>
Domain = <min_domän.se>
Ipv4 Gateway = <min_default_gateway_IP_address>
Name Server = <min_dns_ip_address>
Ipv4 adress = <servern_IP_address>

Svara "Yes" på att starta nätverket
Svara "No" på Network Gateway
Svara "No" på att starta inetd
Svara "Yes" på att starta SSH
(resten av frågorna kan besvaras efter tycke och smak)

Sätt tidszon till Sweden och du behöver inte titta på alla "Collections" just nu

Skapa ett User-konto för dig själv enl instruktionerna på skärmen

Sätt ett lösenord på ROOT

Nu kommer du tillbaka till startmenyn för installationen – välj Exit Install
<reboot>

Nu skall vi göra en liten snabb fuling bara

Logga in som ROOT
Kör följande kommando:

vi /etc/ssh/sshd_config

Leta reda på raden:
#PermitRootLogin no

Och ändra den till:
PermitRootLogin yes

Du kan även leta upp raden:
#UseDns yes

Och ändra den till:
UseDns no

Spara och stäng
Kör följande kommando:

/etc/rc.d/sshd restart

Nu kan vi köra SSH från våran vanliga dator och logga in som Root rakt av

Okidoki – nu är vi up-and-running med ett fungerande operativsystem, dags att synka "Ports"

Hmmm – berättade jag vad Ports är? Inte? OK – Ports är en stor uppsättning av Makefiles, patcher och beskrivningar
för i princip alla program som kan köra på FreeBSD – men ingen kod. Vad Ports gör är att den berättar för systemet
hur den skall hämta och kompilera ett visst program från Source istället. Så om du till exempel vill installera
Apache 2.2 så går du in i Ports-katalogstrukturen (närmare bestämt cd /usr/ports/www/apache22) och kör kommandot "make install".
Då hämtar systemet källkoden för Apache2.2 och kompilerar den så att den passar för just ditt system – bättre och effektivare kan det inte bli

OK, synka ports – kör följande kommandon:

portsnap fetch
portsnap extract
portsnap update

Klart!
OK – då var vi klara med Steg #1 och glider raskt över i diverse installationer som vi kommer att behöva för våran Mail-server

Steg #2 – MySQL

MySQL (som är en databas som alla vet) kommer vi att behöva för att dels hålla våra mail-användare och mail-domäner,
men också för webbmailen och annat smått och gott (dessutom är den ju bra att ha hursomhelst)

Kör följande kommandon:

cd /usr/ports/databases/mysql50-server
make all install clean
echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start

Vi behöver fixa till lite lösenord till MySQL – kör följande kommandon:

/usr/local/bin/mysql -u root mysql
UPDATE user SET Password=PASSWORD('mitt_egna_mysql_lösenord') WHERE User='root';
DELETE FROM user WHERE User='';
FLUSH PRIVILEGES;
quit;

Kopiera och redigera konfigurationsfilen för MySQL genom att köra följande kommandon:

cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf
vi /var/db/mysql/my.cnf

Nu skall vi redigera ovannämnda fil enligt följande:

...
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 10M
table_cache = 64
sort_buffer_size = 512K
...
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/db/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/db/mysql/
innodb_log_arch_dir = /var/db/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
...

Spara och stäng

Starta om MySQL genom att köra följande kommando:

/usr/local/etc/rc.d/mysql-server restart

Steg #3 – Dovecot

Dovecot är en process som gör det möjligt att ansluta med hjälp av IMAP och POP3 till en mailserver
(som ett addon kan man nästa säga). Hursomhelst – vi installerar med hjälp av Ports givetvis.

Kör följande kommandon:

cd /usr/ports/mail/dovecot
make all install clean

Nu poppar det upp en liten ruta där du kan välja vilja extra-funktioner i Dovecot du vill kompilera tillsammans med Dovecot – se till att välja:

* SSL
* POP3
* MYSQL

Får du en till popup om extra character set så är det OK

Dags att aktivera Dovecot, kopiera lite konfigurationsfiler och generera lite certifikat.

Kör följande kommandon:

echo 'dovecot_enable="YES"' >> /etc/rc.conf
cp /usr/local/share/examples/dovecot/dovecot.conf /usr/local/etc/dovecot.conf
cp /usr/local/share/examples/dovecot/dovecot-sql.conf /usr/local/etc/dovecot-sql.conf
mkdir -p /etc/ssl/dovecot
cd /etc/ssl/dovecot
openssl req -new -x509 -nodes -out cert.pem -keyout key.pem -days 365

(här får du svara på lite frågor angående ditt nya certifikat)

Nu skall vi konfigurera Dovecot. Kör följande kommando och redigera enligt nedan:

vi /usr/local/etc/dovecot.conf

protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
ssl_disable = no
ssl_cert_file = /etc/ssl/dovecot/cert.pem
ssl_key_file = /etc/ssl/dovecot/key.pem
login_greeting = ISP Mail Server Ready.
mail_location = maildir:/usr/local/virtual/%d/%n
first_valid_uid = 125
last_valid_uid = 125
first_valid_gid = 125
last_valid_gid = 125
protocol imap {
 mail_plugins = quota imap_quota
}
protocol pop3 {
 mail_plugins = quota
}
protocol lda {
 postmaster_address = postmaster@min_domän.se
}
auth default {
 mechanisms = plain login
 # passdb pam {
 # }
 passdb sql {
  args = /usr/local/etc/dovecot-sql.conf
 }
 # userdb passwd {
 # }
 userdb sql {
  args = /usr/local/etc/dovecot-sql.conf
 }
 socket listen {
  #master {
   # Master socket provides access to userdb information. It's typically
   # used to give Dovecot's local delivery agent access to userdb so it
   # can find mailbox locations.
   #path = /var/run/dovecot/auth-master
   #mode = 0600
   # Default user/group is the one who started dovecot-auth (root)
   #user =
   #group =
  #}
  client {
   path = /var/spool/postfix/private/auth
   mode = 0660
   user = postfix
   group = postfix
  }
 }
}

Och tills sist skall vi redigera konfigurationen för Dovecot-MySQL enl nedan:
Note: "mitt_postfix_sql_lösenord" är ett lösenord du får komma på själv och komma ihåg till senare...

vi /usr/local/etc/dovecot-sql.conf

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=mitt_postfix_sql_lösenord
default_pass_scheme = MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 125 AS uid, 125 AS gid, CONCAT('maildir:storage=', FLOOR( quota / 1024 ) ) AS quota FROM mailbox WHERE username = '%u' AND active = '1'

Då var Dovecot redo – dax för nästa steg…

Steg #4 – Postfix

Postfix är en mailserver som är (till skillnad från vissa andra – läs sendmail väldigt enkel att konfigurera.
Att den dessutom är robus och säker gör ju inte saken sämre.

Kör följande kommndon:

cd /usr/ports/mail/postfix
make all install clean

Nu poppar det upp en liten ruta där du kan välja vilja extra-funktioner i Postfix du vill
kompilera tillsammans med Postfix – se till att välja:

* DOVECOT
* TLS
* BDB
* MySQL
* VDA

Om du får en popup om Perl så är det OK

När frågan om att lägga till Postfix till gruppen Mail, så svarar du "Y"
När frågan "Would you like to activate Postfix in /etc/mail/mailer.conf [n]?" poppar up så skall du svara "Y" på den.

Nu är det dags att stänga av sendmail för gott (pust). Kör följande kommando:

/etc/rc.d/sendmail forcestop

(om det inte fungerar så får du döda sendmail-processerna för hand)

Nästa steg är att se till att Postfix startar automatiskt. Kör följande kommando:

vi /etc/rc.conf

Redigera enligt nedan:

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
postfix_enable="YES"

Nu skall vi skapa ett certifikat för kryperad SMTP - kör följande kommandon:

mkdir -p /etc/ssl/postfix
cd /etc/ssl/postfix
openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

(här kommer dom gamla vanliga certifikats-frågorna)
chmod 640 /etc/ssl/postfix/smtpd.pem
chgrp -R postfix /etc/ssl/postfix

Nu är det dags att redigera ett ganska stort antal konfiguratonsfiler för Postfix. Ta ett djup andetag och värm upp fingrarna:

vi /etc/periodic.conf

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

vi /usr/local/etc/postfix/main.cf

...
# SOFT BOUNCE
#
# The soft_bounce parameter provides a limited safety net for
# testing. When soft_bounce is enabled, mail will remain queued that
# would otherwise bounce. This parameter disables locally-generated
# bounces, and prevents the SMTP server from rejecting mail permanently
# (by changing 5xx replies into 4xx replies). However, soft_bounce
# is no cure for address rewriting mistakes or mail routing mistakes.
#
soft_bounce = no

# SASL CONFIG
#
broken_sasl_auth_clients = yes
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_non_fqdn_hostname,
 reject_non_fqdn_sender,
 reject_non_fqdn_recipient,
 reject_unauth_destination,
 reject_unauth_pipelining,
 reject_invalid_hostname,
 reject_rbl_client list.dsbl.org,
 reject_rbl_client bl.spamcop.net,
 reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

# TLS CONFIG
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/postfix/smtpd.pem
smtpd_tls_cert_file = /etc/ssl/postfix/smtpd.pem
smtpd_tls_CAfile = /etc/ssl/postfix/smtpd.pem
smtpd_tls_loglevel = 0
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

# MySQL Configuration
#
virtual_alias_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:125
virtual_mailbox_base = /usr/local/virtual
virtual_mailbox_domains = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 125
virtual_transport = virtual
virtual_uid_maps = static:125

# Additional for quota support
#
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps
 $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains
 $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps
 $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
 $virtual_mailbox_limit_maps
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, this user has overdrawn their diskspace quota. Please try again later.
virtual_overquota_bounce = yes
...
myhostname = min_server.min_domän.se
...
mydomain = min_domän.se
...
mydestination = localhost.$mydomain, localhost
...
relay_domains = proxy:mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf
...

vi /usr/local/etc/postfix/master.cf

...
smtps inet n - n - - smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
...

vi /usr/local/etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = mitt_postfix_sql_lösenord
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

vi /usr/local/etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = mitt_postfix_sql_lösenord
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'

vi /usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = mitt_postfix_sql_lösenord
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

vi /usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

user = postfix
password = mitt_postfix_sql_lösenord
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s'

vi /usr/local/etc/postfix/mysql_relay_domains_maps.cf

user = postfix
password = mitt_postfix_sql_lösenord
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'

vi /etc/aliases

root: jag@min_domän.se

Pust

OK - tills sist några kommandon som skall köras:

chmod 640 /usr/local/etc/postfix/mysql_*
chgrp postfix /usr/local/etc/postfix/mysql_*
touch /usr/local/etc/postfix/transport
/usr/local/sbin/postmap /usr/local/etc/postfix/transport
/usr/bin/newaliases
mkdir /usr/local/virtual
chown -R postfix:postfix /usr/local/virtual
chmod -R 700 /usr/local/virtual

Okej - då var vi klara med Postfix, dags att gå över till installationen av webbservern.

Steg #5 - Apache

OK - Apache kräver väl ingen närmare genomgång (det är ju ändå världens mest använda webbserver). Vi installerar enl följande:

cd /usr/ports/www/apache22
make all install clean

(Default-valen i popup-rutan är OK, men feel free att lägga till efter eget tycke och smak)

Vi redigerar 3 stycken konfigurationsfiler enligt nedan.

vi /usr/local/etc/apache22/httpd.conf

...
ServerAdmin webmaster@min_domän.se
...
ServerName www.min_domän.se:80
...
# Various default settings
Include etc/apache22/extra/httpd-default.conf

# Secure (SSL/TLS) connections
Include etc/apache22/extra/httpd-ssl.conf
...

vi /usr/local/etc/apache22/extra/httpd-default.conf

...
ServerTokens Prod
...
ServerSignature Off
...
HostnameLookups Off
...

vi /usr/local/etc/apache22/extra/httpd-ssl.conf

...
ServerName www.min_domän.se:443
...
ServerAdmin webmaster@min_domän.se
...
SSLCertificateFile "/etc/ssl/apache/server.crt"
...
SSLCertificateKeyFile "/etc/ssl/apache/server.key"
...

Till sist så kör vi lite kommandon för att generera SSL-certifikat och fixa till auto-start. Kör följande kommandon:

mkdir -p /etc/ssl/apache
cd /etc/ssl/apache
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
chmod 0400 /etc/ssl/apache/server.key
chmod 0400 /etc/ssl/apache/server.crt
cd /etc/ssl/apache
cp server.key server.key.orig
openssl rsa -in server.key.orig -out server.key
chmod 400 /etc/ssl/apache/*
echo 'apache22_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/apache22 start

Nu är det dags för PHP - let's go on...

Steg #6 - PHP

PHP är ett skript-språk som passar väldigt bra till att göra funktionella webbapplikationer (spana in PHP-guiden som någon annan
har sktivit i detta forum). installationen är väldigt enkel eftersom vi återigen använder oss av Ports Värt att notera är att
PHP består av 2 delar - dels själva Core PHP och dels PHP Extensions - därav kommer vi att göra 2 stycken Porst-installationer.

Kör följande kommandon:

cd /usr/ports/lang/php5
make all install clean

Nu poppar det upp en liten ruta där du kan välja vilja extra-funktioner i PHP du vill
kompilera tillsammans med PHP – se till att välja:

* APACHE

Nu kör vi följande kommandon:

cd /usr/ports/lang/php5-extensions
make all install clean

Nu poppar det upp en liten ruta där du kan välja vilja extensions i PHP du vill
kompilera – se till att välja:

* BCMATH
* GETTEXT
* IMAP
* MCRYPT
* MYSQL
* MYSQLI
* SESSION
* SOCKETS
* WDDX

Kopiera konfigurationsfilen mha följande kommando:

cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini

Nu skall vi redigera konfigurationen för PHP och konfigurationen för Apache:

vi /usr/local/etc/php.ini

...
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
include_path = "."
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"

...

vi /usr/local/etc/apache22/httpd.conf

...
<IfModule dir_module>
DirectoryIndex index.html index.php index.php5
</IfModule>
...
...
<IfModule mime_module>
TypesConfig etc/apache22/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>

Till sist startar vi om Apache - kör följande kommando:

apachectl restart

Dags för nästa steg - Postfixadmin...

Steg #7 - Postfixadmin

Postfixadmin är en PHP-baserad webbapplikation som vi skall använda för att hantera våra mail-domäner och användare.
Vi installerar som vanligt - kör följande kommandon:

cd /usr/ports/mail/postfixadmin
make all install clean

Nu poppar det upp en liten ruta där du kan välja vilja funktioner i postfixadmin du vill
kompilera – se till att välja:

* MYSQLI (välj bort MYSQL)

Dags att skapa en MySQL-databas för postfixadmin - kör följande kommandon:

/usr/local/bin/mysql -u root -p
(ange root-lösenordet till MySQL som du hittade på tidigare)
>CREATE DATABASE postfix;
>CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'mitt_postfix_sql_lösenord';
>GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
>FLUSH PRIVILEGES;
>quit;

Fixa till lite behörigheter - kör följande kommandon:

cd /usr/local/www/postfixadmin
find . -type f -exec chmod 640 {} \;
find . -type d -exec chmod 750 {} \;

Dags att skapa konfigurationen för Postfixadmin - kör följande kommando:

vi /usr/local/www/postfixadmin/config.inc.php

$CONF['configured'] = true;
$CONF['postfix_admin_url'] = 'https://www.min_domän.se/postfixadmin/';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'mitt_postfix_sql_lösenord';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
$CONF['admin_email'] = 'postmaster@min_domän.se';
$CONF['default_aliases'] = array (
  'abuse' => 'abuse@min_domän.se',
  'hostmaster' => 'hostmaster@min_domän.se',
  'postmaster' => 'postmaster@min_domän.se',
  'webmaster' => 'webmaster@min_domän.se'
);
$CONF['generate_password'] = 'NO';
$CONF['page_size'] = '20';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['aliases'] = '50';
$CONF['mailboxes'] = '50';
$CONF['maxquota'] = '1024';
$CONF['quota'] = 'YES';
$CONF['quota_multiplier'] = '1048576';
$CONF['transport'] = 'NO';
$CONF['vacation'] = 'YES';
$CONF['vacation_domain'] = 'autoreply.min_domän.se';
$CONF['alias_control_admin'] = 'YES';
$CONF['special_alias_control'] = 'YES';
$CONF['show_header_text'] = 'YES';
$CONF['header_text'] = ':: Postfix Admin ::';
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Tillbaka till min_domän.se';
$CONF['user_footer_link'] = 'http://www.min_domän.se/';
$CONF['welcome_text'] = <<<EOM
Hej,

Du har nu ett e-postkonto på min_domän.se

Tuta och kör...
EOM;
?>
$CONF['emailcheck_resolve_domain']='NO';

Nästa steg är att skapa en användare och en grupp för funktionen "out-of-office" samt en stuktur för densamma.

Kör följande kommandon:

pw groupadd vacation
pw useradd vacation -c Virtual\ Vacation -d /nonexistent -g vacation -s /sbin/nologin
mkdir /var/spool/vacation
cp /usr/local/www/postfixadmin/VIRTUAL_VACATION/vacation.pl /var/spool/vacation/
chown -R vacation:vacation /var/spool/vacation/
chmod 700 /var/spool/vacation/
chmod 750 /var/spool/vacation/vacation.pl
touch /var/log/vacation.log /var/log/vacation-debug.log
chown vacation:vacation /var/log/vacation*

Nu skall vi redigera ett litet perl-skript för att hantera out-of-office - kör följande kommando:

vi /var/spool/vacation/vacation.pl

my $db_type = 'mysql';
my $db_host = 'localhost';
my $db_user = 'postfix';
my $db_pass = 'mitt_postfix_sql_lösenord';
my $db_name = 'postfix';
my $sendmail = "/usr/sbin/sendmail";
my $logfile = "/var/log/vacation.log";
my $debugfile = "/var/log/vacation-debug.log";
my $syslog = 1;
...

Redigera följande fil och lägg till nedanstående text i slutet:

vi /usr/local/etc/postfix/master.cf

vacation unix - n n - - pipe
  flags=DRhu user=vacation argv=/var/spool/vacation/vacation.pl

Redigera följande fil och justera innehållet enligt nedan:

vi /usr/local/etc/postfix/main.cf

...
# TRANSPORT MAP
#
# See the discussion in the ADDRESS_REWRITING_README document.
transport_maps = hash:/usr/local/etc/postfix/transport
vacation_destination_recipient_limit = 1
...

Skapa följande fil och lägg till innehållet nedan:

vi /usr/local/etc/apache22/Includes/postfixadmin.conf

Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin/">
Options Indexes
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Avslutningsvis - kör följande kommandon:

echo 'autoreply.min_domän.se vacation:' >> /usr/local/etc/postfix/transport
postmap /usr/local/etc/postfix/transport
apachectl configtest
apachectl graceful
/usr/local/etc/rc.d/mysql-server start
/usr/local/etc/rc.d/dovecot start
/usr/local/etc/rc.d/postfix start

Tro det eller ej, men nu är vi faktiskt klara
Hmm - OK - lite konfigurering återstår....

Surfa till:
http://min_domän.se/postfixadmin/
Klicka på "Setup" och följ instruktionerna

(glöm inte att radera /usr/local/www/postfixadmin/setup.php när du är klar)

Surfa till (igen)
http://min_domän/postfixadmin/

Logga in med admin-inloggningen du angav under konfigureringen av Postfixadmin
Klicka på "Domain List"
Klicka på "New Domain" och fyll i de värden du önskar
Klicka på "Virtual List"
Klicka på "Add Mailbox" och fyll i de värden du önskar

OK - nu ÄR vi klara

Hoppas att guiden har varit till nån nytta och att ni hängde med...
Om önskemål finns så kan jag komplettera denna guide med steg om hur man sätter upp spam-filter, antivirus, webbmail mm.
Jag vill även passa på att ge cred till PHO för bollplank och ideer.

Permalänk
Medlem

Eftersom detta är precis vad jag ämnar att göra så är det fantastiskt att finna en guide.
Jag hoppas att det kommer funka bra även på en virtuell maskin.

Var inställd på att använda Qmail först men postfix verkar lika bra.

Återkommer när jag lekt färdigt.

Permalänk
Medlem

trevligt med en så detaljerad guide tack sånt här uppskattas

Permalänk
Medlem

Permalänk
Medlem

Ojoj, tusen tack! Satte faktiskt upp exakt samma kombo fast på GNU/Linux för någon månad sen, tänkte sätta upp det på FreeBSD först men hittade ingen bra guide, har aldrig jobbat med *BSD förut. Men nu vet jag vad jag ska göra i helgen, migga OS!

Åter igen, tusen tack!

Permalänk
Avstängd

Shit, bra guide!

Permalänk
Medlem

Vid installation av dovecot så har det ändrats lite saker. Kanske en ny version?
Tex finns fler tillägg kryssade som standard.

Sen vid ändring av conf-filerna så har du #-bort vissa rader.
Jag stötte på två ställen där du kommenterat bort inledningtaggen blabla {, och sluttaggen }, men det finns även rader inuti dessa som var aktiverade som standard. Nu kommenterade jag bort jag dem med.

På ett annat ställe så hade sweclockers gjort en radbrytning som kan luras lite.
" CONCAT('maildir:storage=', FLOOR( quota / 1024 ) ) AS quota FROM mailbox WHERE username = '%u' AND active = '1' "

Och här: "driver = mysql
connect = host=localhost dbname=postfix user=postfix password=mitt_postfix_sql_lösenord
default_pass_scheme = MD5"
Tog ett tag att hitta att password= var en del av connect=.

Har sweclockers någon bättre funktion för att skriva kod i inlägg, för att minska radbrytningsfel?

Här antar jag att radbrytningar inte är OK?
"proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps
$virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains
$relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps
$recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
$virtual_mailbox_limit_maps"

SASL, TSL osv ska läggas till i filen va? Hittade ingen eventuell ersättningsfil som redan hade dessa inställningar så jag la till i main.cf.

Den klagade på:
"smtpd_sender_restrictions = permit_sasl_authenticated,
permit_mynetworks"
En liten luring. Kanske bättre att ha det på 3 rader? (Jag ändrade till 1 rad)

För att få igång apache behövde jag ställa in /etc/hosts..

"vi /var/spool/vacation/vacation.pl
my $db_type = 'mysql';
my $db_host = 'localhost';"
My är ändrat till Our i scriptet. Jag ändrade i de färdiga "Our $db_blabla".

Postfix klagade vid ett tillfälle när jag loggade in på webinterfacet och skapade min första mailbox:
fatal: open database /etc/aliases.db: No such file or directory
Kom inte på varför. Men jag körde
> newaliases
>
sen funkade det.

--------------------------------------------------------------------------------

Ok. SMTP funkar. Snabbare att skicka till egen domän såklart.
IMAP funkar. Men kan förstås inte skicka till den via extern smtp förrän jag lyckats peka domänen rätt.

Thunderbird klagar på certifikaten, men det kanske ska vara så.

edit: VIKTIGT att använda hela namnet på servern när man skapar certifikaten. Då klagar thunderbird bara första gången man loggar in!
Dvs på formatet:
Company name = Företagsnamn
YOUR NAME = mailserver.domain.se

.. Nu vill jag ha igång webbmail =D
Sen måste jag erkänna att koppla sin egna domän till googlemail just blev mer attraktivt.

Permalänk
Medlem

Beroende på OS så kommer mailklienten alltid att whinea på SSL-certet om det inte är ett "riktigt" från typ verisign eller dylikt. Går oftast att lägga in certifikatet manuellt dock så man slipper whinet

Sen ska det påpekas att Dovecot visst är en mailserver, inget addon

Och det kan bli lite jobbigt om man är helt grön på dns/mail/etc då en del grejer förväntar sig att domäner ska finnas i antingen /etc/hosts eller på riktigt.

Själv kör jag precis samma sak, fast amavisd-new med spam-assassin och lite annat, och tls/sasl-tjosan på postfix, minns inte vart jag läste min guide, high5.net (postfixadmin-mupparna) hade en bra men den tog dom bort

Permalänk
Medlem

Gratis äkta cert hos Namecheap, med varje köp.
Bara köpa det billigaste de har.

Cert från Comodo är helt gratis vid köp av någonting annat.
Cert från RapidSSL kostar runt 80 kr per år.

Permalänk
Medlem

Vet inte om det är sådana cert ni behöver men jag fixade ett till min mumble server härifrån http://www.startssl.com/