Jan 102012

Mein Bruder hat auf seinem Ubuntu Notebook chinesisch als Hauptsprache installiert. Klar, wir sprechen alle Chinesisch … nicht!

Jetzt hatte er mich gebeten etwas für ihn daran zu machen. Also musste erst Chinesisch durch z.b. Englisch ersetzt werden.

Leider müsste man in der GUI auch erkennen, welche chinesichen Zeichen denn jetzt dafür stehen, dass man die Sprache konfigurieren kann. Ich habe probeweise ein paar angeklickt, es kamen jedoch immer irgendwelche Dialoge mit noch mehr Chinesisch (im wahrsten Sinne des Wortes!).

Nach einer Internetrecherche, dank dieser Seite die Lösung:

  • eine Konsole aufrufen (die erkennt man an dem Konsolen-Icon)
  • sudo nano /etc/default/locale
  • ggf. User-passwort eingeben
  • eintragen:


  • speichern (Ctrl + O)
  • schließen (Ctrl + X)
  • System neustarten ( sudo reboot )

Nach dem Neustart sind wichtige Teile des Systems – bspw. die Menüleiste ganz oben – in Englisch. Das sollte es einem ermöglichen auch den Rest umzustellen … falls notwendig.

Andere Teile, bspw. FireFox bleiben allerdings in Chinesisch, und sind daher verteufelt schwer zu bedienen … so muss sich ein Analphabet vorkommen!

Jan 032012

For a newbie, it's a bit tricky to understand how to purge old content from Varnish. Here's a description of what works for me:

Add these code snippets to your Varnish configuration file, reload Varnish:

/etc/init.d/varnish reload

This will "install" the PURGE command. Modify the ACL (access control list) as appropriate. Mine is:

acl purge {
"varnish server IP";

Where you need to replace the Varnish server IP with the IP of your Varnish server.

Next, (thanks to this article!) an easy method from the command line of your Varnish server:

curl -X PURGE http://catfind.it/

Replace catfind.it with your URL. The -X tells curl to replace the GET method with the PURGE method. BTW, you could call the PURGE method anything you'd like, ie. CACTUS – just set up the VCL configuration appropriately.

If you want some other server to be able to purge, you need to add it to your ACL.

You need curl to be installed. It's easily done on Debian / Ubuntu via

apt-get install curl

(as root).

What about the other methods?

  • telnetting into the server (telnet localhost 80) does not work for me, as it drops the connection before I'm finished with typing. Probably there is a way to set up telnet to transmit a certain string, if you want to, share it with us here.
  • Purging using the admin CLI of Varnish NEVER worked for me. Either Varnish has changed it's interface in newer versions, or I need some further configuration to enable it. Again, if you know the ropes, please share your knowledge with us!

    varnishadm -T purge req.url == "/"


    Unknown request.
    Type 'help' for more info.

Oct 132011

Here are some pointers to useful tools and some solutions.

Good Geo IP location tool:

Reading large Zimbra log files:

/var/log/auth.log swamped by error messages (mail sudo: PAM adding faulty module: /lib/security/pam_smbpass.so):

This is an Ubuntu / Debian bug. Please follow this solution:

Zimbra admin guide (PDF):

Mar 222011

After doing a apt-get upgrade your Apache does not start / does not serve connections? Read on!

somesystem.root# /etc/init.d/apache2 start
Starting web server: apache2[Tue Mar 22 18:18:02 2011]
(98)Address already in use: make_sock: could not bind to address
no listening sockets available, shutting down
Unable to open logs

Binding to adress means accepting all connections. There is nothing wrong here, nor probably in the Apache setup files – which have been correct before.

The error can be caused by Apache 2 already running! Try ps awx to see all processes, look for Apache 2 and perhaps rotatelogs.

After killing the processes using kill -9 pid_one pid_two (replace pid_one pid_two with the appropriate process ids – you can specify multiple at once) try starting apache again (using apache2ctl -k start for instance).

This time Apache should start without problems. But it will not serve requests, and the Apache PID may not be written. (Thus, apache2ctl will assume that Apache is not yet running!)

Check your error log for the last entries. In my case the following entry was the key to fixing the problem:

PHP Warning: [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.6-1+lenny3. Rebuild it for your PHP version (5.2.6-1+lenny10) or download precompiled binaries.

in Unknown on line 0
PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0

PHP's error was blocking the whole Apache! The quick solution for this particular problem (yours may be different) was to edit /etc/php5/apache2/php.ini and comment the lines setting up eAccelerator. (You need to use ";" as comment character for this file).

After the fix, killing the running Apache process(es), and starting Apache again, it resumed normal operation.

Nov 262010

In Zimbra Release 6.0.6_GA_2324.DEBIAN5_64 UBUNTU8_64 FOSS edition I had the problem, that a zmcontrol status would always show the service stats as stopped, no matter how often you would stop and start all services. After reading a bit on the Zimbra forums, I managed to fix that.

Do (as root):

chown -R zimbra:zimbra /opt/zimbra/zmstat


These are the two commands you need to run. After that, su zimbra to become the user zimbra and zmcontrol stop and zmcontrol start your server. Voilá, zmcontrol status should now show the stats as running.

Apparently the problem is, that some directories stats tries to access are set up incorrectly with the owner root instead of Zimbra. The error is reported to randomly occur again, so you may need to repeat the chown part.

Also see these websites for further details:

Aug 302010

Obwohl Outlook Express bereits auf die maximale Wartezeit eingestellt ist, kommt es trotzdem bei manchen zu Timeout-Problomen.

(Original-Text auf italienisch: "il server ha interrotto la connessione in modo inatteso. …" = "Your server has unexpectedly terminated the connection. Possible causes for this include server problems, network problems, or a long period of inactivity. Account: 'account name', Server:'server', Protocol: POP3, Port 110, Secure (SSL); No, Error Number: 0x800CCC0F"

Eine Recherche bringt folgende Möglichkeiten zustande:

  • Outlook Express hat einen Bug, was bei bestimmten e-Mails (mit leerer Message-ID) zu Timeouts führt bzw. dazu, dass eine Mail immer und immer wieder geholt wird. Siehe dazu diesen Artikel.
  • Norton AntiVirus scannt einkommende UND abgehende Mails. Norton's Support schlägt vor, den Scan abzuschalten um das Problem zu lösen.
    Hier ist ein weiterer Artikel mit Überblick über Norton, McAffee, Trend-Micro.
  • Falls wir einen Exchange Server betreiben würden, hätte Microsoft auch einen Lösungsvorschlag.
  • Manchmal ist bei Outlook Express eingestellt, dass es die Internetverbindung automatisch trennen soll. Bell hat dazu eine Seite (auf Englisch).
Apr 162010


Please read my new article  Zimbra upgrade without tears before reading this article. It may save you a lot of work by fixing the cause of the problem instead of the symptoms!

And here is the original article:

The whole story started with the server suddenly not delivering mails anymore – in and outbound ones. For those who know the story: yes, it's the 15. of April. 1 of April would have been more appropriate, somehow.


The gist of the story: ClamAV wants users to upgrade to a newer version, so they stopped releases older than 0.95 artificially from working. Thus bringing this mail server (and probably quite a bunch of others, too) down.

So … the upgrade which we were planning to do anyways suddenly became necessary for the server to perform.

We were running Zimbra 5.0.11 on Debian 4, 64bit.

Zimbra 6 for Debian 4 is offered only in the 32bit flavour, which refuses to install on a 64bit platform.

So, we upgraded Debian 4 to Debian 5. (modify /etc/apt/sources.conf, run apt-get dist-upgrade. See Debian documentation for specifics).

Trying to install Zimbra 6.0.6 with the provided script failed – Perl / libperl is too "new" at version 5.10. It should be at version 5.8 – install.sh will not proceed.

Checking for suggested prerequisites…
FOUND: perl-5.8.8

After forcing a downgrade – look at this post for a how-to – the installer proceeded without problems up until a point where it failed throwing a Perl error without recovering.

/usr/bin/perl: symbol lookup error: /opt/zimbra/zimbramon/lib/x86_64-linux-gnu-thread-multi/auto/IO/IO.so: ndefined symbol: Perl_Istack_sp_ptr

# su zimbra
$ zmcontrol status

would throw the same or a similar (Perl) error afterwards:

perl: symbol lookup error: /opt/zimbra/zimbramon/lib/x86_64-linux-gnu-thread-multi/autundefined symbol: Perl_Istack_sp_ptr

Luckily, a guy named Jiménez (kudos!) posted the solution to get the upgrade running:

"a perl script (/opt/zimbra/libexec/zmsetup.pl) was run to setup some preferences to the installation before it started the server. I ran it manually, and my problems were solved."

What Jiménez did not mention: you need to have the newest Perl for this script to work – else it will fail with similar errors. So upgrade again (unlock pinned files if you did pin them = force them to be at the version 5.8.8):

# apt-get install perl
(… installs perl – the newest version … )

# perl -v
This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi

# /opt/zimbra/libexec/zmsetup.pl
Operations logged to /tmp/zmsetup.04162010-194935.log
Installing LDAP configuration database…done.
Upgrading from 5.0.10_GA_2638 to 6.0.6_GA_2324
Stopping zimbra services…done.
Verifying /opt/zimbra/conf/my.cnf
Starting mysql…done.
This appears to be 5.0.10_GA
Installing LDAP configuration database…done.
Migrating ldap data…done.
Checking ldap status…not running.
Running zmldapapplyldif…done.
Checking ldap status…already running.
Checking ldap status…already running.
Redolog version update required.
Fri Apr 16 19:51:03 2010: Verified redolog version 1.23.
Fri Apr 16 19:51:03 2010: Updating Redolog schema version from 1.23 to 1.28.
Redolog version update finished.
Schema upgrade required from version 53 to 64.
Running /opt/zimbra/libexec/scripts/migrate20080930-MucService.pl
Fri Apr 16 19:51:07 2010: Verified schema version 53.
Fri Apr 16 19:51:13 2010: Verified schema version 53.
Fri Apr 16 19:51:13 2010: Updating DB schema version from 53 to 60.
Running /opt/zimbra/libexec/scripts/migrate20090315-MobileDevices.pl
Fri Apr 16 19:51:15 2010: Verified schema version 60.
Fri Apr 16 19:51:15 2010: Adding ZIMBRA.MOBILE_DEVICES table.
Fri Apr 16 19:51:17 2010: Verified schema version 60.
Fri Apr 16 19:51:17 2010: Updating DB schema version from 60 to 61.
Running /opt/zimbra/libexec/scripts/migrate20090406-DataSourceItemTable.pl
Fri Apr 16 19:51:20 2010: Verified schema version 61.
Fri Apr 16 19:54:16 2010: Verified schema version 61.
Fri Apr 16 19:54:16 2010: Updating DB schema version from 61 to 62.
Running /opt/zimbra/libexec/scripts/migrate20090430-highestindexed.pl
Fri Apr 16 19:54:20 2010: Verified schema version 62.
Fri Apr 16 19:54:20 2010: Adding idx_deferred_count column to Mailbox table.
Fri Apr 16 19:54:22 2010: Verified schema version 62.
Fri Apr 16 19:54:22 2010: Updating DB schema version from 62 to 63.
Running /opt/zimbra/libexec/scripts/migrate20100106-MobileDevices.pl
Fri Apr 16 19:54:24 2010: Verified schema version 63.
Fri Apr 16 19:54:24 2010: Adding policy_values column to ZIMBRA.MOBILE_DEVICES table.
Fri Apr 16 19:54:25 2010: Verified schema version 63.
Fri Apr 16 19:54:25 2010: Updating DB schema version from 63 to 64.
Stopping mysql…done.
Updating from 5.0.11_GA
Updating from 5.0.12_GA
Updating from 5.0.13_GA
Updating from 5.0.14_GA
Updating from 5.0.15_GA
Updating from 5.0.16_GA
Updating from 5.0.17_GA
Updating from 5.0.18_GA
Updating from 5.0.19_GA
Updating from 5.0.20_GA
Updating from 5.0.21_GA
Updating from 5.0.22_GA
Updating from 5.0.23_GA
Updating from 6.0.0_BETA1
Migrating all domain admins to ACL based access manager…done.
Checking for default IM conference room…not present.
Initializing default IM conference room…done.< BR>Deletedcn=mime,cn=config,cn=zimbra
Updating from 6.0.0_BETA2
Updating from 6.0.0_RC1
Updating from 6.0.0_RC2
Updating from 6.0.0_GA
Updating from 6.0.1_GA
Updating from 6.0.2_GA
Updating from 6.0.3_GA
Updating from 6.0.4_GA
Updating from 6.0.5_GA
Updating from 6.0.6_GA
Updating global config and COS's with attributes introduced after 5.0.10_GA…done.
Stopping ldap…done.
Upgrade complete.

Running bdb db_recover…done.
Running zmldapapplyldif…done.
Checking ldap status….already running.
Setting defaults…done.
Setting defaults from existing config…done.
Checking for port conflicts
Port conflict detected: 7306 (zimbra-store)
Port conflicts detected! – Any key to continue
Setting defaults from ldap…

Port conflict detected: 7306 (zimbra-store)
Debugging this error:

# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0* LISTEN 3157/slapd
tcp 0 0* LISTEN 19601/mysqld
tcp 0 0* LISTEN 9494/sshd
tcp6 0 0 :::22 :::* LISTEN 9494/sshd

Apparently there's something on the port which should not be there. At this point your mail server is back up again, although messages will probably not get delivered and queue up:

# su zimbra
$ zmcontrol status
Host mail.example.de
antispam Running
antivirus Running
ldap Running
logger Running
mailbox Stopped
mysql.server is not running.
mta Running
snmp Running
spell Running
stats Stopped

As you can see, the mailbox is stopped and the mysql server is not running. (Aside from a talent of stating the seemingly obvious, I'm also a great problem solver. Watch me:)

# su zimbra
$ zmcontrol stop
$ zmcontrol start
$ zmcontrol status
antispam Running
antivirus Running
ldap Running
logger Running
mailbox Running
mta Running
snmp Running
spell Running
stats Running

That was about the easiest part of the upgrade. Respect to the Zimbra guys for packaging the remainder of the process up so nicely! Zimbra way rocks.

Note: I do not know, whether you can directly call the upgrade script (/opt/zimbra/libexec/zmsetup.pl) without running install.sh first. I think, no:

It (install.sh) DID set up several values on the first successful run (Perl needing to be at 5.8.8, remember?):

# ./install.sh –platform-override

Operations logged to /tmp/install.log.5176
Checking for existing installation…
zimbra-ldap…FOUND zimbra-ldap-5.0.10_GA_2638.UBUNTU8_64
zimbra-logger…FOUND zimbra-logger-5.0.10_GA_2638.UBUNTU8_64
zimbra-mta…FOUND zimbra-mta-5.0.10_GA_2638.UBUNTU8_64
zimbra-snmp…FOUND zimbra-snmp-5.0.10_GA_2638.UBUNTU8_64
zimbra-store…FOUND zimbra-store-5.0.10_GA_2638.UBUNTU8_64
zimbra-apache…FOUND zimbra-apache-5.0.10_GA_2638.UBUNTU8_64
zimbra-spell…FOUND zimbra-spell-5.0.10_GA_2638.UBUNTU8_64
zimbra-convertd…NOT FOUND
zimbra-memcached…NOT FOUND
zimbra-proxy…NOT FOUND
zimbra-archiving…NOT FOUND
zimbra-cluster…NOT FOUND
zimbra-core…FOUND zimbra-core-5.0.10_GA_2638.UBUNTU8_64
ZCS upgrade from 5.0.10 to 6.0.6 will be performed.

Saving existing configuration file to /opt/zimbra/.saveconfig


License Terms for the Zimbra Collaboration Suite:

Press Return to continue

Checking for prerequisites…
FOUND: sudo-1.6.9p17-2闩
FOUND: libidn11-1.8괺1
FOUND: libpcre3-7.6-2.1
FOUND: libgmp3c2-2:4.2.2痻3
FOUND: libexpat1-2.0.1-4闩
FOUND: libstdc4.4.2-9
FOUND: libperl5.8-5.8.8-7etch6
Checking for suggested prerequisites…
FOUND: perl-5.8.8
FOUND: sysstat
Prerequisite check complete.
Checking current number of databases…
df: no file systems processed

Do you want to verify message store database integrity? [Y]
Verifying integrity of message store databases. This may take a while.
mysqld is alive
No errors found
mysqld is alive
Killing mysqld with pid 5694 done.

Checking for installable packages

Found zimbra-core
Found zimbra-ldap
Found zimbra-logger
Found zimbra-mta
Found zimbra-snmp
Found zimbra-store
Found zimbra-apache
Found zimbra-spell
Found zimbra-memcached
Found zimbra-proxy

The Zimbra Collaboration Suite appears already to be installed.
It can be upgraded with no effect on existing accounts,
or the current installation can be completely removed prior
to installation for a clean install.

Do you wish to upgrade? [Y]

Select the packages to install
Upgrading zimbra-core
Upgrading zimbra-ldap
Upgrading zimbra-logger
Upgrading zimbra-mta
Upgrading zimbra-snmp
Upgrading zimbra-store
Upgrading zimbra-apache
Upgrading zimbra-spell

Install zimbra-memcached [N]

Install zimbra-proxy [N]
Checking required space for zimbra-core
checking space for zimbra-store


You appear to be installing packages on a platform different
than the platform for which they were built.

This platform is UBUNTU8_64
Packages found: DEBIAN5_64
This may or may not work.

Using packages for a platform in which they were not designed for
may result in an installation that is NOT usable. Your support
options may be limited if you choose to continue.

Install anyway? [N] Yes

The system will be modified. Continue? [N] Yes

Shutting down zimbra mail

Backing up the ldap database…done.

Removing existing packages


Removing deployed webapp directories
Installing packages


Setting defaults from saved config in /opt/zimbra/.saveconfig/config.save

Restoring existing configuration file from /opt/zimbra/.saveconfig/localconfig.xml…done
/usr/bin/perl: symbol lookup error: /opt/zimbra/zimbramon/lib/x86_64-linux-gnu-thread-multi/auto/IO/IO.so: ndefined symbol: Perl_Istack_sp_ptr

Please ignore the screwed up error about us not running on Debian (which we are) – I think it's not part of this problem with Perl. It actually is the cause of the whole series of problems – see this update on upgrading Zimbra.

I hope this helps you. Would be nice if you leave comments and further tips how to fix this.

G'night. – Max

Mar 092010

Bereits beim Entwickeln der Seite ist es angenehmer, wenn der Server schneller reagiert.

Diese Yahoo! Seite hat mehr Informationen über Seitenbeschleunigung.

Interessante Tools werden ebenfalls angeboten:

  • YSlow – ein Firefox Plugin was ermittelt WARUM die Seite langsam ist
  • Smush.it™ – verkleinert Bilder verlustfrei!

Um möglichst viele Elemente in dem BrowserCache vorzuhalten, sollte man die Expires Headers richtig setzen.

Dieser Artikel gibt eine kurze Anleitung für Apache & mod_rewrite.

Ich benutze z.B. folgendes in meiner .htaccess:

#Speed UP!
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 10 years"
ExpiresByType text/html "access plus 30 seconds"

Natürlich muss man dazu sicherstellen dass mod_expires installiert ist. Unter Debian:

ls -l /etc/apache2/mods-enabled/

Unter Debian hat man auch bequeme Tools um Module zu aktivieren und zu deaktivieren (einfach aufrufen, sie bieten die entsprechenden Module an):

a2enmod – Modul aktivieren
a2dismod – Modul deaktivieren

Weitere Optimierungsmöglichkeiten bestehen im Einsatz von Kompression – mod_deflate, Reduktion der eingebundenen Dateien (ganz wichtig!) und natürlich dem Einsatz eines CDNs – eines Content Delivery Networks. Wir empfehlen MaxCDN (das erste Terabyte für 10$!) bzw. NetDNA.

Ein netter Nebeneffekt der meisten dieser Optimierungen ist die Reduktion der Last auf den Server – was wiederum zu höherer Performance bei vielen Besuchen führt!!

Auf Wunsch optimieren wir Ihre Seite hinsichtlich der beschriebenen Prinzipien um die optimale Geschwindigkeit für Sie und Ihre Besucher herauszuholen. Nehmen Sie mit uns jetzt Kontakt auf!

Mar 082010

Wir sind dazu bereit, den nächsten Schritt zu gehen und die Verwaltung des Webservers von manuell auf semi-manuell umzustellen.

Unser Mailsystem wird nach wie vor vom Websystem abgekoppelt laufen – auf Zimbra-Basis.

Für den Webserver selber rüsten wir eine Server Management Software nach. Sie muß einen typischen LAMP Server unterstützen (Linux – Debian / Apache / MySQL / PHP)

Hier sind die Kandidaten:

  1. SysCP

    Gut dokumentiert, aktive Community, interessanter Funktionsumfang (inklusive Resellern die ihre Kunden selbst administrieren können usw.), deutsches User Interface verfügbar.

    Natürlich Open Source.

  2. Kloxo / HyperVM

    Interessant für unser Setup (OpenVZ, mehrere VPMs, …); allerdings evtl. nur auf englisch und massiver Overkill. Es heißt, dass es als Open Source released wurde, jedoch ist auf der Firmenseite etwas von Lizenzkosten die Rede …

  3. http://www.virtualmin.com/

    Virtualmin ist eine weitere Möglichkeit. Hier sticht ebenfalls keine Sprachunterstützung heraus, das System ist komplex und deckt z.B. detaillierte CPU Leistung usw. Statistiken ab.

    Unterstützt einen hohen Grad von Sicherheit bei PHP – die Prozesse werden unter dem jeweiligen User ausgeführt, mit suexec und mod_fastcgi. Siehe auch: http://en.wikipedia.org/wiki/Webmin

  4. OpenLSM

    Eine indische Software mit einer schönen, aber leider nicht so informativen Webseite. In der Feauture Liste schaut das Produkt gut aus – Anlegen von Resellern, Monitoring, … Unterstützt auch Subversion.

  5. VHCS

    Obwohl auf anderen Seiten behauptet wird, dass das Projekt tot sei, ist es nicht so. Die Jungs arbeiten gerade an Release 2.6, der Web 2.0 in VHCS bringen soll. Das Interface schaut übersichtlich und aufgeräumt aus.

  6. OpenPanel

    Schaut sehr, sehr gut aus – ein JavaScript zentriertes UserInterface. Leider ist es seit Juli 2008 in Beta 0.9.5 stehen geblieben. Eine 1.0 steht fast vor der Tür – sie wird Debian 5.0 unterstützen. Definitiv einen Blick wert – auch wenn es erstmal nur in Englisch ist.
    Wird von  PanelSix entwickelt, hier ist die Doku.

Hier ist noch ein Überblick auf Wikipedia (EN).