Comments (5)
How do you feel about docker?
I haven't added Docker support because there are several ways of doing things, eg. which base packages to use, how to structure all the containers (mongodb for example could be configured either as standalone, as a replica set or as a sharded cluster, each having different requirements), should there be separate containers for different services like IMAP, POP3, SMTP etc. or use the most minimal approach to be able to spin up a fast testing environment, so I'm not sure what's the best way to go. For now I've kept the issue open and the only semi-official docker project to turn to has been https://github.com/astzweig/docker-wildduck as this is where I send people who ask about Docker. If you are willing to figure out a good approach and also to maintain it, then I would not mind adding it to the project.
Have you considered moving to TypeScript?
I'm not a fan of anything that requires transpiling to run. The code base is also not too big (~50k LOC excluding dependencies) but not small either so rewriting it is not easy. For example, I've been spending a lot of time to convert old callbacks to async..await
and have achieved quite little so far, API handlers are all using await but the IMAP code still runs mostly on callbacks. Using JSDoc for some Typescript compatibility and IDE integration would be quite nice though.
is there any other place where we can chat?
Sure, why not, I set up a Gitter chat here, have been using it for some of my other projects as well.
from wildduck.
Or solve this with folder actions:
messages added to X: after Y minutes move INBOX as Unseen
from wildduck.
@andris9 I'd love to work on this. I have experience with nodejs and am really interested in implementing this. Could you point me in the right direction please? Where do I start?
from wildduck.
@rakshith-ravi thanks for the offer. In general snoozing usually means that an email is moved to a temporary folder and once snoozing timeout is reached, the message is moved back to the original location. In regard of WildDuck it would require a new API endpoint somewhere here to move message and mark message as snoozed and also a task to move it back. Task handling is currently half baked, tasks are inserted directly to dabase (ie. here) and tasks can not be delayed (these are handled immediately).
So the steps would be linke this:
- add API endpoint to mark message as snoozed (this would move the message to Snooze folder and create the folder if it does not yet exist)
- The same API endpoint should also set up a delayed task to retrieve the message after snooze time
- Create a task handler to move snoozed message back to original location
- Update task handling to support delayed tasks
from wildduck.
Hey @andris9. Sorry about the delayed response. Thank you for those links. They really do help me in understanding what's going on with the code. I'll be putting a few PRs over the next few days (along with issues for them). I'll start with a few really small ones before I move on to the big, snoozing one (I guess you could say.....I've snoozed that one for later xD).
Jokes aside, I wanted to get your opinion on a few things:
- How do you feel about docker? I saw the thread in the other issue about it and didn't really see any progress. If I put up a PR with the Dockerfile, would you mind setting up an auto-build with travis (or whichever CI/CD system we use)?
- Have you considered moving to TypeScript? I know it's a huge and daunting task, but might actually prove to be useful in the long run, with most errors being identified in compile-time rather than run-time. It can be done progressively. Doesn't need to be done all in one go. I have a good architecture in mind for TypeScript. Do let me know if you'd be interested in that.
- This is kinda a silly one, but is there any other place where we can chat? Cluttering GitHub issues to clear my doubts isn't exactly the best way to go 🙈
from wildduck.
Related Issues (20)
- IMAP handlers and commands should be consistent in the naming convention of `code` and `responseMessage` (similar to `smtp-server`) HOT 3
- Users can create infinite mailboxes HOT 2
- Message handler not taking into consideration mailbox flags HOT 2
- Message handler not deleting newly created thread in rollback function HOT 1
- Feature request: Ability to pass custom resolver for `dns.reverse` HOT 1
- Possible bug - `onCopy` handler does not check for `user` on mailbox find HOT 3
- Typo `validateSequnce` > `validateSequence` HOT 2
- Question about Attachment's fields (disposition and hash) HOT 2
- Feature request: onStatus handler could use parallel countDocument request for performance improvement HOT 1
- Feature request: onOpen handler could use `distinct` instead of `find` (performance gain?) HOT 3
- Bug: onSearch handler has `returned` variable which causes early return and timeout (callback invocation is expected) HOT 4
- Feature: IMAP4rev2 support HOT 3
- Bug: imaptest results and issues HOT 13
- Bug: Messages not showing when appended to sent folder due to `ignore` HOT 4
- Bug: `imaptest` BAD reply for command: `search *:3: 26.32` HOT 3
- Bug: `imaptest` BAD Unexpected whitespace at position 14: `fetch 1,* uid` HOT 2
- Feature: `onConnect` handler (similar to `smtp-server`)
- Bug: `tls` now supports `dhparam: 'auto'` HOT 4
- Bug: WildDuck does not handle unauthenticated state properly with Thunderbird (and possibly other mail clients) HOT 1
- Bug: Duplicate Message-ID's can be appended to same mailbox path (unlike Gmail which detects Message-ID) HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wildduck.