ISPConfig 3: Externer Mailserver

neurex

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

PHP:
    //** 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 ;)
 

neurex

Member
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

Administrator
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

Member
Guter Tipp. Die Installation läuft schonmal durch:

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]: 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 ;)
 
Zuletzt bearbeitet:

Till

Administrator
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

Member
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...
 
Zuletzt bearbeitet:

Till

Administrator
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

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

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';
$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

Administrator
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

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

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

Administrator
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

Member
Ä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

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

Code:
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...
 
Zuletzt bearbeitet:

neurex

Member
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

Member
@ 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:


Damit wird IMAP und POP3 zugelassen sowie die SSL Varianten.



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.


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
user = vmail
}

client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}

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
mail_plugins = cmusieve
global_script_path = /home/vmail/globalsieverc
}

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:


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

Administrator
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

Member
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

Administrator
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

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

Werbung

Top