Postfix outgoing/outbound SMTP authentication for smtp.hispeed.ch/cablecom.ch

It afforded quite some packet sniffing and debugging to find out the correct settings and encodings.

Here are the settings for postfix outbound/outgoing/upstream SMTP AUTH, smtp.hispeed.ch/cablecom.ch and Gentoo:

To /etc/postfix/main.cf, add:

smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd_outgoing_smtp
smtp_sasl_security_options = noanonymous

For debugging purposes, you might want to temporarily set “smtp_use_tls = no” in order to disable transport layer security encryption. Setting “smtp_sasl_mechanism_filter = plain” is not mandatory but might be helpful if AUTH LOGIN doesn’t seem to work for some reason.

Then create a file /etc/postfix/sasl_passwd_outgoing_smtp (or whatever name you chose) consisting of the following line:

smtp.hispeed.ch login:password

where “login” is your hispeed e-mail address (e.g. name@hispeed.ch) and “password” the password for your e-mail account at hispeed.ch. Don’t even try to use the credentials they sent you by snail mail. These are only valid to setup an initial e-mail account at hispeed.ch.

Now create a postfix-readable hash database of this text file by executing:

# postmap hash:/etc/postfix/sasl_passwd_outgoing_smtp

reload postfix:

# /etc/init.d/postfix reload

That’s it :) You can now check whether SMTP authentication works by sending a test message to a local and to a remote recipient while monitoring /var/log/messages or /var/log/mail.info (‘tail -f /var/log/messages’ etc.). If necessary, you can temporarily increase the log level of postfix by starting postfix with the “-v” option (adjust /etc/init.d/postfix accordingly). For general debugging of SMTP problems, telnet comes handy.

Use perl to encode your login and password as base64:

$ perl -MMIME::Base64 -e ‘print encode_base64(“name\@hispeed.chname\@hispeed.chpassword”);’
bmFtZUBoaXNwZWVkLmNoAG5hbWVAaGlzcGVlZC5jaABwYXNzd29yZA==

You could also use ‘mimencode’ (or ‘mmencode’ etc.) instead, but using perl is recommended as feeding the special characters (“nul”) to mimencode is pretty error-prone. The above, encoded string is suitable for AUTH PLAIN. Note that you need to specify your credentials as “loginloginpassword” and mask any perl special characters like “@”, “$” etc. with backslashes. denotes the ASCII nul character (0x00). For AUTH LOGIN, separate the login and password, i.e. do

$ perl -MMIME::Base64 -e ‘print encode_base64(“name\@hispeed.ch”);’
bmFtZUBoaXNwZWVkLmNo
$ perl -MMIME::Base64 -e ‘print encode_base64(“password”);’
cGFzc3dvcmQ=

If AUTH PLAIN works, your telnet session should look similar to this one:

$ telnet smtp.hispeed.ch 25
Trying 62.2.95.12…
Connected to smtp.hispeed.ch.
Escape character is ‘^]’.
220 smtp.hispeed.ch ESMTP Sendmail 8.12.6/8.12.6/tornado-1.0; Thu, 2 Jun 2005 18:25:33 +0200
EHLO smtp.hispeed.ch
250-smtp.hispeed.ch Hello cut.dclient.hispeed.ch [cut], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 10485760
250-DSN
250-AUTH PLAIN LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
AUTH PLAIN bmFtZUBoaXNwZWVkLmNoAG5hbWVAaGlzcGVlZC5jaABwYXNzd29yZA==
235 2.0.0 OK Authenticated
QUIT
221 2.0.0 smtp.hispeed.ch closing connection
Connection closed by foreign host.

For AUTH LOGIN, the login and password need to be separated and submitted separately.

Gentoo: libsdl gone mad? Nope.

If you’ve emerge sync’ed today and the output of an ’emerge -puD world’ on your CLI-only box looks similar to mine..

o2 media-libs # emerge -pu lib-compat

These are the packages that I would merge, in order:

Calculating dependencies …done!
[ebuild N ] media-libs/audiofile-0.2.6-r1
[ebuild N ] media-sound/alsa-headers-1.0.8
[ebuild N ] media-libs/alsa-lib-1.0.8
[ebuild N ] x11-base/xorg-x11-6.8.2-r1
[ebuild N ] sys-apps/utempter-0.5.5.5-r1
[ebuild N ] x11-terms/xterm-200-r1
[ebuild N ] media-libs/lcms-1.13-r1
[ebuild N ] media-libs/libmng-1.0.4
[ebuild N ] x11-libs/qt-3.3.4-r3
[ebuild N ] kde-base/kde-env-3-r3
[ebuild N ] kde-base/arts-1.3.2-r1
[ebuild N ] media-libs/libsdl-1.2.8-r1
[ebuild N ] sys-libs/lib-compat-1.4

..you might want to adjust your USE flag settings to anticipate the recent soft dependency changes in libsdl. Add “-arts” (KDE sound server, not needed on a headless server) to your USE flags in /etc/make.conf and the output will look like

o2 media-libs # emerge -puD lib-compat

These are the packages that I would merge, in order:

Calculating dependencies …done!
[ebuild N ] media-libs/audiofile-0.2.6-r1
[ebuild N ] media-sound/alsa-headers-1.0.8
[ebuild N ] media-libs/alsa-lib-1.0.8
[ebuild N ] media-libs/libsdl-1.2.8-r1
[ebuild N ] sys-libs/lib-compat-1.4

Much better, isn’t it? ;) Of course, if you don’t like alsa, you can opt it out too.

Bug tracking tools

Installed Bugzilla and Trac and a couple of other dev tools to complete the first development and runtime environment infrastructure of our[1] upcoming startup company (which will revolutionize quite some things in the blogosphere, if successful :)

If you take a close look at common OSS dev tools, it’s astonishing how limited most of them are. They usually follow a conservative, traditional “me too” approach to accomplish their tasks – despite of foreseeable drawbacks. I’d like to see more inventive and courageous approaches that lead to unconventional, but finally superior software instead of having a variety of very similar tools which are limited by design. It’s worth to take the time to think deeply about different (and also radically new :) approaches before digging into coding matters.

[1] So far, Ben’s and mine (interested to join? Contact us!)

London sightseeing tips?

I’ll be off to London from 05.05.-09.05.2005. Regarding the current London agenda, all I know so far is that there will be UK elections 2005 on 5th of May (perhaps the reason why accommodation in London is so scarce ATM?).

Are there any other {unique, great, funky, unconventional} must-see events (sounds, arts, sports, tech, business,..) in London between 05.-09.? Any hints welcome! :)