Στοχευμένο spam μεν, λανθασμένη επιλογή στόχου δε

Αναρωτιέμαι πόσο πετυχημένη κίνηση είναι να στέλνει κάποιος καταχωρητής ονομάτων για το [.GR] αζήτητη διαφημιστική αλληλογραφία (για υπηρεσίες καταχώρησης στο [.GR] domain) στις διευθύνσεις hostmaster@ και postmaster@ ενός άλλου καταχωρητή του [.GR].

[ On a related episode, το pathos.gr σήμερα έστειλε αζήτητη διαφημιστική αλληλογραφία, σε όλες τις διευθύνσεις μου στο ΕΜΠ. ]

rbl.cluecentral.net is back

Dear all, 

This is to let you know that I have resuscitated the DNSBL which lists
all IPv4 space currently announced by ASN and country-code. 

For those of you who remember, I closed it down for personal reasons 18
months ago. The current version is light-coded, easy to maintain and
almost fully-automatic. 

More information on how to use it can be found on

http://www.cluecentral.net/rbl/

Thanks,

-- 
Sabri

Read more about rbl.cluecentral.net at Sabri Berisha’s site.

Update 2009/10/14: It is now again dead.

[via]

graymilter with DNS based whitelists support – part 2

In part 1 I showed how one can use tcp_wrappers to patch graymilter in order to support dns based whitelists (as opposed to IP based whitelists that it supports by default).

But what if you need something faster than having graymilter open /etc/hosts.allow for every message passed to it in order to decide whether the sending host is whitelisted or not?

Basically you need a strcmp(3) function with a twist. While the strcmp(3) family of functions compare from left to right, you need the opposite:

#ifndef _RIGHT_STRCMP_C_
#define _RIGHT_STRCMP_C_ 1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Think of this as a rightmost strcmp() */

static int
right_strcmp(char *x, char *y)
{
int xl, yl, l;
char *s;

        xl = strlen(x);
        yl = strlen(y);
        l = xl - yl;

        if (l < 0) {
                return l;
        } else {
                s = x + l;
                return (strncmp(s, y, yl));
        }
}

#endif /* _RIGHT_STRCMP_C_ */

Now you can include the file right_strcmp.c at the top of graymilter.c (remember right_strcmp() is declared as a static function). If you are using graymilter version 1.26 you then scroll down at line 680 and add this snippet of code:

$ diff graymilter.c graymilter.c-
76d75
< #include "right_strcmp.c"
680,692d678
<     if (right_strcmp(connhost, ".example.com") == 0) {
<           syslog(LOG_INFO, "accepting host %s", connhost);
<           return SMFIS_ACCEPT;
<     }
<     if (right_strcmp(connhost, ".example.org") == 0) {
<           syslog(LOG_INFO, "accepting host %s", connhost);
<           return SMFIS_ACCEPT;
<     }
<     if (right_strcmp(connhost, ".example.net") == 0) {
<           syslog(LOG_INFO, "accepting host %s", connhost);
<           return SMFIS_ACCEPT;
<     }
<

Yes, the above example hardcodes the domains into the graymilter executable. One is free to play around and write a simple function that reads a domain list from a file and wraps around right_strcmp() with the help of stdarg(3). That way you only have to write one if statement. This is left as an exercise to the reader.

(part 1) (part 3)

email

Repeat after me:

Το email δεν είναι Instant Messaging

ξανά:

Το email δεν είναι Instant Messaging
:
Το email δεν είναι Instant Messaging

Και για όποιον δεν κατάλαβε:

Instant messaging or IM is a form of real-time communication between two or more people based on typed text.

Που σημαίνει πως εάν ένα mail που περιμένετε έχει καθυστερήσει, αυτό είναι κάτι φυσιολογικό ανεξάρτητα από το τι εσείς πιστεύετε για τη δρομολόγησή του (και το πόση ώρα μπορεί να χρειαστεί για να παραδοθεί). Το ότι όλα τα προηγούμενα emails σας παραδόθηκαν “αμέσως” δεν είναι κριτήριο για το χρόνο παράδοσης του επόμενου. Αυτό συμβαίνει γιατί το ηλεκτρονικό ταχυδρομείο είναι store-and-forward και όχι real-time service.

Εάν χρειάζεστε άμεση παράδοση / ανταπόκριση στοιχείων και αρχείων χρησιμοποιείστε ΙΜ, όχι το email.

Update: 2009/03/26: Σχετικό post: Email is store-and-forward.

graymilter with DNS based whitelists support – part 1

graymilter is an excellent (and very simple) tool to implement Greylisting. But what if you want to have whitelists not based on IP lists, but on DNS instead? Say to allow all .amazon.com machines to connect to your mail server without having to know the IP addresses range of Amazon’s outgoing mail servers?

A first attempt using tcp_wrappers:

Here comes my patch on graymilter.c (version 1.23):

Tue Jun 14 16:54 [146] > diff graymilter.c graymilter.c-
76d75
< #include <tcpd.h>
543d541
<     struct request_info req;
582,593d579
<
<     /*
<      * Check if the hostname is allowed in /etc/hosts.allow.
<      * Note 1: We are searching only for ALLOW entries.  DENY entries
<      *         are ignored
<      * Note 2: The servicename in /etc/hosts.allow is graymilter
<      */
<     request_init(&req, RQ_DAEMON, "graymilter", RQ_CLIENT_NAME, connhost, 0);
<     fromhost(&req);
<     if (hosts_access(&req)) {
<         syslog( LOG_INFO, "%s is whitelisted by /etc/hosts.allow - accepting",
<                 connhost );
<         return SMFIS_ACCEPT;
<     }

Please remember to add -lwrap at LDFLAGS in your Makefile.

Use this hack with great care. An enty like:

graymilter: .gr : ALLOW

in /etc/hosts.allow would mean that any host in the .gr domain name space is whitelisted. This includes DSL and dialup customers of all the Greek ISPs! This is definately not what you wanted whitelisted.

Drawback of this patch: On a mail server with hundred of messages per hour (the patched) graymilter crashes because it opens far too many times /etc/hosts.allow for reading. Part 2 of this post will deal with a solution to this problem.

(part 2)

re: Είναι πράγματι το Spamming, μόνο τεχνολογική μάστιγα;

Αρχικά ήθελα να σχολιάσω στο digitalbox, αλλά η απάντηση βγήκε τόσο μεγάλη που είναι καλύτερα να είναι σε ξεχωριστό post.

“είναι αρκετά νωπή η πρόταση για χρέωση κάθε e-mail που θα αποστέλλεται και της οποίας η υλοποίηση δεν αργεί και τόσο πολύ”

Μπορεί να δείχνει ελυστική σαν πρόταση, όμως δεν είναι καθόλου μα καθόλου πρακτική. Όχι μόνο δεν είναι πρακτική, αλλά δεν μπορεί να είναι και ουσιαστικά υλοποιήσιμη τη στιγμή που ο καθένας μπορεί να έχει μια γραμμή 2Mbit στο σπίτι του και να στήσει το δικό του mail server ο οποίος και να στέλνει “προς τα έξω”. Σύμφωνοι, μπορείς να κόψεις το port 25/tcp όπως κάνει η AOL, αλλά στην πραγματικότητα, πόσοι το έχουν κάνει αυτό;

Από τις συζητήσεις που κάνω, σε εμπορικό επίπεδο το έχουμε εφαρμόσει μόνο εμείς (και μάλλιστα όχι με κανονικό blocking γιατί δεν ήταν και τόσο εύκολο να πειστεί το userbase πως αυτό είναι in-the-long-run για το καλό τους: “ωραία μας τα λέτε, αλλά εγώ θέλω το outgoing port 25/tcp ανοιχτό και το θέλω τώρα”).

Κι αν “τρέχω” μια mailing list με 10.000 subscribers, τι κοστολόγηση θα υπάρχει; Ή μήπως τότε θα υπάρχει εξαίρεση. Και πόσες τέτοιες εξαιρέσεις μπορούμε να φτιάξουμε ώστε μια τέτοια υλοποίηση να είναι μια ατέλειωτη λίστα εξαιρέσεων και άρα ουσιαστικά ανεφάρμοστη;

“Πως βρίσκουν οι spammers τις ηλεκτρονικές διεύθυνσεις που στέλνουν τα μηνύματα τους; Η εύκολη απάντηση είναι ότι τα βρίσκουν μέσω web χρησιμοποιώντας bots & spiders. Η δύσκολη προσέγγιση, ειδικά για τους φορείς που θα επιληφθούν της οριστικής επίλυσης του προβλήματος, είναι οι εταιρείες που τα πουλάνε, βγάζοντας στο σφυρί προσωπικά δεδομένα των τέως, των νυν και των υποψήφιων πελατών τους.”

Και δεν είναι η μόνη μέθοδος:

  1. Από ιούς που διαβάζουν το addressbook και αποστέλλουν spam στις περιεχόμενες addresses
  2. Κατασκευάζοντας λεξικογραφικά usernames και στέλνοντας email σε κάθε ένα από αυτά και όσα βρουν παραλήπτη βρήκανε
  3. Από λίστες που αγοράζουν από άλλους spammers
  4. Από databases σαν το RIPE-database
  5. κ.ο.κ.

“Η ευθύνη των ISPs που ακριβώς βρίσκεται, όταν σίγουρα ένας μεγάλος αριθμός spam αποστέλλονται μέσω hijacked PCs; Δεν μπορούν να εξακριβώσουν ποιο είναι αυτό το account που αναπαράγει εκατοντάδες μηνύματα και τα αποστέλει στις επαφές του ώστε να τον ενημερώσουν ότι ο Η/Υ του είναι “μολυσμένος” δίνοντας του ένα περιθώριο να επιλύσει το πρόβλημα πριν του διακόψουν το e-mail οριστικά;”

Ένα zombie network μπορεί να έχει εκατομμύρια PCs. Και αρκεί να στείλει ένα spam το καθένα για να καλύψει όλους τους χρήστες των μεγάλων ελληνικών ISP. Ακόμα και 1000 να είνα τα PCs είναι σταγόνα στο ωκεανό το spam traffic που μπορούν να δημιουργήσουν. Σκέψου και άλλες παραμέτρους: Σήμερα π.χ. μου ήρθε ένα spam report για ένα μηχάνημα από dialup στη Λάρισσα. Είναι αυτό το μηχάνημα το μηχάνημα του πελάτη; Τον ενημερώνω και του λέω “μπορεί να έχετε ιό”. Και λοιπόν;

“Κι αν δεν μπορούν να το κάνουν οι ISPs υπό τον φόβο μήπως χάσουν τον πελάτη τους”

Τώρα ακουμπάς μια ευαίσθητη χορδή. Κάποια μέρα που θα το επιτρέπουν οι συνθήκες θα γράψω τι έγινε όταν ετοιμάστηκε από το antispam working group της ΑΠΔΠΧ ένα σχέδιο κώδικα δεοντολογίας για τους Ελληνικούς ISPs.

“ας υπάρξει μια κρατική μέριμνα. (γενικά μιλάω, δεν αναφέρομαι στην Ελλάδα…)”

Η νομοθεσία (Ευρωπαϊκή και Ελληνική) είναι ικανοποιητική. Αυτό δεν αρκεί, δεν σε προστατεύει από το spam από την Κίνα π.χ.

“Είναι πράγματι το spamming, θέμα που αφορά μόνο την χρήση του internet;”

Όχι, αλλά το cost model είναι διαφορετικό. Πόσο στοιχίζει να πάρεις τηλέφωνο 10.000 κόσμο; Πόσο στοιχίζει να στείλεις 10.000 (snail mail) επιστολές; Αντιπαράβαλλέ το με το πόσο στοιχίζει να στείλεις 10.000 emails ή να έχεις ένα ρομποτάκι που να spamάρει ένα forum ή μια σειρά από blogs.

“Άραγε, πόσο πιο πολύ ενοχλητικά είναι τα spam e-mails που λαμβάνουμε στην οθόνη του Η/Υ μας, από όλα τα υπόλοιπα ενοχλητικά μηνύματα των οποίων καθημερινά γινόμαστε αποδέκτες, ώστε μας έχει πιάσει τέτοιος ζήλος να τα καταστείλουμε και ψάχνουμε λύσεις χρέωσης των e-mail που θα αποστέλλονται;”

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

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

Το ηλεκτρονικό ταχυδρομείο (e-mail) φτιάχτηκε όπως και το παραδοσιακό (snail mail). Όπως και στο παραδοσιακό ο οποιοδήποτε μπορεί να γράψει μια επιστολή υποδυόμενος οποιονδήποτε αποστολέα, έτσι συμβαίνει και με το ηλεκτρονικό ταχυδρομείο.

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

Δεν είναι επιλεκτική καταβαράθρωση. Είναι ένα ακόμα “πεδίο μάχης”. Και επειδή είναι ένα σχετικά “φρέσκο” πεδίο μάχης, το ζήτημα είναι να μη συμβεί και σε αυτό ότι και στην τηλεόραση, όπου και διακόπτονται οι διαφημήσεις για να παιχτεί το πρόγραμμα. Διαφορετικά στο μέλλον θα υπάρχει Internet χωρίς email.

Και για να απαντήσω και σε ένα σχόλιο του porcupine στο ίδιο post:

“Ο καυγάς για το “πάπλωμα” στην περίπτωση του spamming γίνεται προφανώς για να ελεγθεί με κάποιο τρόπο η διακίνηση της πληροφορίας στο Internet που είναι αρκετά αναρχικό εκ της δομής του. Όπως είπες κι εσύ, φυσικά και υπάρχουν τρόποι να περιοριστούν τα spams. Γιατί δε γίνεται αυτό, δεν το ξέρω.”

Ο καυγάς για το spam ξεκίνησε και εν πολλοίς συντηρείται από e-privacy activists οι οποίοι κατάφεραν μέσα σε 15 χρόνια να το περάσουν και σε κυβερνήσεις (με τη βοήθεια φυσικά και των spammers). Καμία σχέση δεν υπάρχει με government control ή με την αναρχική δομή του (που ήταν πάντα παραίσθηση κατά τη γνώμη μου).

Ο καλύτερος τρόπος να σταματήσει το spam είναι να εγκαταλειφθεί το SMTP. Αυτό απλά είναι μια ουτοπία για τα επόμενα 15 χρόνια.

(In-Reply-To:)

Read the source Luke – part 1

A fellow (and very competent) postmaster of an extremely high traffic ISP (by Greek standards) dropped me a note asking me whether I had seen the following error message:

Jan 25 11:07:43 XXXXXXXXXXX sm-mta[21622]: l0M7JEYx016921: SYSERR(root): Error in ldap_search using user@YYYYYYYYYYYY.gr in map ldapmra: Unknown error 325

Being the LDAP hater that I am, I had never encountered it. Googling arround did not result in anything meaningful. So the next step was to read the source code:

First I downloaded and uncpaked the latest sendmail (8.13.8) and openldap (2.3.32) sources. Now where do I start? The error message points where:

Inside the sendmail-8.13.8 directory:

$ grep -r "Error in ldap_search" .
./sendmail/map.c: syserr("Error in ldap_search using %s in map %s",
./sendmail/map.c: syserr("451 4.3.5 Error in ldap_search using %s in map %s",

syserr() is called when sm_ldap_search() fails and errno is set by calling sm_ldap_geterrno():

errno = sm_ldap_geterrno(lmap->ldap_ld) + E_LDAPBASE;

What is E_LDAPBASE? We find it defined in include/sm/errstring.h:

#define E_LDAPBASE (E_PSEUDOBASE + 70)

OK, now what is E_PSEUDOBASE? We find it defined again in include/sm/errstring.h:

#ifndef E_PSEUDOBASE
# define E_PSEUDOBASE 256
#endif /* ! E_PSEUDOBASE */

Hmm… the valuse of E_LDAPBASE is 256 + 70 = 326? Now does this not look familiar? So what makes sm_ldap_geterrno() return -1?

$ grep -r ^sm_ldap_geterrno .
./libsm/ldap.c:sm_ldap_geterrno(ld)

sm_ldap_geterrno() basically calls:

(void) ldap_get_option(ld, LDAP_OPT_ERROR_NUMBER, &err);

and returns the value of err.

Now we switch to the openldap-2.3.32 source directory:

$ grep -r ^ldap_get_option .
:
./libraries/libldap/options.c:ldap_get_option(

from which we find out that in our case it returns the following value:

* (int *) outvalue = ld->ld_errno;

So who sets the value of ld->ld_errno to -1? Back in the sendmail sources we see that we followed this branch of the code because of a call to sm_ldap_search():

$ grep -r ^sm_ldap_search() .
./libsm/ldap.c:sm_ldap_search(lmap, key)

sm_ldap_search returns the value of a call to ldap_search(). Switching back to openldap’s sources:

$ grep -r ^ldap_search .
:
./libraries/libldap/search.c:ldap_search(
:

ldap_search() returns the result of ldap_send_initial_request():

$ grep -r ^ldap_send_initial_request
./libraries/libldap/request.c:ldap_send_initial_request(

which in turns returns the result of ldap_server_request():

$ grep -r ^ldap_send_server_request .
./libraries/libldap/request.c:ldap_send_server_request(

It sets ld_errno to -1 in two cases. The first is when it sets it to LDAP_SERVER_DOWN (which is #defined as (-1) in ldap.h) and when ldap_int_flush_request() fails returning -1:

$ grep -r ^ldap_int_flush_request .
./libraries/libldap/request.c:ldap_int_flush_request(

ldap_int_flush_request() returns -1 when ber_flush() fails and sets ld_errno to LDAP_SERVER_DOWN.

So there:

Unknown error 325 means that your sendmail cannot talk to your LDAP server because sendmail thinks that slapd is down.

Or not?

(part2)

Κουτοπονηριές Ελλήνων Spammers

Ανοίγω το mailbox σήμερα και πετυχαίνω ένα mail με θέμα:

Subject: Egenia Pathos.gr (den ine spam diavaste to)

Η εμπειρία με έχει διδάξει πως εξ’ορισμού ένα τέτοιο Subject: είναι spam για οποιδήποτε ορισμό του Spam.

Στο περιεχόμενο του μηνύματος διαβάζει κανείς σε παραλλαγή το standard disclaimer των Ελλήνων spammers:

“Το mail αυτό δεν είναι spam, γιατί εσείς ή κάποιος φίλος σας δήλωσε να πηγαίνει ενημέρωση στο παρών mail για να διαγραφείτε από μελλοντικές ενημερώσεις με newsletter μπείτε στο http://www.pathos.gr και στείλτε μας μήνυμα από την επικοινωνία με τίτλο remove.”

Να μάθετε τη νομοθεσία. Η επικοινωνία σας είναι εμπορικού περιεχομένου και αθέλητη. Είναι spam. Δεν ζήτησα ποτέ να δέχομαι ενημέρωση για τις υπηρεσίες σας και δεν παρέχετε καμία απόδειξη περί του αντιθέτου.

Στην απίθανη περίπτωση που κάποιος φίλος μου ζήτησε να μου έρχονται ενημερώσεις για την υπηρεσία σας, πάλι το μήνυμά σας είναι spam γιατί πολύ απλά εγώ δεν ζήτησα να δέχομαι τέτοια ενημέρωση. Φυσικά δεν μου παρέχετε καμία ενημέρωση για το ποιος φίλος μου είναι αυτός που δήλωσε την διεύθυνση επικοινωνίας μου σε εσάς.

Και λίγα λόγια για τη νομοθεσία: Η Οδηγία 2002/58/ΕΚ ορίζει:

“Άρθρο 13

Αυτόκλητες κλήσεις

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

Το ΠΔ 131/2003 (που αποτελεί ενσωμάτωση στην Ελληνική Νομοθεσία της Οδηγίας 2000/31/ΕΚ) ορίζει:

“Εμπορική επικοινωνία με παραλήπτη που δεν την έχει ζητήσει, αν γίνεται με ηλεκτρονικό ταχυδρομείο και εφόσον δεν απαγορεύεται, πρέπει να αναγνωρίζεται σαφώς και επακριβώς ευθύς ως περιέλθει σ’αυτόν.”

Η ίδια η μορφή του Subject: σας προσπαθεί να πείσει για το αντίθετο ενώ είναι φανερό από τηνπρώτη κιόλας παράγραφο πως πρόκειται για εμπορική επικοινωνία:

“Σας καλούμε στα εγκαίνια της σελίδας μας http://www.pathos.gr , εντελώς δωρεάν . Δεν υπάρχει κανένα κόλπο γιατί θέλουμε να κάνουμε γνωστή την παρουσία μας. Απλά πατήστε Join και στην θέση κουπόνι γράψτε “εγκαίνια” και σας χαρίζουμε 3 μήνες χρυσής συνδρομής αξίας 90€ εντελώς δωρεάν. Μετά τους 3 μήνες δεν θα πληρώσετε τίποτα, όμως δεν θα μπορείτε να έχετε πρόσβαση στην περιοχή των πιστοποιημένων μελών (εκτός εαν πιστοποιηθείτε μέσα στους 3 μήνες, οπότε συνεχίζετε να είστε και εκεί δωρεάν)”

Κατά συνέπεια, όχι μόνο προσπαθείτε να με εξαπατήσετε ισχυριζόμενοι πως η επικοινωνία σας μαζί μου δεν είναι spam, αλλά επίσης ισχυρίζεστε ψευδώς πως εγώ ζήτησα να ενημερώνομαι από εσάς (ή κάποιος φίλος μου για λογαριασμό μου- ποιος αλήθεια;) και δείχνετε άγνοια τόσο του τι επιτάσσει το ΠΔ 131/2003, όσο και οι Οδηγίες 31/2000/ΕΚ και 58/2002/ΕΚ στην προσπάθειά σας να προωθήσετε τις υπηρεσίες σας.

Μία συμβουλή έχω για εσάς: Να απευθυνθείτε σε κάποιον που ξέρει να οργανώνει σωστά direct marketing διαμέσου του Internet.

#include <std/disclaimer.h>

Small Catastropha

Δέχομαι 500+ emails καθημερινά. Είναι λογικό να μην προλαβαίνω να τα απαντάω όλα. Τι πιο απλό λοιπόν από το να αφήνω “marked as unread” αυτά που είναι να απαντήσω “αύριο” ή “αργότερα” τέλος πάντων. Σχεδόν δουλεύει.

Μέχρι που μπορεί να αφαιρεθείς και να κάνεις “mark as read” όλο το INBOX. Ίσως η μεθοδος του Itzy Sabo να με βοηθήσει. Ίσως πάλι απλά αντί να μεγαλώνει το INBOX μου, να μεγαλώνει το Reply folder.

multiple email addresses

Για κάποιον που διαβάζει πάνω από 500 emails την ημέρα (χώρια το root / postmaster mail) είναι βολικό να έχει πολλές διευθύνσεις*. Έστω κι αν ο διαχωρισμός είναι συνήθως σε δύο (εργασιακή – προσωπική). ΟΚ, εγώ έχω υπερβολλικά πολλές (2 στο ΕΜΠ, 2 στη δουλειά, 1 στο SDF και από μία σε Yahoo!Mail και Gmail – χώρια τα aliases, π.χ. IEEE) αλλά αυτό είναι επιλογή μου.

Αυτό που δεν είναι επιλογή μου, είναι το να μου στέλνει κάποιος το ίδιο mail σε όλες ελπίζοντας έτσι πως η δουλειά του θα γίνει πιο γρήγορα.


[*] – Ναι χρησιμοποιώ το procmail. Δεν αρκεί. Δεν θέλω το spam μου να κόβει βόλτες μέχρι να φτάσει σε ένα mailbox.