IT-Service GmbH 


agena.go-itservice.com

zuerst installiert auf Pentium 3 Standardrechner (armageddon II) mit Kingston KNE100, 120GB IDE mit Debian 3.1 Sarge, anschließend auf einen Compaq Pro Reliant DS 320 zum Einsatz beim Provider portiert.

Hardware:

Beginn Installation: armageddon II Standard mit Kingston KNE100, 80GB IDE
Umbau auf: Compaq Pro Reliant DS 320 mit 2x120GB IDE

Linux installieren:

Bootreihenfolge im BIOS: CDROM - HD0
Netzwerk erstmal ausstecken (wegen DHCP)
Mit Debian Sarge DVD 1 booten
	Language:	German<enter>
	Land:		Deutschland
	Tastatur:	deutsch
dann startet Hardwareerkennung und die DVD wird durchsucht... (dauert ca 1 Minute)
Debian installer wird geladen, Hardwareerkennung (Netzwerk)
	primäres Netz:	eth0 (KNE100)
	Konfiguration:	manuell (Auswahl)
	IP Adresse:	192.168.80.19
	Netmask:	255.255.255.0
	Gateway:	192.168.80.1
	DNS:		192.168.80.10
	Rechnername	agena
	Domäne:		ulm.go-itservice.de
Resthardwareerkennung
	Festplatte:	manuell
	10,0 GB 	hda1 	ext2 	/	
	71,5 GB 	hda2 	ext3 	/home
	0,9 GB 		swap
	40,0 GB 	hda4 	ext3 	
Bootloader MBR <ja> Die installation wird beendet, DVD ausgeworfen und um Neustart gebeten:
	Neustart 	<weiter>
Neustart
	Konfiguration	<ok>
	Uhrzeit:	GMT
	Zeitzone:	Berlin
	rootpasswort:	**** 		(und Bestätigung)
	User:		Guenther Obermaier
	Account:	go
	passwort:	**** 		(und Bestätigung)
	apt Zugriff:	cdrom		(vorher DVD 1 einlegen)
die Durchsuchung dauert ...
	2. CD		<ja>(vorher DVD 2 einlegen)
	weitere CD:	<nein>
Anschliessend wird versucht, Updates von security.debian.org zu holen (was ohne Netz fehlschlägt). DVD 1 wieder einlegen.
Installieren von Software:
	manuelle Paketauswahl
Pakete installieren ("g")
	Mailserver:	nur lokal (alt: Internetserver)
	Mails root:	root
Nach der Grundinstallation aptitude starten:
# aptitude
nicht installierte Pakete auswählen, am besten über "Suche":
	+ amavisd-new
	+ apache2-mpm-prefork 
	+ awstats 
	+ bind9
	+ catdoc (wegen xls2csv)
	+ clamav-daemon
	+ courier-authdaemon
	+ courier-authmysql
	+ courier-base
	+ courier-imap
	+ courier-imap-ssl
	+ courier-pop-ssl
	+ courier-pop
	+ courier-ssl
	+ cryptsetup
	+ debconf-utils
	+ fetchmail
	+ hdparm
	+ laptop-mode-tools
	+ imagemagix
	+ joe
	+ ldap-utils
	+ libapache2-mod-perl
	+ libapache2-mod-php4
	+ libapache2-mod-proxy-html 
	+ libauthen-sasl-cyrus-perl
	+ libauthen-sasl-perl
	+ libgsasl7
	+ libnet-ip-perl
	+ libsasl2
	+ libsasl2-modules
	+ libsasl2-modules-sql
	+ lynx
	+ mcrypt	
	+ mdadm	
	+ mysql client 4.1	
	+ mysql server 4.1
	+ ntpdate
	+ ntp-server
	+ openssl
	+ openvpn
	+ perlmodule		(siehe Allgemein zu "Sarge")
	+ pop-before-smtp	(inzwischen obsolet)
	+ php4 			(incl diverser Module, siehe Allgemein zu "Sarge")
	+ phpldapadmin
	+ phpmyadmin
	+ postfix
	+ postfix-tls
	+ postfix-mysql
	+ postgrey
	+ restartd
	+ rsh-redone-client
	+ rsync
	+ slapd
	+ smssend
	+ spamassassin
	+ spamc
	+ squid
	+ squidguard
	+ squirrelmail
	+ squirrelmail-locales
	+ ssh
	+ sysutils		(wegen dos2unix)
	+ usermin 		(+ Module)
	+ webmin 		(+ Module)

Konfigurieren des Systems

in /etc/apt/sources.list
deb http://security.debian.org/ sarge/updates main
deb http://debian.uni-essen.de/debian/ sarge main contrib
statt der DVDs eintragen. In aptitude erscheint als erstes eine Fehlermeldung, aber mit "u" für Update geht das anschliessend jedenfalls.
In der /etc/apt/sources.list war vorher statt sarge uebrigens stable eingetragen, was bis April 2007 oder so funktionierte. Dann wurde aber ETCH stable und ich bekam einen Versionsmischmasch auf dem Server, wodurch z.B. php4-gd ec nicht mehr richtig funktionierte! Das besonders tückische ist, dass bei den fehlerhaften Updates Einträge aus der /etc/php4/apache2/php.ini gelöscht wurden, welche nach der richtigen Umstellung fehlten und eine Verwendung der betroffenen PHP4 Module weiterhin verhinderten.(siehe goweb)
Datei /root/daily5h anlegen, dort ntpdate ec eintragen, alles was als cronjob nachts um 5h laufen soll. chmod 700 /root/daily5h vor crontab -e nicht vergessen!
in /etc/fstab als Bootparameter noatime für die Systemplatte angeben.
Für die User root und go, Verzeichniss .ssh anlegen, keys von antares und wega dort in die authorized_keys einfügen.
ntp: ist automatisch konfiguriert und wird unter Sarge direkt (für localhost) benutzt. Sollen andere Rechner den Server beutzen: /etc/ntp.conf anpassen.
Programm crypt von agena-alt (/root/crypt) holen und nach /root kopieren.
Gruppen obi und gball (clamav) anlegen.
Script newuser von agena-alt holen und laufen lassen.
Benutzerdaten (/home/USER) via tar oder scp holen und auspacken.

sshd

damit Zugang auf agena auch von Netzen aus möglich ist, bei denen eine (Firmen)Firewall den Internetzugang via ssh auf Port 22 verhindert, lauscht der sshd auf Agena auch auf Port 563, das ist der Port für "secure News". Dazu muß in der /etc/ssh/sshd_config nur eine weitere Port Zeile eingetragen werden. Port 443 (https) wäre noch besser, der ist fast überall frei, allerdings läuft der Apache auf agena auch auf Port 443, so daß diese Option nicht möglich ist:
Port 22
Port 563

Apache 2

sites (nur einzelne virtual Host Abschitte) in /etc/apache2/sites-available anlegen und dann einen link aus /etc/apache2/sites-enabled auf das Konfigfile anlegen. Wenn der Apache mit der Endung "php" nichts anfangen kann, fehlen wahrscheinlich im /etc/apache2/mods-enabled die beiden PHP -Links (php4.load -> /etc/apache2/mods-available/php4.load, php4.conf -> /etc/apache2/mods-available/php4.conf), dann ist das PHP4 Unterstützung nicht eingeschaltet. Diese dann via aptitude installieren

goweb
Dateien nach /home/go/httpd spielen (sollte von altem Rechner her noch tun) im data/tools Ordner bei jeder installierten Seite das Skript ./bootstrap -U go -P PASSWD SITE aufrufen, dann die vorher mit table2csv exportierten Daten wieder mit ./csv2table all SITE einspielen. Das Bootstrap Skript erzeugt die DB und sorgt für den grant auf die Tabellen. Falls PHP4 nicht auf mysql verbinden kann, die /etc/php4/apache2/php.ini kontrollieren, dort muß ganz unten stehen:
extension=ldap.so
extension=imagick.so
extension=imap.so
extension=mcrypt.so
extension=mysql.so
extension=gd.so

Apache 2 mit https

Zertifikat erzeugen, der Servername muß mit dem CommonName im Zertifikat übereinstimmen! Soll die Domäne www.dummy.de via https erreichbar sein, muß der Eintrag in der /home/go/httpd/httpd.include so aussehen:
<VirtualHost *:443>
        SSLEngine On
        SSLCipherSuite HIGH:MEDIUM
        SSLCertificateFile    /etc/apache2/ssl/www.dummy.de.cert
        SSLCertificateKeyFile /etc/apache2/ssl/www.dummy.de.key
        SSLProtocol all
        ServerName      www.dummy.de
        DocumentRoot    /home/go/httpd/dummyssl
        DirectoryIndex  index.php index.html index.htm
</VirtualHost>
für Erreichbarkeit der Domain mit http ist ein weiterer Eintrag nötig:
<VirtualHost *:80>
        SetEnv XXURL  /www.dummy.de
        ServerName      www.dummy.de
        DocumentRoot    /home/go/httpd/dummy
        DirectoryIndex  index.php index.html index.htm
</VirtualHost>
Am oberen Ende der httpd.include steht:
Listen 443
NameVirtualHost *:80
NameVirtualHost *:443
Dann SSL Modul laden, Zertifikat erzeugen (genaueres siehe bei Postfix) und Apache neu starten:
# a2enmod ssl
# openssl req -new -outform PEM -out www.dummy.de.cert -newkey rsa:2048 -nodes -keyout www.dummy.de.key -keyform PEM -days 999 -x509
# /etc/init.d/apache2 force-reload
das openssl Kommando erzeugt ein für 999 Tage gültiges Zertifikat.
Apache für neue Webseite konfigurieren:
Neuen User anlegen: z.B. User nuser, Eintrag in Datei newuser analog zu bisherigen (oder mit useradd) anlegen, newuser starten. neue Gruppe mit UID = GID und selben Namen in /etc/group eintragen, den neuen User in die Gruppe aufnehmen und ebenso den User www-data. Unter diesem läuft der Apache, sonst kann dieser die Webseiten des Users nicht anzeigen. Die Zeile in der /etc/group sieht also so aus:
nuser:x:GID:nuser,www-data
Rechte setzen:
# chmod 750 /home/nuser 
# chown nuser:nuser /home/nuser
# mkdir /home/nuser/httpd
Default index.html oder index.php anlegen
Eintrag in der httpd.include hinzufügen. (siehe weiter oben, ab <VirtualHost *:80> ...) Apache neu starten

mysql

Zum Anmelden:
# mysqladmin -u root -p PASSWD
# mysql -u root -p PASSWD
Zu Beginn ist das Mysql-Passwort des root-Accounts leer, dies sofort ändern!
Tabellen für Postfix anlegen:
# mysql --user=root
mysql> create database maildb; 
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON maildb.* TO 'mail'@'localhost' IDENTIFIED by 'PASSWD'; 
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON maildb.* TO 'mail'@'%' IDENTIFIED by 'PASSWD'; 
mysql> exit; 
#

Postfix konfigurieren

Fragen bei Installation Postfix:
mail name: 		agena.go-itservice.com
akzeptierte Domains: 	agena.go-itservice.com, localhost 	(wird eh gelöscht)
Konfiguration ist in der /etc/postfix/main.cf, dort werden die virtuellen Email Adressen in mysql-Tabellen eingetragen ec.
# cp /etc/aliases /etc/postfix/aliases
Kontrollieren wegen Roots Mails, dann
# postalias /etc/postfix/aliases
User virtual für Mails an die virtuellen User anlegen:
# mkdir /var/spool/mail/virtual 
# groupadd virtual -g 5000 
# useradd virtual -u 5000 -g 5000 
# chown -R virtual:virtual /var/spool/mail/virtual
Konfig Files für Mysql anlegen:
/etc/postfix/mysql_mailbox.cf
/etc/postfix/mysql_uid.cf
/etc/postfix/mysql_gid.cf
/etc/postfix/mysql_alias.cf
/etc/postfix/mysql_domains.cf
Tabellen für Postfix in mysql anlegen:
# mysql -u mail -p PASSWD
mysql> CREATE TABLE `aliases` ( `pkid` smallint(3) NOT NULL auto_increment, `mail` varchar(120) NOT NULL default '', `destination` varchar(120) NOT NULL default '', `enabled` tinyint(1) NOT NULL default '1', PRIMARY KEY (`pkid`), UNIQUE KEY `mail` (`mail`) ) ; 
mysql> CREATE TABLE `domains` ( `pkid` smallint(6) NOT NULL auto_increment, `domain` varchar(120) NOT NULL default '', `transport` varchar(120) NOT NULL default 'virtual:', `enabled` tinyint(1) NOT NULL default '1', PRIMARY KEY (`pkid`) ) ; 
mysql> CREATE TABLE `users` ( `id` varchar(128) NOT NULL default '', `name` varchar(128) NOT NULL default '', `uid` smallint(5) unsigned NOT NULL default '5000', `gid` smallint(5) unsigned NOT NULL default '5000', `home` varchar(255) NOT NULL default '/var/spool/mail/virtual/', `maildir` varchar(255) NOT NULL default 'blah/', `enabled` tinyint(3) unsigned NOT NULL default '1', `change_password` tinyint(3) unsigned NOT NULL default '1', `clear` varchar(128) NOT NULL default 'ChangeMe', `crypt` varchar(128) NOT NULL default 'sdtrusfX0Jj66', `quota` varchar(255) NOT NULL default '', `procmailrc` varchar(128) NOT NULL default '', `spamassassinrc` varchar(128) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) );

Courier IMAP/POP

Datei /etc/courier/authdaemonrc ändern:
authmodulelist="authmysql"
Datei /etc/courier/authmysqlrc ändern, es dürfen keine Leerzeichen am Zeilenende sein! Felder anpassen:
MYSQL_SERVER localhost 
MYSQL_USERNAME mail 
MYSQL_PASSWORD arkon3 
MYSQL_PORT 0 
MYSQL_OPT 0 
MYSQL_DATABASE maildb 
MYSQL_USER_TABLE users 
# comment out this field, 
# as I now longer use the encrypted pw options 
#MYSQL_CRYPT_PWFIELD crypt 
MYSQL_CLEAR_PWFIELD clear 
MYSQL_UID_FIELD uid 
MYSQL_GID_FIELD gid 
MYSQL_LOGIN_FIELD id 
MYSQL_HOME_FIELD home 
MYSQL_NAME_FIELD name 
MYSQL_MAILDIR_FIELD concat(home,'/',maildir) 
MYSQL_WHERE_CLAUSE enabled=1
in den Dateien:
/etc/courier/imapd
/etc/courier/imapd-ssl
/etc/courier/pop3d
/etc/courier/pop3d-ssl
kontrollieren, ob der Daemon auch gestartet wird, der Eintrag sieht z.B. so aus:
IMAPDSTART=YES

Amavisd-new

Konfiguration in: /etc/amavis/amavisd.conf dort im array @av_scanner und @av_scanner_backup alle Zeilen bis auf die 5 von clamav herauslöschen. Vorsicht, daß Endklammern geschlossen werden. andere Änderungen: Host/Domain setzen und Run-User, default ist amavis, der muß auf virtual geändert werden! Dann Verzeichnisse an diesen übergeben (bzw das tmp erst anlegen):
# cd /var/lib/amavis 
# mkdir tmp
# chown virtual:virtual tmp 
# chown virtual:virtual virusmails 
# chown -R virtual:virtual /var/run/amavis
Wichtig, auch /etc/init.d/amavis muß angepasst werden (Zeile 31):
chown -c -h "virtual:virtual" "$4"
Dann die /etc/postfix/master.cf ändern, genauer 2 Zeilen ändern und 3 Dienste dazufügen:
smtp      inet  n       -       -       -       -       smtpd -o cleanup_service_name=pre-cleanup
cleanup   unix  n       -       -       -       0       cleanup -o mime_header_checks= -o nested_header_checks= -o body_checks= -o header_checks=
amavis    unix  -       -       -       -       2       smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n  -       -       -       -       smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o strict_rfc821_envelopes=yes -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1001
pre-cleanup unix n     -        -       -       0      cleanup -o virtual_alias_maps= -o canonical_maps= -o sender_canonical_maps= -o recipient_canonical_maps= -o masquerade_domains=
in die /etc/postfix/main.cf 2 Zeilen einfügen:
content_filter = amavis:[127.0.0.1]:10024
#receieve_override_options = no_address_mappings

Clamav

bei Nachfrage: 		als demon
Server: 		db.de.clamav.net
Proxy: 			-
Notify clamd: 		ja
Startuser, in /etc/clamav/clamd.conf:
User: virtual
Rechte und Gruppe anpassen:
# chown virtual:virtual /var/run/clamav 
# adduser virtual amavis
Um alle 6 Stunden nach neuen Virenpattern zu suchen: in der /etc/clamav/freshclam.conf folgendes eintragen:
Checks 4

Cyrus SASL

folgendes in die /etc/postfix/main.cf einfügen:
# modify the existing smtpd_recipient_restrictions 
smtpd_recipient_restrictions = reject_unauth_pipelining, 
	permit_mynetworks, permit_sasl_authenticated, 
	reject_non_fqdn_recipient, reject_unauth_destination, 
	check_policy_service inet:127.0.0.1:60000, permit 
# modify the existing smtpd_sender_restrictions 
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, 
	reject_non_fqdn_sender, reject_unknown_sender_domain, 
	reject_unauth_pipelining, permit 
# then add these 
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =  
Datei /etc/postfix/sasl/smtpd.conf anlegen:
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login cram-md5 digest-md5
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mail
sql_passwd: arkon3
sql_database: maildb
sql_select: select clear from users where id='%u@%r' and enabled = 1

courier und TLS

in pop3d steht normalerweise auskommentiert folgende Zeile, in imapd ist sie bei instaliertem SASL anscheinend aktiv:
POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"

Verschlüsselung

zuerst Keyfiles generieren:
# cd /etc/postfix
# openssl req -new -outform PEM -out postfix.cert -newkey rsa:2048 -nodes -keyout postfix.key -keyform PEM -days 999 -x509
das Kommando ergibt folgenden Dialog:
Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: Baden-Wuerttemberg
Locality Name (eg, city) []: Ulm
Organization Name (eg, company) [Internet Widgits Pty Ltd]: go-itservice
Organizational Unit Name (eg, section) []: admin
Common Name (eg, YOUR name) []: agena.go-itservice.com
Email Address []: 04@go-itservice.com
Der fett markierte Eintrag muß exakt der Name des Servers im DNS sein! diese Keyfiles in der /etc/postfix/main.cf einfügen:
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/postfix.cert
smtpd_tls_key_file = /etc/postfix/postfix.key
smtpd_data_restrictions = reject_unauth_pipelining
in der master.cf sind 3 Zeilen einzufügen (oder einzukommentieren)
tlsmgr unix - - n 300 1 tlsmgr 
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes 
587 inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes 
Zertifikat für courier erzeugen:
# openssl req -x509 -newkey rsa:1024 -keyout imapd.pem -out imapd.pem -nodes -days 999

Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: Baden-Wuerttemberg
Locality Name (eg, city) []: Ulm
Organization Name (eg, company) [Internet Widgits Pty Ltd]: go-itservice
Organizational Unit Name (eg, section) []: admin
Common Name (eg, YOUR name) []: agena.go-itservice.com
Email Address []: 04@go-itservice.com
wie bei Postfix wird das Zertifikat nicht akzeptiert wenn nicht genau der DNS Name des Servers bei dem "Common Name" eingetragen wird.
sowohl in der imapd-ssl als auch in der pop3d-ssl wird auf das selbe Zertifikat verwiesen:
TLS_CERTFILE=/etc/courier/imapd.pem
defaultmässig ist das nur bei imapd-ssl eingestellt.

Daten in maildb einfügen

Zuerst werden die lokalen Domänen angelegr, dann einige default Aliases, möglicherweise kann man hier einige weglassen, anschliessend der root User
mysql> INSERT INTO domains (domain) VALUES ('localhost'), ('localhost.localdomain');
mysql> INSERT INTO aliases (mail,destination) VALUES ('postmaster@localhost','root@localhost'), ('sysadmin@localhost','root@localhost'), ('webmaster@localhost','root@localhost'), ('abuse@localhost','root@localhost'), ('root@localhost','root@localhost'), ('@localhost','root@localhost'), ('@localhost.localdomain','@localhost');
mysql> INSERT INTO users (id,name,maildir,clear) VALUES ('root@localhost','root','root/','*****');
Daten für echte Domains einfügen, z.B. für uligotchi.de, der local User ist lokal, während uli eine Weiterleitung ist.
mysql> INSERT INTO domains (domain) VALUES ('uligotchi.de'); 
mysql> INSERT INTO aliases (mail,destination) VALUES ('local@uligotchi.de','local@uligotchi.de');
mysql> INSERT INTO aliases (mail,destination) VALUES  ('uli@uligotchi.de','uli@ulrike-winker.de');
mysql> INSERT INTO users (id,name,maildir,clear) VALUES ('local@uligotchi.de','local','local/','local*');
Maschinenname auf agena.go-itservice.com einstellen.

Test der Mailinstallation

Test smtp
alle Dienste stoppen:
# /etc/init.d/courier-imap stop
# /etc/init.d/courier-imap-ssl stop
# /etc/init.d/courier-pop stop
# /etc/init.d/courier-pop-ssl stop
# /etc/init.d/postfix stop
# /etc/init.d/amavis stop
# /etc/init.d/spamassassin stop
# /etc/init.d/clamav stop
# /etc/init.d/mysql stop 
Testen:
# netstat -tnp
Content checks disablen: /etc/postfix/master.cf wieder aktivieren, Zeilen mit -o auskommentieren:
smtp inet n - n - - smtpd 
cleanup unix n - - - 0 cleanup 
Zeilen mit content_filter auskommentieren in /etc/postfix/main.cf
# content_filter = amavis:[127.0.0.1]:10024
Mysql und postfix Log mit tail in zwei Terminals verfolgen:
# tail -f /var/log/mysql.log 
# tail -f /var/log/maillog.info 
Dann MySQL und Postfix starten:
# /etc/init.d/mysql start 
# /etc/init.d/postfix start 
wenn beide Laufen, telnet auf Port 25 zum Test des Postfix:
> telnet localhost 25
EHLO wega.ulm.go-itservice.de
	...
MAIL FROM: go@wega.ulm.go-itservice.de
	OKimap
RCPT TO: local@uligotchi.de
	OK
data
...
.
quit
Falls kein Eintrag im mysql.log kommt, kanns auch an den Logeinstellungen liegen: in /etc/mysql/my.cnf folgende Zeile einkommentieren. Vorsicht, wieder entfernen, bremst ohne Ende!
log             = /var/log/mysql.log
Kontrollieren, ob unter /var/spool/mail/virtual/local/new die neue Mail angekommen ist. Wenn ja, Test mit falschem Recipient, diese wird abgelehnt!
Test imap
Analog zu smtp redet man nun mit dem IMAP server:
> telnet localhost 143 
worauf sich der IMAP Server meldet, und mit dem Pop Server:
> telnet localhost 110
USER local@uligotchi.de
PASS local*
STAT		
LIST		(Mails auflisten)
RETR 1		(Mail ansehen)
RSET		(sonst ist die Mail gelöscht!)
QUIT		Logout 

Konfiguration Mozilla als Client

Email account anlegen:
	Name:			Testname
	Mailadresse:		test@uligotchi.de
	Servertyp: 		PoP oder IMAP (beide möglich)
	Server Eingang:		agena.go-itservice.com
	Server Ausgang:		agena.go-itservice.com
	Benutzername:		test@uligotchi.de
	Account Name:		test@uligotchi.de
Mail und News Account Einstellungen: Server-Einstellungen:
	Sichere Verbindung: 	Ja (Haken setzen)
Der Rest paßt, der Port ändert sich auf 995, dieser muß an der lokalen Firewall freigeschaltet sein!
Server für ausgehende Nachrichten:
	Server Name: 		agena.go-itservice.com
	Name und Passw. verw.:	Ja (Haken setzen)
	Benutzername:		test@uligotchi.de
	Sichere Verb. verw.:	TLS
Beim ersten Aufruf und Versenden muß das Zertifikat von agena akzeptiert werden!

IP Adresse ändern

Manuelles Einstellen der IP Adresse: in /etc/networks/interfaces
auto eth0
iface eth0 inet static
		address 192.168.80.11
		netmask 255.255.255.0
		network 192.168.80.0
		broadcast 192.168.80.255
		gateway 192.168.80.1
		dns-nameservers 192.168.80.10
		dns-search ulm.go-itservice.de

slapd, phpldapadmin, ldaptools konfigurieren

In den Dateien /etc/ldap/slapd.conf
suffix	"o=go-itservice, c=de"
rootdn	"cn=admin, o=go-itservice, c=de"
rootpw	PASSWD
in der /etc/ldap/ldap.conf:
BASE		o=go-itservice,c=de
HOST		agena.ulm.go-itservice.de
PORT		389
SIZELIMIT		4096
Sizelimit muß wegen dem automatischen Import durch adressen2ldap (von goweb) auf einen Wert > Zeilenzahl der adressen.xls Datei gesetzt werden! in der /etc/phpldapadmin/config.php:
$servers[$i]['name'] = 'agena'; 
$servers[$i]['host'] = '127.0.0.1';
$servers[$i]['base'] = 'o=go-itservice, c=de';
$servers[$i]['port'] = 389;
$servers[$i]['auth_type'] = 'config';
$servers[$i]['login_dn'] = 'cn=admin, o=go-itservice, c=de';
$servers[$i]['login_pass'] = 'PASSWD';
slapd und apache2 neu starten, voila!

ntp-server konfigurieren

in der /etc/ntp.conf folgende Zeile eintragen oder anpassen: broadcast 192.168.80.255

phpmyadmin konfigurieren

Wenn im Apache2 das sites-enabled/default gelöscht wurde (so wie es in der obigen Installation ist) ist zwar der phpldapadmin noch verfügbar, nicht aber der phpmyadmin. In dem Verzeichnis /etc/apache2/conf.d können weitere Teile zur httpd.conf gefügt werden, das dort vorhandene phpldapadmin (ist ein Link auf /etc/phpldapadmin/apache.conf) sorgt nämlich dafür, daß der LDAPAdmin noch läuft. Also diese Datei kopieren, nach phpmyadmin.conf umbenennen und in der Datei den Text phpldapadmin durch phpmyadmin ersetzen. apache2 neu Starten, geht.

OpenVPN

auf Client installieren (in dem Fall: wega:192.168.80.10), bei Nachfrage: TUN/TAP Device anlegen lassen!
# cd /etc/openvpn/
# openvpn --genkey --secret 192.168.80.vpn.key
die Datei vpn.conf anlegen:
remote agena.go-itservice.com
dev tun
ifconfig 10.0.0.1 10.0.0.2
secret /etc/openvpn/192.168.80.vpn.key
tun-mtu 1500
fragment 1500
mssfix
Start mit:
# openvpn --config /etc/openvpn/vpn.conf
Keyfile mit scp auf Server agena, kopieren, OpenVPN analog auf agena installieren. Da dort mehrere Clients existieren können, heißt die Konfigurationsdatei: 192.168.80.conf Start auf agena:
# openvpn --config /etc/openvpn/192.168.80.conf
Jetzt müssen sich die Demons sehen ...
Da zwischen wega und agena Firewall(s) sind, müssen dort "Löcher gebohrt" werden.

usermin/webmin einrichten

Usermin und Webmin werden über je eine Datei gesteuert, /etc/webmin/miniserver.conf:
Listen 8081
Port 8081
allow: 192.168.80.0	(zum Installieren)
/etc/usermin/miniserver.conf

Listen 8082
Port 8082
allow: <Zeile löschen>
# /etc/init.d/webmin restart
# /etc/init.d/usermin restart
Webmin aufrufen, als root anmelden und Usermin Module freischalten: available-Modules, Dort Mail Forwarding, Read Mail, Change Password, GnuPG Encryption freischalten. User können damit administrieren.

restartd

nachzustartende Prozesse in /etc/restartd.conf eintragen

UMBAU Server: hdc => hde wegen Compaq DS 320

Bei dem Compaq Rechner hat die erste IDE Master Platte nicht hdc sondern hde RAID1 einrichten
Partitionstabelle von hde nach hdg kopieren und Partitionstyp auf Linux raid autodetect (=FD) ändern, anschliessend Datenarray anlegen, wobei die Partition hde2 noch in Ruhe gelassen wird, da noch Daten drauf sind, ist ja die hdc2 von vorher!:
# sfdisk -d /dev/hde | sed -e 's/=8[23]/=fd/g' | sfdisk /dev/hdg
# mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/hdg2
in /etc/mdadm/mdadm.conf eintragen, damit es nach dem booten wieder zur Verfügung steht:
DEVICE /dev/hde2 /dev/hdg2
ID des md-Devices an Datei hängen, Filesystem Formatieren und Mounten und Daten kopieren:
# mdadm --brief --detail --verbose /dev/md2 >> /etc/mdadm/mdadm.conf
# mkfs.ext3 /dev/md2
# mount /dev/md2 /mnt
# cd /home; find -depth -print | cpio -pdauV /mnt
Den Raidarray in /etc/fstab statt /dev/hde2 eintragen und neu booten.
Falls alles glatt gegangen ist, jetzt hde2 mit in den Array nehmen:
# mdadm --add /dev/md2 /dev/hde2
Die Synchronisation kann man unter /proc/mdstat beobachten z.b. mit cat /proc/mdstat. Abschliessend noch die /dev/hde2 in /etc/mdadm/mdadm.conf eintragen, statt der missing Partition. mdadm.conf
ARRAY /dev/md2 ... devices=/dev/hdg2,/dev/hde2

Array Swap

# mdadm --create /dev/md3 --level=1 --raid-devices=2 missing /dev/hdg3
in /etc/mdadm/mdadm.conf eintragen, damit es nach dem booten wieder zur Verfügung steht:
DEVICE /dev/hde3 /dev/hdg3
ID des md-Devices an Datei hängen:
# mdadm --brief --detail --verbose /dev/md3 >> /etc/mdadm/mdadm.conf
Filesystem Formatieren und Mounten, aidarray in /etc/fstab statt /dev/hde3 eintragen und neu booten.
# mkswap /dev/md3
# mdadm --add /dev/md2 /dev/hde2
Falls alles glatt gegangen ist, hde3 mit in den Array nehmen:
ARRAY /dev/md3 ... devices=/dev/hdg3,/dev/hde3

Array System

Da man davon Booten muß, braucht es das md und raid1 Kernelmodul schon beim Booten. md und raid1 in /etc/modules und /etc/mkinitrd/modules eintragen. Jetzt wird ein neues initrd gebaut:
# mkinitrd -o /boot/initrd.img-2.6.8-raid /lib/modules/2.6.8-3-686
In /boot/grub/menu.lst muß noch das sda1 durch md1 ersetzt werden und die alte durch die neue initrd ersetzt werden. Dann den Array der Systemplatte anlegen und dabei hde1 noch in Ruhe lassen:
# mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/hdg1
in /etc/mdadm/mdadm.conf eintragen, damit es nach dem booten wieder zur Verfügung steht:
DEVICE /dev/hde1 /dev/hdg1
ID des md-Devices an Datei hängen, Filesystem Formatieren und Mounten und Daten kopieren:
# mdadm --brief --detail --verbose /dev/md1 >> /etc/mdadm/mdadm.conf
# mkfs.ext3 /dev/md1
# mount /dev/md1 /mnt
# cd /; find -depth -print | cpio -pdauV /mnt 
statt der letzten Zeile geht auch cd /; find . -xdev -print | cpio -dvpm /mnt oder mit rsync Raidarray in /etc/fstab statt /dev/hde1 eintragen und neu booten.

Grub auf der zweiten Platte installieren

Wenn die erste Platte ausfällt, fällt auch der MBR aus und es kann nicht mehr gebootet werden. Auch zum Booten des Rechners falls die hde1 noch nicht im Verband ist, wird der Grub gebraucht.(???). Deshalb wird der Grub-Bootsektor auf die zweite Platte installiert werden. Beim Plattenaustausch muß das wiederholt werden.
grub
> device (hd0) /dev/hdg
> root (hd0,0)
> setup (hd0)
Neu booten. Falls alles glatt gegangen ist, hde1 mit in den Array nehmen:
# mdadm --add /dev/md1 /dev/hde1
und die /etc/mdadm/mdadm.conf anpassen (2.Device in der Array Zeile bei hdg1).
ARRAY /dev/md1 ... devices=/dev/hdg1,/dev/hde1
Wenn der Rechner dann von der md1 bootet nochmal ein frisches initrd bauen und /boot/grub/menu.lst kontrollieren und gegebenenfalls anpassen:
# mkinitrd -o /boot/initrd.img-2.6.8-raid /lib/modules/2.6.8-3-686
Neu booten, jetz sollten alle Arrays korrekt laufen...

Paketfilter mit iptables

Damit der Rechner etwas besser geützt ist, verhindert ein Paketfilter Verbindungsaufnahmen auf den Server agena und lässt nur einige Ports, wie POP, SMTP, HTTP und HTTPS offen.
Damit man sich bei Änderungen an der Datei fwstart nicht versehentlich dauerhaft selber aussperrt, wird die Firewallregel alle 24h für 5 Minuten durch einen Defaultfiltersatz ersetzt.

Server kommt zum Provider

umstellen der IP Adresse auf den Provider Hetzner
in /etc/network/interfaces
iface eth0 inet static
        address	213.133.101.163
        netmask	255.255.255.224
        network	213.133.101.160
        broadcast	213.133.101.191
        gateway	213.133.101.161
        dns-nameservers	213.133.98.98, 213.133.99.99
        dns-search	go-itservice.com
Dateien anpassen: /etc/hosts kontrollieren
/etc/resolv.conf
/etc/init.d/fwstart
/etc/openvpn/*.conf
(auf agena UND wega)!

neue Domain und User anlegen

User für Domain anlegen, am besten neuen Eintrag in der /root/newuser
gleichnamige Gruppe anlegen
www-data User in neue Gruppe aufnehmen
Domain,User und Alias in maildb anlegen, am Einfachsten mit phpmyadmin
in /home/NEWUSER Verzeichnis httpd anlegen
Verzeichnis in /etc/apache2/sites-enabled/go-httpd.include aufnehmen (ec mit port 80 und 443)
Optional:
Datenbank anlegen:
mysql> create database NEWDB;
mysql> grant create,delete,drop,index,insert,select,update,alter on NEWDB.* to NEWUSER@localhost identified by 'PASSWD';
in /root/backupdb eintragen

Mozilla als Mailclient

Folgende Einstellungen sind bei Mozilla nötig. Sinngemäß gilt dies für alle POP3/IMAP Clients.
Zu Beginn verwendet man am besten eine unverschlüsselte Verbindung, falls das funktioniert, ändert man die Einstellungen auf "Verschlüsselte Verbindung". Diese Verschlüsselung verhindert allerdings nur das Abhöhren der Verbindung zwischen dem Client-PC und agena z.B. über Eingriffe beim Internetprovider, nicht aber das Abhören der Mail, wenn sie von agena aus an den Zielrechner gesendet wird!
Um eine Mail "sicher" zu versenden, ist deren komplette Verschlüsselung vor Versand und beim Empfänger nötig. Dies kann z.B. durch Verwendung von Icedove,enigmail und OpenPGP geschehen.
Einstellungen Mail & Newsgroupsaccount
Servertyp: 		POP
Servername:		agena.go-itservice.com  
Port:			110 [default]
Benutzername		USERNAME@DOMAIN		(=Mailadresse, z.b. go@go-itservice.com)
sichere Verb. ben.:	nein/nie
sichere Authent.:	nein
Falls statt POP3 ein IMAP Zugang verwendet werden soll, dies beim Anlegen des Mailaccounts angeben und statt dem Port für POP3 (110) einfach den Port 143 angeben. Dieser sollte aber bei IMAP voreingestellt sein.
Einstellungen Server für ausgehende Nachrichten
Server: 		agena.go-itservice.com 
Port:			25 [default]
Name&Passwort:		JA			(sonst kommt "Greylist" Meldung und die Mail wird nicht gesendet)
Benutzername:		USERNAME@DOMAIN		(=Mailadresse, z.b. go@go-itservice.com)
sichere Verbindung:	nein		
Jetzt testhalber eine Mail an die eigene Adresse senden und über POP3 (oder IMAP) abholen. Falls das funktionierte, fogende Änderungen für eine verschlüsselte Kommunikation. Sichere Authentisierung muß auf "nein" bleiben.
Einstellungen Mail & Newsgroupsaccount
sichere Verbindung ben:	SSL		
Port:			995 [default]
ODER
sichere Verbindung ben:	TLS		
Port:			110 [default]
Einstellungen Server für ausgehende Nachrichten
sichere Verbindung ben:	TLS		


Folgende Anleitung habe ich noch im Internet zu Certification Authorities gefunden und angepasst. Nachdem ich es aber nicht auf Anhieb zum Laufen brachte, signierte ich die benutzten Zertifikate eben nicht mit einer CA, sondern habe die Zertifikate für postfix und https ec. einfach wie oben erzeugt!
CA einrichten:

agena:~/ca# openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 7300
Generating a 1024 bit RSA private key
....................++++++
......................++++++
writing new private key to 'cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Verify failure
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
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]: DE
State or Province Name (full name) [Some-State]: Baden-Wuerttemberg
Locality Name (eg, city) []: Ulm
Organization Name (eg, company) [Internet Widgits Pty Ltd]: go-itservice
Organizational Unit Name (eg, section) []: admin
Common Name (eg, YOUR name) []: G.Obermaier
Email Address []: 04@go-itservice.com

chmod 600 cakey.pem

Sie können nun ausprobieren, ob sie den Schlüssel mit der Passphrase wieder öffnen können:
openssl rsa -in cakey.pem -noout -text

3. Schlüssel für das Serverzertifikat erzeugen
Nachdem wir nun eine eigene CA haben, kann diese nun endlich für unseren Server ein 
Zertifikat herausgeben. Dazu erzeugen wir zunächst einen 2048 Bit langen RSA 
Schlüssel, der mit AES 128 verschlüsselt auf der Platte abgelegt wird 
(ja wirklich, auch hier wieder ein verschlüsselter Schlüssel). 
Die Passphrase muss diesmal nicht sonderlich geheim sein, da wir sie ohnehin im 
Anschluss wieder entfernen werden. OpenSSL lässt allerdings keine leere Phrase zu:

root@linux# openssl genrsa -out serverkey.pem -aes128 2048 -days 365
Generating RSA private key, 2048 bit long modulus
....+++
.......................................+++
e is 65537 (0x10001)
Enter pass phrase for serverkey.pem: jaja
Verifying - Enter pass phrase for serverkey.pem: jaja

So. Nun entfernen wir die Passphrase wieder. Warum? Der Serverdienst (Apache, Cyrus, etc.) muss 
schliesslich in der Lage sein, den Schlüssel ohne Ihr Zutun zu lesen. Oder wollen Sie 
bei jedem Booten des Rechners ein Passwort eingeben müssen?

root@linux# openssl rsa -in serverkey.pem -out serverkey.pem
Enter pass phrase for serverkey.pem: jaja
writing RSA key

4. Certificate Signing Request erzeugen
Der nächste Schritt zum eigenen Zertifikat ist ein CSR. Dies muß dann nur noch von 
der CA signiert werden. Hier sind wieder Angaben analog zum Erstellen der CA nötig, was 
oft Verwirrung stiftet. Die allgemeinen Daten kann man ggfl. gleich wie oben eingeben:

agena:~/ca# openssl req -new -key serverkey.pem -out req.pem -nodes
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]:DE
State or Province Name (full name) [Some-State]:Baden-Wuertemberg
Locality Name (eg, city) []:Ulm
Organization Name (eg, company) [Internet Widgits Pty Ltd]:go-itservice
Organizational Unit Name (eg, section) []:admin
Common Name (eg, YOUR name) []: agena.go-itservice.com
Email Address []: 04@go-itservice.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

/etc/ssl/openssl.cnf:

[ CA_default ]
dir             = .              # Where everything is kept
new_certs_dir   = $dir           # default place for new certs
private_key     = $dir/cakey.pem # The private key
RANDFILE        = $dir/.rand     # private random number file
default_days    = 3650           # how long to certify for

root@linux# echo 01 > serial
root@linux# touch index.txt

agena:~/ca# openssl ca -in req.pem -notext -out servercert.pem
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for /root/ca/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Dec 19 10:42:18 2006 GMT
            Not After : Sep  5 10:42:18 2026 GMT
        Subject:
            countryName               = DE
            stateOrProvinceName       = Baden-Wuerttemberg
            organizationName          = go-itservice
            organizationalUnitName    = admin
            commonName                = agena.go-itservice.com
            emailAddress              = 04@go-itservice.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                E9:FA:50:96:26:D7:5A:0D:88:E4:E4:AA:5E:E6:8A:4A:F7:BF:DB:F0
            X509v3 Authority Key Identifier:
                keyid:BD:AB:DF:91:5B:D7:D9:F1:13:9E:43:EF:A4:B0:58:CD:B0:08:23:A6
                DirName:/C=DE/ST=Baden-Wuerttemberg/L=Ulm/O=go-itservice/OU=admin/CN=G.Obermaier/emailAddress=04@go-itservice.com
                serial:C3:9D:D2:EE:3F:B1:0B:B7

Certificate is to be certified until Sep  5 10:42:18 2026 GMT (7200 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated