Get number of emails in specific directory on mail server
I am trying to find a way to connect to a mail server and find out how many emails there are in a specific directory. In this specific case, it is the Spam directory in my Gmail account. I am not trying to download the emails in this directory but just count or query the number. I also need to be able to do this from the Terminal.
I remember, a number of years ago, reading a way to do this by using the POP3 protocol to query a specific directory and get a few statistics about that it, including the number of emails. I just tried to find them again but haven't been able to.
email gmail
add a comment |
I am trying to find a way to connect to a mail server and find out how many emails there are in a specific directory. In this specific case, it is the Spam directory in my Gmail account. I am not trying to download the emails in this directory but just count or query the number. I also need to be able to do this from the Terminal.
I remember, a number of years ago, reading a way to do this by using the POP3 protocol to query a specific directory and get a few statistics about that it, including the number of emails. I just tried to find them again but haven't been able to.
email gmail
add a comment |
I am trying to find a way to connect to a mail server and find out how many emails there are in a specific directory. In this specific case, it is the Spam directory in my Gmail account. I am not trying to download the emails in this directory but just count or query the number. I also need to be able to do this from the Terminal.
I remember, a number of years ago, reading a way to do this by using the POP3 protocol to query a specific directory and get a few statistics about that it, including the number of emails. I just tried to find them again but haven't been able to.
email gmail
I am trying to find a way to connect to a mail server and find out how many emails there are in a specific directory. In this specific case, it is the Spam directory in my Gmail account. I am not trying to download the emails in this directory but just count or query the number. I also need to be able to do this from the Terminal.
I remember, a number of years ago, reading a way to do this by using the POP3 protocol to query a specific directory and get a few statistics about that it, including the number of emails. I just tried to find them again but haven't been able to.
email gmail
email gmail
edited Feb 17 at 14:01
jimmij
32.1k874108
32.1k874108
asked Feb 16 at 18:39
XJDHDRXJDHDR
1614
1614
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
Connecting to gmail is tricky as google tries to discourage people from using other mail clients than web browsers. First you need to visit google account and check the setting that allows "apps & devices to access your account in a less secure way". Google then will frequently spam your mailbox asking to uncheck this.
Now, to the point.
To access gmail
via imap (google discourages pop protocol and so do I) you need to use 993
port and add control line feed to openssl
option. Spam folder is [Gmail]/Spam
and, as I understood, you want to get its next unique ID, so the typical session should look like this:
$ openssl s_client -connect imap.gmail.com:993 -crlf
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = imap.gmail.com
verify return:1
---
[...]
---
* OK Gimap ready for requests from 10.0.0.1 n9mb133f65154lxl
a1 LOGIN <user> <password>
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
a1 OK user@gmail.com authenticated (Success)
a2 STATUS "[Gmail]/Spam" (UIDNEXT)
* STATUS "[Gmail]/Spam" (UIDNEXT 2127)
a2 OK Success
a3 LOGOUT
* BYE LOGOUT Requested
a3 OK 73 good day (Success)
read:errno=0
The commands actually typed by you are those started with tags aN
. Tags are obligatory by imap protocol, so don't forget about them; they don't need to be in aN
form, any string is fine. Obviously change <user>
and <password>
to yours.
add a comment |
You can try it on this way:
telnet mailhost 110 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
And you will get in variable NMSG
the number of the messages. I am not sure pop can deal with mail folders. It just report messages in mailbox.
In case of SSL/TLS POP3 implementation you can use code like this:
openssl s_client -connect mailhost:995 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
If your mail delivery software mark SPAM messages adding "SPAM" word in subject you can try as last line in script something like:
NMSG=$(grep SPAM /tmp/outfile|wc -l)
add a comment |
I managed to find another easier way of doing what I need using Curl and the IMAP protocol:
curl --url "imaps://imap.gmail.com" --user "<email address>":"<password>" -X 'STATUS [Gmail]/Spam (MESSAGES)'
Stdout for this command will be the following (with X being the number of messages present, both read and unread):
* STATUS "[Gmail]/Spam" (MESSAGES X)
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f501077%2fget-number-of-emails-in-specific-directory-on-mail-server%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Connecting to gmail is tricky as google tries to discourage people from using other mail clients than web browsers. First you need to visit google account and check the setting that allows "apps & devices to access your account in a less secure way". Google then will frequently spam your mailbox asking to uncheck this.
Now, to the point.
To access gmail
via imap (google discourages pop protocol and so do I) you need to use 993
port and add control line feed to openssl
option. Spam folder is [Gmail]/Spam
and, as I understood, you want to get its next unique ID, so the typical session should look like this:
$ openssl s_client -connect imap.gmail.com:993 -crlf
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = imap.gmail.com
verify return:1
---
[...]
---
* OK Gimap ready for requests from 10.0.0.1 n9mb133f65154lxl
a1 LOGIN <user> <password>
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
a1 OK user@gmail.com authenticated (Success)
a2 STATUS "[Gmail]/Spam" (UIDNEXT)
* STATUS "[Gmail]/Spam" (UIDNEXT 2127)
a2 OK Success
a3 LOGOUT
* BYE LOGOUT Requested
a3 OK 73 good day (Success)
read:errno=0
The commands actually typed by you are those started with tags aN
. Tags are obligatory by imap protocol, so don't forget about them; they don't need to be in aN
form, any string is fine. Obviously change <user>
and <password>
to yours.
add a comment |
Connecting to gmail is tricky as google tries to discourage people from using other mail clients than web browsers. First you need to visit google account and check the setting that allows "apps & devices to access your account in a less secure way". Google then will frequently spam your mailbox asking to uncheck this.
Now, to the point.
To access gmail
via imap (google discourages pop protocol and so do I) you need to use 993
port and add control line feed to openssl
option. Spam folder is [Gmail]/Spam
and, as I understood, you want to get its next unique ID, so the typical session should look like this:
$ openssl s_client -connect imap.gmail.com:993 -crlf
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = imap.gmail.com
verify return:1
---
[...]
---
* OK Gimap ready for requests from 10.0.0.1 n9mb133f65154lxl
a1 LOGIN <user> <password>
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
a1 OK user@gmail.com authenticated (Success)
a2 STATUS "[Gmail]/Spam" (UIDNEXT)
* STATUS "[Gmail]/Spam" (UIDNEXT 2127)
a2 OK Success
a3 LOGOUT
* BYE LOGOUT Requested
a3 OK 73 good day (Success)
read:errno=0
The commands actually typed by you are those started with tags aN
. Tags are obligatory by imap protocol, so don't forget about them; they don't need to be in aN
form, any string is fine. Obviously change <user>
and <password>
to yours.
add a comment |
Connecting to gmail is tricky as google tries to discourage people from using other mail clients than web browsers. First you need to visit google account and check the setting that allows "apps & devices to access your account in a less secure way". Google then will frequently spam your mailbox asking to uncheck this.
Now, to the point.
To access gmail
via imap (google discourages pop protocol and so do I) you need to use 993
port and add control line feed to openssl
option. Spam folder is [Gmail]/Spam
and, as I understood, you want to get its next unique ID, so the typical session should look like this:
$ openssl s_client -connect imap.gmail.com:993 -crlf
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = imap.gmail.com
verify return:1
---
[...]
---
* OK Gimap ready for requests from 10.0.0.1 n9mb133f65154lxl
a1 LOGIN <user> <password>
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
a1 OK user@gmail.com authenticated (Success)
a2 STATUS "[Gmail]/Spam" (UIDNEXT)
* STATUS "[Gmail]/Spam" (UIDNEXT 2127)
a2 OK Success
a3 LOGOUT
* BYE LOGOUT Requested
a3 OK 73 good day (Success)
read:errno=0
The commands actually typed by you are those started with tags aN
. Tags are obligatory by imap protocol, so don't forget about them; they don't need to be in aN
form, any string is fine. Obviously change <user>
and <password>
to yours.
Connecting to gmail is tricky as google tries to discourage people from using other mail clients than web browsers. First you need to visit google account and check the setting that allows "apps & devices to access your account in a less secure way". Google then will frequently spam your mailbox asking to uncheck this.
Now, to the point.
To access gmail
via imap (google discourages pop protocol and so do I) you need to use 993
port and add control line feed to openssl
option. Spam folder is [Gmail]/Spam
and, as I understood, you want to get its next unique ID, so the typical session should look like this:
$ openssl s_client -connect imap.gmail.com:993 -crlf
CONNECTED(00000003)
depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = imap.gmail.com
verify return:1
---
[...]
---
* OK Gimap ready for requests from 10.0.0.1 n9mb133f65154lxl
a1 LOGIN <user> <password>
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE APPENDLIMIT=35651584
a1 OK user@gmail.com authenticated (Success)
a2 STATUS "[Gmail]/Spam" (UIDNEXT)
* STATUS "[Gmail]/Spam" (UIDNEXT 2127)
a2 OK Success
a3 LOGOUT
* BYE LOGOUT Requested
a3 OK 73 good day (Success)
read:errno=0
The commands actually typed by you are those started with tags aN
. Tags are obligatory by imap protocol, so don't forget about them; they don't need to be in aN
form, any string is fine. Obviously change <user>
and <password>
to yours.
edited Feb 17 at 13:54
answered Feb 16 at 20:05
jimmijjimmij
32.1k874108
32.1k874108
add a comment |
add a comment |
You can try it on this way:
telnet mailhost 110 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
And you will get in variable NMSG
the number of the messages. I am not sure pop can deal with mail folders. It just report messages in mailbox.
In case of SSL/TLS POP3 implementation you can use code like this:
openssl s_client -connect mailhost:995 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
If your mail delivery software mark SPAM messages adding "SPAM" word in subject you can try as last line in script something like:
NMSG=$(grep SPAM /tmp/outfile|wc -l)
add a comment |
You can try it on this way:
telnet mailhost 110 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
And you will get in variable NMSG
the number of the messages. I am not sure pop can deal with mail folders. It just report messages in mailbox.
In case of SSL/TLS POP3 implementation you can use code like this:
openssl s_client -connect mailhost:995 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
If your mail delivery software mark SPAM messages adding "SPAM" word in subject you can try as last line in script something like:
NMSG=$(grep SPAM /tmp/outfile|wc -l)
add a comment |
You can try it on this way:
telnet mailhost 110 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
And you will get in variable NMSG
the number of the messages. I am not sure pop can deal with mail folders. It just report messages in mailbox.
In case of SSL/TLS POP3 implementation you can use code like this:
openssl s_client -connect mailhost:995 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
If your mail delivery software mark SPAM messages adding "SPAM" word in subject you can try as last line in script something like:
NMSG=$(grep SPAM /tmp/outfile|wc -l)
You can try it on this way:
telnet mailhost 110 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
And you will get in variable NMSG
the number of the messages. I am not sure pop can deal with mail folders. It just report messages in mailbox.
In case of SSL/TLS POP3 implementation you can use code like this:
openssl s_client -connect mailhost:995 >/tmp/outfile <<EOF
USER username
PASS password
LIST
QUIT
EOF
NMSG=$(tail -3 /tmp/outfile|awk '{print $1;exit}')
If your mail delivery software mark SPAM messages adding "SPAM" word in subject you can try as last line in script something like:
NMSG=$(grep SPAM /tmp/outfile|wc -l)
edited Feb 16 at 19:30
answered Feb 16 at 19:17
Romeo NinovRomeo Ninov
6,54132028
6,54132028
add a comment |
add a comment |
I managed to find another easier way of doing what I need using Curl and the IMAP protocol:
curl --url "imaps://imap.gmail.com" --user "<email address>":"<password>" -X 'STATUS [Gmail]/Spam (MESSAGES)'
Stdout for this command will be the following (with X being the number of messages present, both read and unread):
* STATUS "[Gmail]/Spam" (MESSAGES X)
add a comment |
I managed to find another easier way of doing what I need using Curl and the IMAP protocol:
curl --url "imaps://imap.gmail.com" --user "<email address>":"<password>" -X 'STATUS [Gmail]/Spam (MESSAGES)'
Stdout for this command will be the following (with X being the number of messages present, both read and unread):
* STATUS "[Gmail]/Spam" (MESSAGES X)
add a comment |
I managed to find another easier way of doing what I need using Curl and the IMAP protocol:
curl --url "imaps://imap.gmail.com" --user "<email address>":"<password>" -X 'STATUS [Gmail]/Spam (MESSAGES)'
Stdout for this command will be the following (with X being the number of messages present, both read and unread):
* STATUS "[Gmail]/Spam" (MESSAGES X)
I managed to find another easier way of doing what I need using Curl and the IMAP protocol:
curl --url "imaps://imap.gmail.com" --user "<email address>":"<password>" -X 'STATUS [Gmail]/Spam (MESSAGES)'
Stdout for this command will be the following (with X being the number of messages present, both read and unread):
* STATUS "[Gmail]/Spam" (MESSAGES X)
answered Mar 2 at 2:47
XJDHDRXJDHDR
1614
1614
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f501077%2fget-number-of-emails-in-specific-directory-on-mail-server%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown