VolkerRaschek
Anmeldungsdatum: 19. August 2014
Beiträge: Zähle...
Wohnort: Eifel
|
Hallo zusammen,
ich hab mich an zwei Anleitungen zur Implementierung der fetchmail Funktion in Postfixadmin gehalten.
Ich hab nach Anleitung die fetchmail.pl im Postfixadmin Verzeichnis bearbeitet.
Postfixadmin nutzt als Datenbackend eine MySQL Datenbank. Einen entsprechenden fetchmail Auftrag habe ich über Postfixadmin hinterlegt. Dieser ist auch in der Datenbank gespeichert. Ob diese Einstellungen richtig sind weiß ich leider nicht, da ich keine logs bekomme und momentan keine E-Mails des zu abrufenden E-Mail Postfachs empfange. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | # database settings
# database backend - uncomment one of these
#our $db_type = 'Pg';
#my $db_type = 'mysql';
our $db_type = 'mysql';
# host name
our $db_host="127.0.0.1";
# database name
our $db_name="EDIT";
# database username
our $db_username="EDIT";
# database password
our $db_password="EDIT";
|
fetchmail als Dienst habe ich in der default Datei deaktiviert
Crontab hab ich auch hinterlegt. | */5 * * * * sudo -H -u vmail /var/www/postfixadmin/ADDITIONS/fetchmail.pl > /dev/null 2&>1
|
Die Dateiberechtigung auf die fetchmail.pl angepasst.
| -rwxr-xr-x 1 vmail mail 4096 Sep 16 11:20 fetchmail.pl
|
Ich weiß nicht warum das mit fetchmail nicht funktioniert.
Ich kann auch nirgends logs von fetchmail finden. Laut Anleitung 2. Müsste er nach /var/log/fetchmail protokollieren. Die ist allerdings leer. Im Orginalzustand finde ich auch keine logs. Die Berechtigung der fetchmail Datei unter /var/log habe ich auch angepasst.
| -rw-rw-rw- 1 vmail mail 0 Sep 16 11:09 fetchmail
|
Die ein zigsten Logs die ich habe, sind die von Cron in der Syslog.
| Sep 16 11:54:01 s18451079 CRON[20118]: (root) CMD (sudo -H -u vmail /var/www/postfixadmin/ADDITIONS/fetchmail.pl > /dev/null 2&>1 )
|
Hat jemand eine Idee wo der Fehler liegen könnte?
Ohne logs ist man voll aufgeschmissen. Gruß
Volker
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5582
|
Hast du schonmal den Befehl sudo -H -u vmail /var/www/postfixadmin/ADDITIONS/fetchmail.pl Selbst als root ausgefuehrt? Ausserdem, was steht in dem Perlskript?
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
Nein, bisher nicht nicht. Ich bekomme unter vmail folgenden Fehler. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | root@www1:~# sudo -H -u vmail /var/www/postfixadmin/ADDITIONS/fetchmail.pl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "de_DE.UTF-8",
LC_ADDRESS = "de_DE.UTF-8",
LC_MONETARY = "de_DE.UTF-8",
LC_NUMERIC = "de_DE.UTF-8",
LC_TELEPHONE = "de_DE.UTF-8",
LC_IDENTIFICATION = "de_DE.UTF-8",
LC_MEASUREMENT = "de_DE.UTF-8",
LC_CTYPE = "en_US",
LC_TIME = "de_DE.UTF-8",
LC_NAME = "de_DE.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Can't locate LockFile/Simple.pm: Permission denied at /var/www/postfixadmin/ADDITIONS/fetchmail.pl line 9.
BEGIN failed--compilation aborted at /var/www/postfixadmin/ADDITIONS/fetchmail.pl line 9.
|
Unter root kommt fast der gleicher Fehler.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | root@www1:~# sudo -H -u root /var/www/postfixadmin/ADDITIONS/fetchmail.pl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "de_DE.UTF-8",
LC_ADDRESS = "de_DE.UTF-8",
LC_MONETARY = "de_DE.UTF-8",
LC_NUMERIC = "de_DE.UTF-8",
LC_TELEPHONE = "de_DE.UTF-8",
LC_IDENTIFICATION = "de_DE.UTF-8",
LC_MEASUREMENT = "de_DE.UTF-8",
LC_CTYPE = "en_US",
LC_TIME = "de_DE.UTF-8",
LC_NAME = "de_DE.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Can't locate LockFile/Simple.pm in @INC (you may need to install the LockFile::Simple module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at /var/www/postfixadmin/ADDITIONS/fetchmail.pl line 9.
BEGIN failed--compilation aborted at /var/www/postfixadmin/ADDITIONS/fetchmail.pl line 9.
root@www1:~#
|
Die besagten Zeilen um Zeile 9
| #!/usr/bin/perl
use DBI;
use MIME::Base64;
# use Data::Dumper;
use File::Temp qw/ mkstemp /;
use Sys::Syslog;
# require liblockfile-simple-perl
use LockFile::Simple qw(lock trylock unlock);
|
Anscheinend fehlt das LockFile::Simple Modul.
Falls jemand auch weiß wie ich die Sprache festlegen kann wäre ich auch dankbar. Gibt keine GUI. Gruß
Volker
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5582
|
Dir fehlt das Paket liblockfile-simple-perl . Zum locale Problem gibt's massenhaft Threads, wenn man nach der Fehlermeldung sucht:
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
Danke sehr,
hat mir geholfen. Das Problem mit der Sprache hab ich auch behoben. Woher wusstest du jetzt das es an dem Paket liegt was mir fehlte? Gruß
Volker
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5582
|
VolkerRaschek schrieb: Danke sehr,
hat mir geholfen.
Super ☺
Woher wusstest du jetzt das es an dem Paket liegt was mir fehlte?
apt-file find LockFile/Simple.pm apt-file muss natuerlich installiert sein.
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
sebix schrieb: apt-file find LockFile/Simple.pm apt-file muss natuerlich installiert sein.
Ahaaa, das ist seht gut. So was kann ich gut gebrauchen. 😀 Nun nur noch eine Kleinigkeit. Leider kann ich immer noch nicht überprüfen, ob fetchmail richtig arbeitet. Ich bekomme zwar in der syslog etwas angezeigt Sep 24 16:32:01 s18451079 fetchmail-all 27534: fetch volker.raschek for vraschek@..
jedoch bekomme ich keine E-Mails aus dem anderen Postfach. Ich habe die SMTP Einstellungen aus Thunderbird übernommen soweit es ging. Das Postfach was abgerufen werden soll liegt bei web.de. Einstellungen.
Protokoll: IMAP
SMTP: imap.web.de
Benutzer: benutzername (mit @web.de oder ohne?)
Passwort: passwort
SSL Aktiv: JA (ich weiß leider nicht ob SSL oder TLS bzw den Port den er benutzen soll. Das gibt die Einstellung in Postfixadmin nicht her.) Leider kann ich nicht sehen, wenn der Fehler hat, ob er und wohin er Protokolliert.
Hast du vielleicht eine Ahnung wie ich an die Protokolle komme oder was an den Einstellungen falsch sein soll? Gruß
Volker
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5582
|
Das kann ich dir mangels des Skripts auch nicht sagen. Welchen Output bekommst du denn nun, wenn du es wie oben besprochen ausfuehrst? Das Skript beinhaltet ja einen fetchmail-Aufruf. Wie sieht dieser aus und kannst du den manuell starten? Werden hier eventl. Fehlermeldungen unterdrueckt?
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
Das fetchmail.pl Script sieht so aus. Dort habe ich nur den Zugang zur MySQL Datenbank eingegeben und versucht an der Stelle, die in der Anleitung beschrieben ist, den Code für die Protokollierung zu ändern. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 | #!/usr/bin/perl
use DBI;
use MIME::Base64;
# use Data::Dumper;
use File::Temp qw/ mkstemp /;
use Sys::Syslog;
# require liblockfile-simple-perl
use LockFile::Simple qw(lock trylock unlock);
######################################################################
########## Change the following variables to fit your needs ##########
# database settings
# database backend - uncomment one of these
#our $db_type = 'Pg';
#my $db_type = 'mysql';
our $db_type = 'mysql';
# host name
our $db_host="127.0.0.1";
# database name
our $db_name="DBNAME";
# database username
our $db_username="USERNAME";
# database password
our $db_password="PASSWORT";
# instead of changing this script, you can put your settings to /etc/mail/postfixadmin/fetchmail.conf
# just use perl syntax there to fill the variables listed above (without the "our" keyword). Example:
# $db_username = 'mail';
if (-f "/etc/mail/postfixadmin/fetchmail.conf") {
require "/etc/mail/postfixadmin/fetchmail.conf";
}
#################### Don't change anything below! ####################
######################################################################
openlog("fetchmail-all", "pid", "mail");
sub log_and_die {
my($message) = @_;
syslog("err", $message);
die $message;
}
# read options and arguments
$configfile = "/etc/fetchmail-all/config";
@ARGS1 = @ARGV;
while ($_ = shift @ARGS1) {
if (/^-/) {
if (/^--config$/) {
$configfile = shift @ARGS1
}
}
}
$run_dir="/var/run/fetchmail";
# use specified config file
if (-e $configfile) {
do $configfile;
}
if($db_type eq "Pg" || $db_type eq "mysql") {
$dsn = "DBI:$db_type:database=$db_name;host=$db_host";
} else {
log_and_die "unsupported db_type $db_type";
}
$lock_file=$run_dir . "/fetchmail-all.lock";
$lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1);
$lockmgr->lock($lock_file) || log_and_die "can't lock ${lock_file}";
# database connect
$dbh = DBI->connect($dsn, $db_username, $db_password) || log_and_die "cannot connect the database";
if($db_type eq "Pg") {
$sql_cond = "date_part('epoch',now())-date_part('epoch',date)";
} elsif($db_type eq "mysql") {
$sql_cond = "unix_timestamp(now())-unix_timestamp(date)";
}
$sql = "
SELECT id,mailbox,src_server,src_auth,src_user,src_password,src_folder,fetchall,keep,protocol,mda,extra_options,usessl, sslcertck, sslcertpath, sslfingerprint
FROM fetchmail
WHERE $sql_cond > poll_time*60
";
my (%config);
map{
my ($id,$mailbox,$src_server,$src_auth,$src_user,$src_password,$src_folder,$fetchall,$keep,$protocol,$mda,$extra_options,$usessl,$sslcertck,$sslcertpath,$sslfingerprint)=@$_;
syslog("info","fetch ${src_user}@${src_server} for ${mailbox}");
$cmd="user '${src_user}' there with password '".decode_base64($src_password)."'";
$cmd.=" folder '${src_folder}'" if ($src_folder);
$cmd.=" mda ".$mda if ($mda);
# $cmd.=" mda \"/usr/local/libexec/dovecot/deliver -m ${mailbox}\"";
$cmd.=" is '${mailbox}' here";
$cmd.=" keep" if ($keep);
$cmd.=" fetchall" if ($fetchall);
$cmd.=" ssl" if ($usessl);
$cmd.=" sslcertck" if($sslcertck);
$cmd.=" sslcertpath $sslcertpath" if ($sslcertck && $sslcertpath);
$cmd.=" sslfingerprint \"$sslfingerprint\"" if ($sslfingerprint);
$cmd.=" ".$extra_options if ($extra_options);
$text=<<TXT;
set postmaster "postmaster"
set nobouncemail
set no spambounce
set properties ""
set syslog
poll ${src_server} with proto ${protocol}
$cmd
TXT
($file_handler, $filename) = mkstemp( "/tmp/fetchmail-all-XXXXX" ) or log_and_die "cannot open/create fetchmail temp file";
print $file_handler $text;
close $file_handler;
# Ausführliche Protokollierung
$ret=`/usr/bin/fetchmail -v >>/var/log/fetchmail`;
# Normale Protokollierung
# $ret=`/usr/bin/fetchmail -L /var/log/fetchmail`;
# Orginal Zustand
# $ret=`/usr/bin/fetchmail -f $filename -i $run_dir/fetchmail.pid`;
unlink $filename;
$sql="UPDATE fetchmail SET returned_text=".$dbh->quote($ret).", date=now() WHERE id=".$id;
$dbh->do($sql);
}@{$dbh->selectall_arrayref($sql)};
$lockmgr->unlock($lock_file);
closelog();
|
Wenn ich den Befehl so absetze kommt nichts.
| root@www1:~# sudo -H -u vmail /var/www/postfixadmin/ADDITIONS/fetchmail.pl > /dev/null 2&>1
root@www1:~#
|
Ich hab gerade mal in der Datenbank nach geschaut. Dort sind Spalten leer. Die habe ich bisher nicht bemerkt, da die GUI mir die Optionen nicht angeboten hat. Folgende Spalten in meinem Eintrag sind leer. sslcertck, sslcertpath, sslfingerprint, extra_options, returned_text, mda
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5582
|
VolkerRaschek schrieb: Wenn ich den Befehl so absetze kommt nichts.
| root@www1:~# sudo -H -u vmail /var/www/postfixadmin/ADDITIONS/fetchmail.pl > /dev/null 2&>1
root@www1:~#
|
Wie ich oben schon geschrieben habe, sollst du zum Testen die Umleitungen weggeben. Sonst kommt da per definitionem nichts raus.
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
Also ich weiß jetzt nicht was ich gemacht habe, aber auf einmal geht es.
Ich kann mir noch nicht erklären wieso.
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
Ahaa ich hab es gefunden.
In der Anleitung steht, dass man als Entfernten Ordner nichts angeben soll. Also leer lassen.
Ich hab dort eben im Unterbewusstsein INBOX angegeben. Trotzdem vielen dank für deine Hilfe sebix. Gruß Volker
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
Hey sebix,
hast du vielleicht eine Ahnung warum er mir das Verzeichnis /var/run/fetchmail
nach einem Neustart mit Dateiinhalt löscht? Gruß
Volker
|
sebix
Moderator, Webteam
Anmeldungsdatum: 14. April 2009
Beiträge: 5582
|
VolkerRaschek schrieb: hast du vielleicht eine Ahnung warum er mir das Verzeichnis /var/run/fetchmail
nach einem Neustart mit Dateiinhalt löscht?
Weil das Verzeichnis /var/run per Definition bei Neustart geleert wird. Die Files dort sind nur zur Laufzeit (runtime) relevant, also zb pids und sockets.
|
VolkerRaschek
(Themenstarter)
Anmeldungsdatum: 19. August 2014
Beiträge: 358
Wohnort: Eifel
|
Danke sebix,
das hab ich auch heraus gefunden (: Ich hab das run Verzeichnis einfach wo anders hin gelegt. Jetzt funktioniert es. Gruß
Volker
|