Avatar billede myplacedk Nybegynder
28. august 2003 - 15:14 Der er 10 kommentarer og
2 løsninger

Hente via pop3, gemme som mbox

Jeg skal skifte en mail-server, og vil gerne have flyttet uafhentet mail med.
Den gamle server giver mig kun adgang via pop3, men på den nye kan jeg anbringe mbox-filer.

Det jeg mangler er en nem måde (evt. et lille program til formålet) hvor jeg kan angive pop3-server, brugernavn og kodeord, og så bliver alle mails hentet, gemt i en mbox fil og slettet fra serveren.

Er der nogen der har en Perl one-liner eller lignende?
Avatar billede mfalck Praktikant
28. august 2003 - 15:31 #1
medmindre du har kørt med maildirs så tror jeg blot det er et spørgsmåm om at kopiere filerne over.
Avatar billede myplacedk Nybegynder
28. august 2003 - 15:45 #2
"Den gamle server giver mig kun adgang via pop3"...
Avatar billede myplacedk Nybegynder
28. august 2003 - 17:21 #3
Alternativt - måske enda bedre:
Et script som henter mails over POP3, og kontakter den nye mailserver via SMTP, og afleverer. Mon ikke det er simpelt?
Jeg vil prøve at lave noget selv, hvis der ikke kommer mere hjælp her. (Og selvfølgelig poste scriptet, hvis det bliver brugbart.)
Avatar billede mfalck Praktikant
28. august 2003 - 20:20 #4
jeg kigger også lige på et script - jeg skal lige høre om der er attachments som skal gemmes, da det kan gøre det lidt sværre.
Avatar billede mfalck Praktikant
28. august 2003 - 21:07 #5
her er et perlscript som kan noget af det du efterlyser:
#! /usr/bin/perl

use strict;

use Net::POP3;
use Net::SMTP;

my $mailserver ="localhost";
my $popserver ="localhost";
my $username ="";
my $password ="";

my $email ="";
my ($subject, $test, $line, $set);
my $smtp = Net::SMTP->new($mailserver);
my $pop = Net::POP3->new($popserver);

if ($pop->login($username, $password) > 0) {
  my $msgnums = $pop->list;
  foreach my $msgnum (keys %$msgnums) {
    my $msg = $pop->get($msgnum);
    foreach $line (@$msg) {
      $test = $line;
      if ($test =~/^Subject: (.*)$/) {
        $subject = $1 unless ($set eq 1);
        $set = 1;
      }
    }
      remail(@$msg, $subject);
      $set =0;
  }
}

  $pop->quit;
  #$smtp->quit;


sub remail {
  my ($mail, $subject) = @_;

  $smtp->mail();
  $smtp->to($email);

  $smtp->data();
  $smtp->datasend("Subject:$subject\n");
  $smtp->datasend("\n");
  $smtp->datasend($mail);
  $smtp->dataend();
}
Avatar billede mfalck Praktikant
28. august 2003 - 21:09 #6
hov kommentaren foran $smtp->quit; skal fejernes.
Avatar billede mfalck Praktikant
28. august 2003 - 22:31 #7
bommer - der skal vist arbejdes lidt mere på mit script .. den kommer blot med en besked fra MAILERDEAMON som ikke indeholder så meget.

jeg er bange for at man måske skal parse emailen og konvertere den til MIME igen... men jeg tror måske at det er overføldigt eftersom den jo allerede ligger i et mimeformat. Det bliver ikke før weekenden at jeg har tid til at kigge på det.
Avatar billede mfalck Praktikant
28. august 2003 - 22:37 #8
my $mailserver ="localhost";
my $popserver ="localhost";
my $username ="";
my $password ="";


skal naturligvis sættes til det korrekte.
Avatar billede mfalck Praktikant
28. august 2003 - 22:38 #9
evt kan du sætte følgende ind i scriptet; så kan du kalde scriptet fra kommandolinien med paramtre hvis du skal gøre det for flere brugere.

use Getopt::Std;
my %opts;

getopt('o:m:u:p:', \%opts);

my $mailserver = $opts{"m"};
my $popserver = $opts{"o"};
my $username = $opts{"u"};
my $password = $opts{"p"};
Avatar billede thomasledet Nybegynder
29. august 2003 - 04:23 #10
fetchmail kan præcist det, du efterlyser.
Avatar billede myplacedk Nybegynder
29. august 2003 - 07:15 #11
Jeg synes det er vigtigt at mailen IKKE bliver parset. Den skal ankomme på den nye server præcist som den så ud på den gamle server.

Jeg har også siddet og scriptet lidt, men jeg er midlertidigt gået i stå fordi den nye mailserver tilsyneladende ikke virker.

Mens jeg venter kigger jeg lige på fetchmail.
Avatar billede myplacedk Nybegynder
24. januar 2004 - 22:35 #12
Hov, gammelt spørgsmål...
Min løsning blev at skrive et script som henter mails over pop3, og lægger dem over på anden mailserver med smtp. Mailen bliver ikke parset (hverken headers eller body), så eneste ændringer i mailen foretages af den modtagende mailserver.

Den er skrevet i PHP. Hvis nogen ønsker det, kan jeg rydde en smule op i koden og offentliggøre den.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester