Re: [Dovecot] zlib Plugin Dovecot 2.0 - ostream
Hi Timo... I made the plugin like you say. The header part is saved by dovecot, with o_stream_send , and the body with my function. This implementation, works fine. But i need to get / change some values to create the "link" from header to body. When a email is saved, have the S an W flags, that is the size of email. There is a way to increase this Flags ? I need to put one more line in the header, to have some link to body. The second is, the name of file. I use the o_stream_get_name, passing the output ostream, but the return is empty. The name is avaliable when ? Tks Timo. 2010/4/20 Timo Sirainen > You should write the message header to the ostream that you get, and > message body to some other file that you create. Use the o_stream_send() > function to write the message header to the ostream (which does > basically the same as write(fd)). I don't see how getting the stream's > fd would help with anything. > > On Tue, 2010-04-20 at 11:54 -0300, Alex Baule wrote: > > Because my plugin will separate the body of the message header. > > > > With the FD I have control over the message to separate it. > > > > Do you have any suggestions for this separation? > > > > I do not quite understand how the struct ostream works. > > > > Tks Timo. > > > > > > > > 2010/4/20 Timo Sirainen > > > > > On Tue, 2010-04-20 at 11:40 -0300, Alex Baule wrote: > > > > > > > There is a way to get the file descriptor from output used in ostream > > > zlib > > > > plugin ? > > > > > > No. Why do you need it? You should be writing to ostream, not to its > fd. > > > > > > > >
Re: [Dovecot] zlib Plugin Dovecot 2.0 - ostream
Hi Timo I'm doing the plugin based on what you said. But I'll add a line in the message header, so the S and W (size of email) flags, on the file name has to be changed ... There is a way to do that in the plugin? 2010/4/20 Alex Baule > If I had the file descriptor, I will reuse my functions to do this, made > in a separate library, that i use in the MTA. > > So no need to rewrite again the part of split the message. > > > > 2010/4/20 Timo Sirainen > >> You should write the message header to the ostream that you get, and >> message body to some other file that you create. Use the o_stream_send() >> function to write the message header to the ostream (which does >> basically the same as write(fd)). I don't see how getting the stream's >> fd would help with anything. >> >> On Tue, 2010-04-20 at 11:54 -0300, Alex Baule wrote: >> > Because my plugin will separate the body of the message header. >> > >> > With the FD I have control over the message to separate it. >> > >> > Do you have any suggestions for this separation? >> > >> > I do not quite understand how the struct ostream works. >> > >> > Tks Timo. >> > >> > >> > >> > 2010/4/20 Timo Sirainen >> > >> > > On Tue, 2010-04-20 at 11:40 -0300, Alex Baule wrote: >> > > >> > > > There is a way to get the file descriptor from output used in >> ostream >> > > zlib >> > > > plugin ? >> > > >> > > No. Why do you need it? You should be writing to ostream, not to its >> fd. >> > > >> > > >> >> >
Re: [Dovecot] zlib Plugin Dovecot 2.0 - ostream
If I had the file descriptor, I will reuse my functions to do this, made in a separate library, that i use in the MTA. So no need to rewrite again the part of split the message. 2010/4/20 Timo Sirainen > You should write the message header to the ostream that you get, and > message body to some other file that you create. Use the o_stream_send() > function to write the message header to the ostream (which does > basically the same as write(fd)). I don't see how getting the stream's > fd would help with anything. > > On Tue, 2010-04-20 at 11:54 -0300, Alex Baule wrote: > > Because my plugin will separate the body of the message header. > > > > With the FD I have control over the message to separate it. > > > > Do you have any suggestions for this separation? > > > > I do not quite understand how the struct ostream works. > > > > Tks Timo. > > > > > > > > 2010/4/20 Timo Sirainen > > > > > On Tue, 2010-04-20 at 11:40 -0300, Alex Baule wrote: > > > > > > > There is a way to get the file descriptor from output used in ostream > > > zlib > > > > plugin ? > > > > > > No. Why do you need it? You should be writing to ostream, not to its > fd. > > > > > > > >
Re: [Dovecot] zlib Plugin Dovecot 2.0 - ostream
You should write the message header to the ostream that you get, and message body to some other file that you create. Use the o_stream_send() function to write the message header to the ostream (which does basically the same as write(fd)). I don't see how getting the stream's fd would help with anything. On Tue, 2010-04-20 at 11:54 -0300, Alex Baule wrote: > Because my plugin will separate the body of the message header. > > With the FD I have control over the message to separate it. > > Do you have any suggestions for this separation? > > I do not quite understand how the struct ostream works. > > Tks Timo. > > > > 2010/4/20 Timo Sirainen > > > On Tue, 2010-04-20 at 11:40 -0300, Alex Baule wrote: > > > > > There is a way to get the file descriptor from output used in ostream > > zlib > > > plugin ? > > > > No. Why do you need it? You should be writing to ostream, not to its fd. > > > > signature.asc Description: This is a digitally signed message part
Re: [Dovecot] zlib Plugin Dovecot 2.0 - ostream
Because my plugin will separate the body of the message header. With the FD I have control over the message to separate it. Do you have any suggestions for this separation? I do not quite understand how the struct ostream works. Tks Timo. 2010/4/20 Timo Sirainen > On Tue, 2010-04-20 at 11:40 -0300, Alex Baule wrote: > > > There is a way to get the file descriptor from output used in ostream > zlib > > plugin ? > > No. Why do you need it? You should be writing to ostream, not to its fd. > >
Re: [Dovecot] zlib Plugin Dovecot 2.0 - ostream
On Tue, 2010-04-20 at 11:40 -0300, Alex Baule wrote: > There is a way to get the file descriptor from output used in ostream zlib > plugin ? No. Why do you need it? You should be writing to ostream, not to its fd. signature.asc Description: This is a digitally signed message part
Re: [Dovecot] zlib Plugin Dovecot 2.0
On 16.4.2010, at 19.15, Alex Baule wrote: > This iov is every line from the new emaill to save ? > > Or this is a email block with X bytes ? > > In my function to write email, i split the email by \n, to save it splited, > and if the iov is splited by \n, is good for me. You can't assume anything about iov. iov_count is typically 1, but can be much more. Each block's length can be from 1 byte to anything (typically less than 8kB I guess).
Re: [Dovecot] zlib Plugin Dovecot 2.0
Ok ! That's easy. In the sendv rewrite, have this: for (i = 0; i < iov_count; i++) { if (o_stream_emexis_send_chunk(emexis_stream, iov[i].iov_base, iov[i].iov_len) < 0) return -1; bytes += iov[i].iov_len; } This iov is every line from the new emaill to save ? Or this is a email block with X bytes ? In my function to write email, i split the email by \n, to save it splited, and if the iov is splited by \n, is good for me. 2010/4/16 Timo Sirainen > On Fri, 2010-04-16 at 18:34 +0300, Timo Sirainen wrote: > > On Fri, 2010-04-16 at 09:55 -0300, Alex Baule wrote: > > > > > Part of reading I already migrated, only that the piece of writing (the > new > > > part in the plugin) I need to understand some things about the > operation in > > > order to migrate and redo the same functions with the separation of > body / > > > header > > > > So you also want to add support for the split operating directly during > > saving new mails? > > > > I guess you can copy&paste most of the code from zlib-plugin.c and just > > implement a new ostream. ostream-bzlib.c should give a good example. You > > just need to implement: > > Oh, and the output ostream that you get from create() is the one that > ends up in the maildir. So I guess you should be writing headers there, > and write the body to another file some other way. > >
Re: [Dovecot] zlib Plugin Dovecot 2.0
On Fri, 2010-04-16 at 18:34 +0300, Timo Sirainen wrote: > On Fri, 2010-04-16 at 09:55 -0300, Alex Baule wrote: > > > Part of reading I already migrated, only that the piece of writing (the new > > part in the plugin) I need to understand some things about the operation in > > order to migrate and redo the same functions with the separation of body / > > header > > So you also want to add support for the split operating directly during > saving new mails? > > I guess you can copy&paste most of the code from zlib-plugin.c and just > implement a new ostream. ostream-bzlib.c should give a good example. You > just need to implement: Oh, and the output ostream that you get from create() is the one that ends up in the maildir. So I guess you should be writing headers there, and write the body to another file some other way. signature.asc Description: This is a digitally signed message part
Re: [Dovecot] zlib Plugin Dovecot 2.0
On Fri, 2010-04-16 at 09:55 -0300, Alex Baule wrote: > Part of reading I already migrated, only that the piece of writing (the new > part in the plugin) I need to understand some things about the operation in > order to migrate and redo the same functions with the separation of body / > header So you also want to add support for the split operating directly during saving new mails? I guess you can copy&paste most of the code from zlib-plugin.c and just implement a new ostream. ostream-bzlib.c should give a good example. You just need to implement: - sendv(): this works similar to writev() syscall. Here you need to keep read the input bytes and track when the message header ends and write to different files before/after that. - flush(): If you do any buffering, flush it here. That's about it. Much simpler than istreams! signature.asc Description: This is a digitally signed message part
Re: [Dovecot] zlib Plugin Dovecot 2.0
Thanks Timo, I have another question about the plugin. Part of reading I already migrated, only that the piece of writing (the new part in the plugin) I need to understand some things about the operation in order to migrate and redo the same functions with the separation of body / header Can you explain to me ? Tks again ! 2010/4/16 Timo Sirainen > On Fri, 2010-04-09 at 11:42 -0300, Alex Baule wrote: > > > I developed a plugin based on the zlib plugin, but want to port it to > > dovecot 2.0. > > > > There are some differences in the 2.0 plugin, which I did not quite > > understand how it works for me to readjust it in my plugin. > > I don't think you need to do (almost?) any changes. v2.0's zlib plugin > is very different from v1.x, but that's because I'm using zlib library > in a different way. Not because of some istream changes. > >
Re: [Dovecot] zlib Plugin Dovecot 2.0
On Fri, 2010-04-09 at 11:42 -0300, Alex Baule wrote: > I developed a plugin based on the zlib plugin, but want to port it to > dovecot 2.0. > > There are some differences in the 2.0 plugin, which I did not quite > understand how it works for me to readjust it in my plugin. I don't think you need to do (almost?) any changes. v2.0's zlib plugin is very different from v1.x, but that's because I'm using zlib library in a different way. Not because of some istream changes. signature.asc Description: This is a digitally signed message part
Re: [Dovecot] zlib Plugin Dovecot 2.0
Hi Paschal You do not understand what I want. I developed a plugin based on the zlib plugin, but want to port it to dovecot 2.0. There are some differences in the 2.0 plugin, which I did not quite understand how it works for me to readjust it in my plugin. As in the source code there are not many comments, I do not quite know what each function does, if they are all necessary in my adaptation. In developing the plugin in version 1.4, Timo helped me a lot. What I need to know is how the hooks on write emails do this, and what the differences in the read function, since the code is different from version 1.4 to 2.0. 2010/4/9 Alex Baule > I Dont want the configuration. > > I Want know how is implemented. > > Explain, the functions, the hooks to get write a email > > stuffs like this. > > 2010/4/8 Alex Baule > > Hi Everyone >> >> Someone can explain to me the difference from zlib 1.2.X and 2.0 beta4 ?? >> >> In zlib from 2.0 beta4, Which part of the plugin is responsible for write >> the compressed message ? >> >> >> >
Re: [Dovecot] zlib Plugin Dovecot 2.0
Hi Paschal You do not understand what I want. I developed a plugin based on the zlib plugin, but want to port it to dovecot 2.0. There are some differences in the 2.0 plugin, which I did not quite understand how it works for me to readjust it in my plugin. As in the source code there are not many comments, I do not quite know what each function does, if they are all necessary in my adaptation. In developing the plugin in version 1.4, Timo helped me a lot. What I need to know is how the hooks on write emails do this, and what the differences in the read function, since the code is different from version 1.4 to 2.0.
Re: [Dovecot] zlib Plugin Dovecot 2.0
On 04/09/2010 02:45 PM Alex Baule wrote: > I Dont want the configuration. > > I Want know how is implemented. > > Explain, the functions, the hooks to get write a email > > stuffs like this. How it is implemented: http://hg.dovecot.org/dovecot-2.0/file/tip/src/plugins/zlib Regards, Pascal -- The trapper recommends today: defaced.1009...@localdomain.org
Re: [Dovecot] zlib Plugin Dovecot 2.0
I Dont want the configuration. I Want know how is implemented. Explain, the functions, the hooks to get write a email stuffs like this. 2010/4/8 Alex Baule > Hi Everyone > > Someone can explain to me the difference from zlib 1.2.X and 2.0 beta4 ?? > > In zlib from 2.0 beta4, Which part of the plugin is responsible for write > the compressed message ? > > >
Re: [Dovecot] zlib Plugin Dovecot 2.0
On 04/08/2010 04:56 PM Alex Baule wrote: > Hi Everyone > > Someone can explain to me the difference from zlib 1.2.X and 2.0 beta4 ?? > > In zlib from 2.0 beta4, Which part of the plugin is responsible for write > the compressed message ? > For reading compressed files you will need to enable zlib plugin for the used protocols. When using imap and pop3, configure something like: protocol imap { mail_plugins = zlib } protocol pop3 { mail_plugins = zlib } If you want to store compressed messages (only for v2.0+) you have to configure the zlib plugin in the plugin section: plugin { zlib_save_level = 6 # 1 - 9 (6 = default) zlib_save = gz # or bz2 } When you are using the dovecot-lda binary, add the zlib plugin: protocol lda { mail_plugins = zlib } And when using the lmtp, also activate the zlib for the lmtp: protocol lmtp { mail_plugins = zlib } And finally, if your IMAP client is able to read compressed mails, change your protocol imap configuration to something like: protocol imap { mail_plugins = zlib imap_zlib } Regards { Pascal } -- The trapper recommends today: cafebabe.1009...@localdomain.org