Qm – The Quick Mailer

Ever wanted a /bin/mail equivalent for Windows just to send a quick email? Enter Qm. Qm is extremely small (~20KB) and fast, integrates easily with your web browser and Windows Explorer and best of all, it requires no installation! Therefore it can be combined with any portable applications that you choose to carry around on a USB stick.

Update 2010/04/15: Unfortunately, according to the web site Qm is no longer being maintained.

[http://pyric.org/qm/]

traceroute

Το traceroute είναι το διαδικτυακό ισοδύναμο του “πώς μπορώ να φτάσω από το σημείο Α στο σημείο Β”.

Γιατί πρέπει οι αρθρογράφοι να κάνουν μισή δουλειά; Το traceroute είναι ένα εργαλείο το οποίο απαντά στο διαδικτυακό ισοδύναμο του “πως μπορώ να φτάσω από εδώ που είμαι στο σημείο Β;”. Και μην ακούσω για source routing, έτσι;

Υ.Γ.: Δέκα χρόνια πριν: traceroute vs tracert.

Update: So you think you know traceroute?

Using Net::IMAP::Simple to move mailboxes around

In the past I have described using Net::POP3 (combined with tmail from UW-IMAP and a Perl script) to move inboxes from an old (and proprietary) mail server to a new one. However, if your users keep folders like Sent, Drafts and Trash on the mail server, you have to move these also. And this is where Net::IMAP::Simple enters the picture:

#!/usr/bin/perl

use Net::IMAP::Simple;
use Sys::Syslog;

$host = shift or die;
$user = shift or die;
$pass = shift or die;

openlog("imapcat-tmail", 'pid', 'mail') or die;
syslog('info', 'fetching mail for user %s', $user);
closelog();

# When debugging experiment only on myself
## if ($user ne "yiorgos") { exit 0; }

# Folders that we migrate.  CAUTION:  The Trash folder has to be the last in
# line!  That is because $imap->quit expunges the last open folder.  We want 
# this to be Trash and no other.

# For the time being, INBOX is being carried over by pop3cat-tmail.
## push @folder_list, "INBOX";
push @folder_list, "Sent";
push @folder_list, "Drafts";
push @folder_list, "Trash";

$imap = new Net::IMAP::Simple($host) or die;
$imap->login($user, $pass) or die;

while ($folder = shift(@folder_list)) {
        $nm = $imap->select($folder);
        next unless $nm;
        for ($i = 1; $i < = $nm; $i++) {
                $msg = $imap->get($i);
                open T, "| /storage/bin/tmail2 -I $folder $user";
                print T for @{$msg};
                close T;
                $imap->delete($i);
        }
        $imap->expunge_mailbox($folder);
}

$imap->quit;

## print "Bye.\n";
exit 0;

Some notes:

  1. tmail2 is a local version of tmail with a local quota function implemented in tquota.c. It also allows for the -I switch to be used by ordinary users.
  2. This script should be used with caution. When using it to move mailboxes around, keep in mind that all messages will be marked as new when moved.
  3. I must find time to do the same thing forking a version of mailutil that accepts the user password via a command line switch instead of the terminal.

Weird .GR DNS problem

This is what I see from freeshell.org:

adamo@svalbard:~
Wed Feb 04, 10:52:06 [513] $ host -t soa gr.
gr has SOA record grdns.ics.forth.gr. hmaster-info.ics.forth.gr. 902040905 7200 1800 86400 1800

adamo@svalbard:~
Wed Feb 04, 10:52:13 [514] $ host -t soa gr. grdns.ics.forth.gr
Using domain server:
Name: grdns.ics.forth.gr
Address: 139.91.1.1#53
Aliases:

gr has SOA record grdns.ics.forth.gr. hmaster-info.ics.forth.gr. 902040704 7200 1800 86400 1800

Could this be the reason that we have a client not visible to the rest of the Internet? Maybe, since the secondaries seem to carry a version of the .GR zone with greater serial number than the master server.

Update: As usual, there are simpler answers: Like the customer forgetting to renew the domain name.

Disabling SquirrelMail folders

We are not an IMAP shop, but we use SquirrelMail to provide webmail access to our users. Therefore we need a way to restrict folder access via SquirrelMail. I came up with this trick some day in 2005:

  1. Edit <SquirrelMail installation directory>/functions/page_header.php and comment out the line:
    displayInternalLink ('src/folders.php', _("Folders"));

    This removes “Folders” from the menu, but still, they are directly available.

  2. Assuming bash as the root shell:
    # cd <SquirrelMail installation directory>/src
    # for i in folders*.php
    do
         cp /dev/null $i
    done
    

and you are done.

[original page]

O AliasFile=null: and Lenny’s sendmailconfig

As is described in the bat book, when you set:

O AliasFile=null:

no aliases will ever be found. However, if you put in your sendmail.mc:

define(`ALIAS_FILE’, `null:’)dnl

and the run sendmailconfig on a Debian Lenny, update_db will complain because it cannot handle the null: declaration. If you are bothered by this warning message, the solution is simple. Do not declare null: and instead:

# cp /dev/null /etc/mail/aliases
# newaliases

dnsbl.j-chkmail.org

Ο Jose-Marcio Martins da Cruz, συγγραφέας του j-chkmail, ανακοίνωσε τη δημιουργία μιας ακόμα DNSBL,της dnsbl.j-chkmail.org:

This list is constituted empirically, based on hostnames, which I identify as being residential lines (static, dynamic, dhcp, dul, ppp, …).

and:

dnsbl.j-chkmail.org is a list of IP addresses and mainly expressions matching hostnames clearly used by residential installations. j-chkmail uses this list not to block connections from these addresses but for setting limits (connection rates, messages per time window, …) down to normal limits needed by this class of addresses.

Όποιος θέλει να κρατάει τοπικά secondaries, μπορεί να του στείλει ένα email.

Ουρές

Τη Δευτέρα έζησα ακόμα ένα ΤΣΜΕΔΕ experience. Πιο δυνατό αυτή τη φορά, μια και από την 1η Οκτωβρίου 2008 χάρη στην ενοποίηση των ταμείων τα πράγματα έχουν γίνει πιο σκληρά. Αυτή τη φορά όμως πήγα κατάλληλα προετοιμασμένος με το “The Psychology of Waiting Lines” του Donald A. Norman (το οποίο “πατάει” πάνω στο ομότιτλο, αλλά παλαιότερο του David Maister) στο χέρι για να περάσει και η ώρα.

Το κείμενο του Norman χωρίζεται σε δύο ενότητες, από τις οποίες την πρώτη (Eight Design Principles for Waiting Lines) την διάβασα περιμένοντας. Για να δούμε αυτές τις αρχές:

  1. Emotions Dominate

    “Emotions color the experience and, more importantly, how the experience will be remembered.”

    – Δεν κάνετε ούτε για εργαζόμενος στο Δήμο Αθηναίων για τη συλλογή των σκουπιδιών!

    Είπε στον αρχίατρο ένας φανερά εκνευρισμένος ασφαλισμένος. Είπε και άλλα περισσότερα στον σεκιουριτά που τον απομάκρυνε από τον αρχίατρο μεν, αλλά έκανε το λάθος να ανοίξει κουβέντα μαζί του προσπαθώντας να δικαιολογήσει τον αρχίατρο. Παιδί μου, ο ασφαλισμένος έχει το πρόβλημά του στο μυαλό και μόνο αυτό. Δεν τον ενδιαφέρει το ζόρι που τραβάει ο άλλος, παρά μόνο εάν πρόκειται για κλέψιμο σειράς στην ουρά (και αυτό μόνο εάν χάνει και αυτός).

    “Make the surrounds bright and cheery, attractive and inviting.”

    Βέβαια, δε μας κάνει καρδιά να φύγουμε από εκεί μέσα.

  2. Eliminate confusion: Provide a Conceptual Model, Feedback and Explanation

    – Μα έχω δώσει το βιβλιάριό μου πολύ πριν από αυτά που μοιράζετε τώρα. Γιατί αργεί το δικό μου;

    “One of the major determiners of emotional unhappiness is fear of the unknown and uncertainty.”

    Υπάρχει μία ουρά με αριθμημένα χαρτάκια. Εξυπηρετείται συνήθως από τρία ταμεία. Οι υπάλληλοι μαζεύουν στοίβες από βιβλιάρια και τις προωθούν στους γιατρούς. Και ενώ η πρώτη ουρά είναι FIFO, το πως θα βγουν από τους γιατρούς είναι καθαρά τυχαίο. Ο ασφαλισμένος δεν το ξέρει αυτό και σίγουρα δεν το θέλει αυτό. Την τελευταία φορά είδα να περνάνε στους γιατρούς και το αριθμημένο χαρτάκι. Ελπίζω να χρησιμοποιείται η πληροφορία, αν και τα “μα άλλοι που ήρθαν μετά από εμένα έχουν φύγει” δεν έλλειψαν και τότε.

  3. The Wait Must Be Appropriate

    “when there is a large crowd awaiting service, yet only a few people providing it, then the tolerance shifts to blame the service provider for not reacting to the need”

    Είπαμε τρεις ταμίες. Απίστευτος κόσμος και έκδοση αριθμών μέχρι τις 12:00 (προ ενοποίησης μέχρι τις 13:00).

  4. Set expectations, Then Meet or Exceed Them

    Το χαρτάκι γράφει εκτιμώμενο χρόνο εξυπηρέτησης. Αλλά αυτός είναι μέχρι να φτάσει το βιβλιάριο στον υπάλληλο. Από τη στιγμή εκείνη και μετά δεν υπάρχει κανένας τρόπος να ξέρεις πότε θα το ξαναπάρεις στα χέρια σου. Δεν υπάρχει τέλος, μόνο νεύρα.

  5. Keep People Occupied: Filled Time Passes More Quickly Than Unfilled Time

    Μερικοί παίρνουν το χαρτάκι και επιστρέφουν σε μία ώρα για να εξυπηρετηθούν. Άλλοι έχουν ραδιοφωνάκια. Άλλοι εφημερίδες ή βιβλία. Και άλλοι πιάνουν την κουβέντα χωρίς να τους νοιάζει εάν ο διπλανός θέλει να μιλήσει ή όχι. Άλλοι είναι βυθισμένοι στο πρόβλημά τους και ο χρόνος δεν περνάει.

  6. Be Fair

    “If a waiting line seems reasonable, even though it is a negative experience, it will not necessarily trigger a strong negative emotion. The emotion comes if the line appears to be arbitrary, unpredictable, and worst of all, unfair”

    Είπαμε, δεν υπάρχει τρόπος να ξέρεις πως θα πάρεις το βιβλιάριο πίσω πριν από τον επόμενο από εσένα.

    “It is also very important not to let people cut ahead of others”

    – Ρε παιδιά μια ερώτηση έχω να κάνω, δε σας παίρνω τη σειρά

    Υπάρχουν όμως κάτι αξιοπρεπείς αρχαίοι μηχανικοί που διδάσκουν υπομονή και σεβασμό στην ουρά. Και ενώ λένε τα ίδια λόγια που θα έλεγες (ή είπες) κι εσύ, ο “μια ερώτηση” τους ακούει.

  7. End Strong, Start Strong

    Υπάρχει μια ουρά που όσο μεγάλη κι αν είναι κανείς δεν διαμαρτύρεται: Είναι η ουρά του ταμείου που εξαργυρώνει τα εντάλματα πληρωμής. Υπάρχει τέλος και ανταμοιβή.

    Αντίθετα η απογοήτευση ξεκινάει από την ώρα που κόβεις το χαρτάκι και διαπιστώνεις πως είσαι 120 νούμερα πίσω: “Πόση ώρα θα κάτσω στο αχούρι;”

  8. Memory of an Event Is More Important Than the Experience

    Αυτό το post είναι μια απόδειξη. Οι απαντήσεις που παίρνει κανείς όταν λέει “Έχω να πάω στο ΤΣΜΕΔΕ” επίσης.

Δεν θέλω να κάνω τον έξυπνο. Υπάρχουν μέρες που και οι δικές μας ουρές είναι ανυπόφορες. Δεν τα βάζω με τους υπάλληλους. Αυτοί άλλωστε βρίσκονται σε αυτές τις συνθήκες καθημερινά και επί ώρες και με το πρόβλημα του καθενός μπροστά τους. Αλλά κάποιος θα πρέπει λίγο να σκεφτεί από το πως είναι το κτίριο που εξυπηρετεί τον κόσμο, τις διαδρομές που κάνει ένας ασφαλισμένος ή ένας υπάλληλος για να γίνει μία εργασία (π.χ. εξυπηρετείσαι για τις εισφορές στον 2ο, αλλά πρέπει ενδιάμεσα στη διαδικασία να πρωτοκολλήσεις εσύ και όχι η υπηρεσία, πηγαίνοντας στο 3ο), μέχρι εάν μπορούν οι υπάλληλοι στον ημιόροφο να κάνουν δουλειά με τόσο κόσμο κυριολεκτικά πάνω από το κεφάλι τους. “It is all a matter of design” που λέει και ο Norman στην τελευταία του πρόταση.

Γραπτή ψυχοθεραπεία τέλος.

The ethics of jumping the queue.

#include <std/disclaimer.h>

(previously on ΤΣΜΕΔΕ) (next)