# ISPConfig 3: Externer Mailserver



## neurex (2. Juli 2008)

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?


----------



## neurex (5. Juli 2008)

Ä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 (5. Juli 2008)

> 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 ... 

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.


----------



## neurex (6. Juli 2008)

Zitat von Till:


> Vielleicht hätte es ja mit Deiner "Anwesenheit" noch schneller zugelegt


Da bin ich mir sicher  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 (7. Juli 2008)

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/


----------



## neurex (7. Juli 2008)

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 (7. Juli 2008)

Zitat von neurex:


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


Nein, ich denke da arbeitet zur Zeit keiner dran.


----------



## neurex (8. Juli 2008)

Zitat von Till:


> Nein, ich denke da arbeitet zur Zeit keiner dran.


Gut, wenn niemand etwas dagegen hat pass ich das gleich mit an. Ist ja nur die entsprechende Datei in:

\install\dist\conf

oder gibt es noch mehr?


----------



## Till (8. Juli 2008)

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.


----------



## neurex (8. Juli 2008)

Oh weh ... na ja ich probiere es mal *g*

Vielen Dank für die Info diesbezüglich!


----------



## neurex (9. Juli 2008)

Ä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 (9. Juli 2008)

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.


----------



## neurex (9. Juli 2008)

Zitat von Till:


> 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.


Muss es eh zurückziehen ... MyDNS ist im Factoryzweig des BuildServices.


----------



## neurex (10. Juli 2008)

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:


```
>> 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:


```
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):


```
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:


```
<?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...


----------



## Till (10. Juli 2008)

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 (10. Juli 2008)

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.


----------



## neurex (10. Juli 2008)

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...


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


>> 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 (10. Juli 2008)

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.


----------



## neurex (11. Juli 2008)

Was mich irritiert ist das MyDNS ohne weiteres mit dieser conf startet.

Die orginale ist:


```
##
##  /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:


```
## 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 (12. Juli 2008)

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.


----------



## neurex (12. Juli 2008)

Okay, habe die Erkennungsroutine in der install.lib.php modifiziert da SuSE ja alles mögliche in die SuSE-release oder SuSE-brand klatscht.


```
//** openSUSE
    if(file_exists('/etc/SuSE-release')) {

        $suse = implode('',file("/etc/SuSE-release"));

        if (preg_match ("/VERSION = 11.0/", "$suse")) {
            $distname = 'opensuse110';
            swriteln("Operating System: openSUSE 11.0 or compatible\n");
        }
    }
```
AppAmor probiere ich gleich einmal / schaue nach


----------



## Till (12. Juli 2008)

Zitat von neurex:


> Okay, habe die Erkennungsroutine in der install.lib.php modifiziert da SuSE ja alles mögliche in die SuSE-release oder SuSE-brand klatscht.


Ja, das macht Sinnm und vereinfacht die Anpassung für neue Versionen.


----------



## neurex (12. Juli 2008)

Danke 

Okay, AppAmor ist aus, genauer gesagt auch komplett gelöscht, die Gruppe nogroup existiert und der User nobody auch.

Allerdings ist es mir vorhin passiert als ich den MyDNS manuell gestartet habe dieser "Infotext" dauerhaft erschien. Ich nehme mal stark an der wirft einfach kein fertig an den Installer zurück. Wenn ich dann mit Strg+C abbreche beende ich allerdings den Installer ...


----------



## Till (12. Juli 2008)

Versuch mal, die Folgende Zeile in der install PHP zu ändern. Von:

system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart');

Zu:

system($conf['init_scripts'].'/'.$conf['mydns']['init_script'].' restart &> /dev/null');

Die Zeile gibt es 2 mal, es müssen beide geändert werden. Das schickt den Restart in den Hintergrund und wartet nicht auf die Beendigung des Scriptes.


----------



## neurex (12. Juli 2008)

Guter Tipp. Die Installation läuft schonmal durch:


```
>> 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]: fgvhj

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
Configuring PAM
Configuring Courier
Configuring Spamassassin
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
mv: cannot move `/etc/Bastille' to `/etc/Bastille.backup/Bastille': Directory not empty
PHP Notice:  Undefined variable: current_date in /root/ISPConfig/install/lib/installer_base.lib.php on line 629
PHP Strict Standards:  date(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' insteadin /root/ISPConfig/install/lib/installer_base.lib.php on line 629
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
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
Starting Courier-IMAP (SSL)..done
Shutting down Courier-POP3 ..done
Starting Courier-POP3 ..done
Shutting down Courier-POP3 (SSL)..done
Starting Courier-POP3 (SSL)..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
mydns[3342]: linux-jpea up 2m42s (162s) 0 questions (0/s) NOERROR=0 SERVFAIL=0 NXDOMAIN=0 NOTIMP=0 REFUSED=0
mydns[3342]: terminated
Installation completed.
```
Müsste doch jetzt eigentlich mit localhost:8080 im Browser aufrufbar sein oder? Bei mir kommt momentan nur Error. Mal die apache Dateien ansehen...

Ich sollte das System mal neu aufsetzen. Hast du zufällig eine Liste der Programme / Packete die unbedingt vorhanden sein müssen? Beim erstenmal habe ich nämlich die php-pear vergessen


----------



## Till (12. Juli 2008)

Hi,

das sieht doch schon mal ganz gut aus., um die php notice Meldungen muss ich mich nochmal kümmern, sind nur Schönheitsfehler.

ISPConfig nutzt kein pear, saher sollte es auch nicht notwendig sein. Eine Liste der Pakete habe ich nicht, nur die Installationsanleitungen für Denain und Ubuntu.

Wenn Du nichts auf Port 8080 erreichst, liegt das vermutlich daran, dss das Verzeichnis für die apache vhosts noch nicht in die apache2.conf eingebunden ist. ISPConfig nutzt dieses auch für den vhost auf port 8080 unter dem es selbst läuft.


----------



## neurex (12. Juli 2008)

Okay, schau ich gleich mal nach... soll ich diese One-Klick-Installdatei beibehalten bzw. möchtest du diese mit übernehmen? Ist vielleicht zur schnellen Installation ganz praktisch und außerdem stehen dort auch alle Packete drin...

Ne, das Problem liegt woanders begraben. Im entsprechenden vhost-Verzeichnis legt er gar keine vhosts an. Es finden sich nur zwei .template Dateien die standard sind dort...


----------



## Till (12. Juli 2008)

Habe gerade im Installer nachgesehen, eigentlich sollte die vhost Datei im Verzeichnis $conf['apache']['vhost_conf_dir'] aneglegt sein und er macht dann einen Symlink vom $conf['apache']['vhost_conf_enabled_dir'] zu der Datei im $conf['apache']['vhost_conf_dir']


----------



## neurex (13. Juli 2008)

Etwas komisch ist das schon. Jetzt legt er zwar das Verzeichnis mit der ispconfig.vhost an aber nicht das enable verzeichnis und setzt dort auch keinen sym. Wenn ich nun das Verzeichnis mit der ispconfig.vhost einbinde lässt sich der apache2 nicht mehr starten...

.conf ist folgende:


```
<?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';
$conf['apache']['vhost_conf_dir'] = '/etc/apache2/sites-available';
$conf['apache']['vhost_conf_enabled_dir'] = '/etc/apache2/sites-enabled';
$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';

?>
```


----------



## Till (13. Juli 2008)

Das enable Verzeichnis muss bereits bestehen, es wird nicht vom Installer angelegt.

zum Apache Startproblem, ruf mal bitte den Folgenden Befehl auf:

apache2 -t

(kann auch etwas anders lauten, ich weiß nicht genau wie das apache binary unter SuSE heißt).


----------



## neurex (13. Juli 2008)

Was soll dieser Befehl bezwecken? Bei mir kommt immer nur die "Hilfe":


```
rcapache2 -t
Usage: /usr/sbin/rcapache2 <command> <server flags>

where <command> is one of:
        start              - start httpd
        startssl           - start httpd with -DSSL
        stop               - stop httpd (sending SIGTERM to parent)
        try-restart        - stop httpd and if this succeeds (i.e. if
                             it was running before), start it again.

        status             - check whether httpd is running

        restart            - stop httpd if running; start httpd
        restart-graceful   - stop httpd gracefully if running; start httpd
        reload|graceful    - do a graceful restart by sending a SIGUSR1, or
                             start if not running
        stop-graceful      - stop httpd (sending SIGWINCH to parent)

        configtest         - do a configuration syntax test
        extreme-configtest - try to run httpd as nobody (detects more errors
                             by actually loading the configuration, but cannot
                             read SSL certificates)
        probe              - probe for the necessity of a reload, give
                             out the argument which is required for a reload.
                             (by comparing conf files with pidfile timestamp)

        full-server-status - dump a full status screen; requires lynx or w3m
                             and mod_status enabled
        server-status      - dump a short status screen; requires lynx or w3m
                             and mod_status enabled

        help               - this screen
```


----------



## Till (13. Juli 2008)

rcapache2 ist nicht das apache binary, es ist das apache start script. Ruf bitte das apache binary mit dem parameter -t auf und nicht das startscript.


----------



## neurex (13. Juli 2008)

Ähm sorry, hab das bin überlesen. Ja, bekomme nur ein Syntax OK das ist eigentlich etwas der ersten was der Apache2 unter SuSE prüft bevor er startet.


----------



## neurex (16. Aug. 2008)

Also ich krieg es einfach nicht hin...

Kann von euch das mal bitte einer versuchen?

Edit: Meldung der Apache2 -S Funktion (prüft die vhosts Files):


```
linux-vpcw:~/ISPConfig 3a1/install # rcapache2 restart -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:8080                 is a NameVirtualHost
         default server linux-vpcw.site (/etc/apache2/sites-enabled/ispconfig.vhost:10)
         port 8080 namevhost linux-vpcw.site (/etc/apache2/sites-enabled/ispconfig.vhost:10)
Syntax OK
Starting httpd2 (prefork) VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:8080                 is a NameVirtualHost
         default server linux-vpcw.site (/etc/apache2/sites-enabled/ispconfig.vhost:10)
         port 8080 namevhost linux-vpcw.site (/etc/apache2/sites-enabled/ispconfig.vhost:10)
Syntax OK
                                                                  failed
linux-vpcw:~/ISPConfig 3a1/install #
```
Sagt mir aber leider trotzdem nichts...


----------



## neurex (22. Aug. 2008)

Okay, das Problem das sich der Apache2 nicht starten lies lag an dem vlogger-Eintrag in der ispconfig.vhost.

Einfach auch selbst kompilieren und dann sollte es gehen...


----------



## neurex (7. Dez. 2008)

@ Till: Habe versucht dir das per PN zu senden aber dein Postfach ist bedauerlicherweiße voll also eben hier:

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

Hallo Till,

müsste jetzt das ganze ISP Config 3 System mit Dovecot als IMAP und POP3 ans laufen bekommen haben. Zumindest klappt die Zustellung und Abholung in der VM. Wäre nett wenn du das zum testen mal ins trunk implementieren könntest.

Habe das ganze unter openSUSE 11.0 getestet. Folgendes ist zu tun:

Zuerst per YAST alles mit courier* und den maildrop deinstallieren. Dann die standard Dovecot Pakete (entweder beide oder nur das Hauptpaket) installieren.

Anschließend folgendes in die /etc/postfix/master.cf eintragen:



> dovecot   unix  -       n       n       -       -       pipe
> flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}



Ist alles eine Zeile! Dann in die /etc/postfix/main.cf folgendes eintragen:



> virtual_transport=dovecot
> dovecot_destination_recipient_limit=1



Damit wird der Dovecot eigene LDA genutzt. Damit kann man dann unteranderem weitere SPAM bekämpfungen einleiten.

So... nun zur eigentlichen Konfiguration. In der /etc/dovecot/dovecot.conf folgendes editieren / hinzufügen:



> protocols = imap imaps pop3 pop3s


Damit wird IMAP und POP3 zugelassen sowie die SSL Varianten.



> disable_plaintext_auth = no



Ja, bin mir auch nicht sicher ob man diese Einstellung heutzutage setzen sollte oder nicht. Ich habe Sie so gelassen wie sie ist (also yes). Sie bewirkt das man sich, wenn auf no gestellt auch mit Klartextpasswörtern anmelden kann.



> mail_location = maildir:/home/vmail/%d/%n



Gibt die Verzeichnisse an wo die Mails gespeichert werden. Ist zwar der Standardpfad aber vielleicht kannst du den Installer so programmieren das er sich den Pfad aus der config-Datei für die jeweilige Distro holt. %d ist Domain, %n ist Name der Mailaddy.



> mechanisms = plain login


Hier vielleicht auch noch TLS???



> passdb sql {
> args = /etc/dovecot/dovecot-sql.conf
> }


Da werden die SQL Abfragen durchgeführt, komme später noch darauf zu.



> userdb static {
> args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
> }


Sagt Dovecot wo die postfächer sind... mir fällt gerade auf das ich das doch schon wesentlich früher gesagt habe mit mail_locations.... müsste theoretisch auch ohne diesen Eintrag gehen...



> socket listen {
> master {
> path = /var/run/dovecot/auth-master
> mode = 0600
> ...


Für die Authifizierung Dovecot <-> Postfix



> protocol lda {
> log_path = /home/vmail/dovecot-deliver.log
> auth_socket_path = /var/run/dovecot/auth-master
> postmaster_address = postmaster@email.de
> ...


Damit Dovecot auch seinen LDA nutzt

Den Eintrag passdb pam sollte man eventuell auskommentieren da ja eigentlich keine Systembenutzer über Dovecot verwaltet werden sollen. Kam bei mir zwar zu keinen Problemen den drin zu lassen aber ich würde es trotzdem raus nehmen.

So, weiter gehts mit der /etc/dovecot/dovecot-sql.conf (example ist im Dovecot verzeichnis zu finden).



> driver = mysql
> connect = host=localhost dbname=dbispconfig user=root password=password
> default_pass_scheme = PLAIN-MD5
> password_query = SELECT email as user, password FROM mail_user WHERE email='%u';


Habe das ganze unter dem root-User wegen etwas anderem laufen lassen. Klappt aber mit dem von ISPConfig vorgesehenem auch!

So... dann einfach Dovecot starten und Postfix unbedingt restarten!

/etc/init.d/dovecot start
/etc/init.d/postfix restart

Dann sollte alles klappen. Halt in der /etc/dovecot/dovecot.conf sollte noch folgender Wert gesetzt werden:



> pop3_uidl_format = %08Xu%08Xv


Ist der Standardwert der aber komischerweiße nicht automatisch gesetzt ist. Braucht man eigentlich blos wenn man auf einem vorhanden Mailsystem den Mailserver tauscht (also z.B. Courier in Dovecot). Hierzu aber bitte die Hinweise in der .conf beachten! Wenn man von einem blanko System ausgeht klappt es so.

Also... hoffe ich konnte etwas zu ISPConfig beitragen. Würde mich freuen wenn ichs im trunk sehe und es wenigstens ein paar User nutzen da ich Dovecot wesentlich besser finde als Courier.

Falls noch Fragen bestehen einfach schreiben.

Liebe Grüße
neurex


----------



## Till (8. Dez. 2008)

Hi,

Danke für die Infos. Ich habe das mal als feature Request im Bugtracker aufgenommen.

Man kann auch problemlos maildrop als lda für dovecot verwenden. Denn in Deinem Setup geht soweit ich sehe quota nicht und auch nicht die Filter.


----------



## neurex (8. Dez. 2008)

Bezieht sich letzteres auf die Ansteuerung über ISPC3 oder geht es dir dabei um die allgemeine Konfiguration?

Wo holt sich denn das quota eigentlich die Werte her bzw. wie werden die zugeordnet?


----------



## Till (8. Dez. 2008)

Das Quota ist eine Funktion des maildrop und maildrop holt sie aus der mysql DB, daher hat Dein soweit ich sehen kann Setup kein Quota mehr. Du solltest statt deliver einfach die bestehende maildrop Konfiguration nehmen, dann funktionieren die Filter und das Quota. Maildrop kann als lda auch ohne den courier pop3 und imap server eingesetzt werden und liefert problemlios in dovecot maildirs aus.


----------



## neurex (8. Dez. 2008)

Ja gut... das wäre ja denn lediglich an den Postfix Configs nichts zu ändern und das wäre es dann schon...

Okay ne ne kleinere Änderung an der Dovecot conf muss dann noch sein. Ich setz mich mal ran...


----------



## Till (9. Dez. 2008)

Super, danke!


----------



## neurex (11. Dez. 2008)

Ich kenn mich mit dem maildrop leider nicht richtig aus daher folgende Frage.

Wie stellt maildrop die Mails/Daten an den IMAP/POP3 durch? Hat maildrop irgendwo ein configfile welches ich nicht finde in dem man den IMAP/POP3 angibt?

Habe mir den maildrop standalone installiert...


----------



## Till (12. Dez. 2008)

Führe mal aus:

ls -la /home/vmail/

dann siehst Du das maildrop config file, es gibt dann je nach Userkonfiguration noch userspezifische Includes. An dem Config File musst Du aber nichts ändern, Du musst nur dovecot sagen wo die maildirs in einer ISPConfig Configuration liegen.


----------



## neurex (12. Dez. 2008)

Zitat von Till:


> ls -la /home/vmail/


Das irritiert mich ja eben. Wenn ich den Dovecot LDA nehme befindet sich die Domain / E-Mail in diesem Verzeichnis.

Aber warum ist in der Tabelle mail_user unter mail_dir dann /var/vmail angegeben werden?


----------



## Till (13. Dez. 2008)

Das Verzeichnis kann /home/vmail, /var/vmail oder ien beliebiges anderes Verzeichnis sein, Du kannst es bei den Server Einstellungen in ISPConfig einstellen.


----------



## neurex (14. Dez. 2008)

Ahhh... jetztert...

Okay aktueller Stand ist folgender: Dovecot legt die Domain und Userverzeichnise im richtigen Pfad an allerdings hängt die Mailzustellung meiner Meinung nach an maildrop.

Auszug aus der mail.log



> Dec 14 12:10:06 ispc3 postfix/qmgr[2958]: 08C3E19ECF: from=<hallo@neu.de>, size=323, nrcpt=1 (queue active)
> Dec 14 12:10:07 ispc3 amavis[2824]: (02824-01) (!!)WARN: all primary virus scanners failed, considering backups
> Dec 14 12:10:08 ispc3 postfix/smtpd[3407]: disconnect from localhost[127.0.0.1]
> Dec 14 12:10:23 ispc3 postfix/smtpd[3479]: warning: connect to private/tlsmgr: Connection refused
> ...


Allerdings bin ich noch nicht dahintergekommen wie maildrop richtig funktioniert um daraus schließen zu können wo der Fehler liegt...

Setze ich den Dovecot LDA ein klappts auf anhieb... falls jemand weiß was da falsch sein könnte wäre ich über einen Denkanstoss sehr erfreut...


----------



## Till (14. Dez. 2008)

Die Domain und Userverzeichnisse werden von ISPConfig angelegt und nicht Dovecot. Maildrop liefert die Mails in die korrekten Verzeichnisse aus, wenn Du die Standardkonfiguration von ISPConfig nimmst, daran ist also nichts zu ändern. Du musst lediglich die dovecot Konfigurationsdatei anpassen, dass er sich gegen die richtige mysql Tabelle authentifiziert und das dort im Feld homedir hinterlegte Emailverzeichnis benutzt.

Am einfachsten reinstallierts Du ISPConfig einfach nochmal, so dass der Postfix und Maildrop Teil richtig funktioniert und passt dann die Dovecot Konfigurationsdatei an.


----------



## neurex (16. Dez. 2008)

Mit was werden denn die Passwörter in der mail_user verschlüsselt? MD5 ist das nicht so wie es aussieht...

Gibts irgendwie eine SQL Abfrage mit der man in der Tabelle mail_user, Spalte email die dort vorhandene E-Mailadresse (Beispiel: halo@ispc.de) zerlegen kann in "hallo" und "ispc.de"?

Momentan funktioniert der Abruf und die Zustellung in die Verzeichnisse allerdings möchte ich noch etwas optimieren um die Abfragen zur MySQL Datenbank geringer zu kriegen und endlich das von ISPC verschlüsselte Passwort zu nutzen statt mein manuell eingegebenes PW


----------



## Till (17. Dez. 2008)

Die Passworte sind wie bei Linux üblich mit crypt verschlüsselt.

Zum Thema splitten der emailadresse könntest Du versuchen was mit den mysql Funktionen instring und substring zu basteln, indem du mit instring nach dem @ suchst und Dir dann mit substr den passenden Teil zurückgeben lässt.

http://dev.mysql.com/doc/refman/5.1/de/string-functions.html


----------



## neurex (17. Dez. 2008)

Till du Genie - vielen Dank! Okay aktueller Stand ist es funktioniert soweit bis auf das er momentan noch nicht "merkt" ob POP3/IMAP aktiv oder deaktiv sind (daran arbeite ich noch).

Wäre aber nett wenn du es schoneinmal so, wie es atm ist in ISPC3 aufnehmen könntest damit es ein paar testen können. Der Rest ist jetzt eh nur noch als statische Änderung des sql-config Files zu sehen.

Werde am Wochenende mal das Ergebnis posten. Heute und morgen komme ich leider nichtmehr dazu.


----------



## neurex (20. Dez. 2008)

So, wie versprochen die aktuelle Konfiguration. Rot markierte Teile müssen durch den Installer angepasst werden! Anbei auch immer eine kleine Erklärung hierzu.

/etc/dovecot/dovecot-sql.conf
siehe Anhang!

"host" definiert die URL wo der MySQL Server liegt, "port" den Port des MySQL Servers (weiß jetzt gar nicht ob der vom Installer überhaupt abgefragt wird, notfalls kann man diesen Eintrag auch weglassen dann wird automatisch der Standardport genommen), "dbname" definiert die Datenbank in der die ISPConfig3 Tabellen liegen, "user" sollte einer sein der Zugriff auf die MySQL Datenbank hat, muss aber nicht root sein. Ich würde vorschlagen den zu nehmen der auch vom Courier benutzt werden würde. "password" sollte jedem klar sein, muss nur zum "user" passen.

/etc/dovecot/dovecot.conf
siehe Anhang!

"protocols = imap pop3 imaps pop3s"
-> Aktiviert IMAP/POP3 und dies auch mit alternativer SSL Variante

"disable_plaintext_auth = no"
-> Hier bin ich mir jetzt auch nicht so sicher was das setzen dieser Einstellung angeht. Setzt man diese auf yes so kann man eigentlich die IMAP/POP3 Protokolle ohne SSL oben wieder herausnehmen und lässt keine unverschlüsselten Logins mehr zu. Setzt man den Wert auf no lässt man beide Varianten (mit und ohne SSL) zu aber eben auch unverschlüsselte Logins. Ich bin aus Gründen der kompatibilität eher für no.

"ssl_disable = no"
-> Aktiviert den SSL/TLS support (notwendig für die IMAPS/POP3S Varianten)

"ssl_cert_file = /etc/ssl/certs/dovecot.pem"
"ssl_key_file = /etc/ssl/private/dovecot.pem"
-> Pfad zum Cert- und Keyfile für den SSL/TLS Transport (vielleicht sollte man das unabhängiger Speichern und nicht im jeweiligen Mailserver Ordner wie es momentan bei Courier der Fall ist.

"pop3_uidl_format = %08Xu%08Xv"
-> Ist ein Standardwert der aber nicht standardmässig aktiviert ist. Die Einstellung ist nur zu ändern wenn Dovecot einen anderen Mailserver übernimmt.

"auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_"
-> Bestimmt welche Zeichen ein Username haben darf.

"auth_username_format = %n"
-> Muss wegen des SQL-Configfiles unbedingt gesetzt sein!

"passdb pam"
-> Unbedingt auskommertieren! Lokale Benutzer würden hier nur stören.

"passdb sql"
-> Gibt an das sich Dovecot die User/Passwortdaten aus der Datenbank holen soll.

"userdb passwd"
-> Unbedingt auskommertieren!

"userdb sql"
-> Siehe passdb sql 

So, damit sollte es soweit funktionieren.

Woran ich noch arbeite ist, wie gesagt das mit dem ob in ISPC3 POP3 oder IMAP aktiviert wurde. Für weitere Fragen zögert nicht.

Wie gesagt würde mich freuen wenn es in den Trunk kommt damit es mal ein paar testen.


----------



## Till (21. Dez. 2008)

Danke! Ich werde es mir in den nächsten Tagen mal näher ansehen.


----------



## neurex (22. Dez. 2008)

Okay - danke. Habe mich in der Zwischenzeit mit der Lösung dieser IMAP/POP3 aktiv/deaktiv Lösung befasst aber noch keinerlei Lösung gefunden.

So wie ich das sehe existiert zwar eine Variable (%s - siehe hier) allerdings bin ich noch nicht dahinter gekommen wie oder ob man diese im Zusammenhang damit einsetzen kann. Kennt sich damit jemand aus?


----------



## Till (22. Dez. 2008)

VErsuch doch mal Folgendes:

1) Mysql logging in my.cmf aktivieren und mysql neu starten.

2) Füge an eine Deiner auth Abfragen einfach mal an: "and foo = '%s'" und schau Dir an, was er im mysql log genau als Abfrage an die DB sendet (poste das dann bitte auch hier) und dann können wir versuchen, daraus eine funktionierende Abfrage zu bauen.


----------



## neurex (22. Dez. 2008)

Danke für die Antwort Till. Er sendet an den SQL-Server anstatt %s das entsprechende Protokoll (war in meinem Fall POP3).



> /usr/sbin/mysqld, Version: 5.0.51a-log (SUSE MySQL RPM). started with:
> Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
> Time                 Id Command    Argument
> 081222 16:52:39          1 Connect     root@localhost on dbispconfig
> 1 Query       SELECT password FROM mail_user WHERE SUBSTRING_INDEX(email, '@', 1) = 'hallo' AND foo = 'POP3'


Bis jetzt fällt mir aber noch keine Abfrage dazu ein aber das kann noch kommen...

Wie ist das eigentlich. Was wird normalerweiße (also im Moment beim Courier) als Benutzername eingetragen? Angenommen die E-Mail heißt ich@meinweb.org. Wird da die komplette E-Mail eingetragen oder nur der Nutzer (in diesem Fall ich)? Bei mir ist momentan nur der Nutzer der Fall was ich auch bevorzugen würde. Warum alles doppelt eingeben?


----------



## Till (23. Dez. 2008)

In ISPConfig 3: Benutzername = emailadresse Es gibt doch garkein Feld für einen benutzernamen in der Tabelle und der Teil vor dem @ ist kein eindeutiger Bezeichner für den Account. Denk mal daran was passiert wenn Du ein paar hundert Domains aufd em Server hast und nur ein Account dürfte info heißen.


----------



## Till (23. Dez. 2008)

Zu der SQL Abfrage. Versuch doch mal:

..... AND disable%Ls = 0


----------



## neurex (23. Dez. 2008)

Zu dem Benutzernamen: Es wird aber in dem Moment eindeutig wenn z.B. auf mail.meinweb.org connectet wird und der Benutzer hallo ist. Dann ist die E-Mail logischerweiße hallo@meinweb.org. Aber wenn dann als Benutername die E-Mailaddy fungieren soll ist das auch kein akt.

Bei folgender Abfrage erscheint in der Log:



> 081223 12:03:02         13 Connect     ispconfig@localhost on
> 13 Init DB     dbispconfig
> 13 Query       SELECT updated FROM server WHERE server_id = 1
> 13 Init DB     dbispconfig
> ...


und der Login scheitert mit einem Error.


----------



## Till (23. Dez. 2008)

> Es wird aber in dem Moment eindeutig wenn z.B. auf mail.meinweb.org connectet wird und der Benutzer hallo ist.


nein, das ist es eben nicht. Wenn Du mehere Domains hast und webmail benutzt, connecten alle von localhost. Es muss immer die komplette Emailadresse für die Authentifizierung verwendet werden.



> und der Login scheitert mit einem Error.


Du musst Deine SQL Abfragen umstellen. Die Abfrage muss z.B. lauten:

SELECT password FROM mail_user WHERE email = 'ich@meinweb.org' AND disablepop3 = 0

Teste das Ganze am Besten mal in phpmyadmin.


----------



## neurex (23. Dez. 2008)

Okay. Das mit dem Webmailer klingt einleuchtend. Die aktuelle Konfiguration findet sich nun, dank dir Till, im Anhang.

Falls noch irgendwo Probleme gibt sag Bescheid.

EDIT: Das mit dem Benutzernamen habe ich auch geändert!


----------



## get.the.MaX (29. Dez. 2008)

Da Courier für mich auch nicht in Frage kommt, habe mir das ganze mal angeschaut, und bin mittlerweiler der Meinung das das ganze anstatt mit Maildrop, besser über den Dovecot LDA gemacht werden kann. Es geht doch eigentlich nur um die Mailfiltereinstellungen der Mailbox und um den Autoresponder. Das ganze lässt sich über Sieve eigentlich einfach regeln. Man müsste man den Syntax des Mailplugins anpassen. Und Dovecot so einstellen das jeder User seine eigene Sievedatei bekommt, so wie jetzt per Maildrop. Dieses Setup sollte dann auch mit Courier laufen.


----------



## Till (29. Dez. 2008)

> Es geht doch eigentlich nur um die Mailfiltereinstellungen der Mailbox und um den Autoresponder.


Nein, nicht nur darum. ISPConfig erlaubt custom mail scripts, Du müsstest also einen Converter schreiben der die komplette maildrop syntax abdeckt und vollautomatisch in sieve umwandelt. Außerdem müsstest Du sieve an die mysql DB anbinden, so dass es automatisch das quota aus der DB lesen kann.

Und wo soll der Vorteil liegen? Dovecot läuft super mit maildrop als lda. Für die Verwendung von maildrop muss der Rest von courier nicht installierts ein.


----------



## get.the.MaX (29. Dez. 2008)

Im Moment bekomme ich es mit Maildrop nicht ans laufen. Wenn ich das Standartpaket von Ubuntu nutzte hängt es an courier-authlib, dadurch das authlib nicht läuft bekomme ich. 

```
(user unknown. Command output: ERR: authdaemon: s_connect() failed: No such file or directory Invalid user specified. )
```
Dann habe ich das Paket neu kompiliert ohne courier. Dann erhalte ich diesen Fehler.


```
(user unknown. Command output: Invalid user specified. )
```


----------



## Till (29. Dez. 2008)

Installier bitte authlib, das ist notwendig um auf die mysql DB zuzugreifen.


----------



## neurex (7. Jan. 2009)

@ Till: Hast du dir das ganze schonmal angesehen? Brauchst du noch irgendetwas oder bist du einfach noch nicht dazugekommen?


----------



## Till (7. Jan. 2009)

Bin bis jetzt leider noch nicht dazu gekommen. Das wird auch erst was nach der Veröffentlichung von ISPConfig 3.0.1 final was werden, da wir im Moment feature freeze haben und gerade nur bugs behoben werden.


----------



## neurex (8. Jan. 2009)

Hmmm... schade das es nichtmehr in die 3.0.1 kommt


----------



## Controller (26. Feb. 2009)

Wollte nur hinzufügen, dass Dovecot wohl Quota unterstüzt: http://wiki.dovecot.org/Quota

Im wesentlichen ist die dovecot.conf durch folgenden Inhalt zu erweitern:

```
protocol imap {
  mail_plugins = quota imap_quota
}
protocol pop3 {
  mail_plugins = quota
}
# In case you're using deliver:
protocol lda {
  mail_plugins = quota
}
```
Je nach Quota-Backend und Dovecot-Version kann die Abfrage der der Quota-Informationen aus der MySQL-Datenbank anders aussehen. Ich habe ein Debian Etch. Da ist Dovecot noch in der Version 1.0.X. Zudem benutze ich das maildir-Backend. Entsprechend sieht meine SQL-Konfiguration bzgl. der Quota wie folgt aus:

```
user_query = SELECT '/home/vmail/%Ld/%Ln' AS home, 1001 AS uid, 1001 AS gid, CONCAT('maildir:storage=', FLOOR( quota * 1024 ) ) AS quota FROM table WHERE email = '%u'
```
Das Maildir-Quota-Backend soll mit maildrop kompatibel sein. Genauer beschrieben findet man alles in dem oben geposteten Link.


----------



## Till (26. Feb. 2009)

Danke für die Info. Ich werde versuchen den Dovecot support gleich nach Aufhebung des feature Freeze für dein Final zu implementieren, so dass dovecot bei der darauffolgenden stable version dabei ist.


----------



## get.the.MaX (10. März 2009)

Ich will in den nächsten Tagen einen externen Mailserver aufsetzt. Was ich im Moment noch nicht ganz verstehe, müssen auf Server A der als Webserver dienen soll alle Module installiert werden, oder kann ich mir das Mailmodul sparen da der Mailserver ja auf Server B laufen soll?


----------



## Till (10. März 2009)

Wenn Du auch über ein php oder perl script, z.B. ein Kontaktformular auch Emails verschicken möchtest, dann musst Du auf dem Webserver auch die Konfiguration für den postfix machen.


----------



## get.the.MaX (10. März 2009)

Die würde ich dann per Hand machen, Courier, Amavis und co brauche ich dann ja nicht. Und auf Server B der als Mailserver dienen soll muß dann quasi nur das Mailmodul laufen, und halt die MySQL als Slave richtig?


----------



## Till (11. März 2009)

Die Replikation der mysql Datenbank macht ispconfig selbst, also kein mysql master / slave setup aufsetzen! Einfach nur mysql auf beiden Servern installieren.


----------



## get.the.MaX (11. März 2009)

Das ist ja noch besser danke.


----------



## Joor (19. Juli 2009)

Moin!

Ich möchte das Thema nochmal anschubsen.

Ich habe courier rausgeworfen und dovecot entsprechend post #51 von neurex configuriert. Der Hauptunterschied ist eher, dass hier Debian lenny auf einem VPS läuft und nicht SuSE.

Sende ich eine Mail vom localhost an einen localen User, kommt

```
postfix/pipe[11823]: 9692E2404F3: to=<xxx@yyy.com>, relay=maildrop, delay=0.37, delays=0.21/0.05/0/0.12,dsn=4.3.0, status=deferred (temporary failure. Command output: ERR: authdaemon: s_connect() failed: No such file or directory /usr/bin/maildrop: Home directory owned by wrong user. )
```
courier-authlib-mysql ist installiert...
Wenn ich das richtig sehe, hat es hier noch gar nichts mit dovecot zu tun, oder?

Versuche ich mich per IMAP anzumelden, habe ich folgende Situation:

```
Jul 19 22:34:35 hq0 dovecot: imap-login: Login: user=<xxx@yyy.com>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Jul 19 22:34:35 hq0 dovecot: IMAP(xxx@yyy.com): mkdir(/var/vmail/yyy.com/xxx/cur) failed: Permission denied
Jul 19 22:34:35 hq0 dovecot: IMAP(xxx@yyy.com): mkdir(/var/vmail/yyy.com/xxx/.INBOX.Sent/cur) failed: Permission denied
```
Es scheint mir, als würde das Konto nicht richtig angelegt werden. In /var/vmail/mailfilter/ sind die domains und user hingegen angelegt.

Help wanted...

Gruß
Joor


----------



## Till (20. Juli 2009)

Du musst courier-maildrop installieren.


----------



## neurex (20. Juli 2009)

Wie weit ist eigentlich die implementierung in der aktuellen Version fortgeschritten?


----------



## Till (21. Juli 2009)

Dovecot steht in der Roadmap für 3.0.2:

http://bugtracker.ispconfig.org/index.php?do=roadmap&project=3


----------



## Joor (21. Juli 2009)

Also,
ich habe mir die Mühe gemacht, so ziemlich alles vom Server herunter zu werfen und von vorne anzufangen (nach INSTALL_DEBIAN.txt).

Dieser Fehler bleibt: (/var/log/mail.info)

```
postfix/pipe[5398]: CFA4E24012B: to=<xxx@yyy.com>, relay=maildrop, delay=475, delays=473/0.08/0/1.4, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/bin/maildrop: Home directory owned by wrong user. )
```
Irgendwie habe hier also ein Rechteproblem, nur bekomme ich nicht heraus, wo....
Will sagen, von welchem Homedir ist hier die Rede? /var/vmail?

Gruß
Joor

Nachtrag:
Aus den cron.log geht hervor:

```
mkdir: kann Verzeichnis »/var/vmail/yyy.com« nicht anlegen: Keine Berechtigung
maildirmake: /var/vmail/yyy.com/xxx: No such file or directory
chown: cannot access `/var/vmail/yyy.com/xxx': No such file or directory
```
Welche Rechte muss es also hier haben?


----------



## Joor (21. Juli 2009)

Also...
Ich habe /var/vmail dem User und der Gruppe vmail zugeordnet und nun scheint es fehlerlos zu klappen.

Nur noch diese Frage:
Ist das korrekt so? Ist es evt. ein Sicherheitsrisiko?

Gruß
Joor


----------



## neurex (21. Juli 2009)

Ja, vmail sollte der User sein der in der ISPConfig conf als mailuser drinsteht...

Ist korrekt und sollte so sein...


----------



## hunter999 (18. Sep. 2009)

Hallo,

ich muss hier auch nochmal nachfragen da ich gerade dabei bin einen neuen ISP3 Server aufzusetzen welcher nur Web und die DB´s hosten soll.
Ein weiterer Server soll nur die Mails machen aber ebenfalls über ISP3 zu konfigurieren sein.
Wie wäre hier die Verfahrensweise?
1. Server mit Web/DB Server installieren anschließend ISP3 drauf.
2. Server mit Mailserver installieren? und dann?

Hier fehlt mir die weitere Vorgehensweise.
Kommt auf dem Mailserver auch noch was von ISP3 drauf? Oder muss ich nur im 1. Server den Mailserver als solches angeben?


----------



## Till (18. Sep. 2009)

1) ISPConfig auf dem webserver normal nach perfect setup guide für ispconfig installieren.
2) Auf dem Mailserver musst Du zumindest den mail teil und die mysql DB laut perfect setup installieren. Dann muss ispconfig dort auch im expert modus installiert werden. Bei der ersten Abfrage gibst Du ganz normal die mysql Zugangsdaten zum localhost mysql server an und Du wirst dann während der Installation gefragt, ob dieses ISPConfig einem anderen Server beitreten soll und dann gibst Du die mysql Zugangsdaten des master servers an.

Was ganz wichtig ist, teste vorher ob Du Dich auch wirklich vom mailserver aus mittels mysql commando in die DB des master servers einloggane kannst. Also:

mysql -h master.domain.tld -u root -p

und dann müssen sich master und slave auch wirklich anhand Ihrer Hostnamen gegenseitig auflösen können, also am besten in der /etc/hosts auf beiden Servern beide hostname eintragen.


----------



## hunter999 (21. Sep. 2009)

Hallo Till,

danke für deine Anleitung wozu ich noch zwei fragen hätte.
Den 2. Server habe ich nun eingericht mit den Mail & MySQL Diensten laut Perfect Setup.
1. Frage: Die ISPCONFIG3 Installation kann ich aufgrund fehlender php Komponenten ja gar nicht starten. Gibts da noch eine ander Möglichkeit oder müssen die php Dinger noch mit drauf, wenn ja welche?
2.Frage: beim Versuch zum srv01 testweise zu connecten kommt folgender Fehler: 
	
	



```
ERROR 1130 (00000): Host 'srv02.mein-mail-server.de' is not allowed to connect to this MySQL server
```
Zur Info, srv01 ist ebenfalls laut dem Perfect Setup eingerichtet.


----------



## Till (21. Sep. 2009)

1) Die PHP Komponenten müssen installierts ein, sonst würde ISPConfig ja garnicht funktionieren.
2) Du musst in der mysql DB auf dem master noch einen root User Eintrag hinzufügen, der Verbindungen von Deinem 2. Server erlaubt.


----------



## hunter999 (21. Sep. 2009)

Hallo Till,

danke nochmals für deine Hilfe.
1. und 2. hab ich gemacht und es funktioniert nun.
Bei der Installation kommt leider wieder ein Fehler:


```
MySQL master server database name [dbispconfig]:

ERROR: Stopped: Database already contains some tables.
```
Was hab ich nun wieder falsch gemacht?


----------



## Till (21. Sep. 2009)

Vermutlich hast Du entweder zum 2. mal auf dem serlben Server installiert ohne die software vorher korrekt zu deinstallieren oder Du hast die master DB statt der lokalen DB im installer angegeben.

Das Schema bei der Installation ist ganz einfach:

1) Master Server ganz normal nach perfect setup installieren.
2) Slave server im expert mode installieren, bei der ersten abfrage (wie vom Installer vorgegeben), die loakel mysql db auswählen und wenn ers später fragt ob Du zu einem master server verbinden willst, dann gibst Du die master DB an.


----------



## hunter999 (21. Sep. 2009)

Hallo Till,

ich dachte auch das es einfach ist, vielleicht bin ich aber einfach blind. Hier mal ein Full Quote der Ein-/Ausgabe bei der Expert Installation auf dem Mailserver. Als erstes fragt er wie von dir beschrieben den lokalen MySql Zugang ab und dann den Master SQL Server Zugang wo er dann hängen bleibt weil er eben die selben Tabellen schon hat.


```
Installation mode (standard,expert) [standard]: expert

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [srv02.mein-mail-server.de]:

MySQL server hostname [localhost]:

MySQL root username [root]: root

MySQL root password []: passwort

MySQL database to create [dbispconfig]:

MySQL charset [utf8]:

Shall this server join an existing ISPConfig multiserver setup (y,n) [n]: y

MySQL master server hostname []: srv01.mein-master-server.de

MySQL master server root username [root]:

MySQL master server root password []: passwort

MySQL master server database name [dbispconfig]:

Unable to connect to mysql server
MySQL master server hostname []: srv01.mein-master-server.de

MySQL master server root username [root]: srv02root

MySQL master server root password []: passwort

MySQL master server database name [dbispconfig]:

ERROR: Stopped: Database already contains some tables.
srv02:/tmp/ispconfig3_install/install#
```


----------



## hunter999 (21. Sep. 2009)

Zitat von hunter999:


> ```
> ERROR: Stopped: Database already contains some tables.
> ```


Problem behoben. Die Fehlermeldung besagt das die auf dem *Slave-Server* vorhandene Datenbank schon die Tabellen beinhaltet und nicht wie vermutet der Master Server.


----------



## hunter999 (29. Sep. 2009)

Ist es eigentlich richtig so das ich Mail Einstellungen auch auf dem Mailserver machen muss?
Ich nahm an das ich alles auf dem Hauptserver machen kann und er die Einstellungen "einfach" rüber zum Mailserver schiebt?


----------



## Till (29. Sep. 2009)

> Ist es eigentlich richtig so das ich Mail Einstellungen auch auf dem Mailserver machen muss?


Auf dem Mailserver darf garkein Interface installiert sein. Machst Du dort direkt eine Einstellung, funktioniert das System später nicht mehr da die primary ID's dann mit denen des Masters kollidieren.



> Ich nahm an das ich alles auf dem Hauptserver machen kann und er die Einstellungen "einfach" rüber zum Mailserver schiebt?


das tut er auch alle 60 Sekunden. Wenn das bei Dir nicht der Fall war, dann stimmen mysql Berechtigungen nicht.


----------



## hunter999 (29. Sep. 2009)

Zitat von Till:


> Auf dem Mailserver darf garkein Interface installiert sein. Machst Du dort direkt eine Einstellung, funktioniert das System später nicht mehr da die primary ID's dann mit denen des Masters kollidieren.


Mist wie bekomme ich das sinnvoll wieder runter?



Zitat von Till:


> das tut er auch alle 60 Sekunden. Wenn das bei Dir nicht der Fall war, dann stimmen mysql Berechtigungen nicht.


Wie kann ich die Berechtigungen überprüfen?


----------



## Till (30. Sep. 2009)

> Mist wie bekomme ich das sinnvoll wieder runter?


rm -f /etc/apache2/sites-enabled/000-ispconfig.vhost



> Wie kann ich die Berechtigungen überprüfen?


Logge dich mal auf der shell vom slave server aus mit dem mysql Commando auf dem master server ein. dabei musst Du den master user und Passwort aus der Datei /usr/local/ispconfig/server/lib/config.inc.php nehmen


----------



## hunter999 (14. Dez. 2009)

Kleine OT Frage:
Darf ich die main.cf Datei unter ISPCONFIG3 mit eigenem Mailserver überhaupt ändern? Möchte noch ein Paar Blacklists hinzufügen, da zu viel Spam reinkommt.


----------



## Till (15. Dez. 2009)

Du kannst die Datei jederzeit ändern. Du musst nur beachten dass ispconfig sie möglicherweise bei einem software update ändern wird, wenn Du reconfigure services mit "y" beantwortest.


----------



## hunter999 (16. Dez. 2009)

Hallo Till,

danke für die Info.
Ist es eigentlich richtig das unter

relayhost =

in der main.cf nichts da steht?


----------



## Till (16. Dez. 2009)

Ja, das muss leer sein. Außer Du relayst alle emails durch einen externen Server, das mavcht man aber nur bei mailservern die z.b. in einem Büro an einer dsl Leitung hängen und alle emails durch den mailserver des dsl providers versenden müssen.


----------



## neurex (23. Jan. 2010)

Ohne jetzt deine Leistung herunter zu würdigen Till, ganz im Gegenteil ich bin froh das Dovecot nun mit 3.0.2 endlich unterstützt wird aber warum nur für Debian???

Ich fände es schön wenn 3.0.2 auch noch openSuSE unterstützen würde. Warte da schon seit Entwicklungsbeginn der 3.0.2 drauf 

Kann ich dabei vielleicht etwas helfen?

Apropo openSuSE. Wird 11.2 schon unterstützt oder ist die diesmal kompatibel mit der 11.1er Install?


----------



## Till (23. Jan. 2010)

Generell ist es geplant, dass dovecot auch für andere Distributionen unetrstützt wird. das ist aber immer ein recht großer Aufwand, da jedes Linux anders konfiguriert wird.



> Kann ich dabei vielleicht etwas helfen?


Klar, sehr gerne. Und zwar könnte ich folgendes gebrauchen:

1) Wenn Du in die Datei install/lib/installer_base.lib.schaust findest Du dort eine Funktion configure_dovecot (Zeile 656). dort stehen die Befehle, die zum Konfigurieren von dovecot unter debian ausgeführt werden müssen. Ich denke unter suse werden sie fast identisch sein. Da müsste ich wissen, welche Befehle zum rekonfigurieren von postfix für dovecot und für dovecot selbst notwendig sind.

2) Dann gibt es in install/tpl/ die beiden master Templates für die die dovecot Konfigurationsdateien dovecot.conf und dovecot-sql.conf. Diese beiden templates sind von einem debian System. Ich bräuchte jetzt die beiden entsprechenden Konfig datein von opensuse. Man müsste also diese beiden dateien von opensuse nehmen und sie mit den debian varianten vergleichen und dann sicherstellen, dass die vergleichbare dovecot optionen wie z.b. aktivierte module (sieve, quota) und pfade zu den auth sockets stimmen.

An Deiner Stelle würde ich das wie folget machen. Du installierst ein neues opensuse system nach perfect setup, lässt aber den courier und maildrop kram aus und nimmst stattdessen dovecot. Dann sicherst Du die opensuse dovecot. Konfiguration für alle fälle und installierst ispconfig 3 svn version, spielst ggf. die dovecot Konfig von suse zurück und schaust was Du alles ändern musst, bis das mailsystem geht.



> Apropo openSuSE. Wird 11.2 schon unterstützt oder ist die diesmal  kompatibel mit der 11.1er Install?


Keine Ahnung, hab es noch nicht getestet.


----------



## neurex (23. Jan. 2010)

Sehr gut.

Dann werde ich mich gleich mal dransetzen und dir diese Infos liefern. Vielen Dank schonmal soweit!

openSuSE 11.2 teste ich dann bei der gelegenheit auch gleich aus


----------



## neurex (24. Jan. 2010)

Zitat von Till:


> An Deiner Stelle würde ich das wie folget machen. Du installierst ein neues opensuse system nach perfect setup, lässt aber den courier und maildrop kram aus und nimmst stattdessen dovecot. Dann sicherst Du die opensuse dovecot. Konfiguration für alle fälle und installierst ispconfig 3 svn version, spielst ggf. die dovecot Konfig von suse zurück und schaust was Du alles ändern musst, bis das mailsystem geht.


Okay openSUSE 11.2 funktioniert. Gibt sogar ein Perfekt Setup HowTo von Falko 

So nun aber mal eine andere Frage. In dem Thread steht ja, ein paar Seiten vor mir schon die Lösung für Dovecot allerdings nur in Verbindung mit maildrop. Du schreibst aber ich solle maildrop nicht installieren aber wie wird das dann mit den Filtern und allem auf Debian geregelt?


----------



## Till (24. Jan. 2010)

Die filter sind in Sieve neu implementiert und es wird auch eine andere maildir struktur für dovecot verwendet, da man ansonsten ja eh den kompletten courier inkl. authdaemon installieren müsste und somit die Verwendung von Dovecot keine Vorteile bringt.


----------



## neurex (28. Jan. 2010)

Sag mal irgendwo hängts bei mir (vielleicht hab ich zuviel nicht installiert). SASLAUTH wird nicht benötigt, oder?


----------



## Till (28. Jan. 2010)

sasl barchst Du glaube ich nicht, bin mir da aber nicht ganz sicher. hast Du denn external auth in dovecot und postfix konfiguriert? Dann schalte doch mal debugging in dovecot ein und mysql logging um zu sehen, ob er überhaupt eine Passwortabfrage versucht.


----------



## neurex (2. Feb. 2010)

Also so langsam aber sicher steig ich absolut nichtmehr durch.

Vielleicht kommt ja jemand von euch auf die entsprechende Lösung. Hier einmal die Fehler welche in der mail.log stehen wenn ich versuche über telnet eine Mail an eine zuvor per ISPC3 angelegte Mailbox zu senden:



> Feb  1 20:25:22 linux dovecot: dovecot: Killed with signal 15 (by pid=15185 uid=0 code=kill)
> Feb  1 20:25:22 linux dovecot: Dovecot v1.2.9 starting up (core dumps disabled)
> Feb  1 20:25:22 linux dovecot: auth-worker(default): mysql: Connected to localhost (dbispconfig)
> Feb  1 20:25:23 linux postfix/smtpd[14759]: connect from work.net[192.168.0.45]
> ...


So, genannter Order /var/vmail/work.net... existiert nur bis in den vmail Ordner. Wie wird dieser normalerweiße angelegt?

Die main.cf von Postfix sieht folgendermaßen aus:



> inet_protocols = all
> biff = no
> mail_spool_directory = /var/mail
> canonical_maps = hash:/etc/postfix/canonical
> ...


Dort steht auch die von mir auskommertierte Zeile

virtual_mailbox_limit_maps =  proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf

drin. Die schreibt der Installer mitrein, legt die Datei aber nicht an. Ist das normal so? Und wieso werden in den anderen Dateien die Hosts für die MySQL Datenbank mit IP Adressen und nicht mit Domainnamen angegeben?


----------



## get.the.MaX (2. Feb. 2010)

```
mail_location: Ambiguous mail location setting, don't know what to do with it
```
Das ist ein Fehler in Dovecot genauso wie.


```
Fatal: Namespace initialization failed
```
Poste doch mal die dovecot.conf


----------



## neurex (2. Feb. 2010)

Liegt im Anhang. Ging leider nur als ZIP wegen Zeichen und Größenbeschränkung... sorry.


----------



## get.the.MaX (2. Feb. 2010)

Versuch mal


```
protocol lda {
    log_path = /ANPASSEN/vmail/dovecot-deliver.log
    auth_socket_path = /var/run/dovecot/auth-master
    postmaster_address = test@example.com
    #mail_plugins = sieve quota expire
}
```


```
Ist nicht unbedingt nötig, kann aber auch nicht schaden
namespace private {
    separator = .
    prefix = INBOX.
    inbox = yes           
    subscriptions = yes
}
```
Eventuell must du den auth_socket_path anpassen. Ansonsten schalte mal das Debugging von Dovecot ein. Wenn das so nicht klappt nimm mal den user_query aus der dovecot-sql raus, und setzt dann das Maildir per Hand, nur um erstmal zuschauen ob es geht. Dazu noch:


```
Muß zum Maildir passen.
userdb static {
    args = uid=5000 gid=5000 home=/ANPASSEN/vmail/%d/%n allow_all_users=yes
}
```


----------



## neurex (4. Feb. 2010)

Okay aktueller Fehlerbericht:



> Feb  4 22:09:03 linux postfix/master[14440]: terminating on signal 15
> Feb  4 22:09:03 linux postfix/postfix-script[14707]: starting the Postfix mail system
> Feb  4 22:09:04 linux postfix/master[14708]: daemon started -- version 2.6.1, configuration /etc/postfix
> Feb  4 22:09:05 linux postfix/qmgr[14723]: 2F39127C33: from=<wwwrun@linux.work.net>, size=2347, nrcpt=1 (queue active)
> ...


Die Datei auth-master existiert, keine Ahnung warum er diese nicht findet aber ab und an meldet er mir einen setgid(5000) Fehler. Okay 5000 soll normalerweiße der User/Group vmail sein. Unter openSUSE ist das aber mittlerweile nichtmehr 5000 sondern 303. In der main.cf von postfix hab ich das schon angepasst aber irgendwo muss noch die 5000 erwähnt werden. Kann es sein das er sich diese aus der Datenbank holt?


----------



## Till (6. Feb. 2010)

Schau mal in ispconfig unter system > server config > Server 1 auf dem mail tab. Änderungen dort gelten aber nur für neu angelegte mail user, für existierende müsstest Du die Einträge in der mail_user Tabelle manuell ändern.


----------



## neurex (7. Feb. 2010)

Ah jetzt hab ich immerhin schonmal einen Teilerfolg.

Also. Habe die GID und die UID in ISPC3 entsprechend umgestellt und in der dovecot.conf die folgenden Parameter angepasst:

mail_location = maildir:/var/vmail/%d/%n/Maildir

und

userdb static {

args = uid=303 gid=303 home=/var/vmail/%d/%n/Maildir allow_all_users=yes

}

So, damit legt er die entsprechenden Mailverzeichnise unter /var/vmail an und ich kann darauf auch zugreifen und der Mailversand über Postfix/Dovecot zu diesen Usern klappt. Wenn ich das ganze userdb static jetzt wieder auskommentiere und dafür userdb sql reinnehme kann ich immernoch connecten ABER nur wenn die Verzeichnisse für den Mailuser schon existieren! Ist dies nicht der Fall beendet Dovecot sofort die Verbindung. In der deliver-log taucht dann folgendes auf:



> 2010-02-07 13:26:52 pop3-login: Info: Login: user=<work@work.net>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
> 2010-02-07 13:26:52 POP3(work@work.net): Error: mail_location: Ambiguous mail location setting, don't know what to do with it: /var/vmail/work.net/work/Maildir (try prefixing it with mbox: or maildir
> 2010-02-07 13:26:52 POP3(work@work.net): Fatal: Namespace initialization failed


Ich hab aber mittlerweile absolut keine Ahnung woher das kommt...


----------



## Till (7. Feb. 2010)

> Wenn ich das ganze userdb static jetzt wieder auskommentiere und dafür  userdb sql reinnehme kann ich immernoch connecten ABER nur wenn die  Verzeichnisse für den Mailuser schon existieren!


Die Verzeichnisse werden ja auch durch das mail plugin von ispconfig angelegt, sie sind also für jeden mail account bereits vorhanden und müssen nicht durch dovecot angelegt werden.

Überprüf bitte mal, dass Du in ispconfig auch unter system > server config auf dem mail tab bei pop3/ imap daemon "dovecot" und bei mailfilter syntax "Sieve" ausgewählt hast.


----------



## neurex (7. Feb. 2010)

Ah... gut zu wissen.

Ja, es steht Dovecot und Sieve drin!

Ich kann dir ja gerne mal meine Dovecot und Postfix confs zukommenlassen, weil wie gesagt sobald die Verzeichnisse angelegt sind klappt alles.


----------



## Till (8. Feb. 2010)

> Ich kann dir ja gerne mal meine Dovecot und Postfix confs  zukommenlassen, weil wie gesagt sobald die Verzeichnisse angelegt sind  klappt alles.


Ja, das wäre gut. Schick sie bitte an dev [at] ispconfig [dot] org

Wird denn bei Dir kein neues Verzeichnis durch ispconfig angelegt, also wenn Du eine neue mailbox anlegst, dann wartest bis im monitor der eintrag aus der jobqueue entfernt ist und dann nachsiehst, ob das maildir existiert?


----------



## neurex (8. Feb. 2010)

Zitat von Till:


> Ja, das wäre gut. Schick sie bitte an dev [at] ispconfig [dot] org


Okay, mach ich.



Zitat von Till:


> Wird denn bei Dir kein neues Verzeichnis durch ispconfig angelegt, also wenn Du eine neue mailbox anlegst, dann wartest bis im monitor der eintrag aus der jobqueue entfernt ist und dann nachsiehst, ob das maildir existiert?


Nein, deswegen dachte ich ja auch das es ein Konfigurationsfehler meinerseits mit Dovecot/Postfix ist und diese beiden eigentlich die Verzeichnisse anlegen sollten...

Habe dem Verzeichnis (also /var/vmail) schon volle Rechte für alles eingeräumt aber tun tut sich nichts...

EDIT: Okay E-Mail ist raus!


----------



## Till (9. Feb. 2010)

Schalte mal debugging in ispconfig ein, dann leg ein neues postfach an und poste mal, was er ins ispconfig log oder auf die shell schreibt, wenn du server.sh aufrufst. An den rechten sollte es nicht liegen denke ich, da das server.sh script als root läuft.


----------



## neurex (9. Feb. 2010)

Okay mach ich gleich mal aber vorher noch kurz hast du meine E-Mail gekriegt? Weil irgendwie hab ich ne rejectete im Eingang...


----------



## Till (9. Feb. 2010)

Zitat von neurex:


> Okay mach ich gleich mal aber vorher noch kurz hast du meine E-Mail gekriegt? Weil irgendwie hab ich ne rejectete im Eingang...


Ja danke, die hab ich bekommen. Hatte es nur noch nicht geschafft zu antworten


----------



## neurex (9. Feb. 2010)

Zitat von Till:


> Schalte mal debugging in ispconfig ein, dann leg ein neues postfach an und poste mal, was er ins ispconfig log oder auf die shell schreibt, wenn du server.sh aufrufst. An den rechten sollte es nicht liegen denke ich, da das server.sh script als root läuft.


Also hab zwar in der config.inc.php den Loglevel auf 0 gesetzt aber schreiben tut er in die Logdatei trotzdem nichts.

Beim aufruf der server.sh bekomme ich nur ein "finished."


----------



## Till (9. Feb. 2010)

Du setzt ja eine SV Version ein, da wird das in den Server settings eingestellt und nicht mehr über die config Datei.


----------



## neurex (9. Feb. 2010)

Ah okay... okay hier die Logs:



> 09.02.2010-18:05 - DEBUG - Set Lock: /usr/local/ispconfig/server/temp/.ispconfig_lock
> 09.02.2010-18:05 - DEBUG - Found 1 changes, starting update process.
> 09.02.2010-18:05 - DEBUG - Call function 'user_insert' in plugin 'mail_plugin' raised by event 'mail_user_insert'.
> 09.02.2010-18:05 - DEBUG - Created Directory: /var/vmail/work.net
> ...


Diese Verzeichnisse werden aber nicht angelegt.


----------



## Till (9. Feb. 2010)

Und Du hast das server.sh Script auch wirklich als root ausgeführt? Mit sudo geht es nämlich nicht.

Außerdem schau bitte mal nach, ob das dovecote maildirmake auch bei Dir installiert ist und im pfad liegt mit:

which maildirmake

und poste bitte auch mal die Ausgabe von:

ls -la /var/vmail


----------



## neurex (9. Feb. 2010)

Also ich hab bei den Logs oben das server.sh Script überhaupt nicht ausgeführt. Das hab ich ISPC3 überlassen. Ansonsten führe ich es immer unter dem root-User aus.

Folgende Ausgaben:



> linux:~ # which maildirmake
> which: no maildirmake in (/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin)


Hier wird der Fehler sitzen aber wo bekomme ich das Teil her (hab grad auf der Dovecot Webseite nachgesehen aber nichts gefunden) und wo muss es wie hin?



> linux:~ # ls -la /var/vmail
> total 16
> drwxrwxrwx  3 root  root  4096 Feb  7 17:40 .
> drwxr-xr-x 16 root  root  4096 Feb  7 11:28 ..
> ...


----------



## Till (9. Feb. 2010)

Vielleicht ist maildirmake bei suse ein extra Paket. Such doch mal im software manager von yast.


----------



## Till (10. Feb. 2010)

Hi,

hab mir das bei debian gerade mal angesehen, maildirmake ist ein shellscript das debian für dovecot anlegt mit folgendem Inhalt. Es gehört wahrscheinlich garnicht mal zu dovecot. Lege es doch mal als /usr/local/bin/maildirmake bei Dir an (chmod +x nicht vergessen) und sieh ob es dann geht:


```
#!/bin/sh
#
# maildirmake.dovecot -- create maildirs
# Copyright (c) 2003, Jaldhar H. Vyas
# "Do what thou wilt" shall be the whole of the license.
#
dir="$1"
owner="$2"
if [ -z "$dir" ]; then
  echo "Must supply a directory path"
  exit 1
fi

if [ "$dir" = "-h" ]; then
  echo "usage: $0 directory [user]"
  exit 0
fi

umask 077
mkdir -p "$dir/cur" "$dir/new" "$dir/tmp" || exit 1
chmod 0700 "$dir" "$dir/cur" "$dir/new" "$dir/tmp" || exit 1

if [ -n "$owner" ]; then
  chown -R "$owner" "$dir" || exit 1
fi

exit 0
```
Notfalls müssen wir das für opensuse bei ispconfig beilegen.


----------



## neurex (10. Feb. 2010)

Nein tut sich leider nichts in die richtige Richtung 

Soweit ich mich errinnere war dieses maildirmake ja auch nur im courier vorhanden weil der das für irgendetwas benötigte... aber Dovecot hatte das nie. Pakete für dieses gibts bei openSUSE daher nichtmal im Build-Service...


----------



## Till (10. Feb. 2010)

Poste mal bitte die Ausgabe von:

which maildirmake


----------



## neurex (10. Feb. 2010)

/usr/local/bin/maildirmake


----------



## Till (15. Feb. 2010)

Ok. Ich denke ich werde das maildirmake als php Funktion nachbauen, um die Abhängigkeit zu dem Kommando los zu werden. Dann sollte es ja auch in OpenSuSE gehen.


----------



## neurex (15. Feb. 2010)

Zitat von Till:


> Ok. Ich denke ich werde das maildirmake als php Funktion nachbauen, um die Abhängigkeit zu dem Kommando los zu werden. Dann sollte es ja auch in OpenSuSE gehen.


Das ist wohl einer der besten Wege. Dann benötigt man dies unter keiner Distro mehr...

Was mich aber wundert ist das Dovecot die Verzeichnisse selbst anlegt wenn es userdb static ist aber nicht wenn es userdb sql ist... wo ist denn da der Sinn dahinter


----------



## Till (16. Feb. 2010)

> Was mich aber wundert ist das Dovecot die Verzeichnisse selbst anlegt  wenn es userdb static ist aber nicht wenn es userdb sql ist... wo ist  denn da der Sinn dahinter


Das verstehe ich auch nicht. Müsste man vermutlich mal die dovecot Entwickler fragen, vielleicht haben sie diese Konfigurationsmöglichkeit im code vergessen.


----------



## Till (23. Feb. 2010)

Dovecot Support für OpenSuSE ist jetzt im SVN.


----------



## neurex (23. Feb. 2010)

Zitat von Till:


> Dovecot Support für OpenSuSE ist jetzt im SVN.


Okay danke ich werde es gleich oder morgen austesten 

Gut, ist dann gleich geworden. Also davon abgesehen das der Installer die scheinbar "üblichen" Fehlermeldungen ausgibt muss ich sagen hat die Implementierung sehr gut funktioniert. Die Verzeichnisse werden nun umgehend angelegt, die Welcomemail kann per IMAP/POP3 abgerufen werden und das senden an Dovecot über Postfix klappt auch wunderbar...

Nur wie du das Problem mit den UID und GID von vmail gelöst hast muss ich mir nochmal ansehen...


----------



## Till (24. Feb. 2010)

> Nur wie du das Problem mit den UID und GID von vmail gelöst hast muss  ich mir nochmal ansehen...


Eines der Probleme, warum keine maildirs angelegt wurden lag in dem vmail User, den es seit neuestem bei opensuse gibt. Der hat falsche Parameter für ISPConfig, daher wird er jetzt automatisch geändert, so dass es passt.

Und welche Fehlermeldungen bekommst Du? bei mir geibt es keine. Sollten es php deprecatde warnings sein, dann ist der error level falsch eingestellt in der php.ini.


----------



## neurex (24. Feb. 2010)

Zitat von Till:


> Und welche Fehlermeldungen bekommst Du? bei mir geibt es keine. Sollten es php deprecatde warnings sein, dann ist der error level falsch eingestellt in der php.ini.


Nein, ich bekomme keine Fehlermeldungen. Mir ging es nur darum warum nun doch UID 5000 und GID 5000 funktioniert


----------

