ubuntuusers.de

E-Mail auf MX-Record abbilden

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

jedi84

Anmeldungsdatum:
9. November 2007

Beiträge: 19

Hallo zusammen,

ich würde gerne ein Skript schreiben, das mir zu einer E-Mail-Adresse den richtigen Mail-Server ausgibt.

Manuell würde ich die Domain von der Adresse nehmen, an dig übergeben und den MX eintrag lesen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

> dig -t MX google.com

; <<>> DiG 9.5.1-P3 <<>> -t MX google.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24743
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.                    IN      MX

;; ANSWER SECTION:
google.com.             900     IN      MX      400 google.com.s9b2.psmtp.com.
google.com.             900     IN      MX      100 google.com.s9a1.psmtp.com.
google.com.             900     IN      MX      300 google.com.s9b1.psmtp.com.
google.com.             900     IN      MX      200 google.com.s9a2.psmtp.com.

;; Query time: 18 msec
;; SERVER: 213.133.100.100#53(213.133.100.100)
;; WHEN: Tue Feb 16 15:27:26 2010
;; MSG SIZE  rcvd: 162

Das Skript (vermutlich ebenfalls mit dig und zusätzlich mit grep zu lösen) soll dann eher so aussehn:

1
2
3
> skript.sh mail@google.com

google.com.s9a2.psmtp.com

Komme da nicht wirklich weiter. Mit grep schaffe ich es lediglich, die Ausgabe von dig auf fünf Zeilen zu beschränken.

Hat jemand ne Idee?

Grüße

Jens

uname

Anmeldungsdatum:
28. März 2007

Beiträge: 6030

Wohnort: 127.0.0.1

Unter Debian gibt es den Befehl "host":

host ubuntuusers.de
ubuntuusers.de has address 213.95.41.13
ubuntuusers.de mail is handled by 10 mail.ubuntu-eu.org.

Lux Team-Icon

Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

jedi84 schrieb:

Komme da nicht wirklich weiter. Mit grep schaffe ich es lediglich, die Ausgabe von dig auf fünf Zeilen zu beschränken.

Du kannst grep sagen, dass es Dir nur den ersten Treffer ausgeben soll.

Oder wo genau liegt das Problem?

host -t mx domain

Könnte auch helfen.

Gruss

Dirk

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: 696

Wohnort: Dortmund

dig -t MX +short google.com | sed -n 's/\.$//;/200/s/^[0-9]* //p'

liefert

google.com.s9a2.psmtp.com

jedi84

(Themenstarter)

Anmeldungsdatum:
9. November 2007

Beiträge: 19

@uname & Lux: Die Funktion von host war mir noch nicht bekannt, danke.

@barcc:

1
 dig -t MX +short t-online.de | sed -n 's/\.$//;/200/s/^[0-9]* //p'

liefert allerdings kein Ergebnis.

Wenn ich den regulären Ausdruck komplett verstanden hätte, wüsste ich eventuell auch warum. So sehe ich eigentlich keinen Unterschied zwischen der Ausgabe bei google.de und t-online.de.

Gruß Jens

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: 696

Wohnort: Dortmund

Naja, der regulären Ausdruck liefert nur ein Ergebnis, wenn die Zeile mit 200 anfängt.

dig -t MX +short t-online.de | sed -n 's/\.$//;1s/^[0-9]* //p'

liefert einfach die erste Zeile, vielleicht ist das besser.

jedi84

(Themenstarter)

Anmeldungsdatum:
9. November 2007

Beiträge: 19

Vielen lieben Dank! Das ging schnell ☺

Hatte versehentlich die ausgabe bei google.de mit der von t-online.de verglichen und da fehlte die 200. Deshalb sagte mir die 200 im regulären Ausruck auch nichts.

Jetzt funkioniert es aber.

Und falls es jemand gebrauchen kann, hier das fertige (wenn auch sicher nicht schöne) Skript, mit dem man schnell eine kurze Test-E-Mail versenden kann, falls man sendmail nicht benutzen kann oder will:

if test $# -lt 1
then
  echo "Usage: mail.sh receipient"
else
  TO=$1
  HOST=`echo $TO | sed 's/[a-Z0-9\-\_\.]*\@//'`
  MX=`dig -t MX +short $HOST | sed -n 's/\.$//;1s/^[0-9]* //p'`
  echo "Connect to: " $MX
  echo -n "from: "; read FROM
  echo -n "subject: "; read SUBJECT
  echo -n "data: "; read DATA

  echo "EHLO jdsrv.de" > .tmpmail
  echo "mail from: $FROM" >> .tmpmail
  echo "rcpt to: $TO" >> .tmpmail
  echo "data" >> .tmpmail
  echo "from: $FROM" >> .tmpmail
  echo "to: $TO" >> .tmpmail
  echo "subject: $SUBJECT" >> .tmpmail
  echo "" >> .tmpmail
  echo "$DATA" >> .tmpmail
  echo "." >> .tmpmail
  echo "quit" >> .tmpmail
  nc $MX 25 < .tmpmail
#  rm .tmpmail
fi

Grüße

Jens

Antworten |