ISPConfig 3: Externer Mailserver

#1
So, da ISPConfig 3 ja in meiner "Abwesenheit" enorm zugelegt hat (im positiven Sinne) mal eine wichtige Frage meinerseits.

ISPConfig 3 ist ja Multiserverfähig. Das heißt ich kann meinen Mailserver auch auf einem anderen Server haben, als auf dem wo z.B. Webseiten laufen.

Wie funktioniert hier die Konfiguration? Also wie richte ich den Mailserver ein damit er die Daten die ich im ISPConfig3 eingebe nutze. Wie kommt die Verbindung untereinander zu stande?

Ich habe folgende Konstellation im Sinn. ISPConfig3 hat ja nur noch virtuelle Mailuser (also über eine MySQL Datenbank). Die Datenbank läuft auf einem extra Server (sql.test.de). Auf dem Mailserver (mail.test.de) läuft auch eine Datenbank die im readmodus mit sql.test.de syncronisiert um eine kleine Redundanz herzustellen.

So, Postfix möchte ich dann so einrichten das immer zuerst sql.test.de abgerufen wird. Wenn der nicht verfügbar ist soll er die Datenbank auf mail.test.de nehmen. Ansich kein großes Problem.

Aber... erstellt ISPConfig3 irgendwelche config-Files auf dem Mailserver (mail.test.de) oder schreibt es alle benötigten Daten nur in die Datenbank?

Gibt es eventuell ein Howto / Entwicklerdoku für die Einrichtung eines externen Mailservers?
 
#2
Ähm ... noch ne andere Frage... ich bilde mir ein ich konnte neue Server hinzufügen aber in der aktuellen Beta finde ich dazu keine Option... ist die wieder rausgenommen worden?
 

Till

Administrator
#3
So, da ISPConfig 3 ja in meiner "Abwesenheit" enorm zugelegt hat (im positiven Sinne) mal eine wichtige Frage meinerseits.
Vielleicht hätte es ja mit Deiner "Anwesenheit" noch schneller zugelegt ;) Kleiner OpenSource Scherz ... :D

Aber jetzt zum ernsten Teil.

Um einen weiteren Server zu einem bestehenden ISPConfig System hinzuzufügen, musst Du bei der Installation des neuen Servers einfach den Hostnamen des Bestehnden Systems als Datenbank Host angeben. das geht im Expert Mode. Wenn er dich fragt, ob Du eine neue Datenbank erstellen willst, wähle nein, da dieser Server ja Bestandteil eines bestehenden Systems werden soll. Dann solltest Du auf dem zusätzlichen system auch nur die Dienste konfigurieren, die Du brauchst. Z.B. das ISPConfig Interface ist dann nicht nötig.

Wenn Du das Ganze dann redundant machen möchtest, kannst Du generelll mit MySQL Mstaer > Slvae Modus arbeiten, indem Du einen Slave auf dem 2. Server installierts. Im Momement geht das noch nicht 100%, da der Slave noch versucht Einträge aus dem Datalog nach deren Bearbeitung zu entfernen, das wird aber in Kürze geändert, dass dies auch nur der master node macht un der slave sich quiasi nur merkt, bis zu welchem Eintrag er gearbeitet hat.
 
#4
Vielleicht hätte es ja mit Deiner "Anwesenheit" noch schneller zugelegt ;)
Da bin ich mir sicher :D Danke auf jedenfall für die Antwort!

Okay dann eine andere Frage... muss ich unbedingt diesen Courier als Mailserver einsetzen? Würde gerne Dovecot nutzen. Was muss ich hierzu ändern? Bzw. wo sind die kompletten Configdateien von ISPConfig für den Courier? Dann müsste ich diese doch an Dovecot "anpassen" können, oder?
 

Till

Administrator
#5
Im Moment wird nur Courier vom Installer automatisch konfiguriert. Generell sollte Dovecot auch funktionieren, Du musst nur die Dovecot Konfiguration (SQL Abfragen) and die ISPConfig Datenbank anpassen (wäre nett, wenn Du mir die geänderten Dovecot Config dateien dann shicken könntest, dann kann ich sie in den Installer mit aufnehmen).

Die Courier Konfiguration liegt in /etc/courier/
 
#6
Danke ... auf deine Antwort habe ich gewartet :)

Werde mich mal ransetzen und sehen ob ichs hinbekomme.

Passt einer die Konfiguration eigentlich schon auf openSUSE 11.0 an? Ich bevorzuge das irgendwie bei Servern ;)
 

Till

Administrator
#9
Das ist leider etwas mehr, da der ISPConfig 3 installer Quasi die ganze Konfigurationsarbeit macht, die man bei ISPConfig 2 anhand des perfect setups manuell machen musste. Das ganze ist nicht so einfach, ich versuche mal, die Schritte zu beschreiben:

1) Erkennung der Linuxdistribution:

Die Funktion get_distname() in der Datei install/lib/install.lib.php so anpassen, dass Sie das richtige SuSe release erkennt (z.B. anhand der der Datei /etc/SuSE-release, name war glaube ich so ähnlich). Die Funktion gibt einen Bezeichner zurück, der eindeutig für die Distribution und version sein muss. Z.B. suse110.

2) Erstellung der Datei install/dist/conf/suse110.conf.php und Anpassen des Inhaltes.

3) Erstellung der Datei install/dist/lib/suse110.lib.php, nimm z.B. die debian40 Datei als vorlage.

4) Jetzt kommt möglicherweise der schwerste Teil. Wenn der Installer die Konfiguration für bestimmte Bereiche, z.B. für Postfix, nicht so macht, wie es in SuSe notwendig ist, dann musst Du die entsprechende Konfigurationsfunktion aus der Datei install/lib/installer_base.lib.php in die Datei install/dist/lib/suse110.lib.php kopieren und dort die Funktion so anpassen, dass sie für SuSe passt. Also alle SuSE spezifischen Funktionen kommen nur in die Datei install/dist/lib/suse110.lib.php, alles was aus dem base installer für SuSE passt, brauchst Du nicht dorthin kopieren, da es mittels vererbung einebunden wird.
 
#11
Ähm ... kurze Frage. Folgenden Teil der einer Distributionsabhängigen conf wird durch den Installer angelegt, oder?

$conf['postfix']['vmail_userid'] = '5000';
$conf['postfix']['vmail_username'] = 'vmail';
$conf['postfix']['vmail_groupid'] = '5000';
$conf['postfix']['vmail_groupname'] = 'vmail';
$conf['postfix']['vmail_mailbox_base'] = '/home/vmail';

MyDNS ist scheinbar schon so alt das weder in der Distro selber noch im BuildService was zu finden ist ... wäre es da nicht praktischer wieder Bind einzusetzen?
 

Till

Administrator
#12
Der User vmail und das Verzeichnis /home/vmail wird durch den Installer angelegt.

MyDNS ist scheinbar schon so alt das weder in der Distro selber noch im BuildService was zu finden ist ... wäre es da nicht praktischer wieder Bind einzusetzen?
MyDNS ist recht alt, enthält aber keine Bugs und es gibt den Nachfolger mydns-ng. Bind, so wie ihn die Distributionen ausliefern, hat leider keine Anbindung an SQL Datenbanken.
 
#14
Okay... ich glaube irgendetwas funktioniert noch nicht so ganz bei meiner Konfiguration jedenfalls werde ich aus dem Fehler nicht schlau...

Habe versucht den Installer aufzurufen aber dieser meldet mir ein:

Code:
>> Initial configuration

PHP Parse error:  syntax error, unexpected '{' in /root/ISPConfigx3/install/lib/installer_base.lib.php on line 714
Die SUSE-release sieht wie folgt aus:

Code:
openSUSE 11.0 (i586)
VERSION = 11.0
Mein Code in der install.lib.php (ich glaube ja es liegt daran) sieht folgendermaßen aus (gekürzte Fassung mit meiner Änderung):

Code:
function get_distname() {
    
    $distname = '';
    
    //** Debian or Ubuntu
    if(file_exists('/etc/debian_version')) {
    
        if(trim(file_get_contents('/etc/debian_version')) == '4.0') {
            $distname = 'debian40';
            swriteln("Operating System: Debian 4.0 or compatible\n");
        }
        if(trim(file_get_contents('/etc/debian_version')) == 'lenny/sid') {
            $distname = 'debian40';
            swriteln("Operating System: Debian Lenny/Sid or compatible\n");
        }
    }
    
    //** openSUSE
    if(file_exists('/etc/SuSE-release')) {
    
        if(trim(file_get_contents('/etc/SuSE-release')) == 'openSUSE 11.0 (i586)\nVERSION = 11.0') {
            $distname = 'opensuse110';
            swriteln("Operating System: openSUSE 11.0 or compatible\n");
        }
    }
    
    //** Redhat
    elseif(file_exists("/etc/redhat_release")) {
    
    }
    
    return $distname;
}

function sread() {
    $input = fgets(STDIN);
    return rtrim($input);
}
Die opensuse110.conf folgendermaßen:

Code:
<?php

//***  openSUSE 11.0 default settings

//* Main
$conf['language'] = 'en';
$conf['distname'] = 'opensuse110';
$conf['hostname'] = 'server1.example.com'; // Full hostname
$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
$conf['server_id'] = 1;
$conf['init_scripts'] = '/etc/init.d';
$conf['runlevel'] = '/etc/init.d';
$conf['shells'] = '/etc/shells';
$conf['cron_tab'] = '/var/spool/cron/tabs/root';
$conf['pam'] = '/etc/pam.d';

//* MySQL
$conf['mysql']['init_script'] = 'mysql';
$conf['mysql']['host'] = 'localhost';
$conf['mysql']['ip'] = '127.0.0.1';
$conf['mysql']['port'] = '3306';
$conf['mysql']['database'] = 'dbispconfig';
$conf['mysql']['admin_user'] = 'root';
$conf['mysql']['admin_password'] = '';
$conf['mysql']['ispconfig_user'] = 'ispconfig';
$conf['mysql']['ispconfig_password'] = '5sDrewBhk';

//* Apache
$conf['apache']['user'] = 'wwwrun';
$conf['apache']['group'] = 'www';
$dist['apache']['init_script'] = 'apache2';
$dist['apache']['version'] = '2.2';
$dist['apache']['vhost_dist_dir'] = '/etc/apache2/vhosts.d';
$dist['apache']['vhost_dist_enabled_dir'] = '/etc/apache2/vhosts.d';
$conf['apache']['vhost_port'] = '8080';

//* Postfix
$conf['postfix']['config_dir'] = '/etc/postfix';
$conf['postfix']['init_script'] = 'postfix';
$conf['postfix']['user'] = 'postfix';
$conf['postfix']['group'] = 'postfix';
$conf['postfix']['vmail_userid'] = '5000';
$conf['postfix']['vmail_username'] = 'vmail';
$conf['postfix']['vmail_groupid'] = '5000';
$conf['postfix']['vmail_groupname'] = 'vmail';
$conf['postfix']['vmail_mailbox_base'] = '/home/vmail';

//* Getmail
$conf['getmail']['config_dir'] = '/etc/getmail';
$conf['getmail']['program'] = '/usr/bin/getmail';

//* Courier
$conf['courier']['config_dir'] = '/etc/courier';
$conf['courier']['courier-authdaemon'] = 'courier-authdaemon';
$conf['courier']['courier-imap'] = 'courier-imap';
$conf['courier']['courier-imap-ssl'] = 'courier-imap-ssl';
$conf['courier']['courier-pop'] = 'courier-pop';
$conf['courier']['courier-pop-ssl'] = 'courier-pop-ssl';

//* SASL
$conf['saslauthd']['config'] = '/etc/default/saslauthd';
$conf['saslauthd']['init_script'] = 'saslauthd';

//* Amavisd
$conf['amavis']['config_dir'] = '/etc/amavis';
$conf['amavis']['init_script'] = 'amavis';

//* ClamAV
$conf['clamav']['init_script'] = 'clamd';

//* Pureftpd
$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
$conf['pureftpd']['init_script'] = 'pure-ftpd';

//* MyDNS
$conf['mydns']['config_dir'] = '/etc';
$conf['mydns']['init_script'] = 'mydns';

//* Jailkit
$conf['jailkit']['config_dir'] = '/etc/jailkit';
$conf['jailkit']['jk_init'] = 'jk_init.ini';
$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';

?>
Habe auch mal eine One-Klick-Installdatei für das ganze gebastellt (.txt in .ymp umbennenen!). Installation aufgerufen mit "php install.php". Wäre nett wenn mir dabei jemand helfen könnte...
 

Anhänge

Till

Administrator
#15
Da war vor ein paar tagen ein bug im Installer, der hat nichts mit Deinem Code zu tun. In Zeile 714 fehhlt ein schließendes )

Dein Code sieht soweit gut aus.
 

Till

Administrator
#16
Eine Sache ist mir och aufgefallen, die Verzeichnisse
$dist['apache']['vhost_dist_dir'] = '/etc/apache2/vhosts.d';
$dist['apache']['vhost_dist_enabled_dir'] = '/etc/apache2/vhosts.d';

dürfen nicht identisch sein, sonst kann man ein Web nicht mahr deaktivieren.

Ich würde dazu tendieren, die beidem Verzeichnisse wie bei Debian zu nennen und dann einfach ein Include für das
dist_enabled_dir in der apache2.conf bei SuSe hinzu zu fügen.
 
#17
Okay, mit viel Mühe habe ich jetzt den Installer einigermaßen zum laufen gebracht. Allerdings bleibt er bei der MyDNS startphase irgendwo hängen.

Okay.. das mit den Verzeichnissen war mir nicht klar weil im gentoo File sind diese ja auch noch gleich...

Code:
--------------------------------------------------------------------------------
 _____ ___________   _____              __ _
|_   _/  ___| ___ \ /  __ \            / _(_)
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| |
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, |
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------


>> Initial configuration

Operating System: openSUSE 11.0 or compatible

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with <ENTER>.
    Tap in "quit" (without the quotes) to stop the installer.


Select language (en,de) [en]:

Installation mode (Standard,Expert) [Standard]:

Full qualified hostname (FQDN) of the server, eg foo.example.com  [linux-jpea.site]:

MySQL server hostname [localhost]:

MySQL root username [root]:

MySQL root password []:

MySQL database to create [dbispconfig]:

Unable to connect to mysql server Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
MySQL server hostname [localhost]:

MySQL root username [root]:

MySQL root password []:

MySQL database to create [dbispconfig]:

Generating a 2048 bit RSA private key
........................................................................................................................+++
........+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
Configuring Jailkit
Configuring SASL
PHP Warning:  fopen(/etc/default/saslauthd): failed to open stream: No such file or directory in /root/ISPConfig/install/lib/install.lib.php on line 167
PHP Warning:  filesize(): stat failed for /etc/default/saslauthd in /root/ISPConfig/install/lib/install.lib.php on line 170
Configuring PAM
Configuring Courier
chmod: cannot access `/etc/courier/authmysqlrc~': No such file or directory
PHP Warning:  fopen(/etc/courier/authdaemonrc): failed to open stream: No such file or directory in /root/ISPConfig/install/lib/install.lib.php on line 167
PHP Warning:  filesize(): stat failed for /etc/courier/authdaemonrc in /root/ISPConfig/install/lib/install.lib.php on line 170
Configuring Spamassassin
PHP Warning:  fopen(/etc/default/spamassassin): failed to open stream: No such file or directory in /root/ISPConfig/install/lib/install.lib.php on line 167
PHP Warning:  filesize(): stat failed for /etc/default/spamassassin in /root/ISPConfig/install/lib/install.lib.php on line 170
Configuring Amavisd
sh: adduser: command not found
Configuring Getmail
Configuring Pureftpd
sh: /etc/pure-ftpd/conf/ChrootEveryone: No such file or directory
Configuring MyDNS
Configuring Apache
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]:

PHP Notice:  Undefined index:  vhost_conf_dir in /root/ISPConfig/install/lib/installer_base.lib.php on line 787
PHP Notice:  Undefined index:  vhost_conf_enabled_dir in /root/ISPConfig/install/lib/installer_base.lib.php on line 788
ln: creating symbolic link `/ispconfig.vhost': File exists
chmod: cannot access `/var/log/clamav/clamav.log': No such file or directory
chmod: cannot access `/var/log/clamav/freshclam.log': No such file or directory
Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services ...
Restarting service MySQL
Shutting down service MySQL ..done
Starting service MySQL ..done
Shutting down mail service (Postfix)..done
Starting mail service (Postfix)..done
Shutting down service saslauthd..done
Starting service saslauthd..done
Shutting down virus-scanner (amavisd-new):..done
Starting virus-scanner (amavisd-new):..done
Shutting down Clam AntiVirus daemon ..done
Starting Clam AntiVirus daemon ..done
LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days!  ***
LibClamAV Warning: ***   Please update it as soon as possible.    ***
LibClamAV Warning: **************************************************
Shutting down Courier Authentication Daemon ..done
Starting Courier Authentication Daemon ..done
Shutting down Courier-IMAP ..done
Starting Courier-IMAP ..done
Shutting down Courier-IMAP (SSL)..done
Generating a 1024 bit RSA private key
....................++++++
.................++++++
writing new private key to '/etc/courier/imapd.pem'
-----
512 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
.................+...................................................................................+.....................+..........+.......................................................++*++*++*++*++*++*
Starting Courier-IMAP (SSL) generating-SSL-certificate.....done
Shutting down Courier-POP3 ..done
Starting Courier-POP3 ..done
Shutting down Courier-POP3 (SSL)..done
Starting Courier-POP3 (SSL) generating-SSL-certificate.....done
PHP Notice:  Undefined index:  init_script in /root/ISPConfig/install/install.php on line 210
sh: /etc/init.d/: is a directory
Shutting down pure-ftpd..done
Starting pure-ftpd..done
Shutting down mydns ..done
Starting mydns ..done
mydns[5383]: mydns 1.1.0 started Thu Jul 10 15:20:34 2008 (listening on 4 addresses)
 

Till

Administrator
#18
Ich vermute mal, dass die mydns config datei von ISPConfig micht mit dem mydns Paket von SuSE kompatibel ist. Vergleiche doch mal die Original SuSE mydns.conf datei mit der, die jetzt von ISPConfig erzeugt wurde.
 
#19
Was mich irritiert ist das MyDNS ohne weiteres mit dieser conf startet.

Die orginale ist:

Code:
##
##  /etc/mydns.conf
##  Sun Apr 20 17:00:28 2008
##  For more information, see mydns.conf(5).
##


                                # DATABASE INFORMATION

db-host = localhost             # SQL server hostname
db-user = username              # SQL server username
db-password = password          # SQL server password
database = mydns                # MyDNS database name


                                # GENERAL OPTIONS

user = mydns                   # Run with the permissions of this user
group = mydns                  # Run with the permissions of this group
listen = *                      # Listen on these addresses ('*' for all)
no-listen =                     # Do not listen on these addresses


                                # CACHE OPTIONS

zone-cache-size = 1024          # Maximum number of elements stored in the zone cache
zone-cache-expire = 60          # Number of seconds after which cached zones expires
reply-cache-size = 1024         # Maximum number of elements stored in the reply cache
reply-cache-expire = 30         # Number of seconds after which cached replies expire


                                # ESOTERICA

log = LOG_DAEMON                # Facility to use for program output (LOG_*/stdout/stderr)
pidfile = /var/run/mydns.pid    # Path to PID file
timeout = 120                   # Number of seconds after which queries time out
multicpu = 1                    # Number of CPUs installed on your system
recursive =                     # Location of recursive resolver
allow-axfr = no                 # Should AXFR be enabled?
allow-tcp = no                  # Should TCP be enabled?
allow-update = no               # Should DNS UPDATE be enabled?
ignore-minimum = no             # Ignore minimum TTL for zone?
soa-table = soa                 # Name of table containing SOA records
rr-table = rr                   # Name of table containing RR data
soa-where =                     # Extra WHERE clause for SOA queries
rr-where =                      # Extra WHERE clause for RR queries
die von ISPConfig:

Code:
## AUTOMATICALLY GENERATED BY DEBCONF. DO NOT MODIFY DATABASE
## INFORMATION (database, db-*)...
## PLEASE RUN 'dpkg-reconfigure mydns-mysql' INSTEAD.
## CHANGES TO THE FOLLOWING DIRECTIVES ARE NOT PRESERVED, BUT REPLACED,
## ON UPGRADE:
##  user, group, pidfile, db-*, database

##
##  /etc/mydns.conf
##  Thu Aug  2 16:36:26 2007
##  For more information, see mydns.conf(5).
##


                                # DATABASE INFORMATION

db-host = localhost             # SQL server hostname
db-user = ispconfig             # SQL server username
db-password = 5sDrewBhk         # SQL server password
database = abc          # MyDNS database name


                                # GENERAL OPTIONS

user = nobody                   # Run with the permissions of this user
group = nogroup                 # Run with the permissions of this group
listen = *                      # Listen on these addresses ('*' for all)
no-listen =                     # Do not listen on these addresses


                                # CACHE OPTIONS

zone-cache-size = 2048  # Maximum number of elements stored in the zone cache
zone-cache-expire = 60  # Number of seconds after which cached zones expires
reply-cache-size = 2048 # Maximum number of elements stored in the reply cache
reply-cache-expire = 30 # Number of seconds after which cached replies expire


                                # ESOTERICA

log = LOG_DAEMON        # Facility to use for program output (LOG_*/stdout/stderr)
pidfile = /var/run/mydns.pid    # Path to PID file
timeout = 120   # Number of seconds after which queries time out
multicpu = 1    # Number of CPUs installed on your system
recursive =                     # Location of recursive resolver
allow-axfr = yes # Should AXFR be enabled?
allow-tcp = no  # Should TCP be enabled?
allow-update = no       # Should DNS UPDATE be enabled?
ignore-minimum = no     # Ignore minimum TTL for zone?
soa-table = dns_soa     # Name of table containing SOA records
rr-table = dns_rr       # Name of table containing RR data
soa-where = server_id = 1               # Extra WHERE clause for SOA queries
rr-where =  server_id = 1               # Extra WHERE clause for RR queries
Ich erkenne da irgenwie keinen "nötigen" Unterschied...
 

Till

Administrator
#20
Hast Du apparmor an? Wenn ja, deaktivier es bitte mal. Gibt es unter SuSE den User nobody und die Gruppe nogroup? Wenn nicht, könnte es daran liegen, dann müsste ich den mydns user und die Gruppe als Vraibale in die opensuse110.conf aufnehmen und sie vor dem schreiben der mydns.conf datei ersetzen.
 

Werbung