http://smtpd.develooper.com/ - http://smtpd.github.io/qpsmtpd/
So shall I change the redirect on qpsmtpd.org accordingly?
Github provides a git-powered/backed Wiki. So it might make sense to
move/recreate the wiki there as well?
Regards
Michael
--
It's an insane world, but i'm proud to
Did you specify FLAG_MASK_EXTERNAL as argument to queue/postfix-queue ?
I believe this will only affect the further processing of the mail, e.g.
use of virtual domain/alias tables. As it does not work properly without
that flag anyway, yes, it was set.
In the meanwhile I did some further
Hi,
I recently switched to postfix and thus am now using the postfix-queue
plugin. Everything looked fine. But now I have noticed that sending
a mail with a large attachment (e.g. 10 MB) causes the queue plugin to
hang really really long on datapost, only after over two minutes I get
the 250
Anyone know what the reason for this might be? Is this a general problem
of the postfix-queue plugin?
The postfix-queue plugin uses a socket to the cleanup daemon. I'm not
sure if the connection over the socket is slow (the cleanup daemon might
be slow reading data from it) or if there is some
Hello everyone,
considering what I wrote in my last mails, I have now written my own
experimental queue plugin for postfix which will drop the mail into
the postdrop-Spool and then notify the pickup daemon.
With this plugin the queuing of a 10 MB mail will now only take
three seconds. The
It doesn't look like it would be very difficult to update your
plugin so that it works using the drop-in method, and the old
method as well. Perhaps with a config setting that lets people
swap between the efficient -vs- paranoid method?
I mentioned in my other mail that it probably makes
Oh, and by the way, for already about two weeks the wiki is now
also reachable by IPv6.
In addition it is now also reachable by HTTPS. But as the server
uses SNI to present different certificates per virtual host, this
will give a Security Warning on Internet Explorer on XP.
On every other
Hello everyone,
after quite a while I have just updated the dokuwiki software on
wiki.qpsmtpd.org. I also found that the recaptcha plugin on the
registration form stopped working, so I replaced it with a different
captcha plugin which will hopefully keeps the scum away.
Wiki seems to be working
Wiki seems to be working fine. If you notice any problems, please
let me know.
Oh, and by the way, for already about two weeks the wiki is now
also reachable by IPv6.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
I amended the relay plugin with the IPv6 code shown in the prior email,
that provides nibble boundary matching.
There are still problems. This Net::IP::ip_expand_address function does
not seem to work properly with CIDR specification. 2001:db8:123::/64
is returned as
It will return for the given example '2001:db8:123/44' which as I
understands is the correct meaning of '2001:db8:123' when we split
at nibble endings.
Oh, well, it isn't. It should be expanded to 2001:db8:1230::/24.
Add the four marked lines:
# Get the length of the last segment
my
With that in mind, I made the following changes to qpsmtpd-dev and committed
them.
While that looks good I would propose something completely different: Throw
out all the code and replace with this one line:
return (DECLINED) if ( $connection-relay_client );
We already have the check_relay
We shall only make the relay_client plugin then be able to handle
IPv6 entries in the relayclients config.
Oh well, after having a closer look at the source it seems that
plugin already does all this (including CIDR syntax) well as it
utilizes Net::IP.
So relay_client apparently does what we
The current code brings up warnings like
Subroutine main::pack_sockaddr_in6 redefined at
/usr/share/perl/5.14/Exporter.pm line 67.
at /usr/bin/qpsmtpd-prefork line 38
when IPv6 is available;
This is fixed by the attached patch. There is actually no need to import
anything from Socket6
This is fixed by the attached patch.
By the correct one attached now :)
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
diff -Naur qpsmtpd-0.84.old/lib/Qpsmtpd/TcpServer.pm qpsmtpd-0.84/lib/Qpsmtpd/TcpServer.pm
---
The sender_permitted_from plugin will hang in an endless loop for
IPv6 clients. This is because of faulty code which only knows how
to handle IPv4 addresses.
The attached patch fixes this problem.
Regards,
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
diff
What kind of disk space and bandwidth would this require?
The bandwidth is laughable, it totaled at 320 MiByte in December
and 280 MiByte in January. The months before it was somewhat more,
but never more than 1.2 GiByte. The files on disc are mere 38 MiByte.
Regards
Michael
--
It's an
Michael Holzt who generously have been hosting the qpsmtpd wiki for
the last years, but he needs it moved somewhere else.
One correction. I don't really need to have it moved, but i really
want to have it moved. Maybe other people also experienced the bad
trend of collecting task for which
Isn't localport always 25?
the most time: yes.
But it can also be 465
Also port 587 (message submission as per RFC2476).
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
my $lip = $conn-local_ip();
up to 15 characters (39 with IPv6)
my $rip = $conn-remote_ip();
up to 15 characters (39 with IPv6)
my $rport = $conn-remote_port || 0;
up to 5 characters
my $lport = $conn-local_port || 0;
up to 5 characters
my $start = time;
up to 16
remoteIP + remotePort + fineGrainedTime is what we use in-house for
some high-speed http logging that needs a unique handle. it works just
fine with a fair number of concurrent clients behind a nat or proxy.
but, my installation is not massive :)
Add PID and a per-process message-counter and
One thing you can consider is queue/smtp-forward, which will start a
SMTP session with your real MX box. This will have the effect of acting
like a transparent relay, and any RCPT TO: addresses which would be
denied will be denied back to the remote server. This happens very late
in the
If you fix your networking (i.e. get rid of the gratuitous IPv6 crap)
when you install your server, I don't think this is a problem.
I disagree. If the system has IPv6 and IPv4, qpsmtpd of course should
bind to both protocol versions and not only IPv6. This is clearly a
bug.
Regards
Michael
I liked the suggestion of calling it 0.40 - so I tagged it as 0.40rc1
Yeah, party!
Unless something comes up I will tag and push the proper version on
Saturday the 9th (my birthday ;-) )
Maybe use the remaining days to write some kind of press notice?
Regards
Michael
--
It's an insane
The Debian package is version 0.32. That's from February 2006 but
the source package has a copy of Apache::Qpsmtpd.pm ... I don't seem
to have a copy of the binary one lying around.
# dpkg -L qpsmtpd | grep Apache
/usr/share/perl5/Apache
/usr/share/perl5/Apache/Qpsmtpd.pm
That _is_ the question. However, I looked at qmail (debian src package)
and it also depends on adduser. I looked briefly at the policy manual
but didn't find anything there. I thought that the Debian maintainer
might know the answer. I need to look at the package anyway.
Now i think there
Is it perhaps time for another release?
Absolutely. 0.32 is now over 1 year old and my impression is that
it is lacking lots of cool innovations done since then.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
I have qpsmtpd running with clamav, spamasassin and postfix. I have defined
qpsmtpd as a postfix content filter, where qpsmtpd is taking care of virus /
spam checking. However, once qpsmtpd has found something, postfix will start
bouncing the message, causing it to send an NDR.
I guess the
1) If the sender meant to send the mail, then the recipient knows who
the user is anyway.
Ehh, wrong. A malicious sender could have forged the headers.
2) If the sender *didn't* mean to send the mail, the info is very
useful for anti-spam measures (and for you, in an abuse report).
You
Is there interest?
Absolutely.
My local branch is quite a bit out of sync with qpsmtpd's svn trunk,
so before I put in the effort to port this to trunk, tell me, is there
interest?
Absolutely.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
In summary I would like to early block unknowns ie those whose
source cannot be located.
If you really want to break SMTP on purpose go on, but i strongly
discourage such nonsense. There is no requirement that a mail
sender needs to have a reverse dns entry.
Regards
Michael
--
It's an
Aiming for a quiet life Michael. It's my own server and I don't
particularly mind if I break any rules discouraging scammers
and hackers.
I'm sick of people like you breaking SMTP. I operate mail servers
for 12 years and i've been on the wrong side of mail filtering
more than once and
This occurs about 50 times in a row in the same process with the same
remote address. Why should rcpt_ok be run last (that's what it says
inside the file)? After all this is a pretty basic and cheap test.
No. rcpt_ok _finally_ decides to accept or reject a message. It must
therefore be run
In this structure, you must have at least one *positive* plugin at the
end of the chain which returns OK for any message that got this far.
That's why rcpt_ok exists and has the instruction to leave it for last.
This is true, but the objections are true as well. What the rcpt_ok plugin
does
is someone using smtp after pop auth with qpsmtpd?
i am searching for a plugin to do that.
See http://qpsmtpd.kju.de/qpsmtpd/created_by_me/qppoprelay/.
The plugin is however written for qpsmtpd 0.28 and might need
some tweaking for current qpsmtpd.
Regards
Michael
--
It's an insane world,
Randal has his secondary MX as an IP that maps to the same computer
as his primary MX. That means that if the primary is down then so is
the secondary. Thus if someone hits his secondary FIRST, then it's by
definition a bad MTA. He then blocklists the IPs that hit his
secondary. Smart
Forgive me for asking this, but what is a stale DNS record?
Just a guess: He probably means stupid and broken resolvers who continue to
use DNS records which have already expired. This is a common problem, i've
seen clients contacting the old ip of a website even a week after the move
(even
Are you sure that you only changed a A record, and not a delegation to new
DNS servers?
Yes, absolutely.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
Hmm... very odd. You shouldn't get PollServer used at all if you're
running forkserver.
Wrong. I just checked out qpsmtpd-dev from svn and the qpsmtpd-forkserver
code uses Qpsmtpd::Pollserver at the mentioned position.
# Make this client non-blocking so it works with the Danga framework
That's trunk, which has not been undergoing as much testing as
branches/0.3x, which is where most current development has been
targetted...
But my findings are true for 0.3x as well.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
It's completely up to Michael to decide for as long as he is running
the wiki.
Which does not mean that i won't run another software if this is a.)
acceptable for me security wise and b.) a majority asks for it. But
there is currently no need to change the wiki software because we've
(we as
is it possible to use Qpsmtpd in a proxying mode like
smtpprox e.g. in a way that it passes SMTP commands directly
to the next hop and also does not add its own headers to
the envelope?
Not really. You could write a own plugin which uses the connect,
helo, mail from, rcpt to, data, data_post,
1. Does qpsmtpd need to be compiled and installed?
No it doesn't. The Makefile is broken, forget about it.
# ./qpsmtpd-forkserver
without the -u parameter (which is supposed to default to smtpd) results in
the message:
Could not create spool_dir /root/tmp/: Permission denied at
Because you run it out of /root and it is supposed to used ~/tmp if not
Should read './tmp', sorry.
Gruss
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
my qpsmtpd is running on a number of servers that filter the mail before
sending onto the real mail server. Since the users are not available a
plugin can be used to query the real mail server.
Is there one available already that does this? It would vary based on
the mail server . . .
net-qmail doesn't have this functionality (rejecting based on recipient
during the smtp conversation.
We should probably stop discussing the features of various qmail patchsets.
The point already made is that there are still lots of mailservers in the
real world who can/do not check recipients
Nonsense. I block all mail from and have done for 2 years (maybe
more). There's no harm been done, and for my little domain with 2
users I'm blocking up to 30k emails a day that way.
Oh yes, there is harm done, unless you don't care for bounces. At least
my users do, because they really
Unfortunately some systems do accept mails and only then notice
that they can't deliver them, so I have to accept bounces
We shall also not forget the roots of qpsmtpd. It is a replacement for
qmail-smtpd and qmail is a major example of a MTA which accepts mail
first and then sends bounce
The client then sends a DATA request, and waits for the
response:
One major reason for bounce generation is mail for nonexistent recipients.
As qmail-smtpd is unable to check recipients, it accepts mail for any
localport. Of course such wrong recipients can and should (as done
Here's an interesting idea about setting spamd and clamav as a EC2
service
Excuse my ignorance, but what is an ec2 service?
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
Basically it sends each mail to spamd for each of the recipients using
the User: header. Spamd then uses the config of the supplied user.
Sounds rather inefficent, because the same tests are done multiple times
for the same mail. Shouldn't it be possible to have the mail scanned by
On another request by James i just installed the styler plugin (see
http://iar.spb.ru/projects/dokuwiki/styler) which adds some more page
formatting features.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
1. Some experiment of mine broke the wiki, so there was an unplanned outage.
Sorry about that.
2. I took the opportunity and upgraded dokuwiki to the latest version. I
also installed a new template, which i think is much nicer. I hacked
this template to have the sidebar user editable. I
Michael, do you have referrerlogs for the wiki? That might be helpful in
deciding whether its better to rename a page or to live with a
suboptimal name.
I've just made a quick analysis of the logfiles. Only a handful of pages
have been referenced at all from external. The only real link is
When sendmail is not installed, whatever MTA package replaces it, is
generally configured to replace it. I think qmail may do this by
listening on 127.0.0.1:25 rather than providing /usr/sbin/sendmail.
qmail does provide /usr/sbin/sendmail. Speaking out of my experience i
also believe that
Debian uses /usr/lib/sendmail
No it doesn't. It uses /usr/sbin/sendmail. However, /usr/sbin/sendmail
and /usr/lib/sendmail are the two standard places where unix software
might expect a sendmail-style program for mail submission. Most current
software probably uses /usr/sbin/sendmail, but
So, do I need the qmail-smtpd up and running at all?
No. qpsmtpd was originally designed to be a drop-in replacement for
qmail-smtpd. It will for example read the same configuration files
as qmail-smtpd does (plus the ones special to qpsmtpd).
Could I just disable the qmail-smtpd and make
As some of you might or might now know, i'm the holder of the qpsmtpd.org
domain and also host the qpsmtpd wiki on wiki.qpsmtpd.org. Now while the
wiki still seems to be a good idea, i've noticed that there have been next
to no contributions to it lately. This is a bit of a shame, as qpsmtpd
Having RTFM, I have worked it out. I think I need to use the forkserver
and not use tcprules. ie use the scripts in the wiki.
For only 800 mails per day in my opinion tcpserver is fine as well. I
process 8000-1000 mails per day and still use tcpserver (and a rather
outdated qpsmtpd 0.28 with
For only 800 mails per day in my opinion tcpserver is fine as well. I
process 8000-1000 mails per day and still use tcpserver (and a rather
outdated qpsmtpd 0.28 with custom patches).
I meant 8000-1 mails per day.
Regards
Michael
--
It's an insane world, but i'm proud to be a
I guess I would vote for Twiki if we were changing.
Sorry, twiki isn't going to be installed on _any_ machine controlled by
me. twiki has a bad history of (overly stupid!) security incidents and
its main developer (Peter Thoeny) has reacted very unfriendly and also
unprofessional to people
I can't really comment on your situation because I wasn't there... But I
think that sometimes it's prudent to keep such security problems
secret until a solution is found.
Discussing them (and their solutions) on mailing lists and such is one
thing, but publicly announcing the problem to
Unless and until Michael decides that he no longer wants to host the
wiki, I think he has the final word.
No. While i own qpsmtpd.org and run the current wiki, my opinion is in
no way superiour than those of others. If the project (as represented by
us all) feels that a twiki would help it and
Unless and until Michael decides that he no longer wants to host the
wiki, I think he has the final word.
No. While i own qpsmtpd.org and run the current wiki, my opinion is in
no way superiour than those of others. If the project (as represented by
us all) feels that a twiki would help it and
- Isn't /etc/qpsmtpd a weird place to put configurations? Don't these
belong in $QPSMTPD_HOME/config ?
Actually /etc/qpsmtpd is FHS compliant, which the latter is not. The
debian package of qpsmtpd puts all configuration into /etc/qpsmtpd.
Maybe the plugin author uses the debian version?
would be thankful for feedback by german readers of the magazine.
Woohoo. Of course i meant readers capable of german, not only german
readers... I do not want to offend e.g. Peter J. Holzer (who seems to
be austrian).
Regards
Michael
--
It's an insane world, but i'm proud to be a
+$self-respond(250, 'Queued');
Why not something like 250 Not queued, but do not send again? A MTA
won't care for the message after the 250, but this would give a debugging
admin a hint what really happended.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of
... what happens if you write something in front of a 100 MB or larger
mail?
... or several huge mails are processed at the same time?
I suggest a different solution:
Add two new hooks, one for texts leading the message, one for texts
trailing the message. The hooks would be called by the
This completely eliminates the need to actually modify the body text
at any time, but the queue plugin will assemble the leading text,
the message and the trailing text just in time when writing to the
queue or whatever target.
assemble ist the wrong word here, because very often no assembly
No, the connect hook has already fired by the time that the TLS connection is
established.
But if the switch to TLS has basically the same effect as opening a new
connection, we should probably run the connect-hook again at that time.
Or we could have an additional 'connect_tls' (or
User-Agent: Mutt/1.4.2.1i
But the date looks fine in Pine...
No, it is somewhat strange because it has two leading spaces:
Date: Fri, 28 Jul 2006 08:42:14 -0300
However, every decent MUA should be able to handle this. Says
a lot about thunderbird, i guess :)
Gruss
Michael
--
It's an
Just as a note for others who might run across this problem:
I just had a call from a client who had trouble setting up an email account
with us using Outlook. He entered the account information into Outlook and
then tried the available function to test an account. He always got a
cryptic error
I checked a little bit more into the situation to see if i can find a way
to identify such test mails and excempt them from the test, but could not
find a criteria which would be secure enough.
Oh, err on my side. What i thought to be a unique identifier or something
like that in the subject
Wouldn't it be better to check for the X-Mailer line instead:
X-Mailer: Microsoft Outlook Express 6.00.2800.1807
since that should be far more accurate.
It seems that the test message is created by a complete different part of
Outlook than normal messages. The test message does not contain
The problem is that the header checks all happen in data_post and the
relay check is during connect (and rcpt). It may be possible to create
a hook for data_post which bypasses the remaining data_post hooks iff
$connection-relay_client()...
Not a good solution because it lacks
c.) Reintroduce per-user-configuration and make it part of the core.
Ok, ok, i'm somewhat confused. Shouldn't write emails while peeking with
one eye at the world cup game (at which we germans are at risk to get
kicked out).
Of course per-user-configuration won't help with configuration issues
The trick is to use anchors: /\A \d+ \z/.
Whats \A and \z? Wouldn't be /^\d+$/ sufficient?
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
I'm somewhat confused right now. I did not follow qpsmtpd development for
quite some time (yeah, i feel ashamed) and i might have missed a change,
but i can't find documentation about it.
I've downloaded the checkbasicheaders plugin from svn and found it to be
non working. While analyzing the
You cannot use check_basicheaders from svn without the matching
Qpsmtpd::Plugins. You also didn't mention whether you pulled from trunk
or branches/0.3x (the latter is where active development is occurring).
I used the link in the Wiki. But thanks for the clarification, in the
meanwhile i
Are you running any large mail lists? Every time the fedora list
backs up a few hours I have to wonder if it is just some thousands
of people adding an intentional delay to their reception.
Stop the nonsense. We are talking about a delay of a few seconds here
per connection. Every good MTA
One little more patch to the Auth.pm
$loginas/$user could be a string, and != is for numbers
Of course. I apparently was really too tired at that evening.
Thanks for pointing out this error.
Regards
Michael
--
It's an insane world, but i'm proud to be a part of it. -- Bill Hicks
I've a question about AUTH LOGIN
If for example, you write:
AUTH LOGIN bXl0ZXN0dXNlcg== (encode_base64(mytestuser))
shouldn't qpsmtpd reply with something like:
UGFzc3dvcmQ6 (encode_base64(Password:))
and wait for the password?
Interesting. I fixed this
3. Client sends one line:
AUTH LOGIN Passhash\0Username\0Password
Forget this, i was wrong, and qpsmtpd is also wrong (and is also wrong
in AUTH PLAIN).
AUTH LOGIN is not specified by any RFC. However it is used with two
parameters (also called responsed in the nomenclature of SMTP AUTH):
I have just noticed that the check_basicheaders plugin rejects invites
from google's new calendar application.
[...]
Here is the header on the message. It appears that it does have a date
header but it appears after the boundary header.
Nope. I've just checked it with my own Google-Account.
I also see the need for some decent documentation for qpsmtpd. I believe
that a wiki would be helpful for creating documentation in a community
effort. Therefore i just installed a Dokuwiki under http://wiki.qpsmtpd.org.
For editing a user account must be created (this prevents spam).
Comments?
However, at the point it hooks, the new imaplogin program will accept
only two arguments at the hook point, and the 'pop/imap before smtp'
script name is one too many.
I don't understand what that means. Is there no workaround?
So, I'm looking for an alternative method of allowing
my $binary = $self-qp-config(smtpauth-checkpassword)
or return (DECLINED);
return(DECLINED) if ( ! -x $binary );
my ($untainted) = $binary =~ /^(.*)$/;
open(CPW,|$untainted /usr/bin/true 30);
# checkpassword will fail if it's not give something to execute.
I would, however, suggest changing the code as following:
Of course i managed to introduce a bug into that code. So this one should
work:
my $command = $self-qp-config(smtpauth-checkpassword)
or return (DECLINED);
my ($binary, $params) = $command =~ /^(\S+)(.*)$/;
I would, however, suggest changing the code as following:
Of course i managed to introduce a bug into that code. So this one should
work:
my $command = $self-qp-config(smtpauth-checkpassword)
or return (DECLINED);
my ($binary, $params) = $command =~ /^(\S+)(.*)$/;
my $binary = $self-qp-config(smtpauth-checkpassword)
or return (DECLINED);
return(DECLINED) if ( ! -x $binary );
my ($untainted) = $binary =~ /^(.*)$/;
open(CPW,|$untainted /usr/bin/true 30);
# checkpassword will fail if it's not give something to execute.
I strongly believe that users should never solely *depend on* virus
filtering provided by the ISP, and must run a local virus scanner. This
is a security issue, not one of convenience.
While you are right, this does not free the ISP from having to keep its
virus scanner running when offered as
AUTH happens after the connect hooks have already fired, so there is no
way to short-circuit the dnsbl checks at that point.
Oops, shame on me. You are absolutely right. However there is no need to
bypass the chack in the connect handler because the dnsbl does the final
DENY of the connection
This code will not work for several reasons:
Sorry, but despite your statement the code works. At least with my somewhat
pre 0.29 cvs version... But the code it depends on was probably changed in
the later versions, so i will fully accept the fact, that it won't work with
newer versions.
Actually I was thinking of adding a new return code which would skip
past everything to just queue the mail. Something like:
I would have no use for that, because i want some plugins to run for
all users, e.g. a plugin checking if a mail address with a local target
does exist. I also do virus
Mostly a matter of time/testing. I committed the auth plugins I could
test or at least read through (I'm not immediately familiar with the
checkpassword protocol). If some other people can test the plugin and
confirm that it at least basically works, I don't have any problem
Custom implementations are allowed to change anything as long
as they take out STARTTLS from the re-advertisement in tls mode.
While that is true to the words of the standard, i have already
seen working implementations which continue to announce STARTTLS
even after the session has switched to
I'm currently trying to hack TLS support for qpsmtpd. The idea is to use
IO::Socket::TLS. I implemented a new starttls command, my current code is:
why not use an stunnel proxy?
Because ultimately qpsmtpd should be a full-featured MTA, and a
full-featured MTA supports TLS natively. Thats
I'm currently trying to hack TLS support for qpsmtpd. The idea is to use
IO::Socket::TLS. I implemented a new starttls command, my current code is:
sub starttls {
my ($self) = @_;
$self-respond (220, Go ahead with TLS);
my $tlssocket = IO::Socket::SSL-new_from_fd(
0,
'+',
I was unable to follow the further qpsmtpd development for some time now.
Recently i heard about the high performance branch and now are willing to
know what it is about and what it tries to achieve.
Maybe someone can give a summary?
Regards
Michael
--
It's an insane world, but i'm proud
I've looked around in the docs and on the list archives for TLS support
in qpsmtpd but haven't found any information.
To my latest knowledge this has still not been done. I always wanted to take
a look into this, because it should not be too complicated given that there
are ready available
1 - 100 of 174 matches
Mail list logo