From 6331317b58faeb1274a80053bed94a3c5b29e5cd Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Wed, 16 Sep 2020 13:41:15 +0300 Subject: [PATCH] add imap-protocol list archives folder --- .../cur/1600094967.22507.mbox:2,S | 39 + .../cur/1600094968.22507.mbox:2,S | 24 + .../cur/1600094968.22511.mbox:2,S | 28 + .../cur/1600094969.22507.mbox:2,S | 30 + .../cur/1600094969.22514.mbox:2,S | 53 + .../cur/1600094970.22507.mbox:2,S | 33 + .../cur/1600094970.22514.mbox:2,S | 87 + .../cur/1600094970.22518.mbox:2,S | 55 + .../cur/1600094971.22507.mbox:2,S | 36 + .../cur/1600094971.22514.mbox:2,S | 90 + .../cur/1600094971.22518.mbox:2,S | 84 + .../cur/1600094971.22523.mbox:2,S | 17 + .../cur/1600094972.22507.mbox:2,S | 95 + .../cur/1600094972.22518.mbox:2,S | 94 + .../cur/1600094972.22523.mbox:2,S | 32 + .../cur/1600094972.22526.mbox:2,S | 42 + .../cur/1600094973.22507.mbox:2,S | 41 + .../cur/1600094973.22518.mbox:2,S | 38 + .../cur/1600094973.22526.mbox:2,S | 33 + .../cur/1600094973.22529.mbox:2,S | 25 + .../cur/1600094974.22507.mbox:2,S | 50 + .../cur/1600094974.22518.mbox:2,S | 81 + .../cur/1600094975.22507.mbox:2,S | 52 + .../cur/1600094975.22518.mbox:2,S | 16 + .../cur/1600094975.22532.mbox:2,S | 31 + .../cur/1600094976.22507.mbox:2,S | 72 + .../cur/1600094976.22518.mbox:2,S | 40 + .../cur/1600094976.22532.mbox:2,S | 46 + .../cur/1600094976.22535.mbox:2,S | 44 + .../cur/1600094977.22532.mbox:2,S | 18 + .../cur/1600094977.22535.mbox:2,S | 13 + .../cur/1600094977.22538.mbox:2,S | 49 + .../cur/1600094978.22532.mbox:2,S | 13 + .../cur/1600094978.22535.mbox:2,S | 31 + .../cur/1600094978.22538.mbox:2,S | 37 + .../cur/1600094978.22541.mbox:2,S | 65 + .../cur/1600094979.22535.mbox:2,S | 38 + .../cur/1600094979.22538.mbox:2,S | 50 + .../cur/1600094979.22541.mbox:2,S | 16 + .../cur/1600094979.22544.mbox:2,S | 14 + .../cur/1600094980.22538.mbox:2,S | 52 + .../cur/1600094980.22544.mbox:2,S | 25 + .../cur/1600094981.22538.mbox:2,S | 52 + .../cur/1600094981.22544.mbox:2,S | 48 + .../cur/1600094981.22548.mbox:2,S | 27 + .../cur/1600094982.22538.mbox:2,S | 34 + .../cur/1600094982.22548.mbox:2,S | 46 + .../cur/1600094982.22553.mbox:2,S | 17 + .../cur/1600094983.22538.mbox:2,S | 87 + .../cur/1600094983.22548.mbox:2,S | 45 + .../cur/1600094983.22553.mbox:2,S | 37 + .../cur/1600094983.22563.mbox:2,S | 37 + .../cur/1600094984.22538.mbox:2,S | 38 + .../cur/1600094984.22548.mbox:2,S | 64 + .../cur/1600094984.22553.mbox:2,S | 57 + .../cur/1600094984.22563.mbox:2,S | 71 + .../cur/1600094984.22566.mbox:2,S | 70 + .../cur/1600094985.22538.mbox:2,S | 74 + .../cur/1600094985.22548.mbox:2,S | 64 + .../cur/1600094985.22553.mbox:2,S | 67 + .../cur/1600094985.22563.mbox:2,S | 31 + .../cur/1600094985.22566.mbox:2,S | 51 + .../cur/1600094985.22569.mbox:2,S | 33 + .../cur/1600094986.22538.mbox:2,S | 67 + .../cur/1600094986.22548.mbox:2,S | 24 + .../cur/1600094986.22553.mbox:2,S | 114 + .../cur/1600094986.22566.mbox:2,S | 39 + .../cur/1600094986.22569.mbox:2,S | 34 + .../cur/1600094986.22572.mbox:2,S | 42 + .../cur/1600094987.22538.mbox:2,S | 111 + .../cur/1600094987.22548.mbox:2,S | 24 + .../cur/1600094987.22553.mbox:2,S | 21 + .../cur/1600094987.22566.mbox:2,S | 34 + .../cur/1600094987.22569.mbox:2,S | 38 + .../cur/1600094987.22572.mbox:2,S | 56 + .../cur/1600094988.22538.mbox:2,S | 152 + .../cur/1600094988.22548.mbox:2,S | 44 + .../cur/1600094988.22553.mbox:2,S | 47 + .../cur/1600094988.22569.mbox:2,S | 27 + .../cur/1600094988.22572.mbox:2,S | 75 + .../cur/1600094988.22575.mbox:2,S | 65 + .../cur/1600094989.22538.mbox:2,S | 89 + .../cur/1600094989.22548.mbox:2,S | 30 + .../cur/1600094989.22553.mbox:2,S | 46 + .../cur/1600094989.22569.mbox:2,S | 46 + .../cur/1600094989.22572.mbox:2,S | 59 + .../cur/1600094989.22575.mbox:2,S | 48 + .../cur/1600094989.22578.mbox:2,S | 35 + .../cur/1600094990.22538.mbox:2,S | 100 + .../cur/1600094990.22548.mbox:2,S | 56 + .../cur/1600094990.22553.mbox:2,S | 29 + .../cur/1600094990.22572.mbox:2,S | 58 + .../cur/1600094990.22575.mbox:2,S | 61 + .../cur/1600094990.22583.mbox:2,S | 51 + .../cur/1600094991.22538.mbox:2,S | 33 + .../cur/1600094991.22548.mbox:2,S | 16 + .../cur/1600094991.22553.mbox:2,S | 61 + .../cur/1600094991.22572.mbox:2,S | 99 + .../cur/1600094991.22575.mbox:2,S | 28 + .../cur/1600094991.22583.mbox:2,S | 36 + .../cur/1600094991.22586.mbox:2,S | 67 + .../cur/1600094992.22538.mbox:2,S | 40 + .../cur/1600094992.22553.mbox:2,S | 23 + .../cur/1600094992.22572.mbox:2,S | 125 + .../cur/1600094992.22575.mbox:2,S | 44 + .../cur/1600094992.22583.mbox:2,S | 76 + .../cur/1600094992.22586.mbox:2,S | 130 + .../cur/1600094992.22589.mbox:2,S | 41 + .../cur/1600094993.22538.mbox:2,S | 55 + .../cur/1600094993.22553.mbox:2,S | 41 + .../cur/1600094993.22572.mbox:2,S | 216 ++ .../cur/1600094993.22575.mbox:2,S | 43 + .../cur/1600094993.22583.mbox:2,S | 18 + .../cur/1600094993.22589.mbox:2,S | 52 + .../cur/1600094993.22592.mbox:2,S | 39 + .../cur/1600094994.22538.mbox:2,S | 87 + .../cur/1600094994.22572.mbox:2,S | 103 + .../cur/1600094994.22575.mbox:2,S | 21 + .../cur/1600094994.22583.mbox:2,S | 37 + .../cur/1600094994.22589.mbox:2,S | 80 + .../cur/1600094994.22592.mbox:2,S | 42 + .../cur/1600094995.22538.mbox:2,S | 52 + .../cur/1600094995.22572.mbox:2,S | 48 + .../cur/1600094995.22583.mbox:2,S | 82 + .../cur/1600094995.22589.mbox:2,S | 52 + .../cur/1600094995.22592.mbox:2,S | 25 + .../cur/1600094995.22595.mbox:2,S | 24 + .../cur/1600094996.22538.mbox:2,S | 65 + .../cur/1600094996.22572.mbox:2,S | 44 + .../cur/1600094996.22583.mbox:2,S | 96 + .../cur/1600094996.22589.mbox:2,S | 26 + .../cur/1600094996.22592.mbox:2,S | 63 + .../cur/1600094996.22595.mbox:2,S | 36 + .../cur/1600094997.22538.mbox:2,S | 27 + .../cur/1600094997.22583.mbox:2,S | 97 + .../cur/1600094997.22589.mbox:2,S | 46 + .../cur/1600094997.22592.mbox:2,S | 38 + .../cur/1600094997.22595.mbox:2,S | 16 + .../cur/1600094997.22600.mbox:2,S | 31 + .../cur/1600094998.22583.mbox:2,S | 38 + .../cur/1600094998.22589.mbox:2,S | 35 + .../cur/1600094998.22592.mbox:2,S | 88 + .../cur/1600094998.22595.mbox:2,S | 27 + .../cur/1600094998.22600.mbox:2,S | 82 + .../cur/1600094998.22603.mbox:2,S | 12 + .../cur/1600094999.22583.mbox:2,S | 51 + .../cur/1600094999.22589.mbox:2,S | 48 + .../cur/1600094999.22592.mbox:2,S | 126 + .../cur/1600094999.22595.mbox:2,S | 28 + .../cur/1600094999.22600.mbox:2,S | 105 + .../cur/1600094999.22603.mbox:2,S | 23 + .../cur/1600094999.22606.mbox:2,S | 54 + .../cur/1600095000.22583.mbox:2,S | 50 + .../cur/1600095000.22589.mbox:2,S | 71 + .../cur/1600095000.22592.mbox:2,S | 33 + .../cur/1600095000.22595.mbox:2,S | 50 + .../cur/1600095000.22600.mbox:2,S | 37 + .../cur/1600095000.22603.mbox:2,S | 49 + .../cur/1600095000.22617.mbox:2,S | 45 + .../cur/1600095001.22583.mbox:2,S | 65 + .../cur/1600095001.22589.mbox:2,S | 95 + .../cur/1600095001.22592.mbox:2,S | 46 + .../cur/1600095001.22595.mbox:2,S | 32 + .../cur/1600095001.22600.mbox:2,S | 20 + .../cur/1600095001.22603.mbox:2,S | 40 + .../cur/1600095001.22620.mbox:2,S | 53 + .../cur/1600095002.22583.mbox:2,S | 75 + .../cur/1600095002.22589.mbox:2,S | 44 + .../cur/1600095002.22592.mbox:2,S | 28 + .../cur/1600095002.22595.mbox:2,S | 85 + .../cur/1600095002.22600.mbox:2,S | 54 + .../cur/1600095002.22603.mbox:2,S | 54 + .../cur/1600095002.22620.mbox:2,S | 35 + .../cur/1600095002.22623.mbox:2,S | 57 + .../cur/1600095003.22583.mbox:2,S | 25 + .../cur/1600095003.22589.mbox:2,S | 76 + .../cur/1600095003.22592.mbox:2,S | 36 + .../cur/1600095003.22595.mbox:2,S | 25 + .../cur/1600095003.22603.mbox:2,S | 71 + .../cur/1600095003.22620.mbox:2,S | 64 + .../cur/1600095003.22623.mbox:2,S | 109 + .../cur/1600095004.22589.mbox:2,S | 89 + .../cur/1600095004.22592.mbox:2,S | 34 + .../cur/1600095004.22595.mbox:2,S | 48 + .../cur/1600095004.22603.mbox:2,S | 99 + .../cur/1600095004.22620.mbox:2,S | 148 + .../cur/1600095004.22623.mbox:2,S | 39 + .../cur/1600095004.22626.mbox:2,S | 59 + .../cur/1600095005.22589.mbox:2,S | 14 + .../cur/1600095005.22592.mbox:2,S | 35 + .../cur/1600095005.22595.mbox:2,S | 111 + .../cur/1600095005.22603.mbox:2,S | 36 + .../cur/1600095005.22620.mbox:2,S | 123 + .../cur/1600095005.22623.mbox:2,S | 26 + .../cur/1600095005.22626.mbox:2,S | 76 + .../cur/1600095005.22629.mbox:2,S | 23 + .../cur/1600095006.22589.mbox:2,S | 82 + .../cur/1600095006.22592.mbox:2,S | 45 + .../cur/1600095006.22595.mbox:2,S | 34 + .../cur/1600095006.22603.mbox:2,S | 87 + .../cur/1600095006.22620.mbox:2,S | 165 + .../cur/1600095006.22623.mbox:2,S | 101 + .../cur/1600095006.22626.mbox:2,S | 21 + .../cur/1600095006.22629.mbox:2,S | 21 + .../cur/1600095006.22632.mbox:2,S | 17 + .../cur/1600095007.22589.mbox:2,S | 118 + .../cur/1600095007.22592.mbox:2,S | 21 + .../cur/1600095007.22595.mbox:2,S | 32 + .../cur/1600095007.22603.mbox:2,S | 26 + .../cur/1600095007.22620.mbox:2,S | 23 + .../cur/1600095007.22623.mbox:2,S | 88 + .../cur/1600095007.22626.mbox:2,S | 118 + .../cur/1600095007.22629.mbox:2,S | 46 + .../cur/1600095007.22632.mbox:2,S | 28 + .../cur/1600095007.22635.mbox:2,S | 60 + .../cur/1600095008.22589.mbox:2,S | 95 + .../cur/1600095008.22592.mbox:2,S | 34 + .../cur/1600095008.22595.mbox:2,S | 52 + .../cur/1600095008.22603.mbox:2,S | 18 + .../cur/1600095008.22620.mbox:2,S | 24 + .../cur/1600095008.22623.mbox:2,S | 86 + .../cur/1600095008.22626.mbox:2,S | 34 + .../cur/1600095008.22629.mbox:2,S | 66 + .../cur/1600095008.22632.mbox:2,S | 42 + .../cur/1600095008.22635.mbox:2,S | 249 ++ .../cur/1600095009.22589.mbox:2,S | 17 + .../cur/1600095009.22595.mbox:2,S | 28 + .../cur/1600095009.22620.mbox:2,S | 43 + .../cur/1600095009.22623.mbox:2,S | 26 + .../cur/1600095009.22626.mbox:2,S | 52 + .../cur/1600095009.22629.mbox:2,S | 73 + .../cur/1600095009.22635.mbox:2,S | 293 ++ .../cur/1600095009.22638.mbox:2,S | 36 + .../cur/1600095010.22589.mbox:2,S | 124 + .../cur/1600095010.22595.mbox:2,S | 54 + .../cur/1600095010.22623.mbox:2,S | 47 + .../cur/1600095010.22626.mbox:2,S | 140 + .../cur/1600095010.22629.mbox:2,S | 92 + .../cur/1600095010.22635.mbox:2,S | 47 + .../cur/1600095010.22638.mbox:2,S | 32 + .../cur/1600095011.22589.mbox:2,S | 31 + .../cur/1600095011.22595.mbox:2,S | 72 + .../cur/1600095011.22623.mbox:2,S | 30 + .../cur/1600095011.22626.mbox:2,S | 47 + .../cur/1600095011.22629.mbox:2,S | 19 + .../cur/1600095011.22635.mbox:2,S | 17 + .../cur/1600095011.22638.mbox:2,S | 111 + .../cur/1600095011.22641.mbox:2,S | 40 + .../cur/1600095012.22595.mbox:2,S | 36 + .../cur/1600095012.22623.mbox:2,S | 27 + .../cur/1600095012.22629.mbox:2,S | 44 + .../cur/1600095012.22635.mbox:2,S | 25 + .../cur/1600095012.22638.mbox:2,S | 142 + .../cur/1600095012.22641.mbox:2,S | 57 + .../cur/1600095012.22645.mbox:2,S | 35 + .../cur/1600095013.22595.mbox:2,S | 25 + .../cur/1600095013.22623.mbox:2,S | 38 + .../cur/1600095013.22629.mbox:2,S | 41 + .../cur/1600095013.22635.mbox:2,S | 48 + .../cur/1600095013.22638.mbox:2,S | 36 + .../cur/1600095013.22641.mbox:2,S | 36 + .../cur/1600095013.22645.mbox:2,S | 18 + .../cur/1600095013.22648.mbox:2,S | 34 + .../cur/1600095014.22595.mbox:2,S | 53 + .../cur/1600095014.22623.mbox:2,S | 31 + .../cur/1600095014.22629.mbox:2,S | 61 + .../cur/1600095014.22635.mbox:2,S | 57 + .../cur/1600095014.22638.mbox:2,S | 61 + .../cur/1600095014.22641.mbox:2,S | 21 + .../cur/1600095014.22645.mbox:2,S | 37 + .../cur/1600095014.22648.mbox:2,S | 43 + .../cur/1600095015.22595.mbox:2,S | 58 + .../cur/1600095015.22623.mbox:2,S | 12 + .../cur/1600095015.22629.mbox:2,S | 46 + .../cur/1600095015.22635.mbox:2,S | 62 + .../cur/1600095015.22638.mbox:2,S | 66 + .../cur/1600095015.22641.mbox:2,S | 81 + .../cur/1600095015.22645.mbox:2,S | 25 + .../cur/1600095015.22648.mbox:2,S | 23 + .../cur/1600095015.22651.mbox:2,S | 29 + .../cur/1600095016.22595.mbox:2,S | 90 + .../cur/1600095016.22623.mbox:2,S | 36 + .../cur/1600095016.22629.mbox:2,S | 64 + .../cur/1600095016.22635.mbox:2,S | 69 + .../cur/1600095016.22638.mbox:2,S | 157 + .../cur/1600095016.22641.mbox:2,S | 81 + .../cur/1600095016.22648.mbox:2,S | 35 + .../cur/1600095016.22651.mbox:2,S | 27 + .../cur/1600095016.22656.mbox:2,S | 35 + .../cur/1600095017.22595.mbox:2,S | 25 + .../cur/1600095017.22623.mbox:2,S | 23 + .../cur/1600095017.22629.mbox:2,S | 83 + .../cur/1600095017.22635.mbox:2,S | 33 + .../cur/1600095017.22638.mbox:2,S | 13 + .../cur/1600095017.22641.mbox:2,S | 41 + .../cur/1600095017.22648.mbox:2,S | 87 + .../cur/1600095017.22651.mbox:2,S | 48 + .../cur/1600095017.22656.mbox:2,S | 55 + .../cur/1600095017.22659.mbox:2,S | 69 + .../cur/1600095018.22595.mbox:2,S | 46 + .../cur/1600095018.22623.mbox:2,S | 27 + .../cur/1600095018.22629.mbox:2,S | 35 + .../cur/1600095018.22635.mbox:2,S | 15 + .../cur/1600095018.22638.mbox:2,S | 89 + .../cur/1600095018.22641.mbox:2,S | 22 + .../cur/1600095018.22648.mbox:2,S | 69 + .../cur/1600095018.22651.mbox:2,S | 43 + .../cur/1600095018.22656.mbox:2,S | 72 + .../cur/1600095018.22659.mbox:2,S | 23 + .../cur/1600095019.22595.mbox:2,S | 33 + .../cur/1600095019.22623.mbox:2,S | 35 + .../cur/1600095019.22629.mbox:2,S | 61 + .../cur/1600095019.22635.mbox:2,S | 47 + .../cur/1600095019.22638.mbox:2,S | 198 ++ .../cur/1600095019.22641.mbox:2,S | 40 + .../cur/1600095019.22648.mbox:2,S | 33 + .../cur/1600095019.22651.mbox:2,S | 37 + .../cur/1600095019.22656.mbox:2,S | 23 + .../cur/1600095019.22659.mbox:2,S | 49 + .../cur/1600095019.22662.mbox:2,S | 166 + .../cur/1600095020.22595.mbox:2,S | 32 + .../cur/1600095020.22623.mbox:2,S | 35 + .../cur/1600095020.22629.mbox:2,S | 28 + .../cur/1600095020.22635.mbox:2,S | 73 + .../cur/1600095020.22638.mbox:2,S | 55 + .../cur/1600095020.22641.mbox:2,S | 60 + .../cur/1600095020.22648.mbox:2,S | 107 + .../cur/1600095020.22651.mbox:2,S | 62 + .../cur/1600095020.22659.mbox:2,S | 19 + .../cur/1600095020.22662.mbox:2,S | 45 + .../cur/1600095020.22665.mbox:2,S | 44 + .../cur/1600095021.22595.mbox:2,S | 40 + .../cur/1600095021.22623.mbox:2,S | 40 + .../cur/1600095021.22629.mbox:2,S | 64 + .../cur/1600095021.22635.mbox:2,S | 82 + .../cur/1600095021.22638.mbox:2,S | 27 + .../cur/1600095021.22641.mbox:2,S | 52 + .../cur/1600095021.22648.mbox:2,S | 123 + .../cur/1600095021.22651.mbox:2,S | 73 + .../cur/1600095021.22659.mbox:2,S | 32 + .../cur/1600095021.22662.mbox:2,S | 31 + .../cur/1600095021.22665.mbox:2,S | 64 + .../cur/1600095021.22668.mbox:2,S | 32 + .../cur/1600095022.22595.mbox:2,S | 65 + .../cur/1600095022.22623.mbox:2,S | 39 + .../cur/1600095022.22629.mbox:2,S | 77 + .../cur/1600095022.22635.mbox:2,S | 117 + .../cur/1600095022.22641.mbox:2,S | 20 + .../cur/1600095022.22648.mbox:2,S | 22 + .../cur/1600095022.22651.mbox:2,S | 73 + .../cur/1600095022.22659.mbox:2,S | 25 + .../cur/1600095022.22662.mbox:2,S | 21 + .../cur/1600095022.22665.mbox:2,S | 21 + .../cur/1600095022.22671.mbox:2,S | 29 + .../cur/1600095023.22595.mbox:2,S | 86 + .../cur/1600095023.22623.mbox:2,S | 38 + .../cur/1600095023.22629.mbox:2,S | 31 + .../cur/1600095023.22635.mbox:2,S | 143 + .../cur/1600095023.22641.mbox:2,S | 39 + .../cur/1600095023.22648.mbox:2,S | 55 + .../cur/1600095023.22651.mbox:2,S | 18 + .../cur/1600095023.22659.mbox:2,S | 65 + .../cur/1600095023.22662.mbox:2,S | 88 + .../cur/1600095023.22665.mbox:2,S | 78 + .../cur/1600095023.22671.mbox:2,S | 34 + .../cur/1600095024.22595.mbox:2,S | 34 + .../cur/1600095024.22623.mbox:2,S | 47 + .../cur/1600095024.22629.mbox:2,S | 31 + .../cur/1600095024.22635.mbox:2,S | 186 ++ .../cur/1600095024.22641.mbox:2,S | 33 + .../cur/1600095024.22648.mbox:2,S | 32 + .../cur/1600095024.22651.mbox:2,S | 25 + .../cur/1600095024.22659.mbox:2,S | 24 + .../cur/1600095024.22662.mbox:2,S | 200 ++ .../cur/1600095024.22665.mbox:2,S | 18 + .../cur/1600095024.22671.mbox:2,S | 30 + .../cur/1600095024.22675.mbox:2,S | 68 + .../cur/1600095025.22595.mbox:2,S | 33 + .../cur/1600095025.22623.mbox:2,S | 28 + .../cur/1600095025.22629.mbox:2,S | 136 + .../cur/1600095025.22635.mbox:2,S | 184 ++ .../cur/1600095025.22641.mbox:2,S | 42 + .../cur/1600095025.22648.mbox:2,S | 30 + .../cur/1600095025.22651.mbox:2,S | 23 + .../cur/1600095025.22659.mbox:2,S | 54 + .../cur/1600095025.22665.mbox:2,S | 25 + .../cur/1600095025.22671.mbox:2,S | 66 + .../cur/1600095025.22675.mbox:2,S | 153 + .../cur/1600095025.22679.mbox:2,S | 30 + .../cur/1600095026.22595.mbox:2,S | 49 + .../cur/1600095026.22623.mbox:2,S | 57 + .../cur/1600095026.22629.mbox:2,S | 87 + .../cur/1600095026.22635.mbox:2,S | 213 ++ .../cur/1600095026.22641.mbox:2,S | 30 + .../cur/1600095026.22648.mbox:2,S | 30 + .../cur/1600095026.22651.mbox:2,S | 36 + .../cur/1600095026.22659.mbox:2,S | 51 + .../cur/1600095026.22665.mbox:2,S | 24 + .../cur/1600095026.22671.mbox:2,S | 71 + .../cur/1600095026.22675.mbox:2,S | 132 + .../cur/1600095026.22679.mbox:2,S | 23 + .../cur/1600095026.22682.mbox:2,S | 20 + .../cur/1600095027.22595.mbox:2,S | 51 + .../cur/1600095027.22623.mbox:2,S | 23 + .../cur/1600095027.22629.mbox:2,S | 119 + .../cur/1600095027.22635.mbox:2,S | 206 ++ .../cur/1600095027.22641.mbox:2,S | 51 + .../cur/1600095027.22648.mbox:2,S | 90 + .../cur/1600095027.22651.mbox:2,S | 53 + .../cur/1600095027.22665.mbox:2,S | 35 + .../cur/1600095027.22671.mbox:2,S | 46 + .../cur/1600095027.22675.mbox:2,S | 38 + .../cur/1600095027.22679.mbox:2,S | 43 + .../cur/1600095027.22682.mbox:2,S | 34 + .../cur/1600095027.22685.mbox:2,S | 51 + .../cur/1600095028.22595.mbox:2,S | 35 + .../cur/1600095028.22629.mbox:2,S | 43 + .../cur/1600095028.22635.mbox:2,S | 224 ++ .../cur/1600095028.22641.mbox:2,S | 57 + .../cur/1600095028.22648.mbox:2,S | 68 + .../cur/1600095028.22665.mbox:2,S | 26 + .../cur/1600095028.22671.mbox:2,S | 35 + .../cur/1600095028.22675.mbox:2,S | 50 + .../cur/1600095028.22679.mbox:2,S | 46 + .../cur/1600095028.22682.mbox:2,S | 29 + .../cur/1600095028.22685.mbox:2,S | 29 + .../cur/1600095029.22595.mbox:2,S | 42 + .../cur/1600095029.22629.mbox:2,S | 30 + .../cur/1600095029.22635.mbox:2,S | 94 + .../cur/1600095029.22641.mbox:2,S | 66 + .../cur/1600095029.22648.mbox:2,S | 26 + .../cur/1600095029.22665.mbox:2,S | 76 + .../cur/1600095029.22671.mbox:2,S | 94 + .../cur/1600095029.22675.mbox:2,S | 45 + .../cur/1600095029.22679.mbox:2,S | 46 + .../cur/1600095029.22682.mbox:2,S | 70 + .../cur/1600095029.22685.mbox:2,S | 25 + .../cur/1600095029.22688.mbox:2,S | 26 + .../cur/1600095030.22595.mbox:2,S | 38 + .../cur/1600095030.22629.mbox:2,S | 136 + .../cur/1600095030.22635.mbox:2,S | 264 ++ .../cur/1600095030.22641.mbox:2,S | 32 + .../cur/1600095030.22648.mbox:2,S | 40 + .../cur/1600095030.22665.mbox:2,S | 85 + .../cur/1600095030.22671.mbox:2,S | 32 + .../cur/1600095030.22675.mbox:2,S | 22 + .../cur/1600095030.22679.mbox:2,S | 35 + .../cur/1600095030.22682.mbox:2,S | 58 + .../cur/1600095030.22685.mbox:2,S | 28 + .../cur/1600095030.22688.mbox:2,S | 41 + .../cur/1600095031.22595.mbox:2,S | 27 + .../cur/1600095031.22629.mbox:2,S | 69 + .../cur/1600095031.22635.mbox:2,S | 252 ++ .../cur/1600095031.22641.mbox:2,S | 105 + .../cur/1600095031.22648.mbox:2,S | 39 + .../cur/1600095031.22665.mbox:2,S | 106 + .../cur/1600095031.22671.mbox:2,S | 103 + .../cur/1600095031.22675.mbox:2,S | 40 + .../cur/1600095031.22679.mbox:2,S | 22 + .../cur/1600095031.22682.mbox:2,S | 21 + .../cur/1600095031.22685.mbox:2,S | 47 + .../cur/1600095031.22688.mbox:2,S | 63 + .../cur/1600095031.22697.mbox:2,S | 26 + .../cur/1600095032.22595.mbox:2,S | 41 + .../cur/1600095032.22629.mbox:2,S | 37 + .../cur/1600095032.22641.mbox:2,S | 130 + .../cur/1600095032.22648.mbox:2,S | 38 + .../cur/1600095032.22665.mbox:2,S | 58 + .../cur/1600095032.22671.mbox:2,S | 65 + .../cur/1600095032.22675.mbox:2,S | 58 + .../cur/1600095032.22679.mbox:2,S | 51 + .../cur/1600095032.22682.mbox:2,S | 30 + .../cur/1600095032.22685.mbox:2,S | 54 + .../cur/1600095032.22688.mbox:2,S | 34 + .../cur/1600095032.22697.mbox:2,S | 16 + .../cur/1600095032.22701.mbox:2,S | 41 + .../cur/1600095033.22595.mbox:2,S | 52 + .../cur/1600095033.22629.mbox:2,S | 55 + .../cur/1600095033.22641.mbox:2,S | 41 + .../cur/1600095033.22648.mbox:2,S | 37 + .../cur/1600095033.22665.mbox:2,S | 26 + .../cur/1600095033.22671.mbox:2,S | 20 + .../cur/1600095033.22675.mbox:2,S | 56 + .../cur/1600095033.22682.mbox:2,S | 35 + .../cur/1600095033.22685.mbox:2,S | 64 + .../cur/1600095033.22688.mbox:2,S | 18 + .../cur/1600095033.22697.mbox:2,S | 38 + .../cur/1600095033.22701.mbox:2,S | 20 + .../cur/1600095034.22595.mbox:2,S | 96 + .../cur/1600095034.22629.mbox:2,S | 52 + .../cur/1600095034.22641.mbox:2,S | 55 + .../cur/1600095034.22648.mbox:2,S | 24 + .../cur/1600095034.22665.mbox:2,S | 39 + .../cur/1600095034.22671.mbox:2,S | 32 + .../cur/1600095034.22682.mbox:2,S | 39 + .../cur/1600095034.22685.mbox:2,S | 46 + .../cur/1600095034.22688.mbox:2,S | 29 + .../cur/1600095034.22697.mbox:2,S | 18 + .../cur/1600095034.22701.mbox:2,S | 44 + .../cur/1600095034.22707.mbox:2,S | 29 + .../cur/1600095035.22595.mbox:2,S | 32 + .../cur/1600095035.22629.mbox:2,S | 22 + .../cur/1600095035.22641.mbox:2,S | 60 + .../cur/1600095035.22648.mbox:2,S | 44 + .../cur/1600095035.22665.mbox:2,S | 18 + .../cur/1600095035.22671.mbox:2,S | 60 + .../cur/1600095035.22682.mbox:2,S | 39 + .../cur/1600095035.22685.mbox:2,S | 36 + .../cur/1600095035.22688.mbox:2,S | 35 + .../cur/1600095035.22697.mbox:2,S | 28 + .../cur/1600095035.22701.mbox:2,S | 29 + .../cur/1600095035.22707.mbox:2,S | 16 + .../cur/1600095035.22716.mbox:2,S | 14 + .../cur/1600095036.22595.mbox:2,S | 38 + .../cur/1600095036.22629.mbox:2,S | 61 + .../cur/1600095036.22641.mbox:2,S | 57 + .../cur/1600095036.22648.mbox:2,S | 32 + .../cur/1600095036.22665.mbox:2,S | 48 + .../cur/1600095036.22671.mbox:2,S | 17 + .../cur/1600095036.22682.mbox:2,S | 24 + .../cur/1600095036.22685.mbox:2,S | 32 + .../cur/1600095036.22688.mbox:2,S | 68 + .../cur/1600095036.22697.mbox:2,S | 44 + .../cur/1600095036.22701.mbox:2,S | 67 + .../cur/1600095036.22707.mbox:2,S | 36 + .../cur/1600095036.22716.mbox:2,S | 28 + .../cur/1600095036.22719.mbox:2,S | 14 + .../cur/1600095037.22595.mbox:2,S | 30 + .../cur/1600095037.22629.mbox:2,S | 45 + .../cur/1600095037.22641.mbox:2,S | 60 + .../cur/1600095037.22648.mbox:2,S | 54 + .../cur/1600095037.22665.mbox:2,S | 44 + .../cur/1600095037.22671.mbox:2,S | 28 + .../cur/1600095037.22682.mbox:2,S | 22 + .../cur/1600095037.22685.mbox:2,S | 22 + .../cur/1600095037.22688.mbox:2,S | 107 + .../cur/1600095037.22697.mbox:2,S | 21 + .../cur/1600095037.22701.mbox:2,S | 27 + .../cur/1600095037.22707.mbox:2,S | 51 + .../cur/1600095037.22716.mbox:2,S | 27 + .../cur/1600095037.22719.mbox:2,S | 29 + .../cur/1600095038.22595.mbox:2,S | 42 + .../cur/1600095038.22629.mbox:2,S | 78 + .../cur/1600095038.22641.mbox:2,S | 38 + .../cur/1600095038.22648.mbox:2,S | 79 + .../cur/1600095038.22665.mbox:2,S | 19 + .../cur/1600095038.22671.mbox:2,S | 26 + .../cur/1600095038.22682.mbox:2,S | 20 + .../cur/1600095038.22685.mbox:2,S | 39 + .../cur/1600095038.22688.mbox:2,S | 100 + .../cur/1600095038.22697.mbox:2,S | 49 + .../cur/1600095038.22701.mbox:2,S | 32 + .../cur/1600095038.22707.mbox:2,S | 28 + .../cur/1600095038.22716.mbox:2,S | 32 + .../cur/1600095038.22719.mbox:2,S | 83 + .../cur/1600095038.22723.mbox:2,S | 22 + .../cur/1600095039.22595.mbox:2,S | 25 + .../cur/1600095039.22641.mbox:2,S | 45 + .../cur/1600095039.22648.mbox:2,S | 56 + .../cur/1600095039.22665.mbox:2,S | 27 + .../cur/1600095039.22671.mbox:2,S | 36 + .../cur/1600095039.22682.mbox:2,S | 42 + .../cur/1600095039.22685.mbox:2,S | 27 + .../cur/1600095039.22688.mbox:2,S | 115 + .../cur/1600095039.22697.mbox:2,S | 36 + .../cur/1600095039.22701.mbox:2,S | 105 + .../cur/1600095039.22707.mbox:2,S | 54 + .../cur/1600095039.22716.mbox:2,S | 49 + .../cur/1600095039.22719.mbox:2,S | 101 + .../cur/1600095039.22723.mbox:2,S | 29 + .../cur/1600095039.22726.mbox:2,S | 137 + .../cur/1600095040.22595.mbox:2,S | 36 + .../cur/1600095040.22641.mbox:2,S | 63 + .../cur/1600095040.22648.mbox:2,S | 27 + .../cur/1600095040.22665.mbox:2,S | 51 + .../cur/1600095040.22671.mbox:2,S | 35 + .../cur/1600095040.22682.mbox:2,S | 51 + .../cur/1600095040.22685.mbox:2,S | 38 + .../cur/1600095040.22688.mbox:2,S | 123 + .../cur/1600095040.22697.mbox:2,S | 68 + .../cur/1600095040.22701.mbox:2,S | 27 + .../cur/1600095040.22707.mbox:2,S | 21 + .../cur/1600095040.22716.mbox:2,S | 50 + .../cur/1600095040.22719.mbox:2,S | 57 + .../cur/1600095040.22723.mbox:2,S | 52 + .../cur/1600095040.22726.mbox:2,S | 52 + .../cur/1600095040.22729.mbox:2,S | 39 + .../cur/1600095041.22595.mbox:2,S | 34 + .../cur/1600095041.22641.mbox:2,S | 30 + .../cur/1600095041.22648.mbox:2,S | 36 + .../cur/1600095041.22665.mbox:2,S | 32 + .../cur/1600095041.22671.mbox:2,S | 46 + .../cur/1600095041.22682.mbox:2,S | 40 + .../cur/1600095041.22685.mbox:2,S | 32 + .../cur/1600095041.22688.mbox:2,S | 192 ++ .../cur/1600095041.22697.mbox:2,S | 49 + .../cur/1600095041.22701.mbox:2,S | 40 + .../cur/1600095041.22707.mbox:2,S | 35 + .../cur/1600095041.22716.mbox:2,S | 32 + .../cur/1600095041.22719.mbox:2,S | 100 + .../cur/1600095041.22723.mbox:2,S | 49 + .../cur/1600095041.22726.mbox:2,S | 57 + .../cur/1600095041.22729.mbox:2,S | 40 + .../cur/1600095041.22732.mbox:2,S | 41 + .../cur/1600095042.22595.mbox:2,S | 59 + .../cur/1600095042.22641.mbox:2,S | 22 + .../cur/1600095042.22648.mbox:2,S | 30 + .../cur/1600095042.22665.mbox:2,S | 29 + .../cur/1600095042.22682.mbox:2,S | 35 + .../cur/1600095042.22685.mbox:2,S | 52 + .../cur/1600095042.22688.mbox:2,S | 50 + .../cur/1600095042.22697.mbox:2,S | 26 + .../cur/1600095042.22701.mbox:2,S | 113 + .../cur/1600095042.22707.mbox:2,S | 30 + .../cur/1600095042.22719.mbox:2,S | 28 + .../cur/1600095042.22723.mbox:2,S | 44 + .../cur/1600095042.22726.mbox:2,S | 149 + .../cur/1600095042.22729.mbox:2,S | 54 + .../cur/1600095042.22732.mbox:2,S | 24 + .../cur/1600095043.22595.mbox:2,S | 32 + .../cur/1600095043.22641.mbox:2,S | 21 + .../cur/1600095043.22648.mbox:2,S | 42 + .../cur/1600095043.22665.mbox:2,S | 31 + .../cur/1600095043.22682.mbox:2,S | 22 + .../cur/1600095043.22685.mbox:2,S | 28 + .../cur/1600095043.22688.mbox:2,S | 39 + .../cur/1600095043.22697.mbox:2,S | 25 + .../cur/1600095043.22701.mbox:2,S | 64 + .../cur/1600095043.22707.mbox:2,S | 41 + .../cur/1600095043.22719.mbox:2,S | 76 + .../cur/1600095043.22723.mbox:2,S | 53 + .../cur/1600095043.22726.mbox:2,S | 93 + .../cur/1600095043.22729.mbox:2,S | 54 + .../cur/1600095043.22732.mbox:2,S | 24 + .../cur/1600095043.22743.mbox:2,S | 47 + .../cur/1600095044.22595.mbox:2,S | 52 + .../cur/1600095044.22641.mbox:2,S | 35 + .../cur/1600095044.22648.mbox:2,S | 59 + .../cur/1600095044.22665.mbox:2,S | 33 + .../cur/1600095044.22682.mbox:2,S | 46 + .../cur/1600095044.22685.mbox:2,S | 31 + .../cur/1600095044.22688.mbox:2,S | 35 + .../cur/1600095044.22697.mbox:2,S | 28 + .../cur/1600095044.22701.mbox:2,S | 95 + .../cur/1600095044.22707.mbox:2,S | 64 + .../cur/1600095044.22719.mbox:2,S | 34 + .../cur/1600095044.22726.mbox:2,S | 92 + .../cur/1600095044.22729.mbox:2,S | 20 + .../cur/1600095044.22732.mbox:2,S | 25 + .../cur/1600095044.22743.mbox:2,S | 38 + .../cur/1600095044.22746.mbox:2,S | 25 + .../cur/1600095045.22595.mbox:2,S | 46 + .../cur/1600095045.22641.mbox:2,S | 46 + .../cur/1600095045.22648.mbox:2,S | 42 + .../cur/1600095045.22665.mbox:2,S | 11 + .../cur/1600095045.22682.mbox:2,S | 40 + .../cur/1600095045.22685.mbox:2,S | 31 + .../cur/1600095045.22688.mbox:2,S | 38 + .../cur/1600095045.22697.mbox:2,S | 58 + .../cur/1600095045.22701.mbox:2,S | 129 + .../cur/1600095045.22707.mbox:2,S | 29 + .../cur/1600095045.22719.mbox:2,S | 25 + .../cur/1600095045.22726.mbox:2,S | 37 + .../cur/1600095045.22729.mbox:2,S | 56 + .../cur/1600095045.22732.mbox:2,S | 36 + .../cur/1600095045.22743.mbox:2,S | 93 + .../cur/1600095045.22746.mbox:2,S | 84 + .../cur/1600095045.22749.mbox:2,S | 17 + .../cur/1600095046.22595.mbox:2,S | 80 + .../cur/1600095046.22641.mbox:2,S | 32 + .../cur/1600095046.22648.mbox:2,S | 23 + .../cur/1600095046.22665.mbox:2,S | 7 + .../cur/1600095046.22682.mbox:2,S | 31 + .../cur/1600095046.22688.mbox:2,S | 41 + .../cur/1600095046.22697.mbox:2,S | 100 + .../cur/1600095046.22701.mbox:2,S | 39 + .../cur/1600095046.22707.mbox:2,S | 34 + .../cur/1600095046.22719.mbox:2,S | 28 + .../cur/1600095046.22726.mbox:2,S | 21 + .../cur/1600095046.22729.mbox:2,S | 61 + .../cur/1600095046.22732.mbox:2,S | 61 + .../cur/1600095046.22743.mbox:2,S | 92 + .../cur/1600095046.22746.mbox:2,S | 83 + .../cur/1600095046.22749.mbox:2,S | 52 + .../cur/1600095046.22752.mbox:2,S | 36 + .../cur/1600095047.22595.mbox:2,S | 22 + .../cur/1600095047.22641.mbox:2,S | 43 + .../cur/1600095047.22648.mbox:2,S | 25 + .../cur/1600095047.22665.mbox:2,S | 23 + .../cur/1600095047.22682.mbox:2,S | 39 + .../cur/1600095047.22688.mbox:2,S | 60 + .../cur/1600095047.22697.mbox:2,S | 26 + .../cur/1600095047.22701.mbox:2,S | 35 + .../cur/1600095047.22707.mbox:2,S | 21 + .../cur/1600095047.22719.mbox:2,S | 28 + .../cur/1600095047.22726.mbox:2,S | 30 + .../cur/1600095047.22729.mbox:2,S | 40 + .../cur/1600095047.22732.mbox:2,S | 26 + .../cur/1600095047.22743.mbox:2,S | 47 + .../cur/1600095047.22746.mbox:2,S | 21 + .../cur/1600095047.22749.mbox:2,S | 22 + .../cur/1600095047.22752.mbox:2,S | 47 + .../cur/1600095048.22595.mbox:2,S | 44 + .../cur/1600095048.22641.mbox:2,S | 62 + .../cur/1600095048.22682.mbox:2,S | 56 + .../cur/1600095048.22688.mbox:2,S | 24 + .../cur/1600095048.22697.mbox:2,S | 27 + .../cur/1600095048.22701.mbox:2,S | 56 + .../cur/1600095048.22707.mbox:2,S | 37 + .../cur/1600095048.22719.mbox:2,S | 110 + .../cur/1600095048.22726.mbox:2,S | 25 + .../cur/1600095048.22729.mbox:2,S | 68 + .../cur/1600095048.22732.mbox:2,S | 36 + .../cur/1600095048.22743.mbox:2,S | 80 + .../cur/1600095048.22746.mbox:2,S | 36 + .../cur/1600095048.22749.mbox:2,S | 33 + .../cur/1600095048.22752.mbox:2,S | 35 + .../cur/1600095048.22756.mbox:2,S | 67 + .../cur/1600095049.22595.mbox:2,S | 60 + .../cur/1600095049.22641.mbox:2,S | 44 + .../cur/1600095049.22682.mbox:2,S | 35 + .../cur/1600095049.22688.mbox:2,S | 84 + .../cur/1600095049.22697.mbox:2,S | 66 + .../cur/1600095049.22701.mbox:2,S | 66 + .../cur/1600095049.22707.mbox:2,S | 21 + .../cur/1600095049.22719.mbox:2,S | 34 + .../cur/1600095049.22726.mbox:2,S | 17 + .../cur/1600095049.22729.mbox:2,S | 34 + .../cur/1600095049.22732.mbox:2,S | 52 + .../cur/1600095049.22743.mbox:2,S | 34 + .../cur/1600095049.22749.mbox:2,S | 15 + .../cur/1600095049.22752.mbox:2,S | 50 + .../cur/1600095049.22756.mbox:2,S | 43 + .../cur/1600095049.22759.mbox:2,S | 28 + .../cur/1600095050.22595.mbox:2,S | 25 + .../cur/1600095050.22641.mbox:2,S | 24 + .../cur/1600095050.22682.mbox:2,S | 67 + .../cur/1600095050.22688.mbox:2,S | 38 + .../cur/1600095050.22697.mbox:2,S | 13 + .../cur/1600095050.22701.mbox:2,S | 278 ++ .../cur/1600095050.22707.mbox:2,S | 35 + .../cur/1600095050.22719.mbox:2,S | 38 + .../cur/1600095050.22726.mbox:2,S | 28 + .../cur/1600095050.22729.mbox:2,S | 38 + .../cur/1600095050.22732.mbox:2,S | 27 + .../cur/1600095050.22743.mbox:2,S | 17 + .../cur/1600095050.22749.mbox:2,S | 36 + .../cur/1600095050.22752.mbox:2,S | 66 + .../cur/1600095050.22756.mbox:2,S | 49 + .../cur/1600095050.22759.mbox:2,S | 43 + .../cur/1600095051.22595.mbox:2,S | 31 + .../cur/1600095051.22641.mbox:2,S | 15 + .../cur/1600095051.22682.mbox:2,S | 23 + .../cur/1600095051.22688.mbox:2,S | 95 + .../cur/1600095051.22697.mbox:2,S | 86 + .../cur/1600095051.22701.mbox:2,S | 363 +++ .../cur/1600095051.22707.mbox:2,S | 32 + .../cur/1600095051.22719.mbox:2,S | 123 + .../cur/1600095051.22726.mbox:2,S | 26 + .../cur/1600095051.22729.mbox:2,S | 59 + .../cur/1600095051.22732.mbox:2,S | 23 + .../cur/1600095051.22743.mbox:2,S | 37 + .../cur/1600095051.22749.mbox:2,S | 32 + .../cur/1600095051.22752.mbox:2,S | 29 + .../cur/1600095051.22756.mbox:2,S | 80 + .../cur/1600095051.22759.mbox:2,S | 34 + .../cur/1600095051.22762.mbox:2,S | 26 + .../cur/1600095052.22595.mbox:2,S | 36 + .../cur/1600095052.22641.mbox:2,S | 70 + .../cur/1600095052.22682.mbox:2,S | 36 + .../cur/1600095052.22688.mbox:2,S | 40 + .../cur/1600095052.22697.mbox:2,S | 20 + .../cur/1600095052.22701.mbox:2,S | 331 ++ .../cur/1600095052.22707.mbox:2,S | 26 + .../cur/1600095052.22719.mbox:2,S | 148 + .../cur/1600095052.22726.mbox:2,S | 28 + .../cur/1600095052.22729.mbox:2,S | 74 + .../cur/1600095052.22732.mbox:2,S | 21 + .../cur/1600095052.22743.mbox:2,S | 32 + .../cur/1600095052.22749.mbox:2,S | 45 + .../cur/1600095052.22752.mbox:2,S | 65 + .../cur/1600095052.22756.mbox:2,S | 27 + .../cur/1600095052.22759.mbox:2,S | 29 + .../cur/1600095052.22762.mbox:2,S | 16 + .../cur/1600095052.22765.mbox:2,S | 40 + .../cur/1600095053.22595.mbox:2,S | 37 + .../cur/1600095053.22641.mbox:2,S | 45 + .../cur/1600095053.22682.mbox:2,S | 36 + .../cur/1600095053.22688.mbox:2,S | 58 + .../cur/1600095053.22697.mbox:2,S | 34 + .../cur/1600095053.22701.mbox:2,S | 36 + .../cur/1600095053.22707.mbox:2,S | 39 + .../cur/1600095053.22719.mbox:2,S | 138 + .../cur/1600095053.22726.mbox:2,S | 31 + .../cur/1600095053.22729.mbox:2,S | 85 + .../cur/1600095053.22732.mbox:2,S | 33 + .../cur/1600095053.22743.mbox:2,S | 29 + .../cur/1600095053.22749.mbox:2,S | 51 + .../cur/1600095053.22752.mbox:2,S | 55 + .../cur/1600095053.22756.mbox:2,S | 55 + .../cur/1600095053.22759.mbox:2,S | 31 + .../cur/1600095053.22762.mbox:2,S | 62 + .../cur/1600095053.22765.mbox:2,S | 18 + .../cur/1600095053.22768.mbox:2,S | 20 + .../cur/1600095054.22595.mbox:2,S | 53 + .../cur/1600095054.22641.mbox:2,S | 66 + .../cur/1600095054.22682.mbox:2,S | 59 + .../cur/1600095054.22688.mbox:2,S | 43 + .../cur/1600095054.22697.mbox:2,S | 55 + .../cur/1600095054.22701.mbox:2,S | 46 + .../cur/1600095054.22707.mbox:2,S | 43 + .../cur/1600095054.22729.mbox:2,S | 27 + .../cur/1600095054.22732.mbox:2,S | 48 + .../cur/1600095054.22743.mbox:2,S | 59 + .../cur/1600095054.22749.mbox:2,S | 20 + .../cur/1600095054.22752.mbox:2,S | 32 + .../cur/1600095054.22756.mbox:2,S | 80 + .../cur/1600095054.22759.mbox:2,S | 48 + .../cur/1600095054.22762.mbox:2,S | 70 + .../cur/1600095054.22765.mbox:2,S | 45 + .../cur/1600095054.22768.mbox:2,S | 30 + .../cur/1600095054.22772.mbox:2,S | 25 + .../cur/1600095055.22595.mbox:2,S | 54 + .../cur/1600095055.22641.mbox:2,S | 43 + .../cur/1600095055.22682.mbox:2,S | 29 + .../cur/1600095055.22688.mbox:2,S | 45 + .../cur/1600095055.22697.mbox:2,S | 56 + .../cur/1600095055.22701.mbox:2,S | 132 + .../cur/1600095055.22707.mbox:2,S | 75 + .../cur/1600095055.22729.mbox:2,S | 31 + .../cur/1600095055.22732.mbox:2,S | 51 + .../cur/1600095055.22743.mbox:2,S | 47 + .../cur/1600095055.22749.mbox:2,S | 19 + .../cur/1600095055.22752.mbox:2,S | 43 + .../cur/1600095055.22756.mbox:2,S | 61 + .../cur/1600095055.22759.mbox:2,S | 19 + .../cur/1600095055.22762.mbox:2,S | 27 + .../cur/1600095055.22765.mbox:2,S | 29 + .../cur/1600095055.22768.mbox:2,S | 26 + .../cur/1600095055.22772.mbox:2,S | 58 + .../cur/1600095056.22595.mbox:2,S | 29 + .../cur/1600095056.22641.mbox:2,S | 61 + .../cur/1600095056.22682.mbox:2,S | 49 + .../cur/1600095056.22688.mbox:2,S | 48 + .../cur/1600095056.22697.mbox:2,S | 68 + .../cur/1600095056.22701.mbox:2,S | 55 + .../cur/1600095056.22732.mbox:2,S | 44 + .../cur/1600095056.22743.mbox:2,S | 70 + .../cur/1600095056.22749.mbox:2,S | 22 + .../cur/1600095056.22752.mbox:2,S | 28 + .../cur/1600095056.22756.mbox:2,S | 35 + .../cur/1600095056.22759.mbox:2,S | 49 + .../cur/1600095056.22762.mbox:2,S | 74 + .../cur/1600095056.22765.mbox:2,S | 24 + .../cur/1600095056.22768.mbox:2,S | 44 + .../cur/1600095056.22772.mbox:2,S | 32 + .../cur/1600095056.22777.mbox:2,S | 46 + .../cur/1600095057.22595.mbox:2,S | 53 + .../cur/1600095057.22641.mbox:2,S | 26 + .../cur/1600095057.22682.mbox:2,S | 25 + .../cur/1600095057.22688.mbox:2,S | 31 + .../cur/1600095057.22697.mbox:2,S | 108 + .../cur/1600095057.22701.mbox:2,S | 94 + .../cur/1600095057.22732.mbox:2,S | 31 + .../cur/1600095057.22743.mbox:2,S | 26 + .../cur/1600095057.22749.mbox:2,S | 37 + .../cur/1600095057.22752.mbox:2,S | 14 + .../cur/1600095057.22756.mbox:2,S | 52 + .../cur/1600095057.22759.mbox:2,S | 22 + .../cur/1600095057.22762.mbox:2,S | 31 + .../cur/1600095057.22765.mbox:2,S | 27 + .../cur/1600095057.22768.mbox:2,S | 15 + .../cur/1600095057.22772.mbox:2,S | 25 + .../cur/1600095057.22777.mbox:2,S | 84 + .../cur/1600095057.22780.mbox:2,S | 35 + .../cur/1600095058.22595.mbox:2,S | 49 + .../cur/1600095058.22641.mbox:2,S | 22 + .../cur/1600095058.22682.mbox:2,S | 24 + .../cur/1600095058.22688.mbox:2,S | 38 + .../cur/1600095058.22697.mbox:2,S | 24 + .../cur/1600095058.22701.mbox:2,S | 71 + .../cur/1600095058.22732.mbox:2,S | 42 + .../cur/1600095058.22743.mbox:2,S | 31 + .../cur/1600095058.22749.mbox:2,S | 44 + .../cur/1600095058.22752.mbox:2,S | 19 + .../cur/1600095058.22756.mbox:2,S | 93 + .../cur/1600095058.22759.mbox:2,S | 12 + .../cur/1600095058.22768.mbox:2,S | 105 + .../cur/1600095058.22772.mbox:2,S | 32 + .../cur/1600095058.22777.mbox:2,S | 103 + .../cur/1600095058.22780.mbox:2,S | 59 + .../cur/1600095059.22595.mbox:2,S | 50 + .../cur/1600095059.22641.mbox:2,S | 31 + .../cur/1600095059.22682.mbox:2,S | 46 + .../cur/1600095059.22688.mbox:2,S | 73 + .../cur/1600095059.22697.mbox:2,S | 23 + .../cur/1600095059.22701.mbox:2,S | 28 + .../cur/1600095059.22743.mbox:2,S | 55 + .../cur/1600095059.22749.mbox:2,S | 27 + .../cur/1600095059.22752.mbox:2,S | 25 + .../cur/1600095059.22756.mbox:2,S | 66 + .../cur/1600095059.22759.mbox:2,S | 27 + .../cur/1600095059.22768.mbox:2,S | 152 + .../cur/1600095059.22772.mbox:2,S | 15 + .../cur/1600095059.22777.mbox:2,S | 39 + .../cur/1600095059.22780.mbox:2,S | 60 + .../cur/1600095059.22784.mbox:2,S | 33 + .../cur/1600095060.22595.mbox:2,S | 285 ++ .../cur/1600095060.22641.mbox:2,S | 54 + .../cur/1600095060.22682.mbox:2,S | 94 + .../cur/1600095060.22688.mbox:2,S | 50 + .../cur/1600095060.22697.mbox:2,S | 90 + .../cur/1600095060.22701.mbox:2,S | 101 + .../cur/1600095060.22743.mbox:2,S | 42 + .../cur/1600095060.22749.mbox:2,S | 35 + .../cur/1600095060.22752.mbox:2,S | 37 + .../cur/1600095060.22756.mbox:2,S | 87 + .../cur/1600095060.22759.mbox:2,S | 40 + .../cur/1600095060.22768.mbox:2,S | 31 + .../cur/1600095060.22772.mbox:2,S | 42 + .../cur/1600095060.22777.mbox:2,S | 19 + .../cur/1600095060.22780.mbox:2,S | 58 + .../cur/1600095060.22784.mbox:2,S | 26 + .../cur/1600095060.22788.mbox:2,S | 90 + .../cur/1600095061.22595.mbox:2,S | 34 + .../cur/1600095061.22641.mbox:2,S | 19 + .../cur/1600095061.22682.mbox:2,S | 43 + .../cur/1600095061.22688.mbox:2,S | 26 + .../cur/1600095061.22697.mbox:2,S | 44 + .../cur/1600095061.22701.mbox:2,S | 349 +++ .../cur/1600095061.22743.mbox:2,S | 44 + .../cur/1600095061.22749.mbox:2,S | 48 + .../cur/1600095061.22752.mbox:2,S | 70 + .../cur/1600095061.22756.mbox:2,S | 19 + .../cur/1600095061.22759.mbox:2,S | 25 + .../cur/1600095061.22768.mbox:2,S | 92 + .../cur/1600095061.22772.mbox:2,S | 17 + .../cur/1600095061.22777.mbox:2,S | 48 + .../cur/1600095061.22780.mbox:2,S | 37 + .../cur/1600095061.22784.mbox:2,S | 46 + .../cur/1600095061.22788.mbox:2,S | 78 + .../cur/1600095061.22792.mbox:2,S | 30 + .../cur/1600095062.22595.mbox:2,S | 28 + .../cur/1600095062.22641.mbox:2,S | 38 + .../cur/1600095062.22682.mbox:2,S | 77 + .../cur/1600095062.22688.mbox:2,S | 33 + .../cur/1600095062.22701.mbox:2,S | 40 + .../cur/1600095062.22743.mbox:2,S | 85 + .../cur/1600095062.22756.mbox:2,S | 30 + .../cur/1600095062.22759.mbox:2,S | 43 + .../cur/1600095062.22768.mbox:2,S | 140 + .../cur/1600095062.22772.mbox:2,S | 28 + .../cur/1600095062.22777.mbox:2,S | 72 + .../cur/1600095062.22780.mbox:2,S | 32 + .../cur/1600095062.22784.mbox:2,S | 30 + .../cur/1600095062.22788.mbox:2,S | 121 + .../cur/1600095062.22792.mbox:2,S | 34 + .../cur/1600095062.22796.mbox:2,S | 23 + .../cur/1600095063.22595.mbox:2,S | 30 + .../cur/1600095063.22641.mbox:2,S | 38 + .../cur/1600095063.22682.mbox:2,S | 57 + .../cur/1600095063.22688.mbox:2,S | 52 + .../cur/1600095063.22701.mbox:2,S | 55 + .../cur/1600095063.22743.mbox:2,S | 59 + .../cur/1600095063.22756.mbox:2,S | 52 + .../cur/1600095063.22759.mbox:2,S | 20 + .../cur/1600095063.22768.mbox:2,S | 49 + .../cur/1600095063.22772.mbox:2,S | 117 + .../cur/1600095063.22777.mbox:2,S | 62 + .../cur/1600095063.22780.mbox:2,S | 31 + .../cur/1600095063.22784.mbox:2,S | 9 + .../cur/1600095063.22788.mbox:2,S | 27 + .../cur/1600095063.22796.mbox:2,S | 37 + .../cur/1600095063.22801.mbox:2,S | 47 + .../cur/1600095064.22595.mbox:2,S | 16 + .../cur/1600095064.22641.mbox:2,S | 67 + .../cur/1600095064.22682.mbox:2,S | 16 + .../cur/1600095064.22688.mbox:2,S | 28 + .../cur/1600095064.22701.mbox:2,S | 50 + .../cur/1600095064.22743.mbox:2,S | 57 + .../cur/1600095064.22756.mbox:2,S | 59 + .../cur/1600095064.22759.mbox:2,S | 44 + .../cur/1600095064.22768.mbox:2,S | 66 + .../cur/1600095064.22772.mbox:2,S | 93 + .../cur/1600095064.22777.mbox:2,S | 76 + .../cur/1600095064.22780.mbox:2,S | 42 + .../cur/1600095064.22784.mbox:2,S | 28 + .../cur/1600095064.22788.mbox:2,S | 77 + .../cur/1600095064.22796.mbox:2,S | 18 + .../cur/1600095064.22801.mbox:2,S | 80 + .../cur/1600095065.22595.mbox:2,S | 25 + .../cur/1600095065.22641.mbox:2,S | 53 + .../cur/1600095065.22682.mbox:2,S | 37 + .../cur/1600095065.22688.mbox:2,S | 59 + .../cur/1600095065.22701.mbox:2,S | 67 + .../cur/1600095065.22743.mbox:2,S | 26 + .../cur/1600095065.22756.mbox:2,S | 16 + .../cur/1600095065.22759.mbox:2,S | 36 + .../cur/1600095065.22768.mbox:2,S | 29 + .../cur/1600095065.22772.mbox:2,S | 31 + .../cur/1600095065.22777.mbox:2,S | 18 + .../cur/1600095065.22780.mbox:2,S | 65 + .../cur/1600095065.22784.mbox:2,S | 12 + .../cur/1600095065.22796.mbox:2,S | 47 + .../cur/1600095065.22801.mbox:2,S | 29 + .../cur/1600095065.22804.mbox:2,S | 32 + .../cur/1600095066.22595.mbox:2,S | 41 + .../cur/1600095066.22641.mbox:2,S | 36 + .../cur/1600095066.22688.mbox:2,S | 44 + .../cur/1600095066.22701.mbox:2,S | 48 + .../cur/1600095066.22743.mbox:2,S | 26 + .../cur/1600095066.22756.mbox:2,S | 41 + .../cur/1600095066.22759.mbox:2,S | 61 + .../cur/1600095066.22768.mbox:2,S | 108 + .../cur/1600095066.22772.mbox:2,S | 41 + .../cur/1600095066.22784.mbox:2,S | 25 + .../cur/1600095066.22796.mbox:2,S | 54 + .../cur/1600095066.22801.mbox:2,S | 56 + .../cur/1600095066.22804.mbox:2,S | 25 + .../cur/1600095066.22807.mbox:2,S | 59 + .../cur/1600095067.22595.mbox:2,S | 50 + .../cur/1600095067.22641.mbox:2,S | 30 + .../cur/1600095067.22688.mbox:2,S | 30 + .../cur/1600095067.22701.mbox:2,S | 32 + .../cur/1600095067.22743.mbox:2,S | 56 + .../cur/1600095067.22756.mbox:2,S | 16 + .../cur/1600095067.22759.mbox:2,S | 29 + .../cur/1600095067.22768.mbox:2,S | 61 + .../cur/1600095067.22772.mbox:2,S | 46 + .../cur/1600095067.22784.mbox:2,S | 14 + .../cur/1600095067.22796.mbox:2,S | 30 + .../cur/1600095067.22801.mbox:2,S | 28 + .../cur/1600095067.22804.mbox:2,S | 17 + .../cur/1600095067.22807.mbox:2,S | 51 + .../cur/1600095068.22595.mbox:2,S | 30 + .../cur/1600095068.22641.mbox:2,S | 58 + .../cur/1600095068.22688.mbox:2,S | 72 + .../cur/1600095068.22701.mbox:2,S | 214 ++ .../cur/1600095068.22743.mbox:2,S | 39 + .../cur/1600095068.22756.mbox:2,S | 32 + .../cur/1600095068.22759.mbox:2,S | 47 + .../cur/1600095068.22768.mbox:2,S | 34 + .../cur/1600095068.22772.mbox:2,S | 63 + .../cur/1600095068.22784.mbox:2,S | 21 + .../cur/1600095068.22796.mbox:2,S | 40 + .../cur/1600095068.22801.mbox:2,S | 23 + .../cur/1600095068.22804.mbox:2,S | 37 + .../cur/1600095068.22807.mbox:2,S | 25 + .../cur/1600095068.22810.mbox:2,S | 16 + .../cur/1600095069.22595.mbox:2,S | 54 + .../cur/1600095069.22641.mbox:2,S | 9 + .../cur/1600095069.22688.mbox:2,S | 41 + .../cur/1600095069.22701.mbox:2,S | 36 + .../cur/1600095069.22743.mbox:2,S | 32 + .../cur/1600095069.22756.mbox:2,S | 22 + .../cur/1600095069.22759.mbox:2,S | 39 + .../cur/1600095069.22768.mbox:2,S | 101 + .../cur/1600095069.22772.mbox:2,S | 56 + .../cur/1600095069.22784.mbox:2,S | 16 + .../cur/1600095069.22796.mbox:2,S | 35 + .../cur/1600095069.22801.mbox:2,S | 56 + .../cur/1600095069.22804.mbox:2,S | 35 + .../cur/1600095069.22807.mbox:2,S | 15 + .../cur/1600095069.22810.mbox:2,S | 21 + .../cur/1600095069.22813.mbox:2,S | 33 + .../cur/1600095070.22595.mbox:2,S | 73 + .../cur/1600095070.22641.mbox:2,S | 81 + .../cur/1600095070.22688.mbox:2,S | 23 + .../cur/1600095070.22701.mbox:2,S | 39 + .../cur/1600095070.22743.mbox:2,S | 44 + .../cur/1600095070.22756.mbox:2,S | 35 + .../cur/1600095070.22759.mbox:2,S | 16 + .../cur/1600095070.22768.mbox:2,S | 29 + .../cur/1600095070.22772.mbox:2,S | 31 + .../cur/1600095070.22784.mbox:2,S | 13 + .../cur/1600095070.22796.mbox:2,S | 24 + .../cur/1600095070.22801.mbox:2,S | 38 + .../cur/1600095070.22804.mbox:2,S | 25 + .../cur/1600095070.22807.mbox:2,S | 28 + .../cur/1600095070.22810.mbox:2,S | 39 + .../cur/1600095070.22813.mbox:2,S | 19 + .../cur/1600095071.22595.mbox:2,S | 97 + .../cur/1600095071.22641.mbox:2,S | 12 + .../cur/1600095071.22701.mbox:2,S | 18 + .../cur/1600095071.22743.mbox:2,S | 17 + .../cur/1600095071.22756.mbox:2,S | 19 + .../cur/1600095071.22759.mbox:2,S | 45 + .../cur/1600095071.22768.mbox:2,S | 43 + .../cur/1600095071.22772.mbox:2,S | 103 + .../cur/1600095071.22784.mbox:2,S | 35 + .../cur/1600095071.22796.mbox:2,S | 82 + .../cur/1600095071.22801.mbox:2,S | 57 + .../cur/1600095071.22804.mbox:2,S | 23 + .../cur/1600095071.22807.mbox:2,S | 30 + .../cur/1600095071.22810.mbox:2,S | 26 + .../cur/1600095071.22813.mbox:2,S | 17 + .../cur/1600095071.22817.mbox:2,S | 22 + .../cur/1600095072.22595.mbox:2,S | 31 + .../cur/1600095072.22641.mbox:2,S | 111 + .../cur/1600095072.22701.mbox:2,S | 104 + .../cur/1600095072.22743.mbox:2,S | 80 + .../cur/1600095072.22756.mbox:2,S | 27 + .../cur/1600095072.22759.mbox:2,S | 40 + .../cur/1600095072.22768.mbox:2,S | 25 + .../cur/1600095072.22772.mbox:2,S | 51 + .../cur/1600095072.22784.mbox:2,S | 20 + .../cur/1600095072.22796.mbox:2,S | 51 + .../cur/1600095072.22804.mbox:2,S | 31 + .../cur/1600095072.22807.mbox:2,S | 27 + .../cur/1600095072.22810.mbox:2,S | 52 + .../cur/1600095072.22813.mbox:2,S | 23 + .../cur/1600095072.22817.mbox:2,S | 35 + .../cur/1600095072.22820.mbox:2,S | 40 + .../cur/1600095073.22595.mbox:2,S | 47 + .../cur/1600095073.22641.mbox:2,S | 31 + .../cur/1600095073.22701.mbox:2,S | 125 + .../cur/1600095073.22743.mbox:2,S | 39 + .../cur/1600095073.22756.mbox:2,S | 38 + .../cur/1600095073.22759.mbox:2,S | 34 + .../cur/1600095073.22768.mbox:2,S | 23 + .../cur/1600095073.22772.mbox:2,S | 46 + .../cur/1600095073.22784.mbox:2,S | 52 + .../cur/1600095073.22796.mbox:2,S | 34 + .../cur/1600095073.22804.mbox:2,S | 21 + .../cur/1600095073.22807.mbox:2,S | 22 + .../cur/1600095073.22810.mbox:2,S | 65 + .../cur/1600095073.22813.mbox:2,S | 20 + .../cur/1600095073.22817.mbox:2,S | 42 + .../cur/1600095073.22820.mbox:2,S | 64 + .../cur/1600095073.22823.mbox:2,S | 27 + .../cur/1600095074.22595.mbox:2,S | 25 + .../cur/1600095074.22641.mbox:2,S | 50 + .../cur/1600095074.22701.mbox:2,S | 71 + .../cur/1600095074.22743.mbox:2,S | 24 + .../cur/1600095074.22756.mbox:2,S | 48 + .../cur/1600095074.22759.mbox:2,S | 36 + .../cur/1600095074.22768.mbox:2,S | 35 + .../cur/1600095074.22772.mbox:2,S | 50 + .../cur/1600095074.22784.mbox:2,S | 37 + .../cur/1600095074.22796.mbox:2,S | 54 + .../cur/1600095074.22804.mbox:2,S | 27 + .../cur/1600095074.22807.mbox:2,S | 45 + .../cur/1600095074.22810.mbox:2,S | 34 + .../cur/1600095074.22813.mbox:2,S | 29 + .../cur/1600095074.22817.mbox:2,S | 78 + .../cur/1600095074.22820.mbox:2,S | 21 + .../cur/1600095074.22823.mbox:2,S | 35 + .../cur/1600095074.22826.mbox:2,S | 20 + .../cur/1600095075.22595.mbox:2,S | 20 + .../cur/1600095075.22641.mbox:2,S | 64 + .../cur/1600095075.22701.mbox:2,S | 52 + .../cur/1600095075.22743.mbox:2,S | 22 + .../cur/1600095075.22756.mbox:2,S | 45 + .../cur/1600095075.22759.mbox:2,S | 41 + .../cur/1600095075.22768.mbox:2,S | 21 + .../cur/1600095075.22772.mbox:2,S | 39 + .../cur/1600095075.22784.mbox:2,S | 66 + .../cur/1600095075.22796.mbox:2,S | 66 + .../cur/1600095075.22804.mbox:2,S | 33 + .../cur/1600095075.22807.mbox:2,S | 54 + .../cur/1600095075.22810.mbox:2,S | 15 + .../cur/1600095075.22813.mbox:2,S | 29 + .../cur/1600095075.22817.mbox:2,S | 65 + .../cur/1600095075.22820.mbox:2,S | 13 + .../cur/1600095075.22826.mbox:2,S | 18 + .../cur/1600095075.22829.mbox:2,S | 24 + .../cur/1600095076.22595.mbox:2,S | 21 + .../cur/1600095076.22641.mbox:2,S | 30 + .../cur/1600095076.22701.mbox:2,S | 49 + .../cur/1600095076.22743.mbox:2,S | 36 + .../cur/1600095076.22756.mbox:2,S | 51 + .../cur/1600095076.22759.mbox:2,S | 26 + .../cur/1600095076.22768.mbox:2,S | 32 + .../cur/1600095076.22772.mbox:2,S | 22 + .../cur/1600095076.22784.mbox:2,S | 45 + .../cur/1600095076.22796.mbox:2,S | 28 + .../cur/1600095076.22804.mbox:2,S | 19 + .../cur/1600095076.22807.mbox:2,S | 98 + .../cur/1600095076.22810.mbox:2,S | 28 + .../cur/1600095076.22813.mbox:2,S | 22 + .../cur/1600095076.22817.mbox:2,S | 54 + .../cur/1600095076.22820.mbox:2,S | 63 + .../cur/1600095076.22826.mbox:2,S | 20 + .../cur/1600095076.22829.mbox:2,S | 93 + .../cur/1600095076.22832.mbox:2,S | 29 + .../cur/1600095077.22595.mbox:2,S | 65 + .../cur/1600095077.22701.mbox:2,S | 77 + .../cur/1600095077.22743.mbox:2,S | 38 + .../cur/1600095077.22756.mbox:2,S | 92 + .../cur/1600095077.22759.mbox:2,S | 69 + .../cur/1600095077.22768.mbox:2,S | 29 + .../cur/1600095077.22772.mbox:2,S | 75 + .../cur/1600095077.22784.mbox:2,S | 28 + .../cur/1600095077.22796.mbox:2,S | 34 + .../cur/1600095077.22804.mbox:2,S | 44 + .../cur/1600095077.22807.mbox:2,S | 112 + .../cur/1600095077.22810.mbox:2,S | 22 + .../cur/1600095077.22813.mbox:2,S | 26 + .../cur/1600095077.22817.mbox:2,S | 33 + .../cur/1600095077.22820.mbox:2,S | 32 + .../cur/1600095077.22829.mbox:2,S | 83 + .../cur/1600095077.22832.mbox:2,S | 19 + .../cur/1600095078.22595.mbox:2,S | 37 + .../cur/1600095078.22701.mbox:2,S | 18 + .../cur/1600095078.22743.mbox:2,S | 66 + .../cur/1600095078.22756.mbox:2,S | 69 + .../cur/1600095078.22759.mbox:2,S | 58 + .../cur/1600095078.22768.mbox:2,S | 38 + .../cur/1600095078.22772.mbox:2,S | 77 + .../cur/1600095078.22796.mbox:2,S | 42 + .../cur/1600095078.22804.mbox:2,S | 84 + .../cur/1600095078.22807.mbox:2,S | 22 + .../cur/1600095078.22810.mbox:2,S | 33 + .../cur/1600095078.22813.mbox:2,S | 25 + .../cur/1600095078.22817.mbox:2,S | 54 + .../cur/1600095078.22820.mbox:2,S | 28 + .../cur/1600095078.22832.mbox:2,S | 21 + .../cur/1600095078.22835.mbox:2,S | 33 + .../cur/1600095079.22595.mbox:2,S | 31 + .../cur/1600095079.22701.mbox:2,S | 33 + .../cur/1600095079.22743.mbox:2,S | 30 + .../cur/1600095079.22756.mbox:2,S | 53 + .../cur/1600095079.22759.mbox:2,S | 25 + .../cur/1600095079.22768.mbox:2,S | 52 + .../cur/1600095079.22772.mbox:2,S | 75 + .../cur/1600095079.22796.mbox:2,S | 25 + .../cur/1600095079.22807.mbox:2,S | 148 + .../cur/1600095079.22810.mbox:2,S | 60 + .../cur/1600095079.22813.mbox:2,S | 45 + .../cur/1600095079.22817.mbox:2,S | 46 + .../cur/1600095079.22820.mbox:2,S | 23 + .../cur/1600095079.22832.mbox:2,S | 29 + .../cur/1600095079.22835.mbox:2,S | 56 + .../cur/1600095079.22838.mbox:2,S | 16 + .../cur/1600095080.22595.mbox:2,S | 32 + .../cur/1600095080.22701.mbox:2,S | 24 + .../cur/1600095080.22743.mbox:2,S | 37 + .../cur/1600095080.22756.mbox:2,S | 47 + .../cur/1600095080.22759.mbox:2,S | 102 + .../cur/1600095080.22768.mbox:2,S | 86 + .../cur/1600095080.22772.mbox:2,S | 26 + .../cur/1600095080.22796.mbox:2,S | 54 + .../cur/1600095080.22807.mbox:2,S | 140 + .../cur/1600095080.22810.mbox:2,S | 137 + .../cur/1600095080.22813.mbox:2,S | 46 + .../cur/1600095080.22817.mbox:2,S | 53 + .../cur/1600095080.22820.mbox:2,S | 25 + .../cur/1600095080.22832.mbox:2,S | 23 + .../cur/1600095080.22835.mbox:2,S | 59 + .../cur/1600095080.22838.mbox:2,S | 27 + .../cur/1600095080.22841.mbox:2,S | 31 + .../cur/1600095081.22595.mbox:2,S | 27 + .../cur/1600095081.22701.mbox:2,S | 72 + .../cur/1600095081.22743.mbox:2,S | 45 + .../cur/1600095081.22756.mbox:2,S | 66 + .../cur/1600095081.22759.mbox:2,S | 52 + .../cur/1600095081.22768.mbox:2,S | 55 + .../cur/1600095081.22772.mbox:2,S | 39 + .../cur/1600095081.22796.mbox:2,S | 46 + .../cur/1600095081.22807.mbox:2,S | 28 + .../cur/1600095081.22810.mbox:2,S | 49 + .../cur/1600095081.22813.mbox:2,S | 55 + .../cur/1600095081.22817.mbox:2,S | 65 + .../cur/1600095081.22820.mbox:2,S | 37 + .../cur/1600095081.22832.mbox:2,S | 20 + .../cur/1600095081.22835.mbox:2,S | 48 + .../cur/1600095081.22838.mbox:2,S | 24 + .../cur/1600095081.22841.mbox:2,S | 40 + .../cur/1600095081.22844.mbox:2,S | 49 + .../cur/1600095082.22595.mbox:2,S | 25 + .../cur/1600095082.22701.mbox:2,S | 26 + .../cur/1600095082.22743.mbox:2,S | 24 + .../cur/1600095082.22756.mbox:2,S | 19 + .../cur/1600095082.22759.mbox:2,S | 37 + .../cur/1600095082.22768.mbox:2,S | 26 + .../cur/1600095082.22772.mbox:2,S | 121 + .../cur/1600095082.22796.mbox:2,S | 42 + .../cur/1600095082.22807.mbox:2,S | 35 + .../cur/1600095082.22810.mbox:2,S | 74 + .../cur/1600095082.22813.mbox:2,S | 41 + .../cur/1600095082.22817.mbox:2,S | 60 + .../cur/1600095082.22820.mbox:2,S | 48 + .../cur/1600095082.22832.mbox:2,S | 25 + .../cur/1600095082.22835.mbox:2,S | 28 + .../cur/1600095082.22838.mbox:2,S | 21 + .../cur/1600095082.22841.mbox:2,S | 69 + .../cur/1600095082.22844.mbox:2,S | 53 + .../cur/1600095082.22847.mbox:2,S | 55 + .../cur/1600095083.22595.mbox:2,S | 33 + .../cur/1600095083.22701.mbox:2,S | 68 + .../cur/1600095083.22743.mbox:2,S | 30 + .../cur/1600095083.22756.mbox:2,S | 27 + .../cur/1600095083.22759.mbox:2,S | 76 + .../cur/1600095083.22768.mbox:2,S | 39 + .../cur/1600095083.22772.mbox:2,S | 21 + .../cur/1600095083.22796.mbox:2,S | 41 + .../cur/1600095083.22807.mbox:2,S | 19 + .../cur/1600095083.22810.mbox:2,S | 56 + .../cur/1600095083.22813.mbox:2,S | 30 + .../cur/1600095083.22817.mbox:2,S | 44 + .../cur/1600095083.22820.mbox:2,S | 83 + .../cur/1600095083.22832.mbox:2,S | 28 + .../cur/1600095083.22835.mbox:2,S | 38 + .../cur/1600095083.22838.mbox:2,S | 18 + .../cur/1600095083.22841.mbox:2,S | 34 + .../cur/1600095083.22844.mbox:2,S | 24 + .../cur/1600095083.22847.mbox:2,S | 44 + .../cur/1600095083.22850.mbox:2,S | 55 + .../cur/1600095084.22595.mbox:2,S | 37 + .../cur/1600095084.22701.mbox:2,S | 39 + .../cur/1600095084.22743.mbox:2,S | 44 + .../cur/1600095084.22756.mbox:2,S | 34 + .../cur/1600095084.22759.mbox:2,S | 109 + .../cur/1600095084.22768.mbox:2,S | 54 + .../cur/1600095084.22772.mbox:2,S | 32 + .../cur/1600095084.22796.mbox:2,S | 30 + .../cur/1600095084.22807.mbox:2,S | 50 + .../cur/1600095084.22810.mbox:2,S | 33 + .../cur/1600095084.22813.mbox:2,S | 22 + .../cur/1600095084.22817.mbox:2,S | 28 + .../cur/1600095084.22820.mbox:2,S | 16 + .../cur/1600095084.22832.mbox:2,S | 26 + .../cur/1600095084.22835.mbox:2,S | 47 + .../cur/1600095084.22838.mbox:2,S | 9 + .../cur/1600095084.22841.mbox:2,S | 31 + .../cur/1600095084.22844.mbox:2,S | 32 + .../cur/1600095084.22847.mbox:2,S | 105 + .../cur/1600095084.22850.mbox:2,S | 79 + .../cur/1600095084.22853.mbox:2,S | 28 + .../cur/1600095085.22595.mbox:2,S | 46 + .../cur/1600095085.22701.mbox:2,S | 61 + .../cur/1600095085.22743.mbox:2,S | 30 + .../cur/1600095085.22756.mbox:2,S | 29 + .../cur/1600095085.22759.mbox:2,S | 41 + .../cur/1600095085.22768.mbox:2,S | 47 + .../cur/1600095085.22772.mbox:2,S | 143 + .../cur/1600095085.22796.mbox:2,S | 42 + .../cur/1600095085.22807.mbox:2,S | 38 + .../cur/1600095085.22810.mbox:2,S | 29 + .../cur/1600095085.22813.mbox:2,S | 30 + .../cur/1600095085.22817.mbox:2,S | 90 + .../cur/1600095085.22820.mbox:2,S | 33 + .../cur/1600095085.22832.mbox:2,S | 64 + .../cur/1600095085.22835.mbox:2,S | 46 + .../cur/1600095085.22844.mbox:2,S | 29 + .../cur/1600095085.22847.mbox:2,S | 66 + .../cur/1600095085.22850.mbox:2,S | 57 + .../cur/1600095085.22853.mbox:2,S | 16 + .../cur/1600095085.22856.mbox:2,S | 43 + .../cur/1600095086.22595.mbox:2,S | 60 + .../cur/1600095086.22701.mbox:2,S | 46 + .../cur/1600095086.22743.mbox:2,S | 40 + .../cur/1600095086.22756.mbox:2,S | 39 + .../cur/1600095086.22759.mbox:2,S | 46 + .../cur/1600095086.22768.mbox:2,S | 55 + .../cur/1600095086.22772.mbox:2,S | 48 + .../cur/1600095086.22796.mbox:2,S | 55 + .../cur/1600095086.22807.mbox:2,S | 31 + .../cur/1600095086.22810.mbox:2,S | 82 + .../cur/1600095086.22817.mbox:2,S | 33 + .../cur/1600095086.22820.mbox:2,S | 18 + .../cur/1600095086.22832.mbox:2,S | 34 + .../cur/1600095086.22835.mbox:2,S | 22 + .../cur/1600095086.22844.mbox:2,S | 32 + .../cur/1600095086.22847.mbox:2,S | 63 + .../cur/1600095086.22850.mbox:2,S | 12 + .../cur/1600095086.22853.mbox:2,S | 17 + .../cur/1600095086.22856.mbox:2,S | 48 + .../cur/1600095087.22595.mbox:2,S | 35 + .../cur/1600095087.22701.mbox:2,S | 68 + .../cur/1600095087.22743.mbox:2,S | 26 + .../cur/1600095087.22756.mbox:2,S | 22 + .../cur/1600095087.22759.mbox:2,S | 162 + .../cur/1600095087.22772.mbox:2,S | 23 + .../cur/1600095087.22796.mbox:2,S | 41 + .../cur/1600095087.22807.mbox:2,S | 25 + .../cur/1600095087.22810.mbox:2,S | 23 + .../cur/1600095087.22817.mbox:2,S | 64 + .../cur/1600095087.22820.mbox:2,S | 45 + .../cur/1600095087.22832.mbox:2,S | 64 + .../cur/1600095087.22835.mbox:2,S | 42 + .../cur/1600095087.22844.mbox:2,S | 33 + .../cur/1600095087.22847.mbox:2,S | 23 + .../cur/1600095087.22850.mbox:2,S | 18 + .../cur/1600095087.22853.mbox:2,S | 50 + .../cur/1600095087.22862.mbox:2,S | 19 + .../cur/1600095088.22595.mbox:2,S | 86 + .../cur/1600095088.22743.mbox:2,S | 38 + .../cur/1600095088.22756.mbox:2,S | 41 + .../cur/1600095088.22759.mbox:2,S | 43 + .../cur/1600095088.22772.mbox:2,S | 103 + .../cur/1600095088.22796.mbox:2,S | 62 + .../cur/1600095088.22807.mbox:2,S | 36 + .../cur/1600095088.22810.mbox:2,S | 79 + .../cur/1600095088.22817.mbox:2,S | 124 + .../cur/1600095088.22820.mbox:2,S | 42 + .../cur/1600095088.22832.mbox:2,S | 35 + .../cur/1600095088.22835.mbox:2,S | 72 + .../cur/1600095088.22844.mbox:2,S | 41 + .../cur/1600095088.22847.mbox:2,S | 15 + .../cur/1600095088.22853.mbox:2,S | 15 + .../cur/1600095088.22862.mbox:2,S | 47 + .../cur/1600095088.22866.mbox:2,S | 38 + .../cur/1600095089.22595.mbox:2,S | 51 + .../cur/1600095089.22743.mbox:2,S | 32 + .../cur/1600095089.22756.mbox:2,S | 23 + .../cur/1600095089.22759.mbox:2,S | 71 + .../cur/1600095089.22772.mbox:2,S | 44 + .../cur/1600095089.22796.mbox:2,S | 51 + .../cur/1600095089.22807.mbox:2,S | 38 + .../cur/1600095089.22817.mbox:2,S | 66 + .../cur/1600095089.22820.mbox:2,S | 32 + .../cur/1600095089.22832.mbox:2,S | 27 + .../cur/1600095089.22835.mbox:2,S | 36 + .../cur/1600095089.22844.mbox:2,S | 28 + .../cur/1600095089.22847.mbox:2,S | 35 + .../cur/1600095089.22853.mbox:2,S | 28 + .../cur/1600095089.22862.mbox:2,S | 19 + .../cur/1600095089.22866.mbox:2,S | 75 + .../cur/1600095089.22871.mbox:2,S | 24 + .../cur/1600095090.22595.mbox:2,S | 23 + .../cur/1600095090.22743.mbox:2,S | 28 + .../cur/1600095090.22756.mbox:2,S | 92 + .../cur/1600095090.22759.mbox:2,S | 92 + .../cur/1600095090.22772.mbox:2,S | 91 + .../cur/1600095090.22796.mbox:2,S | 56 + .../cur/1600095090.22807.mbox:2,S | 45 + .../cur/1600095090.22817.mbox:2,S | 86 + .../cur/1600095090.22820.mbox:2,S | 39 + .../cur/1600095090.22832.mbox:2,S | 39 + .../cur/1600095090.22844.mbox:2,S | 36 + .../cur/1600095090.22847.mbox:2,S | 22 + .../cur/1600095090.22853.mbox:2,S | 29 + .../cur/1600095090.22866.mbox:2,S | 43 + .../cur/1600095090.22871.mbox:2,S | 30 + .../cur/1600095090.22874.mbox:2,S | 248 ++ .../cur/1600095091.22595.mbox:2,S | 33 + .../cur/1600095091.22743.mbox:2,S | 43 + .../cur/1600095091.22756.mbox:2,S | 59 + .../cur/1600095091.22759.mbox:2,S | 93 + .../cur/1600095091.22772.mbox:2,S | 71 + .../cur/1600095091.22796.mbox:2,S | 59 + .../cur/1600095091.22807.mbox:2,S | 56 + .../cur/1600095091.22817.mbox:2,S | 94 + .../cur/1600095091.22820.mbox:2,S | 56 + .../cur/1600095091.22832.mbox:2,S | 52 + .../cur/1600095091.22844.mbox:2,S | 33 + .../cur/1600095091.22866.mbox:2,S | 34 + .../cur/1600095091.22871.mbox:2,S | 53 + .../cur/1600095091.22874.mbox:2,S | 32 + .../cur/1600095091.22877.mbox:2,S | 37 + .../cur/1600095092.22595.mbox:2,S | 44 + .../cur/1600095092.22743.mbox:2,S | 37 + .../cur/1600095092.22756.mbox:2,S | 57 + .../cur/1600095092.22759.mbox:2,S | 38 + .../cur/1600095092.22772.mbox:2,S | 123 + .../cur/1600095092.22796.mbox:2,S | 32 + .../cur/1600095092.22807.mbox:2,S | 43 + .../cur/1600095092.22844.mbox:2,S | 43 + .../cur/1600095092.22866.mbox:2,S | 80 + .../cur/1600095092.22871.mbox:2,S | 23 + .../cur/1600095092.22874.mbox:2,S | 55 + .../cur/1600095092.22877.mbox:2,S | 55 + .../cur/1600095093.22595.mbox:2,S | 26 + .../cur/1600095093.22743.mbox:2,S | 77 + .../cur/1600095093.22756.mbox:2,S | 68 + .../cur/1600095093.22759.mbox:2,S | 78 + .../cur/1600095093.22772.mbox:2,S | 30 + .../cur/1600095093.22796.mbox:2,S | 32 + .../cur/1600095093.22807.mbox:2,S | 21 + .../cur/1600095093.22844.mbox:2,S | 53 + .../cur/1600095093.22866.mbox:2,S | 25 + .../cur/1600095093.22871.mbox:2,S | 46 + .../cur/1600095093.22874.mbox:2,S | 51 + .../cur/1600095093.22877.mbox:2,S | 57 + .../cur/1600095093.22880.mbox:2,S | 17 + .../cur/1600095094.22595.mbox:2,S | 38 + .../cur/1600095094.22743.mbox:2,S | 24 + .../cur/1600095094.22756.mbox:2,S | 68 + .../cur/1600095094.22759.mbox:2,S | 28 + .../cur/1600095094.22772.mbox:2,S | 50 + .../cur/1600095094.22796.mbox:2,S | 35 + .../cur/1600095094.22807.mbox:2,S | 21 + .../cur/1600095094.22844.mbox:2,S | 29 + .../cur/1600095094.22866.mbox:2,S | 28 + .../cur/1600095094.22871.mbox:2,S | 20 + .../cur/1600095094.22874.mbox:2,S | 38 + .../cur/1600095094.22877.mbox:2,S | 40 + .../cur/1600095094.22880.mbox:2,S | 21 + .../cur/1600095094.22883.mbox:2,S | 41 + .../cur/1600095095.22595.mbox:2,S | 34 + .../cur/1600095095.22743.mbox:2,S | 37 + .../cur/1600095095.22756.mbox:2,S | 55 + .../cur/1600095095.22759.mbox:2,S | 23 + .../cur/1600095095.22772.mbox:2,S | 52 + .../cur/1600095095.22796.mbox:2,S | 44 + .../cur/1600095095.22807.mbox:2,S | 29 + .../cur/1600095095.22866.mbox:2,S | 41 + .../cur/1600095095.22871.mbox:2,S | 26 + .../cur/1600095095.22874.mbox:2,S | 21 + .../cur/1600095095.22877.mbox:2,S | 89 + .../cur/1600095095.22880.mbox:2,S | 34 + .../cur/1600095095.22883.mbox:2,S | 49 + .../cur/1600095096.22595.mbox:2,S | 25 + .../cur/1600095096.22743.mbox:2,S | 29 + .../cur/1600095096.22756.mbox:2,S | 91 + .../cur/1600095096.22759.mbox:2,S | 31 + .../cur/1600095096.22772.mbox:2,S | 104 + .../cur/1600095096.22796.mbox:2,S | 70 + .../cur/1600095096.22807.mbox:2,S | 25 + .../cur/1600095096.22866.mbox:2,S | 21 + .../cur/1600095096.22871.mbox:2,S | 51 + .../cur/1600095096.22874.mbox:2,S | 61 + .../cur/1600095096.22877.mbox:2,S | 51 + .../cur/1600095096.22880.mbox:2,S | 34 + .../cur/1600095096.22883.mbox:2,S | 33 + .../cur/1600095096.22886.mbox:2,S | 20 + .../cur/1600095097.22595.mbox:2,S | 155 + .../cur/1600095097.22743.mbox:2,S | 27 + .../cur/1600095097.22756.mbox:2,S | 51 + .../cur/1600095097.22772.mbox:2,S | 75 + .../cur/1600095097.22796.mbox:2,S | 35 + .../cur/1600095097.22807.mbox:2,S | 65 + .../cur/1600095097.22866.mbox:2,S | 22 + .../cur/1600095097.22871.mbox:2,S | 21 + .../cur/1600095097.22874.mbox:2,S | 22 + .../cur/1600095097.22877.mbox:2,S | 10 + .../cur/1600095097.22880.mbox:2,S | 40 + .../cur/1600095097.22883.mbox:2,S | 23 + .../cur/1600095097.22886.mbox:2,S | 18 + .../cur/1600095097.22889.mbox:2,S | 53 + .../cur/1600095098.22595.mbox:2,S | 169 + .../cur/1600095098.22743.mbox:2,S | 27 + .../cur/1600095098.22756.mbox:2,S | 38 + .../cur/1600095098.22772.mbox:2,S | 30 + .../cur/1600095098.22796.mbox:2,S | 23 + .../cur/1600095098.22807.mbox:2,S | 36 + .../cur/1600095098.22866.mbox:2,S | 44 + .../cur/1600095098.22871.mbox:2,S | 34 + .../cur/1600095098.22874.mbox:2,S | 22 + .../cur/1600095098.22877.mbox:2,S | 27 + .../cur/1600095098.22880.mbox:2,S | 56 + .../cur/1600095098.22883.mbox:2,S | 27 + .../cur/1600095098.22886.mbox:2,S | 22 + .../cur/1600095098.22889.mbox:2,S | 85 + .../cur/1600095098.22893.mbox:2,S | 67 + .../cur/1600095099.22595.mbox:2,S | 250 ++ .../cur/1600095099.22743.mbox:2,S | 31 + .../cur/1600095099.22756.mbox:2,S | 40 + .../cur/1600095099.22772.mbox:2,S | 36 + .../cur/1600095099.22796.mbox:2,S | 38 + .../cur/1600095099.22807.mbox:2,S | 28 + .../cur/1600095099.22866.mbox:2,S | 40 + .../cur/1600095099.22871.mbox:2,S | 32 + .../cur/1600095099.22874.mbox:2,S | 27 + .../cur/1600095099.22877.mbox:2,S | 20 + .../cur/1600095099.22880.mbox:2,S | 25 + .../cur/1600095099.22883.mbox:2,S | 61 + .../cur/1600095099.22886.mbox:2,S | 19 + .../cur/1600095099.22889.mbox:2,S | 22 + .../cur/1600095099.22893.mbox:2,S | 49 + .../cur/1600095100.22595.mbox:2,S | 131 + .../cur/1600095100.22743.mbox:2,S | 38 + .../cur/1600095100.22756.mbox:2,S | 47 + .../cur/1600095100.22772.mbox:2,S | 55 + .../cur/1600095100.22796.mbox:2,S | 49 + .../cur/1600095100.22807.mbox:2,S | 87 + .../cur/1600095100.22866.mbox:2,S | 24 + .../cur/1600095100.22871.mbox:2,S | 53 + .../cur/1600095100.22877.mbox:2,S | 28 + .../cur/1600095100.22880.mbox:2,S | 18 + .../cur/1600095100.22883.mbox:2,S | 111 + .../cur/1600095100.22886.mbox:2,S | 20 + .../cur/1600095100.22889.mbox:2,S | 23 + .../cur/1600095100.22893.mbox:2,S | 26 + .../cur/1600095100.22896.mbox:2,S | 80 + .../cur/1600095101.22595.mbox:2,S | 30 + .../cur/1600095101.22743.mbox:2,S | 50 + .../cur/1600095101.22756.mbox:2,S | 18 + .../cur/1600095101.22772.mbox:2,S | 106 + .../cur/1600095101.22796.mbox:2,S | 23 + .../cur/1600095101.22807.mbox:2,S | 34 + .../cur/1600095101.22866.mbox:2,S | 29 + .../cur/1600095101.22871.mbox:2,S | 24 + .../cur/1600095101.22880.mbox:2,S | 27 + .../cur/1600095101.22883.mbox:2,S | 44 + .../cur/1600095101.22886.mbox:2,S | 32 + .../cur/1600095101.22889.mbox:2,S | 17 + .../cur/1600095101.22893.mbox:2,S | 50 + .../cur/1600095101.22896.mbox:2,S | 67 + .../cur/1600095101.22899.mbox:2,S | 40 + .../cur/1600095102.22595.mbox:2,S | 37 + .../cur/1600095102.22743.mbox:2,S | 26 + .../cur/1600095102.22756.mbox:2,S | 27 + .../cur/1600095102.22772.mbox:2,S | 12 + .../cur/1600095102.22796.mbox:2,S | 35 + .../cur/1600095102.22807.mbox:2,S | 50 + .../cur/1600095102.22866.mbox:2,S | 23 + .../cur/1600095102.22871.mbox:2,S | 20 + .../cur/1600095102.22880.mbox:2,S | 30 + .../cur/1600095102.22883.mbox:2,S | 128 + .../cur/1600095102.22886.mbox:2,S | 21 + .../cur/1600095102.22889.mbox:2,S | 37 + .../cur/1600095102.22893.mbox:2,S | 30 + .../cur/1600095102.22896.mbox:2,S | 50 + .../cur/1600095102.22899.mbox:2,S | 39 + .../cur/1600095103.22595.mbox:2,S | 20 + .../cur/1600095103.22743.mbox:2,S | 43 + .../cur/1600095103.22756.mbox:2,S | 44 + .../cur/1600095103.22772.mbox:2,S | 43 + .../cur/1600095103.22796.mbox:2,S | 52 + .../cur/1600095103.22807.mbox:2,S | 76 + .../cur/1600095103.22866.mbox:2,S | 29 + .../cur/1600095103.22871.mbox:2,S | 44 + .../cur/1600095103.22880.mbox:2,S | 43 + .../cur/1600095103.22883.mbox:2,S | 51 + .../cur/1600095103.22886.mbox:2,S | 26 + .../cur/1600095103.22889.mbox:2,S | 13 + .../cur/1600095103.22893.mbox:2,S | 45 + .../cur/1600095103.22899.mbox:2,S | 46 + .../cur/1600095103.22903.mbox:2,S | 79 + .../cur/1600095104.22595.mbox:2,S | 59 + .../cur/1600095104.22743.mbox:2,S | 35 + .../cur/1600095104.22756.mbox:2,S | 38 + .../cur/1600095104.22772.mbox:2,S | 34 + .../cur/1600095104.22796.mbox:2,S | 63 + .../cur/1600095104.22807.mbox:2,S | 122 + .../cur/1600095104.22866.mbox:2,S | 28 + .../cur/1600095104.22871.mbox:2,S | 19 + .../cur/1600095104.22880.mbox:2,S | 46 + .../cur/1600095104.22883.mbox:2,S | 71 + .../cur/1600095104.22886.mbox:2,S | 30 + .../cur/1600095104.22889.mbox:2,S | 49 + .../cur/1600095104.22893.mbox:2,S | 36 + .../cur/1600095104.22899.mbox:2,S | 62 + .../cur/1600095104.22903.mbox:2,S | 17 + .../cur/1600095104.22911.mbox:2,S | 98 + .../cur/1600095105.22595.mbox:2,S | 51 + .../cur/1600095105.22743.mbox:2,S | 39 + .../cur/1600095105.22756.mbox:2,S | 81 + .../cur/1600095105.22772.mbox:2,S | 24 + .../cur/1600095105.22807.mbox:2,S | 154 + .../cur/1600095105.22866.mbox:2,S | 45 + .../cur/1600095105.22871.mbox:2,S | 26 + .../cur/1600095105.22880.mbox:2,S | 21 + .../cur/1600095105.22883.mbox:2,S | 41 + .../cur/1600095105.22886.mbox:2,S | 50 + .../cur/1600095105.22889.mbox:2,S | 25 + .../cur/1600095105.22893.mbox:2,S | 32 + .../cur/1600095105.22899.mbox:2,S | 30 + .../cur/1600095105.22903.mbox:2,S | 24 + .../cur/1600095105.22911.mbox:2,S | 84 + .../cur/1600095105.22914.mbox:2,S | 20 + .../cur/1600095106.22595.mbox:2,S | 78 + .../cur/1600095106.22756.mbox:2,S | 47 + .../cur/1600095106.22772.mbox:2,S | 31 + .../cur/1600095106.22807.mbox:2,S | 179 ++ .../cur/1600095106.22866.mbox:2,S | 60 + .../cur/1600095106.22871.mbox:2,S | 20 + .../cur/1600095106.22880.mbox:2,S | 56 + .../cur/1600095106.22883.mbox:2,S | 30 + .../cur/1600095106.22886.mbox:2,S | 36 + .../cur/1600095106.22889.mbox:2,S | 55 + .../cur/1600095106.22893.mbox:2,S | 24 + .../cur/1600095106.22899.mbox:2,S | 28 + .../cur/1600095106.22903.mbox:2,S | 9 + .../cur/1600095106.22911.mbox:2,S | 42 + .../cur/1600095106.22914.mbox:2,S | 32 + .../cur/1600095107.22595.mbox:2,S | 41 + .../cur/1600095107.22756.mbox:2,S | 30 + .../cur/1600095107.22772.mbox:2,S | 32 + .../cur/1600095107.22807.mbox:2,S | 46 + .../cur/1600095107.22866.mbox:2,S | 70 + .../cur/1600095107.22871.mbox:2,S | 42 + .../cur/1600095107.22880.mbox:2,S | 23 + .../cur/1600095107.22883.mbox:2,S | 51 + .../cur/1600095107.22886.mbox:2,S | 31 + .../cur/1600095107.22889.mbox:2,S | 29 + .../cur/1600095107.22893.mbox:2,S | 28 + .../cur/1600095107.22899.mbox:2,S | 28 + .../cur/1600095107.22903.mbox:2,S | 38 + .../cur/1600095107.22911.mbox:2,S | 39 + .../cur/1600095107.22914.mbox:2,S | 46 + .../cur/1600095107.22917.mbox:2,S | 25 + .../cur/1600095108.22595.mbox:2,S | 165 + .../cur/1600095108.22756.mbox:2,S | 30 + .../cur/1600095108.22772.mbox:2,S | 52 + .../cur/1600095108.22807.mbox:2,S | 58 + .../cur/1600095108.22866.mbox:2,S | 29 + .../cur/1600095108.22871.mbox:2,S | 26 + .../cur/1600095108.22880.mbox:2,S | 24 + .../cur/1600095108.22883.mbox:2,S | 30 + .../cur/1600095108.22886.mbox:2,S | 37 + .../cur/1600095108.22889.mbox:2,S | 41 + .../cur/1600095108.22893.mbox:2,S | 44 + .../cur/1600095108.22899.mbox:2,S | 30 + .../cur/1600095108.22903.mbox:2,S | 158 + .../cur/1600095108.22911.mbox:2,S | 61 + .../cur/1600095108.22914.mbox:2,S | 49 + .../cur/1600095108.22917.mbox:2,S | 37 + .../cur/1600095108.22920.mbox:2,S | 76 + .../cur/1600095109.22595.mbox:2,S | 39 + .../cur/1600095109.22756.mbox:2,S | 90 + .../cur/1600095109.22772.mbox:2,S | 49 + .../cur/1600095109.22807.mbox:2,S | 43 + .../cur/1600095109.22866.mbox:2,S | 36 + .../cur/1600095109.22880.mbox:2,S | 42 + .../cur/1600095109.22883.mbox:2,S | 37 + .../cur/1600095109.22886.mbox:2,S | 27 + .../cur/1600095109.22889.mbox:2,S | 29 + .../cur/1600095109.22893.mbox:2,S | 45 + .../cur/1600095109.22899.mbox:2,S | 39 + .../cur/1600095109.22903.mbox:2,S | 21 + .../cur/1600095109.22911.mbox:2,S | 114 + .../cur/1600095109.22914.mbox:2,S | 33 + .../cur/1600095109.22917.mbox:2,S | 67 + .../cur/1600095109.22920.mbox:2,S | 43 + .../cur/1600095110.22756.mbox:2,S | 122 + .../cur/1600095110.22772.mbox:2,S | 22 + .../cur/1600095110.22807.mbox:2,S | 229 ++ .../cur/1600095110.22866.mbox:2,S | 20 + .../cur/1600095110.22880.mbox:2,S | 35 + .../cur/1600095110.22883.mbox:2,S | 22 + .../cur/1600095110.22886.mbox:2,S | 54 + .../cur/1600095110.22889.mbox:2,S | 96 + .../cur/1600095110.22893.mbox:2,S | 36 + .../cur/1600095110.22899.mbox:2,S | 43 + .../cur/1600095110.22903.mbox:2,S | 22 + .../cur/1600095110.22911.mbox:2,S | 48 + .../cur/1600095110.22914.mbox:2,S | 32 + .../cur/1600095110.22917.mbox:2,S | 39 + .../cur/1600095110.22920.mbox:2,S | 44 + .../cur/1600095110.22938.mbox:2,S | 54 + .../cur/1600095111.22756.mbox:2,S | 146 + .../cur/1600095111.22772.mbox:2,S | 45 + .../cur/1600095111.22807.mbox:2,S | 126 + .../cur/1600095111.22866.mbox:2,S | 29 + .../cur/1600095111.22880.mbox:2,S | 23 + .../cur/1600095111.22883.mbox:2,S | 31 + .../cur/1600095111.22886.mbox:2,S | 37 + .../cur/1600095111.22893.mbox:2,S | 31 + .../cur/1600095111.22899.mbox:2,S | 59 + .../cur/1600095111.22903.mbox:2,S | 25 + .../cur/1600095111.22911.mbox:2,S | 26 + .../cur/1600095111.22914.mbox:2,S | 19 + .../cur/1600095111.22917.mbox:2,S | 32 + .../cur/1600095111.22920.mbox:2,S | 84 + .../cur/1600095111.22938.mbox:2,S | 37 + .../cur/1600095111.22957.mbox:2,S | 17 + .../cur/1600095112.22756.mbox:2,S | 39 + .../cur/1600095112.22772.mbox:2,S | 29 + .../cur/1600095112.22807.mbox:2,S | 36 + .../cur/1600095112.22866.mbox:2,S | 36 + .../cur/1600095112.22880.mbox:2,S | 31 + .../cur/1600095112.22883.mbox:2,S | 26 + .../cur/1600095112.22886.mbox:2,S | 44 + .../cur/1600095112.22893.mbox:2,S | 36 + .../cur/1600095112.22899.mbox:2,S | 52 + .../cur/1600095112.22903.mbox:2,S | 25 + .../cur/1600095112.22911.mbox:2,S | 30 + .../cur/1600095112.22914.mbox:2,S | 33 + .../cur/1600095112.22917.mbox:2,S | 41 + .../cur/1600095112.22920.mbox:2,S | 33 + .../cur/1600095112.22938.mbox:2,S | 39 + .../cur/1600095112.22957.mbox:2,S | 26 + .../cur/1600095113.22756.mbox:2,S | 72 + .../cur/1600095113.22772.mbox:2,S | 80 + .../cur/1600095113.22807.mbox:2,S | 68 + .../cur/1600095113.22866.mbox:2,S | 21 + .../cur/1600095113.22880.mbox:2,S | 37 + .../cur/1600095113.22883.mbox:2,S | 25 + .../cur/1600095113.22886.mbox:2,S | 25 + .../cur/1600095113.22893.mbox:2,S | 28 + .../cur/1600095113.22899.mbox:2,S | 30 + .../cur/1600095113.22903.mbox:2,S | 33 + .../cur/1600095113.22911.mbox:2,S | 27 + .../cur/1600095113.22914.mbox:2,S | 23 + .../cur/1600095113.22917.mbox:2,S | 43 + .../cur/1600095113.22920.mbox:2,S | 34 + .../cur/1600095113.22938.mbox:2,S | 50 + .../cur/1600095113.22957.mbox:2,S | 27 + .../cur/1600095113.22960.mbox:2,S | 18 + .../cur/1600095114.22756.mbox:2,S | 103 + .../cur/1600095114.22772.mbox:2,S | 36 + .../cur/1600095114.22807.mbox:2,S | 81 + .../cur/1600095114.22866.mbox:2,S | 40 + .../cur/1600095114.22880.mbox:2,S | 30 + .../cur/1600095114.22883.mbox:2,S | 30 + .../cur/1600095114.22886.mbox:2,S | 31 + .../cur/1600095114.22893.mbox:2,S | 37 + .../cur/1600095114.22899.mbox:2,S | 32 + .../cur/1600095114.22903.mbox:2,S | 20 + .../cur/1600095114.22911.mbox:2,S | 40 + .../cur/1600095114.22914.mbox:2,S | 40 + .../cur/1600095114.22917.mbox:2,S | 23 + .../cur/1600095114.22920.mbox:2,S | 25 + .../cur/1600095114.22938.mbox:2,S | 38 + .../cur/1600095114.22957.mbox:2,S | 28 + .../cur/1600095114.22960.mbox:2,S | 43 + .../cur/1600095114.22966.mbox:2,S | 59 + .../cur/1600095115.22756.mbox:2,S | 76 + .../cur/1600095115.22772.mbox:2,S | 35 + .../cur/1600095115.22807.mbox:2,S | 60 + .../cur/1600095115.22866.mbox:2,S | 48 + .../cur/1600095115.22880.mbox:2,S | 27 + .../cur/1600095115.22883.mbox:2,S | 51 + .../cur/1600095115.22893.mbox:2,S | 55 + .../cur/1600095115.22899.mbox:2,S | 33 + .../cur/1600095115.22903.mbox:2,S | 23 + .../cur/1600095115.22911.mbox:2,S | 19 + .../cur/1600095115.22914.mbox:2,S | 28 + .../cur/1600095115.22917.mbox:2,S | 26 + .../cur/1600095115.22920.mbox:2,S | 37 + .../cur/1600095115.22938.mbox:2,S | 44 + .../cur/1600095115.22957.mbox:2,S | 39 + .../cur/1600095115.22960.mbox:2,S | 45 + .../cur/1600095115.22974.mbox:2,S | 28 + .../cur/1600095116.22756.mbox:2,S | 58 + .../cur/1600095116.22772.mbox:2,S | 29 + .../cur/1600095116.22807.mbox:2,S | 89 + .../cur/1600095116.22866.mbox:2,S | 18 + .../cur/1600095116.22880.mbox:2,S | 41 + .../cur/1600095116.22883.mbox:2,S | 23 + .../cur/1600095116.22893.mbox:2,S | 63 + .../cur/1600095116.22903.mbox:2,S | 37 + .../cur/1600095116.22911.mbox:2,S | 61 + .../cur/1600095116.22914.mbox:2,S | 22 + .../cur/1600095116.22917.mbox:2,S | 38 + .../cur/1600095116.22920.mbox:2,S | 22 + .../cur/1600095116.22938.mbox:2,S | 24 + .../cur/1600095116.22957.mbox:2,S | 55 + .../cur/1600095116.22960.mbox:2,S | 38 + .../cur/1600095116.22974.mbox:2,S | 49 + .../cur/1600095116.22983.mbox:2,S | 35 + .../cur/1600095117.22756.mbox:2,S | 95 + .../cur/1600095117.22772.mbox:2,S | 22 + .../cur/1600095117.22807.mbox:2,S | 74 + .../cur/1600095117.22866.mbox:2,S | 19 + .../cur/1600095117.22880.mbox:2,S | 18 + .../cur/1600095117.22883.mbox:2,S | 22 + .../cur/1600095117.22893.mbox:2,S | 32 + .../cur/1600095117.22903.mbox:2,S | 33 + .../cur/1600095117.22911.mbox:2,S | 24 + .../cur/1600095117.22914.mbox:2,S | 32 + .../cur/1600095117.22917.mbox:2,S | 17 + .../cur/1600095117.22920.mbox:2,S | 32 + .../cur/1600095117.22938.mbox:2,S | 20 + .../cur/1600095117.22957.mbox:2,S | 46 + .../cur/1600095117.22960.mbox:2,S | 37 + .../cur/1600095117.22974.mbox:2,S | 50 + .../cur/1600095117.22983.mbox:2,S | 51 + .../cur/1600095117.22987.mbox:2,S | 55 + .../cur/1600095118.22756.mbox:2,S | 108 + .../cur/1600095118.22772.mbox:2,S | 84 + .../cur/1600095118.22807.mbox:2,S | 128 + .../cur/1600095118.22866.mbox:2,S | 20 + .../cur/1600095118.22880.mbox:2,S | 34 + .../cur/1600095118.22883.mbox:2,S | 36 + .../cur/1600095118.22893.mbox:2,S | 46 + .../cur/1600095118.22903.mbox:2,S | 25 + .../cur/1600095118.22911.mbox:2,S | 22 + .../cur/1600095118.22914.mbox:2,S | 72 + .../cur/1600095118.22917.mbox:2,S | 38 + .../cur/1600095118.22920.mbox:2,S | 17 + .../cur/1600095118.22938.mbox:2,S | 34 + .../cur/1600095118.22957.mbox:2,S | 62 + .../cur/1600095118.22960.mbox:2,S | 15 + .../cur/1600095118.22974.mbox:2,S | 63 + .../cur/1600095118.22983.mbox:2,S | 23 + .../cur/1600095118.22987.mbox:2,S | 108 + .../cur/1600095119.22756.mbox:2,S | 53 + .../cur/1600095119.22772.mbox:2,S | 44 + .../cur/1600095119.22807.mbox:2,S | 105 + .../cur/1600095119.22866.mbox:2,S | 14 + .../cur/1600095119.22880.mbox:2,S | 53 + .../cur/1600095119.22883.mbox:2,S | 49 + .../cur/1600095119.22893.mbox:2,S | 49 + .../cur/1600095119.22903.mbox:2,S | 14 + .../cur/1600095119.22911.mbox:2,S | 19 + .../cur/1600095119.22914.mbox:2,S | 36 + .../cur/1600095119.22917.mbox:2,S | 42 + .../cur/1600095119.22920.mbox:2,S | 29 + .../cur/1600095119.22938.mbox:2,S | 38 + .../cur/1600095119.22957.mbox:2,S | 53 + .../cur/1600095119.22960.mbox:2,S | 18 + .../cur/1600095119.22974.mbox:2,S | 41 + .../cur/1600095119.22983.mbox:2,S | 23 + .../cur/1600095119.22987.mbox:2,S | 39 + .../cur/1600095119.22999.mbox:2,S | 41 + .../cur/1600095120.22756.mbox:2,S | 57 + .../cur/1600095120.22772.mbox:2,S | 68 + .../cur/1600095120.22807.mbox:2,S | 46 + .../cur/1600095120.22880.mbox:2,S | 20 + .../cur/1600095120.22883.mbox:2,S | 47 + .../cur/1600095120.22893.mbox:2,S | 32 + .../cur/1600095120.22903.mbox:2,S | 27 + .../cur/1600095120.22911.mbox:2,S | 26 + .../cur/1600095120.22914.mbox:2,S | 34 + .../cur/1600095120.22917.mbox:2,S | 85 + .../cur/1600095120.22920.mbox:2,S | 79 + .../cur/1600095120.22938.mbox:2,S | 31 + .../cur/1600095120.22957.mbox:2,S | 53 + .../cur/1600095120.22960.mbox:2,S | 19 + .../cur/1600095120.22974.mbox:2,S | 33 + .../cur/1600095120.22983.mbox:2,S | 44 + .../cur/1600095120.22987.mbox:2,S | 37 + .../cur/1600095120.22999.mbox:2,S | 78 + .../cur/1600095120.23004.mbox:2,S | 23 + .../cur/1600095121.22756.mbox:2,S | 49 + .../cur/1600095121.22772.mbox:2,S | 31 + .../cur/1600095121.22807.mbox:2,S | 93 + .../cur/1600095121.22880.mbox:2,S | 38 + .../cur/1600095121.22883.mbox:2,S | 37 + .../cur/1600095121.22893.mbox:2,S | 34 + .../cur/1600095121.22903.mbox:2,S | 30 + .../cur/1600095121.22911.mbox:2,S | 51 + .../cur/1600095121.22914.mbox:2,S | 23 + .../cur/1600095121.22917.mbox:2,S | 98 + .../cur/1600095121.22920.mbox:2,S | 19 + .../cur/1600095121.22938.mbox:2,S | 36 + .../cur/1600095121.22957.mbox:2,S | 21 + .../cur/1600095121.22960.mbox:2,S | 47 + .../cur/1600095121.22974.mbox:2,S | 21 + .../cur/1600095121.22983.mbox:2,S | 28 + .../cur/1600095121.22987.mbox:2,S | 56 + .../cur/1600095121.22999.mbox:2,S | 56 + .../cur/1600095121.23004.mbox:2,S | 17 + .../cur/1600095121.23014.mbox:2,S | 75 + .../cur/1600095122.22756.mbox:2,S | 45 + .../cur/1600095122.22772.mbox:2,S | 68 + .../cur/1600095122.22807.mbox:2,S | 35 + .../cur/1600095122.22880.mbox:2,S | 28 + .../cur/1600095122.22883.mbox:2,S | 34 + .../cur/1600095122.22893.mbox:2,S | 38 + .../cur/1600095122.22903.mbox:2,S | 22 + .../cur/1600095122.22911.mbox:2,S | 25 + .../cur/1600095122.22914.mbox:2,S | 22 + .../cur/1600095122.22917.mbox:2,S | 33 + .../cur/1600095122.22920.mbox:2,S | 21 + .../cur/1600095122.22938.mbox:2,S | 32 + .../cur/1600095122.22957.mbox:2,S | 39 + .../cur/1600095122.22960.mbox:2,S | 52 + .../cur/1600095122.22974.mbox:2,S | 24 + .../cur/1600095122.22983.mbox:2,S | 29 + .../cur/1600095122.22987.mbox:2,S | 33 + .../cur/1600095122.22999.mbox:2,S | 29 + .../cur/1600095122.23004.mbox:2,S | 21 + .../cur/1600095122.23014.mbox:2,S | 35 + .../cur/1600095123.22756.mbox:2,S | 57 + .../cur/1600095123.22772.mbox:2,S | 31 + .../cur/1600095123.22807.mbox:2,S | 69 + .../cur/1600095123.22880.mbox:2,S | 76 + .../cur/1600095123.22883.mbox:2,S | 42 + .../cur/1600095123.22893.mbox:2,S | 58 + .../cur/1600095123.22903.mbox:2,S | 117 + .../cur/1600095123.22911.mbox:2,S | 29 + .../cur/1600095123.22914.mbox:2,S | 34 + .../cur/1600095123.22917.mbox:2,S | 19 + .../cur/1600095123.22920.mbox:2,S | 28 + .../cur/1600095123.22938.mbox:2,S | 53 + .../cur/1600095123.22957.mbox:2,S | 33 + .../cur/1600095123.22960.mbox:2,S | 28 + .../cur/1600095123.22974.mbox:2,S | 34 + .../cur/1600095123.22983.mbox:2,S | 42 + .../cur/1600095123.22987.mbox:2,S | 34 + .../cur/1600095123.22999.mbox:2,S | 30 + .../cur/1600095123.23004.mbox:2,S | 106 + .../cur/1600095123.23014.mbox:2,S | 24 + .../cur/1600095123.23031.mbox:2,S | 59 + .../cur/1600095124.22756.mbox:2,S | 49 + .../cur/1600095124.22772.mbox:2,S | 35 + .../cur/1600095124.22807.mbox:2,S | 27 + .../cur/1600095124.22880.mbox:2,S | 35 + .../cur/1600095124.22883.mbox:2,S | 44 + .../cur/1600095124.22893.mbox:2,S | 37 + .../cur/1600095124.22911.mbox:2,S | 24 + .../cur/1600095124.22914.mbox:2,S | 59 + .../cur/1600095124.22917.mbox:2,S | 46 + .../cur/1600095124.22920.mbox:2,S | 45 + .../cur/1600095124.22938.mbox:2,S | 54 + .../cur/1600095124.22957.mbox:2,S | 35 + .../cur/1600095124.22960.mbox:2,S | 42 + .../cur/1600095124.22974.mbox:2,S | 42 + .../cur/1600095124.22983.mbox:2,S | 31 + .../cur/1600095124.22987.mbox:2,S | 28 + .../cur/1600095124.22999.mbox:2,S | 56 + .../cur/1600095124.23004.mbox:2,S | 18 + .../cur/1600095124.23014.mbox:2,S | 36 + .../cur/1600095124.23031.mbox:2,S | 69 + .../cur/1600095124.23036.mbox:2,S | 33 + .../cur/1600095125.22756.mbox:2,S | 105 + .../cur/1600095125.22772.mbox:2,S | 50 + .../cur/1600095125.22807.mbox:2,S | 31 + .../cur/1600095125.22880.mbox:2,S | 41 + .../cur/1600095125.22883.mbox:2,S | 30 + .../cur/1600095125.22893.mbox:2,S | 36 + .../cur/1600095125.22911.mbox:2,S | 22 + .../cur/1600095125.22914.mbox:2,S | 30 + .../cur/1600095125.22917.mbox:2,S | 21 + .../cur/1600095125.22920.mbox:2,S | 40 + .../cur/1600095125.22957.mbox:2,S | 31 + .../cur/1600095125.22960.mbox:2,S | 40 + .../cur/1600095125.22974.mbox:2,S | 43 + .../cur/1600095125.22983.mbox:2,S | 38 + .../cur/1600095125.22987.mbox:2,S | 42 + .../cur/1600095125.22999.mbox:2,S | 28 + .../cur/1600095125.23014.mbox:2,S | 20 + .../cur/1600095125.23031.mbox:2,S | 30 + .../cur/1600095125.23036.mbox:2,S | 155 + .../cur/1600095125.23040.mbox:2,S | 35 + .../cur/1600095126.22756.mbox:2,S | 128 + .../cur/1600095126.22772.mbox:2,S | 48 + .../cur/1600095126.22807.mbox:2,S | 37 + .../cur/1600095126.22880.mbox:2,S | 68 + .../cur/1600095126.22883.mbox:2,S | 51 + .../cur/1600095126.22893.mbox:2,S | 69 + .../cur/1600095126.22911.mbox:2,S | 23 + .../cur/1600095126.22914.mbox:2,S | 90 + .../cur/1600095126.22917.mbox:2,S | 40 + .../cur/1600095126.22920.mbox:2,S | 53 + .../cur/1600095126.22957.mbox:2,S | 40 + .../cur/1600095126.22960.mbox:2,S | 50 + .../cur/1600095126.22974.mbox:2,S | 73 + .../cur/1600095126.22983.mbox:2,S | 17 + .../cur/1600095126.22987.mbox:2,S | 29 + .../cur/1600095126.22999.mbox:2,S | 50 + .../cur/1600095126.23014.mbox:2,S | 15 + .../cur/1600095126.23031.mbox:2,S | 49 + .../cur/1600095126.23036.mbox:2,S | 49 + .../cur/1600095126.23040.mbox:2,S | 117 + .../cur/1600095126.23045.mbox:2,S | 20 + .../cur/1600095127.22756.mbox:2,S | 62 + .../cur/1600095127.22772.mbox:2,S | 30 + .../cur/1600095127.22807.mbox:2,S | 29 + .../cur/1600095127.22880.mbox:2,S | 54 + .../cur/1600095127.22883.mbox:2,S | 18 + .../cur/1600095127.22893.mbox:2,S | 104 + .../cur/1600095127.22911.mbox:2,S | 23 + .../cur/1600095127.22914.mbox:2,S | 32 + .../cur/1600095127.22917.mbox:2,S | 17 + .../cur/1600095127.22920.mbox:2,S | 50 + .../cur/1600095127.22957.mbox:2,S | 37 + .../cur/1600095127.22960.mbox:2,S | 50 + .../cur/1600095127.22974.mbox:2,S | 27 + .../cur/1600095127.22983.mbox:2,S | 21 + .../cur/1600095127.22987.mbox:2,S | 39 + .../cur/1600095127.22999.mbox:2,S | 28 + .../cur/1600095127.23014.mbox:2,S | 28 + .../cur/1600095127.23031.mbox:2,S | 59 + .../cur/1600095127.23036.mbox:2,S | 42 + .../cur/1600095127.23040.mbox:2,S | 47 + .../cur/1600095127.23045.mbox:2,S | 26 + .../cur/1600095127.23051.mbox:2,S | 29 + .../cur/1600095128.22756.mbox:2,S | 31 + .../cur/1600095128.22772.mbox:2,S | 35 + .../cur/1600095128.22807.mbox:2,S | 40 + .../cur/1600095128.22880.mbox:2,S | 37 + .../cur/1600095128.22883.mbox:2,S | 35 + .../cur/1600095128.22893.mbox:2,S | 81 + .../cur/1600095128.22911.mbox:2,S | 22 + .../cur/1600095128.22914.mbox:2,S | 33 + .../cur/1600095128.22917.mbox:2,S | 16 + .../cur/1600095128.22920.mbox:2,S | 53 + .../cur/1600095128.22957.mbox:2,S | 31 + .../cur/1600095128.22960.mbox:2,S | 76 + .../cur/1600095128.22974.mbox:2,S | 48 + .../cur/1600095128.22983.mbox:2,S | 21 + .../cur/1600095128.22999.mbox:2,S | 37 + .../cur/1600095128.23014.mbox:2,S | 26 + .../cur/1600095128.23031.mbox:2,S | 32 + .../cur/1600095128.23036.mbox:2,S | 42 + .../cur/1600095128.23040.mbox:2,S | 88 + .../cur/1600095128.23045.mbox:2,S | 25 + .../cur/1600095128.23051.mbox:2,S | 40 + .../cur/1600095128.23055.mbox:2,S | 15 + .../cur/1600095129.22756.mbox:2,S | 36 + .../cur/1600095129.22772.mbox:2,S | 27 + .../cur/1600095129.22807.mbox:2,S | 67 + .../cur/1600095129.22880.mbox:2,S | 67 + .../cur/1600095129.22883.mbox:2,S | 35 + .../cur/1600095129.22893.mbox:2,S | 44 + .../cur/1600095129.22911.mbox:2,S | 17 + .../cur/1600095129.22914.mbox:2,S | 33 + .../cur/1600095129.22917.mbox:2,S | 37 + .../cur/1600095129.22920.mbox:2,S | 34 + .../cur/1600095129.22957.mbox:2,S | 38 + .../cur/1600095129.22960.mbox:2,S | 24 + .../cur/1600095129.22974.mbox:2,S | 42 + .../cur/1600095129.22983.mbox:2,S | 59 + .../cur/1600095129.22999.mbox:2,S | 30 + .../cur/1600095129.23014.mbox:2,S | 19 + .../cur/1600095129.23031.mbox:2,S | 93 + .../cur/1600095129.23036.mbox:2,S | 56 + .../cur/1600095129.23040.mbox:2,S | 90 + .../cur/1600095129.23045.mbox:2,S | 46 + .../cur/1600095129.23051.mbox:2,S | 56 + .../cur/1600095129.23055.mbox:2,S | 22 + .../cur/1600095129.23059.mbox:2,S | 63 + .../cur/1600095130.22756.mbox:2,S | 24 + .../cur/1600095130.22772.mbox:2,S | 53 + .../cur/1600095130.22807.mbox:2,S | 48 + .../cur/1600095130.22880.mbox:2,S | 55 + .../cur/1600095130.22883.mbox:2,S | 12 + .../cur/1600095130.22893.mbox:2,S | 42 + .../cur/1600095130.22911.mbox:2,S | 26 + .../cur/1600095130.22914.mbox:2,S | 83 + .../cur/1600095130.22917.mbox:2,S | 46 + .../cur/1600095130.22920.mbox:2,S | 40 + .../cur/1600095130.22957.mbox:2,S | 62 + .../cur/1600095130.22960.mbox:2,S | 31 + .../cur/1600095130.22974.mbox:2,S | 40 + .../cur/1600095130.22983.mbox:2,S | 56 + .../cur/1600095130.22999.mbox:2,S | 35 + .../cur/1600095130.23014.mbox:2,S | 36 + .../cur/1600095130.23031.mbox:2,S | 94 + .../cur/1600095130.23036.mbox:2,S | 26 + .../cur/1600095130.23051.mbox:2,S | 35 + .../cur/1600095130.23055.mbox:2,S | 37 + .../cur/1600095130.23059.mbox:2,S | 115 + .../cur/1600095131.22756.mbox:2,S | 130 + .../cur/1600095131.22772.mbox:2,S | 30 + .../cur/1600095131.22807.mbox:2,S | 56 + .../cur/1600095131.22883.mbox:2,S | 16 + .../cur/1600095131.22893.mbox:2,S | 53 + .../cur/1600095131.22911.mbox:2,S | 29 + .../cur/1600095131.22914.mbox:2,S | 37 + .../cur/1600095131.22917.mbox:2,S | 68 + .../cur/1600095131.22920.mbox:2,S | 62 + .../cur/1600095131.22957.mbox:2,S | 30 + .../cur/1600095131.22960.mbox:2,S | 25 + .../cur/1600095131.22974.mbox:2,S | 58 + .../cur/1600095131.22983.mbox:2,S | 59 + .../cur/1600095131.22999.mbox:2,S | 40 + .../cur/1600095131.23014.mbox:2,S | 54 + .../cur/1600095131.23031.mbox:2,S | 60 + .../cur/1600095131.23036.mbox:2,S | 50 + .../cur/1600095131.23051.mbox:2,S | 50 + .../cur/1600095131.23055.mbox:2,S | 20 + .../cur/1600095131.23059.mbox:2,S | 39 + .../cur/1600095131.23064.mbox:2,S | 32 + .../cur/1600095132.22756.mbox:2,S | 18 + .../cur/1600095132.22772.mbox:2,S | 43 + .../cur/1600095132.22807.mbox:2,S | 128 + .../cur/1600095132.22883.mbox:2,S | 62 + .../cur/1600095132.22893.mbox:2,S | 50 + .../cur/1600095132.22911.mbox:2,S | 36 + .../cur/1600095132.22914.mbox:2,S | 43 + .../cur/1600095132.22920.mbox:2,S | 62 + .../cur/1600095132.22957.mbox:2,S | 83 + .../cur/1600095132.22960.mbox:2,S | 18 + .../cur/1600095132.22974.mbox:2,S | 49 + .../cur/1600095132.22983.mbox:2,S | 38 + .../cur/1600095132.22999.mbox:2,S | 29 + .../cur/1600095132.23014.mbox:2,S | 23 + .../cur/1600095132.23031.mbox:2,S | 22 + .../cur/1600095132.23051.mbox:2,S | 66 + .../cur/1600095132.23055.mbox:2,S | 43 + .../cur/1600095132.23059.mbox:2,S | 19 + .../cur/1600095132.23064.mbox:2,S | 80 + .../cur/1600095132.23084.mbox:2,S | 17 + .../cur/1600095133.22756.mbox:2,S | 24 + .../cur/1600095133.22772.mbox:2,S | 24 + .../cur/1600095133.22807.mbox:2,S | 145 + .../cur/1600095133.22883.mbox:2,S | 46 + .../cur/1600095133.22893.mbox:2,S | 50 + .../cur/1600095133.22911.mbox:2,S | 70 + .../cur/1600095133.22914.mbox:2,S | 36 + .../cur/1600095133.22920.mbox:2,S | 26 + .../cur/1600095133.22957.mbox:2,S | 41 + .../cur/1600095133.22960.mbox:2,S | 24 + .../cur/1600095133.22974.mbox:2,S | 46 + .../cur/1600095133.22999.mbox:2,S | 32 + .../cur/1600095133.23014.mbox:2,S | 35 + .../cur/1600095133.23031.mbox:2,S | 28 + .../cur/1600095133.23051.mbox:2,S | 29 + .../cur/1600095133.23055.mbox:2,S | 26 + .../cur/1600095133.23059.mbox:2,S | 28 + .../cur/1600095133.23064.mbox:2,S | 45 + .../cur/1600095133.23084.mbox:2,S | 26 + .../cur/1600095133.23090.mbox:2,S | 22 + .../cur/1600095134.22756.mbox:2,S | 30 + .../cur/1600095134.22807.mbox:2,S | 202 ++ .../cur/1600095134.22883.mbox:2,S | 26 + .../cur/1600095134.22893.mbox:2,S | 45 + .../cur/1600095134.22911.mbox:2,S | 82 + .../cur/1600095134.22914.mbox:2,S | 32 + .../cur/1600095134.22920.mbox:2,S | 27 + .../cur/1600095134.22957.mbox:2,S | 45 + .../cur/1600095134.22974.mbox:2,S | 24 + .../cur/1600095134.22999.mbox:2,S | 26 + .../cur/1600095134.23014.mbox:2,S | 25 + .../cur/1600095134.23031.mbox:2,S | 61 + .../cur/1600095134.23051.mbox:2,S | 61 + .../cur/1600095134.23055.mbox:2,S | 19 + .../cur/1600095134.23059.mbox:2,S | 28 + .../cur/1600095134.23064.mbox:2,S | 24 + .../cur/1600095134.23084.mbox:2,S | 25 + .../cur/1600095134.23090.mbox:2,S | 46 + .../cur/1600095134.23093.mbox:2,S | 26 + .../cur/1600095135.22756.mbox:2,S | 24 + .../cur/1600095135.22807.mbox:2,S | 33 + .../cur/1600095135.22883.mbox:2,S | 18 + .../cur/1600095135.22893.mbox:2,S | 58 + .../cur/1600095135.22911.mbox:2,S | 39 + .../cur/1600095135.22914.mbox:2,S | 28 + .../cur/1600095135.22920.mbox:2,S | 56 + .../cur/1600095135.22957.mbox:2,S | 48 + .../cur/1600095135.22974.mbox:2,S | 21 + .../cur/1600095135.22999.mbox:2,S | 39 + .../cur/1600095135.23014.mbox:2,S | 42 + .../cur/1600095135.23031.mbox:2,S | 44 + .../cur/1600095135.23051.mbox:2,S | 33 + .../cur/1600095135.23055.mbox:2,S | 22 + .../cur/1600095135.23059.mbox:2,S | 40 + .../cur/1600095135.23064.mbox:2,S | 31 + .../cur/1600095135.23084.mbox:2,S | 37 + .../cur/1600095135.23093.mbox:2,S | 17 + .../cur/1600095135.23102.mbox:2,S | 29 + .../cur/1600095136.22756.mbox:2,S | 82 + .../cur/1600095136.22807.mbox:2,S | 38 + .../cur/1600095136.22883.mbox:2,S | 37 + .../cur/1600095136.22893.mbox:2,S | 118 + .../cur/1600095136.22911.mbox:2,S | 36 + .../cur/1600095136.22914.mbox:2,S | 33 + .../cur/1600095136.22920.mbox:2,S | 43 + .../cur/1600095136.22957.mbox:2,S | 45 + .../cur/1600095136.22974.mbox:2,S | 23 + .../cur/1600095136.22999.mbox:2,S | 32 + .../cur/1600095136.23014.mbox:2,S | 25 + .../cur/1600095136.23031.mbox:2,S | 31 + .../cur/1600095136.23051.mbox:2,S | 30 + .../cur/1600095136.23059.mbox:2,S | 53 + .../cur/1600095136.23064.mbox:2,S | 55 + .../cur/1600095136.23093.mbox:2,S | 45 + .../cur/1600095136.23102.mbox:2,S | 26 + .../cur/1600095136.23105.mbox:2,S | 11 + .../cur/1600095137.22807.mbox:2,S | 93 + .../cur/1600095137.22883.mbox:2,S | 51 + .../cur/1600095137.22893.mbox:2,S | 219 ++ .../cur/1600095137.22911.mbox:2,S | 65 + .../cur/1600095137.22914.mbox:2,S | 31 + .../cur/1600095137.22920.mbox:2,S | 23 + .../cur/1600095137.22974.mbox:2,S | 55 + .../cur/1600095137.23014.mbox:2,S | 84 + .../cur/1600095137.23031.mbox:2,S | 71 + .../cur/1600095137.23051.mbox:2,S | 33 + .../cur/1600095137.23059.mbox:2,S | 33 + .../cur/1600095137.23064.mbox:2,S | 40 + .../cur/1600095137.23093.mbox:2,S | 37 + .../cur/1600095138.22807.mbox:2,S | 44 + .../cur/1600095138.22883.mbox:2,S | 64 + .../cur/1600095138.22893.mbox:2,S | 61 + .../cur/1600095138.22911.mbox:2,S | 35 + .../cur/1600095138.22914.mbox:2,S | 41 + .../cur/1600095138.22920.mbox:2,S | 38 + .../cur/1600095138.22974.mbox:2,S | 66 + .../cur/1600095138.23014.mbox:2,S | 75 + .../cur/1600095138.23031.mbox:2,S | 64 + .../cur/1600095138.23051.mbox:2,S | 59 + .../cur/1600095138.23059.mbox:2,S | 43 + .../cur/1600095138.23093.mbox:2,S | 35 + .../cur/1600095139.22807.mbox:2,S | 46 + .../cur/1600095139.22883.mbox:2,S | 20 + .../cur/1600095139.22893.mbox:2,S | 105 + .../cur/1600095139.22911.mbox:2,S | 30 + .../cur/1600095139.22914.mbox:2,S | 31 + .../cur/1600095139.22920.mbox:2,S | 28 + .../cur/1600095139.22974.mbox:2,S | 79 + .../cur/1600095139.23014.mbox:2,S | 24 + .../cur/1600095139.23031.mbox:2,S | 64 + .../cur/1600095139.23051.mbox:2,S | 51 + .../cur/1600095139.23059.mbox:2,S | 25 + .../cur/1600095140.22807.mbox:2,S | 86 + .../cur/1600095140.22883.mbox:2,S | 31 + .../cur/1600095140.22893.mbox:2,S | 45 + .../cur/1600095140.22911.mbox:2,S | 61 + .../cur/1600095140.22914.mbox:2,S | 51 + .../cur/1600095140.22920.mbox:2,S | 67 + .../cur/1600095140.22974.mbox:2,S | 78 + .../cur/1600095140.23014.mbox:2,S | 20 + .../cur/1600095140.23031.mbox:2,S | 100 + .../cur/1600095140.23051.mbox:2,S | 35 + .../cur/1600095140.23059.mbox:2,S | 27 + .../cur/1600095141.22807.mbox:2,S | 29 + .../cur/1600095141.22883.mbox:2,S | 89 + .../cur/1600095141.22893.mbox:2,S | 65 + .../cur/1600095141.22911.mbox:2,S | 39 + .../cur/1600095141.22914.mbox:2,S | 20 + .../cur/1600095141.22920.mbox:2,S | 67 + .../cur/1600095141.22974.mbox:2,S | 36 + .../cur/1600095141.23014.mbox:2,S | 202 ++ .../cur/1600095141.23031.mbox:2,S | 42 + .../cur/1600095141.23051.mbox:2,S | 48 + .../cur/1600095141.23059.mbox:2,S | 26 + .../cur/1600095142.22807.mbox:2,S | 29 + .../cur/1600095142.22883.mbox:2,S | 21 + .../cur/1600095142.22893.mbox:2,S | 45 + .../cur/1600095142.22911.mbox:2,S | 89 + .../cur/1600095142.22914.mbox:2,S | 20 + .../cur/1600095142.22920.mbox:2,S | 18 + .../cur/1600095142.22974.mbox:2,S | 42 + .../cur/1600095142.23014.mbox:2,S | 140 + .../cur/1600095142.23031.mbox:2,S | 16 + .../cur/1600095142.23051.mbox:2,S | 23 + .../cur/1600095142.23059.mbox:2,S | 36 + .../cur/1600095143.22807.mbox:2,S | 97 + .../cur/1600095143.22883.mbox:2,S | 24 + .../cur/1600095143.22893.mbox:2,S | 62 + .../cur/1600095143.22911.mbox:2,S | 46 + .../cur/1600095143.22914.mbox:2,S | 35 + .../cur/1600095143.22920.mbox:2,S | 24 + .../cur/1600095143.22974.mbox:2,S | 68 + .../cur/1600095143.23014.mbox:2,S | 58 + .../cur/1600095143.23031.mbox:2,S | 32 + .../cur/1600095143.23051.mbox:2,S | 43 + .../cur/1600095143.23059.mbox:2,S | 28 + .../cur/1600095144.22807.mbox:2,S | 43 + .../cur/1600095144.22883.mbox:2,S | 46 + .../cur/1600095144.22893.mbox:2,S | 44 + .../cur/1600095144.22911.mbox:2,S | 74 + .../cur/1600095144.22914.mbox:2,S | 33 + .../cur/1600095144.22920.mbox:2,S | 21 + .../cur/1600095144.22974.mbox:2,S | 42 + .../cur/1600095144.23014.mbox:2,S | 41 + .../cur/1600095144.23051.mbox:2,S | 41 + .../cur/1600095144.23059.mbox:2,S | 38 + .../cur/1600095145.22807.mbox:2,S | 25 + .../cur/1600095145.22883.mbox:2,S | 132 + .../cur/1600095145.22893.mbox:2,S | 55 + .../cur/1600095145.22911.mbox:2,S | 93 + .../cur/1600095145.22914.mbox:2,S | 25 + .../cur/1600095145.22920.mbox:2,S | 28 + .../cur/1600095145.22974.mbox:2,S | 35 + .../cur/1600095145.23014.mbox:2,S | 72 + .../cur/1600095145.23051.mbox:2,S | 23 + .../cur/1600095145.23059.mbox:2,S | 23 + .../cur/1600095146.22807.mbox:2,S | 77 + .../cur/1600095146.22883.mbox:2,S | 37 + .../cur/1600095146.22893.mbox:2,S | 36 + .../cur/1600095146.22914.mbox:2,S | 32 + .../cur/1600095146.22920.mbox:2,S | 51 + .../cur/1600095146.22974.mbox:2,S | 18 + .../cur/1600095146.23014.mbox:2,S | 41 + .../cur/1600095146.23051.mbox:2,S | 31 + .../cur/1600095146.23059.mbox:2,S | 31 + .../cur/1600095147.22807.mbox:2,S | 42 + .../cur/1600095147.22883.mbox:2,S | 42 + .../cur/1600095147.22914.mbox:2,S | 25 + .../cur/1600095147.22920.mbox:2,S | 42 + .../cur/1600095147.22974.mbox:2,S | 21 + .../cur/1600095147.23014.mbox:2,S | 20 + .../cur/1600095147.23051.mbox:2,S | 34 + .../cur/1600095147.23059.mbox:2,S | 54 + .../cur/1600095148.22807.mbox:2,S | 183 ++ .../cur/1600095148.22883.mbox:2,S | 24 + .../cur/1600095148.22914.mbox:2,S | 36 + .../cur/1600095148.22920.mbox:2,S | 56 + .../cur/1600095148.22974.mbox:2,S | 34 + .../cur/1600095148.23014.mbox:2,S | 60 + .../cur/1600095148.23051.mbox:2,S | 46 + .../cur/1600095148.23059.mbox:2,S | 32 + .../cur/1600095149.22807.mbox:2,S | 167 + .../cur/1600095149.22883.mbox:2,S | 26 + .../cur/1600095149.22914.mbox:2,S | 24 + .../cur/1600095149.22920.mbox:2,S | 41 + .../cur/1600095149.22974.mbox:2,S | 34 + .../cur/1600095149.23014.mbox:2,S | 28 + .../cur/1600095149.23051.mbox:2,S | 54 + .../cur/1600095149.23059.mbox:2,S | 27 + .../cur/1600095150.22807.mbox:2,S | 120 + .../cur/1600095150.22883.mbox:2,S | 41 + .../cur/1600095150.22914.mbox:2,S | 50 + .../cur/1600095150.22920.mbox:2,S | 21 + .../cur/1600095150.22974.mbox:2,S | 33 + .../cur/1600095150.23014.mbox:2,S | 23 + .../cur/1600095150.23051.mbox:2,S | 40 + .../cur/1600095150.23059.mbox:2,S | 77 + .../cur/1600095151.22807.mbox:2,S | 110 + .../cur/1600095151.22883.mbox:2,S | 43 + .../cur/1600095151.22914.mbox:2,S | 30 + .../cur/1600095151.22920.mbox:2,S | 44 + .../cur/1600095151.22974.mbox:2,S | 42 + .../cur/1600095151.23014.mbox:2,S | 30 + .../cur/1600095151.23051.mbox:2,S | 30 + .../cur/1600095151.23059.mbox:2,S | 29 + .../cur/1600095152.22807.mbox:2,S | 49 + .../cur/1600095152.22883.mbox:2,S | 54 + .../cur/1600095152.22914.mbox:2,S | 38 + .../cur/1600095152.22920.mbox:2,S | 42 + .../cur/1600095152.22974.mbox:2,S | 23 + .../cur/1600095152.23014.mbox:2,S | 25 + .../cur/1600095152.23051.mbox:2,S | 34 + .../cur/1600095152.23059.mbox:2,S | 38 + .../cur/1600095153.22807.mbox:2,S | 40 + .../cur/1600095153.22883.mbox:2,S | 27 + .../cur/1600095153.22914.mbox:2,S | 38 + .../cur/1600095153.22920.mbox:2,S | 40 + .../cur/1600095153.22974.mbox:2,S | 56 + .../cur/1600095153.23014.mbox:2,S | 38 + .../cur/1600095153.23051.mbox:2,S | 30 + .../cur/1600095153.23059.mbox:2,S | 72 + .../cur/1600095154.22807.mbox:2,S | 38 + .../cur/1600095154.22883.mbox:2,S | 39 + .../cur/1600095154.22914.mbox:2,S | 52 + .../cur/1600095154.22920.mbox:2,S | 46 + .../cur/1600095154.22974.mbox:2,S | 88 + .../cur/1600095154.23014.mbox:2,S | 27 + .../cur/1600095154.23051.mbox:2,S | 40 + .../cur/1600095154.23059.mbox:2,S | 77 + .../cur/1600095155.22807.mbox:2,S | 35 + .../cur/1600095155.22883.mbox:2,S | 27 + .../cur/1600095155.22914.mbox:2,S | 76 + .../cur/1600095155.22920.mbox:2,S | 30 + .../cur/1600095155.22974.mbox:2,S | 74 + .../cur/1600095155.23014.mbox:2,S | 29 + .../cur/1600095155.23051.mbox:2,S | 54 + .../cur/1600095155.23059.mbox:2,S | 38 + .../cur/1600095156.22807.mbox:2,S | 30 + .../cur/1600095156.22914.mbox:2,S | 68 + .../cur/1600095156.22920.mbox:2,S | 35 + .../cur/1600095156.22974.mbox:2,S | 75 + .../cur/1600095156.23014.mbox:2,S | 27 + .../cur/1600095156.23051.mbox:2,S | 51 + .../cur/1600095156.23059.mbox:2,S | 28 + .../cur/1600095157.22807.mbox:2,S | 31 + .../cur/1600095157.22914.mbox:2,S | 71 + .../cur/1600095157.22920.mbox:2,S | 15 + .../cur/1600095157.23014.mbox:2,S | 28 + .../cur/1600095157.23051.mbox:2,S | 58 + .../cur/1600095157.23059.mbox:2,S | 31 + .../cur/1600095158.22807.mbox:2,S | 60 + .../cur/1600095158.22914.mbox:2,S | 29 + .../cur/1600095158.22920.mbox:2,S | 18 + .../cur/1600095158.23014.mbox:2,S | 29 + .../cur/1600095158.23051.mbox:2,S | 35 + .../cur/1600095158.23059.mbox:2,S | 103 + .../cur/1600095159.22807.mbox:2,S | 22 + .../cur/1600095159.22914.mbox:2,S | 126 + .../cur/1600095159.22920.mbox:2,S | 44 + .../cur/1600095159.23014.mbox:2,S | 50 + .../cur/1600095159.23051.mbox:2,S | 33 + .../cur/1600095159.23059.mbox:2,S | 118 + .../cur/1600095160.22807.mbox:2,S | 70 + .../cur/1600095160.22914.mbox:2,S | 33 + .../cur/1600095160.22920.mbox:2,S | 30 + .../cur/1600095160.23014.mbox:2,S | 54 + .../cur/1600095160.23051.mbox:2,S | 49 + .../cur/1600095160.23059.mbox:2,S | 127 + .../cur/1600095161.22807.mbox:2,S | 47 + .../cur/1600095161.22914.mbox:2,S | 36 + .../cur/1600095161.22920.mbox:2,S | 81 + .../cur/1600095161.23014.mbox:2,S | 40 + .../cur/1600095161.23051.mbox:2,S | 49 + .../cur/1600095161.23059.mbox:2,S | 57 + .../cur/1600095162.22807.mbox:2,S | 27 + .../cur/1600095162.22914.mbox:2,S | 69 + .../cur/1600095162.22920.mbox:2,S | 36 + .../cur/1600095162.23014.mbox:2,S | 92 + .../cur/1600095162.23051.mbox:2,S | 43 + .../cur/1600095162.23059.mbox:2,S | 181 ++ .../cur/1600095163.22807.mbox:2,S | 71 + .../cur/1600095163.22914.mbox:2,S | 61 + .../cur/1600095163.22920.mbox:2,S | 31 + .../cur/1600095163.23014.mbox:2,S | 94 + .../cur/1600095163.23051.mbox:2,S | 36 + .../cur/1600095163.23059.mbox:2,S | 63 + .../cur/1600095164.22807.mbox:2,S | 74 + .../cur/1600095164.22920.mbox:2,S | 26 + .../cur/1600095164.23014.mbox:2,S | 226 ++ .../cur/1600095164.23059.mbox:2,S | 38 + .../cur/1600095165.22807.mbox:2,S | 78 + .../cur/1600095165.22920.mbox:2,S | 34 + .../cur/1600095165.23014.mbox:2,S | 194 ++ .../cur/1600095165.23059.mbox:2,S | 57 + .../cur/1600095166.22807.mbox:2,S | 86 + .../cur/1600095166.22920.mbox:2,S | 58 + .../cur/1600095166.23014.mbox:2,S | 148 + .../cur/1600095166.23059.mbox:2,S | 13 + .../cur/1600095167.22807.mbox:2,S | 62 + .../cur/1600095167.22920.mbox:2,S | 29 + .../cur/1600095167.23014.mbox:2,S | 36 + .../cur/1600095167.23059.mbox:2,S | 32 + .../cur/1600095168.22807.mbox:2,S | 24 + .../cur/1600095168.22920.mbox:2,S | 47 + .../cur/1600095168.23014.mbox:2,S | 89 + .../cur/1600095168.23059.mbox:2,S | 17 + .../cur/1600095169.22807.mbox:2,S | 30 + .../cur/1600095169.22920.mbox:2,S | 38 + .../cur/1600095169.23014.mbox:2,S | 159 + .../cur/1600095169.23059.mbox:2,S | 64 + .../cur/1600095170.22807.mbox:2,S | 36 + .../cur/1600095170.22920.mbox:2,S | 31 + .../cur/1600095170.23014.mbox:2,S | 7 + .../cur/1600095170.23059.mbox:2,S | 40 + .../cur/1600095171.22807.mbox:2,S | 43 + .../cur/1600095171.22920.mbox:2,S | 34 + .../cur/1600095171.23014.mbox:2,S | 51 + .../cur/1600095171.23059.mbox:2,S | 28 + .../cur/1600095172.22807.mbox:2,S | 74 + .../cur/1600095172.22920.mbox:2,S | 23 + .../cur/1600095172.23014.mbox:2,S | 128 + .../cur/1600095172.23059.mbox:2,S | 43 + .../cur/1600095173.22807.mbox:2,S | 23 + .../cur/1600095173.22920.mbox:2,S | 25 + .../cur/1600095173.23014.mbox:2,S | 15 + .../cur/1600095173.23059.mbox:2,S | 54 + .../cur/1600095174.22807.mbox:2,S | 57 + .../cur/1600095174.22920.mbox:2,S | 40 + .../cur/1600095174.23014.mbox:2,S | 26 + .../cur/1600095175.22807.mbox:2,S | 30 + .../cur/1600095175.22920.mbox:2,S | 29 + .../cur/1600095175.23014.mbox:2,S | 56 + .../cur/1600095176.22807.mbox:2,S | 67 + .../cur/1600095176.22920.mbox:2,S | 38 + .../cur/1600095176.23014.mbox:2,S | 22 + .../cur/1600095177.22807.mbox:2,S | 37 + .../cur/1600095177.22920.mbox:2,S | 25 + .../cur/1600095177.23014.mbox:2,S | 17 + .../cur/1600095178.22807.mbox:2,S | 54 + .../cur/1600095178.22920.mbox:2,S | 14 + .../cur/1600095179.22807.mbox:2,S | 24 + .../cur/1600095179.22920.mbox:2,S | 53 + .../cur/1600095180.22807.mbox:2,S | 26 + .../cur/1600095180.22920.mbox:2,S | 59 + .../cur/1600095181.22807.mbox:2,S | 31 + .../cur/1600095181.22920.mbox:2,S | 14 + .../cur/1600095182.22807.mbox:2,S | 73 + .../cur/1600095182.22920.mbox:2,S | 27 + .../cur/1600095183.22807.mbox:2,S | 79 + .../cur/1600095183.22920.mbox:2,S | 26 + .../cur/1600095184.22807.mbox:2,S | 66 + .../cur/1600095184.22920.mbox:2,S | 77 + .../cur/1600095185.22807.mbox:2,S | 25 + .../cur/1600095185.22920.mbox:2,S | 45 + .../cur/1600095186.22807.mbox:2,S | 85 + .../cur/1600095186.22920.mbox:2,S | 42 + .../cur/1600095187.22807.mbox:2,S | 86 + .../cur/1600095187.22920.mbox:2,S | 59 + .../cur/1600095188.22807.mbox:2,S | 26 + .../cur/1600095188.22920.mbox:2,S | 23 + .../cur/1600095189.22807.mbox:2,S | 105 + .../cur/1600095189.22920.mbox:2,S | 29 + .../cur/1600095190.22807.mbox:2,S | 32 + .../cur/1600095190.22920.mbox:2,S | 26 + .../cur/1600095191.22807.mbox:2,S | 133 + .../cur/1600095191.22920.mbox:2,S | 39 + .../cur/1600095192.22807.mbox:2,S | 141 + .../cur/1600095192.22920.mbox:2,S | 22 + .../cur/1600095193.22807.mbox:2,S | 198 ++ .../cur/1600095193.22920.mbox:2,S | 25 + .../cur/1600095194.22807.mbox:2,S | 128 + .../cur/1600095194.22920.mbox:2,S | 24 + .../cur/1600095195.22807.mbox:2,S | 32 + .../cur/1600095195.22920.mbox:2,S | 40 + .../cur/1600095196.22807.mbox:2,S | 43 + .../cur/1600095196.22920.mbox:2,S | 15 + .../cur/1600095197.22807.mbox:2,S | 51 + .../cur/1600095197.22920.mbox:2,S | 20 + .../cur/1600095198.22807.mbox:2,S | 28 + .../cur/1600095198.22920.mbox:2,S | 22 + .../cur/1600095199.22807.mbox:2,S | 26 + .../cur/1600095199.22920.mbox:2,S | 23 + .../cur/1600095200.22807.mbox:2,S | 37 + .../cur/1600095200.22920.mbox:2,S | 40 + .../cur/1600095201.22807.mbox:2,S | 52 + .../cur/1600095201.22920.mbox:2,S | 35 + .../cur/1600095202.22807.mbox:2,S | 24 + .../cur/1600095202.22920.mbox:2,S | 52 + .../cur/1600095203.22807.mbox:2,S | 32 + .../cur/1600095203.22920.mbox:2,S | 40 + .../cur/1600095204.22807.mbox:2,S | 78 + .../cur/1600095204.22920.mbox:2,S | 21 + .../cur/1600095205.22807.mbox:2,S | 108 + .../cur/1600095205.22920.mbox:2,S | 33 + .../cur/1600095206.22807.mbox:2,S | 33 + .../cur/1600095206.22920.mbox:2,S | 20 + .../cur/1600095207.22807.mbox:2,S | 20 + .../cur/1600095207.22920.mbox:2,S | 31 + .../cur/1600095208.22807.mbox:2,S | 30 + .../cur/1600095208.22920.mbox:2,S | 33 + .../cur/1600095209.22807.mbox:2,S | 36 + .../cur/1600095209.22920.mbox:2,S | 19 + .../cur/1600095210.22807.mbox:2,S | 51 + .../cur/1600095210.22920.mbox:2,S | 41 + .../cur/1600095211.22807.mbox:2,S | 31 + .../cur/1600095211.22920.mbox:2,S | 68 + .../cur/1600095212.22807.mbox:2,S | 32 + .../cur/1600095212.22920.mbox:2,S | 99 + .../cur/1600095213.22807.mbox:2,S | 21 + .../cur/1600095213.22920.mbox:2,S | 39 + .../cur/1600095214.22807.mbox:2,S | 40 + .../cur/1600095214.22920.mbox:2,S | 30 + .../cur/1600095215.22807.mbox:2,S | 49 + .../cur/1600095215.22920.mbox:2,S | 111 + .../cur/1600095216.22807.mbox:2,S | 28 + .../cur/1600095216.22920.mbox:2,S | 28 + .../cur/1600095217.22807.mbox:2,S | 42 + .../cur/1600095217.22920.mbox:2,S | 28 + .../cur/1600095218.22807.mbox:2,S | 33 + .../cur/1600095218.22920.mbox:2,S | 21 + .../cur/1600095219.22807.mbox:2,S | 40 + .../cur/1600095219.22920.mbox:2,S | 23 + .../cur/1600095220.22807.mbox:2,S | 23 + .../cur/1600095220.22920.mbox:2,S | 49 + .../cur/1600095221.22807.mbox:2,S | 31 + .../cur/1600095221.22920.mbox:2,S | 59 + .../cur/1600095222.22807.mbox:2,S | 77 + .../cur/1600095222.22920.mbox:2,S | 37 + .../cur/1600095223.22807.mbox:2,S | 78 + .../cur/1600095223.22920.mbox:2,S | 21 + .../cur/1600095224.22807.mbox:2,S | 20 + .../cur/1600095224.22920.mbox:2,S | 65 + .../cur/1600095225.22807.mbox:2,S | 22 + .../cur/1600095225.22920.mbox:2,S | 38 + .../cur/1600095226.22807.mbox:2,S | 32 + .../cur/1600095226.22920.mbox:2,S | 39 + .../cur/1600095227.22807.mbox:2,S | 52 + .../cur/1600095227.22920.mbox:2,S | 37 + .../cur/1600095228.22807.mbox:2,S | 30 + .../cur/1600095228.22920.mbox:2,S | 18 + .../cur/1600095229.22807.mbox:2,S | 21 + .../cur/1600095229.22920.mbox:2,S | 46 + .../cur/1600095230.22807.mbox:2,S | 33 + .../cur/1600095230.22920.mbox:2,S | 38 + .../cur/1600095231.22807.mbox:2,S | 34 + .../cur/1600095231.22920.mbox:2,S | 28 + .../cur/1600095232.22807.mbox:2,S | 45 + .../cur/1600095232.22920.mbox:2,S | 21 + .../cur/1600095233.22807.mbox:2,S | 69 + .../cur/1600095233.22920.mbox:2,S | 20 + .../cur/1600095234.22807.mbox:2,S | 22 + .../cur/1600095234.22920.mbox:2,S | 26 + .../cur/1600095235.22807.mbox:2,S | 21 + .../cur/1600095235.22920.mbox:2,S | 18 + .../cur/1600095236.22807.mbox:2,S | 14 + .../cur/1600095236.22920.mbox:2,S | 29 + .../cur/1600095237.22807.mbox:2,S | 31 + .../cur/1600095237.22920.mbox:2,S | 37 + .../cur/1600095238.22807.mbox:2,S | 32 + .../cur/1600095238.22920.mbox:2,S | 13 + .../cur/1600095239.22807.mbox:2,S | 44 + .../cur/1600095239.22920.mbox:2,S | 18 + .../cur/1600095240.22807.mbox:2,S | 28 + .../cur/1600095240.22920.mbox:2,S | 83 + .../cur/1600095241.22807.mbox:2,S | 36 + .../cur/1600095241.22920.mbox:2,S | 48 + .../cur/1600095242.22807.mbox:2,S | 32 + .../cur/1600095242.22920.mbox:2,S | 9 + .../cur/1600095243.22807.mbox:2,S | 48 + .../cur/1600095243.22920.mbox:2,S | 26 + .../cur/1600095244.22807.mbox:2,S | 42 + .../cur/1600095244.22920.mbox:2,S | 36 + .../cur/1600095245.22807.mbox:2,S | 28 + .../cur/1600095245.22920.mbox:2,S | 27 + .../cur/1600095246.22807.mbox:2,S | 19 + .../cur/1600095246.22920.mbox:2,S | 30 + .../cur/1600095247.22807.mbox:2,S | 30 + .../cur/1600095247.22920.mbox:2,S | 40 + .../cur/1600095248.22807.mbox:2,S | 47 + .../cur/1600095248.22920.mbox:2,S | 47 + .../cur/1600095249.22807.mbox:2,S | 37 + .../cur/1600095249.22920.mbox:2,S | 30 + .../cur/1600095250.22807.mbox:2,S | 25 + melib/build.rs | 19 +- melib/src/backends/demo/demo_corpus.rs | 2717 ++++++++++++++++- pkg/index.html | 10 +- pkg/meli.js | 28 +- pkg/meli_bg.wasm | Bin 8516045 -> 13914827 bytes src/bin.rs | 25 +- src/components/mail/listing/offline.rs | 4 - src/components/mail/view.rs | 2 +- src/components/utilities.rs | 2 +- 2672 files changed, 129354 insertions(+), 76 deletions(-) create mode 100644 demo/ermis-f/imap-protocol/cur/1600094967.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094968.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094968.22511.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094969.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094969.22514.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094970.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094970.22514.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094970.22518.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094971.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094971.22514.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094971.22518.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094971.22523.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094972.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094972.22518.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094972.22523.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094972.22526.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094973.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094973.22518.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094973.22526.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094973.22529.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094974.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094974.22518.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094975.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094975.22518.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094975.22532.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094976.22507.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094976.22518.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094976.22532.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094976.22535.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094977.22532.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094977.22535.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094977.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094978.22532.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094978.22535.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094978.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094978.22541.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094979.22535.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094979.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094979.22541.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094979.22544.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094980.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094980.22544.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094981.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094981.22544.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094981.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094982.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094982.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094982.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094983.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094983.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094983.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094983.22563.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094984.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094984.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094984.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094984.22563.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094984.22566.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094985.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094985.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094985.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094985.22563.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094985.22566.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094985.22569.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094986.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094986.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094986.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094986.22566.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094986.22569.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094986.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094987.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094987.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094987.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094987.22566.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094987.22569.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094987.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094988.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094988.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094988.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094988.22569.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094988.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094988.22575.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094989.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094989.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094989.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094989.22569.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094989.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094989.22575.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094989.22578.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094990.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094990.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094990.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094990.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094990.22575.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094990.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094991.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094991.22548.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094991.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094991.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094991.22575.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094991.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094991.22586.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094992.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094992.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094992.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094992.22575.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094992.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094992.22586.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094992.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094993.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094993.22553.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094993.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094993.22575.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094993.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094993.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094993.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094994.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094994.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094994.22575.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094994.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094994.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094994.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094995.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094995.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094995.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094995.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094995.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094995.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094996.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094996.22572.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094996.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094996.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094996.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094996.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094997.22538.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094997.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094997.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094997.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094997.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094997.22600.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094998.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094998.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094998.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094998.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094998.22600.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094998.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094999.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094999.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094999.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094999.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094999.22600.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094999.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600094999.22606.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095000.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095000.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095000.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095000.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095000.22600.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095000.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095000.22617.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095001.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095001.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095001.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095001.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095001.22600.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095001.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095001.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22600.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095002.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095003.22583.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095003.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095003.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095003.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095003.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095003.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095003.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095004.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095004.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095004.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095004.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095004.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095004.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095004.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095005.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095006.22632.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22632.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095007.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22592.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22603.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22632.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095008.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22620.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095009.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095010.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095010.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095010.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095010.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095010.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095010.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095010.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22589.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22626.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095011.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095012.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095012.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095012.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095012.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095012.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095012.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095012.22645.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22645.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095013.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22645.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095014.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22645.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095015.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095016.22656.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22656.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095017.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22656.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095018.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22656.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095019.22662.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22662.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095020.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22638.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22662.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095021.22668.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22662.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095022.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22662.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095023.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22662.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095024.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095025.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22659.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095026.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22623.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22651.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095027.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095028.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095029.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095030.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22635.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095031.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22679.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095032.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22675.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095033.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095034.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095035.22716.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22716.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095036.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22716.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095037.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22629.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22716.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095038.22723.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22716.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22723.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095039.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22716.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22723.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095040.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22671.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22716.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22723.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095041.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22723.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095042.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22723.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095043.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095044.22746.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22685.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22746.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095045.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22746.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095046.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22648.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22665.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22746.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095047.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22746.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095048.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095049.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095050.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095051.22762.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22762.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095052.22765.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22719.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22726.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22762.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22765.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095053.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22762.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22765.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095054.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22707.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22729.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22762.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22765.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095055.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22762.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22765.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095056.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22762.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22765.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095057.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22732.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095058.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095059.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095060.22788.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22697.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22749.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22752.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22788.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095061.22792.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22788.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22792.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095062.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22788.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095063.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22788.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095064.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22682.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22777.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22780.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095065.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095066.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095067.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095068.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095069.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22688.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095070.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22801.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095071.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095072.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095073.22823.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22823.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095074.22826.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22826.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095075.22829.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22641.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22826.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22829.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095076.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22784.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22829.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095077.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22804.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095078.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095079.22838.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22838.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095080.22841.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22838.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22841.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095081.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22838.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22841.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095082.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22838.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22841.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095083.22850.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22838.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22841.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22850.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095084.22853.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22813.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22850.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22853.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095085.22856.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22768.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22850.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22853.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095086.22856.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22701.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22850.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22853.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095087.22862.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22810.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22853.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22862.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095088.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22835.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22853.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22862.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095089.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22847.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22853.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095090.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22817.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22820.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22832.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095091.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095092.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095093.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22844.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095094.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095095.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22759.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095096.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095097.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095098.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22874.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095099.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22877.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095100.22896.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22896.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095101.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22896.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095102.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095103.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22796.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095104.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22743.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095105.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095106.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095107.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22871.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095108.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22595.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095109.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22889.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095110.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095111.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095112.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095113.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22886.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095114.22966.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22899.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095115.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095116.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095117.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095118.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22866.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095119.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095120.23004.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.23004.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095121.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.23004.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095122.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22903.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.23004.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095123.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22938.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.23004.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095124.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095125.23040.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.23040.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095126.23045.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22987.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.23040.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.23045.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095127.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.23040.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.23045.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095128.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23040.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23045.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095129.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22880.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095130.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22917.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.23036.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095131.23064.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22983.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.23064.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095132.23084.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22772.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22960.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23064.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23084.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095133.23090.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23064.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23084.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23090.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095134.23093.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23055.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23064.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23084.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23093.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095135.23102.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22756.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22957.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.22999.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23064.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23093.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23102.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095136.23105.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.23064.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095137.23093.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095138.23093.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095139.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095140.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095141.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095142.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.23031.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095143.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095144.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.22911.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095145.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.22893.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095146.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095147.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095148.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095149.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095150.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095151.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095152.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095153.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095154.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.22883.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095155.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095156.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095156.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095156.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095156.22974.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095156.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095156.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095156.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095157.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095157.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095157.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095157.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095157.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095157.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095158.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095158.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095158.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095158.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095158.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095158.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095159.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095159.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095159.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095159.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095159.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095159.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095160.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095160.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095160.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095160.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095160.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095160.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095161.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095161.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095161.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095161.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095161.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095161.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095162.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095162.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095162.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095162.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095162.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095162.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095163.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095163.22914.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095163.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095163.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095163.23051.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095163.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095164.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095164.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095164.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095164.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095165.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095165.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095165.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095165.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095166.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095166.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095166.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095166.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095167.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095167.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095167.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095167.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095168.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095168.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095168.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095168.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095169.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095169.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095169.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095169.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095170.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095170.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095170.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095170.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095171.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095171.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095171.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095171.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095172.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095172.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095172.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095172.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095173.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095173.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095173.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095173.23059.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095174.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095174.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095174.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095175.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095175.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095175.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095176.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095176.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095176.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095177.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095177.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095177.23014.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095178.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095178.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095179.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095179.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095180.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095180.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095181.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095181.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095182.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095182.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095183.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095183.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095184.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095184.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095185.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095185.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095186.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095186.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095187.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095187.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095188.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095188.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095189.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095189.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095190.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095190.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095191.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095191.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095192.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095192.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095193.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095193.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095194.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095194.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095195.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095195.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095196.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095196.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095197.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095197.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095198.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095198.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095199.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095199.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095200.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095200.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095201.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095201.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095202.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095202.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095203.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095203.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095204.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095204.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095205.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095205.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095206.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095206.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095207.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095207.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095208.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095208.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095209.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095209.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095210.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095210.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095211.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095211.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095212.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095212.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095213.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095213.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095214.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095214.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095215.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095215.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095216.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095216.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095217.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095217.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095218.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095218.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095219.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095219.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095220.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095220.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095221.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095221.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095222.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095222.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095223.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095223.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095224.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095224.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095225.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095225.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095226.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095226.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095227.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095227.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095228.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095228.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095229.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095229.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095230.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095230.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095231.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095231.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095232.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095232.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095233.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095233.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095234.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095234.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095235.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095235.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095236.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095236.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095237.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095237.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095238.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095238.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095239.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095239.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095240.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095240.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095241.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095241.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095242.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095242.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095243.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095243.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095244.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095244.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095245.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095245.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095246.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095246.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095247.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095247.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095248.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095248.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095249.22807.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095249.22920.mbox:2,S create mode 100644 demo/ermis-f/imap-protocol/cur/1600095250.22807.mbox:2,S diff --git a/demo/ermis-f/imap-protocol/cur/1600094967.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094967.22507.mbox:2,S new file mode 100644 index 00000000..af6dcf47 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094967.22507.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From andris.reinman at gmail.com Wed Sep 9 00:27:14 2020 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Wed Sep 9 00:27:54 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving messages? +Message-ID: + +Hi, + +As the subject states, is there actually any valid use case these days for +COPY to just copy messages instead of being a poor substitute for MOVE +(that is COPY+EXPUNGE)? + +If an IMAP server would mark COPYied messages with \Delete and +expunge these immediately after a message has been copied, would it break +any real-use expectations? + +Why I'm asking is that I'm building a database backed email server ( +https://wildduck.email), we have a moderately sized cluster of emails +(100k+ users, ~50TB+ of data, few hundred million emails) and when an IMAP +client tries to copy all messages from one large folder to another then +copying takes a lot of time (eg 'COPY 1:* target' where * is 10 000) as +listing the database entries and copying these around takes time. And as +there is no response until messages have been fully copied the client might +think that TCP connection has been lost and retries the same action, ending +up doing multiple COPY calls. + +So I was wondering if we could simply delete the already copied message +from the source folder, as most probably the client would do it anyway once +COPY is fully completed. Basically COPY would be an alias for MOVE. +Obviously non-standard behavior but would we actually break something +client side by doing this? + +Regards, +Andris Reinman +https://wildduck.email +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094968.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094968.22507.mbox:2,S new file mode 100644 index 00000000..6328ef2e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094968.22507.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From grschmidt at acm.org Wed Sep 9 01:49:43 2020 +To: imap-protocol@u.washington.edu +From: "Gary R. Schmidt" +Date: Wed Sep 9 01:50:13 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: +References: +Message-ID: + +On 09/09/2020 17:27, Andris Reinman wrote: +> Hi, +> +> As the subject states, is there actually any valid use case these days +> for COPY to just copy messages instead of being a poor substitute for +> MOVE (that is COPY+EXPUNGE)? +> +I often copy bunches of email to other folders, to other users accounts, +and to various archive accounts, after which the messages are *not* +deleted, so I would say, "Yes, there are valid use cases for COPY doing +*exactly* what the word says." + + Cheers, + Gary B-) diff --git a/demo/ermis-f/imap-protocol/cur/1600094968.22511.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094968.22511.mbox:2,S new file mode 100644 index 00000000..1a850c09 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094968.22511.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From gds at chartertn.net Fri Sep 13 00:21:21 2019 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Sep 13 00:21:43 2019 +Subject: [Imap-protocol] Errors on imap APPEND with gmail server. +Message-ID: <296d9a9a-a6d3-d50a-ebf4-07550c1c2e6d@chartertn.net> + +Often Thunderbird users have the need to copy many message from local +storage to an imap folder and have reported problems. Thunderbird uses a +separate imap append command for each message to accomplish this. But +occasionally, for example when the destination server is gmail, a BAD +response will occur to the append, e.g., 6249 BAD Invalid Arguments: +Unable to parse message. + +However, if the exact same append command is repeated, it succeeds. + +I have checked to verify that exactly the same data and data length is +sent when the append fails and when it succeeds. I verified this by +saving the command transactions with wireshark. + +I've seen this occur at random points in the copy, such as after +approximately 4000 messages, about 400 messages etc, but so far, on the +retry the append succeeds. + +Not sure if the problem is specific to gmail. But since it is very +commonly used, I have tested with it first. + +Gene diff --git a/demo/ermis-f/imap-protocol/cur/1600094969.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094969.22507.mbox:2,S new file mode 100644 index 00000000..d3cc1876 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094969.22507.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dpc22 at cam.ac.uk Wed Sep 9 02:30:35 2020 +To: imap-protocol@u.washington.edu +From: David Carter +Date: Wed Sep 9 02:31:09 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: +References: + +Message-ID: <5109ccf6cec7384b014f594e29e6d3f9@cam.ac.uk> + +On 2020-09-09 09:49, Gary R. Schmidt wrote: +> On 09/09/2020 17:27, Andris Reinman wrote: +>> Hi, +>> +>> As the subject states, is there actually any valid use case these days +>> for COPY to just copy messages instead of being a poor substitute for +>> MOVE (that is COPY+EXPUNGE)? +>> +> I often copy bunches of email to other folders, to other users +> accounts, and to various archive accounts, after which the messages +> are *not* deleted, so I would say, "Yes, there are valid use cases for +> COPY doing *exactly* what the word says." + +I frequently COPY mail which has been filtered into a folder on delivery +back to my inbox if there is something odd that I need to investigate +and/or action. + +Roundcube has "drag and drop" for MOVE, and Shift+"drag and drop" for +COPY, which is quite convenient of it. diff --git a/demo/ermis-f/imap-protocol/cur/1600094969.22514.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094969.22514.mbox:2,S new file mode 100644 index 00000000..34987987 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094969.22514.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From brong at fastmail.fm Mon Apr 1 18:07:05 2019 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Mon Apr 1 18:07:17 2019 +Subject: [Imap-protocol] CLIENTID capability for IMAP (and SMTP) +In-Reply-To: +References: <8cade395-864a-9039-6bfa-874c26e5967e@chartertn.net> + +Message-ID: + +For what it's worth, this work was brought to the EXTRA working group at IETF at Montreal last year, and the group decided that it wasn't the right level in the stack for this kind of ID - that it would be better placed in the SASL layer. + +The OAUTH technique also strikes me as a better long-term solution, because it means that users aren't entering their own selected password to be stored on disk by clients. + +On the flip side, I'm sensitive to the argument from Linux Magic that this solves a problem RIGHT NOW which a perfect future solution might solve better, but a future solution doesn't fix anything for the current environment. + +Regarding the discussion on bugzilla - I would agree that it's quite important that the same ID MUST NOT be sent to different servers - the CLIENTID should be generated as a unique hash over ('deviceid', 'username', 'domain'). + +Bron. + +On Mon, Apr 1, 2019, at 03:51, Brandon Long wrote: +> Although I don't work on the Gmail imap anymore, I will say that we implemented a competing idea (AUTH LOGIN-CLIENTTOKEN), though we eventually decided to concentrate on OAUTHBEARER. OAUTH authorizes each client separately, so provides the same client based benefits. +> +> If this became standard, we could implement it, but I haven't really seen consensus on it yet, or adoption by a working group. When it matures, we would need to look at how many 'legacy' auth users we have , and the benefits to that population. +> +> Brandon +> +> On Sat, Mar 30, 2019, 11:11 AM Gene Smith wrote: +>> Thunderbird has recently received a patch to add a CLIENTID capability +>> which can be seen here: +>> https://bugzilla.mozilla.org/show_bug.cgi?id=1532388. +>> +>> This includes links to the draft RFCs for IMAP and SMTP. I have been +>> unable to find any other information on this feature. Is it supported or +>> plaanned to be supported on any other IMAP or SMTP server? +>> +>> -gene +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-- + Bron Gondwana + brong@fastmail.fm + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094970.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094970.22507.mbox:2,S new file mode 100644 index 00000000..6f9b0659 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094970.22507.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From ptao at apple.com Wed Sep 9 12:01:51 2020 +To: imap-protocol@u.washington.edu +From: Phillip Tao +Date: Wed Sep 9 12:02:13 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: +References: + +Message-ID: <9E1B3336-9D01-4B3C-A86E-6532A4EB8190@apple.com> + + + +> On Sep 9, 2020, at 1:49 AM, Gary R. Schmidt wrote: +> +> On 09/09/2020 17:27, Andris Reinman wrote: +>> Hi, +>> As the subject states, is there actually any valid use case these days for COPY to just copy messages instead of being a poor substitute for MOVE (that is COPY+EXPUNGE)? +> I often copy bunches of email to other folders, to other users accounts, and to various archive accounts, after which the messages are *not* deleted, so I would say, "Yes, there are valid use cases for COPY doing *exactly* what the word says." + +For the latter two examples, a copy to another account would almost certainly be an APPEND, and not actually a COPY. + +But, I can't imagine that you wouldn't break someone's workflow almost immediately if you implemented this "COPY as alias for MOVE" behavior. + +- Phillip +> +> Cheers, +> Gary B-) +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600094970.22514.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094970.22514.mbox:2,S new file mode 100644 index 00000000..0521c4d1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094970.22514.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From dave at cridland.net Tue Apr 2 08:35:00 2019 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Tue Apr 2 08:35:44 2019 +Subject: [Imap-protocol] CLIENTID capability for IMAP (and SMTP) +In-Reply-To: +References: <8cade395-864a-9039-6bfa-874c26e5967e@chartertn.net> + + +Message-ID: + +See also: https://tools.ietf.org/html/draft-cridland-kitten-clientkey-00 + +I implemented this in XMPP for various reasons, but there's no particular +reason it couldn't be used for IMAP et al. + +On Tue, 2 Apr 2019 at 02:08, Bron Gondwana wrote: + +> For what it's worth, this work was brought to the EXTRA working group at +> IETF at Montreal last year, and the group decided that it wasn't the right +> level in the stack for this kind of ID - that it would be better placed in +> the SASL layer. +> +> The OAUTH technique also strikes me as a better long-term solution, +> because it means that users aren't entering their own selected password to +> be stored on disk by clients. +> +> On the flip side, I'm sensitive to the argument from Linux Magic that this +> solves a problem RIGHT NOW which a perfect future solution might solve +> better, but a future solution doesn't fix anything for the current +> environment. +> +> Regarding the discussion on bugzilla - I would agree that it's quite +> important that the same ID MUST NOT be sent to different servers - the +> CLIENTID should be generated as a unique hash over ('deviceid', 'username', +> 'domain'). +> +> Bron. +> +> On Mon, Apr 1, 2019, at 03:51, Brandon Long wrote: +> +> Although I don't work on the Gmail imap anymore, I will say that we +> implemented a competing idea (AUTH LOGIN-CLIENTTOKEN), though we eventually +> decided to concentrate on OAUTHBEARER. OAUTH authorizes each client +> separately, so provides the same client based benefits. +> +> If this became standard, we could implement it, but I haven't really seen +> consensus on it yet, or adoption by a working group. When it matures, we +> would need to look at how many 'legacy' auth users we have , and the +> benefits to that population. +> +> Brandon +> +> On Sat, Mar 30, 2019, 11:11 AM Gene Smith wrote: +> +> Thunderbird has recently received a patch to add a CLIENTID capability +> which can be seen here: +> https://bugzilla.mozilla.org/show_bug.cgi?id=1532388. +> +> This includes links to the draft RFCs for IMAP and SMTP. I have been +> unable to find any other information on this feature. Is it supported or +> plaanned to be supported on any other IMAP or SMTP server? +> +> -gene +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> -- +> Bron Gondwana +> brong@fastmail.fm +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094970.22518.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094970.22518.mbox:2,S new file mode 100644 index 00000000..b0416ede --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094970.22518.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From gds at chartertn.net Mon Mar 4 18:13:09 2019 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Mon Mar 4 18:13:26 2019 +Subject: [Imap-protocol] gmail fails "tag uid fetch 123 (BODY.PEEK[2.1.1])", + most others OK +Message-ID: + +I have been trying to fix Thunderbird so it properly accesses a large +mailing list digest message when fetching parts only on demand (no +inline display of attachments or local storage to disk of the entire +mesage). + +The message can be found here: +https://bugzilla.mozilla.org/attachment.cgi?id=10149 + +I have it working OK for several servers (Dovecot, MDaemon, Cyrus) but +am unable to get to work with gmail. + +The bodystructure numbering of the message parts is like this: + +1 Top level message. +2 Container for the 107 rfc822 message attachments +2.1 The 1st message +2.1.1 Body of 1st message +2.2.The 2nd message +2.2.1 Body of 2nd message +: +: +2.66 The 66th message having attachments (example) +2.66.1 Body of 66th message +2.66.2 Attachment of 66th message (text) +2.66.3 2nd attachment +2.66.4 3rd (last) attachment of 66th message +: +: +2.107 The 107th (last) message +2.107.1 Body of 107th message + +Thunderbird accesses the body of an attachment like this (uid 123): + +tag uid fetch 123 (BODY.PEEK[2.33.1]) + +Several servers respond OK and return the email body of the 33th +attachment. But gmail responds like this: + +48 NO Some messages could not be FETCHed (Failure) + +-gene + + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094971.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094971.22507.mbox:2,S new file mode 100644 index 00000000..a523b7a9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094971.22507.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From burrows.labs at gmail.com Wed Sep 9 12:45:26 2020 +To: imap-protocol@u.washington.edu +From: Aaron Burrow +Date: Wed Sep 9 12:45:56 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: +References: +Message-ID: <49C6D280-1110-4545-B7DE-303C98F98A71@gmail.com> + +What does the db data model look like? Is the email data in the database, are there pointers? + +> On Sep 9, 2020, at 3:28 AM, Andris Reinman wrote: +> +> ? +> Hi, +> +> As the subject states, is there actually any valid use case these days for COPY to just copy messages instead of being a poor substitute for MOVE (that is COPY+EXPUNGE)? +> +> If an IMAP server would mark COPYied messages with \Delete and expunge these immediately after a message has been copied, would it break any real-use expectations? +> +> Why I'm asking is that I'm building a database backed email server (https://wildduck.email), we have a moderately sized cluster of emails (100k+ users, ~50TB+ of data, few hundred million emails) and when an IMAP client tries to copy all messages from one large folder to another then copying takes a lot of time (eg 'COPY 1:* target' where * is 10 000) as listing the database entries and copying these around takes time. And as there is no response until messages have been fully copied the client might think that TCP connection has been lost and retries the same action, ending up doing multiple COPY calls. +> +> So I was wondering if we could simply delete the already copied message from the source folder, as most probably the client would do it anyway once COPY is fully completed. Basically COPY would be an alias for MOVE. Obviously non-standard behavior but would we actually break something client side by doing this? +> +> Regards, +> Andris Reinman +> https://wildduck.email +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094971.22514.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094971.22514.mbox:2,S new file mode 100644 index 00000000..a718c46c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094971.22514.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From michael at linuxmagic.com Fri Apr 5 14:36:49 2019 +To: imap-protocol@u.washington.edu +From: Michael Peddemors +Date: Fri Apr 5 14:37:17 2019 +Subject: [Imap-protocol] CLIENTID capability for IMAP (and SMTP) +Message-ID: <1a8a4997-1edc-6567-7cc3-1f2450b0e49d@linuxmagic.com> + + From Bron's email.. + +"For what it's worth, this work was brought to the EXTRA working group +at IETF at Montreal last year, and the group decided that it wasn't the +right level in the stack for this kind of ID - that it would be better +placed in the SASL layer." + +For the record, and correct me if I am wrong, the only "consensus" there +was that since it was for both SMTP and IMAP, it wasn't really in the +mandate of the working group.. albeit now there is discussion about the +'extra' including some SMTP items. + +It was also suggested that more discussions should happen, and a 'home' +(eg working group) to take this on might be found .. + +There WERE some comments that SASL might be preferred, to which we +responding that CLIENTID is 'not' authentication, but identification, so +belongs at a higher level, albeit it can be made available to any and +all SASL implementations by the SMTP/IMAP implementation, as well as to +any other identification or ACL systems that are not part of the +authentication layer.. + +Also, feedback was provided that the term CLIENTID (rather than the +original moniker of simply CID) was preferred which was incorporated +into the DRAFT, as well as the suggestion that client implementations +should take into the consideration whether CLIENTID should be presented +on a per client, or per service. + +But Bron thank you for the following.. + +"On the flip side, I'm sensitive to the argument from Linux Magic that +this solves a problem RIGHT NOW which a perfect future solution might +solve better, but a future solution doesn't fix anything for the current +environment." + +Thanks, because that is exactly the reason for it's inception, and why +others are open to adopting it now. We are trying to 'change' SMTP/IMAP, +simply make it easier to prevent the kind of abuse that is increasing +worldwide right now.. + +IT IS easier than many other ideas, easier to understand, adopt, and +implement, and is 100% backwards compatible until all email clients +support this, and it sure stops brute force attacks, and/or leaked +password from 3rd party data breaches. And allows the little players to +be able to implement what until now was really only available to the big +boys. + +There is a fundamental problem today, for which this (CLIENTID) is "a" +solution, and our team has been working hard with partners, open source +projects, and other commercial vendors to expand on the adoption of this +worldwide. + +And it is something that has proven already very successfully in our +implementations. Looking forward to more email clients and more servers +supporting CLIENTID, to widen the available number of email clients that +can be used when customers want to better secure their in-boxes. + +"Lock Your Mailbox" ;) + + + + + + + + + + + +-- +"Catch the Magic of Linux..." +------------------------------------------------------------------------ +Michael Peddemors, President/CEO LinuxMagic Inc. +Visit us at http://www.linuxmagic.com @linuxmagic +A Wizard IT Company - For More Info http://www.wizard.ca +"LinuxMagic" a Registered TradeMark of Wizard Tower TechnoServices Ltd. +------------------------------------------------------------------------ +604-682-0300 Beautiful British Columbia, Canada + +This email and any electronic data contained are confidential and intended +solely for the use of the individual or entity to which they are addressed. +Please note that any views or opinions presented in this email are solely +those of the author and are not intended to represent those of the company. diff --git a/demo/ermis-f/imap-protocol/cur/1600094971.22518.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094971.22518.mbox:2,S new file mode 100644 index 00000000..520973de --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094971.22518.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From blong at google.com Tue Mar 5 09:14:56 2019 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Tue Mar 5 09:15:57 2019 +Subject: [Imap-protocol] gmail fails "tag uid fetch 123 + (BODY.PEEK[2.1.1])", most others OK +In-Reply-To: +References: +Message-ID: + +Ugh, that is probably evil to our server. I don't recall if we succeeded +in optimizing the specific attachment requests, hopefully, otherwise we'd +have to reassemble the whole message, fetching all 100 plus parts and then +getting you what you want... With a little caching it would have to do this +on every fetch. That's still the fallback when the individual item fetch +fails for some reason (message our system didn't handle right or we have +bad offsets at least) + +How big is the message that caching it on your end is bad? + +Anyways, I've forwarded to the new team. Obviously it should work even if +it's a lot of work on our side. Is it a consistent one that doesn't work, +or any of them? + +Brandon + + +On Mon, Mar 4, 2019, 6:14 PM Gene Smith wrote: + +> I have been trying to fix Thunderbird so it properly accesses a large +> mailing list digest message when fetching parts only on demand (no +> inline display of attachments or local storage to disk of the entire +> mesage). +> +> The message can be found here: +> https://bugzilla.mozilla.org/attachment.cgi?id=10149 +> +> I have it working OK for several servers (Dovecot, MDaemon, Cyrus) but +> am unable to get to work with gmail. +> +> The bodystructure numbering of the message parts is like this: +> +> 1 Top level message. +> 2 Container for the 107 rfc822 message attachments +> 2.1 The 1st message +> 2.1.1 Body of 1st message +> 2.2.The 2nd message +> 2.2.1 Body of 2nd message +> : +> : +> 2.66 The 66th message having attachments (example) +> 2.66.1 Body of 66th message +> 2.66.2 Attachment of 66th message (text) +> 2.66.3 2nd attachment +> 2.66.4 3rd (last) attachment of 66th message +> : +> : +> 2.107 The 107th (last) message +> 2.107.1 Body of 107th message +> +> Thunderbird accesses the body of an attachment like this (uid 123): +> +> tag uid fetch 123 (BODY.PEEK[2.33.1]) +> +> Several servers respond OK and return the email body of the 33th +> attachment. But gmail responds like this: +> +> 48 NO Some messages could not be FETCHed (Failure) +> +> -gene +> +> +> +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094971.22523.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094971.22523.mbox:2,S new file mode 100644 index 00000000..64117d4b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094971.22523.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From jjmckay at comaxis.com Mon Feb 18 15:03:55 2019 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Mon Feb 18 15:04:16 2019 +Subject: [Imap-protocol] Gmail IMAP server session timeout +Message-ID: <87f58114-8169-d911-2e2b-e1679c598941@comaxis.com> + +I've got an application that puts messages into Gmail via IMAP. +Sometimes the application will have to sit there for a considerable +time, while logged in, waiting for processing to catch up on the source +end.? I am seeing Gmail shutdown, giving me "BYE session expired, please +login again".? I tried to prevent this by issuing NOOP commands every 5 +minutes.? The server accepts the NOOP but that doesn't seem to reset its +timer.? Is that expected behavior?? Is there something else I need to do +to prevent the session from timing out? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094972.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094972.22507.mbox:2,S new file mode 100644 index 00000000..9a0e7695 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094972.22507.mbox:2,S @@ -0,0 +1,95 @@ +MBOX-Line: From andris.reinman at gmail.com Wed Sep 9 13:39:28 2020 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Wed Sep 9 13:39:52 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: <49C6D280-1110-4545-B7DE-303C98F98A71@gmail.com> +References: + <49C6D280-1110-4545-B7DE-303C98F98A71@gmail.com> +Message-ID: + +> What does the db data model look like? Is the email data in the database, +> are there pointers? +> + +It is a sharded MongoDB cluster. Messages are parsed into structured +documents, attachments are decoded and deduplicated and stored separately. +All email documents are stored in the same large collection (currently at +250M documents) and include a "mailbox id" value that is used to filter out +messages that belong to the same IMAP mailbox. + +Around 30M FETCH commands are run every day against that collection so it +is quite busy as well. + +Doing a copy for messages means +1. getting a cursor for the result set of matching messages +2. processing the cursor one message at a time +3. reading the entire message entry from DB to application (without +attachments as these are stored separately) +4. modifying the "folder id" and UID, MODSEQ etc values of the record in +memory +5. inserting the record to the collection as a new document + +Copying each message also triggers notifications about added messages to +IMAP clients, modseq updates for the mailbox etc. +So obviously this is not very fast and may take a lot of time (in computer +terms). + +I wanted to use a different approach at first where there would be just a +single email document and that document would contain a list of mailbox ids +where it is currently stored (and also what are the UID/MODSEQ values in +these mailboxes). I was not able to figure out proper database indexing for +that so went with the more simplistic approach where every email document +is dedicated to a specific mailbox. + +Regards, +Andris Reinman + +Kontakt Aaron Burrow () kirjutas kuup?eval K, 9. +september 2020 kell 22:45: + +> +> On Sep 9, 2020, at 3:28 AM, Andris Reinman +> wrote: +> +> ? +> Hi, +> +> As the subject states, is there actually any valid use case these days for +> COPY to just copy messages instead of being a poor substitute for MOVE +> (that is COPY+EXPUNGE)? +> +> If an IMAP server would mark COPYied messages with \Delete and +> expunge these immediately after a message has been copied, would it break +> any real-use expectations? +> +> Why I'm asking is that I'm building a database backed email server ( +> https://wildduck.email), we have a moderately sized cluster of emails +> (100k+ users, ~50TB+ of data, few hundred million emails) and when an IMAP +> client tries to copy all messages from one large folder to another then +> copying takes a lot of time (eg 'COPY 1:* target' where * is 10 000) as +> listing the database entries and copying these around takes time. And as +> there is no response until messages have been fully copied the client might +> think that TCP connection has been lost and retries the same action, ending +> up doing multiple COPY calls. +> +> So I was wondering if we could simply delete the already copied message +> from the source folder, as most probably the client would do it anyway once +> COPY is fully completed. Basically COPY would be an alias for MOVE. +> Obviously non-standard behavior but would we actually break something +> client side by doing this? +> +> Regards, +> Andris Reinman +> https://wildduck.email +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094972.22518.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094972.22518.mbox:2,S new file mode 100644 index 00000000..30de0653 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094972.22518.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From blong at google.com Tue Mar 5 10:55:33 2019 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Tue Mar 5 10:56:03 2019 +Subject: [Imap-protocol] gmail fails "tag uid fetch 123 + (BODY.PEEK[2.1.1])", most others OK +In-Reply-To: +References: + +Message-ID: + +Also interesting if it can fetch the full message, since that again might +require a lot of individual fetches to reassemble, which might time out if +we don't handle that correctly. + +Brandon + +On Tue, Mar 5, 2019 at 9:14 AM Brandon Long wrote: + +> Ugh, that is probably evil to our server. I don't recall if we succeeded +> in optimizing the specific attachment requests, hopefully, otherwise we'd +> have to reassemble the whole message, fetching all 100 plus parts and then +> getting you what you want... With a little caching it would have to do this +> on every fetch. That's still the fallback when the individual item fetch +> fails for some reason (message our system didn't handle right or we have +> bad offsets at least) +> +> How big is the message that caching it on your end is bad? +> +> Anyways, I've forwarded to the new team. Obviously it should work even if +> it's a lot of work on our side. Is it a consistent one that doesn't work, +> or any of them? +> +> Brandon +> +> +> On Mon, Mar 4, 2019, 6:14 PM Gene Smith wrote: +> +>> I have been trying to fix Thunderbird so it properly accesses a large +>> mailing list digest message when fetching parts only on demand (no +>> inline display of attachments or local storage to disk of the entire +>> mesage). +>> +>> The message can be found here: +>> https://bugzilla.mozilla.org/attachment.cgi?id=10149 +>> +>> I have it working OK for several servers (Dovecot, MDaemon, Cyrus) but +>> am unable to get to work with gmail. +>> +>> The bodystructure numbering of the message parts is like this: +>> +>> 1 Top level message. +>> 2 Container for the 107 rfc822 message attachments +>> 2.1 The 1st message +>> 2.1.1 Body of 1st message +>> 2.2.The 2nd message +>> 2.2.1 Body of 2nd message +>> : +>> : +>> 2.66 The 66th message having attachments (example) +>> 2.66.1 Body of 66th message +>> 2.66.2 Attachment of 66th message (text) +>> 2.66.3 2nd attachment +>> 2.66.4 3rd (last) attachment of 66th message +>> : +>> : +>> 2.107 The 107th (last) message +>> 2.107.1 Body of 107th message +>> +>> Thunderbird accesses the body of an attachment like this (uid 123): +>> +>> tag uid fetch 123 (BODY.PEEK[2.33.1]) +>> +>> Several servers respond OK and return the email body of the 33th +>> attachment. But gmail responds like this: +>> +>> 48 NO Some messages could not be FETCHed (Failure) +>> +>> -gene +>> +>> +>> +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094972.22523.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094972.22523.mbox:2,S new file mode 100644 index 00000000..69b92720 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094972.22523.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From blong at google.com Tue Feb 19 12:00:59 2019 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Tue Feb 19 12:01:49 2019 +Subject: [Imap-protocol] Gmail IMAP server session timeout +In-Reply-To: <87f58114-8169-d911-2e2b-e1679c598941@comaxis.com> +References: <87f58114-8169-d911-2e2b-e1679c598941@comaxis.com> +Message-ID: + +What time frame are you seeing this in? + +There's a bunch of different reasons that the server will close a +connection. There's a maximum number of connections allowed, for example, +or if the user's primary/secondary servers flip, or if you're connected to +a secondary because the primary was down and the primary comes back, or the +primary moves for load balancing, or the servers are restarted for new +versions. The connection also travels through at least three proxies, and +those can restart as well (though those won't say BYE). That's all +relatively rare but can cause connection closes on average daily. + +If you're seeing consistent closes after an hour or 24h, that's probably +the auth refresh threshold. I don't recall the specific time frames, and +it varies between using oauth and regular login, but basically the auth +time has a limit because we can't easily tell in some circumstances if the +auth has been revoked, so we close the connection to force a re-login to +prove you still should have access. It's been a couple years, so I don't +recall the details. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094972.22526.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094972.22526.mbox:2,S new file mode 100644 index 00000000..17711b77 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094972.22526.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From gds at chartertn.net Thu Nov 29 11:34:19 2018 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Thu Nov 29 11:34:45 2018 +Subject: [Imap-protocol] Unsolicited server responses +In-Reply-To: +References: +Message-ID: + +On 10/17/18 20:17, Aaron Burrow wrote: +> +> Given that the server can unilaterally send updates to the client, why +> was the IDLE extension useful/necessary? + +I'm no expert but I don't think I have seen an IMAP server that sends +unsolicited EXISTS or EXPUNGE responses when not in IDLE mode. These +untagged responses only occur in idle or when a client request occurs +first, e.g., NOOP. But you are right, RFC 3501 does say that the server +MAY send untagged messages at any time without a client request +occurring first. + +The IDLE RFC 2177 gives a hint as to why IDLE is needed with this +statement: + +"While the spec [RFC3501 I assume] actually does allow a server to push +EXISTS responses asynchronously, a client can't expect this behavior and +must poll." + +So the IDLE capability and command provide a way for the client to know +for sure that asynchronous responses can occur and prepare to receive +them and not have to poll. + +I have recently been contributing to the Thunderbird imap code. I am not +sure that it will correctly respond to unsolicited/asynchronous (out of +the blue) EXISTS responses unless idle mode has been entered, although +per RFC 3501 all clients should. + +-gene + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094973.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094973.22507.mbox:2,S new file mode 100644 index 00000000..64cd63f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094973.22507.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From dw at thedave.ca Wed Sep 9 19:45:39 2020 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Wed Sep 9 19:46:07 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: +References: +Message-ID: + +On 2020-09-09 01:27, Andris Reinman wrote: +> As the subject states, is there actually any valid use case these days +> for COPY to just copy messages instead of being a poor substitute for +> MOVE (that is COPY+EXPUNGE)? + +The use case is copying a message, rather than moving it. + +I admit many/most users just move messages and in fact some mail +interfaces don't have an easy copy button, some omit it completely. If +you control the interface and want to drop the copy button, I wouldn't +be thrilled but I could accept it. But I believe you're talking about +silently and unexpectedly deleting a user's email. + +I will sometimes copy a bunch of messages into a temporary folder for a +specific purpose. Perhaps they're related to something I am working on +but not part of a single thread (or selected parts of a much larger +thread), perhaps they're all requiring action/attention, maybe I'm going +to share that folder. But I *always* want the original content sorted in +the longterm place they live and I'll nuke that temporary folder once +I'm done with it. And admittedly this is not something I do especially +frequently either. + +If my messages were silently discarded from their original folder, I +would be both logging it as a defect and very quickly switching to a +email service that doesn't lose email unexpectedly. + +(Full disclosure: $DAYJOB has a product that only stores a single +instance of a message within a mailbox -- But there is no risk because +there is no copy action that fails silently, it simply doesn't exist, +and nothing other than an obvious "X" delete button will delete a message). + diff --git a/demo/ermis-f/imap-protocol/cur/1600094973.22518.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094973.22518.mbox:2,S new file mode 100644 index 00000000..7f183a22 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094973.22518.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From gds at chartertn.net Tue Mar 5 11:46:44 2019 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Tue Mar 5 11:47:35 2019 +Subject: [Imap-protocol] gmail fails "tag uid fetch 123 + (BODY.PEEK[2.1.1])", most others OK +In-Reply-To: +References: + + +Message-ID: <36148fc1-25ba-b3bc-b34f-1da2a4bde55c@chartertn.net> + +On 3/5/19 1:55 PM, Brandon Long wrote: +> Also interesting if it can fetch the full message, since that again +> might require a lot of individual fetches to reassemble, which might +> time out if we don't handle that correctly. + +I don't see a problem when the whole message is fetched. That's the +default tb mode and the message is stored/cached to a disk file. + +> How big is the message that caching it on your end is bad? + +This message itself is just 350K. But if you configure the folder so +that the message is only cached to memory (not to a file) and not +showing attachments inline, then tb fetches attachment on demand when +clicked using the part number. + +> +> Anyways, I've forwarded to the new team.? Obviously it should work +> even if it's a lot of work on our side.? Is it a consistent one that +> doesn't work, or any of them? + +I haven't tested tb a lot with gmail using fetch by parts, mostly +Dovecot. I'll let you know if I see other problems. + +I hope I understand and answered your questions. Thanks. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094973.22526.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094973.22526.mbox:2,S new file mode 100644 index 00000000..f7c242a2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094973.22526.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Nov 30 03:56:24 2018 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Nov 30 03:56:52 2018 +Subject: [Imap-protocol] Unsolicited server responses +In-Reply-To: +References: + +Message-ID: <4d4d7b4f-5744-492f-8bac-1622e92ab59d@gulbrandsen.priv.no> + +>> Given that the server can unilaterally send updates to the +>> client, why was the IDLE extension useful/necessary? +> +> I'm no expert but I don't think I have seen an IMAP server that +> sends unsolicited EXISTS or EXPUNGE responses when not in IDLE +> mode. + +I've co-written one that sends a sends a very small number of responses and +then stops, which hasn't caused problems. I've heard that another server +sent an unlimited number of responses using blocking i/o, and that would +cause problems if the client wasn't listening. + +IIRC more servers send unsolicited responses occasionally, to keep NAT +middleboxes from discarding the connection. + +> "While the spec [RFC3501 I assume] actually does allow a server +> to push EXISTS responses asynchronously, a client can't expect +> this behavior and must poll." + +That's the key. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600094973.22529.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094973.22529.mbox:2,S new file mode 100644 index 00000000..bfb391b9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094973.22529.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From burrows.labs at gmail.com Wed Oct 17 17:17:57 2018 +To: imap-protocol@u.washington.edu +From: Aaron Burrow +Date: Wed Oct 17 17:18:30 2018 +Subject: [Imap-protocol] Unsolicited server responses +Message-ID: + +When can and should a server send data the client hasn?t requested? +RFC3501#2.2.2 says ?A client MUST be prepared to accept any server response +at all times. This includes server data that was not requested.? Looking at +the semantics of the server responses, only EXISTS, RECENT, EXPUNGE and +FETCH stipulate sending ?unrequested? data. + +Should this be interpreted, ?In theory the server can send whatever +responses whenever it wants. In practice, it just sends those four +piggybacked on command completion responses if there?s an unreported +mailbox update.? + +Given that the server can unilaterally send updates to the client, why was +the IDLE extension useful/necessary? + +Aaron +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094974.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094974.22507.mbox:2,S new file mode 100644 index 00000000..f14a89c1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094974.22507.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From tony at att.com Wed Sep 9 20:34:10 2020 +To: imap-protocol@u.washington.edu +From: "HANSEN, TONY L" +Date: Wed Sep 9 20:34:43 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: +References: + +Message-ID: <239E8611-FA90-49DF-BE34-416F60D2172B@att.com> + +I'll second what Dave says below. + +99% of the time I want move semantics. But then there IS that 1% where I truly do want to make a copy of a message into a second folder, and it had better be a copy and the original had better not get lost from wherever else it might happen to live. + + Tony + +?On 9/9/20, 10:46 PM, "Imap-protocol on behalf of Dave Warren" wrote: + + On 2020-09-09 01:27, Andris Reinman wrote: + > As the subject states, is there actually any valid use case these days + > for COPY to just copy messages instead of being a poor substitute for + > MOVE (that is COPY+EXPUNGE)? + + The use case is copying a message, rather than moving it. + + I admit many/most users just move messages and in fact some mail + interfaces don't have an easy copy button, some omit it completely. If + you control the interface and want to drop the copy button, I wouldn't + be thrilled but I could accept it. But I believe you're talking about + silently and unexpectedly deleting a user's email. + + I will sometimes copy a bunch of messages into a temporary folder for a + specific purpose. Perhaps they're related to something I am working on + but not part of a single thread (or selected parts of a much larger + thread), perhaps they're all requiring action/attention, maybe I'm going + to share that folder. But I *always* want the original content sorted in + the longterm place they live and I'll nuke that temporary folder once + I'm done with it. And admittedly this is not something I do especially + frequently either. + + If my messages were silently discarded from their original folder, I + would be both logging it as a defect and very quickly switching to a + email service that doesn't lose email unexpectedly. + + (Full disclosure: $DAYJOB has a product that only stores a single + instance of a message within a mailbox -- But there is no risk because + there is no copy action that fails silently, it simply doesn't exist, + and nothing other than an obvious "X" delete button will delete a message). + diff --git a/demo/ermis-f/imap-protocol/cur/1600094974.22518.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094974.22518.mbox:2,S new file mode 100644 index 00000000..74d04205 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094974.22518.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From gds at chartertn.net Tue Mar 5 12:36:10 2019 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Tue Mar 5 12:36:43 2019 +Subject: [Imap-protocol] gmail fails "tag uid fetch 123 + (BODY.PEEK[2.1.1])", most others OK +In-Reply-To: +References: + +Message-ID: + + + +On 3/5/19 12:14 PM, Brandon Long wrote: +> Is it a consistent one that doesn't +> work, or any of them? + +I wrote: +> Thunderbird accesses the body of an attachment like this (uid 123): +> tag uid fetch 123 (BODY.PEEK[2.33.1]) + +Maybe you are asking about the index? The index 1 to 107 produces the +error, i.e., + +tag uid fetch 123 (BODY.PEEK[2.1.1]) +tag uid fetch 123 (BODY.PEEK[2.2.1]) +: +tag uid fetch 123 (BODY.PEEK[2.107.1]) + +But the error only occur if the message indexed does not itself have +attachments. + +I noticed that when there is an attachement on the rfc822 message, the +index does work. Like in my example, these do work and return the body +and the attachments OK: + +tag uid fetch 123 (BODY.PEEK[2.66.1]) // body of 66th rfc822 attachment +tag uid fetch 123 (BODY.PEEK[2.66.2]) // 1st attachment on 66th +tag uid fetch 123 (BODY.PEEK[2.66.3]) // 2nd attachment on 66th +tag uid fetch 123 (BODY.PEEK[2.66.4]) // 3rd attachment on 66th + +Here's a real fetch of the 3rd rfc822 attachment that itself has no +attachments: +------------------------------------------------------------- +. uid fetch 370 (BODY.PEEK[2.3.1]) +. NO Some messages could not be FETCHed (Failure) +------------------------------------------------------------- + +Here's a fetch of the 66th rfc822 attachment that has 3 attachment that +are base64 encoded text files: + +------------------------------------------------------------- +. uid fetch 370 (BODY.PEEK[2.66.1]) +* 1 FETCH (UID 370 BODY[2.66.1] {99} + +I've attached gameserv.patch, gameserv.c and gameserv.c + +Comments please.......... + +--James +) +. OK Success +---------------------------------------------------------------- + +Fetch of 3rd attachment of index 66: + +. uid fetch 370 (BODY.PEEK[2.66.4]) +* 1 FETCH (UID 370 BODY[2.66.4] {3728} +SW5kZXg6IE1ha2VmaWxlLmluDQo9PT09PT09PT09PT09PT09PT09PT09PT09 +PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS +: +: +cnYsICpDaGFuU2VydiwgKk1lbW9TZXJ2LCAqSW5mb1NlcnYsICpHYW1lU2Vy +djsNCg==) +. OK Success +-------------------------------------------------------------- + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094975.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094975.22507.mbox:2,S new file mode 100644 index 00000000..26a44280 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094975.22507.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From brendan at kublai.com Wed Sep 9 23:08:46 2020 +To: imap-protocol@u.washington.edu +From: Brendan Cully +Date: Wed Sep 9 23:09:03 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: +References: +Message-ID: <20200910060846.GA32325@3c22fbbbbb47.ant.amazon.com> + +I also use COPY to COPY and would be upset if the messages in my +source folder disappeared withou my asking them to :) + +I think you'd be better off implementing https://tools.ietf.org/html/rfc6851 +even though it relies on clients to notice and use the implementation. + +On Wednesday, 09 September 2020 at 10:27, Andris Reinman wrote: +> Hi, +> +> As the subject states, is there actually any valid use case these days for +> COPY to just copy messages instead of being a poor substitute for MOVE +> (that is COPY+EXPUNGE)? +> +> If an IMAP server would mark COPYied messages with \Delete and +> expunge these immediately after a message has been copied, would it break +> any real-use expectations? +> +> Why I'm asking is that I'm building a database backed email server ( +> https://wildduck.email), we have a moderately sized cluster of emails +> (100k+ users, ~50TB+ of data, few hundred million emails) and when an IMAP +> client tries to copy all messages from one large folder to another then +> copying takes a lot of time (eg 'COPY 1:* target' where * is 10 000) as +> listing the database entries and copying these around takes time. And as +> there is no response until messages have been fully copied the client might +> think that TCP connection has been lost and retries the same action, ending +> up doing multiple COPY calls. +> +> So I was wondering if we could simply delete the already copied message +> from the source folder, as most probably the client would do it anyway once +> COPY is fully completed. Basically COPY would be an alias for MOVE. +> Obviously non-standard behavior but would we actually break something +> client side by doing this? +> +> Regards, +> Andris Reinman +> https://wildduck.email + +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600094975.22518.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094975.22518.mbox:2,S new file mode 100644 index 00000000..5bafde07 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094975.22518.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From gds at chartertn.net Sat Mar 30 11:10:21 2019 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Sat Mar 30 11:10:57 2019 +Subject: [Imap-protocol] CLIENTID capability for IMAP (and SMTP) +Message-ID: <8cade395-864a-9039-6bfa-874c26e5967e@chartertn.net> + +Thunderbird has recently received a patch to add a CLIENTID capability +which can be seen here: +https://bugzilla.mozilla.org/show_bug.cgi?id=1532388. + +This includes links to the draft RFCs for IMAP and SMTP. I have been +unable to find any other information on this feature. Is it supported or +plaanned to be supported on any other IMAP or SMTP server? + +-gene diff --git a/demo/ermis-f/imap-protocol/cur/1600094975.22532.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094975.22532.mbox:2,S new file mode 100644 index 00000000..8d57f46e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094975.22532.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From gds at chartertn.net Fri Sep 7 20:25:36 2018 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Sep 7 20:26:05 2018 +Subject: [Imap-protocol] QRESYNC capability in gmail +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + + + + <20430a7a-eeda-a60b-bf79-d55f1289f17a@chartertn.net> + +Message-ID: + +I have been researching the CONDSTORE feature in Thunderbird that is +currently disabled by default due to some unresolved bugs. Several bug +reports mention the QRESYNC extension to CONDSTORE as something that +would be helpful but is not supported in Thunderbird at all. One reason +listed is because gmail imap didn't support it and still doesn't the +last time I checked. Pending support for QRESYNC by gmail was last +mentioned several years ago on this list. Does anyone know the current +status of QRESYNC support in gmail imap, i.e., are there still plans to +support it and, if so, when? + +Thanks, +Gene Smith diff --git a/demo/ermis-f/imap-protocol/cur/1600094976.22507.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094976.22507.mbox:2,S new file mode 100644 index 00000000..1fcbaede --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094976.22507.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From andris.reinman at gmail.com Wed Sep 9 23:30:20 2020 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Wed Sep 9 23:31:04 2020 +Subject: [Imap-protocol] Any valid use case for COPY besides moving + messages? +In-Reply-To: <20200910060846.GA32325@3c22fbbbbb47.ant.amazon.com> +References: + <20200910060846.GA32325@3c22fbbbbb47.ant.amazon.com> +Message-ID: + +There is MOVE support but usage between COPY and MOVE is pretty even. For +example, I checked, and yesterday 3,500 distinct users issued 31,000 MOVE +commands and 3,300 distinct users issued 32,000 COPY commands, so it is +around 50%-50%. Users on the latest iOS Mail App use MOVE and users on +Outlook use COPY + UID STORE \Deleted. + +Kontakt Brendan Cully () kirjutas kuup?eval N, 10. +september 2020 kell 09:08: + +> I also use COPY to COPY and would be upset if the messages in my +> source folder disappeared withou my asking them to :) +> +> I think you'd be better off implementing +> https://tools.ietf.org/html/rfc6851 +> even though it relies on clients to notice and use the implementation. +> +> On Wednesday, 09 September 2020 at 10:27, Andris Reinman wrote: +> > Hi, +> > +> > As the subject states, is there actually any valid use case these days +> for +> > COPY to just copy messages instead of being a poor substitute for MOVE +> > (that is COPY+EXPUNGE)? +> > +> > If an IMAP server would mark COPYied messages with \Delete and +> > expunge these immediately after a message has been copied, would it break +> > any real-use expectations? +> > +> > Why I'm asking is that I'm building a database backed email server ( +> > https://wildduck.email), we have a moderately sized cluster of emails +> > (100k+ users, ~50TB+ of data, few hundred million emails) and when an +> IMAP +> > client tries to copy all messages from one large folder to another then +> > copying takes a lot of time (eg 'COPY 1:* target' where * is 10 000) as +> > listing the database entries and copying these around takes time. And as +> > there is no response until messages have been fully copied the client +> might +> > think that TCP connection has been lost and retries the same action, +> ending +> > up doing multiple COPY calls. +> > +> > So I was wondering if we could simply delete the already copied message +> > from the source folder, as most probably the client would do it anyway +> once +> > COPY is fully completed. Basically COPY would be an alias for MOVE. +> > Obviously non-standard behavior but would we actually break something +> > client side by doing this? +> > +> > Regards, +> > Andris Reinman +> > https://wildduck.email +> +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094976.22518.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094976.22518.mbox:2,S new file mode 100644 index 00000000..414e8c7d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094976.22518.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From blong at google.com Sun Mar 31 09:44:23 2019 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Sun Mar 31 09:44:40 2019 +Subject: [Imap-protocol] CLIENTID capability for IMAP (and SMTP) +In-Reply-To: <8cade395-864a-9039-6bfa-874c26e5967e@chartertn.net> +References: <8cade395-864a-9039-6bfa-874c26e5967e@chartertn.net> +Message-ID: + +Although I don't work on the Gmail imap anymore, I will say that we +implemented a competing idea (AUTH LOGIN-CLIENTTOKEN), though we eventually +decided to concentrate on OAUTHBEARER. OAUTH authorizes each client +separately, so provides the same client based benefits. + +If this became standard, we could implement it, but I haven't really seen +consensus on it yet, or adoption by a working group. When it matures, we +would need to look at how many 'legacy' auth users we have , and the +benefits to that population. + +Brandon + +On Sat, Mar 30, 2019, 11:11 AM Gene Smith wrote: + +> Thunderbird has recently received a patch to add a CLIENTID capability +> which can be seen here: +> https://bugzilla.mozilla.org/show_bug.cgi?id=1532388. +> +> This includes links to the draft RFCs for IMAP and SMTP. I have been +> unable to find any other information on this feature. Is it supported or +> plaanned to be supported on any other IMAP or SMTP server? +> +> -gene +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094976.22532.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094976.22532.mbox:2,S new file mode 100644 index 00000000..f5e85622 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094976.22532.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From blong at google.com Sat Sep 8 07:10:55 2018 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Sat Sep 8 07:11:37 2018 +Subject: [Imap-protocol] QRESYNC capability in gmail +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + + + + <20430a7a-eeda-a60b-bf79-d55f1289f17a@chartertn.net> + + +Message-ID: + +I don't think there are any plans to support qresync on Gmail at this time. + +Brandon + +On Fri, Sep 7, 2018, 8:26 PM Gene Smith wrote: + +> I have been researching the CONDSTORE feature in Thunderbird that is +> currently disabled by default due to some unresolved bugs. Several bug +> reports mention the QRESYNC extension to CONDSTORE as something that +> would be helpful but is not supported in Thunderbird at all. One reason +> listed is because gmail imap didn't support it and still doesn't the +> last time I checked. Pending support for QRESYNC by gmail was last +> mentioned several years ago on this list. Does anyone know the current +> status of QRESYNC support in gmail imap, i.e., are there still plans to +> support it and, if so, when? +> +> Thanks, +> Gene Smith +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094976.22535.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094976.22535.mbox:2,S new file mode 100644 index 00000000..388b682d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094976.22535.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From andris.reinman at gmail.com Fri Dec 29 18:15:14 2017 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Deleting selected mailbox +Message-ID: + +Hi, + +I'm wondering that if a client issues a DELETE against the mailbox that is +currently SELECTed then what should be the correct way to handle this. In +most cases it seems that servers respond with untagged BYE. Would it be +correct to send the BYE before tagged response for DELETE or not? + +I have a race condition in WildDuck IMAP server where sometimes the +notification about deleted folder gets processed before tagged response is +sent to the client, so while in most cases this happens: + +C: A SELECT FOLDER +S: (mailbox info) +S: A OK [READ-WRITE] SELECT completed +C: A DELETE FOLDER +C: A OK DELETE completed +C: * BYE Selected mailbox was deleted, have to disconnect +(connection is closed by server) + +Then sometimes it is like this (no response for DELETE): + +C: A SELECT FOLDER +S: (mailbox info) +S: A OK [READ-WRITE] SELECT completed +C: A DELETE FOLDER +C: * BYE Selected mailbox was deleted, have to disconnect +(connection is closed by server) + +Is the latter a violation of IMAP RFCs? I mean that once the client +reconnects the folder is not there anymore anyway? + +Regards, +Andris Reinman +https://github.com/nodemailer/wildduck#wild-duck-mail-server +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094977.22532.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094977.22532.mbox:2,S new file mode 100644 index 00000000..bae2eb82 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094977.22532.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From forest37 at foxmail.com Sun Sep 9 20:32:48 2018 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?B?Zm9yZXN0?= +Date: Sun Sep 9 20:33:17 2018 +Subject: [Imap-protocol] when will occur BadServerResponseException +Message-ID: + +hello everyone, +when I connect to the server, I get the exception BadServerResponseException +I don't know how to proceed. + + +------------------ +Best regards +Senlin +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094977.22535.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094977.22535.mbox:2,S new file mode 100644 index 00000000..a75c8a76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094977.22535.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Dec 30 01:04:46 2017 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Deleting selected mailbox +References: +Message-ID: + +I at lest do not know any reason why that would not be permitted. An +untagged BYE is legal at any time, and they means any time. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600094977.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094977.22538.mbox:2,S new file mode 100644 index 00000000..fab8f911 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094977.22538.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From gds at chartertn.net Sun Oct 8 13:58:53 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +Message-ID: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + +Copy a message with UID 1267 from Inbox to Mbox and deleted it in Inbox. +With Inbox selected: + +C: aaa UID COPY 1267 "Mbox" +S: aaa OK [COPYUID 123456789 1267 1007] UID COPY completed +C: bbb UID store 1267 +Flags (\Deleted) +: + +This works fine and message appears gone from Inbox and is now visible +in Mbox at UID 1007. Now with Mbox selected, attempt to copy the message +UID 1007 back to Inbox: + +C: ccc UID COPY 1007 "Inbox" +S: ccc OK [COPYUID 987654321 1007 1267] UID COPY completed +C: ddd UID store 1007 +Flags (\Deleted) +: + +This occurs with no error and the message appears gone from Mbox. +However, it does not appear in Inbox. The problem is that the server +doesn't use the UIDNEXT of Inbox, which is 1270. Instead it reuses and +copies to the UID that the message originally had in Inbox, 1267. Also, +the \deleted flag on 1267 remains set and does not get cleared after the +copy, causing the message to remain not visible in Inbox. + +Does this seem like acceptable imap server behavior? + +Note: If Inbox is expunged before the message is copied back, the server +copies to Inbox's UIDNEXT (1270) and the the message appears correctly +in Inbox with \delete flag cleared. + +Thanks, + +-gene + + + + + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094978.22532.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094978.22532.mbox:2,S new file mode 100644 index 00000000..4c0c7d96 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094978.22532.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Sep 10 09:18:40 2018 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Mon Sep 10 09:47:32 2018 +Subject: [Imap-protocol] when will occur BadServerResponseException +In-Reply-To: +References: +Message-ID: <1bcd1914-3b35-4eeb-8d5d-f6e16b62d861@gulbrandsen.priv.no> + +That exception occurs when S22imap connects to something that is not an +IMAP server. + +Arnt diff --git a/demo/ermis-f/imap-protocol/cur/1600094978.22535.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094978.22535.mbox:2,S new file mode 100644 index 00000000..102b4bd9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094978.22535.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From andris.reinman at gmail.com Sat Dec 30 12:16:25 2017 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Deleting selected mailbox +In-Reply-To: +References: + +Message-ID: + +Thanks, that's something I was assuming as well. The only problem I could +think of would be clients that keep multiple connections for the same user +account open. One connection tries to delete a mailbox, gets BYE and +disconnects. The other one sees that DELETE was not properly answered and +thus assumes that the mailbox is still there. Though I'd guess that clients +that are able to keep multiple connections open are smart enough to not +delete mailboxes that are currently selected. + +Regards, +Andris + +2017-12-30 11:04 GMT+02:00 Arnt Gulbrandsen : + +> I at lest do not know any reason why that would not be permitted. An +> untagged BYE is legal at any time, and they means any time. +> +> Arnt +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094978.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094978.22538.mbox:2,S new file mode 100644 index 00000000..04f1bba5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094978.22538.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From tjs at psaux.com Sun Oct 8 14:43:59 2017 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> +Message-ID: + +On Sun, Oct 8, 2017 at 1:58 PM, Gene Smith wrote: + +> Copy a message with UID 1267 from Inbox to Mbox and deleted it in Inbox. +> With Inbox selected: +> +> C: aaa UID COPY 1267 "Mbox" +> S: aaa OK [COPYUID 123456789 1267 1007] UID COPY completed +> C: bbb UID store 1267 +Flags (\Deleted) +> + + +> C: ccc UID COPY 1007 "Inbox" +> S: ccc OK [COPYUID 987654321 1007 1267] UID COPY completed +> C: ddd UID store 1007 +Flags (\Deleted) +> + + +> Does this seem like acceptable imap server behavior? +> + +No, this is a violation. Both messages have UID 1267, and if there is no +intervening EXPUNGE, the first message still exists when the second one +overwrites it. Neither behavior is remotely permissible. + +Tim +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094978.22541.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094978.22541.mbox:2,S new file mode 100644 index 00000000..39291b77 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094978.22541.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From gds at chartertn.net Wed Jul 12 16:14:21 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] LSUB server bug or not a bug? +Message-ID: + +I see this when I send client command LIST with telnet: + +3 list "" "/*" +* LIST () "/" "/SUSPECTED SPAM" +3 OK LIST completed + +When I do LSUB with the same parameters I see this: + +3 lsub "" "/*" +* LSUB () "/" "Trash" +* LSUB () "/" "Inbox" +* LSUB () "/" "&BCcENQRABD0EPgQyBDgEOgQ4-" +* LSUB () "/" "&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-" +* LSUB () "/" "/SUSPECTED SPAM" +* LSUB () "/" "Junk E-Mail" +* LSUB () "/" "Junk" +* LSUB () "/" "&BCMENAQwBDsENQQ9BD0ESwQ1-ZZZ" +* LSUB () "/" "SUSPECTED HAM" +* LSUB () "/" "INBOX/Testing" +* LSUB () "/" "gds" +* LSUB () "/" "gds/eds" +* LSUB () "/" "gds/sdg" +3 OK LSUB completed + +I expected to see only /SUSPECTED SPAM in the lsub response just like +list returns instead of all the mailboxes. + +However, if I do this: + +3 OK LIST completed +3 lsub "" "//*" +* LSUB () "/" "/SUSPECTED SPAM" +3 OK LSUB completed + +I see only the /SUSPECTED SPAM now. + +Why are two slashes required for lsub but not for list? + +The "/SUSPECTED SPAM" mailbox, I am told, is configured as a public +folder in the MDaemon IMAP server. I don't have direct access to the +server and don't know why the name starts with a slash. + +Additional info: The namespace command reports as follows: + +3 namespace +* NAMESPACE (("" "/")) NIL (("/" "/")) +3 OK NAMESPACE completed + +Note also that the unreadable mailbox names are Russian encodings. + +Thanks, +-gene + + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094979.22535.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094979.22535.mbox:2,S new file mode 100644 index 00000000..fcfc866a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094979.22535.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tjs at psaux.com Sun Dec 31 10:46:57 2017 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Deleting selected mailbox +In-Reply-To: +References: + + +Message-ID: + +On Sat, Dec 30, 2017 at 12:16 PM, Andris Reinman +wrote: + +> Thanks, that's something I was assuming as well. The only problem I could +> think of would be clients that keep multiple connections for the same user +> account open. One connection tries to delete a mailbox, gets BYE and +> disconnects. The other one sees that DELETE was not properly answered and +> thus assumes that the mailbox is still there. Though I'd guess that clients +> that are able to keep multiple connections open are smart enough to not +> delete mailboxes that are currently selected. +> + +Clients can't make this assumption. There is no reason to believe that only +one type of clients are accessing a mailbox, and the other type clients +have no responsibility (or ability) to "play nice". + +I believe RFC 2180 discusses this in some detail. The document is pretty +old now, but was a topic of some discussion a few years back. I think that +it's very difficult to be really "smart" in any of these scenarios, and +probably the best practice is to keep it simple. I have seen a lot of +interesting interpretations from clients, but this one seems like the one +most likely to cause least confusion. + +Tim +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094979.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094979.22538.mbox:2,S new file mode 100644 index 00000000..f99e673f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094979.22538.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From gds at chartertn.net Sun Oct 8 15:26:59 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + +Message-ID: + +On 10/8/17 5:43 PM, Tim Showalter wrote: +> On Sun, Oct 8, 2017 at 1:58 PM, Gene Smith > wrote: +> +> Copy a message with UID 1267 from Inbox to Mbox and deleted it in +> Inbox. With Inbox selected: +> +> C: aaa UID COPY 1267 "Mbox" +> S: aaa OK [COPYUID 123456789 1267 1007] UID COPY completed +> C: bbb UID store 1267 +Flags (\Deleted) +> +> C: ccc UID COPY 1007 "Inbox" +> S: ccc OK [COPYUID 987654321 1007 1267] UID COPY completed +> C: ddd UID store 1007 +Flags (\Deleted) +> +> Does this seem like acceptable imap server behavior? +> +> +> No, this is a violation. Both messages have UID 1267, and if there is no +> intervening EXPUNGE, the first message still exists when the second one +> overwrites it. Neither behavior is remotely permissible. +> +> Tim +> + +I think the server is thinking, "its the same message I am copying back +to Inbox (how does it knows? Same Message-ID or maybe checksum?) so I +don't have to do anything." If the server had at least reset the +\deleted flag on message at UID 1267 in Inbox I think it would be OK. +The rfc says COPY must preserve the flags. It also says messages added +to a mailbox must have UID >= UIDNEXT. But if the server is copying in a +message that is already present but just flagged as \deleted, maybe RFC +doesn't say you can't COPYUID to the original UID which is < UIDNEXT? +But I think the server should reset \deleted at the destination. + +FYI, the server is a product called "openwave" used by a fairly large +ISP (charter/spectrum). + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094979.22541.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094979.22541.mbox:2,S new file mode 100644 index 00000000..48272634 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094979.22541.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From gds at chartertn.net Fri Jul 14 17:17:25 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] LSUB server bug or not a bug? +In-Reply-To: +References: +Message-ID: <40bbab51-5f5a-324b-329c-6bf7c3eb4702@chartertn.net> + +Maybe an easier question would be what is the correct ways to send a +LIST and LSUB when the reference is empty string, the prefix is / and +the hierarchy separator is also / ? + +-gene + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094979.22544.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094979.22544.mbox:2,S new file mode 100644 index 00000000..d45d4d7c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094979.22544.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From jjmckay at comaxis.com Fri May 12 12:14:14 2017 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Authenticating with iCloud +Message-ID: + +Does the server imap.mail.me.com not support a standard IMAP logon with +a user id and password? I use port 993, +just a simple login command: LOGIN "username@icloud.com" "password" +but get back "Authentication failed". My customer claims the user name +and password are valid. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094980.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094980.22538.mbox:2,S new file mode 100644 index 00000000..5e9f25a9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094980.22538.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From tjs at psaux.com Sun Oct 8 18:40:26 2017 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + +Message-ID: + +On Sun, Oct 8, 2017 at 3:26 PM, Gene Smith wrote: +> +> C: aaa UID COPY 1267 "Mbox" +>> S: aaa OK [COPYUID 123456789 1267 1007] UID COPY completed +>> C: bbb UID store 1267 +Flags (\Deleted) +>> +>> C: ccc UID COPY 1007 "Inbox" +>> S: ccc OK [COPYUID 987654321 1007 1267] UID COPY completed +>> C: ddd UID store 1007 +Flags (\Deleted) +> +> +I think the server is thinking, "its the same message I am copying back to +> Inbox (how does it knows? Same Message-ID or maybe checksum?) so I don't +> have to do anything." If the server had at least reset the \deleted flag on +> message at UID 1267 in Inbox I think it would be OK. The rfc says COPY must +> preserve the flags. It also says messages added to a mailbox must have UID +> >= UIDNEXT. But if the server is copying in a message that is already +> present but just flagged as \deleted, maybe RFC doesn't say you can't +> COPYUID to the original UID which is < UIDNEXT? But I think the server +> should reset \deleted at the destination. +> + +Recovering a used UID is never permitted*. If there is no EXPUNGE, there +should be two copies of the message in Inbox in this example. (Setting +\Deleted is reversible.) + +The design of the specification is concerned with what happens when a +separate client connects before and after this exchange. Because UIDNEXT +has not been used correctly, clients that have cached state wouldn't see +changes to the mailbox correctly. + +I guess the server might have an optimization (aka hack) for this, but it +doesn't appear to be properly protocol compliant. + +* unless the UIDVALIDITY is reset, which trashes everyone's caches anyway. + +Tim +? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094980.22544.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094980.22544.mbox:2,S new file mode 100644 index 00000000..b654356d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094980.22544.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From davew at hireahit.com Fri May 12 12:26:02 2017 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Authenticating with iCloud +In-Reply-To: +References: +Message-ID: <1494617162.302895.974862968.74D8B3D4@webmail.messagingengine.com> + +Two-factor authentication, perhaps requiring an App Specific password? + +On Fri, May 12, 2017, at 12:14, Jeff McKay wrote: +> Does the server imap.mail.me.com not support a standard IMAP logon with +> a user id and password? I use port 993, +> just a simple login command: LOGIN "username@icloud.com" "password" +> but get back "Authentication failed". My customer claims the user name +> and password are valid. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094981.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094981.22538.mbox:2,S new file mode 100644 index 00000000..31d8b0ac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094981.22538.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From gds at chartertn.net Sun Oct 8 19:51:43 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + +Message-ID: <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + +On 10/8/17 9:40 PM, Tim Showalter wrote: +> On Sun, Oct 8, 2017 at 3:26 PM, Gene Smith >?wrote: +> + +Tim, +Thanks for your help. + +> Recovering a used UID is never permitted*.?If there is no EXPUNGE, there +> should be two copies of the message in Inbox in this example. (Setting +> \Deleted is reversible.) + +Yes, for other IMAP servers I have tested, if I copy message "A" 10 +times into Inbox I see 10 identical copies of message A in Inbox. For +this openwave server, I see only 1 (and uid fetch 1:* (FLAGS) shows only 1). + +> +> The design of the specification is concerned with what happens when a +> separate client connects before and after this exchange. Because UIDNEXT +> has not been used correctly, clients that have cached state wouldn't see +> changes to the mailbox correctly. + +If the server would clear the \deleted flag at the destination uid and +did no actual copy in response to this uid copy it would produce an +acceptable result (message visible in client again). This would be no +different than changing flags with uid store it would seem (e.g., what +happen when a deleted message is undeleted with crtl-z in client). Not +sure how other/separate clients would be confused by this. + +> +> I guess the server might have an optimization (aka hack) for this, but +> it doesn't appear to be properly protocol compliant. + +So in summary, you are saying that the server should always use the +UIDNEXT or greater when messages are copied to a mbox, even if the +server determines there is an identical message at a lower UID. To do +otherwise violates rfc 3501. + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094981.22544.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094981.22544.mbox:2,S new file mode 100644 index 00000000..4ed60a3e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094981.22544.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From kmansoft at gmail.com Fri May 12 12:55:26 2017 +To: imap-protocol@u.washington.edu +From: Kostya Vasilyev +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Authenticating with iCloud +In-Reply-To: <1494617162.302895.974862968.74D8B3D4@webmail.messagingengine.com> +References: + <1494617162.302895.974862968.74D8B3D4@webmail.messagingengine.com> +Message-ID: + +Another potential reason: + +The @mac.com / @me.com IMAP servers advertise SASL PLAIN but it +doesn't actually work with a full email address (user@mac.com or +user@me.com), only works with "user". + +So two possible workarounds: + +- Do not use SASL PLAIN for imap.mail.me.com / mac.com + +- Or strip the domain part from the login + +PS - at least the above was the case 2-3 years ago when we ran into +this with our email app and had to add a workaround. + +-- K + +2017-05-12 22:26 GMT+03:00 Dave Warren : +> Two-factor authentication, perhaps requiring an App Specific password? +> +> On Fri, May 12, 2017, at 12:14, Jeff McKay wrote: +>> Does the server imap.mail.me.com not support a standard IMAP logon with +>> a user id and password? I use port 993, +>> just a simple login command: LOGIN "username@icloud.com" "password" +>> but get back "Authentication failed". My customer claims the user name +>> and password are valid. +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600094981.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094981.22548.mbox:2,S new file mode 100644 index 00000000..2aa0ea3c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094981.22548.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From jjmckay at comaxis.com Tue Mar 7 16:44:12 2017 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior of Dwarf IMAP +Message-ID: + +I am dealing with a customer's IMAP server, which identifies itself as +Dwarf 2.0.0 (part of Gnome I guess) that seems to be acting +strangely. My code sends this command: + + A746 FETCH 1 (FLAGS UID INTERNALDATE BODY.PEEK[]) + +I expect to get back a single message, however after the last line of +the first message, I then get the line: + +* 2 FETCH (FLAGS (\Seen) UID 2290456508 INTERNALDATE "20-Jan-2017 +07:55:29 -0500" BODY[] {76009} + +and on and on... In other words it just keeps blasting messages at me, +beyond the single message I asked for. I've never seen this +behavior before with any other server. At first I thought it was some +screw up in my lower level tcp code, but I am quite certain that +I never sent out a FETCH 2 command, so how could I be getting message 2, +3, etc.? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094982.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094982.22538.mbox:2,S new file mode 100644 index 00000000..cbbf4ee9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094982.22538.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Oct 9 07:39:18 2017 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> +Message-ID: + +Gene Smith writes: +> Yes, for other IMAP servers I have tested, if I copy message +> "A" 10 times into Inbox I see 10 identical copies of message A +> in Inbox. For this openwave server, I see only 1 (and uid fetch +> 1:* (FLAGS) shows only 1). + +Have you tested with gmail? + +The server doesn't seem to reuse a UID, if I understand you correctly. The +message has a UID before the COPY command and nothing changes. The UID is +in continuous use for a particular message, so there's no reuse going on, +and the ban on reuse does not apply. + +Can you find out whether flags apply to the message or to references? Ie. +if you copy a message into two mailboxes and set flag "foobar" on the +message in one mailbox, does the flag appear on the message in the other +mailbox? + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094982.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094982.22548.mbox:2,S new file mode 100644 index 00000000..a4b67279 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094982.22548.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From jguthrie at brokersys.com Wed Mar 8 08:30:57 2017 +To: imap-protocol@u.washington.edu +From: Jonathan Guthrie +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior of Dwarf IMAP +In-Reply-To: +References: +Message-ID: <7e831cbb-da19-6e45-5990-1c8a641bb00c@brokersys.com> + +It doesn't appear to be part of Gnome, that is it doesn't appear to be +part of the Gnome desktop environment, but rather a commercial Slovakian +enterprise called "Gnome ltd". It also appears that the latest version +is 5 years old, with no known defects or similar in their documentation +page. + +With that said, it looks like an error to me. You can't get the source +code without jumping through hoops, so I can't look at it to see what +it's doing. At least, I'm not willing to jump through the hoops. + +On 3/7/2017 6:44 PM, Jeff McKay wrote: +> I am dealing with a customer's IMAP server, which identifies itself as +> Dwarf 2.0.0 (part of Gnome I guess) that seems to be acting +> strangely. My code sends this command: +> +> A746 FETCH 1 (FLAGS UID INTERNALDATE BODY.PEEK[]) +> +> I expect to get back a single message, however after the last line of +> the first message, I then get the line: +> +> * 2 FETCH (FLAGS (\Seen) UID 2290456508 INTERNALDATE "20-Jan-2017 +> 07:55:29 -0500" BODY[] {76009} +> +> and on and on... In other words it just keeps blasting messages at +> me, beyond the single message I asked for. I've never seen this +> behavior before with any other server. At first I thought it was some +> screw up in my lower level tcp code, but I am quite certain that +> I never sent out a FETCH 2 command, so how could I be getting message +> 2, 3, etc.? +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094982.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094982.22553.mbox:2,S new file mode 100644 index 00000000..de4f62e1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094982.22553.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From gds at chartertn.net Sat Feb 18 13:51:55 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new mail? +Message-ID: + +I have been seeing a problem with mozilla Thunderbird client when using +the charter.net imap server. When thunderbird checks for new messages it +just does a FETCH since the inbox was already SELECTed at startup. It +does not detect new messages unless another mailbox is SELECTed and +inbox is re-SELECTED and then FETCHed. I think thunderbird is following +the IMAP spec but charter.net server is not since it requires a +re-SELECT on and already selected mailbox to signal new email. Am I right? + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094983.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094983.22538.mbox:2,S new file mode 100644 index 00000000..fd070d4a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094983.22538.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From gds at chartertn.net Mon Oct 9 13:41:24 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + +Message-ID: <5dff705c-130c-ac73-fae4-b5ba1b9b0cc2@chartertn.net> + +On 10/9/17 10:39 AM, Arnt Gulbrandsen wrote: +> Gene Smith writes: +>> Yes, for other IMAP servers I have tested, if I copy message "A" 10 +>> times into Inbox I see 10 identical copies of message A in Inbox. For +>> this openwave server, I see only 1 (and uid fetch 1:* (FLAGS) shows +>> only 1). +> +> Have you tested with gmail? + +Just tried gmail and and if I copy a message multiple times there +remains only one copy of the message in the destination folder. I +haven't looked at the imap transactions to to see what is actually +happening. + +With imap.outlook.com it does allow multiple duplicate messages to be +copied in so I assume it is assigning new and higher UID to each duplicate. + +imap.yahoo seems different. When I copy in a duplicate, at the +destination folder that message seems to disappear in my client for +about 1/2 second or so and then come back. I did look at the imap +transaction for yahoo to see what is happening. Yahoo is assigning a new +and higher UID each time the duplicate message is copied to a +destination but it seems to be silently expunging the previous UID for +the message. I see nothing being "stored", such as \deleted, to the +message's previous UID and I see no expunge responses. As multiple +duplicate copies occur, the gap between the highest UID and the next to +highest UID grows (based on uid fetch 1, *). + +Zimbra and mDaemon allow multiple duplicates to be copied in like +outlook. Haven't looked at transaction details. + +> +> The server doesn't seem to reuse a UID, if I understand you correctly. +> The message has a UID before the COPY command and nothing changes. The +> UID is in continuous use for a particular message, so there's no reuse +> going on, and the ban on reuse does not apply. + +Yes, in the mbox where the message was deleted, its UID is still present +but with the \deleted flag set. The same message but with a different +UID is in Trash. When I try to copy it back to the original mbox from +Trash, the server indicates that it is copying it to the original UID +(not >= UIDNEXT). The main problem I see is that this copy doesn't clear +the \deleted flag for the UID in the original folder so the message +remain invisible in the client. + +> +> Can you find out whether flags apply to the message or to references? +> Ie. if you copy a message into two mailboxes and set flag "foobar" on +> the message in one mailbox, does the flag appear on the message in the +> other mailbox? + +Actually, this is what happens when I delete a message from openwave +server. In the original folder the message's UID gets marked with +\deleted flag and the message is not expunged. In the Trash folder where +the client copies it on delete, the \deleted flag is *not* set. So the +exact same message resides in two folders with differing flags. + +As an additional test on openwave, I copied a message from Inbox to two +different folders. In one folder I set several attributes (Important, +Starred, Junk, Unread). In the other folder these flags don't appear for +the exact same message. I then copied the this highly-flagged message +back to Inbox attempting to overwrite the original. These attributes did +not appear in the original message in Inbox. + +> +> Arnt +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094983.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094983.22548.mbox:2,S new file mode 100644 index 00000000..2899bad3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094983.22548.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From gilles.lamiral at laposte.net Wed Mar 8 11:01:21 2017 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail - OAUTH2 - failures since Feb 23 +In-Reply-To: +References: + + +Message-ID: <5a39008c-b64b-5a0e-bffb-1163d76aa6cc@laposte.net> + +Hi all, + +Isn't it the last Apache patch that now disallow "broken" (not strict RFC7230 compliant) +http clients that still use \n instead of \r\n as end of lines? + +Using only \n now generates an Apache (2.2) 400 HTTP error, it looks like some +sort of error code mapping with what described Kostya Vasilyev: +"using this token to log into Gmail would get "status code 400, +bad request" from Gmail's IMAP and SMTP servers." + +I saw this happening in Debian last apache 2.2 patch: +https://tracker.debian.org/news/839792 +* Security: CVE-2016-8743: + Enforce HTTP request grammar corresponding to RFC7230 for request lines + and request headers, to prevent response splitting and cache pollution by + malicious clients or downstream proxies. +* The stricter HTTP enforcement may cause compatibility problems with + non-conforming clients. Fine-tuning is possible with the new + HttpProtocolOptions directive. + +It's not strictly imap related but it shows again that http is almost everywhere now. + +Le 24/02/2017 ? 17:55, Brandon Long a ?crit : +> https://twitter.com/Google/status/834993667911737345 +> +> We had some issues with account login yesterday for oauth, it should all be resolved now. +> + +-- +Au revoir, +Gilles Lamiral. France, Baulon (35580) +mob 06 19 22 03 54 +tel 09 51 84 42 42 + diff --git a/demo/ermis-f/imap-protocol/cur/1600094983.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094983.22553.mbox:2,S new file mode 100644 index 00000000..c4eb12b9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094983.22553.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From blong at google.com Sat Feb 18 14:00:05 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: +References: +Message-ID: + +Didn't the old UW IMAP server act that way with certain mailbox formats? +It locked the mailbox and it couldn't receive new mail. + +In any case, I don't think the spec precludes implementing it that way, but +it's certainly not the normal implemention. + +Brandon + +On Feb 18, 2017 1:52 PM, "Gene Smith" wrote: + +> I have been seeing a problem with mozilla Thunderbird client when using +> the charter.net imap server. When thunderbird checks for new messages it +> just does a FETCH since the inbox was already SELECTed at startup. It does +> not detect new messages unless another mailbox is SELECTed and inbox is +> re-SELECTED and then FETCHed. I think thunderbird is following the IMAP +> spec but charter.net server is not since it requires a re-SELECT on and +> already selected mailbox to signal new email. Am I right? +> +> -gene +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094983.22563.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094983.22563.mbox:2,S new file mode 100644 index 00000000..19fca24c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094983.22563.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From comicpilsen at gmail.com Wed Dec 28 04:36:42 2016 +To: imap-protocol@u.washington.edu +From: comicpilsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] is IMAP still the protocol to use to read emails??? +Message-ID: <7b8b6e00-3396-2c08-f58e-290d619214ea@gmail.com> + +I am a little confused. I code in Python ( 3.5.1) and I am "trying" to read the body of +messages from a gmail account. The issue is that I see a lot of POP3 activity on stack +exchange and google but very little for IMAP. So is IMAP dead? If so what should I be +looking at? + +All I want to do is read in my email body and do something with it. I really am having +issues like the one below. + +Using python 3.5.1 and its throwing this trace + +|TypeError:initial_value must be str orNone,notbytes| + +on the line + +|text_msg =email.message_from_string(data[0][1])| + +I know the text of the message is stashed in data[0][1] but can't seem to find the correct +code to convert from bytes to string for the RFC822 in python 3.5.1 what is the line +please? here is the code I found to read my IMAP box which works well for getting the +messages, formatting the date and showing the subject. + +|rv,data =M.fetch(num,'(RFC822)')ifrv !='OK':print("ERROR getting message",num)returnmsg +=email.message_from_bytes(data[0][1])text_msg +=email.message_from_string(data[0][1])hdr=mail.header.make_header(email.header.decode_header(msg['Subject']))subject +=str(hdr)print('Message %s: %s'%(num,subject))print("text = ",text_msg)| + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094984.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094984.22538.mbox:2,S new file mode 100644 index 00000000..1720bf8e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094984.22538.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From davew at hireahit.com Mon Oct 9 14:32:32 2017 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: <5dff705c-130c-ac73-fae4-b5ba1b9b0cc2@chartertn.net> +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + <5dff705c-130c-ac73-fae4-b5ba1b9b0cc2@chartertn.net> +Message-ID: <1611d170-ea34-1adf-8cd6-090e571cf12c@hireahit.com> + +On 2017-10-09 14:41, Gene Smith wrote: +> Yes, in the mbox where the message was deleted, its UID is still present +> but with the \deleted flag set. The same message but with a different +> UID is in Trash. When I try to copy it back to the original mbox from +> Trash, the server indicates that it is copying it to the original UID +> (not >= UIDNEXT). The main problem I see is that this copy doesn't clear +> the \deleted flag for the UID in the original folder so the message +> remain invisible in the client. + +I think it might reduce confusion if we stop saying "Message was +deleted". "Deleted" doesn't have a clear definition in this context +because it isn't really a thing in IMAP (although it is how IMAP clients +present multiple different behaviours to users). At the protocol level, +you can set the \Deleted flag or you can EXPUNGE. + +Since a \Deleted flag can be trivially removed, there is no "reuse" of a +UID, the UID was still being reused and the COPY was just returning an +accurate (if unusual) result. Expunging and then reusing the UID +(assuming an unchanged UIDVALIDITY) would be a very significant problem +with regards to clients maintaining the validity of their caches, but +simply changing a flag is perfectly valid. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094984.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094984.22548.mbox:2,S new file mode 100644 index 00000000..dae42202 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094984.22548.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From blong at google.com Wed Mar 8 11:07:13 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior of Dwarf IMAP +In-Reply-To: <7e831cbb-da19-6e45-5990-1c8a641bb00c@brokersys.com> +References: + <7e831cbb-da19-6e45-5990-1c8a641bb00c@brokersys.com> +Message-ID: + +Is technically in spec, as in they can send as many untagged fetch +responses as they want. + +Probably not what they intended or anyone wants, though. + +Brandon + +On Mar 8, 2017 8:31 AM, "Jonathan Guthrie" wrote: + +> It doesn't appear to be part of Gnome, that is it doesn't appear to be +> part of the Gnome desktop environment, but rather a commercial Slovakian +> enterprise called "Gnome ltd". It also appears that the latest version is +> 5 years old, with no known defects or similar in their documentation page. +> +> With that said, it looks like an error to me. You can't get the source +> code without jumping through hoops, so I can't look at it to see what it's +> doing. At least, I'm not willing to jump through the hoops. +> +> On 3/7/2017 6:44 PM, Jeff McKay wrote: +> +>> I am dealing with a customer's IMAP server, which identifies itself as +>> Dwarf 2.0.0 (part of Gnome I guess) that seems to be acting +>> strangely. My code sends this command: +>> +>> A746 FETCH 1 (FLAGS UID INTERNALDATE BODY.PEEK[]) +>> +>> I expect to get back a single message, however after the last line of the +>> first message, I then get the line: +>> +>> * 2 FETCH (FLAGS (\Seen) UID 2290456508 INTERNALDATE "20-Jan-2017 +>> 07:55:29 -0500" BODY[] {76009} +>> +>> and on and on... In other words it just keeps blasting messages at me, +>> beyond the single message I asked for. I've never seen this +>> behavior before with any other server. At first I thought it was some +>> screw up in my lower level tcp code, but I am quite certain that +>> I never sent out a FETCH 2 command, so how could I be getting message 2, +>> 3, etc.? +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094984.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094984.22553.mbox:2,S new file mode 100644 index 00000000..1a9e90da --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094984.22553.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From gds at chartertn.net Sat Feb 18 14:29:04 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: +References: + +Message-ID: <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> + +The charter IMAP server is openwave according the login response. So are +you saying it is OK for the IMAP server to require a new SELECT before +doing a FETCH on an already selected mailbox for the FETCH response to +indicate new email? If so, this is a bug in thunderbird. + +I have noticed that at least one client (kmail) always does SELECT and +FETCH when checking for new mail (even when inbox is already selected). +However, thunderbird and claws-mail only do a FETCH and don't re-do the +SELECT and, therefore, don't detect new mail unless another folder is +looked at first and then inbox is returned to. + +-gene + +On 02/18/2017 05:00 PM, Brandon Long wrote: +> Didn't the old UW IMAP server act that way with certain mailbox +> formats? It locked the mailbox and it couldn't receive new mail. +> +> In any case, I don't think the spec precludes implementing it that +> way, but it's certainly not the normal implemention. +> +> Brandon +> +> On Feb 18, 2017 1:52 PM, "Gene Smith" > wrote: +> +> I have been seeing a problem with mozilla Thunderbird client when +> using the charter.net imap server. When +> thunderbird checks for new messages it just does a FETCH since the +> inbox was already SELECTed at startup. It does not detect new +> messages unless another mailbox is SELECTed and inbox is +> re-SELECTED and then FETCHed. I think thunderbird is following the +> IMAP spec but charter.net server is not since +> it requires a re-SELECT on and already selected mailbox to signal +> new email. Am I right? +> +> -gene +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094984.22563.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094984.22563.mbox:2,S new file mode 100644 index 00000000..be0baf55 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094984.22563.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From blong at google.com Wed Dec 28 08:02:07 2016 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] is IMAP still the protocol to use to read + emails??? +In-Reply-To: <7b8b6e00-3396-2c08-f58e-290d619214ea@gmail.com> +References: <7b8b6e00-3396-2c08-f58e-290d619214ea@gmail.com> +Message-ID: + +this is a Python 3 thing, you need to call decode on the bytes to get a +string. + +The IMAP spec would say that the bytes returned are ASCII, but we return +the raw message as is, which may include 8bit characters. In general, the +8bit characters are mostly in utf8, but could be in latin1 or other +non-embedded null encodings. + +So, the simplest is to assume utf8, the most correct would be to use some +code to guess the encoding. + +strb = bodybytes.decode('utf-8') + +On Dec 28, 2016 4:37 AM, "comicpilsen" wrote: + +> I am a little confused. I code in Python ( 3.5.1) and I am "trying" to +> read the body of messages from a gmail account. The issue is that I see a +> lot of POP3 activity on stack exchange and google but very little for IMAP. +> So is IMAP dead? If so what should I be looking at? +> +> All I want to do is read in my email body and do something with it. I +> really am having issues like the one below. +> +> Using python 3.5.1 and its throwing this trace +> +> TypeError: initial_value must be str or None, not bytes +> +> on the line +> +> text_msg = email.message_from_string(data[0][1]) +> +> I know the text of the message is stashed in data[0][1] but can't seem to +> find the correct code to convert from bytes to string for the RFC822 in +> python 3.5.1 what is the line please? here is the code I found to read my +> IMAP box which works well for getting the messages, formatting the date and +> showing the subject. +> +> rv, data = M.fetch(num, '(RFC822)') +> if rv != 'OK': +> print("ERROR getting message", num) +> return +> msg = email.message_from_bytes(data[0][1]) +> +> text_msg = email.message_from_string(data[0][1]) +> +> hdr=mail.header.make_header(email.header.decode_header(msg['Subject'])) +> subject = str(hdr) +> print('Message %s: %s' % (num, subject)) +> +> print("text = ",text_msg) +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094984.22566.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094984.22566.mbox:2,S new file mode 100644 index 00000000..2d824c0c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094984.22566.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From osandov at osandov.com Mon Jan 25 15:15:28 2016 +To: imap-protocol@u.washington.edu +From: Omar Sandoval +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Selected mailbox deleted by another client +Message-ID: <20160125231528.GA21616@mew> + +Hi, + +While working on an IMAP client, I seem to have encountered an edge-case +in the IMAP protocol, and I can't find any clarification elsewhere. In +particular, I'm talking about the following scenario where two clients +C1 and C2 are accessing the same server S: + +C1: A002 SELECT foo +... +S: A002 OK [READ-WRITE] foo selected. (Success) + C2: A002 DELETE foo + S: A002 OK Success +C1: A003 UID FETCH 1 ENVELOPE +S: ??? + +That is, when C2 deletes the mailbox that C1 currently has selected, +what happens when C1 tries to access that mailbox? There's a previous +discussion here [1] about what should happen in the case that a client +attempts to delete the mailbox that it has selected which briefly talks +about the case I'm asking about here. Here's one proposal from that +thread: + +> Or, you can pretend the mailbox is deleted, but still allow all FETCH +> operations, actually physically deleteing it when the last client +> leaves the selected state on it. This is similar to the situation of +> deleting an open file on UNIX, say - the file still exists, but has +> no name anymore, no applications with it open can still use it, no no +> new applications can open it. + +I tried this out on Gmail to see what would happen and got some weird +results: + +C1: A003 UID FETCH 1 ENVELOPE +S: A003 OK Success +C1: A004 NOOP +S: A004 OK Success +C1: A005 UID FETCH 1 ENVELOPE +S: A005 BAD UID FETCH not allowed now. + +At first, Gmail seemed to be exhibiting the behavior described in my +quote. But, inexplicably, after issuing a NOOP, the connection +apparently left the Selected state and entered the Authenticated state. + +I dusted off an old Yahoo mail account and got an even weirder result: + +C1: A003 UID FETCH 1 ENVELOPE +S: A003 OK UID FETCH completed +C1: A004 NOOP +S: A004 NO [SERVERBUG] NOOP Server error - Please try again later + +I haven't actually tried it, but Dovecot apparently disconnects the +client [2]. + +So, what's the correct behavior here? I'm a fan of the behavior I quoted +above, and the Dovecot behavior also seems sane. Gmail's behavior seems +utterly incorrect, however. NOOP is definitely not supposed to change +the connection state, so this appears to be a bug. Any thoughts? + +1: http://mailman13.u.washington.edu/mailman/htdig/imap-protocol/2005-September/000021.html +2: http://hg.dovecot.org/dovecot-2.1/rev/81a659ab9183 +-- +Omar + diff --git a/demo/ermis-f/imap-protocol/cur/1600094985.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094985.22538.mbox:2,S new file mode 100644 index 00000000..ee33abd7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094985.22538.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From gds at chartertn.net Mon Oct 9 15:59:53 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: <1611d170-ea34-1adf-8cd6-090e571cf12c@hireahit.com> +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + <5dff705c-130c-ac73-fae4-b5ba1b9b0cc2@chartertn.net> + <1611d170-ea34-1adf-8cd6-090e571cf12c@hireahit.com> +Message-ID: <2e246450-3dca-0522-6cb5-72016def70a9@chartertn.net> + +On 10/9/17 5:32 PM, Dave Warren wrote: +> +> I think it might reduce confusion if we stop saying "Message was +> deleted". "Deleted" doesn't have a clear definition in this context +> because it isn't really a thing in IMAP (although it is how IMAP clients +> present multiple different behaviours to users). At the protocol level, +> you can set the \Deleted flag or you can EXPUNGE. + +OK, s/Message was deleted/Message was deleted in the client program/ :) + +> +> Since a \Deleted flag can be trivially removed, there is no "reuse" of a +> UID, the UID was still being reused and the COPY was just returning an +> accurate (if unusual) result. Expunging and then reusing the UID +> (assuming an unchanged UIDVALIDITY) would be a very significant problem +> with regards to clients maintaining the validity of their caches, but +> simply changing a flag is perfectly valid. + +Openwave has no problem if the copy destination mbox is first expunged +or if the original UID now having the \deleted flag is expunged with +"uid expunge " since openwave has UIDPLUS capability. In that case +the server copies to a new UID >= UIDNEXT with \deleted not set so the +copied-in message is visible in the client program. + +So I think if there is a bug in the openwave server it because it +somewhat violates this requirement for the COPY command from rfc 3501: + +"The COPY command copies the specified message(s) to the end of the +specified destination mailbox. The flags and internal date of the +message(s) SHOULD be preserved, and the Recent flag SHOULD be set, +in the copy." + +1.The copy does not always copy messages to the "end" of specified +destination mbox. (I don't see an explicit definition for "end" in the +rfc but I am sure it means at UID >=UIDNEXT or at the next greater +sequence number.) + +2.When it does a copy to an existing and unexpunged UID not at the "end" +it does not preserve the flag states from the source mbox/UID. Also, the +Recent flag is not set. Of course, this is a SHOULD requirement so maybe +there are valid reasons for not doing these that I'm not aware of. + +-gene + + + + + + + + +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094985.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094985.22548.mbox:2,S new file mode 100644 index 00000000..a2b95b68 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094985.22548.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From blong at google.com Wed Mar 8 11:10:03 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail - OAUTH2 - failures since Feb 23 +In-Reply-To: <5a39008c-b64b-5a0e-bffb-1163d76aa6cc@laposte.net> +References: + + + <5a39008c-b64b-5a0e-bffb-1163d76aa6cc@laposte.net> +Message-ID: + +We don't use Apache, and the cause was quite a bit different, involving the +storage of the token info on our side. + +Brandon + +On Mar 8, 2017 11:01 AM, "Gilles LAMIRAL" +wrote: + +> Hi all, +> +> Isn't it the last Apache patch that now disallow "broken" (not strict +> RFC7230 compliant) +> http clients that still use \n instead of \r\n as end of lines? +> +> Using only \n now generates an Apache (2.2) 400 HTTP error, it looks like +> some +> sort of error code mapping with what described Kostya Vasilyev: +> "using this token to log into Gmail would get "status code 400, +> bad request" from Gmail's IMAP and SMTP servers." +> +> I saw this happening in Debian last apache 2.2 patch: +> https://tracker.debian.org/news/839792 +> * Security: CVE-2016-8743: +> Enforce HTTP request grammar corresponding to RFC7230 for request +> lines +> and request headers, to prevent response splitting and cache +> pollution by +> malicious clients or downstream proxies. +> * The stricter HTTP enforcement may cause compatibility problems with +> non-conforming clients. Fine-tuning is possible with the new +> HttpProtocolOptions directive. +> +> It's not strictly imap related but it shows again that http is almost +> everywhere now. +> +> Le 24/02/2017 ? 17:55, Brandon Long a ?crit : +> +>> https://twitter.com/Google/status/834993667911737345 +>> +>> We had some issues with account login yesterday for oauth, it should all +>> be resolved now. +>> +>> +> -- +> Au revoir, +> Gilles Lamiral. France, Baulon (35580) +> mob 06 19 22 03 54 +> tel 09 51 84 42 42 +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094985.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094985.22553.mbox:2,S new file mode 100644 index 00000000..1af666d3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094985.22553.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From blong at google.com Sat Feb 18 14:36:28 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> +References: + + <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> +Message-ID: + +You shouldn't have to reselect, and doing so is really inefficient on some +servers, so I wouldn't recommend it as the default mechanism. + +Seems like for this server there is no benefit to keeping the connection +open. + +I would consider a modern server which does this as pretty broken, but it +may not violate the spec. + +On Feb 18, 2017 2:29 PM, "Gene Smith" wrote: + +> The charter IMAP server is openwave according the login response. So are +> you saying it is OK for the IMAP server to require a new SELECT before +> doing a FETCH on an already selected mailbox for the FETCH response to +> indicate new email? If so, this is a bug in thunderbird. +> +> I have noticed that at least one client (kmail) always does SELECT and +> FETCH when checking for new mail (even when inbox is already selected). +> However, thunderbird and claws-mail only do a FETCH and don't re-do the +> SELECT and, therefore, don't detect new mail unless another folder is +> looked at first and then inbox is returned to. +> +> -gene +> +> On 02/18/2017 05:00 PM, Brandon Long wrote: +> +> Didn't the old UW IMAP server act that way with certain mailbox formats? +> It locked the mailbox and it couldn't receive new mail. +> +> In any case, I don't think the spec precludes implementing it that way, +> but it's certainly not the normal implemention. +> +> Brandon +> +> On Feb 18, 2017 1:52 PM, "Gene Smith" wrote: +> +>> I have been seeing a problem with mozilla Thunderbird client when using +>> the charter.net imap server. When thunderbird checks for new messages it +>> just does a FETCH since the inbox was already SELECTed at startup. It does +>> not detect new messages unless another mailbox is SELECTed and inbox is +>> re-SELECTED and then FETCHed. I think thunderbird is following the IMAP +>> spec but charter.net server is not since it requires a re-SELECT on and +>> already selected mailbox to signal new email. Am I right? +>> +>> -gene +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094985.22563.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094985.22563.mbox:2,S new file mode 100644 index 00000000..37f67faa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094985.22563.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From johnl-imap at iecc.com Wed Dec 28 08:13:05 2016 +To: imap-protocol@u.washington.edu +From: John Levine +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] is IMAP still the protocol to use to read + emails??? +In-Reply-To: <7b8b6e00-3396-2c08-f58e-290d619214ea@gmail.com> +Message-ID: <20161228161305.29711.qmail@ary.lan> + +In article <7b8b6e00-3396-2c08-f58e-290d619214ea@gmail.com> you write: +>I am a little confused. I code in Python ( 3.5.1) and I am "trying" to read the body of +>messages from a gmail account. The issue is that I see a lot of POP3 activity on stack +>exchange and google but very little for IMAP. So is IMAP dead? If so what should I be +>looking at? + +IMAP is very much alive. Approximately every smartphone in the world uses it to +handle their users' email accounts. + +The reason you see so much more about POP3 is that POP is about 1/100 as complex +as IMAP, so if can do what you want, it's much easier to use. + +>All I want to do is read in my email body and do something with it. I really am having +>issues like the one below. + +I've found that the third party python imapclient library is a lot +easier to use than the standard imaplib. It deals with many of the +datatype strangenesses you've been running into. + +R's, +John + diff --git a/demo/ermis-f/imap-protocol/cur/1600094985.22566.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094985.22566.mbox:2,S new file mode 100644 index 00000000..4fe5083d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094985.22566.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From brong at fastmail.fm Mon Jan 25 15:41:35 2016 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Selected mailbox deleted by another client +In-Reply-To: <20160125231528.GA21616@mew> +References: <20160125231528.GA21616@mew> +Message-ID: <1453765295.487330.502398698.1C26076F@webmail.messagingengine.com> + +On Tue, Jan 26, 2016, at 10:15, Omar Sandoval wrote: +> I haven't actually tried it, but Dovecot apparently disconnects the +> client [2]. +> +> So, what's the correct behavior here? I'm a fan of the behavior I quoted +> above, and the Dovecot behavior also seems sane. Gmail's behavior seems +> utterly incorrect, however. NOOP is definitely not supposed to change +> the connection state, so this appears to be a bug. Any thoughts? + +Cyrus has a switch called 'disconnect_on_vanished_mailbox' which gives +the same behaviour as Dovecot. It defaults to off, but my testing just now +showed an immediate disconnect without even running the NOOP when I +ran the command, so I'll be investigating that (and adding a test case to +our testing framework) + +Thanks for bringing this up :) + +What Cyrus is supposed to do is to issue an EXPUNGE for every existing +message (or a VANISHED if QRESYNC is turned on) and then a NO in +response to the command. You would remain "selected" though. + +I guess you could return: + + NO [CLOSED] Mailbox no longer exists + +If QRESYNC is enabled... + +https://tools.ietf.org/html/rfc5162#section-3.7 + +Another possible thing (and what Cyrus IMAP used to do for a little while +in the 2.4 series when I added long-lived index locks) is to say +"NO Mailbox is locked" to the session which tries to delete an open +mailbox. This was bad because the situation actually occurs quite often +in practice that someone's phone or desktop is sitting there with a mailbox +open for hours or days just NOOPing away. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600094985.22569.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094985.22569.mbox:2,S new file mode 100644 index 00000000..ccd5617f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094985.22569.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From gullo at m4ss.net Wed Dec 23 08:51:22 2015 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID fetch command error on Gmail servers +Message-ID: + +Hello, +someone can help me to understand what exactly could be wrong in this UID +fetch command? + +I receive an error from Gmail server: + +12/12/15, 10:06 PM >>> >>>>>>> send >>>>>> +12/12/15, 10:06 PM >>> *103 UID FETCH 829907:830028 (UID X-GM-MSGID FLAGS +RFC822.SIZE ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE +RFC822)* +12/12/15, 10:06 PM >>> >>>>>>> end send >>>>>> +12/12/15, 10:06 PM <<< <<<<<<< read <<<<<< +12/12/15, 10:06 PM <<< 103 NO *System Error (Failure)* +12/12/15, 10:06 PM <<< <<<<<<< end read <<<<<< +12/12/15, 10:06 PM messagesFullFrom: NIL - ERROR: Error Domain=mailcore +Code=24 "*UID fetch command error*" UserInfo={NSLocalizedDescription=UID +fetch command error} + +Thank you very much! + + +-- +Davide Gullo +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094986.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094986.22538.mbox:2,S new file mode 100644 index 00000000..131d168c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094986.22538.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From blong at google.com Mon Oct 9 16:30:33 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + +Message-ID: + +On Mon, Oct 9, 2017 at 7:39 AM, Arnt Gulbrandsen +wrote: + +> Gene Smith writes: +> +>> Yes, for other IMAP servers I have tested, if I copy message "A" 10 times +>> into Inbox I see 10 identical copies of message A in Inbox. For this +>> openwave server, I see only 1 (and uid fetch 1:* (FLAGS) shows only 1). +>> +> +> Have you tested with gmail? + + +Since Gmail considers a COPY operation as an "add label" operation, it's +usually a no-op if the message already has that label, which is what would +happen in this case. + +There are cases where Gmail does "reassign UID" on a COPY, ie it bumps the +UID of a message to the UIDNEXT. It does this if the user is calling COPY +with a source/target folder that are the same, on the assumption that the +user is trying to make an actual copy of the message in the same folder. +Clients doing this tend to be confused if the message isn't the latest UID +in that case. We also reassign UIDs when messages are moved to/from the +spam/trash folders, for similar reasons. (Note that APPEND always bumps +the UID when it detects an attempt to APPEND a duplicate message for +similar reasons to the COPY to the same folder) + +Most IMAP flags are also implemented as labels, and so are consistent +across all "copies" of a message. The exception is \Deleted, so doing +something like a COPY/Deleted as a MOVE operation without an EXPUNGE and +then doing it back will leave both "copies" with a \Deleted flag and both +will be removed with EXPUNGE. That said, the default is for the user to be +in auto-expunge mode, in which case storing a \Deleted flag will result in +the message being EXPUNGED (that label removed) at the next sync point. + +IE, from the given example: +C: aaa UID COPY 1267 "Mbox" +S: aaa OK [COPYUID 123456789 1267 1007] UID COPY completed +C: bbb UID store 1267 +Flags (\Deleted) + +The UID store is a sync point, so the message will be auto-expunged at this +point, so the COPY back will get a new UID. + +You'd need to change the user using the advanced IMAP options to a +different deletion mode to see the UID maintained. + +Also, Gmail offers the MOVE extension, so you should really use that +instead of COPY\Deleted\EXPUNGE. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094986.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094986.22548.mbox:2,S new file mode 100644 index 00000000..4203b35f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094986.22548.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From andris.reinman at gmail.com Fri Mar 10 13:42:09 2017 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] What is the current consensus on the Recent flag? +Message-ID: + +Hi all, + +I'm building a new open source IMAP server ( +https://github.com/wildduck-email/wildduck) and was wondering about the +\Recent flag. Is it even needed today? I would like to keep my server as +standards compliant as possible but the ephemeral nature of \Recent makes +it a bit difficult to sync between sessions in multiple hosts. It would be +doable but the complexity needed does not make it seem worth it. + +Is there even any major client using this flag in a sane way? I don't think +I have even ever encountered it outside the RFCs. + +Best regards, +Andris Reinman +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094986.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094986.22553.mbox:2,S new file mode 100644 index 00000000..3b736ea8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094986.22553.mbox:2,S @@ -0,0 +1,114 @@ +MBOX-Line: From brong at fastmail.fm Sat Feb 18 14:44:11 2017 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: +References: + + <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> + +Message-ID: <1487457851.3495664.885450568.157A4E2A@webmail.messagingengine.com> + +Surely a noop should work to cause an update? + + + + + +On Sun, 19 Feb 2017, at 09:36, Brandon Long wrote: + +> You shouldn't have to reselect, and doing so is really inefficient on +> some servers, so I wouldn't recommend it as the default mechanism. +> + +> Seems like for this server there is no benefit to keeping the +> connection open. +> + +> I would consider a modern server which does this as pretty broken, but +> it may not violate the spec. +> + +> On Feb 18, 2017 2:29 PM, "Gene Smith" wrote: + +>> The charter IMAP server is openwave according the login response. So +>> are you saying it is OK for the IMAP server to require a new SELECT +>> before doing a FETCH on an already selected mailbox for the FETCH +>> response to indicate new email? If so, this is a bug in thunderbird. +>> + +>> I have noticed that at least one client (kmail) always does SELECT +>> and FETCH when checking for new mail (even when inbox is already +>> selected). However, thunderbird and claws-mail only do a FETCH and +>> don't re-do the SELECT and, therefore, don't detect new mail unless +>> another folder is looked at first and then inbox is returned to. +>> + +>> -gene + +>> + +>> On 02/18/2017 05:00 PM, Brandon Long wrote: + +>>> Didn't the old UW IMAP server act that way with certain mailbox +>>> formats? It locked the mailbox and it couldn't receive new mail. +>>> + +>>> In any case, I don't think the spec precludes implementing it that +>>> way, but it's certainly not the normal implemention. +>>> + +>>> Brandon + +>>> + +>>> On Feb 18, 2017 1:52 PM, "Gene Smith" wrote: + +>>> + +>>>> I have been seeing a problem with mozilla Thunderbird client when +>>>> using the charter.net imap server. When thunderbird checks for new +>>>> messages it just does a FETCH since the inbox was already SELECTed +>>>> at startup. It does not detect new messages unless another mailbox +>>>> is SELECTed and inbox is re-SELECTED and then FETCHed. I think +>>>> thunderbird is following the IMAP spec but charter.net server is +>>>> not since it requires a re-SELECT on and already selected mailbox +>>>> to signal new email. Am I right? +>>>> + +>>>> -gene + +>>>> _______________________________________________ + +>>>> Imap-protocol mailing list + +>>>> Imap-protocol@u.washington.edu + +>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +>> + + + +> _________________________________________________ + +> Imap-protocol mailing list + +> Imap-protocol@u.washington.edu + +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + + +-- + + Bron Gondwana + + brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094986.22566.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094986.22566.mbox:2,S new file mode 100644 index 00000000..3be99f10 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094986.22566.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From jkt at flaska.net Mon Jan 25 15:43:06 2016 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Selected mailbox deleted by another client +In-Reply-To: <20160125231528.GA21616@mew> +References: <20160125231528.GA21616@mew> +Message-ID: <4435a78f-3e95-4f3c-9a76-95cdabce95d7@flaska.net> + +On Tuesday, 26 January 2016 00:15:28 CET, Omar Sandoval wrote: +> That is, when C2 deletes the mailbox that C1 currently has selected, +> what happens when C1 tries to access that mailbox? There's a previous +> discussion here [1] about what should happen in the case that a client +> attempts to delete the mailbox that it has selected which briefly talks +> about the case I'm asking about here. Here's one proposal from that +> thread: + +There's also an RFC which outlines some possibilities, see +https://tools.ietf.org/html/rfc2180#section-3 . + +> C1: A003 UID FETCH 1 ENVELOPE +> S: A003 OK Success +> C1: A004 NOOP +> S: A004 OK Success +> C1: A005 UID FETCH 1 ENVELOPE +> S: A005 BAD UID FETCH not allowed now. +> +> At first, Gmail seemed to be exhibiting the behavior described in my +> quote. But, inexplicably, after issuing a NOOP, the connection +> apparently left the Selected state and entered the Authenticated state. + +Sounds like NO would be better reply (even for the A003), indeed. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600094986.22569.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094986.22569.mbox:2,S new file mode 100644 index 00000000..5afe4e0f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094986.22569.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Dec 23 09:01:27 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID fetch command error on Gmail servers +In-Reply-To: +References: +Message-ID: <567AD367.8000207@isode.com> + +On 23/12/2015 16:51, Davide Gullo wrote: +> Hello, +> someone can help me to understand what exactly could be wrong in this +> UID fetch command? +> +> I receive an error from Gmail server: +> +> 12/12/15, 10:06 PM >>> >>>>>>> send >>>>>> +> 12/12/15, 10:06 PM >>> *103 UID FETCH 829907:830028 (UID X-GM-MSGID +> FLAGS RFC822.SIZE ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] +> BODYSTRUCTURE RFC822)* +> 12/12/15, 10:06 PM >>> >>>>>>> end send >>>>>> +> 12/12/15, 10:06 PM <<< <<<<<<< read <<<<<< +> 12/12/15, 10:06 PM <<< 103 NO *System Error (Failure)* +> 12/12/15, 10:06 PM <<< <<<<<<< end read <<<<<< +> 12/12/15, 10:06 PM messagesFullFrom: NIL - ERROR: Error +> Domain=mailcore Code=24 "*UID fetch command error*" +> UserInfo={NSLocalizedDescription=UID fetch command error} +> +> Thank you very much! +What does the server returns on SELECT of the mailbox? + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094986.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094986.22572.mbox:2,S new file mode 100644 index 00000000..a4c13043 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094986.22572.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dshaw at jabberwocky.com Tue Nov 17 15:11:00 2015 +To: imap-protocol@u.washington.edu +From: David Shaw +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +Message-ID: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + +Hello, + +I'm currently beating my head against a problem with a particular server implementation. The problem, as best I can work out from the outside, is in UID MOVE. + +My understanding from RFC-6851 is that a UID MOVE transaction should look something like this (cut and paste from the RFC): + + C: a UID MOVE 42:69 foo + S: * OK [COPYUID 432432 42:69 1202:1229] + S: * 22 EXPUNGE + S: (more expunges) + S: a OK Done + +The relevant piece of this for my question is that the COPYUID response is in an untagged OK. Again, from the RFC: "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." + +This seems straightforward. + +The server I'm having a problem (outlook.office365.com) with has a UID MOVE transaction like this (actual transaction captured from my client): + + C: 14 UID MOVE 7599 "Deleted Items" + S: [COPYUID 12 7599 4788] + S: * 373 EXPUNGE + S: * 372 EXISTS + S: 14 OK MOVE completed. + +The concern is with the second line (the COPYUID response). There is no untagged OK / "* OK" there, which seems incorrect to me and perhaps more significantly, seems to cause the Apple iOS mail program to throw an error every time a message is moved from folder to folder (which of course includes the "delete this message" function). + +I've spent (literally) weeks trying to get Microsoft Office365 support to acknowledge the problem, without success. The most recent response insists that they are following the RFC, and in fact quoted the "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." line from RFC-6851 as what they are doing. + +Could the experts on this list help me understand what is going on here? I have no particular need to be "right" - I just want to be able to delete messages without getting errors every single time. + +Thanks, + +David + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094987.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094987.22538.mbox:2,S new file mode 100644 index 00000000..b294788d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094987.22538.mbox:2,S @@ -0,0 +1,111 @@ +MBOX-Line: From gds at chartertn.net Thu Oct 12 21:46:22 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + +Message-ID: + +On 10/9/17 7:30 PM, Brandon Long wrote: +> +> +> On Mon, Oct 9, 2017 at 7:39 AM, Arnt Gulbrandsen +> > wrote: +> +> Gene Smith writes: +> +> Yes, for other IMAP servers I have tested, if I copy message "A" +> 10 times into Inbox I see 10 identical copies of message A in +> Inbox. For this openwave server, I see only 1 (and uid fetch 1:* +> (FLAGS) shows only 1). +> +> +> Have you tested with gmail? +> +> +> Since Gmail considers a COPY operation as an "add label" operation, it's +> usually a no-op if the message already has that label, which is what +> would happen in this case. +> +> There are cases where Gmail does "reassign UID" on a COPY, ie it bumps +> the UID of a message to the UIDNEXT.? It does this if the user is +> calling COPY with a source/target folder that are the same, on the +> assumption that the user is trying to make an actual copy of the message +> in the same folder.? Clients doing this tend to be confused if the +> message isn't the latest UID in that case.? We also reassign UIDs when +> messages are moved to/from the spam/trash folders, for similar reasons. +> (Note that APPEND always bumps the UID when it detects an attempt to +> APPEND a duplicate message for similar reasons to the COPY to the same +> folder) +> +> Most IMAP flags are also implemented as labels, and so are consistent +> across all "copies" of a message.? The exception is \Deleted, so doing +> something like a COPY/Deleted as a MOVE operation without an EXPUNGE and +> then doing it back will leave both "copies" with a \Deleted flag and + +To simulate a MOVE, wouldn't you COPY the message to a destination +folder and then set the \Deleted on the source message/folder. So the +\deleted flag is not on both copies? Then you would uid expunge the +source message. + +> both will be removed with EXPUNGE.? That said, the default is for the +> user to be in auto-expunge mode, in which case storing a \Deleted flag +> will result in the message being EXPUNGED (that label removed) at the +> next sync point. +> +> IE, from the given example: +> C: aaa UID COPY 1267 "Mbox" +> S: aaa OK [COPYUID 123456789 1267 1007] UID COPY completed +> C: bbb UID store 1267 +Flags (\Deleted) +> +> The UID store is a sync point, so the message will be auto-expunged at +> this point, so the COPY back will get a new UID. + +Thanks for the info on gmail. One thing I didn't understand is why gmail +has the "auto-expunge on \Deleted" default feature. You have provide a +rationale for it. But it seems to be a violation of rfc 3501. It also +causes problem for clients that use the "Just mark it as deleted" delete +method that just sets the \Deleted flag and leaves a deleted email +summary in place but indicates it is deleted by drawing a line though +the summary. With default gmail, the crossed-out message vanishes from +the summary list since it auto-expunged. This can be fixed in the gmail +imap settings, fortunately. The outlook imap server also does the +auto-expunge but doesn't seem to have a way to disable it. I haven't yet +seen other imap servers that do auto-expunge. + +> +> You'd need to change the user using the advanced IMAP options to a +> different deletion mode to see the UID maintained. + +Advanced IMAP option == not auto-expunge? I think that's what you mean. + +OK, if I do this with auto-expunge set to false: +Copy message "test" (uid 5604) from Inbox to [Gmail]/f1 +Message test is visible in Inbox and f1. Not crossed-out. +In Inbox, mark test with \deleted. It becomes crossed-out. +In f1 copy test to Inbox. Goes to uid 5604 in Inbox. +test in Inbox keeps \Deleted flag and remain crossed-out. + +So gmail imap behaving same as openwave imap! It copies back to the +original UID and doesn't clear the \Deleted flag on UID 5604 in Inbox +and message remains crossed-out in client. + +Why doesn't \Deleted on UID 5604 in Inbox get cleared after copy back? + +> +> Also, Gmail offers the MOVE extension, so you should really use that +> instead of COPY\Deleted\EXPUNGE. + +Yes, no problem when MOVE used since it expunges the message after it +copies it to the destination. That's typically what is used. + +> +> Brandon + diff --git a/demo/ermis-f/imap-protocol/cur/1600094987.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094987.22548.mbox:2,S new file mode 100644 index 00000000..bbb718a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094987.22548.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Mar 11 00:50:05 2017 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] What is the current consensus on the Recent + flag? +In-Reply-To: +References: +Message-ID: + +Hi, + +I've never seen it in real use either. + +But it's simplish to implement along with MSNs. You keep a UID +persistently, "the last UID for which some session has seen \recent". In +the code where you assign MSNs for each session, you look at whether each +message has UID>that, and if so, you set \recent in that session only and +increase the threshold. + +Simple to do, but worthless. Your call ;) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600094987.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094987.22553.mbox:2,S new file mode 100644 index 00000000..6710dd03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094987.22553.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From gds at chartertn.net Sat Feb 18 14:56:49 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: <1487457851.3495664.885450568.157A4E2A@webmail.messagingengine.com> +References: + + <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> + + <1487457851.3495664.885450568.157A4E2A@webmail.messagingengine.com> +Message-ID: + +On 02/18/2017 05:44 PM, Bron Gondwana wrote: +> Surely a noop should work to cause an update + +I don't see thunderbird sending periodic NOOPs when idle. But I will +check again... +. + diff --git a/demo/ermis-f/imap-protocol/cur/1600094987.22566.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094987.22566.mbox:2,S new file mode 100644 index 00000000..5129d2a3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094987.22566.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From davew at hireahit.com Tue Jan 26 00:44:22 2016 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Selected mailbox deleted by another client +In-Reply-To: <1453765295.487330.502398698.1C26076F@webmail.messagingengine.com> +References: <20160125231528.GA21616@mew> + <1453765295.487330.502398698.1C26076F@webmail.messagingengine.com> +Message-ID: <56A731E6.60104@hireahit.com> + +On 2016-01-25 15:41, Bron Gondwana wrote: +> Another possible thing (and what Cyrus IMAP used to do for a little while +> in the 2.4 series when I added long-lived index locks) is to say +> "NO Mailbox is locked" to the session which tries to delete an open +> mailbox. This was bad because the situation actually occurs quite often +> in practice that someone's phone or desktop is sitting there with a mailbox +> open for hours or days just NOOPing away. + + From a user perspective, this is probably the least desired +possibility, although it certainly would avoid any further complications :) + +Another possibility would be to block any further attempt to SELECT, or +add messages into the mailbox and queue the delete for the next time the +lock is released. I know of one server that does this in certain +circumstances, and it seems minimally harmful from a end-user and client +perspective. + +-- +Dave Warren +http://www.hireahit.com/ +http://ca.linkedin.com/in/davejwarren + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094987.22569.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094987.22569.mbox:2,S new file mode 100644 index 00000000..305d91c5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094987.22569.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Wed Dec 23 09:08:57 2015 +To: imap-protocol@u.washington.edu +From: =?utf-8?Q?Vi=C3=AAt_Ho=C3=A0_DINH?= +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID fetch command error on Gmail servers +In-Reply-To: +Message-ID: <58569bae-5cd1-4526-ab36-a98753b9d75b@dvh-mbp> + +I think that Gmail is faling on you (I guess that's a Gmail server). +The mailbox of the user is probably unusable. + + +On December 23, 2015 at 8:51 AM, Davide Gullo wrote: +> Hello, +> +> someone can help me to understand what exactly could be wrong in this UID fetch command? +> +> +> I receive an error from Gmail server: +> +> 12/12/15, 10:06 PM>>>>>>>>>>send>>>>>> +> 12/12/15, 10:06 PM>>>103 UID FETCH 829907:830028 (UID X-GM-MSGID FLAGS RFC822.SIZE ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE RFC822) +> +> 12/12/15, 10:06 PM>>>>>>>>>>end send>>>>>> +> +> 12/12/15, 10:06 PM<<<<<<<<< +> 12/12/15, 10:06 PM<<<103 NOSystem Error (Failure) +> +> 12/12/15, 10:06 PM<<<<<<<<< +> 12/12/15, 10:06 PM messagesFullFrom: NIL - ERROR: Error Domain=mailcore Code=24 "UID fetch command error" UserInfo={NSLocalizedDescription=UID fetch command error} +> +> +> Thank you very much! +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094987.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094987.22572.mbox:2,S new file mode 100644 index 00000000..64b1e64a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094987.22572.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From jjmckay at comaxis.com Tue Nov 17 15:39:34 2015 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> +Message-ID: <564BBAB6.8070609@comaxis.com> + +I don't have an answer but if you don't mind my asking a question, what +is the relationship between your client and iOS Mail? Why should +something you are doing in your own client cause it to fail? Or if you +are the author of iOS Mail, then why don't you adjust as necessary? + +On 11/17/2015 3:11 PM, David Shaw wrote: +> Hello, +> +> I'm currently beating my head against a problem with a particular server implementation. The problem, as best I can work out from the outside, is in UID MOVE. +> +> My understanding from RFC-6851 is that a UID MOVE transaction should look something like this (cut and paste from the RFC): +> +> C: a UID MOVE 42:69 foo +> S: * OK [COPYUID 432432 42:69 1202:1229] +> S: * 22 EXPUNGE +> S: (more expunges) +> S: a OK Done +> +> The relevant piece of this for my question is that the COPYUID response is in an untagged OK. Again, from the RFC: "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." +> +> This seems straightforward. +> +> The server I'm having a problem (outlook.office365.com) with has a UID MOVE transaction like this (actual transaction captured from my client): +> +> C: 14 UID MOVE 7599 "Deleted Items" +> S: [COPYUID 12 7599 4788] +> S: * 373 EXPUNGE +> S: * 372 EXISTS +> S: 14 OK MOVE completed. +> +> The concern is with the second line (the COPYUID response). There is no untagged OK / "* OK" there, which seems incorrect to me and perhaps more significantly, seems to cause the Apple iOS mail program to throw an error every time a message is moved from folder to folder (which of course includes the "delete this message" function). +> +> I've spent (literally) weeks trying to get Microsoft Office365 support to acknowledge the problem, without success. The most recent response insists that they are following the RFC, and in fact quoted the "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." line from RFC-6851 as what they are doing. +> +> Could the experts on this list help me understand what is going on here? I have no particular need to be "right" - I just want to be able to delete messages without getting errors every single time. +> +> Thanks, +> +> David +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094988.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094988.22538.mbox:2,S new file mode 100644 index 00000000..4a9d9c3e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094988.22538.mbox:2,S @@ -0,0 +1,152 @@ +MBOX-Line: From blong at google.com Fri Oct 13 00:19:59 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + + +Message-ID: + +On Oct 12, 2017 9:46 PM, "Gene Smith" wrote: + +On 10/9/17 7:30 PM, Brandon Long wrote: + + +> +> On Mon, Oct 9, 2017 at 7:39 AM, Arnt Gulbrandsen > wrote: +> +> Gene Smith writes: +> +> Yes, for other IMAP servers I have tested, if I copy message "A" +> 10 times into Inbox I see 10 identical copies of message A in +> Inbox. For this openwave server, I see only 1 (and uid fetch 1:* +> (FLAGS) shows only 1). +> +> +> Have you tested with gmail? +> +> +> Since Gmail considers a COPY operation as an "add label" operation, it's +> usually a no-op if the message already has that label, which is what would +> happen in this case. +> +> There are cases where Gmail does "reassign UID" on a COPY, ie it bumps the +> UID of a message to the UIDNEXT. It does this if the user is calling COPY +> with a source/target folder that are the same, on the assumption that the +> user is trying to make an actual copy of the message in the same folder. +> Clients doing this tend to be confused if the message isn't the latest UID +> in that case. We also reassign UIDs when messages are moved to/from the +> spam/trash folders, for similar reasons. (Note that APPEND always bumps +> the UID when it detects an attempt to APPEND a duplicate message for +> similar reasons to the COPY to the same folder) +> +> Most IMAP flags are also implemented as labels, and so are consistent +> across all "copies" of a message. The exception is \Deleted, so doing +> something like a COPY/Deleted as a MOVE operation without an EXPUNGE and +> then doing it back will leave both "copies" with a \Deleted flag and +> + +To simulate a MOVE, wouldn't you COPY the message to a destination folder +and then set the \Deleted on the source message/folder. So the \deleted +flag is not on both copies? Then you would uid expunge the source message. + + +both will be removed with EXPUNGE. That said, the default is for the user +> to be in auto-expunge mode, in which case storing a \Deleted flag will +> result in the message being EXPUNGED (that label removed) at the next sync +> point. +> +> IE, from the given example: +> C: aaa UID COPY 1267 "Mbox" +> S: aaa OK [COPYUID 123456789 1267 1007] UID COPY completed +> C: bbb UID store 1267 +Flags (\Deleted) +> +> The UID store is a sync point, so the message will be auto-expunged at +> this point, so the COPY back will get a new UID. +> + +Thanks for the info on gmail. One thing I didn't understand is why gmail +has the "auto-expunge on \Deleted" default feature. You have provide a +rationale for it. But it seems to be a violation of rfc 3501. It also +causes problem for clients that use the "Just mark it as deleted" delete +method that just sets the \Deleted flag and leaves a deleted email summary +in place but indicates it is deleted by drawing a line though the summary. +With default gmail, the crossed-out message vanishes from the summary list +since it auto-expunged. This can be fixed in the gmail imap settings, +fortunately. The outlook imap server also does the auto-expunge but doesn't +seem to have a way to disable it. I haven't yet seen other imap servers +that do auto-expunge. + + +What is the utility of the leave in folder marked as deleted? + +Most clients moved to a trash folder concept, which doesn't require the +leave deleted state. + +Gmail added auto-expunge as soon as we started testing imap, since people +would delete messages... And they'd still be there in the web interface. +We had no interest in adding the weird deleted still there mode to the +Gmail client. We debated a couple different modes, and they basically +wound up as advanced settings, but just expunging made the most sense, +especially since most mobile clients at the time never called expunge, and +the main use case of imap for Gmail was for mobile clients. + +It is not a violation of RFC 3501, since another client could be connected +and issue an expunge, as long as it's only visible at a sync point. + +It did cause the occasional issue with clients that couldn't handle it in +all cases, but those were all client bugs. + + +> You'd need to change the user using the advanced IMAP options to a +> different deletion mode to see the UID maintained. +> + +Advanced IMAP option == not auto-expunge? I think that's what you mean. + +OK, if I do this with auto-expunge set to false: +Copy message "test" (uid 5604) from Inbox to [Gmail]/f1 +Message test is visible in Inbox and f1. Not crossed-out. +In Inbox, mark test with \deleted. It becomes crossed-out. +In f1 copy test to Inbox. Goes to uid 5604 in Inbox. +test in Inbox keeps \Deleted flag and remain crossed-out. + +So gmail imap behaving same as openwave imap! It copies back to the +original UID and doesn't clear the \Deleted flag on UID 5604 in Inbox and +message remains crossed-out in client. + +Why doesn't \Deleted on UID 5604 in Inbox get cleared after copy back? + + +What is the proper thing to do? We're mixing two mailbox models which +aren't entirely compatible. + +I agree that clearing the flag is probably the right choice. Most likely, +this is a fairly unlikely scenario that only occurs with a really small +number of clients when a very unused setting is enabled, so no one ran into +it and made a decision. I could probably file a bug for it. + +Brandon + + +> Also, Gmail offers the MOVE extension, so you should really use that +> instead of COPY\Deleted\EXPUNGE. +> + +Yes, no problem when MOVE used since it expunges the message after it +copies it to the destination. That's typically what is used. + + +> Brandon +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094988.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094988.22548.mbox:2,S new file mode 100644 index 00000000..bc4af615 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094988.22548.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From blong at google.com Mon Mar 13 12:33:22 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] What is the current consensus on the Recent + flag? +In-Reply-To: +References: + +Message-ID: + +Simultaneous access does make it more complicated, you have to maintain a +lock across or at least issue a locked RMW to wherever you're storing that +value. + +Never seemed all that worth it to me, especially trying to sync with +non-IMAP access in our case. + +Brandon + +On Sat, Mar 11, 2017 at 12:50 AM, Arnt Gulbrandsen wrote: + +> Hi, +> +> I've never seen it in real use either. +> +> But it's simplish to implement along with MSNs. You keep a UID +> persistently, "the last UID for which some session has seen \recent". In +> the code where you assign MSNs for each session, you look at whether each +> message has UID>that, and if so, you set \recent in that session only and +> increase the threshold. +> +> Simple to do, but worthless. Your call ;) +> +> Arnt +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094988.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094988.22553.mbox:2,S new file mode 100644 index 00000000..47cefd08 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094988.22553.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Sat Feb 18 15:12:42 2017 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> +References: , + , + <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> +Message-ID: <58A8D4EA.24417.4193CD74@David.Harris.pmail.gen.nz> + +On 18 Feb 2017 at 17:29, Gene Smith wrote: + +> The charter IMAP server is openwave according the login response. So +> are you saying it is OK for the IMAP server to require a new SELECT +> before doing a FETCH on an already selected mailbox for the FETCH +> response to indicate new email? If so, this is a bug in thunderbird. + +One of the major reasons IMAP has such detailed provision for unsolicited +responses is so that the server can report the arrival of new messages in a +mailbox *without* the client having to re-select it. Depending on the back-end, +SELECT can be a fantastically "expensive" operation, and even on servers +where it's well-optimized, it's probably going to incur significant overhead. + +Speaking without any pretence of being authoritative, I'd say that if the only way +the server can report new messages in a mailbox is through reselection, then it's +broken, if only because there's no way for a client to learn procedurally that +that's what the server wants. + +In my own client code, I issue periodic NOOP commands and expect to see new +messages reported as part of the response sequence to that command: that's +how I would have expected most clients would do it. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Real newspaper headlines from US Papers: + "Thieves steal burglar alarm". + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094988.22569.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094988.22569.mbox:2,S new file mode 100644 index 00000000..c65da850 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094988.22569.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Dec 23 14:02:55 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID fetch command error on Gmail servers +In-Reply-To: +References: +Message-ID: + +Davide Gullo writes: +> Hello, +> someone can help me to understand what exactly could be wrong +> in this UID fetch command? +> +> I receive an error from Gmail server: +... +> 12/12/15, 10:06 PM <<< 103 NO System Error (Failure) + +This is a NO, which means that the command is fine, the server just +wouldn't or couldn't carry it out. + +My guess is a backend problem. Someone at Google is busy restoring from +backup now. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094988.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094988.22572.mbox:2,S new file mode 100644 index 00000000..0c6dbd8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094988.22572.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 17 15:52:32 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> +Message-ID: <1447804352.3226866.442714569.1280F540@webmail.messagingengine.com> + +Office 365 is being totally bogus here. An untagged OK is "* OK " stuff CRLF. + +a01 UID MOVE 1 INBOX.Archive +* OK [COPYUID 1400482663 1 1] Completed +* 1 EXPUNGE +a01 OK Completed + +From a real live server (Cyrus IMAPd) right now. + +Response lines in IMAP _always_ either start with '*' if they're an untagged response, or a tag. + +2.2.2. Server Protocol Sender and Client Protocol Receiver + + Data transmitted by the server to the client and status responses + that do not indicate command completion are prefixed with the token + "*", and are called untagged responses. + +If the line doesn't start with '*' or a tag for a command that you have already sent in this connection, that is a server bug (modulo continuation lines which start with '+' or data within a literal of course). + +Bron. + +On Wed, Nov 18, 2015, at 10:11, David Shaw wrote: +> Hello, +> +> I'm currently beating my head against a problem with a particular server implementation. The problem, as best I can work out from the outside, is in UID MOVE. +> +> My understanding from RFC-6851 is that a UID MOVE transaction should look something like this (cut and paste from the RFC): +> +> C: a UID MOVE 42:69 foo +> S: * OK [COPYUID 432432 42:69 1202:1229] +> S: * 22 EXPUNGE +> S: (more expunges) +> S: a OK Done +> +> The relevant piece of this for my question is that the COPYUID response is in an untagged OK. Again, from the RFC: "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." +> +> This seems straightforward. +> +> The server I'm having a problem (outlook.office365.com) with has a UID MOVE transaction like this (actual transaction captured from my client): +> +> C: 14 UID MOVE 7599 "Deleted Items" +> S: [COPYUID 12 7599 4788] +> S: * 373 EXPUNGE +> S: * 372 EXISTS +> S: 14 OK MOVE completed. +> +> The concern is with the second line (the COPYUID response). There is no untagged OK / "* OK" there, which seems incorrect to me and perhaps more significantly, seems to cause the Apple iOS mail program to throw an error every time a message is moved from folder to folder (which of course includes the "delete this message" function). +> +> I've spent (literally) weeks trying to get Microsoft Office365 support to acknowledge the problem, without success. The most recent response insists that they are following the RFC, and in fact quoted the "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." line from RFC-6851 as what they are doing. +> +> Could the experts on this list help me understand what is going on here? I have no particular need to be "right" - I just want to be able to delete messages without getting errors every single time. +> +> Thanks, +> +> David +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600094988.22575.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094988.22575.mbox:2,S new file mode 100644 index 00000000..73946727 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094988.22575.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From gilles.lamiral at laposte.net Wed Oct 28 07:48:40 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Automap feature when rfc6154 is not supported (for + imapsync). +Message-ID: <5630E048.7060001@laposte.net> + +Hello imap folks, + +I'm currently working on automapping folders on both sides, +for example: + +Sent <-> Sent Messages + +I've done the part where both sides support rfc6154, like Gmail or +Dovecot imap servers. Foe example, it simplifies Gmail to Gmail migrations +when the language is not the same on both sides, it's the case when one +side is configured by default, in English. This automapping works +fine. + +But not all imap server softwares support rfc6154. So I add also an +automap hardcoded when one side or both don't support special folders +as described in rfc6154. + +This way it will minimize headaches of playing with manual mapping +(--regextrans2 imapsync option) in most of the cases. +Email sysadmins for many different languages should appreciate. + +I need a list of common folders names used for special folders +described in https://tools.ietf.org/html/rfc6154 + +I start with: + +\All => "All" "All Mail" + +\Archive => "Archive" + +\Drafts => "Drafts" + +\Flagged => "Flagged" "Starred" + +\Junk => "Junk" "Spam" + +\Sent => "Sent" "Sent Messages" "Sent Items" + +\Trash => "Trash" + +Any comment or suggestion will be appreciated. +English, German, Italian, Spanish, French or any language are welcome! + +I don't know what are the imap server softwares supporting rfc6154. +Exchange, Zimbra, Office365 aren't seem to support it. + +PS: If there is a better place to talk about this feature, just tell +me, I will switch the discussion there. + +Thanks in advance. + + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094989.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094989.22538.mbox:2,S new file mode 100644 index 00000000..9ca3de44 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094989.22538.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From gds at chartertn.net Fri Oct 13 17:40:36 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + + + +Message-ID: <20430a7a-eeda-a60b-bf79-d55f1289f17a@chartertn.net> + +On 10/13/17 3:19 AM, Brandon Long wrote: +> +> +> What is the utility of the leave in folder marked as deleted? +> +> Most clients moved to a trash folder concept, which doesn't require the +> leave deleted state. + +Well, I prefer the move to trash concept but some Thunderbird users +still prefer the "Just mark it as deleted" non-default mode where a +Trash folder is not involved and deleted messages just get crossed out +in the UI after the \Deleted flag is set. + +> +> Gmail added auto-expunge as soon as we started testing imap, since +> people would delete messages... And they'd still be there in the web +> interface.? We had no interest in adding the weird deleted still there +> mode to the Gmail client.? We debated a couple different modes, and they +> basically wound up as advanced settings, but just expunging made the +> most sense, especially since most mobile clients at the time never +> called expunge, and the main use case of imap for Gmail was for mobile +> clients. +> +> It is not a violation of RFC 3501, since another client could be +> connected and issue an expunge, as long as it's only visible at a sync +> point. + +You're right, I looked at the rfc again and nowhere does it say an +auto-expunge can't occur; but, it never really mentions the concept. + +> +> It did cause the occasional issue with clients that couldn't handle it +> in all cases, but those were all client bugs. +> + +Since you can turn off auto-expunge at gmail it works around the problem +in Thunderbird when using "just mark deleted" mode. + +> +> OK, if I do this with auto-expunge set to false: +> Copy message "test" (uid 5604) from Inbox to [Gmail]/f1 +> Message test is visible in Inbox and f1. Not crossed-out. +> In Inbox, mark test with \deleted. It becomes crossed-out. +> In f1 copy test to Inbox. Goes to uid 5604 in Inbox. +> test in Inbox keeps \Deleted flag and remain crossed-out. +> +> So gmail imap behaving same as openwave imap! It copies back to the +> original UID and doesn't clear the \Deleted flag on UID 5604 in +> Inbox and message remains crossed-out in client. +> +> Why doesn't \Deleted on UID 5604 in Inbox get cleared after copy back? +> +> +> What is the proper thing to do?? We're mixing two mailbox models which +> aren't entirely compatible. +> +> I agree that clearing the flag is probably the right choice.? Most +> likely, this is a fairly unlikely scenario that only occurs with a +> really small number of clients when a very unused setting is enabled, so +> no one ran into it and made a decision.? I could probably file a bug for it. +> + +This is also what I observed for the openwave server that I thought was +a bug. So it sounds like you agree a copy back to the same UID should +result in the same flag states at the destination that are present at +the source. + + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094989.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094989.22548.mbox:2,S new file mode 100644 index 00000000..57cd12d1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094989.22548.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From njhaveri at apple.com Tue Mar 14 08:49:39 2017 +To: imap-protocol@u.washington.edu +From: Neil Jhaveri +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] What is the current consensus on the Recent + flag? +In-Reply-To: +References: +Message-ID: + +I agree, and we aren?t using it in iOS/macOS Mail. We?ve thought about it several times, though? but every time, the semantics proved to not be reliable enough. + +On Mar 10, 2017, at 1:42 PM, Andris Reinman > wrote: + +Hi all, + +I'm building a new open source IMAP server (https://github.com/wildduck-email/wildduck) and was wondering about the \Recent flag. Is it even needed today? I would like to keep my server as standards compliant as possible but the ephemeral nature of \Recent makes it a bit difficult to sync between sessions in multiple hosts. It would be doable but the complexity needed does not make it seem worth it. + +Is there even any major client using this flag in a sane way? I don't think I have even ever encountered it outside the RFCs. + +Best regards, +Andris Reinman +_______________________________________________ +Imap-protocol mailing list +Imap-protocol@u.washington.edu +http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094989.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094989.22553.mbox:2,S new file mode 100644 index 00000000..2ed26b23 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094989.22553.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From gds at chartertn.net Sat Feb 18 15:19:49 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: <58A8D4EA.24417.4193CD74@David.Harris.pmail.gen.nz> +References: + + <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> + <58A8D4EA.24417.4193CD74@David.Harris.pmail.gen.nz> +Message-ID: + +On 02/18/2017 06:12 PM, David Harris wrote: +> On 18 Feb 2017 at 17:29, Gene Smith wrote: +> +>> The charter IMAP server is openwave according the login response. So +>> are you saying it is OK for the IMAP server to require a new SELECT +>> before doing a FETCH on an already selected mailbox for the FETCH +>> response to indicate new email? If so, this is a bug in thunderbird. +> +> One of the major reasons IMAP has such detailed provision for unsolicited +> responses is so that the server can report the arrival of new messages in a +> mailbox *without* the client having to re-select it. Depending on the back-end, +> SELECT can be a fantastically "expensive" operation, and even on servers +> where it's well-optimized, it's probably going to incur significant overhead. +> +> Speaking without any pretence of being authoritative, I'd say that if the only way +> the server can report new messages in a mailbox is through reselection, then it's +> broken, if only because there's no way for a client to learn procedurally that +> that's what the server wants. +> +> In my own client code, I issue periodic NOOP commands and expect to see new +> messages reported as part of the response sequence to that command: that's +> how I would have expected most clients would do it. + +Thunderbird sends a NOOP when get mail timer expires on "get new mail" +button is clicked, before doing the FETCH. However, the charter IMAP +server always just responds with "OK NOOP completed" and provides no +additional update info even when new email is definitely present on the +server. +(Note: other IMAP servers that I access with thunderbird have no +problem, e.g., gmail, yahoo, and cyrus.) + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094989.22569.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094989.22569.mbox:2,S new file mode 100644 index 00000000..f26e065f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094989.22569.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From blong at google.com Wed Dec 23 22:21:33 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID fetch command error on Gmail servers +In-Reply-To: +References: + +Message-ID: + +Yeah, probably bad state either for that message or the account, if you can +pass me more details offlist, I can have someone take a look. + +Brandon +On Dec 23, 2015 2:03 PM, "Arnt Gulbrandsen" +wrote: + +> Davide Gullo writes: +> +>> Hello, +>> someone can help me to understand what exactly could be wrong in this UID +>> fetch command? +>> +>> I receive an error from Gmail server: +>> +> ... +> +>> 12/12/15, 10:06 PM <<< 103 NO System Error (Failure) +>> +> +> This is a NO, which means that the command is fine, the server just +> wouldn't or couldn't carry it out. +> +> My guess is a backend problem. Someone at Google is busy restoring from +> backup now. +> +> Arnt +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094989.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094989.22572.mbox:2,S new file mode 100644 index 00000000..5c1f8aa3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094989.22572.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From stuart.brandt at teamaol.com Tue Nov 17 15:58:01 2015 +To: imap-protocol@u.washington.edu +From: Stu Brandt +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> +Message-ID: <564BBF09.7050804@teamaol.com> + +David - + +My read matches yours. Their 2nd line is neither a tagged or untagged +response, rfc6851 section 3.3 has a specific example covering COPYUID in +the response, and rfc6851 section 4.3 seems pretty clear when it says to +send the COPYUID response code in an untagged OK. + +- Stuart + +On 11/17/15 6:11 PM, David Shaw wrote: +> Hello, +> +> I'm currently beating my head against a problem with a particular server implementation. The problem, as best I can work out from the outside, is in UID MOVE. +> +> My understanding from RFC-6851 is that a UID MOVE transaction should look something like this (cut and paste from the RFC): +> +> C: a UID MOVE 42:69 foo +> S: * OK [COPYUID 432432 42:69 1202:1229] +> S: * 22 EXPUNGE +> S: (more expunges) +> S: a OK Done +> +> The relevant piece of this for my question is that the COPYUID response is in an untagged OK. Again, from the RFC: "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." +> +> This seems straightforward. +> +> The server I'm having a problem (outlook.office365.com) with has a UID MOVE transaction like this (actual transaction captured from my client): +> +> C: 14 UID MOVE 7599 "Deleted Items" +> S: [COPYUID 12 7599 4788] +> S: * 373 EXPUNGE +> S: * 372 EXISTS +> S: 14 OK MOVE completed. +> +> The concern is with the second line (the COPYUID response). There is no untagged OK / "* OK" there, which seems incorrect to me and perhaps more significantly, seems to cause the Apple iOS mail program to throw an error every time a message is moved from folder to folder (which of course includes the "delete this message" function). +> +> I've spent (literally) weeks trying to get Microsoft Office365 support to acknowledge the problem, without success. The most recent response insists that they are following the RFC, and in fact quoted the "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." line from RFC-6851 as what they are doing. +> +> Could the experts on this list help me understand what is going on here? I have no particular need to be "right" - I just want to be able to delete messages without getting errors every single time. +> +> Thanks, +> +> David +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094989.22575.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094989.22575.mbox:2,S new file mode 100644 index 00000000..f65ee478 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094989.22575.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From Neil_Hunsperger at symantec.com Wed Oct 28 10:59:14 2015 +To: imap-protocol@u.washington.edu +From: Neil Hunsperger +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Automap feature when rfc6154 is not supported + (for imapsync). +In-Reply-To: <5630E048.7060001@laposte.net> +References: <5630E048.7060001@laposte.net> +Message-ID: <14D026C7F297AD44AC82578DD818CDD047B9AC7BAC@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + +Hi Gilles, + +> From: Imap-protocol [mailto:imap-protocol- +> bounces@mailman13.u.washington.edu] On Behalf Of Gilles LAMIRAL + +> I need a list of common folders names used for special folders +> described in https://tools.ietf.org/html/rfc6154 + +> Any comment or suggestion will be appreciated. +> English, German, Italian, Spanish, French or any language are welcome! + +The case-insensitive names I've seen for the sent folder are: +SENT +SENT ITEMS +SENT MESSAGES +GESENDETE ELEMENTE +GESENDETE OBJEKTE +???????? + +This covers English, German, and Japanese versions of: +Outlook Express +Outlook 2003 +Outlook 2007 +Windows Mail +Thunderbird 2.x +Apple Mail 3.x + +French language testing of the current versions of that software a few years later added: +?l?ments envoy?s +Envoy? + +Similarly, Spanish language testing added: +Elementos enviados + +If this weren't complicated enough, many versions of Outlook prompt the user to type their own sent folder name when turning on server-side copies. + +Cheers, +-Neil diff --git a/demo/ermis-f/imap-protocol/cur/1600094989.22578.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094989.22578.mbox:2,S new file mode 100644 index 00000000..4b43ce34 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094989.22578.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From nicolson at google.com Mon Aug 3 15:37:04 2015 +To: imap-protocol@u.washington.edu +From: Jamie Nicolson +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail LIST-EXTENDED bug +In-Reply-To: <20150723204653.Horde.nTSGq462CvKEHJ8L-R7hEVB@bigworm.curecanti.org> +References: <20150723130430.Horde.SA97i23HR6ui9hH7OsaY6OS@bigworm.curecanti.org> + + + <20150723204653.Horde.nTSGq462CvKEHJ8L-R7hEVB@bigworm.curecanti.org> +Message-ID: + +This should be fixed now. Thanks for reporting it. + +On Thu, Jul 23, 2015 at 7:46 PM, Michael M Slusarz +wrote: + +> Quoting Jamie Nicolson : +> +> We can probably fix this in a week or so. Is it causing big problems for +>> any clients to have LIST-EXTENDED enabled with this flaw? If it's causing +>> serious pain we could turn off LIST-EXTENDED until it's fixed. +>> +> +> Can't speak for anyone else, but this doesn't really affect us. We +> fallback to RFC 3501 compliant LIST commands if a LIST-EXTENDED command +> fails, so this is simply adding additional round-trips and/or additional +> processing on the client side. +> +> michael +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094990.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094990.22538.mbox:2,S new file mode 100644 index 00000000..7f9fab8e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094990.22538.mbox:2,S @@ -0,0 +1,100 @@ +MBOX-Line: From blong at google.com Fri Oct 13 18:13:31 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: <20430a7a-eeda-a60b-bf79-d55f1289f17a@chartertn.net> +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + + + + <20430a7a-eeda-a60b-bf79-d55f1289f17a@chartertn.net> +Message-ID: + +On Oct 13, 2017 5:40 PM, "Gene Smith" wrote: + +On 10/13/17 3:19 AM, Brandon Long wrote: + +> +> +> What is the utility of the leave in folder marked as deleted? +> +> Most clients moved to a trash folder concept, which doesn't require the +> leave deleted state. +> + +Well, I prefer the move to trash concept but some Thunderbird users still +prefer the "Just mark it as deleted" non-default mode where a Trash folder +is not involved and deleted messages just get crossed out in the UI after +the \Deleted flag is set. + + + +> Gmail added auto-expunge as soon as we started testing imap, since people +> would delete messages... And they'd still be there in the web interface. +> We had no interest in adding the weird deleted still there mode to the +> Gmail client. We debated a couple different modes, and they basically +> wound up as advanced settings, but just expunging made the most sense, +> especially since most mobile clients at the time never called expunge, and +> the main use case of imap for Gmail was for mobile clients. +> +> It is not a violation of RFC 3501, since another client could be connected +> and issue an expunge, as long as it's only visible at a sync point. +> + +You're right, I looked at the rfc again and nowhere does it say an +auto-expunge can't occur; but, it never really mentions the concept. + + + +> It did cause the occasional issue with clients that couldn't handle it in +> all cases, but those were all client bugs. +> +> +Since you can turn off auto-expunge at gmail it works around the problem in +Thunderbird when using "just mark deleted" mode. + + + +> OK, if I do this with auto-expunge set to false: +> Copy message "test" (uid 5604) from Inbox to [Gmail]/f1 +> Message test is visible in Inbox and f1. Not crossed-out. +> In Inbox, mark test with \deleted. It becomes crossed-out. +> In f1 copy test to Inbox. Goes to uid 5604 in Inbox. +> test in Inbox keeps \Deleted flag and remain crossed-out. +> +> So gmail imap behaving same as openwave imap! It copies back to the +> original UID and doesn't clear the \Deleted flag on UID 5604 in +> Inbox and message remains crossed-out in client. +> +> Why doesn't \Deleted on UID 5604 in Inbox get cleared after copy back? +> +> +> What is the proper thing to do? We're mixing two mailbox models which +> aren't entirely compatible. +> +> I agree that clearing the flag is probably the right choice. Most likely, +> this is a fairly unlikely scenario that only occurs with a really small +> number of clients when a very unused setting is enabled, so no one ran into +> it and made a decision. I could probably file a bug for it. +> +> +This is also what I observed for the openwave server that I thought was a +bug. So it sounds like you agree a copy back to the same UID should result +in the same flag states at the destination that are present at the source. + + +I think that severs could implement either, the usage isn't write to spec +or quite against. That said, leaving \Deleted can result in the unexpected +behavior of message loss, which should be avoided, so the user friendly +choice is to not leave \Deleted in that case. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094990.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094990.22548.mbox:2,S new file mode 100644 index 00000000..d2660706 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094990.22548.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From andris.reinman at gmail.com Mon Mar 20 11:41:39 2017 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] What is the current consensus on the Recent + flag? +In-Reply-To: +References: + +Message-ID: + +Awesome, thanks for the feedback! If \Recent in practice only matters for +the Dovecot ImapTest then I won't waste any time with it. The server I'm +building is a distributed one (run many instances, connect to any of these +(mailbox updates between server instances are propagated using a journal)) +and ensuring \Recent to be seen by just a single session would mean some +kind of extra locking and extra overhead for no gains whatsoever. + +Best regards, +Andris Reinman +http://wildduck.email/ + + +On Tue, Mar 14, 2017 at 5:49 PM, Neil Jhaveri wrote: + +> I agree, and we aren?t using it in iOS/macOS Mail. We?ve thought about it +> several times, though? but every time, the semantics proved to not be +> reliable enough. +> +> On Mar 10, 2017, at 1:42 PM, Andris Reinman +> wrote: +> +> Hi all, +> +> I'm building a new open source IMAP server (https://github.com/wildduck- +> email/wildduck) and was wondering about the \Recent flag. Is it even +> needed today? I would like to keep my server as standards compliant as +> possible but the ephemeral nature of \Recent makes it a bit difficult to +> sync between sessions in multiple hosts. It would be doable but the +> complexity needed does not make it seem worth it. +> +> Is there even any major client using this flag in a sane way? I don't +> think I have even ever encountered it outside the RFCs. +> +> Best regards, +> Andris Reinman +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094990.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094990.22553.mbox:2,S new file mode 100644 index 00000000..971a6ff4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094990.22553.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From gds at chartertn.net Sat Feb 18 15:56:12 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is SELECT required before FETCH to detect new + mail? +In-Reply-To: +References: + + <3e01f804-163d-cda3-f5bb-b495fa5a1d50@chartertn.net> + + <1487457851.3495664.885450568.157A4E2A@webmail.messagingengine.com> + +Message-ID: + +On 02/18/2017 05:56 PM, Gene Smith wrote: +> On 02/18/2017 05:44 PM, Bron Gondwana wrote: +>> Surely a noop should work to cause an update +> +> I don't see thunderbird sending periodic NOOPs when idle. But I will +> check again... + +Tb does send NOOP in response to the get new mail timer or if get mail +is clicked. However, charter server only returns OK, thank you and +provides no unsolicited info, even when new email is definitely present +in INBOX. + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094990.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094990.22572.mbox:2,S new file mode 100644 index 00000000..bd696be3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094990.22572.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 17 15:59:21 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <564BBAB6.8070609@comaxis.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + <564BBAB6.8070609@comaxis.com> +Message-ID: <1447804761.3611730.442717985.7EC5626B@webmail.messagingengine.com> + + + +On Wed, Nov 18, 2015, at 10:39, Jeff McKay wrote: +> I don't have an answer but if you don't mind my asking a question, what +> is the relationship between your client and iOS Mail? Why should +> something you are doing in your own client cause it to fail? Or if you +> are the author of iOS Mail, then why don't you adjust as necessary? + +My laptop's stupid "double tap shift is capslock" tried to get me to shout this. Maybe it's right. + +BECAUSE THAT WAY LIES MADNESS. IMAP is almost impossible to proxy already, but if you start allowing the most basic parts of the line protocol syntax to be ignored, then it becomes even more of an unparsable soup that it already is. + +This whole discussion is convincing me even more that standards as we do them now are useless - what you need is a compliance test suite. Any half descent test suite would pick this up in an instant. + +Oh look, there is one. http://www.imapwiki.org/ImapTest + +Let's see what it does: + +1447804537.510135 O: 1.12 move 1 imaptest2 +1447804537.511239 I: * OK [COPYUID 1447804538 1 1] Completed +1447804537.511239 I: * 1 EXPUNGE +1447804537.511239 I: 1.12 OK Completed + +1447804537.511842 O: 1.15 uid move 2 imaptest2 +1447804537.512686 I: * OK [COPYUID 1447804538 2 2] Completed +1447804537.512686 I: * 1 EXPUNGE +1447804537.512686 I: 1.15 OK Completed + +OK, let's fudge my local server to be dumb and output the wrong COPYUID data: + +1447804659.929754 O: 1.12 move 1 imaptest2 +1447804659.930822 I: [COPYUID 1447804660 1 1] Completed +1447804659.930822 I: * 1 EXPUNGE +1447804659.930822 I: 1.12 OK Completed + + +Cyrus::ImapTest.move [FAILED] + +=====> Cyrus::ImapTest[168] Error: cassandane[1]: Unexpected tagged reply: [COPYUID: [COPYUID 1447804660 1 1] Completed + + + +Looks like this whole thing would be trivially solved if Microsoft used the test suite that Timo has already made the effort to write. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600094990.22575.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094990.22575.mbox:2,S new file mode 100644 index 00000000..3423c756 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094990.22575.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From gilles.lamiral at laposte.net Thu Oct 29 04:33:02 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Automap feature when rfc6154 is not supported + (for imapsync). +In-Reply-To: <14D026C7F297AD44AC82578DD818CDD047B9AC7BAC@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +References: <5630E048.7060001@laposte.net> + <14D026C7F297AD44AC82578DD818CDD047B9AC7BAC@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +Message-ID: <563203EE.6060603@laposte.net> + +Hi Neil, + +>> I need a list of common folders names used for special folders +>> described in https://tools.ietf.org/html/rfc6154 +> +> The case-insensitive names I've seen for the sent folder are: +> SENT +> SENT ITEMS +> ... + +Ok. Do you really encountered different cases writings or all are in +fact only uppercase for the first characters like in "Sent Messages"? + +I want to be sure I have to support case-insensitive search. + +> ???????? + +Ok, you I think you mean &kAFP4W4IMH8wojCkMMYw4A- + +> This covers English, German, and Japanese versions of: +> Outlook *.*, Thunderbird 2.x, Apple Mail 3.x + +Looks like 95% of the market is now covered! Thanks! + +> French language testing of the current versions of that software a few years later added: +> ?l?ments envoy?s +> Envoy? +> +> Similarly, Spanish language testing added: +> Elementos enviados + +Very good! +Any Russian or Portuguese in the room? +We'll be near 99% coverage. + +> If this weren't complicated enough, many versions of Outlook prompt the user to type +>their own sent folder name when turning on server-side copies. + +This is the 1% I don't care for now. I'll send the idea of then supporting +rfc6154 in that case to Microsoft. + +Asking the user to choose something else that what is known +to work well without question, is perversion. +Asking the user to solve something known to work bad +is incompetence. + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600094990.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094990.22583.mbox:2,S new file mode 100644 index 00000000..69094e51 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094990.22583.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Thu Jul 16 20:50:57 2015 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] MIME parsing and part numbering +Message-ID: <55A87BA1.25167.5CD5348F@David.Harris.pmail.gen.nz> + +As I mentioned last week, I'm in the process of replacing my existing MIME parser. + +I'm putting together a commandline version of this parser that spits out a full MIME +parse including all IMAP-specific parts and part numbers, offsets, and octet and line +counts. I propose to make this application publicly available in the hope that it might +assist new IMAP developers to come to terms with the way MIME and IMAP +interact with each other, particularly in regard to part numbering. + +I have a library of over a million mail messages I can use to test it out, but if you +have a few interesting boundary-case messages, or hugely complex messages that +you would be willing to share with me for testing purposes only, I'd be glad to +receive them (although please be aware that I run my mail server with a 4MB per +message limit). Please zip them if possible. + +I have the bulk of the process sorted out, but would be grateful for quick +confirmation of two points: + +1: In IMAP terms, for a part that is of type MESSAGE/RFC822 and which is not +itself multipart, ".TEXT" and ".1" should yield the same data +when fetched. + +2: For a non-multipart message of any type, a request to fetch part "1.MIME" should +synthesize a return containing all headers starting with "Content-" from the +message's headers and terminate them with a CRLF. + +For point (2), are there any other headers I should be including in the synthesis? + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Newspaper misprints from around the world: + "After the boat had been secured above the wrecked galleon the + apparatus was set in motion by the captain's 18-year old daughter, + Veronica. Within an hour, she was yielding her treasure to the + excited crew." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094991.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094991.22538.mbox:2,S new file mode 100644 index 00000000..7dce7cb1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094991.22538.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From gds at chartertn.net Fri Oct 13 18:41:48 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Is server re-use of UID OK? +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + + + <1a206274-8bce-f789-4dc9-638ed20e9372@chartertn.net> + + + + + <20430a7a-eeda-a60b-bf79-d55f1289f17a@chartertn.net> + +Message-ID: + +On 10/13/17 9:13 PM, Brandon Long wrote: +> +> > I think that severs could implement either, the usage isn't write to +> spec or quite against.? That said, leaving \Deleted can result in the +> unexpected behavior of message loss, which should be avoided, so the +> user friendly choice is to not leave \Deleted in that case. + +Yeah, you're right again. The rfc only say copy SHOULD preserve the +flags and date and SHOULD set the Recent flag. Not mandatory. + +Again, thanks for the info. + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094991.22548.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094991.22548.mbox:2,S new file mode 100644 index 00000000..b864b84e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094991.22548.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Mar 20 14:33:03 2017 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] What is the current consensus on the Recent + flag? +References: + + +Message-ID: <4kodMXgo62S28KBTeecQpMvl8FsUlee+YzxYpLzzzL8=.sha-256@antelope.email> + +Strange, but pleasant, when several people agree except for details, +and then none of them start arguing about the details. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600094991.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094991.22553.mbox:2,S new file mode 100644 index 00000000..3592d4cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094991.22553.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From kmansoft at gmail.com Fri Feb 24 04:09:08 2017 +To: imap-protocol@u.washington.edu +From: Kostya Vasilyev +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail - OAUTH2 - failures since Feb 23 +Message-ID: + +Hi, + +My apologies to everyone for a message about Gmail that has nothing to +do with IMAP specifically. + +Hoping someone from Google (perhaps Brandon Long who I've seen lurk +here?) can respond and we can take the discussion off the list. + +--- + +Since Feb 23, we're seeing login / auth failures affecting a good +number of users. + +We support OAUTH2 and get the token through Google Play Services. + +I saw the issue on one of my phones and was able to debug it: + +- Most of the time, our code would get a valid looking token from +Google Play Services + +- A web API request using this token to get the user's name, email and +profile photo would work fine + +- And yet, using this token to log into Gmail would get "status code +400, bad request" from Gmail's IMAP and SMTP servers. + +At other times, there'd be a failure inside GoogleAuthUtil.getToken +with GoogleAuthException: Unknown + +So this looks to me like some back-end failure on Google's side, +specific to Gmail (by comparison, the user profile API is just fine). + +We found a workaround: + +Removing our app from "authorized apps" in "your Google account", and +the user re-authorizing the app seems to work. + +But until this is done, authentication keeps failing, even if our code +refreshes the token again. + +Is this a known issue? + +Are there changes we need to make or is this a bug (looks like a bug to me)? + +If this is confirmed as a bug on Google's side, when can we and our +users expect a fix? + +Thanks, and my apologies again to the IMAP list! + +PS - the app is called Aqua Mail, not sure if the issue is affecting +only our app. + +-- K + diff --git a/demo/ermis-f/imap-protocol/cur/1600094991.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094991.22572.mbox:2,S new file mode 100644 index 00000000..02ccf8e3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094991.22572.mbox:2,S @@ -0,0 +1,99 @@ +MBOX-Line: From blong at google.com Tue Nov 17 16:06:39 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <564BBF09.7050804@teamaol.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + <564BBF09.7050804@teamaol.com> +Message-ID: + +Or his client is eating the '* ' in some fashion, it would be good for +someone with an account to verify the bad behavior. + +They obviously think they're sending the right response, let's not assume +that they are sending the wrong one. + +Brandon + +On Tue, Nov 17, 2015 at 3:58 PM, Stu Brandt +wrote: + +> David - +> +> My read matches yours. Their 2nd line is neither a tagged or untagged +> response, rfc6851 section 3.3 has a specific example covering COPYUID in +> the response, and rfc6851 section 4.3 seems pretty clear when it says to +> send the COPYUID response code in an untagged OK. +> +> - Stuart +> +> +> On 11/17/15 6:11 PM, David Shaw wrote: +> +>> Hello, +>> +>> I'm currently beating my head against a problem with a particular server +>> implementation. The problem, as best I can work out from the outside, is +>> in UID MOVE. +>> +>> My understanding from RFC-6851 is that a UID MOVE transaction should look +>> something like this (cut and paste from the RFC): +>> +>> C: a UID MOVE 42:69 foo +>> S: * OK [COPYUID 432432 42:69 1202:1229] +>> S: * 22 EXPUNGE +>> S: (more expunges) +>> S: a OK Done +>> +>> The relevant piece of this for my question is that the COPYUID response +>> is in an untagged OK. Again, from the RFC: "Servers implementing UIDPLUS +>> are also advised to send the COPYUID response code in an untagged OK before +>> sending EXPUNGE or moved responses." +>> +>> This seems straightforward. +>> +>> The server I'm having a problem (outlook.office365.com) with has a UID +>> MOVE transaction like this (actual transaction captured from my client): +>> +>> C: 14 UID MOVE 7599 "Deleted Items" +>> S: [COPYUID 12 7599 4788] +>> S: * 373 EXPUNGE +>> S: * 372 EXISTS +>> S: 14 OK MOVE completed. +>> +>> The concern is with the second line (the COPYUID response). There is no +>> untagged OK / "* OK" there, which seems incorrect to me and perhaps more +>> significantly, seems to cause the Apple iOS mail program to throw an error +>> every time a message is moved from folder to folder (which of course +>> includes the "delete this message" function). +>> +>> I've spent (literally) weeks trying to get Microsoft Office365 support to +>> acknowledge the problem, without success. The most recent response insists +>> that they are following the RFC, and in fact quoted the "Servers +>> implementing UIDPLUS are also advised to send the COPYUID response code in +>> an untagged OK before sending EXPUNGE or moved responses." line from +>> RFC-6851 as what they are doing. +>> +>> Could the experts on this list help me understand what is going on here? +>> I have no particular need to be "right" - I just want to be able to delete +>> messages without getting errors every single time. +>> +>> Thanks, +>> +>> David +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094991.22575.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094991.22575.mbox:2,S new file mode 100644 index 00000000..d957e69a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094991.22575.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From Neil_Hunsperger at symantec.com Thu Oct 29 10:30:58 2015 +To: imap-protocol@u.washington.edu +From: Neil Hunsperger +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Automap feature when rfc6154 is not supported + (for imapsync). +In-Reply-To: <563203EE.6060603@laposte.net> +References: <5630E048.7060001@laposte.net> + <14D026C7F297AD44AC82578DD818CDD047B9AC7BAC@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + <563203EE.6060603@laposte.net> +Message-ID: <14D026C7F297AD44AC82578DD818CDD047BA8080A1@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + +Hi Gilles, + +> Ok. Do you really encountered different cases writings or all are in +> fact only uppercase for the first characters like in "Sent Messages"? + +Looking back at the earliest notes I can find, I see only initial capitals for English folder names like "Sent Items" and not "Sent items" or "SENT ITEMS". French and Spanish used lower case second words. I can't find a record of the original capitalization of the two German versions. + +> +> > ???????? +> +> Ok, you I think you mean &kAFP4W4IMH8wojCkMMYw4A- + +These were converted from mod UTF-7 back to Unicode before being recorded. + +Cheers, +-Neil diff --git a/demo/ermis-f/imap-protocol/cur/1600094991.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094991.22583.mbox:2,S new file mode 100644 index 00000000..ac3708b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094991.22583.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu Jul 16 22:10:09 2015 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] MIME parsing and part numbering +In-Reply-To: <55A87BA1.25167.5CD5348F@David.Harris.pmail.gen.nz> +References: <55A87BA1.25167.5CD5348F@David.Harris.pmail.gen.nz> +Message-ID: <55A88E31.7000002@verizon.net> + +On 7/16/2015 10:50 PM, David Harris wrote: +> As I mentioned last week, I'm in the process of replacing my existing MIME parser. +> +> I'm putting together a commandline version of this parser that spits out a full MIME +> parse including all IMAP-specific parts and part numbers, offsets, and octet and line +> counts. I propose to make this application publicly available in the hope that it might +> assist new IMAP developers to come to terms with the way MIME and IMAP +> interact with each other, particularly in regard to part numbering. +> +> I have a library of over a million mail messages I can use to test it out, but if you +> have a few interesting boundary-case messages, or hugely complex messages that +> you would be willing to share with me for testing purposes only, I'd be glad to +> receive them (although please be aware that I run my mail server with a 4MB per +> message limit). Please zip them if possible. + +Several years ago, I tested a message where the body was a +message/rfc822 part. On four different IMAP servers, I got four +different results for the part numbering. I don't have an actual copy of +it as an evil message, but it is an evil edge case worth considering. + +It's also worth considering as potential edge cases TNEF, uuencode, +message/news, message/global. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094991.22586.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094991.22586.mbox:2,S new file mode 100644 index 00000000..8e0a918e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094991.22586.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Sun Jun 28 23:11:34 2015 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Parsing, part numbering and BODYSTRUCTURE +Message-ID: <5590E196.25712.A2E3FB@David.Harris.pmail.gen.nz> + +For reasons that aren't relevant here, I'm in the process of rewriting my MIME +parser for about the fifth time in twenty-five years. Each time I do this I find I spend +a lot of time trying to reconcile the way I do my parsing with the demands of IMAP. I +should probably keep notes each time, but I never do. *sigh*. + +A lot of the trouble I have comes from the paucity of detail in RFC3501 over two key +issues - part numbering, and BODYSTRUCTURE. This is not helped by what +appears to me to be an erratum - the sample numbering scheme shown on page +56, which appears to suggest that the bare part number for any part of a message +references the first byte of the part INCLUDING any MIME headers it might have (if +you look at 4.1, it is *followed* by 4.1.MIME, which appears to suggest that the +MIME headers are a subset of 4.1). + +So here's my first question: could someone confirm for me that a bare part number +(such as "4.1") refers to the part starting at the first byte *following* the CRLF at the +end of its MIME headers? + +Next, in a BODYSTRUCTURE, do the line and octet counts for such a part include +the MIME headers, or not? I believe the correct answer is "not", but would like to +know for sure. + +This leads to my next question, which is "is BODYSTRUCTURE reversible"? That +is, if you parse a message, build a BODYSTRUCTURE from the parsed data, then +re-parse the BODYSTRUCTURE, will the two parses be the same? I have to clarify +here, because this question depends on context: if you're parsing for an IMAP +server, it's quite reasonable to assume that your parser will build two entries for +each part, the first tracking the offset of the MIME headers for the part, the second +tracking the offset of the part itself: this allows you to do a simple lookup to satisfy +fetches for both and .MIME... Yet it seems to me that +you cannot reconstruct this information from a BODYSTRUCTURE - you would +lose the offset to the MIME headers. Why am I asking this? I'm trying to work out if +it's possible to use BODYSTRUCTURE as a way of storing a parse between +invocations, since it's always going to be far quicker to parse a BODYSTRUCTURE +than it is to read the entire message again. + +Finally, is there a detailed discussion of part numbering and BODYSTRUCTURE +anywhere? I had a look through the RFC index and couldn't see any other +documents that might expand on these subjects, and google didn't yield anything +helpful either. And in a similar vein, is there a repository anywhere of sample +messages with matching canonical part number listings and bodystructures? This +would be extremely helpful in testing parsers and bodystructure generators. + +I'm sure this has all been asked a billion times before, and I apologize for that, but +any guidance would be gratefully received. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Thought for the day: + A diplomat is a man who can convince his wife she'd look + stout in a fur coat. + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094992.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094992.22538.mbox:2,S new file mode 100644 index 00000000..f000bd89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094992.22538.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From gds at chartertn.net Thu Oct 26 22:23:23 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] authenticate LOGIN question +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + +Message-ID: <8204fbd1-3679-c8cc-7f92-d4307867ece0@chartertn.net> + +While working on thunderbird bug 1408610 (*) I attempted to do an +"authenticate LOGIN" to the imap.mail.yahoo.com server with unsuccessful +results (tb = thunderbird, yh = yahoo): + +tb: 2 authenticate LOGIN +yh: + <-- no Username: "challenge" sent here. +tb: +yh: + +tb: +yh: 2 BAD [AUTHENTICATIONFAILED] LOGIN Invalid credentials + +I get this result when sent by tb or when sent manually using openssl. I +have tried several variants to see if it would work such as sending +separate base64 encoded and spaced separated uid and pwd right after the +first yh + response. Also tried base64 encoded "\0\0", that +works for PLAIN, after yh + response and others variations to no avail. + +Authenticate PLAIN and simple imap login with normal ascii uid and pwd +text work OK. Noticed that few imap servers even support "authenticate +LOGIN". One that I did find that supports it, after providing the uid +and pwd, reports RENEGOTIATING and then openssl crashes. + +Only official documentation I could find on "authenticate login" is +https://tools.ietf.org/html/draft-murchison-sasl-login-00 but it only +provides an example for smtp. + +-gene +P/S: The yahoo server reports a capability AUTH=LOGIN +(*) https://bugzilla.mozilla.org/show_bug.cgi?id=1408610 + diff --git a/demo/ermis-f/imap-protocol/cur/1600094992.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094992.22553.mbox:2,S new file mode 100644 index 00000000..a86687f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094992.22553.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dot at dotat.at Fri Feb 24 04:25:58 2017 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail - OAUTH2 - failures since Feb 23 +In-Reply-To: +References: +Message-ID: + +Kostya Vasilyev wrote: + +> Hoping someone from Google (perhaps Brandon Long who I've seen lurk +> here?) can respond and we can take the discussion off the list. + +Try the mailop list - http://chilli.nosignal.org/mailman/listinfo/mailop + +Tony. +-- +f.anthony.n.finch http://dotat.at/ - I xn--zr8h punycode +Bailey: Southeast gale 8 to storm 10, veering west 7 to severe gale 9. Rough +or very rough, becoming very rough or high. Rain, showers later. Moderate or +poor. + diff --git a/demo/ermis-f/imap-protocol/cur/1600094992.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094992.22572.mbox:2,S new file mode 100644 index 00000000..3217d239 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094992.22572.mbox:2,S @@ -0,0 +1,125 @@ +MBOX-Line: From jjmckay at comaxis.com Tue Nov 17 16:36:36 2015 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + <564BBF09.7050804@teamaol.com> + +Message-ID: <564BC814.8080409@comaxis.com> + +I just tried it and I would agree with David that O365 is indeed +behaving as he described - no untagged OK in response to UID MOVE. My +only point, in response to Bron, is that as as developer at a company +that wants to make actual sales, I do sometimes have to put in kludges to +deal with crappy imap servers. I guess David is writing some kind of +add-in for iOS Mail where he can't do that. I would think though that +the Apple folks could get Microsoft to see the light. + +On 11/17/2015 4:06 PM, Brandon Long wrote: +> Or his client is eating the '* ' in some fashion, it would be good for +> someone with an account to verify the bad behavior. +> +> They obviously think they're sending the right response, let's not +> assume that they are sending the wrong one. +> +> Brandon +> +> On Tue, Nov 17, 2015 at 3:58 PM, Stu Brandt > wrote: +> +> David - +> +> My read matches yours. Their 2nd line is neither a tagged or +> untagged response, rfc6851 section 3.3 has a specific example +> covering COPYUID in the response, and rfc6851 section 4.3 seems +> pretty clear when it says to send the COPYUID response code in an +> untagged OK. +> +> - Stuart +> +> +> On 11/17/15 6:11 PM, David Shaw wrote: +> +> Hello, +> +> I'm currently beating my head against a problem with a +> particular server implementation. The problem, as best I can +> work out from the outside, is in UID MOVE. +> +> My understanding from RFC-6851 is that a UID MOVE transaction +> should look something like this (cut and paste from the RFC): +> +> C: a UID MOVE 42:69 foo +> S: * OK [COPYUID 432432 42:69 1202:1229] +> S: * 22 EXPUNGE +> S: (more expunges) +> S: a OK Done +> +> The relevant piece of this for my question is that the COPYUID +> response is in an untagged OK. Again, from the RFC: "Servers +> implementing UIDPLUS are also advised to send the COPYUID +> response code in an untagged OK before sending EXPUNGE or +> moved responses." +> +> This seems straightforward. +> +> The server I'm having a problem (outlook.office365.com +> ) with has a UID MOVE +> transaction like this (actual transaction captured from my +> client): +> +> C: 14 UID MOVE 7599 "Deleted Items" +> S: [COPYUID 12 7599 4788] +> S: * 373 EXPUNGE +> S: * 372 EXISTS +> S: 14 OK MOVE completed. +> +> The concern is with the second line (the COPYUID response). +> There is no untagged OK / "* OK" there, which seems incorrect +> to me and perhaps more significantly, seems to cause the Apple +> iOS mail program to throw an error every time a message is +> moved from folder to folder (which of course includes the +> "delete this message" function). +> +> I've spent (literally) weeks trying to get Microsoft Office365 +> support to acknowledge the problem, without success. The most +> recent response insists that they are following the RFC, and +> in fact quoted the "Servers implementing UIDPLUS are also +> advised to send the COPYUID response code in an untagged OK +> before sending EXPUNGE or moved responses." line from RFC-6851 +> as what they are doing. +> +> Could the experts on this list help me understand what is +> going on here? I have no particular need to be "right" - I +> just want to be able to delete messages without getting errors +> every single time. +> +> Thanks, +> +> David +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094992.22575.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094992.22575.mbox:2,S new file mode 100644 index 00000000..52169ecc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094992.22575.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From gilles.lamiral at laposte.net Thu Oct 29 19:11:10 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Automap feature when rfc6154 is not supported + (for imapsync). +In-Reply-To: <20151029212345.114A512084B@relay.mailchannels.net> +References: <5630E048.7060001@laposte.net> + <14D026C7F297AD44AC82578DD818CDD047B9AC7BAC@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + <563203EE.6060603@laposte.net> + <20151029212345.114A512084B@relay.mailchannels.net> +Message-ID: <5632D1BE.8020209@laposte.net> + +Hi Pete, + +Thanks for this! +Have in mind that I don't want a correct translation +but common translations found in email softwares, no matter how foolish +they are. Also I don't care about Gmail or Dovecot since they already +support rfc6154. The process will be to search for folders named +like "Lixeira" and use them if they exist but it won't be to use +them if they don't exist in the mailbox. + + +> My partner is Portuguese and offers the following: +> +> All mail - correio +> Archive - arquivo +> +> Drafts ~rascunhos +> +> Flagged ...-com bandeira de sinalizao (the final 'a' with a tilde accent) +> +> Junk/spam - spam +> +> Sent mail - correio enviado +> +> Trash - lixo (in Portugal) lixeira (in Brazil) +> + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600094992.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094992.22583.mbox:2,S new file mode 100644 index 00000000..baf2509a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094992.22583.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From imap at maclean.com Fri Jul 17 02:05:44 2015 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] MIME parsing and part numbering +In-Reply-To: <55A87BA1.25167.5CD5348F@David.Harris.pmail.gen.nz> +References: <55A87BA1.25167.5CD5348F@David.Harris.pmail.gen.nz> +Message-ID: + +I have a command-line version of my parser. I'll send you a copy in +case you would care to make some comparisons. I may also be able to +find a few challenging messages. + +Pete Maclean + +At 11:50 PM 7/16/2015, David Harris wrote: +>As I mentioned last week, I'm in the process of replacing my +>existing MIME parser. +> +>I'm putting together a commandline version of this parser that spits +>out a full MIME +>parse including all IMAP-specific parts and part numbers, offsets, +>and octet and line +>counts. I propose to make this application publicly available in the +>hope that it might +>assist new IMAP developers to come to terms with the way MIME and IMAP +>interact with each other, particularly in regard to part numbering. +> +>I have a library of over a million mail messages I can use to test +>it out, but if you +>have a few interesting boundary-case messages, or hugely complex +>messages that +>you would be willing to share with me for testing purposes only, I'd +>be glad to +>receive them (although please be aware that I run my mail server +>with a 4MB per +>message limit). Please zip them if possible. +> +>I have the bulk of the process sorted out, but would be grateful for quick +>confirmation of two points: +> +>1: In IMAP terms, for a part that is of type MESSAGE/RFC822 and which is not +>itself multipart, ".TEXT" and ".1" should yield +>the same data +>when fetched. +> +>2: For a non-multipart message of any type, a request to fetch part +>"1.MIME" should +>synthesize a return containing all headers starting with "Content-" from the +>message's headers and terminate them with a CRLF. +> +>For point (2), are there any other headers I should be including in +>the synthesis? +> +>Cheers! +> +>-- David -- +> +>------------------ David Harris -+- Pegasus Mail ---------------------- +>Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> +>Newspaper misprints from around the world: +> "After the boat had been secured above the wrecked galleon the +> apparatus was set in motion by the captain's 18-year old daughter, +> Veronica. Within an hour, she was yielding her treasure to the +> excited crew." +> +> +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094992.22586.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094992.22586.mbox:2,S new file mode 100644 index 00000000..38daa49a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094992.22586.mbox:2,S @@ -0,0 +1,130 @@ +MBOX-Line: From dave at cridland.net Mon Jun 29 01:35:47 2015 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Parsing, part numbering and BODYSTRUCTURE +In-Reply-To: <5590E196.25712.A2E3FB@David.Harris.pmail.gen.nz> +References: <5590E196.25712.A2E3FB@David.Harris.pmail.gen.nz> +Message-ID: + +On 29 June 2015 at 07:11, David Harris wrote: + +> For reasons that aren't relevant here, I'm in the process of rewriting my +> MIME +> parser for about the fifth time in twenty-five years. Each time I do this +> I find I spend +> a lot of time trying to reconcile the way I do my parsing with the demands +> of IMAP. I +> should probably keep notes each time, but I never do. *sigh*. +> +> A lot of the trouble I have comes from the paucity of detail in RFC3501 +> over two key +> issues - part numbering, and BODYSTRUCTURE. This is not helped by what +> appears to me to be an erratum - the sample numbering scheme shown on page +> 56, which appears to suggest that the bare part number for any part of a +> message +> references the first byte of the part INCLUDING any MIME headers it might +> have (if +> you look at 4.1, it is *followed* by 4.1.MIME, which appears to suggest +> that the +> MIME headers are a subset of 4.1). +> +> So here's my first question: could someone confirm for me that a bare part +> number +> (such as "4.1") refers to the part starting at the first byte *following* +> the CRLF at the +> end of its MIME headers? +> +> +Yes. Well, for leaf parts, anyway. + + +> Next, in a BODYSTRUCTURE, do the line and octet counts for such a part +> include +> the MIME headers, or not? I believe the correct answer is "not", but would +> like to +> know for sure. +> +> +I'd agree, octet counts there are expected to be those for the part itself +and not the headers. + + +> This leads to my next question, which is "is BODYSTRUCTURE reversible"? +> That +> is, if you parse a message, build a BODYSTRUCTURE from the parsed data, +> then +> re-parse the BODYSTRUCTURE, will the two parses be the same? I have to +> clarify +> here, because this question depends on context: if you're parsing for an +> IMAP +> server, it's quite reasonable to assume that your parser will build two +> entries for +> each part, the first tracking the offset of the MIME headers for the +> part, the second +> tracking the offset of the part itself: this allows you to do a simple +> lookup to satisfy +> fetches for both and .MIME... Yet it seems to me +> that +> you cannot reconstruct this information from a BODYSTRUCTURE - you would +> lose the offset to the MIME headers. Why am I asking this? I'm trying to +> work out if +> it's possible to use BODYSTRUCTURE as a way of storing a parse between +> invocations, since it's always going to be far quicker to parse a +> BODYSTRUCTURE +> than it is to read the entire message again. +> +> +So by "is BODYSTRUCTURE reversible", I thought you meant something else +entirely. + +But no, BODYSTRUCTURE itself doesn't contain the offsets into the message, +and may have normalized other parts of the data. A server would need more +data, and as I recall it's not quite a superset either - there are items +you need for the BODYSTRUCTURE which aren't otherwise useful for a server. + +But - also as I recall - Cyrus IMAP does a single parse which extracts both +a server-side structure and the BODYSTRUCTURE. + + +> Finally, is there a detailed discussion of part numbering and BODYSTRUCTURE +> anywhere? I had a look through the RFC index and couldn't see any other +> documents that might expand on these subjects, and google didn't yield +> anything +> helpful either. And in a similar vein, is there a repository anywhere of +> sample +> messages with matching canonical part number listings and bodystructures? +> This +> would be extremely helpful in testing parsers and bodystructure generators. +> +> +I vaguely recall a lengthy discussion on a mailing list (either this one or +imapext) a few years back, but I can't find it immediately either. + + +> I'm sure this has all been asked a billion times before, and I apologize +> for that, but +> any guidance would be gratefully received. +> +> Cheers! +> +> -- David -- +> +> ------------------ David Harris -+- Pegasus Mail ---------------------- +> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> +> Thought for the day: +> A diplomat is a man who can convince his wife she'd look +> stout in a fur coat. +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094992.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094992.22589.mbox:2,S new file mode 100644 index 00000000..f20e56df --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094992.22589.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Wed May 6 03:42:10 2015 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] RFC2180 expunges on shared mailboxes +Message-ID: <5549F002.19423.4AA4F1E4@David.Harris.pmail.gen.nz> + +Just wondering... + +Of the four possible approaches outlined in RFC2180 section 4 for handling +EXPUNGE commands on shared (multiply-accessed) mailboxes, is there any one +that has become more broadly acceptable than any other? + +For historical reasons, I have always used the approach in 4.1.4 (fail the expunge +while the mailbox is shared) because in the early days I found that there were +clients that would become confused by the EXPUNGE responses to their NOOP +commands and end up subsequently deleting messages they didn't intend to +delete, which seemed like a much more serious problem than simply failing a +command. + +Unfortunately, with the rise of (often brain-dead) small-device IMAP +implementations, I'm now getting customers complaining that the 4.1.4 approach +causes too many problems for them, but I don't want to make a unilateral change if +the other approaches are just as bad. + +Any general observations on this? + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Real newspaper headlines from U.S. papers: + COLLEGIANS ARE TURNING TO VEGETABLES + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094993.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094993.22538.mbox:2,S new file mode 100644 index 00000000..9b8f7542 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094993.22538.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From gds at chartertn.net Tue Oct 31 15:45:05 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] authenticate LOGIN question +In-Reply-To: <1509483762.929.2.camel@16bits.net> +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + <8204fbd1-3679-c8cc-7f92-d4307867ece0@chartertn.net> + <1509483762.929.2.camel@16bits.net> +Message-ID: + +On 10/31/17 5:02 PM, ?ngel wrote: +> Copying you in CC, Gene as the mailing list thinks this is spam... + +Thanks. +> On 2017-10-27 at 01:23 -0400, Gene Smith wrote: +>> One that I did find that supports it, after providing the uid +>> and pwd, reports RENEGOTIATING and then openssl crashes. +> +> You have entered in openssl a line beginning with uppercase R +> This made openssl to renegotiate the TLS connection, which many servers +> don't support. +> +> It is quite similar to that, but openssl s_client does not provide a +> transparent tunnel for tls connections. +> This is a common pitfall when testing smtp sending with starttls, as you +> can't issue "RCPT TO:" (the good news is that the protocol is case +> insensitive, so "rcpt to:" works). +> +> In IMAP the problematic letter will be at an identifier prefix, so the +> solution is simply to choose a different one. +> +> s_client(1) says about this: +>> When used interactively (which means neither -quiet nor +>> -ign_eof have been given), the session will be renegotiated if the line +>> begins with an R, and if the line begins with a Q or if end of file is +>> reached, the connection will be closed down. +> +> Best regards + +Thanks for the info on openssl/s_client. I did not know about this +behavior. You are right. The last thing I entered was the base64 encoded +password and it begins with R. That explains that. Just to be clear, +this is a different server that supports authenticate login and not the +problem yahoo server. + +So my question is still why yahoo (and possibly other servers that I +haven't encountered) won't accept the uid and password (both base64 +encoded) but claim to have authenticate login capability. This is using +a normal client or openssl and neither uid or password, after base64 +encoding, begin with R. + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094993.22553.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094993.22553.mbox:2,S new file mode 100644 index 00000000..e8b56696 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094993.22553.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From blong at google.com Fri Feb 24 08:55:25 2017 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail - OAUTH2 - failures since Feb 23 +In-Reply-To: +References: + +Message-ID: + +https://twitter.com/Google/status/834993667911737345 + +We had some issues with account login yesterday for oauth, it should all be +resolved now. + +On Feb 24, 2017 4:26 AM, "Tony Finch" wrote: + +> Kostya Vasilyev wrote: +> +> > Hoping someone from Google (perhaps Brandon Long who I've seen lurk +> > here?) can respond and we can take the discussion off the list. +> +> Try the mailop list - http://chilli.nosignal.org/mailman/listinfo/mailop +> +> Tony. +> -- +> f.anthony.n.finch http://dotat.at/ - I xn--zr8h +> punycode +> Bailey: Southeast gale 8 to storm 10, veering west 7 to severe gale 9. +> Rough +> or very rough, becoming very rough or high. Rain, showers later. Moderate +> or +> poor. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094993.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094993.22572.mbox:2,S new file mode 100644 index 00000000..de59e3f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094993.22572.mbox:2,S @@ -0,0 +1,216 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 17 19:29:43 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <564BC814.8080409@comaxis.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + <564BBF09.7050804@teamaol.com> + + <564BC814.8080409@comaxis.com> +Message-ID: <1447817383.3655600.442841513.22BFE21F@webmail.messagingengine.com> + + + + +On Wed, Nov 18, 2015, at 11:36, Jeff McKay wrote: +> I just tried it and I would agree with David that O365 is indeed + behaving as he described - no untagged OK in response to UID MOVE. + +I can also confirm this - sorry about the few hour delay, dentist +appointment in the middle of all this. + +I've bought myself an O365 account and tested it just to see it for +myself, this is with openssl s_client + +. FETCH 1:* UID +* 1 FETCH (UID 8) +. OK FETCH completed. +. MOVE 1 Extra [COPYUID 78 8 1] +* 1 EXPUNGE +* 0 EXISTS +. OK MOVE completed. + +> > + My +> + only point, in response to Bron, is that as as developer at a + company that wants to make actual sales, I do sometimes have to put + in kludges to +> + deal with crappy imap servers. + +Likewise, and I deal in cludges for crappy clients as well.? At least I +had already done the work to make EXPUNGE on a mailbox with no \Deleted +messages be cheap, because there's a popular client in the wild which +does an IDLE/EXPUNGE loop now, and it's hammering people running older +versions of the Cyrus IMAPd server which had expensive EXPUNGE. + +I still rate Yahoo's IMAP server returning a DIFFERENT RFC822.SIZE for +the same message moved to a different mailbox, despite neither of them +matching the actual byte count on the RFC822 itself as one of the most +impressive things I've worked around recently.? The really is +approximately nothing you can rely on being actually right when talking +to an arbitrary server, it's all heuristics. + +(certainly older versions of Cyrus had serious issues with reliable +CONDSTORE, and I bet there are some poky corners of URLAUTH and other +rarely-loved bits that aren't perfect) + +> I guess David is writing some kind + of add-in for iOS Mail where he can't do that.? I would think + though that +> + the Apple folks could get Microsoft to see the light. + +It's all a matter of getting the right people, and the bigger the org, +the harder it is to get in contact with them.? We're really lucky to +have people like Brandon here so we can bypass having to find someone +who actually does front-line gmail support and then escalate past them +to someone who can actually fix things! + +Bron. + +> On 11/17/2015 4:06 PM, Brandon Long + wrote: +>> Or his client is eating the '* ' in some fashion, + it would be good for someone with an account to verify the + bad behavior. +>> +>> They obviously think they're sending the right response, + let's not assume that they are sending the wrong one. +>> +>> Brandon +>> +>> On Tue, Nov 17, 2015 at 3:58 PM, Stu + Brandt wrote: +>>> David - +>>> +>>> + My read matches yours. Their 2nd line is neither a tagged or + untagged response, rfc6851 section 3.3 has a specific + example covering COPYUID in the response, and rfc6851 + section 4.3 seems pretty clear when it says to send the + COPYUID response code in an untagged OK. +>>> +>>> + - Stuart +>>> +>>> +>>> + On 11/17/15 6:11 PM, David Shaw wrote: +>>>> Hello, +>>>> +>>>> + I'm currently beating my head against a problem with a + particular server implementation.? The problem, as + best I can work out from the outside, is in UID MOVE. +>>>> +>>>> + My understanding from RFC-6851 is that a UID MOVE + transaction should look something like this (cut and + paste from the RFC): +>>>> +>>>> + C: a UID MOVE 42:69 foo +>>>> + S: * OK [COPYUID 432432 42:69 1202:1229] +>>>> + S: * 22 EXPUNGE +>>>> + S: (more expunges) +>>>> + S: a OK Done +>>>> +>>>> + The relevant piece of this for my question is that the + COPYUID response is in an untagged OK.? Again, from + the RFC: "Servers implementing UIDPLUS are also + advised to send the COPYUID response code in an + untagged OK before sending EXPUNGE or moved + responses." +>>>> +>>>> + This seems straightforward. +>>>> +>>>> + The server I'm having a problem + (outlook.office365.com) with has a UID MOVE + transaction like this (actual transaction captured + from my client): +>>>> +>>>> + C: 14 UID MOVE 7599 "Deleted Items" +>>>> + S:? [COPYUID 12 7599 4788] +>>>> + S:? * 373 EXPUNGE +>>>> + S:? * 372 EXISTS +>>>> + S:? 14 OK MOVE completed. +>>>> +>>>> + The concern is with the second line (the COPYUID + response).? There is no untagged OK / "* OK" there, + which seems incorrect to me and perhaps more + significantly, seems to cause the Apple iOS mail + program to throw an error every time a message is + moved from folder to folder (which of course includes + the "delete this message" function). +>>>> +>>>> + I've spent (literally) weeks trying to get Microsoft + Office365 support to acknowledge the problem, without + success.? The most recent response insists that they + are following the RFC, and in fact quoted the "Servers + implementing UIDPLUS are also advised to send the + COPYUID response code in an untagged OK before sending + EXPUNGE or moved responses." line from RFC-6851 as + what they are doing. +>>>> +>>>> + Could the experts on this list help me understand what + is going on here?? I have no particular need to be + "right" - I just want to be able to delete messages + without getting errors every single time. +>>>> +>>>> + Thanks, +>>>> +>>>> + David +>>>> +>>>> + _______________________________________________ +>>>> + Imap-protocol mailing list +>>>> Imap-protocol@u.washington.edu +>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>>> + _______________________________________________ +>>> + Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> +>> +>> _______________________________________________ +Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> _________________________________________________ +> Imap-protocol mailing list Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-- +? Bron Gondwana +? brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094993.22575.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094993.22575.mbox:2,S new file mode 100644 index 00000000..8a5bd735 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094993.22575.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From gilles.lamiral at laposte.net Thu Oct 29 19:20:48 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Automap feature when rfc6154 is not supported + (for imapsync). +In-Reply-To: <14D026C7F297AD44AC82578DD818CDD047BA8080A1@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +References: <5630E048.7060001@laposte.net> + <14D026C7F297AD44AC82578DD818CDD047B9AC7BAC@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + <563203EE.6060603@laposte.net> + <14D026C7F297AD44AC82578DD818CDD047BA8080A1@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +Message-ID: <5632D400.4080104@laposte.net> + +Hi Neil, + +> Looking back at the earliest notes I can find, I see only initial capitals +>for English folder names like "Sent Items" and not "Sent items" or "SENT ITEMS". +>French and Spanish used lower case second words. + +Ok, good. I keep my current code. + +>I can't find a record of the original capitalization of the two German versions. + +No problem, it will be a bugfix later, Germans use imapsync a lot. +Or better I search on the web right now. I find: +"Gesendete Objekte" hie?t es in Outlook 2007. +"Gesendete Elemente" hei?t es in Outlook 2010. + +So far so good. + +>>> ???????? +>> +>> Ok, you I think you mean &kAFP4W4IMH8wojCkMMYw4A- +> +> These were converted from mod UTF-7 back to Unicode before being recorded. + +Yes. It was a joke, both are all Greek to me. + + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600094993.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094993.22583.mbox:2,S new file mode 100644 index 00000000..1791de9f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094993.22583.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From yuganyaa at gmail.com Fri Jul 17 05:03:58 2015 +To: imap-protocol@u.washington.edu +From: yuganya +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Duplicate mail detection criteria +Message-ID: + +Am using imap in thunderbird. When i delete large attachment, gmail detects +it and syncing it with web. When i delete a small attachment (500 bytes) , +It not syncing with web. +On analysing further, When deleting large attachment there is a drastic +change in size and gmail accepts it as new message. but while deleting a +small attachment,gmail detects it as duplicate and ignores it. + +so what is the criteria gmail using for duplicate detection. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094993.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094993.22589.mbox:2,S new file mode 100644 index 00000000..af2b50e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094993.22589.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu May 7 10:45:54 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] RFC2180 expunges on shared mailboxes +In-Reply-To: <5549F002.19423.4AA4F1E4@David.Harris.pmail.gen.nz> +References: <5549F002.19423.4AA4F1E4@David.Harris.pmail.gen.nz> +Message-ID: <554BA4D2.4090405@isode.com> + +Hi David, + +On 06/05/2015 11:42, David Harris wrote: +> Just wondering... +> +> Of the four possible approaches outlined in RFC2180 section 4 for handling +> EXPUNGE commands on shared (multiply-accessed) mailboxes, is there any one +> that has become more broadly acceptable than any other? +> +> For historical reasons, I have always used the approach in 4.1.4 (fail the expunge +> while the mailbox is shared) because in the early days I found that there were +> clients that would become confused by the EXPUNGE responses to their NOOP +> commands and end up subsequently deleting messages they didn't intend to +> delete, which seemed like a much more serious problem than simply failing a +> command. +> +> Unfortunately, with the rise of (often brain-dead) small-device IMAP +> implementations, I'm now getting customers complaining that the 4.1.4 approach +> causes too many problems for them, but I don't want to make a unilateral change if +> the other approaches are just as bad. +I think 4.1.2 and 4.1.1 are my personal favourites. Isode implemented +4.1.2. +> Any general observations on this? +> +> Cheers! +> +> -- David -- +> +> ------------------ David Harris -+- Pegasus Mail ---------------------- +> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> +> Real newspaper headlines from U.S. papers: +> COLLEGIANS ARE TURNING TO VEGETABLES +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094993.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094993.22592.mbox:2,S new file mode 100644 index 00000000..ecb00e63 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094993.22592.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Mon Apr 6 05:05:54 2015 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <55109D4C.2080900@laposte.net> +References: <55109D4C.2080900@laposte.net> +Message-ID: <7C224ADC-D72B-4D77-8320-4D9D94C508DF@iki.fi> + +On 24 Mar 2015, at 08:10, Gilles LAMIRAL wrote: + +> My main goal is to add a wizard mode to imapsync, a mode where options +> for specific imap servers are set automagically. Avoiding that users +> and I always read and apply the same FAQ items is a user experience +> improvement I aim. + +What kind of options? In theory you should get everything from CAPABILITY and NAMESPACE replies of course. This kind of detection sounds very much like what the ID extension RFC says MUST NOT be used for any behavioral differences. But I suppose in practise it may be useful/necessary sometimes. + +> Do you share on OpenEmailSurvey project? +> Is there a mailing-list or similar? +> Are code or principles to detect real imap server softwares open? + +Not really. It sends a couple of IMAP commands to server (capability, id, unknowncmd, logout) and saves the unique replies to database. Then with some manual work and scripts the different replies are assigned to different servers. Ugly and time consuming work that I wouldn't recommend for any IMAP client developers to use. + +An old mapping list is available in http://www.imapwiki.org/Specs/Raw but a new one would require some SQL database dump and maybe some other things.. + +> My other questions about OpenEmailSurvey, less important for my +> purpose, are the followings: +> +> 100% IPv4 scanned is claimed: How do you deal with abuse reports? + +In earlier years there weren't that many of them and we added the reported networks to the zmap blacklist, but this year there were enough of them to stop the scan entirely. Anybody want to host such a scan? :) Or maybe it would work to just make it run more slowly.. + +> What means a crossed out imap server on +> http://www.openemailsurvey.org/ ? + +Software used by only a single service provider. Possibly only an IMAP proxy, but maybe also a backend. We only bothered to add that to a couple of providers with a ton of IP addresses. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094994.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094994.22538.mbox:2,S new file mode 100644 index 00000000..ac6470ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094994.22538.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From tjs at psaux.com Tue Oct 31 19:04:36 2017 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] authenticate LOGIN question +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + <8204fbd1-3679-c8cc-7f92-d4307867ece0@chartertn.net> + <1509483762.929.2.camel@16bits.net> + +Message-ID: + +I haven't worked on the Y! IMAP server in several years at this point, and +I can't speak for their current implementation. I know that they have +rewritten a lot of it since I left. + +But it is quite possible that it's simply a bug. I don't know which clients +would still support AUTH=LOGIN. I would not advise any client to use +AUTH=LOGIN, particularly not if PLAIN is available. LOGIN is not a good +mechanism, and is strictly worse than both basic LOGIN and PLAIN. It's just +more round trips for what I recall to be a silly protocol. + +Tim + + +On Tue, Oct 31, 2017 at 3:45 PM, Gene Smith wrote: + +> On 10/31/17 5:02 PM, ?ngel wrote: +> +>> Copying you in CC, Gene as the mailing list thinks this is spam... +>> +> +> Thanks. +> +>> On 2017-10-27 at 01:23 -0400, Gene Smith wrote: +>> +>>> One that I did find that supports it, after providing the uid +>>> and pwd, reports RENEGOTIATING and then openssl crashes. +>>> +>> +>> You have entered in openssl a line beginning with uppercase R +>> This made openssl to renegotiate the TLS connection, which many servers +>> don't support. +>> +>> It is quite similar to that, but openssl s_client does not provide a +>> transparent tunnel for tls connections. +>> This is a common pitfall when testing smtp sending with starttls, as you +>> can't issue "RCPT TO:" (the good news is that the protocol is case +>> insensitive, so "rcpt to:" works). +>> +>> In IMAP the problematic letter will be at an identifier prefix, so the +>> solution is simply to choose a different one. +>> +>> s_client(1) says about this: +>> +>>> When used interactively (which means neither -quiet nor +>>> -ign_eof have been given), the session will be renegotiated if the line +>>> begins with an R, and if the line begins with a Q or if end of file is +>>> reached, the connection will be closed down. +>>> +>> +>> Best regards +>> +> +> Thanks for the info on openssl/s_client. I did not know about this +> behavior. You are right. The last thing I entered was the base64 encoded +> password and it begins with R. That explains that. Just to be clear, this +> is a different server that supports authenticate login and not the problem +> yahoo server. +> +> So my question is still why yahoo (and possibly other servers that I +> haven't encountered) won't accept the uid and password (both base64 +> encoded) but claim to have authenticate login capability. This is using a +> normal client or openssl and neither uid or password, after base64 +> encoding, begin with R. +> +> -gene +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094994.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094994.22572.mbox:2,S new file mode 100644 index 00000000..2ad6253e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094994.22572.mbox:2,S @@ -0,0 +1,103 @@ +MBOX-Line: From dshaw at jabberwocky.com Tue Nov 17 19:32:33 2015 +To: imap-protocol@u.washington.edu +From: David Shaw +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <564BC814.8080409@comaxis.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + <564BBF09.7050804@teamaol.com> + + <564BC814.8080409@comaxis.com> +Message-ID: <6AE55419-5337-4B1C-9AB5-F69FD47868D8@jabberwocky.com> + +Thanks everyone for the responses. + +Just to clarify - this isn't involving an add-in or extension for iOS Mail. If I had some control over the code, I could possibly put in some sort of Microsoft compatibility mode, but unfortunately this is just plain old iOS Mail as shipped by Apple (and I don't work there). + +I actually first suspected this was an iOS bug because the problem started immediately when iOS 9.0 was released, but it turned out that iOS 8.x didn't support UID MOVE at all (using UID COPY, etc, instead), so it never even saw the incorrect server behavior. Once iOS 9 started supporting UID MOVE, the Office365 problem became visible. + +I've pretty much hit a brick wall attempting to get Microsoft to even acknowledge the bug. I'm pleased I'm not the only person who sees a problem here. + +David + +> On Nov 17, 2015, at 7:36 PM, Jeff McKay wrote: +> +> I just tried it and I would agree with David that O365 is indeed behaving as he described - no untagged OK in response to UID MOVE. My +> only point, in response to Bron, is that as as developer at a company that wants to make actual sales, I do sometimes have to put in kludges to +> deal with crappy imap servers. I guess David is writing some kind of add-in for iOS Mail where he can't do that. I would think though that +> the Apple folks could get Microsoft to see the light. +> +> On 11/17/2015 4:06 PM, Brandon Long wrote: +>> Or his client is eating the '* ' in some fashion, it would be good for someone with an account to verify the bad behavior. +>> +>> They obviously think they're sending the right response, let's not assume that they are sending the wrong one. +>> +>> Brandon +>> +>> On Tue, Nov 17, 2015 at 3:58 PM, Stu Brandt wrote: +>> David - +>> +>> My read matches yours. Their 2nd line is neither a tagged or untagged response, rfc6851 section 3.3 has a specific example covering COPYUID in the response, and rfc6851 section 4.3 seems pretty clear when it says to send the COPYUID response code in an untagged OK. +>> +>> - Stuart +>> +>> +>> On 11/17/15 6:11 PM, David Shaw wrote: +>> Hello, +>> +>> I'm currently beating my head against a problem with a particular server implementation. The problem, as best I can work out from the outside, is in UID MOVE. +>> +>> My understanding from RFC-6851 is that a UID MOVE transaction should look something like this (cut and paste from the RFC): +>> +>> C: a UID MOVE 42:69 foo +>> S: * OK [COPYUID 432432 42:69 1202:1229] +>> S: * 22 EXPUNGE +>> S: (more expunges) +>> S: a OK Done +>> +>> The relevant piece of this for my question is that the COPYUID response is in an untagged OK. Again, from the RFC: "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." +>> +>> This seems straightforward. +>> +>> The server I'm having a problem (outlook.office365.com) with has a UID MOVE transaction like this (actual transaction captured from my client): +>> +>> C: 14 UID MOVE 7599 "Deleted Items" +>> S: [COPYUID 12 7599 4788] +>> S: * 373 EXPUNGE +>> S: * 372 EXISTS +>> S: 14 OK MOVE completed. +>> +>> The concern is with the second line (the COPYUID response). There is no untagged OK / "* OK" there, which seems incorrect to me and perhaps more significantly, seems to cause the Apple iOS mail program to throw an error every time a message is moved from folder to folder (which of course includes the "delete this message" function). +>> +>> I've spent (literally) weeks trying to get Microsoft Office365 support to acknowledge the problem, without success. The most recent response insists that they are following the RFC, and in fact quoted the "Servers implementing UIDPLUS are also advised to send the COPYUID response code in an untagged OK before sending EXPUNGE or moved responses." line from RFC-6851 as what they are doing. +>> +>> Could the experts on this list help me understand what is going on here? I have no particular need to be "right" - I just want to be able to delete messages without getting errors every single time. +>> +>> Thanks, +>> +>> David +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094994.22575.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094994.22575.mbox:2,S new file mode 100644 index 00000000..86f6b36c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094994.22575.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Oct 30 00:51:57 2015 +To: imap-protocol@u.washington.edu +From: "arnt@gulbrandsen.priv.no" +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Automap feature when rfc6154 is not supported + (for imapsync). +References: <5630E048.7060001@laposte.net> + <14D026C7F297AD44AC82578DD818CDD047B9AC7BAC@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + <563203EE.6060603@laposte.net> + <14D026C7F297AD44AC82578DD818CDD047BA8080A1@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + <5632D400.4080104@laposte.net> +Message-ID: + +Gilles, + +Although dovecot supports 6154, its default configuration +marks no folders. At least for one version, not quite new. Perhaps +later versions are better. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600094994.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094994.22583.mbox:2,S new file mode 100644 index 00000000..6824fb51 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094994.22583.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From nicolson at google.com Fri Jul 17 10:01:12 2015 +To: imap-protocol@u.washington.edu +From: Jamie Nicolson +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Duplicate mail detection criteria +In-Reply-To: +References: +Message-ID: + +We had to add a hack to allow attachment stripping by IMAP clients, since +our default duplicate detector would always discard the stripped version as +a duplicate. For IMAP appends, we consider the messages different (not +duplicates) if the MIME structure changes or any MIME part's size increases +or decreases by more than 50%. The 50% number is somewhat arbitrary but was +inserted to allow for conversion between CRLF and LF line endings. This +might not be necessary anymore, due to some internal implementation +changes, so we could investigate making it more strict. + +On Fri, Jul 17, 2015 at 5:03 AM, yuganya wrote: + +> Am using imap in thunderbird. When i delete large attachment, gmail +> detects it and syncing it with web. When i delete a small attachment (500 +> bytes) , It not syncing with web. +> On analysing further, When deleting large attachment there is a drastic +> change in size and gmail accepts it as new message. but while deleting a +> small attachment,gmail detects it as duplicate and ignores it. +> +> so what is the criteria gmail using for duplicate detection. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094994.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094994.22589.mbox:2,S new file mode 100644 index 00000000..4280fbda --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094994.22589.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From blong at google.com Fri May 8 00:03:35 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] RFC2180 expunges on shared mailboxes +In-Reply-To: <554BA4D2.4090405@isode.com> +References: <5549F002.19423.4AA4F1E4@David.Harris.pmail.gen.nz> + <554BA4D2.4090405@isode.com> +Message-ID: + +Gmail implements a combo of 4.1.1/4.1.2 in that expunge is typically only +removing the label from a message, so under most circumstances, you'll get +4.1.1 behavior. In cases where the expunge actually results in the message +being completely deleted, (expunge from trash, for example), then we do the +4.1.2 behavior. + +Brandon + +On Thu, May 7, 2015 at 10:45 AM, Alexey Melnikov +wrote: + +> Hi David, +> +> On 06/05/2015 11:42, David Harris wrote: +> +>> Just wondering... +>> +>> Of the four possible approaches outlined in RFC2180 section 4 for handling +>> EXPUNGE commands on shared (multiply-accessed) mailboxes, is there any one +>> that has become more broadly acceptable than any other? +>> +>> For historical reasons, I have always used the approach in 4.1.4 (fail +>> the expunge +>> while the mailbox is shared) because in the early days I found that there +>> were +>> clients that would become confused by the EXPUNGE responses to their NOOP +>> commands and end up subsequently deleting messages they didn't intend to +>> delete, which seemed like a much more serious problem than simply failing +>> a +>> command. +>> +>> Unfortunately, with the rise of (often brain-dead) small-device IMAP +>> implementations, I'm now getting customers complaining that the 4.1.4 +>> approach +>> causes too many problems for them, but I don't want to make a unilateral +>> change if +>> the other approaches are just as bad. +>> +> I think 4.1.2 and 4.1.1 are my personal favourites. Isode implemented +> 4.1.2. +> +> Any general observations on this? +>> +>> Cheers! +>> +>> -- David -- +>> +>> ------------------ David Harris -+- Pegasus Mail ---------------------- +>> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +>> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +>> +>> Real newspaper headlines from U.S. papers: +>> COLLEGIANS ARE TURNING TO VEGETABLES +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094994.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094994.22592.mbox:2,S new file mode 100644 index 00000000..4b45091c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094994.22592.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From tss at iki.fi Mon Apr 6 05:17:17 2015 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> +Message-ID: <795C98A0-7472-49BD-AA69-D3B6A357472B@iki.fi> + +On 24 Mar 2015, at 08:26, Bron Gondwana wrote: +> +> On Tue, Mar 24, 2015, at 10:10 AM, Gilles LAMIRAL wrote: +>> At that time, 2008, I got around 0.24% of all hosts with port 143 open +>> on imap while OpenEmailSurvey scored 0.1% in 2013. It looks like Gmail and Big +>> cloud webmails have stolen half of the imap market share. +> +> I wonder how many sites there are where you just can't tell anyway. +> +> FastMail doesn't even listen on port 143, because it leaks cleartext passwords to active attackers: +> +> https://www.fastmail.com/help/technical/ssltlsstarttls.html + +openemailsurvey.org main page results contains both 143 + 993 results deduplicated. There are actually also pages for them separately: + +http://openemailsurvey.org/imap-143.html +http://openemailsurvey.org/imap-993.html + +The 993 port page is before the nicer stats, but I think still from the same year's results. + +> And even once you try port 993: +> +> * OK IMAP4 ready +> . CAPABILITY +> * CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID ENABLE UIDPLUS SASL-IR AUTH=PLAIN +> . OK completed +> +> You're talking to nginx. It's only once you log in that you see what's really there: + +Yeah, that's a limitation. But it's still detecting nginx and according to last year's scan there were 0,06% nginx proxies so it doesn't change the results much. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094995.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094995.22538.mbox:2,S new file mode 100644 index 00000000..0b35f202 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094995.22538.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From gds at chartertn.net Tue Oct 31 21:35:04 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] authenticate LOGIN question +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + <8204fbd1-3679-c8cc-7f92-d4307867ece0@chartertn.net> + <1509483762.929.2.camel@16bits.net> + + +Message-ID: + +On 10/31/17 10:04 PM, Tim Showalter wrote: +> I haven't worked on the Y! IMAP server in several years at this point, +> and I can't speak for their current implementation. I know that they +> have rewritten a lot of it since I left. +> +> But it is quite possible that it's simply a bug. I don't know which +> clients would still support AUTH=LOGIN. I would not advise any client to +> use AUTH=LOGIN, particularly not if PLAIN is available. LOGIN is not a +> good mechanism, and is strictly worse than both basic LOGIN and PLAIN. +> It's just more round trips for what I recall to be a silly protocol. +> +> Tim + +Ok, thanks for the input. It does seem like a bug in that auth LOGIN +doesn't work for yahoo at all. Also, in thunderbird, it only uses auth +LOGIN if PLAIN fails for some reason. Then it sends the uid/pwd using +auth LOGIN (that always fails for yahoo) finally it tries imap login. + +I also notice an anomaly with yahoo's authenticate PLAIN that maybe you +can explain. If you give it a bad auth string after the + response it +tells you the credentials are bad with another + prompt. If I respond +with a good auth string it still fails. Apparently the 2nd + prompt is +not really requesting a corrected auth string. If so, what is the 2nd +prompt for? I have seen no other imap servers doing this double +prompting when a bad auth string is sent. + +Here's what happens when tb talks to yahoo (yh) doing auth PLAIN when a +bad auth string is provided followed by a good one: + +tb: 1 authenticate PLAIN +yh: + +tb: <--- changed the 5th char to 'z', was 'd' +yh: + +tb: <--- I returned the 5th char back to 'd' +yh: 1 NO [AUTHENTICATIONFAILED] AUTHENTICATE Invalid credentials + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094995.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094995.22572.mbox:2,S new file mode 100644 index 00000000..d2acacb7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094995.22572.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From brong at fastmail.fm Wed Nov 18 13:30:10 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <1447817383.3655600.442841513.22BFE21F@webmail.messagingengine.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + <564BBF09.7050804@teamaol.com> + + <564BC814.8080409@comaxis.com> + <1447817383.3655600.442841513.22BFE21F@webmail.messagingengine.com> +Message-ID: <1447882210.1528738.443668657.2E2AAB9D@webmail.messagingengine.com> + +On Wed, Nov 18, 2015, at 14:29, Bron Gondwana wrote: +> On Wed, Nov 18, 2015, at 11:36, Jeff McKay wrote: +>> I just tried it and I would agree with David that O365 is indeed + behaving as he described - no untagged OK in response to UID MOVE. +> +> I can also confirm this - sorry about the few hour delay, dentist +> appointment in the middle of all this. +> +> I've bought myself an O365 account and tested it just to see it for +> myself, this is with openssl s_client +> +> . FETCH 1:* UID +> * 1 FETCH (UID 8) +> . OK FETCH completed. +> . MOVE 1 Extra [COPYUID 78 8 1] +> * 1 EXPUNGE +> * 0 EXISTS +> . OK MOVE completed. + +Have heard from someone at Microsoft that they are aware of the problem +- so I guess the message got through to whoever needed to know. + +I don't know what their test/deploy cycle looks like - it will be +interesting to see how long until the fix makes it out to production. + +Bron. + +-- +? Bron Gondwana +? brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094995.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094995.22583.mbox:2,S new file mode 100644 index 00000000..5b93b60f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094995.22583.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From mgrinich at gmail.com Wed Jul 22 16:54:14 2015 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior with Gmail IMAP when using + CONDSTORE extension +Message-ID: + +Our team has seen the following strange behavior when making requests to +the Gmail IMAP server. I wanted to share this with the list and Brandon to +see if folks have ideas for mitigating or fixing the issue, or whether this +is actually a bug in Gmail's IMAP implementation. + +Here's the log: + +T2 SELECT "[Gmail]/All Mail" +* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk $NotJunk +$NotPhishing $Phishing NotJunk) +* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded +$Junk $NotJunk $NotPhishing $Phishing NotJunk \*)] Flags permitted. +* OK [UIDVALIDITY 11] UIDs valid. +* 126069 EXISTS +* 0 RECENT +* OK [UIDNEXT 208199] Predicted next UID. +* OK [HIGHESTMODSEQ 14064776] +T2 OK [READ-WRITE] [Gmail]/All Mail selected. (Success) +*T3 UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)* +** OK [HIGHESTMODSEQ 14064776]* +** 125605 FETCH (UID 207722 MODSEQ (14063567) FLAGS (\Answered \Seen))* +T3 OK Success +*T4 UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)* +* 125938 FETCH (UID 208058 MODSEQ (14060020) FLAGS ()) +* 125939 FETCH (UID 208059 MODSEQ (14060011) FLAGS ()) +* 125940 FETCH (UID 208060 MODSEQ (14060028) FLAGS ()) +* 125941 FETCH (UID 208061 MODSEQ (14060000) FLAGS ()) +* 125942 FETCH (UID 208062 MODSEQ (14060036) FLAGS ()) +* 125943 FETCH (UID 208063 MODSEQ (14060000) FLAGS ()) +* 125944 FETCH (UID 208064 MODSEQ (14060000) FLAGS ()) +* 125945 FETCH (UID 208065 MODSEQ (14060003) FLAGS ()) +* 125946 FETCH (UID 208066 MODSEQ (14060037) FLAGS ()) +* 125947 FETCH (UID 208067 MODSEQ (14060043) FLAGS ()) +* 125948 FETCH (UID 208068 MODSEQ (14060000) FLAGS ()) +* 125949 FETCH (UID 208069 MODSEQ (14060045) FLAGS ()) +* 125950 FETCH (UID 208070 MODSEQ (14060000) FLAGS ()) +* 125951 FETCH (UID 208071 MODSEQ (14060025) FLAGS ()) +* 125952 FETCH (UID 208072 MODSEQ (14060011) FLAGS ()) +* 125953 FETCH (UID 208073 MODSEQ (14060045) FLAGS ()) +* 125954 FETCH (UID 208074 MODSEQ (14060044) FLAGS ()) +* 125955 FETCH (UID 208075 MODSEQ (14060003) FLAGS ()) +* 125956 FETCH (UID 208076 MODSEQ (14060040) FLAGS ()) +* 125957 FETCH (UID 208077 MODSEQ (14060011) FLAGS ()) +* 125958 FETCH (UID 208078 MODSEQ (14060044) FLAGS ()) +* 125959 FETCH (UID 208079 MODSEQ (14060025) FLAGS ()) +* 125960 FETCH (UID 208080 MODSEQ (14060044) FLAGS ()) +* 125961 FETCH (UID 208081 MODSEQ (14060036) FLAGS ()) +* 125962 FETCH (UID 208082 MODSEQ (14060037) FLAGS ()) +* 125963 FETCH (UID 208083 MODSEQ (14060003) FLAGS ()) +* 125964 FETCH (UID 208084 MODSEQ (14060037) FLAGS ()) +T4 OK Success + + +Why would "UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)" return message +207722, but "UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)" wouldn't? Is +there any way to catch all messages? + +I was able to reproduce this exact IMAP exchange multiple times, so there's +no way the email could have been expunged within the two FETCHes. + +We've seen CONDSTORE-related issues happen on multiple Gmail accounts. The +only workaround we found is "SEARCH MODSEQ", which didn't have this problem +in tests. However, it was very slow on Gmail. + + + +Many thanks, + +-- Michael + +(I work at Nylas) +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094995.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094995.22589.mbox:2,S new file mode 100644 index 00000000..e31f8cde --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094995.22589.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From jkt at flaska.net Fri May 15 07:24:30 2015 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Registration of keyword which enables fetching + external images +Message-ID: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> + +Hi, +I would like to propose a new IMAP keyword "$LoadExternals". When this +keyword is set on a given message, MUA can safely assume that it can go +ahead and automatically fetch external entities linked from any part of the +concerned message. + +Rationale -- when displaying HTML content, a reasonable MUA doesn't blidnly +dereference URLs which point to a location that might be under the control +of a third party (typical use case: external images or CSS). This is done +for privacy reasons so that we don't leak information about the recipient +by accident. However, once a request to a given external URL has been made, +the privacy issue doesn't matter anymore (the information has leaked +already). It is therefore typically safe to make this per-message setting +permanent, and to do so in a manner which is interoperable across different +MUAs. + +The proposed mode of operation is the following: + +- When $LoadExternals is not set, show an appropriate notification in a +non-obtrusive manner, possibly listing the locations to fetch data from. Do +*not* fetch remote content. +- When $LoadExternals is set, do not block requests to remote content. Show +an appropriate non-obtrusive notification about this state and allow the +user to uncheck this whitelisting. +- Server-side filtering scripts are allowed to set $LoadExternals based on +implementation-defined heuristic or policy (such as using site-wide +statistics about URLs and the likelihood of them being useful for tracking, +or auto-whitelisting internal domains, etc). + +Are there any other MUAs besides Trojita interested in this? + +Is the $LoadExternals acceptable? I don't care about a particular name, but +I think that avoiding needlessly long strings is reasonable. Suggestions +are welcome. + +Once we have some consensus about the need for this, I'll be happy to write +a formal draft. + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600094995.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094995.22592.mbox:2,S new file mode 100644 index 00000000..d4d33360 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094995.22592.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Apr 6 05:39:50 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <7C224ADC-D72B-4D77-8320-4D9D94C508DF@iki.fi> +References: <55109D4C.2080900@laposte.net> + <7C224ADC-D72B-4D77-8320-4D9D94C508DF@iki.fi> +Message-ID: <184d5bde-ee73-4ad5-b38b-62e86338d7ad@gulbrandsen.priv.no> + +Timo Sirainen writes: +> What kind of options? In theory you should get everything from +> CAPABILITY and NAMESPACE replies of course. This kind of +> detection sounds very much like what the ID extension RFC says +> MUST NOT be used for any behavioral differences. But I suppose +> in practise it may be useful/necessary sometimes. + +Imapsync has options for things that neither of those describe, e.g. choice +of message equality test. I think that for imapsync, it makes a great deal +of sense to have a --suggest or --autodetect options that says ID to both +servers and then offers a suggested command line for transferring mail. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094995.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094995.22595.mbox:2,S new file mode 100644 index 00000000..4071721e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094995.22595.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From nicolson at google.com Wed Mar 4 13:07:59 2015 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] XOAUTH for Gmail IMAP and SMTP to stop working soon +Message-ID: + +Sorry for the Gmail-specific announcement, we're trying to reach everyone +we can. + +The OAuth 1.0 (XOAUTH) authentication mechanism to Gmail IMAP and SMTP has +been deprecated in favor of XOAUTH2 for almost three years now, and will +stop being supported after April 20, 2015. Unfortunately, we still have +some traffic that is authenticating with XOAUTH, and those apps are going +to break after April 20 unless they switch to XOAUTH2. + +The documentation for XOAUTH2 is at +https://developers.google.com/gmail/xoauth2_protocol . You can convert +existing OAuth 1.0 tokens to OAuth 2.0 tokens without user intervention by +following the instructions at +https://developers.google.com/accounts/docs/OAuth_ref#migration . +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094996.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094996.22538.mbox:2,S new file mode 100644 index 00000000..76b69e22 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094996.22538.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From tjs at psaux.com Tue Oct 31 21:43:16 2017 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] authenticate LOGIN question +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + <8204fbd1-3679-c8cc-7f92-d4307867ece0@chartertn.net> + <1509483762.929.2.camel@16bits.net> + + + +Message-ID: + +No clue -- sorry. I am not even sure if any code I worked on is still being +used there. + +Tim + +On Tue, Oct 31, 2017 at 9:35 PM, Gene Smith wrote: + +> On 10/31/17 10:04 PM, Tim Showalter wrote: +> +>> I haven't worked on the Y! IMAP server in several years at this point, +>> and I can't speak for their current implementation. I know that they have +>> rewritten a lot of it since I left. +>> +>> But it is quite possible that it's simply a bug. I don't know which +>> clients would still support AUTH=LOGIN. I would not advise any client to +>> use AUTH=LOGIN, particularly not if PLAIN is available. LOGIN is not a good +>> mechanism, and is strictly worse than both basic LOGIN and PLAIN. It's just +>> more round trips for what I recall to be a silly protocol. +>> +>> Tim +>> +> +> Ok, thanks for the input. It does seem like a bug in that auth LOGIN +> doesn't work for yahoo at all. Also, in thunderbird, it only uses auth +> LOGIN if PLAIN fails for some reason. Then it sends the uid/pwd using auth +> LOGIN (that always fails for yahoo) finally it tries imap login. +> +> I also notice an anomaly with yahoo's authenticate PLAIN that maybe you +> can explain. If you give it a bad auth string after the + response it tells +> you the credentials are bad with another + prompt. If I respond with a good +> auth string it still fails. Apparently the 2nd + prompt is not really +> requesting a corrected auth string. If so, what is the 2nd prompt for? I +> have seen no other imap servers doing this double prompting when a bad auth +> string is sent. +> +> Here's what happens when tb talks to yahoo (yh) doing auth PLAIN when a +> bad auth string is provided followed by a good one: +> +> tb: 1 authenticate PLAIN +> yh: + +> tb: <--- changed the 5th char to 'z', was 'd' +> yh: + +> tb: <--- I returned the 5th char back to 'd' +> yh: 1 NO [AUTHENTICATIONFAILED] AUTHENTICATE Invalid credentials +> +> -gene +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094996.22572.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094996.22572.mbox:2,S new file mode 100644 index 00000000..6475a6be --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094996.22572.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From dshaw at jabberwocky.com Mon Nov 23 14:45:45 2015 +To: imap-protocol@u.washington.edu +From: David Shaw +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] UID MOVE and untagged OKs +In-Reply-To: <1447882210.1528738.443668657.2E2AAB9D@webmail.messagingengine.com> +References: <25069F83-83C9-4130-B0D0-6C4FCC37A292@jabberwocky.com> + <564BBF09.7050804@teamaol.com> + + <564BC814.8080409@comaxis.com> + <1447817383.3655600.442841513.22BFE21F@webmail.messagingengine.com> + <1447882210.1528738.443668657.2E2AAB9D@webmail.messagingengine.com> +Message-ID: + +On Nov 18, 2015, at 4:30 PM, Bron Gondwana wrote: +> +> On Wed, Nov 18, 2015, at 14:29, Bron Gondwana wrote: +>> On Wed, Nov 18, 2015, at 11:36, Jeff McKay wrote: +>>> I just tried it and I would agree with David that O365 is indeed behaving as he described - no untagged OK in response to UID MOVE. +>> +>> I can also confirm this - sorry about the few hour delay, dentist appointment in the middle of all this. +>> +>> I've bought myself an O365 account and tested it just to see it for myself, this is with openssl s_client +>> +>> . FETCH 1:* UID +>> * 1 FETCH (UID 8) +>> . OK FETCH completed. +>> . MOVE 1 Extra +>> [COPYUID 78 8 1] +>> * 1 EXPUNGE +>> * 0 EXISTS +>> . OK MOVE completed. +> +> Have heard from someone at Microsoft that they are aware of the problem - so I guess the message got through to whoever needed to know. +> +> I don't know what their test/deploy cycle looks like - it will be interesting to see how long until the fix makes it out to production. + +That's great. I am very pleased to hear it. + +It does seem like the issue has been around for a long time. I found a bug report for this problem from October of 2014: https://github.com/jstedfast/MailKit/issues/115 + +David + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094996.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094996.22583.mbox:2,S new file mode 100644 index 00000000..133a1570 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094996.22583.mbox:2,S @@ -0,0 +1,96 @@ +MBOX-Line: From brong at fastmail.fm Wed Jul 22 17:07:32 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior with Gmail IMAP when using + CONDSTORE extension +In-Reply-To: +References: +Message-ID: <1437610052.3135783.330762257.59E54221@webmail.messagingengine.com> + +On Thu, Jul 23, 2015, at 09:54, Michael Grinich wrote: +> Our team has seen the following strange behavior when making requests +> to the Gmail IMAP server. I wanted to share this with the list and +> Brandon to see if folks have ideas for mitigating or fixing the issue, +> or whether this is actually a bug in Gmail's IMAP implementation. +> +> Here's the log: +> +> T2 SELECT "[Gmail]/All Mail" +> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk +> $NotJunk $NotPhishing $Phishing NotJunk) +> * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen +> $Forwarded $Junk $NotJunk $NotPhishing $Phishing NotJunk \*)] Flags +> permitted. +> * OK [UIDVALIDITY 11] UIDs valid. +> * 126069 EXISTS +> * 0 RECENT +> * OK [UIDNEXT 208199] Predicted next UID. +> * OK [HIGHESTMODSEQ 14064776] T2 OK [READ-WRITE] [Gmail]/All Mail +> selected. (Success) *T3 UID FETCH 207722 (FLAGS) (CHANGEDSINCE +> 14055062)* ** OK [HIGHESTMODSEQ 14064776]* ** 125605 FETCH (UID +> 207722 MODSEQ (14063567) FLAGS (\Answered \Seen))* T3 OK Success *T4 +> UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)* +> * 125938 FETCH (UID 208058 MODSEQ (14060020) FLAGS ()) +> * 125939 FETCH (UID 208059 MODSEQ (14060011) FLAGS ()) +> * 125940 FETCH (UID 208060 MODSEQ (14060028) FLAGS ()) +> * 125941 FETCH (UID 208061 MODSEQ (14060000) FLAGS ()) +> * 125942 FETCH (UID 208062 MODSEQ (14060036) FLAGS ()) +> * 125943 FETCH (UID 208063 MODSEQ (14060000) FLAGS ()) +> * 125944 FETCH (UID 208064 MODSEQ (14060000) FLAGS ()) +> * 125945 FETCH (UID 208065 MODSEQ (14060003) FLAGS ()) +> * 125946 FETCH (UID 208066 MODSEQ (14060037) FLAGS ()) +> * 125947 FETCH (UID 208067 MODSEQ (14060043) FLAGS ()) +> * 125948 FETCH (UID 208068 MODSEQ (14060000) FLAGS ()) +> * 125949 FETCH (UID 208069 MODSEQ (14060045) FLAGS ()) +> * 125950 FETCH (UID 208070 MODSEQ (14060000) FLAGS ()) +> * 125951 FETCH (UID 208071 MODSEQ (14060025) FLAGS ()) +> * 125952 FETCH (UID 208072 MODSEQ (14060011) FLAGS ()) +> * 125953 FETCH (UID 208073 MODSEQ (14060045) FLAGS ()) +> * 125954 FETCH (UID 208074 MODSEQ (14060044) FLAGS ()) +> * 125955 FETCH (UID 208075 MODSEQ (14060003) FLAGS ()) +> * 125956 FETCH (UID 208076 MODSEQ (14060040) FLAGS ()) +> * 125957 FETCH (UID 208077 MODSEQ (14060011) FLAGS ()) +> * 125958 FETCH (UID 208078 MODSEQ (14060044) FLAGS ()) +> * 125959 FETCH (UID 208079 MODSEQ (14060025) FLAGS ()) +> * 125960 FETCH (UID 208080 MODSEQ (14060044) FLAGS ()) +> * 125961 FETCH (UID 208081 MODSEQ (14060036) FLAGS ()) +> * 125962 FETCH (UID 208082 MODSEQ (14060037) FLAGS ()) +> * 125963 FETCH (UID 208083 MODSEQ (14060003) FLAGS ()) +> * 125964 FETCH (UID 208084 MODSEQ (14060037) FLAGS ()) T4 OK Success +> +> +> Why would "UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)" return +> message 207722, but "UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)" +> wouldn't? Is there any way to catch all messages? +> +> I was able to reproduce this exact IMAP exchange multiple times, so +> there's no way the email could have been expunged within the two +> FETCHes. +> +> We've seen CONDSTORE-related issues happen on multiple Gmail accounts. +> The only workaround we found is "SEARCH MODSEQ", which didn't have +> this problem in tests. However, it was very slow on Gmail. + +What to do you get for either: + +T5 FETCH 1:* (UID FLAGS) (CHANGEDSINCE 14055062) + +or + +T6 UID FETCH 1:208198 (FLAGS) (CHANGEDSINCE 14055062) + +That might show if there's anything interesting happening with '*'. +Your exchange definitely reads like incorrect CONDSTORE logic to my +slightly tired eyes... + +Bron. + +-- +? Bron Gondwana +? brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094996.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094996.22589.mbox:2,S new file mode 100644 index 00000000..29b175d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094996.22589.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From Neil_Hunsperger at symantec.com Fri May 15 16:18:56 2015 +To: imap-protocol@u.washington.edu +From: Neil Hunsperger +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Registration of keyword which enables + fetching external images +In-Reply-To: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> +References: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> +Message-ID: <14D026C7F297AD44AC82578DD818CDD047B37C34E0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + +Hi Jan, + +> This is done +> for privacy reasons so that we don't leak information about the recipient +> by accident. However, once a request to a given external URL has been made, +> the privacy issue doesn't matter anymore (the information has leaked +> already). It is therefore typically safe to make this per-message setting +> permanent + +Additional requests may leak additional information. Examples: + +* I've viewed an offer letter 10 times and thus may be interested enough to be squeezed for more money. +* I was paging through last week's email to find something and my MUA downloads external images from "politically-sensitive-topic.org" while I'm now travelling overseas in a country where that topic is illegal. +* I allowed downloading linked images from my desktop MUA and now my other devices respect that setting, exposing information on the complete set of MUA software I use and the region I'm currently in. + +-Neil diff --git a/demo/ermis-f/imap-protocol/cur/1600094996.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094996.22592.mbox:2,S new file mode 100644 index 00000000..c09c1928 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094996.22592.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Tue Apr 7 16:38:25 2015 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +Message-ID: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> + +I'm in the process of completely rewriting the SEARCH logic in my IMAP server - +the old code was done in a hurry and was, quite frankly, ridiculously bad, but that's +another story. + +As I get into testing cases, I've come across a number of areas where RFC3501 +and the various sub-documents that I know about are... uh, "vague". I'd like to get a +take on how other implementors view them. + +1: BODY: When a SEARCH BODY expression is issued, how should "BODY" be +interpreted? Is there an assumption that the server should choose the best +candidate for a displayable message body, parse and normalize it, then search +that? Or should it simply be taken as a raw scan of the message? How much +unarmouring and character set normalization is assumed? + +2: Headers: when any of the header search expressions is issued, is the +assumption that the raw header should be searched, or should RFC2047 +encoded-words be reduced and normalized before attempting the comparison? + +3: The following search is valid, according to the syntax in RFC3501: + + xx SEARCH OR OR + +and allows an OR expression to cover three terms instead of just two. As such, it +seems quite useful, but it would certainly have mystified my old search code (it was +rubbish, as I've pointed out), and I was wondering how generally safe it would be to +use this type of expression? + +4: I'm pretty sure I'm right on this one, but the following expression: + + xx SEARCH OR ( ) exp4 + +will only result in a match if either is a match, or ALL of , +and are a match. Could someone wiser than me confirm this? I'm +assuming there is no way to perform a search with a long list of OR conditions +without doing a lot of calisthenics on the search string (multiple OR conditions +strung together). + +I apologize if any of these are dealt with in RFCs outside RFC3501 - I struggle to +keep track of all the various sub-documents relating to the protocol these days. + +Thanks in advance for any advice. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Schoolboy howler for the day: + "A census taker is the man who goes from home to home + increasing the population." + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094996.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094996.22595.mbox:2,S new file mode 100644 index 00000000..9e421514 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094996.22595.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From ladar at lavabitllc.com Sat Mar 7 04:14:12 2015 +To: imap-protocol@u.washington.edu +From: Ladar Levison +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would it be + different? +Message-ID: <54FAEB94.4070508@lavabitllc.com> + +I thought this might be a good list to ask a simple, but admittedly +subjective question: If Mark Crispin was creating IMAP from scratch, in +the world of today, would it still be a line based protocol like it was +with RFC3501, or would he have gone with something more stateless, like +a JSON-RPC paradigm, like JMAP? + +For quick reference: + +https://tools.ietf.org/html/rfc3501 + +Or JMAP: + +http://jmap.io/spec.html + +Or my own bastardized protocol used for webmail to server access, which +I created a few years back: + +https://github.com/lavabit/magma.classic/raw/master/docs/magma.web.api.pdf + +L~ + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 836 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094997.22538.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094997.22538.mbox:2,S new file mode 100644 index 00000000..6501ba96 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094997.22538.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From gds at chartertn.net Tue Oct 31 21:52:51 2017 +To: imap-protocol@u.washington.edu +From: Gene Smith +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] authenticate LOGIN question +In-Reply-To: +References: <38137c2b-f1f1-2bed-e22f-2aea7fa50ac3@chartertn.net> + + <8204fbd1-3679-c8cc-7f92-d4307867ece0@chartertn.net> + <1509483762.929.2.camel@16bits.net> + + + + +Message-ID: <0672e4a2-71a4-15ee-d4bd-68112afadb2a@chartertn.net> + +On 11/1/17 12:43 AM, Tim Showalter wrote: +> No clue -- sorry. I am not even sure if any code I worked on is still +> being used there. +> +> Tim + +Ok, thanks for your help. I was mostly just curious about this. Maybe +someone at Yahoo will see this and can explain these strange behaviors. :) + +-gene + diff --git a/demo/ermis-f/imap-protocol/cur/1600094997.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094997.22583.mbox:2,S new file mode 100644 index 00000000..9b0e2ea0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094997.22583.mbox:2,S @@ -0,0 +1,97 @@ +MBOX-Line: From nicolson at google.com Wed Jul 22 17:21:00 2015 +To: imap-protocol@u.washington.edu +From: Jamie Nicolson +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior with Gmail IMAP when using + CONDSTORE extension +In-Reply-To: +References: +Message-ID: + +This could be a bug. I can't tell from this snippet, but what was the last +modification to happen to the message with UID 207722? Was it the delivery +of the message, marking it as read (STORE +FLAGS \Seen), or something else? + +On Wed, Jul 22, 2015 at 4:54 PM, Michael Grinich wrote: + +> Our team has seen the following strange behavior when making requests to +> the Gmail IMAP server. I wanted to share this with the list and Brandon to +> see if folks have ideas for mitigating or fixing the issue, or whether this +> is actually a bug in Gmail's IMAP implementation. +> +> Here's the log: +> +> T2 SELECT "[Gmail]/All Mail" +> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded $Junk +> $NotJunk $NotPhishing $Phishing NotJunk) +> * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded +> $Junk $NotJunk $NotPhishing $Phishing NotJunk \*)] Flags permitted. +> * OK [UIDVALIDITY 11] UIDs valid. +> * 126069 EXISTS +> * 0 RECENT +> * OK [UIDNEXT 208199] Predicted next UID. +> * OK [HIGHESTMODSEQ 14064776] +> T2 OK [READ-WRITE] [Gmail]/All Mail selected. (Success) +> *T3 UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)* +> ** OK [HIGHESTMODSEQ 14064776]* +> ** 125605 FETCH (UID 207722 MODSEQ (14063567) FLAGS (\Answered \Seen))* +> T3 OK Success +> *T4 UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)* +> * 125938 FETCH (UID 208058 MODSEQ (14060020) FLAGS ()) +> * 125939 FETCH (UID 208059 MODSEQ (14060011) FLAGS ()) +> * 125940 FETCH (UID 208060 MODSEQ (14060028) FLAGS ()) +> * 125941 FETCH (UID 208061 MODSEQ (14060000) FLAGS ()) +> * 125942 FETCH (UID 208062 MODSEQ (14060036) FLAGS ()) +> * 125943 FETCH (UID 208063 MODSEQ (14060000) FLAGS ()) +> * 125944 FETCH (UID 208064 MODSEQ (14060000) FLAGS ()) +> * 125945 FETCH (UID 208065 MODSEQ (14060003) FLAGS ()) +> * 125946 FETCH (UID 208066 MODSEQ (14060037) FLAGS ()) +> * 125947 FETCH (UID 208067 MODSEQ (14060043) FLAGS ()) +> * 125948 FETCH (UID 208068 MODSEQ (14060000) FLAGS ()) +> * 125949 FETCH (UID 208069 MODSEQ (14060045) FLAGS ()) +> * 125950 FETCH (UID 208070 MODSEQ (14060000) FLAGS ()) +> * 125951 FETCH (UID 208071 MODSEQ (14060025) FLAGS ()) +> * 125952 FETCH (UID 208072 MODSEQ (14060011) FLAGS ()) +> * 125953 FETCH (UID 208073 MODSEQ (14060045) FLAGS ()) +> * 125954 FETCH (UID 208074 MODSEQ (14060044) FLAGS ()) +> * 125955 FETCH (UID 208075 MODSEQ (14060003) FLAGS ()) +> * 125956 FETCH (UID 208076 MODSEQ (14060040) FLAGS ()) +> * 125957 FETCH (UID 208077 MODSEQ (14060011) FLAGS ()) +> * 125958 FETCH (UID 208078 MODSEQ (14060044) FLAGS ()) +> * 125959 FETCH (UID 208079 MODSEQ (14060025) FLAGS ()) +> * 125960 FETCH (UID 208080 MODSEQ (14060044) FLAGS ()) +> * 125961 FETCH (UID 208081 MODSEQ (14060036) FLAGS ()) +> * 125962 FETCH (UID 208082 MODSEQ (14060037) FLAGS ()) +> * 125963 FETCH (UID 208083 MODSEQ (14060003) FLAGS ()) +> * 125964 FETCH (UID 208084 MODSEQ (14060037) FLAGS ()) +> T4 OK Success +> +> +> Why would "UID FETCH 207722 (FLAGS) (CHANGEDSINCE 14055062)" return +> message 207722, but "UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)" +> wouldn't? Is there any way to catch all messages? +> +> I was able to reproduce this exact IMAP exchange multiple times, so +> there's no way the email could have been expunged within the two FETCHes. +> +> We've seen CONDSTORE-related issues happen on multiple Gmail accounts. The +> only workaround we found is "SEARCH MODSEQ", which didn't have this problem +> in tests. However, it was very slow on Gmail. +> +> +> +> Many thanks, +> +> -- Michael +> +> (I work at Nylas) +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094997.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094997.22589.mbox:2,S new file mode 100644 index 00000000..499fa1d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094997.22589.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From jkt at flaska.net Wed May 20 05:47:20 2015 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?Registration_of_keyword_which_enab?= + =?iso-8859-1?q?les_fetching_external_images?= +In-Reply-To: <14D026C7F297AD44AC82578DD818CDD047B37C34E0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +References: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> + <14D026C7F297AD44AC82578DD818CDD047B37C34E0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +Message-ID: + +On Saturday, 16 May 2015 01:18:56 CEST, Neil Hunsperger wrote: +> * I've viewed an offer letter 10 times and thus may be +> interested enough to be squeezed for more money. +> * I was paging through last week's email to find something and +> my MUA downloads external images from +> "politically-sensitive-topic.org" while I'm now travelling +> overseas in a country where that topic is illegal. +> * I allowed downloading linked images from my desktop MUA and +> now my other devices respect that setting, exposing information +> on the complete set of MUA software I use and the region I'm +> currently in. + +Yes, these are all possible scenarios; I was simplifying stuff a bit. In +spite of these, I think that there is some merit in having an opt-in basis +for making this per-message settings permanent, and making this work across +different MUAs sounds reasonable to me. + +Trojita is periodically getting requests for making it load everything +automatically. We are not going to do that, and we're also still opposing +even a settings option for users to opt-in into that very insecure +behavior. I hope that remembering these settings on a per-message basis is +a reasonable middle ground. + +The alternative to that is implementing this feature with a MUA-specific +flag, which sounds like a worst scenario to me. + +Are some other client developers interested in this? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600094997.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094997.22592.mbox:2,S new file mode 100644 index 00000000..c928798a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094997.22592.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Tue Apr 7 16:57:29 2015 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +References: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +Message-ID: <55246EE9.10677.324E8888@David.Harris.pmail.gen.nz> + +On 8 Apr 2015 at 11:38, David Harris wrote: + +> 3: The following search is valid, according to the syntax in RFC3501: +> +> xx SEARCH OR OR + +Just to clarify: I know that this could have been written as + + xx SEARCH OR OR + +and that that would look more reasonable, but the first syntax is also correct +according to the RFC, and I was wondering if anyone had any sense of whether +there were servers out there (like my old code) that would choke on it. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Thought for the day: + Intuition (n): an uncanny sixth sense which tells people + that they are right, whether they are or not. + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094997.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094997.22595.mbox:2,S new file mode 100644 index 00000000..19f8923d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094997.22595.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Mar 7 05:18:24 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FAEB94.4070508@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> +Message-ID: + +Mark really liked Lisp and terminal servers. I think that answers the +question, but perhaps not for reasons that interest you, right? + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094997.22600.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094997.22600.mbox:2,S new file mode 100644 index 00000000..76721457 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094997.22600.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From jjmckay at comaxis.com Thu Feb 5 17:21:07 2015 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Use of namespace in LIST command +Message-ID: <54D41703.6060403@comaxis.com> + +I think I need a refresher, or I am confused about something. I log on +to imap account "bob" (not sure which server +right now), and the NAMESPACE command gives me: + +* NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/")) +(("#shared/" "/")("#ftp/" "/")("#news." ".")("#public/" "/")) + +My usual command: LIST "" * + +tells me that there is an INBOX and nothing more, and the customer says +there should be a bunch of other folders. I have +tried: + +LIST "" "~bob/%" +LIST "" "~/bob/%" +LIST "" "#mh/bob/%" +LIST "" "#mhinbox/bob/%" + +but for each of the above, the command returns no folder names. What I +am doing wrong? + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094998.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094998.22583.mbox:2,S new file mode 100644 index 00000000..f318f3ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094998.22583.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tom at close.io Wed Jul 22 22:47:43 2015 +To: imap-protocol@u.washington.edu +From: Thomas Steinacher +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior with Gmail IMAP when using + CONDSTORE extension +In-Reply-To: <7B85E579-D6EB-4054-82E7-0A98C6B46F6B@close.io> +References: + + <7B85E579-D6EB-4054-82E7-0A98C6B46F6B@close.io> +Message-ID: + +> What to do you get for either: +> +> T5 FETCH 1:* (UID FLAGS) (CHANGEDSINCE 14055062) +> +> or +> +> T6 UID FETCH 1:208198 (FLAGS) (CHANGEDSINCE 14055062) +> +> That might show if there's anything interesting happening with '*'. +> Your exchange definitely reads like incorrect CONDSTORE logic to my +> slightly tired eyes... +> +> Bron. + +The two commands above give the exact same same response back as "T4 UID FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)", i.e. UID 207722 is missing. Also, replacing "*" with 208198 in T5 doesn't change the response. + + +> On 2015-07-22, at 17:21, Jamie Nicolson wrote: +> +> This could be a bug. I can't tell from this snippet, but what was the last modification to happen to the message with UID 207722? Was it the delivery of the message, marking it as read (STORE +FLAGS \Seen), or something else? + +The user replied to message 207722 and archived the thread in Gmail. + +Thomas + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094998.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094998.22589.mbox:2,S new file mode 100644 index 00000000..bc314860 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094998.22589.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From asuth at mozilla.com Wed May 20 12:07:43 2015 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Registration of keyword which enables fetching + external images +In-Reply-To: +References: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> + <14D026C7F297AD44AC82578DD818CDD047B37C34E0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + +Message-ID: + +On Wed, May 20, 2015 at 8:47 AM, Jan Kundr?t wrote: + +> Are some other client developers interested in this? + + +It seems reasonable to me to standardize a flag for this purpose, even if +many clients prefer to keep the setting local-only. Thunderbird uses a +per-message "remoteContentPolicy" property that is persisted locally in the +msf files but never persisted to IMAP servers. Once set, it allows +external images for the specific messages to be fetched going forward. + (Some information leakage will be suppressed on repeated viewings because +of the network cache, but the images/etc. are likely to be rotated out.) + +Note: I no longer actively contribute to Thunderbird, so if anyone is going +to change things to use the flag it won't be me. I work on the Firefox OS +email app, and we currently have no plans to persist "show extenal images" +on a per message basis, but if we did, we would use the proposed flag since +we would synchronize the flag to the server when possible. + +Andrew +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094998.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094998.22592.mbox:2,S new file mode 100644 index 00000000..2fe77787 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094998.22592.mbox:2,S @@ -0,0 +1,88 @@ +MBOX-Line: From brong at fastmail.fm Tue Apr 7 17:39:29 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +References: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +Message-ID: <1428453569.748713.250513633.3671D3CF@webmail.messagingengine.com> + +On Wed, Apr 8, 2015, at 09:38 AM, David Harris wrote: +> I'm in the process of completely rewriting the SEARCH logic in my IMAP server - +> the old code was done in a hurry and was, quite frankly, ridiculously bad, but that's +> another story. +> +> As I get into testing cases, I've come across a number of areas where RFC3501 +> and the various sub-documents that I know about are... uh, "vague". I'd like to get a +> take on how other implementors view them. +> +> 1: BODY: When a SEARCH BODY expression is issued, how should "BODY" be +> interpreted? Is there an assumption that the server should choose the best +> candidate for a displayable message body, parse and normalize it, then search +> that? Or should it simply be taken as a raw scan of the message? How much +> unarmouring and character set normalization is assumed? + +Cyrus streams each body part through decoding (qp/base64) and charset handing +(generates a stream of int32 unicode codepoints) - which then feeds into the search +engine to look for matches. If any part matches, then the message matches. + +> 2: Headers: when any of the header search expressions is issued, is the +> assumption that the raw header should be searched, or should RFC2047 +> encoded-words be reduced and normalized before attempting the comparison? + +Likewise - there's a header parser which generates the unicode points for search. + +> 3: The following search is valid, according to the syntax in RFC3501: +> +> xx SEARCH OR OR +> +> and allows an OR expression to cover three terms instead of just two. As such, it +> seems quite useful, but it would certainly have mystified my old search code (it was +> rubbish, as I've pointed out), and I was wondering how generally safe it would be to +> use this type of expression? + +Very. That's totally standard, and anything which doesn't support it is totally bogus. + +> 4: I'm pretty sure I'm right on this one, but the following expression: +> +> xx SEARCH OR ( ) exp4 +> +> will only result in a match if either is a match, or ALL of , +> and are a match. Could someone wiser than me confirm this? I'm +> assuming there is no way to perform a search with a long list of OR conditions +> without doing a lot of calisthenics on the search string (multiple OR conditions +> strung together). + +It's hardly calisthenics, it's just prefix notation. + +You can just as well do + +OR A OR B OR C D + +depending whether you want the tree to bias right or bias left. Even this is valid + +OR OR A OR B C D + +As is obvious when you write it out as a tree. + +OR +- OR += - A += - OR += = - B += = - C +- D + +> I apologize if any of these are dealt with in RFCs outside RFC3501 - I struggle to +> keep track of all the various sub-documents relating to the protocol these days. +> +> Thanks in advance for any advice. + +Cheers, + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600094998.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094998.22595.mbox:2,S new file mode 100644 index 00000000..f1113f29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094998.22595.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From yiorgos.adamopoulos at gmail.com Sat Mar 7 05:23:26 2015 +To: imap-protocol@u.washington.edu +From: Yiorgos Adamopoulos +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> + +Message-ID: + +On Sat, Mar 7, 2015 at 3:18 PM, Arnt Gulbrandsen + wrote: +> Mark really liked Lisp and terminal servers. + +IIRC, the first version of Mark's toolkit was written in Lisp. So +probably with today's abundance in Lisp like languages, he would have +picked one and write it in Lisp. + +The OP also asked whether it would have been more stateless. Well, +given the criticism that Mark exercised on how students do not learn +how to maintain state in their programs, it seems to me that he would +have gone stateless. He would have been Mark if he did. + +-- +"If technology is your thing plan to die reading manuals" --Gene Woolsey + diff --git a/demo/ermis-f/imap-protocol/cur/1600094998.22600.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094998.22600.mbox:2,S new file mode 100644 index 00000000..590a99a3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094998.22600.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From dave at cridland.net Fri Feb 6 02:21:48 2015 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Use of namespace in LIST command +In-Reply-To: <54D41703.6060403@comaxis.com> +References: <54D41703.6060403@comaxis.com> +Message-ID: + +On 6 February 2015 at 01:21, Jeff McKay wrote: + +> I think I need a refresher, or I am confused about something. I log on to +> imap account "bob" (not sure which server +> right now), and the NAMESPACE command gives me: +> +> * NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/")) +> (("#shared/" "/")("#ftp/" "/")("#news." ".")("#public/" "/")) +> +> My usual command: LIST "" * +> +> tells me that there is an INBOX and nothing more, and the customer says +> there should be a bunch of other folders. I have +> tried: +> +> LIST "" "~bob/%" +> LIST "" "~/bob/%" +> LIST "" "#mh/bob/%" +> LIST "" "#mhinbox/bob/%" +> +> but for each of the above, the command returns no folder names. What I am +> doing wrong? +> + +So the NAMESPACE here is giving you three sets; for example the first is +here: + +(("" "/")("#mhinbox" NIL)("#mh/" "/")) + +This is your own mailboxes, and it notes that the namespaces are: + +("" "/") + +An empty string prefix - which apparently contains only INBOX. + +("#mhinbox" NIL) + +This one has no separator, and therefore no hierarchy: + +. LIST "" "#mhinbox" + +Might give you a mailbox for the MH inbox. Or might not - it's telling you +where it *would* be if it exists. + +("#mh/" "/") + +Other MH mailboxes for bob: + +. LIST "" "#mh/%" + +Note that it has a hierarchy separator, but also that there is one in the +prefix. This is common, but as we'll see, not essential. + +The next section is other users' mailboxes. Let's consider that there +exists another user "alice"; one might find Alice's mailboxes with: + +. LIST "" "~alice/%" + +But really, all this tells us is that if you find a mailbox beginning "~", +it's another user's one. + +The final group is shared mailboxes; by now you've got the idea: + +. LIST "" "#shared/%" +. LIST "" "#ftp/%" +. LIST "" "#news.%" + +I'm pretty sure the server is UW or Panda. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094998.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094998.22603.mbox:2,S new file mode 100644 index 00000000..51f613ee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094998.22603.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From dan.piche at gmail.com Mon Jan 5 07:47:47 2015 +To: imap-protocol@u.washington.edu +From: =?UTF-8?Q?Daniel_Pich=C3=A9?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Condstore, Gmail and mod_seq +Message-ID: + +Does anybody know if mod_seq can be reset by the gmail servers or they are +always valid? Thanks! +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094999.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094999.22583.mbox:2,S new file mode 100644 index 00000000..b18ea7a6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094999.22583.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From nicolson at google.com Thu Jul 23 10:53:32 2015 +To: imap-protocol@u.washington.edu +From: Jamie Nicolson +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Strange behavior with Gmail IMAP when using + CONDSTORE extension +In-Reply-To: +References: + + <7B85E579-D6EB-4054-82E7-0A98C6B46F6B@close.io> + +Message-ID: + +Thanks, we'll let you know if we need more details. + +On Wed, Jul 22, 2015 at 10:47 PM, Thomas Steinacher wrote: + +> > What to do you get for either: +> > +> > T5 FETCH 1:* (UID FLAGS) (CHANGEDSINCE 14055062) +> > +> > or +> > +> > T6 UID FETCH 1:208198 (FLAGS) (CHANGEDSINCE 14055062) +> > +> > That might show if there's anything interesting happening with '*'. +> > Your exchange definitely reads like incorrect CONDSTORE logic to my +> > slightly tired eyes... +> > +> > Bron. +> +> The two commands above give the exact same same response back as "T4 UID +> FETCH 1:* (FLAGS) (CHANGEDSINCE 14055062)", i.e. UID 207722 is missing. +> Also, replacing "*" with 208198 in T5 doesn't change the response. +> +> +> > On 2015-07-22, at 17:21, Jamie Nicolson wrote: +> > +> > This could be a bug. I can't tell from this snippet, but what was the +> last modification to happen to the message with UID 207722? Was it the +> delivery of the message, marking it as read (STORE +FLAGS \Seen), or +> something else? +> +> The user replied to message 207722 and archived the thread in Gmail. +> +> Thomas +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094999.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094999.22589.mbox:2,S new file mode 100644 index 00000000..04e5e903 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094999.22589.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From blong at google.com Wed May 20 12:29:51 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Registration of keyword which enables fetching + external images +In-Reply-To: +References: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> + <14D026C7F297AD44AC82578DD818CDD047B37C34E0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + + +Message-ID: + +On Wed, May 20, 2015 at 12:07 PM, Andrew Sutherland +wrote: + +> On Wed, May 20, 2015 at 8:47 AM, Jan Kundr?t wrote: +> +>> Are some other client developers interested in this? +> +> +> It seems reasonable to me to standardize a flag for this purpose, even if +> many clients prefer to keep the setting local-only. Thunderbird uses a +> per-message "remoteContentPolicy" property that is persisted locally in the +> msf files but never persisted to IMAP servers. Once set, it allows +> external images for the specific messages to be fetched going forward. +> (Some information leakage will be suppressed on repeated viewings because +> of the network cache, but the images/etc. are likely to be rotated out.) +> +> Note: I no longer actively contribute to Thunderbird, so if anyone is +> going to change things to use the flag it won't be me. I work on the +> Firefox OS email app, and we currently have no plans to persist "show +> extenal images" on a per message basis, but if we did, we would use the +> proposed flag since we would synchronize the flag to the server when +> possible. +> + +I think we persist per sender, not per message... and we know proxy most of +that stuff, so I think a lot of users just show all messages... or we have +some complicated logic about when it's ok to show and when it's not which +is calculated on the fly and not exposed. + +Not opposed to a standard, of course, just seems unlikely we'll use it. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094999.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094999.22592.mbox:2,S new file mode 100644 index 00000000..67e64513 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094999.22592.mbox:2,S @@ -0,0 +1,126 @@ +MBOX-Line: From imap at maclean.com Tue Apr 7 17:58:01 2015 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +References: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +Message-ID: + +David, I went through what you are going through a couple of years +ago. My original SEARCH implementation was also a shambles and it +was only the coming of a major new customer that prompted me to +rework it. I never had a single complaint about the original code +though which I put down to the lack of support for SEARCH in +clients. Today I think it is much more important to have good SEARCH +especially with IMAP servers more and more fronting email archives in +addition to conventional email servers. + +I am well aware that the specification is fuzzy and I know that some +implementations take great liberties. Some servers, for example, +treat text searches as word-based while the RFC demands that they be +string-based. An excuse for making them word-based is that the data +just happens to be word-indexed. While I cannot support this, I +suppose it is not too terrible because users these days are so +accustomed to word-based searches (because that is what Web search +engines do) that they might be surprised at the results of a +string-based search. + +Let me now tell you how I implement things: + +1. BODY. I thread through all the MIME parts in the message and +select only those that have a Content-Type of "text" or "message". I +convert each such part to Unicode and then apply the search +criteria. I make no attempt to search parts that would typically be +considered attachments. If, in an HTML part, a phrase being searched +for is broken up by tags, it will not be found. Likewise if it +contains entities. I could do better in this regard and your +bringing up the subject may prompt me to review a number of my own choices. + +2. Headers. I unfold headers and normalize everything to Unicode +before searching. + +3. xx SEARCH OR OR . I have no idea how safe it +is to use such an expression but my server handles it beautifully. + +4. xx SEARCH OR ( ) exp4. I share your +understanding of this expression. + +I also added support for ESEARCH when I did my revamp but have little +idea of how much it gets used. + +Pete + +At 07:38 PM 4/7/2015, David Harris wrote: +>I'm in the process of completely rewriting the SEARCH logic in my +>IMAP server - +>the old code was done in a hurry and was, quite frankly, +>ridiculously bad, but that's +>another story. +> +>As I get into testing cases, I've come across a number of areas where RFC3501 +>and the various sub-documents that I know about are... uh, "vague". +>I'd like to get a +>take on how other implementors view them. +> +>1: BODY: When a SEARCH BODY expression is issued, how should "BODY" be +>interpreted? Is there an assumption that the server should choose the best +>candidate for a displayable message body, parse and normalize it, then search +>that? Or should it simply be taken as a raw scan of the message? How much +>unarmouring and character set normalization is assumed? +> +>2: Headers: when any of the header search expressions is issued, is the +>assumption that the raw header should be searched, or should RFC2047 +>encoded-words be reduced and normalized before attempting the comparison? +> +>3: The following search is valid, according to the syntax in RFC3501: +> +> xx SEARCH OR OR +> +>and allows an OR expression to cover three terms instead of just +>two. As such, it +>seems quite useful, but it would certainly have mystified my old +>search code (it was +>rubbish, as I've pointed out), and I was wondering how generally +>safe it would be to +>use this type of expression? +> +>4: I'm pretty sure I'm right on this one, but the following expression: +> +> xx SEARCH OR ( ) exp4 +> +>will only result in a match if either is a match, or ALL of +>, +>and are a match. Could someone wiser than me confirm this? I'm +>assuming there is no way to perform a search with a long list of OR +>conditions +>without doing a lot of calisthenics on the search string (multiple +>OR conditions +>strung together). +> +>I apologize if any of these are dealt with in RFCs outside RFC3501 - +>I struggle to +>keep track of all the various sub-documents relating to the protocol +>these days. +> +>Thanks in advance for any advice. +> +>Cheers! +> +>-- David -- +> +>------------------ David Harris -+- Pegasus Mail ---------------------- +>Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> +>Schoolboy howler for the day: +> "A census taker is the man who goes from home to home +> increasing the population." +> +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600094999.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094999.22595.mbox:2,S new file mode 100644 index 00000000..fe0fb22a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094999.22595.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From yiorgos.adamopoulos at gmail.com Sat Mar 7 05:26:48 2015 +To: imap-protocol@u.washington.edu +From: Yiorgos Adamopoulos +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> + + +Message-ID: + +(When replying with a headache you write things upside down) + +On Sat, Mar 7, 2015 at 3:23 PM, Yiorgos Adamopoulos + wrote: +> The OP also asked whether it would have been more stateless. Well, +> given the criticism that Mark exercised on how students do not learn +> how to maintain state in their programs, it seems to me that he would +> have gone stateless. He would have been Mark if he did. + +CORRECTION: I believe that Mark would still write it the way he did +with regards to state (i.e. not stateless). He wouldn't have been Mark +if he did not. + +-- +"If technology is your thing plan to die reading manuals" --Gene Woolsey + diff --git a/demo/ermis-f/imap-protocol/cur/1600094999.22600.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094999.22600.mbox:2,S new file mode 100644 index 00000000..7e60b511 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094999.22600.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From jjmckay at comaxis.com Fri Feb 6 10:27:22 2015 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Use of namespace in LIST command +In-Reply-To: +References: <54D41703.6060403@comaxis.com> + +Message-ID: <54D5078A.8030207@comaxis.com> + +Thanks for the information. The server is described by my customer as +?Washington University's WU-IMAP version 2004g?. +What you told me is pretty much what I thought. However I still cannot +get the LIST command to work with any of the +alternate namespaces. For example here are a couple attempts. What +does the message "mh format names disabled" mean? + +* NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/")) +(("#shared/" "/")("#ftp/" "/")("#news." ".")("#public/" "/")) +A006 OK NAMESPACE completed +abcd LIST "" "#mhinbox" +* NO /users/u2/bob/.mh_profile not found, mh format names disabled +abcd OK LIST completed + +abcd LIST "" "#mh/%" +* NO /users/u2/bob/.mh_profile not found, mh format names disabled +abcd OK LIST completed + + +On 2/6/2015 2:21 AM, Dave Cridland wrote: +> On 6 February 2015 at 01:21, Jeff McKay > wrote: +> +> I think I need a refresher, or I am confused about something. I +> log on to imap account "bob" (not sure which server +> right now), and the NAMESPACE command gives me: +> +> * NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/")) +> (("#shared/" "/")("#ftp/" "/")("#news." ".")("#public/" "/")) +> +> My usual command: LIST "" * +> +> tells me that there is an INBOX and nothing more, and the customer +> says there should be a bunch of other folders. I have +> tried: +> +> LIST "" "~bob/%" +> LIST "" "~/bob/%" +> LIST "" "#mh/bob/%" +> LIST "" "#mhinbox/bob/%" +> +> but for each of the above, the command returns no folder names. +> What I am doing wrong? +> +> +> So the NAMESPACE here is giving you three sets; for example the first +> is here: +> +> (("" "/")("#mhinbox" NIL)("#mh/" "/")) +> +> This is your own mailboxes, and it notes that the namespaces are: +> +> ("" "/") +> +> An empty string prefix - which apparently contains only INBOX. +> +> ("#mhinbox" NIL) +> +> This one has no separator, and therefore no hierarchy: +> +> . LIST "" "#mhinbox" +> +> Might give you a mailbox for the MH inbox. Or might not - it's telling +> you where it *would* be if it exists. +> +> ("#mh/" "/") +> +> Other MH mailboxes for bob: +> +> . LIST "" "#mh/%" +> +> Note that it has a hierarchy separator, but also that there is one in +> the prefix. This is common, but as we'll see, not essential. +> +> The next section is other users' mailboxes. Let's consider that there +> exists another user "alice"; one might find Alice's mailboxes with: +> +> . LIST "" "~alice/%" +> +> But really, all this tells us is that if you find a mailbox beginning +> "~", it's another user's one. +> +> The final group is shared mailboxes; by now you've got the idea: +> +> . LIST "" "#shared/%" +> . LIST "" "#ftp/%" +> . LIST "" "#news.%" +> +> I'm pretty sure the server is UW or Panda. +> +> Dave. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600094999.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094999.22603.mbox:2,S new file mode 100644 index 00000000..2d6a35b2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094999.22603.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From jkt at flaska.net Mon Jan 5 08:17:53 2015 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?Condstore=2C_Gmail_and_mod=5Fseq?= +In-Reply-To: +References: +Message-ID: + +On Monday, 5 January 2015 16:47:47 CEST, Daniel Pich? wrote: +> Does anybody know if mod_seq can be reset by the gmail servers or they are +> always valid? Thanks! + +What do you mean by "reset"? Their meaning can only be reset by a change of +UIDVALIDITY. The MODSEQ of a message can increase at any time, though. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600094999.22606.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600094999.22606.mbox:2,S new file mode 100644 index 00000000..74fe02ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600094999.22606.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From blong at google.com Wed Dec 3 14:10:35 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] GMail and Content-Type: text/x-patch, + Content-Disposition: inline; filename=blah.patch +In-Reply-To: <74f73395-7fb8-4809-ba03-9209bb653322@flaska.net> +References: <74f73395-7fb8-4809-ba03-9209bb653322@flaska.net> +Message-ID: + +This seems way out of IMAP territory, but I've filed a bug for the frontend +team to look at it. + +Brandon + +On Tue, Nov 25, 2014 at 2:31 AM, Jan Kundr?t wrote: + +> Hi Brandon, +> I was talking with Gerrit's developers about how to improve the e-mails +> they generate (Gerrit is a patch review system tightly integrated with +> Git). They told me that GMail's web interface doesn't show the patch +> inline, as requested. Here's how the generated e-mail looks like: +> +> * Content-Type: multipart/mixed +> | +> +--* Content-Type: text/plain; charset=utf-8; format=flowed +> | (the textual description) +> | +> +--* Content-Type: text/x-patch +> Content-Disposition: inline; filename=0001-blah-blah.patch +> Content-Transfer-Encoding: base64 +> (the patch goes here) +> +> What I was hoping to achieve was a display of both parts in sequence, as +> if the e-mail was embedded into the main textual body part. What I got back +> instead is the rendering shown in the attached image. +> +> Is there something I could do to let GMail render the patch as-is, without +> extra clicking, while at the same time making it possible to open the patch +> in an external viewer by other clients? +> +> With kind regards, +> Jan +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095000.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095000.22583.mbox:2,S new file mode 100644 index 00000000..4562f871 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095000.22583.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From slusarz at curecanti.org Thu Jul 23 12:04:30 2015 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail LIST-EXTENDED bug +Message-ID: <20150723130430.Horde.SA97i23HR6ui9hH7OsaY6OS@bigworm.curecanti.org> + +A Gmail IMAP protocol bug that was reported to me and has been verified. + +Gmail supports LIST-EXTENDED, at least in the account I tested with. +However, this command fails: + +* 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 +a OK slusarz@gmail.com authenticated (Success) +b LIST () "" (*) +b BAD Could not parse command + + +This is a legal LIST command if LIST-EXTENDED is available, per RFC 5258: + + list = "LIST" [SP list-select-opts] SP mailbox SP mbox-or-pat + [SP list-return-opts] + list-select-opts = "(" [ + (*(list-select-opt SP) list-select-base-opt + *(SP list-select-opt)) + / (list-select-independent-opt + *(SP list-select-independent-opt)) + ] ")" + ; Any number of options may be in any order. + ; If a list-select-mod-opt appears, then a + ; list-select-base-opt must also appear. + ; This allows these: + ; () + ; (REMOTE) + ; (SUBSCRIBED) + ; (SUBSCRIBED REMOTE) + ; (SUBSCRIBED RECURSIVEMATCH) + ; (SUBSCRIBED REMOTE RECURSIVEMATCH) + ; But does NOT allow these: + ; (RECURSIVEMATCH) + ; (REMOTE RECURSIVEMATCH) + mbox-or-pat = list-mailbox / patterns + patterns = "(" list-mailbox *(SP list-mailbox) ")" + + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095000.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095000.22589.mbox:2,S new file mode 100644 index 00000000..b3d8ff76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095000.22589.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu May 21 06:36:16 2015 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Registration of keyword which enables fetching + external images +In-Reply-To: +References: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> + <14D026C7F297AD44AC82578DD818CDD047B37C34E0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + + + +Message-ID: <555DDF50.1070108@verizon.net> + +On 5/20/2015 2:29 PM, Brandon Long wrote: +> +> +> On Wed, May 20, 2015 at 12:07 PM, Andrew Sutherland > wrote: +> +> On Wed, May 20, 2015 at 8:47 AM, Jan Kundr?t > wrote: +> +> Are some other client developers interested in this? +> +> +> It seems reasonable to me to standardize a flag for this purpose, +> even if many clients prefer to keep the setting local-only. +> Thunderbird uses a per-message "remoteContentPolicy" property that +> is persisted locally in the msf files but never persisted to IMAP +> servers. Once set, it allows external images for the specific +> messages to be fetched going forward. (Some information leakage +> will be suppressed on repeated viewings because of the network +> cache, but the images/etc. are likely to be rotated out.) +> +> Note: I no longer actively contribute to Thunderbird, so if anyone +> is going to change things to use the flag it won't be me. I work +> on the Firefox OS email app, and we currently have no plans to +> persist "show extenal images" on a per message basis, but if we +> did, we would use the proposed flag since we would synchronize the +> flag to the server when possible. +> +> +> I think we persist per sender, not per message... and we know proxy +> most of that stuff, so I think a lot of users just show all +> messages... or we have some complicated logic about when it's ok to +> show and when it's not which is calculated on the fly and not exposed. + +Thunderbird also allows you to persist a show-remote-images per-sender +as well (the UI says something like "Show content for this message" and +"Remember for this sender" as options). + +If an IMAP keyword were standardized, I'd probably recommend we'd use +it, but I wouldn't prioritize implementing it. I believe that when we +use the per-sender option, we don't bother to set the flag on the +message itself, so I'm not sure that a keyword would be totally +reflective of the current state in Thunderbird. + +Ultimately, I'm convinced of neither the utility nor the inutility of +this feature. The biggest benefit appears to be "synchronization of +settings," but it's not exactly a sufficient synchronization due to the +existence and use of coarser-grained (e.g., per-sender) policies, so I'm +hesitant to support such a standard. On the other hand, I don't really +have a coherent reason to object to the standard. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095000.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095000.22592.mbox:2,S new file mode 100644 index 00000000..29f509c5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095000.22592.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Apr 8 01:05:28 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +References: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> +Message-ID: + +David Harris writes: +> 3: The following search is valid, according to the syntax in RFC3501: +> +> xx SEARCH OR OR +> +> and allows an OR expression to cover three terms instead of +> just two. As such, it +> seems quite useful, but it would certainly have mystified my +> old search code (it was +> rubbish, as I've pointed out), and I was wondering how +> generally safe it would be to +> use this type of expression? + +I've seen this kind of thing many times, e.g. OR OR FROM x TO x CC x, and I +think it's fairly widely used. IIRC the Symantec IMAP proxy uses nested ORs +en masse. + +I agree about the vagueness with regard to searching. My best advice is to +do what seems useful to users, and make searching inclusive rather than +exact. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095000.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095000.22595.mbox:2,S new file mode 100644 index 00000000..d7009a8f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095000.22595.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From ladar at lavabitllc.com Sat Mar 7 08:10:19 2015 +To: imap-protocol@u.washington.edu +From: Ladar Levison +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> + +Message-ID: <54FB22EB.7090707@lavabitllc.com> + + + +On 3/7/2015 8:34 AM, Dave Cridland wrote: +> But in the world of today, the elephant is that the bulk of mail is +> under the control of a handful of huge providers, and a guy working in +> a university lab somewhere is pretty unlikely to have the chance to +> make any kind of difference, and probably wouldn't be interested. +> Mark, in his twenties, tended to solve practical problems that he +> encountered, like telnet issues, roaming mail users, etc. Those +> problems are already solved, so I suspect he'd be solving some +> entirely different problem today, like WebRTC signaling, or practical +> end to end crypto, or secure file sharing, or heaven only knows what. + +If all those big providers were using POP, and he wanted to solve a +problem, like mobility, would he have approached it differently? From an +abstract standpoint, the programming language doesn't matter. IMAP is a +protocol that can be implemented in any language, which holds true for +JSON protocols as well. They are simply schemes for stateless +client/server interactions (stateless because they have to go over HTTP) +and which happen to use JSON as the serialization scheme. They could +just as easily have used SOAP/XML. + +I'm wondering if the future of mail protocols is to continue improving +the line based protocols we have, or will they be replaced by something +that is friendly to the web? Were seeing a number of vendor specific +mail protocols already, and I'm wondering if convergence is in our +future? In other words, if someone were to start working on a new +protocol today, should they focus on the old line based scheme, or +switch to the newer stateless, JSON paradigm common to the web? + + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 836 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095000.22600.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095000.22600.mbox:2,S new file mode 100644 index 00000000..6c991c0f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095000.22600.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Feb 6 10:56:17 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Use of namespace in LIST command +In-Reply-To: <54D5078A.8030207@comaxis.com> +References: <54D41703.6060403@comaxis.com> + + <54D5078A.8030207@comaxis.com> +Message-ID: + +> For example here are a couple attempts. What does the +> message "mh format names disabled" mean? + +The #mh namespaces refer to the MH mua, which uses a local message store +in the user's home directory. If the user uses MH, the #mh namespace can +be used to access those folders via UW IMAPD. + +The message about their not being a .mh_profile indicates that the user +is not using MH. Therefore the #mh namespaces don't apply to them, and +nothing will show up under them. + +Or perhaps they have carried across an old set of MH folders, but aren't +actively using MH any more. In that case, they might now have an +.mh_profile file. If this *is* the case, have them + + echo Path: Mail > ${HOME}/.mh_profile + +and it should start working. (Replace Mail with the path to their MH +folder store if they don't use the default ${HOME}/Mail.) + +http://www.nongnu.org/nmh/ is a good starting point for information on the +current release of the MH mailer. + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095000.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095000.22603.mbox:2,S new file mode 100644 index 00000000..67800e11 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095000.22603.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From jkt at flaska.net Mon Jan 5 08:48:28 2015 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?Condstore=2C_Gmail_and_mod=5Fseq?= +In-Reply-To: +References: + + +Message-ID: + +(Replying back to list so that others can benefit from this discussion.) + +On Monday, 5 January 2015 17:23:25 CEST, Daniel Pich? wrote: +> Thanks for the response. +> I'm asking if the mod_seq can become invalid at some point. For example, if +> UIDVALIDITY changes. + +Yes, when UIDVALIDITY changes, all information which you have for that +mailbox is now invalid. That includes MODSEQs of individual messages, as +well as the HIGHESTMODSEQ of the mailbox, and many other things, including +message UIDs and (by extension of that) everything you might remember about +that mailbox. + +> I.e. If we try to do a "CONDSTORE CHANGEDSINCE 123456" one year from now, +> will it still work? Or if something can make old mod_seq invalid. + +If UIDVALIDITY is the same, then that call is guaranteed to never skip a +thing. It is however not required to only report back items which actually +changed for obvious reasons (the server-side storage is limited). You might +get back data about extra messages which actually have not changed since +then. The more often you sync, the lesser amount of false positives you're +going to get. + +> We're using condstore to add collaboration and share messages between +> different accounts ( keeping.com ). Doing resyncs ("CONDSTORE CHANGEDSINCE +> 1") has become too costly since some accounts have hundred of thousands of +> messages. + +What exactly are you syncing? Do you use QRESYNC? What operations (exactly) +are costly for you? + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095000.22617.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095000.22617.mbox:2,S new file mode 100644 index 00000000..806f48a5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095000.22617.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From jkt at flaska.net Tue Nov 25 02:31:29 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] =?iso-8859-1?q?GMail_and_Content-Type=3A_text/x-p?= + =?iso-8859-1?q?atch=2C_Content-Disposition=3A_inline=3B_filename?= + =?iso-8859-1?q?=3Dblah=2Epatch?= +Message-ID: <74f73395-7fb8-4809-ba03-9209bb653322@flaska.net> + +Hi Brandon, +I was talking with Gerrit's developers about how to improve the e-mails +they generate (Gerrit is a patch review system tightly integrated with +Git). They told me that GMail's web interface doesn't show the patch +inline, as requested. Here's how the generated e-mail looks like: + +* Content-Type: multipart/mixed +| ++--* Content-Type: text/plain; charset=utf-8; format=flowed +| (the textual description) +| ++--* Content-Type: text/x-patch + Content-Disposition: inline; filename=0001-blah-blah.patch + Content-Transfer-Encoding: base64 + (the patch goes here) + +What I was hoping to achieve was a display of both parts in sequence, as if +the e-mail was embedded into the main textual body part. What I got back +instead is the rendering shown in the attached image. + +Is there something I could do to let GMail render the patch as-is, without +extra clicking, while at the same time making it possible to open the patch +in an external viewer by other clients? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: inline.png +Type: image/png +Size: 40308 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095001.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095001.22583.mbox:2,S new file mode 100644 index 00000000..a7a80e68 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095001.22583.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From nicolson at google.com Thu Jul 23 12:23:13 2015 +To: imap-protocol@u.washington.edu +From: Jamie Nicolson +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail LIST-EXTENDED bug +In-Reply-To: <20150723130430.Horde.SA97i23HR6ui9hH7OsaY6OS@bigworm.curecanti.org> +References: <20150723130430.Horde.SA97i23HR6ui9hH7OsaY6OS@bigworm.curecanti.org> +Message-ID: + +*sigh*, so you're saying we're not supporting the mailbox pattern list? +I'll look into it. + +On Thu, Jul 23, 2015 at 12:04 PM, Michael M Slusarz +wrote: + +> A Gmail IMAP protocol bug that was reported to me and has been verified. +> +> Gmail supports LIST-EXTENDED, at least in the account I tested with. +> However, this command fails: +> +> * 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 +> a OK slusarz@gmail.com authenticated (Success) +> b LIST () "" (*) +> b BAD Could not parse command +> +> +> This is a legal LIST command if LIST-EXTENDED is available, per RFC 5258: +> +> list = "LIST" [SP list-select-opts] SP mailbox SP mbox-or-pat +> [SP list-return-opts] +> list-select-opts = "(" [ +> (*(list-select-opt SP) list-select-base-opt +> *(SP list-select-opt)) +> / (list-select-independent-opt +> *(SP list-select-independent-opt)) +> ] ")" +> ; Any number of options may be in any order. +> ; If a list-select-mod-opt appears, then a +> ; list-select-base-opt must also appear. +> ; This allows these: +> ; () +> ; (REMOTE) +> ; (SUBSCRIBED) +> ; (SUBSCRIBED REMOTE) +> ; (SUBSCRIBED RECURSIVEMATCH) +> ; (SUBSCRIBED REMOTE RECURSIVEMATCH) +> ; But does NOT allow these: +> ; (RECURSIVEMATCH) +> ; (REMOTE RECURSIVEMATCH) +> mbox-or-pat = list-mailbox / patterns +> patterns = "(" list-mailbox *(SP list-mailbox) ")" +> +> +> michael +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095001.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095001.22589.mbox:2,S new file mode 100644 index 00000000..991fcb58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095001.22589.mbox:2,S @@ -0,0 +1,95 @@ +MBOX-Line: From brong at fastmail.fm Thu May 21 07:22:27 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Registration of keyword which enables fetching + external images +In-Reply-To: <555DDF50.1070108@verizon.net> +References: <5f24e38f-5968-4367-97f6-fa4008f582fd@flaska.net> + <14D026C7F297AD44AC82578DD818CDD047B37C34E0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + + + + <555DDF50.1070108@verizon.net> +Message-ID: <1432218147.630295.274806297.1385F9F3@webmail.messagingengine.com> + +On Thu, May 21, 2015, at 11:36 PM, Joshua Cranmer wrote: +> On 5/20/2015 2:29 PM, Brandon Long + wrote: +>> +>> +>> On Wed, May 20, 2015 at 12:07 PM, + Andrew Sutherland wrote: +>>> On Wed, May + 20, 2015 at 8:47 AM, Jan Kundr?t + wrote: +>>> +>>>> Are some other client + developers interested in this? +>>> +>>> +>>> It seems reasonable to me to standardize a flag + for this purpose, even if many clients prefer to + keep the setting local-only. Thunderbird uses a + per-message "remoteContentPolicy" property that is + persisted locally in the msf files but never + persisted to IMAP servers. Once set, it allows + external images for the specific messages to be + fetched going forward. (Some information leakage + will be suppressed on repeated viewings because of + the network cache, but the images/etc. are likely + to be rotated out.) +>>> +>>> Note: I no longer actively contribute to + Thunderbird, so if anyone is going to change + things to use the flag it won't be me. I work on + the Firefox OS email app, and we currently have no + plans to persist "show extenal images" on a per + message basis, but if we did, we would use the + proposed flag since we would synchronize the flag + to the server when possible. +>> +>> I think we persist per sender, not per message... and + we know proxy most of that stuff, so I think a lot of + users just show all messages... or we have some + complicated logic about when it's ok to show and when it's + not which is calculated on the fly and not exposed. +> +> + Thunderbird also allows you to persist a show-remote-images + per-sender as well (the UI says something like "Show content for + this message" and "Remember for this sender" as options). +> +> + If an IMAP keyword were standardized, I'd probably recommend we'd + use it, but I wouldn't prioritize implementing it. I believe that + when we use the per-sender option, we don't bother to set the flag + on the message itself, so I'm not sure that a keyword would be + totally reflective of the current state in Thunderbird. +> +> + Ultimately, I'm convinced of neither the utility nor the inutility + of this feature. The biggest benefit appears to be + "synchronization of settings," but it's not exactly a sufficient + synchronization due to the existence and use of coarser-grained + (e.g., per-sender) policies, so I'm hesitant to support such a + standard. On the other hand, I don't really have a coherent reason + to object to the standard. + +FastMail likewise shows content based on the sender. If this flag +existed, we would automatically set it for addresses in your addressbook +upon delivery, but probably not update it when you changed your +addressbook afterwards, so it would be of partial value I guess. Our +client uses the current addressbook so that older messages from a known +sender get images as well. + +Bron. + + +-- +Bron Gondwana brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095001.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095001.22592.mbox:2,S new file mode 100644 index 00000000..695a530e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095001.22592.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From brong at fastmail.fm Wed Apr 8 05:28:56 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: +References: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> + +Message-ID: <1428496136.932088.250634641.1291461C@webmail.messagingengine.com> + +On Wed, Apr 8, 2015, at 06:05 PM, Arnt Gulbrandsen wrote: +> David Harris writes: +> > 3: The following search is valid, according to the syntax in RFC3501: +> > +> > xx SEARCH OR OR +> > +> > and allows an OR expression to cover three terms instead of +> > just two. As such, it +> > seems quite useful, but it would certainly have mystified my +> > old search code (it was +> > rubbish, as I've pointed out), and I was wondering how +> > generally safe it would be to +> > use this type of expression? +> +> I've seen this kind of thing many times, e.g. OR OR FROM x TO x CC x, and I +> think it's fairly widely used. IIRC the Symantec IMAP proxy uses nested ORs +> en masse. +> +> I agree about the vagueness with regard to searching. My best advice is to +> do what seems useful to users, and make searching inclusive rather than +> exact. + +An important thing to be aware of - if you have iPhone users. iOS since version 7 +has done a BODY search on every folder if you do a search. That's prohibitively +expensive if you're scanning emails every time. + +We implemented fuzzy matching support, and we just do a client quirk (that's right, +we use ID for evil) to turn a regular BODY search into a FUZZY body search, +because the alternative is a shitty experience for iPhone users. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095001.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095001.22595.mbox:2,S new file mode 100644 index 00000000..e7bd94c4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095001.22595.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From imantc at gmail.com Sat Mar 7 08:40:26 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FB22EB.7090707@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> +Message-ID: + +Speaking of new protocols, implementations of new email protocols can +be made much easier for developers and faster for users if a switch +were made from text-based to binary formats. + +With binary formats, parsing is greatly simplified. Case conversion +become unnecessary. + +Specify expected data length as a number of bytes. CRLF, empty lines +lose any special meaning and become part of the text. No need for line +wrap or any text modification. + +Commands and mime-types are exact binary sequence. + +Encode all text as e.g. UTF-8 for transmission - here goes away back +and forth charset conversion. + +Even if current command-response command sequence were kept - apart +from these simple changes, email servers would work faster and more +reliably. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095001.22600.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095001.22600.mbox:2,S new file mode 100644 index 00000000..9911cb17 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095001.22600.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Feb 6 11:19:16 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Use of namespace in LIST command +In-Reply-To: +References: <54D41703.6060403@comaxis.com> + + <54D5078A.8030207@comaxis.com> + +Message-ID: + +Doh! + +> The message about their not being a .mh_profile indicates that the user is +s/their/there/ + +> actively using MH any more. In that case, they might now have an .mh_profile +s/now/not/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095001.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095001.22603.mbox:2,S new file mode 100644 index 00000000..f74632c9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095001.22603.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From jkt at flaska.net Mon Jan 5 10:37:52 2015 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?Condstore=2C_Gmail_and_mod=5Fseq?= +In-Reply-To: +References: + + + + +Message-ID: <14db4ce6-e0d8-46b9-8a4a-ccb5500e5f18@flaska.net> + +On Monday, 5 January 2015 18:50:32 CEST, Daniel Pich? wrote: +> So we poll each account periodically using condstore to capture label +> changes. It's working perfectly fine however it doesn't report when +> messages are permanently deleted. So we resync account a few times per day +> ("CONDSTORE CHANGEDSINCE 1") to see if some messages have been deleted. + +But doing that will very likely get you a list of all messages which are +present in a mailbox right now. That's a very poor way of obtaining that +information. + +RFC 3501 and RFC 4549 contain a lot of tips on how to sync efficiently. + +> Some accounts have hundred of thousands of message so that means we have a +> lot of server side processing to do. So my plan was to save the mod_seq +> when the account is entered in our system and use that point in time to +> resync accounts. That way we never have use a mod_seq of 1 which returns a +> lot of messages we don't care about. + +Use QRESYNC and read https://tools.ietf.org/html/rfc7162#section-3.2.6 . + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095001.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095001.22620.mbox:2,S new file mode 100644 index 00000000..c27940f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095001.22620.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From blong at google.com Tue Oct 7 13:28:31 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + +Message-ID: + +As of yesterday, Gmail now supports reporting flags changes anywhere we +would report new/expunged messages (ie, most places its allowed by the +protocol, but definitely during IDLE). + +Its only enabled for gmail.com users at the moment, Google Apps users will +follow in a week or so, assuming we don't find any issues. + +Brandon + +On Thu, Jan 23, 2014 at 1:32 PM, Brandon Long wrote: + +> Yes, gmail currently only notifies of new messages and expunged messages +> during idle. +> +> Brandon +> On Jan 23, 2014 1:26 PM, "Rick Sanders" wrote: +> +>> Is it true that Gmail does not send notification to a client which is +>> idling on a mailbox? +>> +>> I ran across that while testing some code that detects flag changes using +>> IDLE and I was surprised that I did not get anything from Gmail. +>> +>> Google searches suggest that's the case. +>> +>> Thanks, +>> Rick +>> +>> -- +>> Rick Sanders +>> rfs9999@earthlink.net +>> IMAP Tools http://www.athensfbc.com/imap-tools +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22583.mbox:2,S new file mode 100644 index 00000000..181a3a4f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22583.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From nicolson at google.com Thu Jul 23 18:52:59 2015 +To: imap-protocol@u.washington.edu +From: Jamie Nicolson +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail LIST-EXTENDED bug +In-Reply-To: +References: <20150723130430.Horde.SA97i23HR6ui9hH7OsaY6OS@bigworm.curecanti.org> + +Message-ID: + +We can probably fix this in a week or so. Is it causing big problems for +any clients to have LIST-EXTENDED enabled with this flaw? If it's causing +serious pain we could turn off LIST-EXTENDED until it's fixed. + +On Thu, Jul 23, 2015 at 12:23 PM, Jamie Nicolson +wrote: + +> *sigh*, so you're saying we're not supporting the mailbox pattern list? +> I'll look into it. +> +> On Thu, Jul 23, 2015 at 12:04 PM, Michael M Slusarz > wrote: +> +>> A Gmail IMAP protocol bug that was reported to me and has been verified. +>> +>> Gmail supports LIST-EXTENDED, at least in the account I tested with. +>> However, this command fails: +>> +>> * 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 +>> a OK slusarz@gmail.com authenticated (Success) +>> b LIST () "" (*) +>> b BAD Could not parse command +>> +>> +>> This is a legal LIST command if LIST-EXTENDED is available, per RFC 5258: +>> +>> list = "LIST" [SP list-select-opts] SP mailbox SP mbox-or-pat +>> [SP list-return-opts] +>> list-select-opts = "(" [ +>> (*(list-select-opt SP) list-select-base-opt +>> *(SP list-select-opt)) +>> / (list-select-independent-opt +>> *(SP list-select-independent-opt)) +>> ] ")" +>> ; Any number of options may be in any order. +>> ; If a list-select-mod-opt appears, then a +>> ; list-select-base-opt must also appear. +>> ; This allows these: +>> ; () +>> ; (REMOTE) +>> ; (SUBSCRIBED) +>> ; (SUBSCRIBED REMOTE) +>> ; (SUBSCRIBED RECURSIVEMATCH) +>> ; (SUBSCRIBED REMOTE RECURSIVEMATCH) +>> ; But does NOT allow these: +>> ; (RECURSIVEMATCH) +>> ; (REMOTE RECURSIVEMATCH) +>> mbox-or-pat = list-mailbox / patterns +>> patterns = "(" list-mailbox *(SP list-mailbox) ")" +>> +>> +>> michael +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22589.mbox:2,S new file mode 100644 index 00000000..8c77cc4d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22589.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From bill.shannon at ymail.com Fri May 22 16:46:26 2015 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +Message-ID: <555FBFD2.1030800@ymail.com> + +I'm unclear on the requirements around the COPY command and the COPYUID +response code. + +Is there any guarantee that the order of messages in the COPY command is +the order they'll appear in the destination mailbox? Or are they +allowed to appear in any arbitrary order in the destination mailbox? +(After any existing messages, of course.) + +RFC 4315 says of the COPYUID response: + + The source UID set is in the order the message(s) were copied; the + destination UID set corresponds to the source UID set and is in + the same order. + +Exactly what order is that? Is it the order in which the messages were +mentioned in the COPY command? Is it the order they actually appear in +the destination mailbox (assuming it can be different)? Or is it in +some other undefined order? + +With Gmail I'm getting + +A1 COPY 1:2 dest +A1 OK [COPYUID 123456 1:2 2,1] + +and + +A1 COPY 2,1 dest +A1 OK [COPYUID 123456 1:2 2,1] + +The order of the source UIDs is unrelated to the order the messages +are mentioned in the COPY command and unrelated to the order they +appear in the destination mailbox. + +If I don't know the UIDs of the source messages, is there any way to +determine which message was copied to which UID in the destination +mailbox? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22592.mbox:2,S new file mode 100644 index 00000000..92b93caa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22592.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Wed Apr 8 11:31:42 2015 +To: imap-protocol@u.washington.edu +From: "Hoa V. Dinh" +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <1428496136.932088.250634641.1291461C@webmail.messagingengine.com> +References: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> + + <1428496136.932088.250634641.1291461C@webmail.messagingengine.com> +Message-ID: <7B7A934C6DB848D6B4ADE799C2F6DC78@gmail.com> + +You probably want to use a full text indexer such as Lucene / Elastic Search in this case. +It will prevent the server from iterating on each email. + +-- +Hoa V. Dinh + + +On Wednesday, April 8, 2015 at 5:28 AM, Bron Gondwana wrote: + +> An important thing to be aware of - if you have iPhone users. iOS since version 7 +> has done a BODY search on every folder if you do a search. That's prohibitively +> expensive if you're scanning emails every time. + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22595.mbox:2,S new file mode 100644 index 00000000..ebc083dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22595.mbox:2,S @@ -0,0 +1,85 @@ +MBOX-Line: From janssen at parc.com Sat Mar 7 09:13:58 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FB22EB.7090707@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> +Message-ID: <8701.1425748438@parc.com> + +Ladar Levison wrote: + +> On 3/7/2015 8:34 AM, Dave Cridland wrote: +> > But in the world of today, the elephant is that the bulk of mail is +> > under the control of a handful of huge providers, and a guy working in +> > a university lab somewhere is pretty unlikely to have the chance to +> > make any kind of difference, and probably wouldn't be interested. +> > Mark, in his twenties, tended to solve practical problems that he +> > encountered, like telnet issues, roaming mail users, etc. Those +> > problems are already solved, so I suspect he'd be solving some +> > entirely different problem today, like WebRTC signaling, or practical +> > end to end crypto, or secure file sharing, or heaven only knows what. +> +> If all those big providers were using POP, and he wanted to solve a +> problem, like mobility, would he have approached it differently? + +Mobility is more of a fact than a problem? What's the particular +problem there? Multiple end-points? Intermittent connections? + +> From an abstract standpoint, the programming language doesn't +> matter. IMAP is a protocol that can be implemented in any language, +> which holds true for JSON protocols as well. + +Well... JSON stands for "Javascript Object Notation", so Javascript +does have a bit of an alpha status there. And it's harder to parse +than S-expressions :-). + +> They are simply schemes for stateless client/server interactions +> (stateless because they have to go over HTTP) + +There's no intrinsic reason things that have to go over HTTP have to be +stateless; it's just a tradition that comes from the now somewhat +archaic idea in HTTP 1.0 that you close the session identifier (the TCP +connection) after each request/response pair. Sessions were almost +immediately re-defined via cookies, and many protocols over HTTP +are now stateful, using those cookies. + +> and which happen to use JSON as the serialization scheme. They could +> just as easily have used SOAP/XML. + +Yes. However, SOAP, as it was originally designed by Microsoft, is a +pretty (IMO) bletcherous (i.e., tasteless) and bloated attempt to funnel +DCOM calls through firewalls in a way that wouldn't be immediately +interdicted by anti-virus software. So, a LISP person wouldn't be able +to bring himself to use it (speaking as a former Lisp and RPC person). + +JSON over HTTP is a somewhat (but not much) cleaner re-interpretation +of the same idea. + +> I'm wondering if the future of mail protocols is to continue improving +> the line based protocols we have, or will they be replaced by something +> that is friendly to the web? Were seeing a number of vendor specific +> mail protocols already, and I'm wondering if convergence is in our +> future? In other words, if someone were to start working on a new +> protocol today, should they focus on the old line based scheme, or +> switch to the newer stateless, JSON paradigm common to the web? + +JSON is just a Javascript convenience. It's not a particularly +efficient way of sending data over the network. I think your question +about line-based protocols is a good one, but the IETF still leans +towards observable-text based protocols. So, if you wanted to design +an email protocol that would be blessed by the IETF, using a text-based +"line" protocol isn't a bad idea. + +Personally, I'd do everything in binary, but that's just me obsessing +about packet sizes. I'm thinking about designing a secure email +protocol built on CCNx (http://www.ccnx.org/), which provides digital +signatures, encryption, and router caching. There's no concept of +a "connection" at all, or a "mail server"; just messages. That's +the future. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22600.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22600.mbox:2,S new file mode 100644 index 00000000..59e6a273 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22600.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From jjmckay at comaxis.com Fri Feb 6 15:43:24 2015 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Use of namespace in LIST command +In-Reply-To: +References: <54D41703.6060403@comaxis.com> + + <54D5078A.8030207@comaxis.com> + +Message-ID: <54D5519C.2020600@comaxis.com> + +This customer was telling me that Thunderbird sees the folders just +fine, so I did a trace of TB's traffic and found it +is doing both LIST and LSUB. To be honest I had not heard of the LSUB +command before. It seems to me that retrieving +subscribed folders is going to give a subset of the entire folder list, +and I want the entire list. But in this case, LIST by +itself leaves off all the folders we were missing. In tests with some +other imap servers my theory is correct - LIST gives +me what I want, except for this case. So I can work around it for this +guy but I'm wondering if doing both commands +(then eliminating duplicates) is the best practice. + +On 2/6/2015 10:56 AM, Lyndon Nerenberg wrote: +>> For example here are a couple attempts. What does the message "mh +>> format names disabled" mean? +> +> The #mh namespaces refer to the MH mua, which uses a local message +> store in the user's home directory. If the user uses MH, the #mh +> namespace can be used to access those folders via UW IMAPD. +> +> The message about their not being a .mh_profile indicates that the +> user is not using MH. Therefore the #mh namespaces don't apply to +> them, and nothing will show up under them. +> +> Or perhaps they have carried across an old set of MH folders, but +> aren't actively using MH any more. In that case, they might now have +> an .mh_profile file. If this *is* the case, have them +> +> echo Path: Mail > ${HOME}/.mh_profile +> +> and it should start working. (Replace Mail with the path to their MH +> folder store if they don't use the default ${HOME}/Mail.) +> +> http://www.nongnu.org/nmh/ is a good starting point for information on +> the current release of the MH mailer. +> +> --lyndon +> +> +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22603.mbox:2,S new file mode 100644 index 00000000..fabbfe28 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22603.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From blong at google.com Mon Jan 5 11:56:59 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Condstore, Gmail and mod_seq +In-Reply-To: <14db4ce6-e0d8-46b9-8a4a-ccb5500e5f18@flaska.net> +References: + + + + + <14db4ce6-e0d8-46b9-8a4a-ccb5500e5f18@flaska.net> +Message-ID: + +Well, gmail doesn't support qresync, we're still investigating it. + +Brandon +On Jan 5, 2015 10:40 AM, "Jan Kundr?t" wrote: + +> On Monday, 5 January 2015 18:50:32 CEST, Daniel Pich? wrote: +> +>> So we poll each account periodically using condstore to capture label +>> changes. It's working perfectly fine however it doesn't report when +>> messages are permanently deleted. So we resync account a few times per day +>> ("CONDSTORE CHANGEDSINCE 1") to see if some messages have been deleted. +>> +> +> But doing that will very likely get you a list of all messages which are +> present in a mailbox right now. That's a very poor way of obtaining that +> information. +> +> RFC 3501 and RFC 4549 contain a lot of tips on how to sync efficiently. +> +> Some accounts have hundred of thousands of message so that means we have a +>> lot of server side processing to do. So my plan was to save the mod_seq +>> when the account is entered in our system and use that point in time to +>> resync accounts. That way we never have use a mod_seq of 1 which returns a +>> lot of messages we don't care about. +>> +> +> Use QRESYNC and read https://tools.ietf.org/html/rfc7162#section-3.2.6 . +> +> Cheers, +> Jan +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22620.mbox:2,S new file mode 100644 index 00000000..5bb1a490 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22620.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From eben at inboxapp.com Wed Oct 8 12:07:17 2014 +To: imap-protocol@u.washington.edu +From: Eben Freeman +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing fields +Message-ID: + +Hi folks, +Since Monday, we've been encountering issues in which we issue IMAP calls +to Gmail such as + +UID FETCH 299 (X-GM-MSGID X-GM-THRID) + +and the response sporadically does not actually contain a value for +X-GM-MSGID. Upon retrying, we generally get a complete response. + +Is this behavior expected, and something we should work around? Or is +something awry? + +For completeness, other calls that sometimes give incomplete responses: +UID FETCH 296 (BODY.PEEK[] INTERNALDATE FLAGS X-GM-THRID X-GM-MSGID +X-GM-LABELS) +(response missing BODY[]) + +UID FETCH 288 X-GM-LABELS +(response missing X-GM-LABELS) + +Thanks, +Eben + +PS. Apologies if this list is the wrong venue for this question -- if so, +is there a better one? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095002.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095002.22623.mbox:2,S new file mode 100644 index 00000000..ac058ea2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095002.22623.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From asuth at mozilla.com Tue Sep 2 13:19:45 2014 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> +References: <5400A146.4020602@mozilla.com> <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> +Message-ID: <54062661.6020000@mozilla.com> + +On 08/30/2014 05:02 PM, Arnt Gulbrandsen wrote: +>> and want to better handle: +>> - Please log in via your web browser: +>> http://support.google.com/mail/accounts/bin/answer.py?answer=78754 +>> (Failure) +> +> There is a response code for that, WEBALERT. Not standard, but at +> least it's better than trying to have a client parsing human-readable +> text. + +It appears Gmail may actually be doing this, which is great news! In a +tangential bug of ours, a reporter using openssl s_client -connect gave +us the following sanitized excerpt: + +* NO [WEBALERT ***] Web login required. +a001 NO [ALERT] Please log in via your web browser: +http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure) + +A similar full example with URL seems to be provided at +https://productforums.google.com/forum/#!topic/gmail/BYxYSdThpiw but I'm +having trouble finding a lot of other examples/details. + + +It's very likely we missed this since our error handling / logging was +only reporting the tagged response. We try and avoid seeking full +protocol traces/maximum debug logging from users because of privacy +concerns. Unfortunately, it does make it harder to learn about +exceptional situations like this that aren't particularly documented and +require state that is outside our control to reproduce. + + +Arnt, thank you very much for putting us on the right track, here! Do +you know if we should expect WEBALERT to always be untagged, and/or how +other servers (and what other servers) might use it? A quick skim of +open source clients (coremail2, android email) and servers (dovecot, +cyrus) isn't enlightening me. + + +I'd like to archive this information in a more publicly available +fashion for people. I think http://imapwiki.org/ is probably the best +resource I know of (other than actual standards :), but I'm open to +other suggestions! + +Thanks! +Andrew + diff --git a/demo/ermis-f/imap-protocol/cur/1600095003.22583.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095003.22583.mbox:2,S new file mode 100644 index 00000000..eec8ca57 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095003.22583.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From slusarz at curecanti.org Thu Jul 23 19:46:53 2015 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] Gmail LIST-EXTENDED bug +In-Reply-To: +References: <20150723130430.Horde.SA97i23HR6ui9hH7OsaY6OS@bigworm.curecanti.org> + + +Message-ID: <20150723204653.Horde.nTSGq462CvKEHJ8L-R7hEVB@bigworm.curecanti.org> + +Quoting Jamie Nicolson : + +> We can probably fix this in a week or so. Is it causing big problems for +> any clients to have LIST-EXTENDED enabled with this flaw? If it's causing +> serious pain we could turn off LIST-EXTENDED until it's fixed. + +Can't speak for anyone else, but this doesn't really affect us. We +fallback to RFC 3501 compliant LIST commands if a LIST-EXTENDED +command fails, so this is simply adding additional round-trips and/or +additional processing on the client side. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095003.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095003.22589.mbox:2,S new file mode 100644 index 00000000..a4c3dc6e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095003.22589.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From blong at google.com Fri May 22 17:17:52 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +In-Reply-To: <555FBFD2.1030800@ymail.com> +References: <555FBFD2.1030800@ymail.com> +Message-ID: + +At least for Gmail, we always re-order the given set into sequence order +(which is the same as uid order) before doing any operation. So, the +source UIDs in COPYUID are in the order in which they were copied. + +Since a COPY in Gmail is the equivalent of adding a label to a message, the +message may already have that label, so it may already be in the recipient +mailbox. We always return the destination UIDs in the order which matches +the source UID order, so in your example, source UID 1 is destination UID +2, and source UID 2 is destination UID 1. + +When APPEND'ing a duplicate message, we update the UID assigned to the +original to be the newest UID in the mailbox (and that's returned with +APPENDUID), since we found clients typically assumed that was the case and +could get confused. + +We could have done this with COPY, I guess, but we didn't see any client +issues in testing, so we left it this way since the performance is better. + +Brandon + +On Fri, May 22, 2015 at 4:46 PM, Bill Shannon +wrote: + +> I'm unclear on the requirements around the COPY command and the COPYUID +> response code. +> +> Is there any guarantee that the order of messages in the COPY command is +> the order they'll appear in the destination mailbox? Or are they +> allowed to appear in any arbitrary order in the destination mailbox? +> (After any existing messages, of course.) +> +> RFC 4315 says of the COPYUID response: +> +> The source UID set is in the order the message(s) were copied; the +> destination UID set corresponds to the source UID set and is in +> the same order. +> +> Exactly what order is that? Is it the order in which the messages were +> mentioned in the COPY command? Is it the order they actually appear in +> the destination mailbox (assuming it can be different)? Or is it in +> some other undefined order? +> +> With Gmail I'm getting +> +> A1 COPY 1:2 dest +> A1 OK [COPYUID 123456 1:2 2,1] +> +> and +> +> A1 COPY 2,1 dest +> A1 OK [COPYUID 123456 1:2 2,1] +> +> The order of the source UIDs is unrelated to the order the messages +> are mentioned in the COPY command and unrelated to the order they +> appear in the destination mailbox. +> +> If I don't know the UIDs of the source messages, is there any way to +> determine which message was copied to which UID in the destination +> mailbox? +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095003.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095003.22592.mbox:2,S new file mode 100644 index 00000000..bcb851af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095003.22592.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From Neil_Hunsperger at symantec.com Wed Apr 8 15:29:51 2015 +To: imap-protocol@u.washington.edu +From: Neil Hunsperger +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: +References: <55246A71.27553.323D151D@David.Harris.pmail.gen.nz> + +Message-ID: <14D026C7F297AD44AC82578DD818CDD038F0C37385@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + +> From: Imap-protocol [mailto:imap-protocol- +> bounces@mailman13.u.washington.edu] On Behalf Of Arnt Gulbrandsen +> +> David Harris writes: +> > 3: The following search is valid, according to the syntax in RFC3501: +> > +> > xx SEARCH OR OR +> > +> > and allows an OR expression to cover three terms instead of +> > just two. As such, it +> > seems quite useful, but it would certainly have mystified my +> > old search code (it was +> > rubbish, as I've pointed out), and I was wondering how +> > generally safe it would be to +> > use this type of expression? +> +> I've seen this kind of thing many times, e.g. OR OR FROM x TO x CC x, and I +> think it's fairly widely used. IIRC the Symantec IMAP proxy uses nested ORs +> en masse. + +Arnt, that's correct. + +To answer David's question we had to balance the tree very carefully to avoid false negatives on some Microsoft Exchange Server versions. + +-Neil + diff --git a/demo/ermis-f/imap-protocol/cur/1600095003.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095003.22595.mbox:2,S new file mode 100644 index 00000000..c2884e75 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095003.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Mar 7 09:34:39 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <8701.1425748438@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> <8701.1425748438@parc.com> +Message-ID: + +Bill Janssen writes: +> Mobility is more of a fact than a problem? What's the particular +> problem there? Multiple end-points? Intermittent connections? + +Phones tend to jump from WLAN to 3G or back every three minutes, which +makes any protocol based on long-lived TCP connections philosophically +difficult. Possible to implement, of course, but difficult to do in a way +that fits well with the design choices that led to it being based on +long-lived connections. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095003.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095003.22603.mbox:2,S new file mode 100644 index 00000000..a47127e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095003.22603.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Jan 30 14:52:10 2015 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Zimbra and FETCH response +Message-ID: <54CC0B1A.5040701@earthlink.net> + +Hi, + +This may be due to my incomplete understanding of the IMAP RFC. My +apologies if that's the case. + +The most recent release of Zimbra has changed to the way it closes its +response to FETCH. Previously when FETCHING various items the response +for each message would be terminated by ')' on a new line. That's what +I have used for years and it works for all other servers I have worked +with (Gmail, Dovecot, CommuniGate, Openwave, etc). But not Zimbra now. + + >> 1 FETCH 1:* (uid flags internaldate RFC822.SIZE +body.peek[header.fields (From Date Message-Id Subject)]) + +For example here is what Gmail sends: + +<< * 1 FETCH (UID 23910 RFC822.SIZE 17599 INTERNALDATE "16-Jan-2015 +19:28:27 +0000" FLAGS (NonJunk) BODY[HEADER.FIELDS (From Date Message-Id +Subject)] {211} +<< From: comp.mail.pine@googlegroups.com +<< Subject: Digest for comp.mail.pine@googlegroups.com - 2 updates +<< Message-ID: +<< Date: Fri, 16 Jan 2015 19:28:27 +0000 +<< +<< ) +<< * 2 FETCH (UID 23911 RFC822.SIZE 14881 INTERNALDATE "16-Jan-2015 +20:30:20 +0000" FLAGS (NonJunk) BODY[HEADER.FIELDS (From Date Message-Id +Subject)] {210} +<< From: comp.mail.imap@googlegroups.com +<< Subject: Digest for comp.mail.imap@googlegroups.com - 1 update +<< Message-ID: <485b397dd00762fb3c050ccad70b@google.com> +<< Date: Fri, 16 Jan 2015 20:30:20 +0000 +<< +<< ) + +In contrast Zimbra sends: + +<< * 1 FETCH (UID 10191 INTERNALDATE "03-Dec-2014 10:10:53 -0200" +RFC822.SIZE 9219 BODY[HEADER.FIELDS (FROM DATE MESSAGE-ID SUBJECT)] {238} +<< From: joe > +<< Subject: test message +<< Date: Wed, 3 Dec 2014 10:10:07 -0200 +<< Message-ID: <201412031009340.006629001417608574@pmta05> +01-30-2015.19:38:32 << +01-30-2015.19:38:32 << FLAGS (\Recent)) +01-30-2015.19:38:32 << 1 OK FETCH completed + +The last line of the response is FLAGS not ')'. I've had to add special +logic when Zimbra is involved to consider FLAGS as the end. + +One of my customers recently upgraded to Zimbra and immediately the +application had used for years stopped working. :-) And other Zimbra +users have reported the problem to me as well. + +What am I missing or doing wrong? + +Thanks, +Rick + +-- +Rick Sanders +rfs9999@earthlink.net +IMAP Tools http://www.athensfbc.com/imap-tools + diff --git a/demo/ermis-f/imap-protocol/cur/1600095003.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095003.22620.mbox:2,S new file mode 100644 index 00000000..25a8cb03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095003.22620.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From blong at google.com Wed Oct 8 13:37:30 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing + fields +In-Reply-To: +References: +Message-ID: + +We're seeing several reports of programs not expected extra FETCH +responses, which we rolled out on Monday. We're rolling back soon, since +older versions of a very popular client are having issues (though not to +our knowledge with this part of things). + +If you do: +UID FETCH 299 (X-GM-MSGID X-GM-THRID) + +You can get: +* 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) +* 50 FETCH (UID 299 FLAGS (\Seen)) + +if the user has just read the message. I believe that's correctly in spec +and that other IMAP servers would do the same, unless they suppress updates +on FETCH responses. + +Brandon + +On Wed, Oct 8, 2014 at 12:07 PM, Eben Freeman wrote: + +> Hi folks, +> Since Monday, we've been encountering issues in which we issue IMAP calls +> to Gmail such as +> +> UID FETCH 299 (X-GM-MSGID X-GM-THRID) +> +> and the response sporadically does not actually contain a value for +> X-GM-MSGID. Upon retrying, we generally get a complete response. +> +> Is this behavior expected, and something we should work around? Or is +> something awry? +> +> For completeness, other calls that sometimes give incomplete responses: +> UID FETCH 296 (BODY.PEEK[] INTERNALDATE FLAGS X-GM-THRID X-GM-MSGID +> X-GM-LABELS) +> (response missing BODY[]) +> +> UID FETCH 288 X-GM-LABELS +> (response missing X-GM-LABELS) +> +> Thanks, +> Eben +> +> PS. Apologies if this list is the wrong venue for this question -- if so, +> is there a better one? +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095003.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095003.22623.mbox:2,S new file mode 100644 index 00000000..fcab1d8b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095003.22623.mbox:2,S @@ -0,0 +1,109 @@ +MBOX-Line: From blong at google.com Tue Sep 2 14:09:47 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> +Message-ID: + +On Sat, Aug 30, 2014 at 2:02 PM, Arnt Gulbrandsen +wrote: + +> This makes me sad. +> +> On Saturday, August 30, 2014 2:43:16 AM CEST, Andrew Sutherland wrote: +> +>> For example, we already explicitly detect the Gmail specific "NO [ALERT]" +>> cases of things like the following: +>> - Application-specific password required +>> - Your account is not enabled for IMAP use. +>> - IMAP access is disabled for your domain. +>> +> +> As if 5530 didn't exist. + + +It didn't when we wrote the server. Even now that it does, and I believe +I've mentioned this before, the 5530 codes are inherently non-backward +compatible. We have no way of knowing if a client handles a given code, +and we originally went with ALERT so that people could actually see the +error. + +Now, it turns out most clients ignore ALERT and don't show it to the user, +regardless of the spec. We did go through and update most of the login +errors (and others) to correspond to the 5530 codes where there was a +match. We could also use separate tagged/untagged responses to give both +an ALERT and a specific code, but that's obviously something of a hack and +its not clear most clients handle that either. + + +> and want to better handle: +>> - Please log in via your web browser: http://support.google.com/ +>> mail/accounts/bin/answer.py?answer=78754 (Failure) +>> +> +> There is a response code for that, WEBALERT. Not standard, but at least +> it's better than trying to have a client parsing human-readable text. + + +Yes, if we have a URL to send, we issue a WEBALERT. There was some debate +internally about whether or not to re-use the 5530 syntax for our own +specific codes. + + +> I believe this new failure adds another specialized error code (and +>> regrettably, we screw up here, mea culpa.) +>> +>> Knowing what the string would be, whether it's localized, etc. would be +>> handy. We do these detections to try and provide appropriately localized +>> error messages that might provide better context to the user and +>> differentiate between persistent failures and transient failures (ex: NO +>> [UNAVAILABLE]), although I should be clear these are insufficiently +>> researched hacks. +>> +> +> The point of 5530 and that registry was that clients should not need to do +> such things. IMO Google screws up by not defininig response codes, not you. + + +Extending the available codes via RFC seems heavy weight, especially if its +for things that are more specific to our server. Maybe a list of "generic +but more specific" ones could be made, but would we really have one for +"Your domain administrator has disabled IMAP for your domain from this IP"? + +More examples that we send at this point (most of these also have further +information, this is a shortened version): +- [AUTHENTICATIONFAILED] Invalid credentials +- [ALERT] Your account is not ready for IMAP use. (this was historical and +unlikely to be sent to anyone anymore) +- [ALERT] Your account is not enabled for IMAP use. +- [ALERT] IMAP access is disabled for your domain. +- [ALERT] IMAP access to your domain is not allowed from this IP +- [ALERT] Account exceeded command or bandwidth limits. +- [ALERT] Too many simultaneous connections. +- [ALERT] Application-specific password required: +- [ALERT] Please log in via your web browser: +- [ALERT] Web login required: + +As for the WEBALERT case, its expected that the correct thing to do is to +send the user to the url specified, but it has to be the user, they're +likely to have to authenticate the session. + +Half of the above would be UNAVAILABLE or maybe CONTACTADMIN, some would be +LIMIT/OVERQUOTA... but its unclear how much "clearer" these would be if +they're translated to the user's language via a "generic" category. + +We have debated having a per-message unique identifier, also useful when +people contact us about which error they're seeing, but haven't exposed it. + I'd say we could translate these with our upcoming support for UTF8, but +these are almost assuredly seen prior to any ENABLE that would help. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095004.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095004.22589.mbox:2,S new file mode 100644 index 00000000..e706154b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095004.22589.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From bill.shannon at ymail.com Fri May 22 18:00:49 2015 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +In-Reply-To: +References: <555FBFD2.1030800@ymail.com> + +Message-ID: <555FD141.1060300@ymail.com> + +I *so* wish there were compatibility tests for servers, rather than "it didn't +break any clients so it must be good enough". :-) + +Ok, how about this. If I sort the original message numbers, and sort the +returned source and destination UIDs, the result will be one-to-one, right? The +first message number will correspond to the first source UID, which will +correspond to the first destination UID, right? And all three sets will have +exactly the same cardinality? + +Brandon Long wrote on 05/22/2015 05:17 PM: +> At least for Gmail, we always re-order the given set into sequence order +> (which is the same as uid order) before doing any operation. So, the source +> UIDs in COPYUID are in the order in which they were copied. +> +> Since a COPY in Gmail is the equivalent of adding a label to a message, the +> message may already have that label, so it may already be in the recipient +> mailbox. We always return the destination UIDs in the order which matches the +> source UID order, so in your example, source UID 1 is destination UID 2, and +> source UID 2 is destination UID 1. +> +> When APPEND'ing a duplicate message, we update the UID assigned to the +> original to be the newest UID in the mailbox (and that's returned with +> APPENDUID), since we found clients typically assumed that was the case and +> could get confused. +> +> We could have done this with COPY, I guess, but we didn't see any client +> issues in testing, so we left it this way since the performance is better. +> +> Brandon +> +> On Fri, May 22, 2015 at 4:46 PM, Bill Shannon > wrote: +> +> I'm unclear on the requirements around the COPY command and the COPYUID +> response code. +> +> Is there any guarantee that the order of messages in the COPY command is +> the order they'll appear in the destination mailbox? Or are they +> allowed to appear in any arbitrary order in the destination mailbox? +> (After any existing messages, of course.) +> +> RFC 4315 says of the COPYUID response: +> +> The source UID set is in the order the message(s) were copied; the +> destination UID set corresponds to the source UID set and is in +> the same order. +> +> Exactly what order is that? Is it the order in which the messages were +> mentioned in the COPY command? Is it the order they actually appear in +> the destination mailbox (assuming it can be different)? Or is it in +> some other undefined order? +> +> With Gmail I'm getting +> +> A1 COPY 1:2 dest +> A1 OK [COPYUID 123456 1:2 2,1] +> +> and +> +> A1 COPY 2,1 dest +> A1 OK [COPYUID 123456 1:2 2,1] +> +> The order of the source UIDs is unrelated to the order the messages +> are mentioned in the COPY command and unrelated to the order they +> appear in the destination mailbox. +> +> If I don't know the UIDs of the source messages, is there any way to +> determine which message was copied to which UID in the destination +> mailbox? +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095004.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095004.22592.mbox:2,S new file mode 100644 index 00000000..29c9b071 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095004.22592.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From imap at maclean.com Thu Apr 9 05:59:18 2015 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +Message-ID: + +If I understand them correctly, using such an indexer means providing +a word-based search. Now, as I noted in another message, that might +be a very good choice these days since that is what a lot of people +are accustomed to. But IMAP promises a string-based search for which +you would want to use hashes based on n-grams instead. + +At 02:31 PM 4/8/2015, Hoa V. Dinh wrote: +>You probably want to use a full text indexer such as Lucene / +>Elastic Search in this case. +>It will prevent the server from iterating on each email. +> +>-- +>Hoa V. Dinh +> +>On Wednesday, April 8, 2015 at 5:28 AM, Bron Gondwana wrote: +>>An important thing to be aware of - if you have iPhone users. iOS +>>since version 7 +>>has done a BODY search on every folder if you do a search. That's +>>prohibitively +>>expensive if you're scanning emails every time. +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095004.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095004.22595.mbox:2,S new file mode 100644 index 00000000..e7b8cbc0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095004.22595.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From snowjn at aol.com Sat Mar 7 09:36:36 2015 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FAEB94.4070508@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> +Message-ID: <54FB3724.2070202@aol.com> + +If he were around, this question would have started a fun argument. +I miss that guy. + +snow. + + +On 3/7/2015 7:14 AM, Ladar Levison wrote: +> I thought this might be a good list to ask a simple, but admittedly +> subjective question: If Mark Crispin was creating IMAP from scratch, in +> the world of today, would it still be a line based protocol like it was +> with RFC3501, or would he have gone with something more stateless, like +> a JSON-RPC paradigm, like JMAP? +> +> For quick reference: +> +> https://tools.ietf.org/html/rfc3501 +> +> Or JMAP: +> +> http://jmap.io/spec.html +> +> Or my own bastardized protocol used for webmail to server access, which +> I created a few years back: +> +> https://github.com/lavabit/magma.classic/raw/master/docs/magma.web.api.pdf +> +> L~ +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095004.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095004.22603.mbox:2,S new file mode 100644 index 00000000..f889f8ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095004.22603.mbox:2,S @@ -0,0 +1,99 @@ +MBOX-Line: From blong at google.com Fri Jan 30 15:23:17 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Zimbra and FETCH response +In-Reply-To: <54CC0B1A.5040701@earthlink.net> +References: <54CC0B1A.5040701@earthlink.net> +Message-ID: + +There's nothing wrong with the order in which Zimbra is returning things. + +That said, Gmail originally returned fetch attributes in the order they +were requested, but we ran into issues with some clients, so now we return +them in reverse sorted alphabetical order. + +ahh, here's the bug we were working around: +https://bugzilla.mozilla.org/show_bug.cgi?id=272988 +we needed to return RFC822.SIZE before BODY or Thunderbird had a cow. +Anyways, sorting also makes testing more consistent. + +Anyhoo, you should be matching the parenthesis. IMAP responses, especially +FETCH ones, kind of require you to actually parse the results and not use +something simplistic. + +Brandon + +On Fri, Jan 30, 2015 at 2:52 PM, Rick Sanders wrote: + +> Hi, +> +> This may be due to my incomplete understanding of the IMAP RFC. My +> apologies if that's the case. +> +> The most recent release of Zimbra has changed to the way it closes its +> response to FETCH. Previously when FETCHING various items the response for +> each message would be terminated by ')' on a new line. That's what I have +> used for years and it works for all other servers I have worked with +> (Gmail, Dovecot, CommuniGate, Openwave, etc). But not Zimbra now. +> +> >> 1 FETCH 1:* (uid flags internaldate RFC822.SIZE body.peek[header.fields +> (From Date Message-Id Subject)]) +> +> For example here is what Gmail sends: +> +> << * 1 FETCH (UID 23910 RFC822.SIZE 17599 INTERNALDATE "16-Jan-2015 +> 19:28:27 +0000" FLAGS (NonJunk) BODY[HEADER.FIELDS (From Date Message-Id +> Subject)] {211} +> << From: comp.mail.pine@googlegroups.com +> << Subject: Digest for comp.mail.pine@googlegroups.com - 2 updates +> << Message-ID: +> << Date: Fri, 16 Jan 2015 19:28:27 +0000 +> << +> << ) +> << * 2 FETCH (UID 23911 RFC822.SIZE 14881 INTERNALDATE "16-Jan-2015 +> 20:30:20 +0000" FLAGS (NonJunk) BODY[HEADER.FIELDS (From Date Message-Id +> Subject)] {210} +> << From: comp.mail.imap@googlegroups.com +> << Subject: Digest for comp.mail.imap@googlegroups.com - 1 update +> << Message-ID: <485b397dd00762fb3c050ccad70b@google.com> +> << Date: Fri, 16 Jan 2015 20:30:20 +0000 +> << +> << ) +> +> In contrast Zimbra sends: +> +> << * 1 FETCH (UID 10191 INTERNALDATE "03-Dec-2014 10:10:53 -0200" +> RFC822.SIZE 9219 BODY[HEADER.FIELDS (FROM DATE MESSAGE-ID SUBJECT)] {238} +> << From: joe > +> << Subject: test message +> << Date: Wed, 3 Dec 2014 10:10:07 -0200 +> << Message-ID: <201412031009340.006629001417608574@pmta05> +> 01-30-2015.19:38:32 << +> 01-30-2015.19:38:32 << FLAGS (\Recent)) +> 01-30-2015.19:38:32 << 1 OK FETCH completed +> +> The last line of the response is FLAGS not ')'. I've had to add special +> logic when Zimbra is involved to consider FLAGS as the end. +> +> One of my customers recently upgraded to Zimbra and immediately the +> application had used for years stopped working. :-) And other Zimbra +> users have reported the problem to me as well. +> +> What am I missing or doing wrong? +> +> Thanks, +> Rick +> +> -- +> Rick Sanders +> rfs9999@earthlink.net +> IMAP Tools http://www.athensfbc.com/imap-tools +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095004.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095004.22620.mbox:2,S new file mode 100644 index 00000000..bf5ab5b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095004.22620.mbox:2,S @@ -0,0 +1,148 @@ +MBOX-Line: From brong at fastmail.fm Wed Oct 8 13:57:25 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing + fields +In-Reply-To: +References: + +Message-ID: <1412801845.1837100.176764181.7CE1D3B0@webmail.messagingengine.com> + +On Thu, Oct 9, 2014, at 07:37 AM, Brandon Long wrote: + +We're seeing several reports of programs not expected extra FETCH responses, which we rolled out on Monday. We're rolling back soon, since older versions of a very popular client are having issues (though not to our knowledge with this part of things). + + + +Yeah, it's annoying that so many clients don't handle legal IMAP responses. + + + +If you do: +UID FETCH 299 (X-GM-MSGID X-GM-THRID) + +You can get: +* 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) +* 50 FETCH (UID 299 FLAGS (\Seen)) + + + +IN _theory_ this should be: + + + +* 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) + +* 50 FETCH (FLAGS (\Seen)) + + + +I wanted to always include the UID, but apparently there are clients that have trouble with THAT too, which is why our index_printflags function in Cyrus (called for unsolicited updates) looks like this: + + + + index_fetchflags(state, msgno); + + /* [1]http://www.rfc-editor.org/errata_search.php?rfc=5162 + + * Errata ID: 1807 - MUST send UID and MODSEQ to all + + * untagged FETCH unsolicited responses */ + + if (usinguid || (client_capa & CAPA_QRESYNC)) + + prot_printf(state->out, " UID %u", im->uid); + + if (printmodseq || (client_capa & CAPA_CONDSTORE)) + + prot_printf(state->out, " MODSEQ (" MODSEQ_FMT ")", im->modseq); + + prot_printf(state->out, ")\r\n"); + + + +if the user has just read the message. I believe that's correctly in spec and that other IMAP servers would do the same, unless they suppress updates on FETCH responses. + + + +Yes, you're definitely allowed to either do that OR roll the FETCH update into the same response line. We roll them together in Cyrus. The magic is here: + + + + /* display flags if asked _OR_ if they've changed */ + + if (fetchitems & FETCH_FLAGS || im->told_modseq < record.modseq) { + + index_fetchflags(state, msgno); + + sepchar = ' '; + + } + + + +And of course in index_fetchflags itself we keep track of the modseq we told. + + + +[...] + + if (sepchar == '(') (void)prot_putc('(', state->out); + + (void)prot_putc(')', state->out); + + im->told_modseq = im->modseq; + +} + + + +The unsolicited updates loop itself does likewise: + + + + /* print any changed message flags */ + + for (msgno = 1; msgno <= state->exists; msgno++) { + + im = &state->map[msgno-1]; + + + + /* report if it's changed since last told */ + + if (im->modseq > im->told_modseq) + + index_printflags(state, msgno, printuid, printmodseq); + + } + + + +So I would recommend for your testing that you try not sending the UID + +with unsolicited flags responses (yeah, I know) if the client hasn't enabled + +QRESYNC. Of course, if you can merge the responses, even better. + + + +Cheers, + + + +Bron. + + + +-- +Bron Gondwana +brong@fastmail.fm + +References + +1. http://www.rfc-editor.org/errata_search.php?rfc=5162 +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095004.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095004.22623.mbox:2,S new file mode 100644 index 00000000..0b97a4f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095004.22623.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From blong at google.com Tue Sep 2 14:21:32 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <5400A146.4020602@mozilla.com> +References: <5400A146.4020602@mozilla.com> +Message-ID: + +On Fri, Aug 29, 2014 at 8:50 AM, Andrew Sutherland +wrote: + +> +> I applaud both the effort to protect users and the use of whatever +> heuristics these are to avoid needlessly inflicting pain on users. However, +> it does leave me confused what users will be impacted. Is it just GMail +> users over a certain account age who haven't leveraged PLAIN logins in some +> number of months? Is it dependent on the suspicious login heuristics? I +> do know that some testers have run into this problem recently, so it's not +> imagined. +> + +So, you have figured it out. The state is actually tri-state, 'default', +'enabled', 'blocked'. Any account which had used PLAIN logins in the last +N days prior to the launch was set to 'enabled'. Any new account starts in +'default', which will moved to 'enabled' if a successful login occurs in +the first month of the account. All other accounts were set to disabled. + +We may also automatically disable it for any account which stops using +PLAIN logins for several months. + +We didn't add a new error message since we just send the user to the +support page which now includes the "allow less secure apps" information. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095004.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095004.22626.mbox:2,S new file mode 100644 index 00000000..454621bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095004.22626.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From mg at mit.edu Mon Aug 25 23:09:12 2014 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] [ADVERTISEMENT] open position for IMAP sync + developer at Inbox +Message-ID: + +** NOTE: This is a IMAP developer job announcement. ** + +The Inbox team is looking for exceptional engineers to work on the IMAP +sync components that power the Inbox API. We are a team of engineers that +previously worked at Dropbox, Nest, Ksplice, Google, and elsewhere, and +we're building the next-generation platform for email apps. + +https://www.inboxapp.com + + +This position is for an engineer to join our backend systems team and work +on the core Inbox sync engine, which is an essential part of the Inbox API. +Our sync engine handles downloading mail, performing queued actions, +resolving conflicts, and maintaining compatibility across all various IMAP +providers and protocol quirks. Nearly all of this code is free open source +software on GitHub: https://github.com/inboxapp/inbox + + +Our ideal candidate has + +- Substantial experience with the IMAP protocol +- A desire to bring great software design and implementation to a +mainstream audience +- Strong Python coding skills with a deep understanding of language +fundamentals +- Experience with operating systems, performance instrumentation, and +service-oriented architectures +- Familiarity with SQLalchemy, MySQL, Gevent, or web services is a plus, +but not required + + +When applying, please include + +- Brief statement about yourself and how you see a potential mutual fit +with the team +- Resume in Text or PDF form. + + +You can do this job from anywhere in the world. But if you would like to +move to San Francisco, we will cover relocation and help you get settled. + + +Please forward to anyone who may be interested. Thanks! + + +Michael Grinich + +cofounder / CEO of Inbox +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22589.mbox:2,S new file mode 100644 index 00000000..e81e6873 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22589.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat May 23 00:17:21 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +References: <555FBFD2.1030800@ymail.com> + + <555FD141.1060300@ymail.com> +Message-ID: + +Yes, yes and yes. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22592.mbox:2,S new file mode 100644 index 00000000..254ad914 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22592.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu Apr 9 08:18:21 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <201504091259.t39CxfHJ007474@mxout24.cac.washington.edu> +References: <201504091259.t39CxfHJ007474@mxout24.cac.washington.edu> +Message-ID: <5526983D.4000503@isode.com> + +On 09/04/2015 13:59, Pete Maclean wrote: +> If I understand them correctly, using such an indexer means providing +> a word-based search. Now, as I noted in another message, that might +> be a very good choice these days since that is what a lot of people +> are accustomed to. But IMAP promises a string-based search for which +> you would want to use hashes based on n-grams instead. +I was under impression that Mark Crispin thought that being more +flexible when searching (i.e. using word-based search) was quite +acceptable according to RFC 3501. + +> At 02:31 PM 4/8/2015, Hoa V. Dinh wrote: +>> You probably want to use a full text indexer such as Lucene / Elastic +>> Search in this case. +>> It will prevent the server from iterating on each email. +>> +>> -- +>> Hoa V. Dinh +>> +>> On Wednesday, April 8, 2015 at 5:28 AM, Bron Gondwana wrote: +>>> An important thing to be aware of - if you have iPhone users. iOS +>>> since version 7 +>>> has done a BODY search on every folder if you do a search. That's +>>> prohibitively +>>> expensive if you're scanning emails every time. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22595.mbox:2,S new file mode 100644 index 00000000..e2359c98 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22595.mbox:2,S @@ -0,0 +1,111 @@ +MBOX-Line: From ladar at lavabitllc.com Sat Mar 7 10:06:23 2015 +To: imap-protocol@u.washington.edu +From: Ladar Levison +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <8701.1425748438@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> <8701.1425748438@parc.com> +Message-ID: <54FB3E1F.3020909@lavabitllc.com> + + + +On 3/7/2015 11:13 AM, Bill Janssen wrote: + +> Mobility is more of a fact than a problem? What's the particular +> problem there? Multiple end-points? Intermittent connections? + +In my case its accessing encrypted data in general, and encrypted emails +specifically. I'm trying to decide if I should extend IMAP, or switch to +JMAP and focus on adding the new functionality to that model. Since my +eventual goal is to have others use this protocol, I'm concerned that +implementing a stateless protocol is more difficult on the server side +because it requires separating the session/mail/account logic from the +connection/requests. (I've actually done this already, with magma +protocol I referenced in the OP, so I know how painful it was.) I'm also +worried that thick client developers might not like this protocol +paradigm either, because they've never had to implement client logic +which uses it. Of course web developers would love it, but only half the +planet uses webmail. +> +>> They are simply schemes for stateless client/server interactions +>> (stateless because they have to go over HTTP) +> There's no intrinsic reason things that have to go over HTTP have to be +> stateless; it's just a tradition that comes from the now somewhat +> archaic idea in HTTP 1.0 that you close the session identifier (the TCP +> connection) after each request/response pair. Sessions were almost +> immediately re-defined via cookies, and many protocols over HTTP +> are now stateful, using those cookies. + +Very true. The real difference is that requests for a single session can +arrive on different connections, at the same time. It also means storing +an identifier of using it as an auth token, that could be a cookie, or +simply a unique string that is returned by the auth request and +subsequently provided in the JSON object for each request. + +>> and which happen to use JSON as the serialization scheme. They could +>> just as easily have used SOAP/XML. +> Yes. However, SOAP, as it was originally designed by Microsoft, is a +> pretty (IMO) bletcherous (i.e., tasteless) and bloated attempt to funnel +> DCOM calls through firewalls in a way that wouldn't be immediately +> interdicted by anti-virus software. So, a LISP person wouldn't be able +> to bring himself to use it (speaking as a former Lisp and RPC person). +> +> JSON over HTTP is a somewhat (but not much) cleaner re-interpretation +> of the same idea. + +If its any consolation, I'm not considering SOAP. My original goal was +to extend IMAP, but in a way that would translate to a JSON protocol in +the future. That's proved to be beyond my abilities, because of the +different way the two generally work. So I'll have to pick, and its +proven to be a difficult decision. Hence the OP, which sought input from +others... +> +>> I'm wondering if the future of mail protocols is to continue improving +>> the line based protocols we have, or will they be replaced by something +>> that is friendly to the web? Were seeing a number of vendor specific +>> mail protocols already, and I'm wondering if convergence is in our +>> future? In other words, if someone were to start working on a new +>> protocol today, should they focus on the old line based scheme, or +>> switch to the newer stateless, JSON paradigm common to the web? +> JSON is just a Javascript convenience. It's not a particularly +> efficient way of sending data over the network. I think your question +> about line-based protocols is a good one, but the IETF still leans +> towards observable-text based protocols. So, if you wanted to design +> an email protocol that would be blessed by the IETF, using a text-based +> "line" protocol isn't a bad idea. + +People like what they already know. Myself included. Doesn't mean its +the better choice. A number of non-IETF blessed messaging protocols have +already switched to JSON. (SCIMP comes to mind, which sends JSON +messages, or their binary equivalent, using XMPP as the transport.) See +page 22 or so of this PDF: + +https://silentcircle.com/sites/default/themes/silentcircle/assets/downloads/SCIMP_paper.pdf + + +> +> Personally, I'd do everything in binary, but that's just me obsessing +> about packet sizes. I'm thinking about designing a secure email +> protocol built on CCNx (http://www.ccnx.org/), which provides digital +> signatures, encryption, and router caching. There's no concept of +> a "connection" at all, or a "mail server"; just messages. That's +> the future. + +That sounds like JSON-RPC, only you've your encoding the +requests/responses in binary instead of JSON. As I see things, binary, +or armored is independent of the paradigm. Either would allow +requests/responses to be sent in binary, or armored using a base64. + + + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 836 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22603.mbox:2,S new file mode 100644 index 00000000..87a2800e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22603.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From Pidgeot18 at verizon.net Fri Jan 30 15:25:54 2015 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Zimbra and FETCH response +In-Reply-To: <54CC0B1A.5040701@earthlink.net> +References: <54CC0B1A.5040701@earthlink.net> +Message-ID: <54CC1302.80003@verizon.net> + +On 1/30/2015 4:52 PM, Rick Sanders wrote: +> What am I missing or doing wrong? + +Your IMAP parser is buggy. The result of a FLAGS is, in the ABNF +terminology: + +msg-att = "(" (msg-att-dynamic / msg-att-static) + *(SP (msg-att-dynamic / msg-att-static)) ")" + + +which is to say, that it is a list of terms in parentheses where each +term is separated by *exactly* one ASCII space (=0x20) character. Where +you're likely screwing up is you're misreading the literal string for +the BODY data. This is a number of octets surrounded by curly braces, +followed by a single CRLF pair, and then the exact number of octets. If +you're searching for a line that consists of particular data... you're +doing something REALLY wrong. Here, let me screw up that match for you +right now: + ) + +(IMAP isn't like POP, SMTP, or NNTP--multiline data is counted in terms +of exact octets, not until a CRLF.CRLF is found). + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22620.mbox:2,S new file mode 100644 index 00000000..67fd0ae2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22620.mbox:2,S @@ -0,0 +1,123 @@ +MBOX-Line: From blong at google.com Wed Oct 8 14:07:18 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing + fields +In-Reply-To: <1412801845.1837100.176764181.7CE1D3B0@webmail.messagingengine.com> +References: + + <1412801845.1837100.176764181.7CE1D3B0@webmail.messagingengine.com> +Message-ID: + +Do you know which client has the problem with including the UID? + +It sounds like clients like the one that prompted this question may skip +results that don't have a UID in them, and of course you won't get these +updates on a regular FETCH (well, I guess you could, but our impl doesn't +do that since we rolled the flag updates into the sync point updates). + +merging the fetch with the flags updates would be complicated without some +much more heavy-weight changes. + +Brandon + +On Wed, Oct 8, 2014 at 1:57 PM, Bron Gondwana wrote: + +> On Thu, Oct 9, 2014, at 07:37 AM, Brandon Long wrote: +> +> We're seeing several reports of programs not expected extra FETCH +> responses, which we rolled out on Monday. We're rolling back soon, since +> older versions of a very popular client are having issues (though not to +> our knowledge with this part of things). +> +> +> Yeah, it's annoying that so many clients don't handle legal IMAP responses. +> +> +> If you do: +> UID FETCH 299 (X-GM-MSGID X-GM-THRID) +> +> You can get: +> * 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) +> * 50 FETCH (UID 299 FLAGS (\Seen)) +> +> +> IN _theory_ this should be: +> +> * 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) +> * 50 FETCH (FLAGS (\Seen)) +> +> I wanted to always include the UID, but apparently there are clients that +> have trouble with THAT too, which is why our index_printflags function in +> Cyrus (called for unsolicited updates) looks like this: +> +> index_fetchflags(state, msgno); +> /* http://www.rfc-editor.org/errata_search.php?rfc=5162 +> * Errata ID: 1807 - MUST send UID and MODSEQ to all +> * untagged FETCH unsolicited responses */ +> if (usinguid || (client_capa & CAPA_QRESYNC)) +> prot_printf(state->out, " UID %u", im->uid); +> if (printmodseq || (client_capa & CAPA_CONDSTORE)) +> prot_printf(state->out, " MODSEQ (" MODSEQ_FMT ")", im->modseq); +> prot_printf(state->out, ")\r\n"); +> +> +> if the user has just read the message. I believe that's correctly in spec +> and that other IMAP servers would do the same, unless they suppress updates +> on FETCH responses. +> +> +> Yes, you're definitely allowed to either do that OR roll the FETCH update +> into the same response line. We roll them together in Cyrus. The magic is +> here: +> +> /* display flags if asked _OR_ if they've changed */ +> if (fetchitems & FETCH_FLAGS || im->told_modseq < record.modseq) { +> index_fetchflags(state, msgno); +> sepchar = ' '; +> } +> +> And of course in index_fetchflags itself we keep track of the modseq we +> told. +> +> [...] +> if (sepchar == '(') (void)prot_putc('(', state->out); +> (void)prot_putc(')', state->out); +> im->told_modseq = im->modseq; +> } +> +> The unsolicited updates loop itself does likewise: +> +> /* print any changed message flags */ +> for (msgno = 1; msgno <= state->exists; msgno++) { +> im = &state->map[msgno-1]; +> +> /* report if it's changed since last told */ +> if (im->modseq > im->told_modseq) +> index_printflags(state, msgno, printuid, printmodseq); +> } +> +> So I would recommend for your testing that you try not sending the UID +> with unsolicited flags responses (yeah, I know) if the client hasn't +> enabled +> QRESYNC. Of course, if you can merge the responses, even better. +> +> Cheers, +> +> Bron. +> +> -- +> Bron Gondwana +> brong@fastmail.fm +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22623.mbox:2,S new file mode 100644 index 00000000..81a04e1a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22623.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 3 01:55:43 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <54062661.6020000@mozilla.com> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + <54062661.6020000@mozilla.com> +Message-ID: + +On Tuesday, September 2, 2014 10:19:45 PM CEST, Andrew Sutherland wrote: +> It appears Gmail may actually be doing this, which is great news! + +WEBALERT is something gmail, and only gmail, does. I don't know what it +means, but it does mean something other than the completely general ALERT. +IMO WEBALERT is more usable from a client's point of view. + +What an unpleasant situation. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22626.mbox:2,S new file mode 100644 index 00000000..671abf06 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22626.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From asuth at mozilla.com Fri Aug 29 08:50:30 2014 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less secure + apps" setting for non XOAuth2 access +Message-ID: <5400A146.4020602@mozilla.com> + +The blog post +http://googleonlinesecurity.blogspot.de/2014/04/new-security-measures-will-affect-older.html +seems to have come to fruition as the "Access for less secure apps" +setting as documented at +https://support.google.com/accounts/answer/6010255?hl=en (but not +particularly hyperlinked to/from many of the other GMail docs.) It +sounds like this started happening around July 15th, noting that +2-factor accounts are not affected. + +For the Firefox OS Gaia Email app we're trying to figure out exactly +what the impact of this is and who is affected. It does not seem +straightforward because it seems like there are a number of heuristics +in play. Specifically, I have observed: + +- My existing non-2-factor account seems to have been grandfathered so +that the setting is enabled. + +- I just created a brand new non-2-factor gmail account. The Gmail +Settings UI indicated IMAP was disabled and the "Access for less secure +apps" account security setting was also disabled. I then added the +brand-new account in the app and things just magically worked. IMAP got +enabled in the gmail UI and "access for less secure apps" also got enabled. + +I applaud both the effort to protect users and the use of whatever +heuristics these are to avoid needlessly inflicting pain on users. +However, it does leave me confused what users will be impacted. Is it +just GMail users over a certain account age who haven't leveraged PLAIN +logins in some number of months? Is it dependent on the suspicious +login heuristics? I do know that some testers have run into this +problem recently, so it's not imagined. + +So my questions are these: + +1) Is it possible to get a better understanding of what's going on with +when the setting will be enforced? + +2) Is there some other venue for staying up-to-date with information +like this for Gmail? That blog post was somewhat nebulous, didn't get +any coverage on a blog I was subscribed to at the time where I would +have expected a mention (http://gmailblog.blogspot.com/), and I don't +believe it or its contents were directly posted to any of these IMAP +standardsy lists. The July 15th thing seemed to be something people +just inferred after it happened. + +3) Is there some way I can help update documentation/hyperlinks on pages +like https://developers.google.com/gmail/xoauth2_protocol (to link to +the less secure apps docs)? On +https://support.google.com/accounts/answer/6010255?hl=en there is an +affordance to say the article is not helpful and provide feedback, but I +don't see anything on the developers site. + + +I do want to make it clear that I really appreciate Google/Brandon +Long's active participation on this list and I understand how busy +everyone involved likely is. I'm also on board with the idea that, like +web browsers, email apps/user agents should keep up with the state of +the art standards for the benefit/safety/privacy of their users and the +health of the net. It's just that having more of an explicit heads up +would help us make sure that we prioritize our engineering resources +appropriately ahead of time rather than having to do things reactively. + +Thanks! +Andrew + +PS: The Gaia email app has also been deficient in notifying servers via +"ID", if that's the venue I've been missing. Although if so, I'd still +argue this list or its friends would also be an appropriate place to post. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095005.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095005.22629.mbox:2,S new file mode 100644 index 00000000..3a9ff5ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095005.22629.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Jul 1 00:38:35 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] UTF8=ACCEPT and modified utf-7 mailbox names +In-Reply-To: +References: + <50b7b4b0-ec42-4447-a0f1-b9241f1d1984@gulbrandsen.priv.no> + +Message-ID: <8a298643-84c7-4b94-ac2c-7b8e778ab7b5@gulbrandsen.priv.no> + +On Monday, June 30, 2014 11:19:54 PM CEST, Jamie Nicolson (???) wrote: +> Good, definitely makes more sense that way. Why enable the +> extension if you're not willing to use UTF-8?. + +What I like most about 6532/6855 is that 99% of the odd quoting goes away +and we get one single form of string encoding. There's a very small bit +left (localparts conaining backslases, spaces etc), but even it is +irrelevant in practice due to poor support. Lovely. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22589.mbox:2,S new file mode 100644 index 00000000..be6539f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22589.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From alexey.melnikov at isode.com Sat May 23 03:53:36 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +In-Reply-To: <555FD141.1060300@ymail.com> +References: <555FBFD2.1030800@ymail.com> + + <555FD141.1060300@ymail.com> +Message-ID: + +Hi Bill, + +> On 23 May 2015, at 02:00, Bill Shannon wrote: +> +> I so wish there were compatibility tests for servers, rather than "it didn't break any clients so it must be good enough". :-) +> +> Ok, how about this. If I sort the original message numbers, and sort the returned source and destination UIDs, the result will be one-to-one, right? The first message number will correspond to the first source UID, which will correspond to the first destination UID, right? And all three sets will have exactly the same cardinality? + +Yes. I don't think it really matters in which order messages are copied, as long as the matching UIDs are returned correctly. + +> +> Brandon Long wrote on 05/22/2015 05:17 PM: +>> At least for Gmail, we always re-order the given set into sequence order (which is the same as uid order) before doing any operation. So, the source UIDs in COPYUID are in the order in which they were copied. +>> +>> Since a COPY in Gmail is the equivalent of adding a label to a message, the message may already have that label, so it may already be in the recipient mailbox. We always return the destination UIDs in the order which matches the source UID order, so in your example, source UID 1 is destination UID 2, and source UID 2 is destination UID 1. +>> +>> When APPEND'ing a duplicate message, we update the UID assigned to the original to be the newest UID in the mailbox (and that's returned with APPENDUID), since we found clients typically assumed that was the case and could get confused. +>> +>> We could have done this with COPY, I guess, but we didn't see any client issues in testing, so we left it this way since the performance is better. +>> +>> Brandon +>> +>>> On Fri, May 22, 2015 at 4:46 PM, Bill Shannon wrote: +>>> I'm unclear on the requirements around the COPY command and the COPYUID +>>> response code. +>>> +>>> Is there any guarantee that the order of messages in the COPY command is +>>> the order they'll appear in the destination mailbox? Or are they +>>> allowed to appear in any arbitrary order in the destination mailbox? +>>> (After any existing messages, of course.) +>>> +>>> RFC 4315 says of the COPYUID response: +>>> +>>> The source UID set is in the order the message(s) were copied; the +>>> destination UID set corresponds to the source UID set and is in +>>> the same order. +>>> +>>> Exactly what order is that? Is it the order in which the messages were +>>> mentioned in the COPY command? Is it the order they actually appear in +>>> the destination mailbox (assuming it can be different)? Or is it in +>>> some other undefined order? +>>> +>>> With Gmail I'm getting +>>> +>>> A1 COPY 1:2 dest +>>> A1 OK [COPYUID 123456 1:2 2,1] +>>> +>>> and +>>> +>>> A1 COPY 2,1 dest +>>> A1 OK [COPYUID 123456 1:2 2,1] +>>> +>>> The order of the source UIDs is unrelated to the order the messages +>>> are mentioned in the COPY command and unrelated to the order they +>>> appear in the destination mailbox. +>>> +>>> If I don't know the UIDs of the source messages, is there any way to +>>> determine which message was copied to which UID in the destination +>>> mailbox? +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22592.mbox:2,S new file mode 100644 index 00000000..d5a4ff61 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22592.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From imap at maclean.com Thu Apr 9 08:29:08 2015 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <5526983D.4000503@isode.com> +References: <201504091259.t39CxfHJ007474@mxout24.cac.washington.edu> + <5526983D.4000503@isode.com> +Message-ID: + +Hmm, maybe I got it wrong. I don't recall what originally led me to +think that SEARCH was supposed to be strictly string-based but I do +observe that RFC 3501 states: + + In all search keys that use strings, a message matches the key if + the string is a substring of the field. The matching is + case-insensitive. + +At 11:18 AM 4/9/2015, Alexey Melnikov wrote: +>On 09/04/2015 13:59, Pete Maclean wrote: +>>If I understand them correctly, using such an indexer means +>>providing a word-based search. Now, as I noted in another message, +>>that might be a very good choice these days since that is what a +>>lot of people are accustomed to. But IMAP promises a string-based +>>search for which you would want to use hashes based on n-grams instead. +>I was under impression that Mark Crispin thought that being more +>flexible when searching (i.e. using word-based search) was quite +>acceptable according to RFC 3501. +> +>>At 02:31 PM 4/8/2015, Hoa V. Dinh wrote: +>>>You probably want to use a full text indexer such as Lucene / +>>>Elastic Search in this case. +>>>It will prevent the server from iterating on each email. +>>> +>>>-- +>>>Hoa V. Dinh +>>> +>>>On Wednesday, April 8, 2015 at 5:28 AM, Bron Gondwana wrote: +>>>>An important thing to be aware of - if you have iPhone users. iOS +>>>>since version 7 +>>>>has done a BODY search on every folder if you do a search. That's +>>>>prohibitively +>>>>expensive if you're scanning emails every time. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22595.mbox:2,S new file mode 100644 index 00000000..e5c08ff4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22595.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From Pidgeot18 at verizon.net Sat Mar 7 11:25:45 2015 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FAEB94.4070508@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> +Message-ID: <54FB50B9.8010009@verizon.net> + +On 3/7/2015 6:14 AM, Ladar Levison wrote: +> I thought this might be a good list to ask a simple, but admittedly +> subjective question: If Mark Crispin was creating IMAP from scratch, in +> the world of today, would it still be a line based protocol like it was +> with RFC3501, or would he have gone with something more stateless, like +> a JSON-RPC paradigm, like JMAP? + +If Mark was redesigning IMAP today, I imagine it would end up looking +more or less like IMAP looks today with the biggest changes being some +IMAP extensions being mandatory and the entire protocol (except message +literals) being UTF-8. + + From reading his messages in this mailing list, he would focus on +supporting use cases of clients, but primarily what he thinks a "good" +IMAP client looks like--unlike many others here, he was fully insistent +on message sequence numbers being the only right way to do things. A +stateful, line-based protocol would be far simpler for clients to +implement (particularly since I also get the impression that he would +have eschewed needing to use several layers of frameworks). + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22603.mbox:2,S new file mode 100644 index 00000000..66e75447 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22603.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From jguthrie at brokersys.com Fri Jan 30 15:29:04 2015 +To: imap-protocol@u.washington.edu +From: Jonathan Guthrie +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Zimbra and FETCH response +In-Reply-To: <54CC0B1A.5040701@earthlink.net> +References: <54CC0B1A.5040701@earthlink.net> +Message-ID: <54CC13C0.4010408@brokersys.com> + +The closing parenthesis comes immediately after the last character of +the last message attribute. The message attribute before the +parenthesis in the gmail responses is the message header, which ends in +two newlines. The last message attribute in the Zimbra response is the +flags which ends in a parenthesis. + +If Zimbra chose to respond with the message attributes in the same order +as gmail, then it would look exactly the same as the gmail response. + +So, assuming that the literal character counts in the gmail responses +are accurate (I'm not going to count them to make sure) your response +processing is broken. When you get to the end of a message attribute, +you should expect to either see a space, indicating that you haven't run +out of message attributes, or a closing parenthesis. + +On 1/30/2015 4:52 PM, Rick Sanders wrote: +> Hi, +> +> This may be due to my incomplete understanding of the IMAP RFC. My +> apologies if that's the case. +> +> The most recent release of Zimbra has changed to the way it closes its +> response to FETCH. Previously when FETCHING various items the +> response for each message would be terminated by ')' on a new line. +> That's what I have used for years and it works for all other servers I +> have worked with (Gmail, Dovecot, CommuniGate, Openwave, etc). But +> not Zimbra now. +> +> >> 1 FETCH 1:* (uid flags internaldate RFC822.SIZE +> body.peek[header.fields (From Date Message-Id Subject)]) +> +> For example here is what Gmail sends: +> +> << * 1 FETCH (UID 23910 RFC822.SIZE 17599 INTERNALDATE "16-Jan-2015 +> 19:28:27 +0000" FLAGS (NonJunk) BODY[HEADER.FIELDS (From Date +> Message-Id Subject)] {211} +> << From: comp.mail.pine@googlegroups.com +> << Subject: Digest for comp.mail.pine@googlegroups.com - 2 updates +> << Message-ID: +> << Date: Fri, 16 Jan 2015 19:28:27 +0000 +> << +> << ) +> << * 2 FETCH (UID 23911 RFC822.SIZE 14881 INTERNALDATE "16-Jan-2015 +> 20:30:20 +0000" FLAGS (NonJunk) BODY[HEADER.FIELDS (From Date +> Message-Id Subject)] {210} +> << From: comp.mail.imap@googlegroups.com +> << Subject: Digest for comp.mail.imap@googlegroups.com - 1 update +> << Message-ID: <485b397dd00762fb3c050ccad70b@google.com> +> << Date: Fri, 16 Jan 2015 20:30:20 +0000 +> << +> << ) +> +> In contrast Zimbra sends: +> +> << * 1 FETCH (UID 10191 INTERNALDATE "03-Dec-2014 10:10:53 -0200" +> RFC822.SIZE 9219 BODY[HEADER.FIELDS (FROM DATE MESSAGE-ID SUBJECT)] {238} +> << From: joe > +> << Subject: test message +> << Date: Wed, 3 Dec 2014 10:10:07 -0200 +> << Message-ID: <201412031009340.006629001417608574@pmta05> +> 01-30-2015.19:38:32 << +> 01-30-2015.19:38:32 << FLAGS (\Recent)) +> 01-30-2015.19:38:32 << 1 OK FETCH completed +> +> The last line of the response is FLAGS not ')'. I've had to add +> special logic when Zimbra is involved to consider FLAGS as the end. +> +> One of my customers recently upgraded to Zimbra and immediately the +> application had used for years stopped working. :-) And other Zimbra +> users have reported the problem to me as well. +> +> What am I missing or doing wrong? +> +> Thanks, +> Rick +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22620.mbox:2,S new file mode 100644 index 00000000..194e52d6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22620.mbox:2,S @@ -0,0 +1,165 @@ +MBOX-Line: From brong at fastmail.fm Wed Oct 8 15:16:08 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing + fields +In-Reply-To: +References: + + <1412801845.1837100.176764181.7CE1D3B0@webmail.messagingengine.com> + +Message-ID: <1412806568.1857112.176792729.78B7A333@webmail.messagingengine.com> + +On Thu, Oct 9, 2014, at 08:07 AM, Brandon Long wrote: + +Do you know which client has the problem with including the UID? + + + +I'm sorry, it's well and truly forgotten in the mists of time. I rewrote that section of the code about 6 years ago now. + + + +It sounds like clients like the one that prompted this question may skip results that don't have a UID in them, and of course you won't get these updates on a regular FETCH (well, I guess you could, but our impl doesn't do that since we rolled the flag updates into the sync point updates). + + + +I'm assuming you'll get the FLAGS if you fetch them, of course. + + + +merging the fetch with the flags updates would be complicated without some much more heavy-weight changes. + + + +Yeah, that's a pity. As you could see from the C blocks I pasted before, I refactored the datastructures in Cyrus to make it trivial, taking advantage of (I would say leveraging, but I can't quite drag myself that low) the CONDSTORE data to track exactly which changes have already been told, and automatically adding FLAGS to the response for any record where they have changed. + + + +The other thing that might be worth trying is holding off on unsolicited updates until after the solicited ones are finished. + + + +TAG UID FETCH 299 (X-GM-MSGID X-GM-THRID) + +* 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) + +TAG OK Completed + +* 50 FETCH (UID 299 FLAGS (\Seen)) + + + +Of course that won't avoid dumb clients just seeing it as part of the response to the NEXT command, so maybe that doesn't work either :( Bloody IMAP clients. +Bron. + + + +Brandon + + +On Wed, Oct 8, 2014 at 1:57 PM, Bron Gondwana <[1]brong@fastmail.fm> wrote: + +On Thu, Oct 9, 2014, at 07:37 AM, Brandon Long wrote: + +We're seeing several reports of programs not expected extra FETCH responses, which we rolled out on Monday. We're rolling back soon, since older versions of a very popular client are having issues (though not to our knowledge with this part of things). + + +Yeah, it's annoying that so many clients don't handle legal IMAP responses. + +If you do: +UID FETCH 299 (X-GM-MSGID X-GM-THRID) + +You can get: +* 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) +* 50 FETCH (UID 299 FLAGS (\Seen)) + + +IN _theory_ this should be: + +* 50 FETCH (UID 299 X-GM-MSGID 1231234123134 X-GM-THRID 1234123123413) +* 50 FETCH (FLAGS (\Seen)) + +I wanted to always include the UID, but apparently there are clients that have trouble with THAT too, which is why our index_printflags function in Cyrus (called for unsolicited updates) looks like this: + + index_fetchflags(state, msgno); + /* [2]http://www.rfc-editor.org/errata_search.php?rfc=5162 + * Errata ID: 1807 - MUST send UID and MODSEQ to all + * untagged FETCH unsolicited responses */ + if (usinguid || (client_capa & CAPA_QRESYNC)) + prot_printf(state->out, " UID %u", im->uid); + if (printmodseq || (client_capa & CAPA_CONDSTORE)) + prot_printf(state->out, " MODSEQ (" MODSEQ_FMT ")", im->modseq); + prot_printf(state->out, ")\r\n"); + +if the user has just read the message. I believe that's correctly in spec and that other IMAP servers would do the same, unless they suppress updates on FETCH responses. + + +Yes, you're definitely allowed to either do that OR roll the FETCH update into the same response line. We roll them together in Cyrus. The magic is here: + + /* display flags if asked _OR_ if they've changed */ + if (fetchitems & FETCH_FLAGS || im->told_modseq < record.modseq) { + index_fetchflags(state, msgno); + sepchar = ' '; + } + +And of course in index_fetchflags itself we keep track of the modseq we told. + +[...] + if (sepchar == '(') (void)prot_putc('(', state->out); + (void)prot_putc(')', state->out); + im->told_modseq = im->modseq; +} + +The unsolicited updates loop itself does likewise: + + /* print any changed message flags */ + for (msgno = 1; msgno <= state->exists; msgno++) { + im = &state->map[msgno-1]; + + /* report if it's changed since last told */ + if (im->modseq > im->told_modseq) + index_printflags(state, msgno, printuid, printmodseq); + } + +So I would recommend for your testing that you try not sending the UID +with unsolicited flags responses (yeah, I know) if the client hasn't enabled +QRESYNC. Of course, if you can merge the responses, even better. + +Cheers, + +Bron. + +-- +Bron Gondwana +[3]brong@fastmail.fm + + + + +_______________________________________________ + +Imap-protocol mailing list + +[4]Imap-protocol@u.washington.edu + +[5]http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + + + +-- +Bron Gondwana +brong@fastmail.fm + +References + +1. mailto:brong@fastmail.fm +2. http://www.rfc-editor.org/errata_search.php?rfc=5162 +3. mailto:brong@fastmail.fm +4. mailto:Imap-protocol@u.washington.edu +5. http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22623.mbox:2,S new file mode 100644 index 00000000..87e1fbad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22623.mbox:2,S @@ -0,0 +1,101 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 3 04:17:05 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + +Message-ID: <00bd4f8b-cc4e-48b9-8aad-6788e23666af@gulbrandsen.priv.no> + +On Tuesday, September 2, 2014 11:09:47 PM CEST, Brandon Long wrote: +> It didn't when we wrote the server. Even now that it does, and +> I believe I've mentioned this before, the 5530 codes are +> inherently non-backward compatible. + +That's not a compatbility break, for two reasons. + +One is that you know very, very little about what the client acts on, so +5530 is business as usual. For example, I can't at the moment think of any +GUI client that obeys the RECENT-related MUST rule in 3501, so sending the +RECENT response is a bit hit and miss. + +The other is that there was nothing there to really be compatible with. +5530 is based on client and server surveys. Take NOPERM for example: +Various servers tested for that, and all reported failure as "NO some +human-readable text here", and I could not find any client that used the +human-readable text as basis for any behaviour. + +Or take OVERQUOTA. IIRC I found a client that did "if the response is NO +and the human-readable text contains the string quot". I have a problem +with talking about something is compatible with such fuzzily unclear fuzz. + +> We have no way of knowing +> if a client handles a given code, and we originally went with +> ALERT so that people could actually see the error. +> +> Now, it turns out most clients ignore ALERT and don't show it +> to the user, regardless of the spec. + +Exactly. I knew that and thought most people did. I understand now that I +should have added a note to 5530 pointing it out. Sorry. I didn't, because +5530 is about server to client communications, and ALERT is intended for +when the server wants to bypass the client's state machine and speak to the +user. + +> We did go through and +> update most of the login errors (and others) to correspond to +> the 5530 codes where there was a match. + +I've noticed. Good work. + +> We could also use +> separate tagged/untagged responses to give both an ALERT and a +> specific code, but that's obviously something of a hack and its +> not clear most clients handle that either. + +My two cents: ALERT is a bit pointless, but if you want to send ALERT, send +that in an untagged response of its own. ALERT is intended for the user, +and the user has no use for the command tag. Put client-directed response +codes in the tagged response, because most clients know their tags and tie +the tagged response tightly to the command. + +> Extending the available codes via RFC seems heavy weight, +> especially if its for things that are more specific to our +> server. Maybe a list of "generic but more specific" ones could +> be made, but would we really have one for "Your domain +> administrator has disabled IMAP for your domain from this IP"? + +Not quite that detailed, but something along those lines, yes, I think so. +The servers I based 5530 on didn't have a difference between the gmail god +and the customer's domain administrator and no ability to create problem +tickets, otherwise I expect CONTACTADMIN would have been a bit richer. +Perhaps: [PROBLEM issue-id contact-url], with the URL indicating at least +whom to contact, and the issue-id being something that enables the +contacted party to look up the problem. + +> We have debated having a per-message unique identifier, also +> useful when people contact us about which error they're seeing, +> but haven't exposed it. I'd say we could translate these with +> our upcoming support for UTF8, but these are almost assuredly +> seen prior to any ENABLE that would help. + +I disagree... + +You're talking about a server that issues UTF8=ACCEPT in CAPABILITY when +asked, and how it behaves in some exceptional problem. If there's a +problem, then I venture to suggest that there's a very slim chance that a) +the client parses the hr-text at all and b) would be able to recover from +the problem but c) is not able to recover because the hr-text contains +UTF8. + +Sending UTF8 if there isn't a problem sounds riskier. That's a common +cazse, not exceptional, and there's more to lose. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22626.mbox:2,S new file mode 100644 index 00000000..2e6c5a9c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22626.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From tss at iki.fi Fri Aug 29 13:12:53 2014 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] [ADVERTISEMENT] open position for IMAP sync + developer at Inbox +In-Reply-To: +References: +Message-ID: <3F8363BE-BE26-493D-81AA-5C869CB739B7@iki.fi> + +On 26 Aug 2014, at 15:09, Michael Grinich wrote: + +> ** NOTE: This is a IMAP developer job announcement. ** + +Kind of seems like bad taste to send that/this email, but I suppose this list doesn't really even have any rules (especially nowadays), since it's not even IETF related.. And since nobody has so far at least publicly complained about this thread, and I've been actually interested in sending a similar mail myself in here, thinking maybe somebody could be interested, here it goes: + +Me, too! + +Dovecot the company needs admins, coders and all kinds of other people. Some immediately, some in near future and some in maybe more far future. If you (or someone you know) are interested in being part of such a company in any way in ANY (!! - not just technical) position, let me know. Where you live doesn't matter much, because we're already a very global company (and especially for admin jobs that's more of a bonus if you're not in the same timezone as others). My current thinking is that I'll be setting up a SF bay office in ~1 month, but this mainly depends on some personal issues, so might not happen. Our HQ is in Espoo, Finland. We have also many potential offices in many countries where you could be located in if you don't want to work at home. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22629.mbox:2,S new file mode 100644 index 00000000..641dc1cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22629.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From spang at inboxapp.com Wed Jul 16 19:29:53 2014 +To: imap-protocol@u.washington.edu +From: Christine Spang +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +Message-ID: + +I know that some of the Gmail IMAP devs are on this list, so might be a +good place to ask a few questions about what assumptions one can make about +X-GM-MSGID with Gmail IMAP. + +* Is X-GM-MSGID globally unique across all of Gmail? (I assume no, given +sharding.) +* Can the same message in different accounts have the same X-GM-MSGID? +* Do X-GM-MSGID values associated with messages ever change? (Based on the +Gmail API docs about messageId, seems not?) + +--Christine +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095006.22632.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095006.22632.mbox:2,S new file mode 100644 index 00000000..e9ffc76a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095006.22632.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From nicolson at google.com Mon Jun 30 13:23:39 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] UTF8=ACCEPT and modified utf-7 mailbox names +Message-ID: + +Suppose a server supports RFC 6855 (UTF8=ACCEPT) and the client has ENABLEd +it. Is it still permissible for the client to send modified UTF-7 encoded +mailbox names, or is the client then required to use UTF-8 for mailbox +names? I'm wondering if the server code should bother running mailbox names +through the UTF-7 decoder after UTF-8 mode has been enabled. If the server +is going to decode the mailbox names, then the client must continue to +escape '&' characters as "&-". +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22589.mbox:2,S new file mode 100644 index 00000000..51b3e9a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22589.mbox:2,S @@ -0,0 +1,118 @@ +MBOX-Line: From blong at google.com Sat May 23 12:30:24 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +In-Reply-To: +References: <555FBFD2.1030800@ymail.com> + + <555FD141.1060300@ymail.com> + +Message-ID: + +I don't think you can guarantee that all of the messages you asked to be +copied were, for example one of them may have been expunged by a different +client. + +Not sure what the need to match the requested UIDs vs the source UIDs +returned, but they may not match. + +Brandon +On May 23, 2015 3:52 AM, "Alexey Melnikov" +wrote: + +> Hi Bill, +> +> On 23 May 2015, at 02:00, Bill Shannon wrote: +> +> I *so* wish there were compatibility tests for servers, rather than "it +> didn't break any clients so it must be good enough". :-) +> +> Ok, how about this. If I sort the original message numbers, and sort the +> returned source and destination UIDs, the result will be one-to-one, +> right? The first message number will correspond to the first source UID, +> which will correspond to the first destination UID, right? And all three +> sets will have exactly the same cardinality? +> +> +> Yes. I don't think it really matters in which order messages are copied, +> as long as the matching UIDs are returned correctly. +> +> +> Brandon Long wrote on 05/22/2015 05:17 PM: +> +> At least for Gmail, we always re-order the given set into sequence order +> (which is the same as uid order) before doing any operation. So, the +> source UIDs in COPYUID are in the order in which they were copied. +> +> Since a COPY in Gmail is the equivalent of adding a label to a message, +> the message may already have that label, so it may already be in the +> recipient mailbox. We always return the destination UIDs in the order +> which matches the source UID order, so in your example, source UID 1 is +> destination UID 2, and source UID 2 is destination UID 1. +> +> When APPEND'ing a duplicate message, we update the UID assigned to the +> original to be the newest UID in the mailbox (and that's returned with +> APPENDUID), since we found clients typically assumed that was the case and +> could get confused. +> +> We could have done this with COPY, I guess, but we didn't see any client +> issues in testing, so we left it this way since the performance is better. +> +> Brandon +> +> On Fri, May 22, 2015 at 4:46 PM, Bill Shannon +> wrote: +> +>> I'm unclear on the requirements around the COPY command and the COPYUID +>> response code. +>> +>> Is there any guarantee that the order of messages in the COPY command is +>> the order they'll appear in the destination mailbox? Or are they +>> allowed to appear in any arbitrary order in the destination mailbox? +>> (After any existing messages, of course.) +>> +>> RFC 4315 says of the COPYUID response: +>> +>> The source UID set is in the order the message(s) were copied; the +>> destination UID set corresponds to the source UID set and is in +>> the same order. +>> +>> Exactly what order is that? Is it the order in which the messages were +>> mentioned in the COPY command? Is it the order they actually appear in +>> the destination mailbox (assuming it can be different)? Or is it in +>> some other undefined order? +>> +>> With Gmail I'm getting +>> +>> A1 COPY 1:2 dest +>> A1 OK [COPYUID 123456 1:2 2,1] +>> +>> and +>> +>> A1 COPY 2,1 dest +>> A1 OK [COPYUID 123456 1:2 2,1] +>> +>> The order of the source UIDs is unrelated to the order the messages +>> are mentioned in the COPY command and unrelated to the order they +>> appear in the destination mailbox. +>> +>> If I don't know the UIDs of the source messages, is there any way to +>> determine which message was copied to which UID in the destination +>> mailbox? +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22592.mbox:2,S new file mode 100644 index 00000000..491eb82f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22592.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Apr 9 08:41:26 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: <201504091531.t39FVHCu006816@mxout23.cac.washington.edu> +References: <201504091259.t39CxfHJ007474@mxout24.cac.washington.edu> + <5526983D.4000503@isode.com> + <201504091531.t39FVHCu006816@mxout23.cac.washington.edu> +Message-ID: + +Whatever Mark wanted, today's users want most searches to be inclusive, +precise and smart... + +Unless they're going to delete mail, in which case they probably want it to +be exclusive and smart, and the following command will inform the server +whether it should have been inclusive or exclusive. Rise to the challenge! + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22595.mbox:2,S new file mode 100644 index 00000000..4e34a1e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22595.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From alexey.melnikov at isode.com Sat Mar 7 12:30:52 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FB3E1F.3020909@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> <8701.1425748438@parc.com> + <54FB3E1F.3020909@lavabitllc.com> +Message-ID: <54FB5FFC.40904@isode.com> + +Hi, + +On 07/03/2015 18:06, Ladar Levison wrote: +> On 3/7/2015 11:13 AM, Bill Janssen wrote: +> +>> Mobility is more of a fact than a problem? What's the particular +>> problem there? Multiple end-points? Intermittent connections? +> In my case its accessing encrypted data in general, and encrypted emails +> specifically. I'm trying to decide if I should extend IMAP, or switch to +> JMAP and focus on adding the new functionality to that model. +I suggest you start by explaining abstract operations that you want to +perform. If there enough interest in what you are trying to do, people +will help you with either IMAP, JMAP or both. +(I suspect some people might be interested in helping you.) + +Best Regards, +Alexey + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22603.mbox:2,S new file mode 100644 index 00000000..bec215ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22603.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Jan 30 15:48:00 2015 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Zimbra and FETCH response +In-Reply-To: +References: <54CC0B1A.5040701@earthlink.net> + +Message-ID: <54CC1830.9060808@earthlink.net> + + > Your IMAP parser is buggy. + + >> you should be matching the parenthesis. IMAP responses, especially +FETCH ones, kind of require you to actually parse the results and not +use something simplistic. + +Thanks, guys. I'll fix my parser. SET SIMPLISTIC = OFF. + +-Rick + + +-- +Rick Sanders +rfs9999@earthlink.net +IMAP Tools http://www.athensfbc.com/imap-tools + diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22620.mbox:2,S new file mode 100644 index 00000000..7f2561db --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22620.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Oct 8 23:01:14 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing + fields +In-Reply-To: <1412806568.1857112.176792729.78B7A333@webmail.messagingengine.com> +References: + + <1412801845.1837100.176764181.7CE1D3B0@webmail.messagingengine.com> + + <1412806568.1857112.176792729.78B7A333@webmail.messagingengine.com> +Message-ID: <5fd56eae-070b-4371-aa76-41b79228ad4d@gulbrandsen.priv.no> + +On Thursday, October 9, 2014 12:16:08 AM CEST, Bron Gondwana wrote: +> I'm sorry, it's well and truly forgotten in the mists of time. +> I rewrote that section of the code about 6 years ago now. + +Now you know why commit messages should be informative rather than +discreet. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22623.mbox:2,S new file mode 100644 index 00000000..21cdfd4c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22623.mbox:2,S @@ -0,0 +1,88 @@ +MBOX-Line: From angel at 16bits.net Wed Sep 3 13:02:32 2014 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?=C1ngel_Gonz=E1lez?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + +Message-ID: <1409774552.1122.3.camel@16bits.net> + +El mar, 02-09-2014 a las 14:09 -0700, Brandon Long escribi?: +> +> +> +On Sat, Aug 30, 2014 at 2:02 PM, Arnt Gulbrandsen: +> The point of 5530 and that registry was that clients should +> not need to do such things. IMO Google screws up by not +> defininig response codes, not you. +> +> +> Extending the available codes via RFC seems heavy weight, especially +> if its for things that are more specific to our server. Maybe a list +> of "generic but more specific" ones could be made, but would we really +> have one for "Your domain administrator has disabled IMAP for your +> domain from this IP"? + +Instead of a RFC listing each error, that's more suited for creating a +registry of error codes. Although the idea of using a wiki seems better +than placing it at IANA. + + + +> +> As for the WEBALERT case, its expected that the correct thing to do is +> to send the user to the url specified, but it has to be the user, +> they're likely to have to authenticate the session. +> +> +> Half of the above would be UNAVAILABLE or maybe CONTACTADMIN, some +> would be LIMIT/OVERQUOTA... but its unclear how much "clearer" these +> would be if they're translated to the user's language via a "generic" +> category. +> +> +> We have debated having a per-message unique identifier, also useful +> when people contact us about which error they're seeing, but haven't +> exposed it. I'd say we could translate these with our upcoming +> support for UTF8, + +I'm not too keen about providing translated messages unrequested. + + +> but these are almost assuredly seen prior to any ENABLE that would +> help. + +Specially given that you can only use ENABLE in the authenticated state. + + +It may be worth taking into account SMAP 'LANG' capability announcing if +creating an extension for handling that. A extension for supporting +translated messages might be: + +The server exposes the capability by announcing a series of +LANG= tokens on its CAPABILITY. is a language tag as +defined by RFC 1766. Providing just LANG means the server supports some +translations but is not providing the full list. + +The client requests internationalization of the messages with LANG +. An untagged response is provided with the actual language +chosen by the server (eg. the user requested EN-COCKNEY but the server +provided EN-GB) + +' LANG ?' could be used for requesting a list of languages +supported by the server. + +And ' LANG' for declaring support for the extension but stating no +preference. The server may choose a language based on an account +setting, a default for its domain, ip geolocation, etc. Note that the +server may decide to send an untagged LANG after login. + + +1- http://www.courier-mta.org/cone/smap1.html + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22626.mbox:2,S new file mode 100644 index 00000000..63978c9b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22626.mbox:2,S @@ -0,0 +1,118 @@ +MBOX-Line: From blong at google.com Fri Aug 29 13:53:26 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <5400A146.4020602@mozilla.com> +References: <5400A146.4020602@mozilla.com> +Message-ID: + +I certainly don't want to treat this list like a Gmail specific list, so it +hasn't occurred to me to broadcast any of our changes to this list +specifically. + +And we did reach out to our larger clients, assuming we knew who they were +and how to reach out to them.... sending us the ID command is certainly +helpful in that instance to know who are larger clients are. We also had +some discussion with Thunderbird, but assumed our fallback was sufficient +for clients who couldn't really switch to OAUTH. OAUTH2 is not ready for +Thunderbird at this point, really, since you have to pre-register to get +your client-id, and then also hard-code the various URLs for usage, as +there is no auto-discovery yet either. Unfortunately, the bad guys aren't +waiting for the standards to be written. + +I assume they didn't post that to the Gmail blog because its more important +to developers than to Gmail users at large. + +Our abuse team is handling this, and so I'm not directly involved and don't +know the specifics to your questions. I'll forward this to them to see +what we can say. + +I'm not really sure why the developer docs would link to the "how to avoid +using this" support page... I guess I can suggest it. I'm also not +thrilled with the wording on that page, "latest security standards". + +Also, is the Gaia email app open source as well, ie is it something you can +reasonably use OAUTH2 with today? + +Brandon + + +On Fri, Aug 29, 2014 at 8:50 AM, Andrew Sutherland +wrote: + +> The blog post http://googleonlinesecurity.blogspot.de/2014/04/new- +> security-measures-will-affect-older.html seems to have come to fruition +> as the "Access for less secure apps" setting as documented at +> https://support.google.com/accounts/answer/6010255?hl=en (but not +> particularly hyperlinked to/from many of the other GMail docs.) It sounds +> like this started happening around July 15th, noting that 2-factor accounts +> are not affected. +> +> For the Firefox OS Gaia Email app we're trying to figure out exactly what +> the impact of this is and who is affected. It does not seem +> straightforward because it seems like there are a number of heuristics in +> play. Specifically, I have observed: +> +> - My existing non-2-factor account seems to have been grandfathered so +> that the setting is enabled. +> +> - I just created a brand new non-2-factor gmail account. The Gmail +> Settings UI indicated IMAP was disabled and the "Access for less secure +> apps" account security setting was also disabled. I then added the +> brand-new account in the app and things just magically worked. IMAP got +> enabled in the gmail UI and "access for less secure apps" also got enabled. +> +> I applaud both the effort to protect users and the use of whatever +> heuristics these are to avoid needlessly inflicting pain on users. However, +> it does leave me confused what users will be impacted. Is it just GMail +> users over a certain account age who haven't leveraged PLAIN logins in some +> number of months? Is it dependent on the suspicious login heuristics? I +> do know that some testers have run into this problem recently, so it's not +> imagined. +> +> So my questions are these: +> +> 1) Is it possible to get a better understanding of what's going on with +> when the setting will be enforced? +> +> 2) Is there some other venue for staying up-to-date with information like +> this for Gmail? That blog post was somewhat nebulous, didn't get any +> coverage on a blog I was subscribed to at the time where I would have +> expected a mention (http://gmailblog.blogspot.com/), and I don't believe +> it or its contents were directly posted to any of these IMAP standardsy +> lists. The July 15th thing seemed to be something people just inferred +> after it happened. +> +> 3) Is there some way I can help update documentation/hyperlinks on pages +> like https://developers.google.com/gmail/xoauth2_protocol (to link to the +> less secure apps docs)? On https://support.google.com/ +> accounts/answer/6010255?hl=en there is an affordance to say the article +> is not helpful and provide feedback, but I don't see anything on the +> developers site. +> +> +> I do want to make it clear that I really appreciate Google/Brandon Long's +> active participation on this list and I understand how busy everyone +> involved likely is. I'm also on board with the idea that, like web +> browsers, email apps/user agents should keep up with the state of the art +> standards for the benefit/safety/privacy of their users and the health of +> the net. It's just that having more of an explicit heads up would help us +> make sure that we prioritize our engineering resources appropriately ahead +> of time rather than having to do things reactively. +> +> Thanks! +> Andrew +> +> PS: The Gaia email app has also been deficient in notifying servers via +> "ID", if that's the venue I've been missing. Although if so, I'd still +> argue this list or its friends would also be an appropriate place to post. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22629.mbox:2,S new file mode 100644 index 00000000..a763b12d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22629.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From docbook.xml at gmail.com Wed Jul 16 19:43:22 2014 +To: imap-protocol@u.washington.edu +From: "Ali, Saqib" +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: +References: +Message-ID: + +Hello Christine, + +As far as I know: +1) X-GM-MSGID is not unique. +2) It is possible. +3) No (as far as i know) + +Can you tell us what you are planning to use the X-GM-MSGID for? + +Are you using IMAP or Gmail REST API to access the Inbox? + +Saqib +http://hivemined.net + + +On Wed, Jul 16, 2014 at 7:29 PM, Christine Spang wrote: + +> I know that some of the Gmail IMAP devs are on this list, so might be a +> good place to ask a few questions about what assumptions one can make about +> X-GM-MSGID with Gmail IMAP. +> +> * Is X-GM-MSGID globally unique across all of Gmail? (I assume no, given +> sharding.) +> * Can the same message in different accounts have the same X-GM-MSGID? +> * Do X-GM-MSGID values associated with messages ever change? (Based on the +> Gmail API docs about messageId, seems not?) +> +> --Christine +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22632.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22632.mbox:2,S new file mode 100644 index 00000000..362b9af1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22632.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jun 30 14:13:49 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] UTF8=ACCEPT and modified utf-7 mailbox names +In-Reply-To: +References: +Message-ID: <50b7b4b0-ec42-4447-a0f1-b9241f1d1984@gulbrandsen.priv.no> + +On Monday, June 30, 2014 10:23:39 PM CEST, Jamie Nicolson (???) wrote: +> Suppose a server supports RFC 6855 (UTF8=ACCEPT) and the client +> has ENABLEd it. Is it still permissible for the client to send +> modified UTF-7 encoded mailbox names, or is the client then +> required to use UTF-8 for mailbox names? + +IMO, required to use UTF8... + +> I'm wondering if the +> server code should bother running mailbox names through the +> UTF-7 decoder after UTF-8 mode has been enabled. If the server +> is going to decode the mailbox names, then the client must +> continue to escape '&' characters as "&-". + +... because that escaping is not in 6855. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095007.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095007.22635.mbox:2,S new file mode 100644 index 00000000..06b8e737 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095007.22635.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu May 1 06:43:45 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <5361A492.27040.8E4360E0@David.Harris.pmail.gen.nz> +References: <53608FE7.8090909@verizon.net>, + , + <53611968.6010707@verizon.net> + <5361A492.27040.8E4360E0@David.Harris.pmail.gen.nz> +Message-ID: <53624F91.8080801@verizon.net> + +On 4/30/2014 8:34 PM, David Harris wrote: +> Could you explain what "IMAP ID" you're talking about here? Is this +> something specific to the OAUTH2 specification, or has some kind of ID +> been added to post-RFC3501 IMAP while I was asleep? +Bron Gondwana already explained this. + +> Secondly, could someone send me a link showing the intended use of +> OAUTH in an IMAP implementation? Am I correct in assuming that you are +> intended to submit a user's GMail short-term token to login to GMail instead +> of using a username/password or other SASL mechanism? + +The IETF group that maintains SASL is developing a specification for a +SASL OAUTHBEARER mechanism, which is what Google's (and Microsoft's) +AUTH=XOAUTH2 is based on (different name because the RFC is still in +flux and could (and has) change from the current implementation). The +purpose of this specification is to use an OAuth 2.0 Bearer token (a +short term token that appears to last ~1 hour?) instead of other SASL +mechanisms. Attempting to read between the lines, it looks like the +intent is to move away from storing username/passwords in the local +password store but rather to store long-lived limited-access tokens, but +the documentation on how clients should be handling the password store +is completely nonexistent. + +> Finally, could someone comment on how real any of this is? The Wikipedia +> article on OAUTH (I know, I know - Wikipedia is Wikipedia, but it's useful +> despite all its shortcomings) paints a picture of a vague, fractured, +> poorly-designed mechanism being torn apart by internal bickering and +> infighting. +> +> http://en.wikipedia.org/wiki/OAuth + +The former editor of OAuth 2.0 resigned in the middle of the process and +became very bitter, and most of the OAuth 2.0 page seems to rely pretty +one-sidedly on his comments. I spent some time attempting to dig up less +biased and more recent security analyses of OAuth 2.0. The only one I've +found I can recommend bothering to look at is +. + +The best way to summarize the security of OAuth 2.0 is that "it's not +impossible to secure, but it's not required to be secure": the RFC is +extremely light on describing anything useful for building a client. If +I had a choice, I'd rather use, say, SCRAM over OAuth 2.0, but this +isn't exactly a choice I can make. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22589.mbox:2,S new file mode 100644 index 00000000..14b36d4d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22589.mbox:2,S @@ -0,0 +1,95 @@ +MBOX-Line: From alexey.melnikov at isode.com Sat May 23 14:55:53 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +In-Reply-To: +References: <555FBFD2.1030800@ymail.com> + + <555FD141.1060300@ymail.com> + + +Message-ID: <16340255-4E76-482F-8F0B-7633746E3364@isode.com> + + +> On 23 May 2015, at 20:30, Brandon Long wrote: +> +> I don't think you can guarantee that all of the messages you asked to be copied were, for example one of them may have been expunged by a different client. +> +> Not sure what the need to match the requested UIDs vs the source UIDs returned, but they may not match. +> +Correct. I was talking only about source and target UIDs in the COPYUID response. +> Brandon +> +>> On May 23, 2015 3:52 AM, "Alexey Melnikov" wrote: +>> Hi Bill, +>> +>>> On 23 May 2015, at 02:00, Bill Shannon wrote: +>>> +>>> I so wish there were compatibility tests for servers, rather than "it didn't break any clients so it must be good enough". :-) +>>> +>>> Ok, how about this. If I sort the original message numbers, and sort the returned source and destination UIDs, the result will be one-to-one, right? The first message number will correspond to the first source UID, which will correspond to the first destination UID, right? And all three sets will have exactly the same cardinality? +>> +>> Yes. I don't think it really matters in which order messages are copied, as long as the matching UIDs are returned correctly. +>> +>>> +>>> Brandon Long wrote on 05/22/2015 05:17 PM: +>>>> At least for Gmail, we always re-order the given set into sequence order (which is the same as uid order) before doing any operation. So, the source UIDs in COPYUID are in the order in which they were copied. +>>>> +>>>> Since a COPY in Gmail is the equivalent of adding a label to a message, the message may already have that label, so it may already be in the recipient mailbox. We always return the destination UIDs in the order which matches the source UID order, so in your example, source UID 1 is destination UID 2, and source UID 2 is destination UID 1. +>>>> +>>>> When APPEND'ing a duplicate message, we update the UID assigned to the original to be the newest UID in the mailbox (and that's returned with APPENDUID), since we found clients typically assumed that was the case and could get confused. +>>>> +>>>> We could have done this with COPY, I guess, but we didn't see any client issues in testing, so we left it this way since the performance is better. +>>>> +>>>> Brandon +>>>> +>>>>> On Fri, May 22, 2015 at 4:46 PM, Bill Shannon wrote: +>>>>> I'm unclear on the requirements around the COPY command and the COPYUID +>>>>> response code. +>>>>> +>>>>> Is there any guarantee that the order of messages in the COPY command is +>>>>> the order they'll appear in the destination mailbox? Or are they +>>>>> allowed to appear in any arbitrary order in the destination mailbox? +>>>>> (After any existing messages, of course.) +>>>>> +>>>>> RFC 4315 says of the COPYUID response: +>>>>> +>>>>> The source UID set is in the order the message(s) were copied; the +>>>>> destination UID set corresponds to the source UID set and is in +>>>>> the same order. +>>>>> +>>>>> Exactly what order is that? Is it the order in which the messages were +>>>>> mentioned in the COPY command? Is it the order they actually appear in +>>>>> the destination mailbox (assuming it can be different)? Or is it in +>>>>> some other undefined order? +>>>>> +>>>>> With Gmail I'm getting +>>>>> +>>>>> A1 COPY 1:2 dest +>>>>> A1 OK [COPYUID 123456 1:2 2,1] +>>>>> +>>>>> and +>>>>> +>>>>> A1 COPY 2,1 dest +>>>>> A1 OK [COPYUID 123456 1:2 2,1] +>>>>> +>>>>> The order of the source UIDs is unrelated to the order the messages +>>>>> are mentioned in the COPY command and unrelated to the order they +>>>>> appear in the destination mailbox. +>>>>> +>>>>> If I don't know the UIDs of the source messages, is there any way to +>>>>> determine which message was copied to which UID in the destination +>>>>> mailbox? +>>>>> _______________________________________________ +>>>>> Imap-protocol mailing list +>>>>> Imap-protocol@u.washington.edu +>>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22592.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22592.mbox:2,S new file mode 100644 index 00000000..e6de1f2e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22592.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From dave at cridland.net Thu Apr 9 09:19:16 2015 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] SEARCH semantics +In-Reply-To: +References: <201504091259.t39CxfHJ007474@mxout24.cac.washington.edu> + <5526983D.4000503@isode.com> + <201504091531.t39FVHCu006816@mxout23.cac.washington.edu> + +Message-ID: + +SEARCHRES and lazy evaluation FTW! + +On 9 April 2015 at 16:41, Arnt Gulbrandsen wrote: + +> Whatever Mark wanted, today's users want most searches to be inclusive, +> precise and smart... +> +> Unless they're going to delete mail, in which case they probably want it +> to be exclusive and smart, and the following command will inform the server +> whether it should have been inclusive or exclusive. Rise to the challenge! +> +> Arnt +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22595.mbox:2,S new file mode 100644 index 00000000..128ba275 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22595.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From brong at fastmail.fm Sat Mar 7 15:37:18 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FB50B9.8010009@verizon.net> +References: <54FAEB94.4070508@lavabitllc.com> <54FB50B9.8010009@verizon.net> +Message-ID: <1425771438.472600.237334077.6AC8DF41@webmail.messagingengine.com> + +On Sun, Mar 8, 2015, at 06:25 AM, Joshua Cranmer wrote: +> On 3/7/2015 6:14 AM, Ladar Levison wrote: +> > I thought this might be a good list to ask a simple, but admittedly +> > subjective question: If Mark Crispin was creating IMAP from scratch, +> > in the world of today, would it still be a line based protocol like +> > it was with RFC3501, or would he have gone with something more +> > stateless, like a JSON-RPC paradigm, like JMAP? +> +> If Mark was redesigning IMAP today, I imagine it would end up looking +> more or less like IMAP looks today with the biggest changes being some +> IMAP extensions being mandatory and the entire protocol (except +> message literals) being UTF-8. +> +> From reading his messages in this mailing list, he would focus on +> supporting use cases of clients, but primarily what he thinks a +> "good" IMAP client looks like--unlike many others here, he was fully +> insistent on message sequence numbers being the only right way to do +> things. A stateful, line-based protocol would be far simpler for +> clients to implement (particularly since I also get the impression +> that he would have eschewed needing to use several layers of +> frameworks). + +Yeah, I would have been arguing very strongly against this - at least +with the whole "you can't tell the client about expunges" because it +changes sequence numbers problem - because it doesn't interact well with +CONDSTORE and friends, and it requires the server to keep COW state on +the entire mailbox for each connected client. + +Of course, I'm not Mark Crispin :) I don't like anything which forces +either end to do more work than it actually needs - and IMAP has a pile +of required work that many clients don't actually use (like the UNSEEN +and RECENT values which aren't used by many clients). There's no way +for a client specify that it doesn't need the server to do the +bookkeeping on its behalf. + +Bron. + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22603.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22603.mbox:2,S new file mode 100644 index 00000000..51afce0b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22603.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Jan 31 02:19:17 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Zimbra and FETCH response +In-Reply-To: <54CC1830.9060808@earthlink.net> +References: <54CC0B1A.5040701@earthlink.net> + + <54CC1830.9060808@earthlink.net> +Message-ID: <1e8ecb2f-a952-4c28-a4ec-3cd85f3682a8@gulbrandsen.priv.no> + +On Saturday, January 31, 2015 12:48:00 AM CEST, Rick Sanders wrote: +> Thanks, guys. I'll fix my parser. SET SIMPLISTIC = OFF. + +Shocking that it worked for so many years without that fix. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22620.mbox:2,S new file mode 100644 index 00000000..cd84c209 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22620.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Oct 17 05:50:15 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing + fields +In-Reply-To: +References: + +Message-ID: <5f24a2bb-1658-4664-8282-3fc76d3f2c8e@gulbrandsen.priv.no> + +On Wednesday, October 8, 2014 10:37:30 PM CEST, Brandon Long wrote: +> We're seeing several reports of programs not expected extra +> FETCH responses, which we rolled out on Monday. We're rolling +> back soon, since older versions of a very popular client are +> having issues (though not to our knowledge with this part of +> things). + +Are you just rolling back, or are you also being politely helpful with the +maintainers of that client? + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22623.mbox:2,S new file mode 100644 index 00000000..031a5155 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22623.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From blong at google.com Wed Sep 3 13:11:32 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <00bd4f8b-cc4e-48b9-8aad-6788e23666af@gulbrandsen.priv.no> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <00bd4f8b-cc4e-48b9-8aad-6788e23666af@gulbrandsen.priv.no> +Message-ID: + +On Wed, Sep 3, 2014 at 4:17 AM, Arnt Gulbrandsen +wrote: + +> On Tuesday, September 2, 2014 11:09:47 PM CEST, Brandon Long wrote: +> +>> It didn't when we wrote the server. Even now that it does, and I believe +>> I've mentioned this before, the 5530 codes are inherently non-backward +>> compatible. +>> +> +> That's not a compatbility break, for two reasons. +> +> One is that you know very, very little about what the client acts on, so +> 5530 is business as usual. For example, I can't at the moment think of any +> GUI client that obeys the RECENT-related MUST rule in 3501, so sending the +> RECENT response is a bit hit and miss. +> +> The other is that there was nothing there to really be compatible with. +> 5530 is based on client and server surveys. Take NOPERM for example: +> Various servers tested for that, and all reported failure as "NO some +> human-readable text here", and I could not find any client that used the +> human-readable text as basis for any behaviour. +> +> Or take OVERQUOTA. IIRC I found a client that did "if the response is NO +> and the human-readable text contains the string quot". I have a problem +> with talking about something is compatible with such fuzzily unclear fuzz. + + +Sure, I was being specific to [ALERT] meaning "show the user", not any +fuzzy logic that people were using on the strings themselves. + +[snip] + + We could also use separate tagged/untagged responses to give both an ALERT +>> and a specific code, but that's obviously something of a hack and its not +>> clear most clients handle that either. +>> +> +> My two cents: ALERT is a bit pointless, but if you want to send ALERT, +> send that in an untagged response of its own. ALERT is intended for the +> user, and the user has no use for the command tag. Put client-directed +> response codes in the tagged response, because most clients know their tags +> and tie the tagged response tightly to the command. + + +At this point, I'm willing to concede that point. + +[snip] + + +> You're talking about a server that issues UTF8=ACCEPT in CAPABILITY when +> asked, and how it behaves in some exceptional problem. If there's a +> problem, then I venture to suggest that there's a very slim chance that a) +> the client parses the hr-text at all and b) would be able to recover from +> the problem but c) is not able to recover because the hr-text contains UTF8. +> +> Sending UTF8 if there isn't a problem sounds riskier. That's a common +> cazse, not exceptional, and there's more to lose. + + +Funny, we just got an external bug report today due to us sending UTF8 in +the OK response to logins for user's with UTF8 names (which we'll be +fixing). + +It is interesting to violate in case of errors. I assume that will make +things worse for people who are actually inspecting our strings, though. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22626.mbox:2,S new file mode 100644 index 00000000..bfd57f71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22626.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From Pidgeot18 at verizon.net Fri Aug 29 15:52:49 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + +Message-ID: <54010441.1040803@verizon.net> + +On 8/29/2014 3:53 PM, Brandon Long wrote: +> And we did reach out to our larger clients, assuming we knew who they +> were and how to reach out to them.... sending us the ID command is +> certainly helpful in that instance to know who are larger clients are. +> We also had some discussion with Thunderbird, but assumed our +> fallback was sufficient for clients who couldn't really switch to +> OAUTH. OAUTH2 is not ready for Thunderbird at this point, really, +> since you have to pre-register to get your client-id, and then also +> hard-code the various URLs for usage, as there is no auto-discovery +> yet either. Unfortunately, the bad guys aren't waiting for the +> standards to be written. + +Since this is definitely of interest to others on the list--are there +any updates on the dynamic client registration and autodiscovery drafts +yet? I've seen progress on the Dynamic client registration draft +(http://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-20), although I +admit I haven't read the spec closely yet to provide feedback; but I've +been unable to find indication of any autodiscovery work. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22629.mbox:2,S new file mode 100644 index 00000000..c1e705c5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22629.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From spang at inboxapp.com Wed Jul 16 19:54:19 2014 +To: imap-protocol@u.washington.edu +From: Christine Spang +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: +References: + +Message-ID: + +Hi Saqib, + +Thanks for the quick response. + +I'm trying to maximally deduplicate Gmail messages amongst an (arbitrary) +set of Gmail accounts synchronized locally. Seems like you can deduplicate +within-account easily based on X-GM-MSGID, but cross-account deduplication +is much harder. + +I'm using Gmail IMAP. + +--Christine + + +On Wed, Jul 16, 2014 at 7:43 PM, Ali, Saqib wrote: + +> Hello Christine, +> +> As far as I know: +> 1) X-GM-MSGID is not unique. +> 2) It is possible. +> 3) No (as far as i know) +> +> Can you tell us what you are planning to use the X-GM-MSGID for? +> +> Are you using IMAP or Gmail REST API to access the Inbox? +> +> Saqib +> http://hivemined.net +> +> +> On Wed, Jul 16, 2014 at 7:29 PM, Christine Spang +> wrote: +> +>> I know that some of the Gmail IMAP devs are on this list, so might be a +>> good place to ask a few questions about what assumptions one can make about +>> X-GM-MSGID with Gmail IMAP. +>> +>> * Is X-GM-MSGID globally unique across all of Gmail? (I assume no, given +>> sharding.) +>> * Can the same message in different accounts have the same X-GM-MSGID? +>> * Do X-GM-MSGID values associated with messages ever change? (Based on +>> the Gmail API docs about messageId, seems not?) +>> +>> --Christine +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22632.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22632.mbox:2,S new file mode 100644 index 00000000..044d42c4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22632.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From nicolson at google.com Mon Jun 30 14:19:54 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] UTF8=ACCEPT and modified utf-7 mailbox names +In-Reply-To: <50b7b4b0-ec42-4447-a0f1-b9241f1d1984@gulbrandsen.priv.no> +References: + <50b7b4b0-ec42-4447-a0f1-b9241f1d1984@gulbrandsen.priv.no> +Message-ID: + +Good, definitely makes more sense that way. Why enable the extension if +you're not willing to use UTF-8?. + + +On Mon, Jun 30, 2014 at 2:13 PM, Arnt Gulbrandsen +wrote: + +> On Monday, June 30, 2014 10:23:39 PM CEST, Jamie Nicolson (???) wrote: +> +>> Suppose a server supports RFC 6855 (UTF8=ACCEPT) and the client has +>> ENABLEd it. Is it still permissible for the client to send modified UTF-7 +>> encoded mailbox names, or is the client then required to use UTF-8 for +>> mailbox names? +>> +> +> IMO, required to use UTF8... +> +> +> I'm wondering if the server code should bother running mailbox names +>> through the UTF-7 decoder after UTF-8 mode has been enabled. If the server +>> is going to decode the mailbox names, then the client must continue to +>> escape '&' characters as "&-". +>> +> +> ... because that escaping is not in 6855. +> +> Arnt +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095008.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095008.22635.mbox:2,S new file mode 100644 index 00000000..98f4d3aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095008.22635.mbox:2,S @@ -0,0 +1,249 @@ +MBOX-Line: From nicolson at google.com Thu May 1 12:22:27 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <53611C4E.7030904@comaxis.com> +References: <53608FE7.8090909@verizon.net> + + <5360FF8D.9000201@comaxis.com> + <20140430143517.743B37306E@mailwash38.pair.com> + <53611C4E.7030904@comaxis.com> +Message-ID: + +Admin access (aka 2-legged OAuth) should work with an OAuth 2 Service +Account. Can you try this procedure? I'll try to get it added to the +documentation: + +Follow the instructions at +https://developers.google.com/accounts/docs/OAuth2ServiceAccount to create +a Service Account. You will download a private key in p12 format. Also note +the Client ID and Email Address for the service account. + +Next, go into the Google Apps control panel at https://admin.google.com. +Login as a domain administrator. Go to Security -> Advanced Settings -> +Authentication -> Manage OAuth Client Access. You?re going to add an +authorized API client. For client name, use the client ID of the service +account client you created, e.g. 349847762461.apps.googleusercontent.com. +For the scope, use "https://mail.google.com/" or +"https://www.googleapis.com/auth/gmail.imap_admin" (more on this scope +below). Hit Authorize, and it should show up as authorized for Email +(Read/WriteSend). + +Now download an oauth2client library from +https://developers.google.com/api-client-library/. +Download the library and install it per the README (running +easy_install...). + +The library knows how to generate an access token given your private key, +client ID, and the account you?re trying to access. For +service_account_name, you use the email address for your Service Account. +Here?s sample python code to do this. + +#!/usr/bin/python + +import httplib2 +import oauth2client.client + +pkey = +open('/tmp/0426b5132da841d6de81950d55b82fbd57858ca7-privatekey.p12').read() +creds = oauth2client.client.SignedJwtAssertionCredentials( + service_account_name='349847762461@developer.gserviceaccount.com', + private_key=pkey, + scope='https://mail.google.com/', + prn='foo@bar.com') + +creds.refresh(httplib2.Http()) + +print creds.access_token + + +This prints an access token that can login to foo@bar.com, following the +instructions for XOAUTH2 Gmail access at +https://developers.google.com/gmail/xoauth2_protocol. + +Scopes: The normal scope https://mail.google.com/ will work, but if you use +https://www.googleapis.com/auth/gmail.imap_admin, your IMAP connection will +ignore user-specific settings, such as hiding folders from IMAP. + + +On Wed, Apr 30, 2014 at 8:52 AM, Jeff McKay wrote: + +> Of course, 2-legged OAuth 1.0 has been "deprecated" for several years +> now. I think I heard Brandon mention once +> that it would not be killed until there is a replacement, since a lot of +> applications depend on it. I have experimented +> also with everything I can find on OAuth 2.0 and nothing works for admin +> access, or the documentation is insufficient +> for me to do it correctly. +> +> +> On 4/30/2014 7:34 AM, Pete Maclean wrote: +> +> Jeff, +> +> I find your post very interesting because I have been trying on and off +> for months to get OAuth 2 to work for Gmail for Google Apps users via admin +> credentials -- without success. I do not have the luxury of using OAuth 1 +> because I started only recently and choose not to go to the trouble of +> implementing something that is deprecated and likely to quickly become +> obsolete. I have found the matter frustrating because of the lack of +> documentation and because the problem is never a failure to obtain a token +> but the failure of the token I get to work for IMAP authentication. +> (Making OAuth 2 work for individual Gmail users was, by comparison, a piece +> of cake.) +> +> I am gratified in particular to hear your call for detailed documentation +> on the topic because it tends to confirm that I have not simply missed +> something. +> +> Pete Maclean +> +> At 09:50 AM 4/30/2014, Jeff McKay wrote: +> +> I have used oauth 2 with Gmail and it works well for my purpose. I have +> seen the refresh token work several months after +> first obtaining it with no intervening use. To change the subject just a +> it, I wonder if Google could comment on the continuing +> use of oauth 1 with Gmail? Currently that is the only method I know that +> will allow me to grab Google Apps email data using +> only administrative credentials, i.e. the client secret. If there is a +> way to do that with oauth 2 I would appreciate detailed +> low level documentation (not a library function). But I sure hope that +> oauth 1 support is not going away anytime soon. +> +> On 4/29/2014 11:55 PM, Brandon Long wrote: +> +> I'm not our expert on oauth, he's welcome to pipe up here in a bit. +> +> I'd also point you to our documentation here, +> https://developers.google.com/gmail/oauth_overview which at the least has +> working examples. +> +> +> +> On Tue, Apr 29, 2014 at 10:53 PM, Joshua Cranmer +> wrote: +> Hello, +> +> This is a message mostly directed to our fine Gmail server maintainers +> who happen to be listening on this list, but I think the issues here are +> relevant to other people who would read this list and I value the feedback +> of others, so I'm posting this publicly. +> +> Google's recent announcement (< +> http://googleonlinesecurity.blogspot.co.uk/2014/04/new-security-measures-will-affect-older.html>) about its authentication polices, I have been led to believe, is in part +> a plea for clients to implement OAuth2.0-based authentication, and an +> intent to degrade experience of users for clients that remain +> authenticating based on common IMAP authentication passwords. I believe +> that I have a duty to the users of Thunderbird to provide them the best +> experience I can, but I believe that I also have the responsibility to help +> ensure that this experience can be easily had by both users of other email +> services and other email clients; the OAuth 2.0 requirements as I have +> found them put these responsibilities in conflict, and I do not want to be +> in the position of having to choose which is the more important one. +> +> So far, I've read the OAuth 2.0 RFC (6749), Google's documentation on +> its OAuth 2.0 implementation [1], and even the most recent draft of +> integrating OAuth into SASL (), +> which is what I view AUTH=XOAUTH2 in GMail's support as being analogous to. +> I have not yet had time to fully digest all the related emails about OAuth +> and SASL on the kitten working group. There has also been a discussion on +> this on Thunderbird's development mailing list (< +> https://mail.mozilla.org/pipermail/tb-planning/2014-April/003236.html >), +> if you're interested in seeing some of the discussion that has already been +> brought up and my or others' personal views on the quality of OAuth 2.0. +> +> +> Pieces of information: +> * Client Identifier: This is required in the RFC, and it is emphatic +> that this is neither secret nor is it to be used alone for client +> authentication. The problem I have here is the registration requirement: +> not that it is hard, but rather that it introduces a discrimination on the +> part of less common mail services that might wish to use this mechanism, if +> clients have to register a separate identifier for every such server. Given +> that such data will evidently be public (e.g., checked into Thunderbird's +> source code; even were it not, it's still a simple matter to intercept all +> outgoing http/https requests and obtain the id from that), and given that +> IMAP already defines an ID call that is used by Thunderbird and other +> clients, if the call is merely to indicate to the user the name of the +> program wishing to obtain authorization, it seems to me that deriving the +> client identifier from the ID call somehow ought to be sufficient. +> +> +> The client identifier here, from my understanding, is different in that +> its an actual registered ID, not just some string. Re-using the ID isn't +> going to work, plus, as a SASL mechanism, its supposed to be contained and +> generic for use in multiple protocols, so relying on a protocol specific +> passing of that information was probably considered non-ideal. +> +> * Authorization endpoint: Arguably the biggest flaw in the entire +> process is that I see no way to build the HTTPS request to an OAuth +> authorization endpoint without hardcoding specific values. +> +> * Token endpoint: Similar to the authorization endpoint, the location of +> this is also left indeterminable. +> +> * Scope: It seems to me that this part, though technically optional in +> the OAuth specification, is meant to basically be required. For a single +> standardized name, it seems to me that, given that SASL mandates that +> applications using it describe a service name (cf. RFC 4422, section 4), it +> makes sense to use this parameter (or some simple derivation thereof) to +> use as the scope parameter. [2] +> +> * Refresh tokens: Google's documentation on this is vague. At times, it +> implies that these last essentially forever unless the user revokes access. +> At other times (and apparently in experiments), it seems that these last +> only for long-ish terms (e.g., a few weeks). This need to "refresh" the +> refresh tokens would be troubling to me, since it implies that I should be +> attempting to do more things in my power to autofill the server's +> authentication mechanisms without the user knowing, in accordance with the +> user's wish to not have to retype passwords implied by saving these +> credentials in our password manager. This sort of action appears to be +> contrary to the goals of OAuth 2.0, though. +> +> Providing this information via some sort of autoconfigurable, +> autodiscoverable mechanism given only the user's email and/or server name +> is, in my mind, absolutely necessary before any attempt to implement this +> in Thunderbird is started. While tying the records to DNS is theoretically +> better since a chain of trust can be followed with DANE, many clients may +> find it easier to look it up at some well-known URL similar to how +> Thunderbird's autoconfiguration mechanism already works. +> +> +> Yes, as far as I know, there is no discoverability mechanism as of yet. +> +> [1] Which is rather infuriating and confusing if all you're trying to do +> is figure out how to use AUTH=XOAUTH2, as most of the documentation is +> clearly geared towards usecases specific to other APIs and not IMAP or SMTP +> access. +> +> +> Ah, is this the documentation I pointed out above? Happy to pass on any +> feedback to the docs folks. +> +> [2] On careful rereading of the SASL OAUTHBEARER draft it seems that it +> is possible to automatically infer the desired scope... but only by +> executing a AUTHENTICATE command that fails, which is rather suboptimal +> workflow for trying to develop client behavior in this regard. It means, +> e.g., I can't wrap the OAUTH support in a generic SASL provider mechanism +> and expect to have it pick up the desired scope information. It's also +> suboptimal that the information about scope is revealed but not any other +> hints about how to go about requesting authorization. +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22589.mbox:2,S new file mode 100644 index 00000000..b2de0784 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22589.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun May 24 00:34:04 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +References: <555FBFD2.1030800@ymail.com> + + <555FD141.1060300@ymail.com> + + + <16340255-4E76-482F-8F0B-7633746E3364@isode.com> +Message-ID: + +Clients update that to avoid refetching, and to support undo. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22595.mbox:2,S new file mode 100644 index 00000000..18c8643c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22595.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From joel+imap-protocol at panacea.null.org Sat Mar 7 20:12:58 2015 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FAEB94.4070508@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> +Message-ID: <16984.1425787978@atlas.panacea.null.org> + +> I thought this might be a good list to ask a simple, but admittedly +> subjective question: If Mark Crispin was creating IMAP from scratch, in +> the world of today, would it still be a line based protocol like it was +> with RFC3501, or would he have gone with something more stateless, like +> a JSON-RPC paradigm, like JMAP? + +In addition to mail-specific aspects, something like IMAP needs to +solve the problem of (concurrent) access to remote storage (over a +network). + +Looking at current solutions to that problem in its generic form may +suggest stateful is the way to go. (In particular the evolution of +NFS.) + +Regards, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22620.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22620.mbox:2,S new file mode 100644 index 00000000..538a86cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22620.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From blong at google.com Fri Oct 17 07:27:31 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP responses are sporadically missing + fields +In-Reply-To: <5f24a2bb-1658-4664-8282-3fc76d3f2c8e@gulbrandsen.priv.no> +References: + + <5f24a2bb-1658-4664-8282-3fc76d3f2c8e@gulbrandsen.priv.no> +Message-ID: + +We rolled back and we worked with them and we think we have a solution +which we should be testing soon. + +We were sending fetch responses for new messages in the folder and we think +this was causing the problems. + +Brandon +On Oct 17, 2014 5:52 AM, "Arnt Gulbrandsen" +wrote: + +> On Wednesday, October 8, 2014 10:37:30 PM CEST, Brandon Long wrote: +> +>> We're seeing several reports of programs not expected extra FETCH +>> responses, which we rolled out on Monday. We're rolling back soon, since +>> older versions of a very popular client are having issues (though not to +>> our knowledge with this part of things). +>> +> +> Are you just rolling back, or are you also being politely helpful with the +> maintainers of that client? +> +> Arnt +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22623.mbox:2,S new file mode 100644 index 00000000..4210f78b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22623.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 3 13:21:49 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <1409774552.1122.3.camel@16bits.net> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <1409774552.1122.3.camel@16bits.net> +Message-ID: <03710d62-c480-4224-b33a-96f979ebd1a3@gulbrandsen.priv.no> + +FWIW, there already is a language extension for IMAP. My name is on the +RFC, even. I think Ned Freed has an implementation, but I haven't exactly +been swamped by comments from would-be implementers. + +I didn't implement it myself. To be frank I only finished the RFC because +it was the easiest way out. Sometimes "ship and discard" is easier than any +other alternative. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22626.mbox:2,S new file mode 100644 index 00000000..a16c8617 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22626.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From angel at 16bits.net Fri Aug 29 16:51:03 2014 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?=C1ngel_Gonz=E1lez?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + +Message-ID: <1409356263.2096.7.camel@16bits.net> + + + +Brandon Long wrote: +> I'm not really sure why the developer docs would link to the "how to +> avoid using this" support page... I guess I can suggest it. I'm also +> not thrilled with the wording on that page, "latest security +> standards". + +That's definitely confusing. Just talking about "less secure apps" +without specifying why do you consider them "less secure" is useless. +When I first read that page I thought it was refering to using a weak +ciphersuite in TLS (for some definition of "weak"). + +(I did report it on the feedback form, but the page keeps the same +-other that now there is the ?Allow less secure apps? option- ) + +You need to relate [1] with [2] in order to understand what it is +talking about +1-https://support.google.com/accounts/answer/6010255?hl=en +2-http://googleonlinesecurity.blogspot.de/2014/04/new-security-measures-will-affect-older.html + + + +> +> OAUTH2 is not ready for Thunderbird at this point, really, since you +> have to pre-register to get your client-id, and then also hard-code +> the various URLs for usage, as there is no auto-discovery yet either. +> Unfortunately, the bad guys aren't waiting for the standards to be +> written. Our abuse team is handling this, and so I'm not directly +> involved and don't know the specifics (...) +> +I wonder what/how they are trying to fix. An application-specific +password can provide the same benefits as OAUTH2* -except for the +automatic refresh when it expires after 6 months- yet they are only +available with two-factor authentication. +* Although with a little more work from the user generating them. For +feature parity, instead of the program handing an identifying token, the +user would need to follow a Wizard and choose the MUA they are using +(with 'other' being unrestricted). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22629.mbox:2,S new file mode 100644 index 00000000..49505b18 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22629.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Wed Jul 16 20:00:08 2014 +To: imap-protocol@u.washington.edu +From: "Hoa V. Dinh" +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: +References: + + +Message-ID: <874AA50791EC4A89B8989C2ABADF0B3E@gmail.com> + +I?m not sure how much you would gain by reduplicating across accounts. +One way you could try to de-duplicate could be to get a hash (sha1?) of the content of the email. + +-- +Hoa V. Dinh + + +On Wednesday, July 16, 2014 at 7:54 PM, Christine Spang wrote: + +> Hi Saqib, +> +> Thanks for the quick response. +> +> I'm trying to maximally deduplicate Gmail messages amongst an (arbitrary) set of Gmail accounts synchronized locally. Seems like you can deduplicate within-account easily based on X-GM-MSGID, but cross-account deduplication is much harder. +> +> I'm using Gmail IMAP. +> +> --Christine +> +> +> On Wed, Jul 16, 2014 at 7:43 PM, Ali, Saqib wrote: +> > Hello Christine, +> > +> > As far as I know: +> > 1) X-GM-MSGID is not unique. +> > 2) It is possible. +> > 3) No (as far as i know) +> > +> > Can you tell us what you are planning to use the X-GM-MSGID for? +> > +> > Are you using IMAP or Gmail REST API to access the Inbox? +> > +> > Saqib +> > http://hivemined.net +> > +> > +> > +> > On Wed, Jul 16, 2014 at 7:29 PM, Christine Spang wrote: +> > > I know that some of the Gmail IMAP devs are on this list, so might be a good place to ask a few questions about what assumptions one can make about X-GM-MSGID with Gmail IMAP. +> > > +> > > * Is X-GM-MSGID globally unique across all of Gmail? (I assume no, given sharding.) +> > > * Can the same message in different accounts have the same X-GM-MSGID? +> > > * Do X-GM-MSGID values associated with messages ever change? (Based on the Gmail API docs about messageId, seems not?) +> > > +> > > --Christine +> > > _______________________________________________ +> > > Imap-protocol mailing list +> > > Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> > > http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> > +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22635.mbox:2,S new file mode 100644 index 00000000..3197de1a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22635.mbox:2,S @@ -0,0 +1,293 @@ +MBOX-Line: From jjmckay at comaxis.com Thu May 1 13:10:25 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: +References: <53608FE7.8090909@verizon.net> + + <5360FF8D.9000201@comaxis.com> + <20140430143517.743B37306E@mailwash38.pair.com> + <53611C4E.7030904@comaxis.com> + +Message-ID: <5362AA31.2060606@comaxis.com> + +Thanks for this. I will work on it over the next few weeks when I have +some time. I think I tried a service account before +but got hung up on the issue of generating an access token with the +private key. I am writing in C for Windows and Linux, +and when I looked at it, there were no C libraries. But now I see that +you have Objective C with source code, so that should +help. What would be particularly useful is, as with some of your other +APIs, you provide examples of what a generated token +should be, given specific inputs. + +On 5/1/2014 12:22 PM, Jamie Nicolson (???) wrote: +> Admin access (aka 2-legged OAuth) should work with an OAuth 2 Service +> Account. Can you try this procedure? I'll try to get it added to the +> documentation: +> +> Follow the instructions at +> https://developers.google.com/accounts/docs/OAuth2ServiceAccount to +> create a Service Account. You will download a private key in p12 +> format. Also note the Client ID and Email Address for the service account. +> +> Next, go into the Google Apps control panel at +> https://admin.google.com. Login as a domain administrator. Go to +> Security -> Advanced Settings -> Authentication -> Manage OAuth Client +> Access. You?re going to add an authorized API client. For client name, +> use the client ID of the service account client you created, e.g. +> 349847762461.apps.googleusercontent.com +> . For the scope, use +> "https://mail.google.com/" or +> "https://www.googleapis.com/auth/gmail.imap_admin" (more on this scope +> below). Hit Authorize, and it should show up as authorized for Email +> (Read/WriteSend). +> +> Now download an oauth2client library from +> https://developers.google.com/api-client-library/. +> Download the library and install it per the README (running +> easy_install...). +> +> The library knows how to generate an access token given your private +> key, client ID, and the account you?re trying to access. For +> service_account_name, you use the email address for your Service +> Account. Here?s sample python code to do this. +> +> #!/usr/bin/python +> +> import httplib2 +> import oauth2client.client +> +> pkey = +> open('/tmp/0426b5132da841d6de81950d55b82fbd57858ca7-privatekey.p12').read() +> creds = oauth2client.client.SignedJwtAssertionCredentials( +> service_account_name='349847762461@developer.gserviceaccount.com +> ', +> private_key=pkey, +> scope='https://mail.google.com/', +> prn='foo@bar.com ') +> +> creds.refresh(httplib2.Http()) +> +> print creds.access_token +> +> +> This prints an access token that can login to foo@bar.com +> , following the instructions for XOAUTH2 Gmail +> access at https://developers.google.com/gmail/xoauth2_protocol. +> +> Scopes: The normal scope https://mail.google.com/ will work, but if +> you use https://www.googleapis.com/auth/gmail.imap_admin, your IMAP +> connection will ignore user-specific settings, such as hiding folders +> from IMAP. +> +> +> On Wed, Apr 30, 2014 at 8:52 AM, Jeff McKay > wrote: +> +> Of course, 2-legged OAuth 1.0 has been "deprecated" for several +> years now. I think I heard Brandon mention once +> that it would not be killed until there is a replacement, since a +> lot of applications depend on it. I have experimented +> also with everything I can find on OAuth 2.0 and nothing works for +> admin access, or the documentation is insufficient +> for me to do it correctly. +> +> +> On 4/30/2014 7:34 AM, Pete Maclean wrote: +>> Jeff, +>> +>> I find your post very interesting because I have been trying on +>> and off for months to get OAuth 2 to work for Gmail for Google +>> Apps users via admin credentials -- without success. I do not +>> have the luxury of using OAuth 1 because I started only recently +>> and choose not to go to the trouble of implementing something +>> that is deprecated and likely to quickly become obsolete. I have +>> found the matter frustrating because of the lack of documentation +>> and because the problem is never a failure to obtain a token but +>> the failure of the token I get to work for IMAP authentication. +>> (Making OAuth 2 work for individual Gmail users was, by +>> comparison, a piece of cake.) +>> +>> I am gratified in particular to hear your call for detailed +>> documentation on the topic because it tends to confirm that I +>> have not simply missed something. +>> +>> Pete Maclean +>> +>> At 09:50 AM 4/30/2014, Jeff McKay wrote: +>>> I have used oauth 2 with Gmail and it works well for my +>>> purpose. I have seen the refresh token work several months after +>>> first obtaining it with no intervening use. To change the +>>> subject just a it, I wonder if Google could comment on the +>>> continuing +>>> use of oauth 1 with Gmail? Currently that is the only method I +>>> know that will allow me to grab Google Apps email data using +>>> only administrative credentials, i.e. the client secret. If +>>> there is a way to do that with oauth 2 I would appreciate detailed +>>> low level documentation (not a library function). But I sure +>>> hope that oauth 1 support is not going away anytime soon. +>>> +>>> On 4/29/2014 11:55 PM, Brandon Long wrote: +>>>> I'm not our expert on oauth, he's welcome to pipe up here in a +>>>> bit. +>>>> +>>>> I'd also point you to our documentation here, +>>>> https://developers.google.com/gmail/oauth_overview +>>>> which at +>>>> the least has working examples. +>>>> +>>>> +>>>> +>>>> On Tue, Apr 29, 2014 at 10:53 PM, Joshua Cranmer +>>>> > wrote: +>>>> +>>>> Hello, +>>>> +>>>> This is a message mostly directed to our fine Gmail server +>>>> maintainers who happen to be listening on this list, but I +>>>> think the issues here are relevant to other people who +>>>> would read this list and I value the feedback of others, so +>>>> I'm posting this publicly. +>>>> +>>>> Google's recent announcement +>>>> (>>> >) about its authentication polices, I have been led to +>>>> believe, is in part a plea for clients to implement +>>>> OAuth2.0-based authentication, and an intent to degrade +>>>> experience of users for clients that remain authenticating +>>>> based on common IMAP authentication passwords. I believe +>>>> that I have a duty to the users of Thunderbird to provide +>>>> them the best experience I can, but I believe that I also +>>>> have the responsibility to help ensure that this experience +>>>> can be easily had by both users of other email services and +>>>> other email clients; the OAuth 2.0 requirements as I have +>>>> found them put these responsibilities in conflict, and I do +>>>> not want to be in the position of having to choose which is +>>>> the more important one. +>>>> +>>>> So far, I've read the OAuth 2.0 RFC (6749), Google's +>>>> documentation on its OAuth 2.0 implementation [1], and even +>>>> the most recent draft of integrating OAuth into SASL +>>>> (), +>>>> which is what I view AUTH=XOAUTH2 in GMail's support as +>>>> being analogous to. I have not yet had time to fully digest +>>>> all the related emails about OAuth and SASL on the kitten +>>>> working group. There has also been a discussion on this on +>>>> Thunderbird's development mailing list +>>>> (>>> >), if you're interested in seeing some of the discussion +>>>> that has already been brought up and my or others' personal +>>>> views on the quality of OAuth 2.0. +>>>> +>>>> +>>>> Pieces of information: +>>>> * Client Identifier: This is required in the RFC, and it is +>>>> emphatic that this is neither secret nor is it to be used +>>>> alone for client authentication. The problem I have here is +>>>> the registration requirement: not that it is hard, but +>>>> rather that it introduces a discrimination on the part of +>>>> less common mail services that might wish to use this +>>>> mechanism, if clients have to register a separate +>>>> identifier for every such server. Given that such data will +>>>> evidently be public (e.g., checked into Thunderbird's +>>>> source code; even were it not, it's still a simple matter +>>>> to intercept all outgoing http/https requests and obtain +>>>> the id from that), and given that IMAP already defines an +>>>> ID call that is used by Thunderbird and other clients, if +>>>> the call is merely to indicate to the user the name of the +>>>> program wishing to obtain authorization, it seems to me +>>>> that deriving the client identifier from the ID call +>>>> somehow ought to be sufficient. +>>>> +>>>> +>>>> The client identifier here, from my understanding, is different +>>>> in that its an actual registered ID, not just some string. +>>>> Re-using the ID isn't going to work, plus, as a SASL mechanism, +>>>> its supposed to be contained and generic for use in multiple +>>>> protocols, so relying on a protocol specific passing of that +>>>> information was probably considered non-ideal. +>>>> +>>>> * Authorization endpoint: Arguably the biggest flaw in the +>>>> entire process is that I see no way to build the HTTPS +>>>> request to an OAuth authorization endpoint without +>>>> hardcoding specific values. +>>>> +>>>> * Token endpoint: Similar to the authorization endpoint, +>>>> the location of this is also left indeterminable. +>>>> +>>>> * Scope: It seems to me that this part, though technically +>>>> optional in the OAuth specification, is meant to basically +>>>> be required. For a single standardized name, it seems to me +>>>> that, given that SASL mandates that applications using it +>>>> describe a service name (cf. RFC 4422, section 4), it makes +>>>> sense to use this parameter (or some simple derivation +>>>> thereof) to use as the scope parameter. [2] +>>>> +>>>> * Refresh tokens: Google's documentation on this is vague. +>>>> At times, it implies that these last essentially forever +>>>> unless the user revokes access. At other times (and +>>>> apparently in experiments), it seems that these last only +>>>> for long-ish terms (e.g., a few weeks). This need to +>>>> "refresh" the refresh tokens would be troubling to me, +>>>> since it implies that I should be attempting to do more +>>>> things in my power to autofill the server's authentication +>>>> mechanisms without the user knowing, in accordance with the +>>>> user's wish to not have to retype passwords implied by +>>>> saving these credentials in our password manager. This sort +>>>> of action appears to be contrary to the goals of OAuth 2.0, +>>>> though. +>>>> +>>>> Providing this information via some sort of +>>>> autoconfigurable, autodiscoverable mechanism given only the +>>>> user's email and/or server name is, in my mind, absolutely +>>>> necessary before any attempt to implement this in +>>>> Thunderbird is started. While tying the records to DNS is +>>>> theoretically better since a chain of trust can be followed +>>>> with DANE, many clients may find it easier to look it up at +>>>> some well-known URL similar to how Thunderbird's +>>>> autoconfiguration mechanism already works. +>>>> +>>>> +>>>> Yes, as far as I know, there is no discoverability mechanism as +>>>> of yet. +>>>> +>>>> [1] Which is rather infuriating and confusing if all you're +>>>> trying to do is figure out how to use AUTH=XOAUTH2, as most +>>>> of the documentation is clearly geared towards usecases +>>>> specific to other APIs and not IMAP or SMTP access. +>>>> +>>>> +>>>> Ah, is this the documentation I pointed out above? Happy to +>>>> pass on any feedback to the docs folks. +>>>> +>>>> [2] On careful rereading of the SASL OAUTHBEARER draft it +>>>> seems that it is possible to automatically infer the +>>>> desired scope... but only by executing a AUTHENTICATE +>>>> command that fails, which is rather suboptimal workflow for +>>>> trying to develop client behavior in this regard. It means, +>>>> e.g., I can't wrap the OAUTH support in a generic SASL +>>>> provider mechanism and expect to have it pick up the +>>>> desired scope information. It's also suboptimal that the +>>>> information about scope is revealed but not any other hints +>>>> about how to go about requesting authorization. +>>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095009.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095009.22638.mbox:2,S new file mode 100644 index 00000000..20644439 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095009.22638.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From Pidgeot18 at verizon.net Mon Apr 28 21:24:15 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: <52D5D84D.6070208@verizon.net> +References: <52D5D84D.6070208@verizon.net> +Message-ID: <535F296F.9090807@verizon.net> + +On 1/14/2014 6:37 PM, Joshua Cranmer wrote: +> A recent concern of mine has been attempting to work out the grand +> messiness that is charsets in the context of reading and parsing email +> messages. I am not aware of any prior attempts to assess the practice +> of charsets in email, so I can only offer evidence from personal +> anecdote and culling of bug reports on open-source software, neither +> of which are a good source of information. I was wondering if anyone +> else on this list had access to a larger database of messages that +> they could check or have more specific generalities that are needed. + +In an attempt to put some qualitative numbers on the statistics here, I +ended up testing the largest body of RFC 822-style messages I could +think of that was publicly available: recently-posted Usenet messages. +While Usenet and the email aren't the same thing, I'd generally expect +Usenet to be slightly worse in passing around 8-bit messages, so it's at +least a useful proxy to see how bad the situation is for some things, +but not all (e.g., good luck drawing any conclusion about HTML email +charset questions). My findings I've posted on my blog at +, +complete with a list of some recommendations I've gleaned from the data set. + +Now, off to make it my personal mission to kill x-mac-croatian. :-) + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095010.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095010.22589.mbox:2,S new file mode 100644 index 00000000..d0283de5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095010.22589.mbox:2,S @@ -0,0 +1,124 @@ +MBOX-Line: From bill.shannon at ymail.com Mon May 25 23:31:45 2015 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +In-Reply-To: +References: <555FBFD2.1030800@ymail.com> <555FD141.1060300@ymail.com> + +Message-ID: <55641351.8030608@ymail.com> + +I'd like to be able to report the status of each message that was requested to +be copied. If one of the messages was not copied for some reason, and so is +left out of the returned list of source UIDs, how do I figure out which one that +was? Without a complete map from sequence number to UID, it seems that the +COPYUID response code for the simple COPY command may not be sufficient. + + +Brandon Long wrote on 05/23/2015 12:30 PM: +> +> I don't think you can guarantee that all of the messages you asked to be +> copied were, for example one of them may have been expunged by a different client. +> +> Not sure what the need to match the requested UIDs vs the source UIDs +> returned, but they may not match. +> +> Brandon +> +> On May 23, 2015 3:52 AM, "Alexey Melnikov" > wrote: +> +> Hi Bill, +> +> On 23 May 2015, at 02:00, Bill Shannon > wrote: +> +>> I *so* wish there were compatibility tests for servers, rather than "it +>> didn't break any clients so it must be good enough". :-) +>> +>> Ok, how about this. If I sort the original message numbers, and sort the +>> returned source and destination UIDs, the result will be one-to-one, +>> right? The first message number will correspond to the first source UID, +>> which will correspond to the first destination UID, right? And all three +>> sets will have exactly the same cardinality? +> +> Yes. I don't think it really matters in which order messages are copied, +> as long as the matching UIDs are returned correctly. +> +>> +>> Brandon Long wrote on 05/22/2015 05:17 PM: +>>> At least for Gmail, we always re-order the given set into sequence order +>>> (which is the same as uid order) before doing any operation. So, the +>>> source UIDs in COPYUID are in the order in which they were copied. +>>> +>>> Since a COPY in Gmail is the equivalent of adding a label to a message, +>>> the message may already have that label, so it may already be in the +>>> recipient mailbox. We always return the destination UIDs in the order +>>> which matches the source UID order, so in your example, source UID 1 is +>>> destination UID 2, and source UID 2 is destination UID 1. +>>> +>>> When APPEND'ing a duplicate message, we update the UID assigned to the +>>> original to be the newest UID in the mailbox (and that's returned with +>>> APPENDUID), since we found clients typically assumed that was the case +>>> and could get confused. +>>> +>>> We could have done this with COPY, I guess, but we didn't see any client +>>> issues in testing, so we left it this way since the performance is better. +>>> +>>> Brandon +>>> +>>> On Fri, May 22, 2015 at 4:46 PM, Bill Shannon >> > wrote: +>>> +>>> I'm unclear on the requirements around the COPY command and the COPYUID +>>> response code. +>>> +>>> Is there any guarantee that the order of messages in the COPY command is +>>> the order they'll appear in the destination mailbox? Or are they +>>> allowed to appear in any arbitrary order in the destination mailbox? +>>> (After any existing messages, of course.) +>>> +>>> RFC 4315 says of the COPYUID response: +>>> +>>> The source UID set is in the order the message(s) were copied; the +>>> destination UID set corresponds to the source UID set and is in +>>> the same order. +>>> +>>> Exactly what order is that? Is it the order in which the messages were +>>> mentioned in the COPY command? Is it the order they actually appear in +>>> the destination mailbox (assuming it can be different)? Or is it in +>>> some other undefined order? +>>> +>>> With Gmail I'm getting +>>> +>>> A1 COPY 1:2 dest +>>> A1 OK [COPYUID 123456 1:2 2,1] +>>> +>>> and +>>> +>>> A1 COPY 2,1 dest +>>> A1 OK [COPYUID 123456 1:2 2,1] +>>> +>>> The order of the source UIDs is unrelated to the order the messages +>>> are mentioned in the COPY command and unrelated to the order they +>>> appear in the destination mailbox. +>>> +>>> If I don't know the UIDs of the source messages, is there any way to +>>> determine which message was copied to which UID in the destination +>>> mailbox? +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095010.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095010.22595.mbox:2,S new file mode 100644 index 00000000..439d0d2a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095010.22595.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From janssen at parc.com Sat Mar 7 21:50:32 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FB3E1F.3020909@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> <8701.1425748438@parc.com> + <54FB3E1F.3020909@lavabitllc.com> +Message-ID: <25599.1425793832@parc.com> + +Ladar Levison wrote: + +> People like what they already know. + +Yep. + +> Myself included. Doesn't mean its the better choice. + +Yep. + +> A number of non-IETF blessed messaging protocols have already switched to JSON. + +I'll just note that "popular" and "correct" are not synonyms. + +> > Personally, I'd do everything in binary, but that's just me obsessing +> > about packet sizes. I'm thinking about designing a secure email +> > protocol built on CCNx (http://www.ccnx.org/), which provides digital +> > signatures, encryption, and router caching. There's no concept of +> > a "connection" at all, or a "mail server"; just messages. That's +> > the future. +> +> That sounds like JSON-RPC, only you've your encoding the +> requests/responses in binary instead of JSON. + +CCN is a peer-to-peer broadcast content-caching protocol, so there's no +"RPC call" from a client to a specific server which then sends a +response. The difference is somewhat like point-to-point versus +packet-switched CDN; instead of encrypting the channel the messages flow +on, the messages themselves are encrypted and attached to a unique +handle, and then just "handed out to passing strangers" for them to copy +and pass on to others (this is exactly what's happening in the +implementation of an SSL-encrypted TCP connection, of course). At some +point the receiver issues a call for that particular handle (which can +be different for each message), and anyone who has a copy sends it on. + +But what I'm doing is an MTA-to-MTA protocol; what you're looking at is +an MUA-MTA protocol, like IMAP. On the other hand, in my design the MUA +*is* the MTA, so perhaps there's no difference. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095010.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095010.22623.mbox:2,S new file mode 100644 index 00000000..d156ca88 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095010.22623.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From blong at google.com Wed Sep 3 13:23:58 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + <54062661.6020000@mozilla.com> + +Message-ID: + +On Wed, Sep 3, 2014 at 1:55 AM, Arnt Gulbrandsen +wrote: + +> On Tuesday, September 2, 2014 10:19:45 PM CEST, Andrew Sutherland wrote: +> +>> It appears Gmail may actually be doing this, which is great news! +>> +> +> WEBALERT is something gmail, and only gmail, does. I don't know what it +> means, but it does mean something other than the completely general ALERT. +> IMO WEBALERT is more usable from a client's point of view. +> +> What an unpleasant situation. + + +Its basically an ALERT which directs the client to a web page. Although +we've had free-form URLs in the error messages for years, this mechanism +makes it easier to actually parse the URL out. Its currently only used for +login errors related to our permission system, and was suggested by one of +our client partners. + +Its assumed the client would redirect the user to that webpage, ie HTTP 302 +style. One can imagine it being similar to implementing OAUTHBEARER where +the cilent would need an embedded webview to perform the oauth +authentication. It doesn't require an embedded webview like OAUTH, since +its not expected that the client needs to scrape information out of the +webview. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095010.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095010.22626.mbox:2,S new file mode 100644 index 00000000..5a4721e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095010.22626.mbox:2,S @@ -0,0 +1,140 @@ +MBOX-Line: From asuth at mozilla.com Fri Aug 29 17:43:16 2014 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + +Message-ID: <54011E24.4080209@mozilla.com> + +On 08/29/2014 04:53 PM, Brandon Long wrote: +> I certainly don't want to treat this list like a Gmail specific list, +> so it hasn't occurred to me to broadcast any of our changes to this +> list specifically. +> +> And we did reach out to our larger clients, assuming we knew who they +> were and how to reach out to them.... sending us the ID command is +> certainly helpful in that instance to know who are larger clients are. + +It doesn't need to be this list specifically. I'm fine with joining a +Gmail IMAP specific list or subscribing to a specific blog feed. It's +even fine if it's a read-only announcement list or blog with comments +turned off. Gmail is a significant player in the mail server space and +I don't think you'll hear a lot of complaints from people in the IMAP +space being kept too up-to-date. (Unless the 'status page' feed for +Gmail gets forwarded!) + + +> Unfortunately, the bad guys aren't waiting for the standards to be +> written. + +I want to reiterate that I understand this and strongly agree with +this. Compromise of a user's email account is an extremely serious +problem since not only is it used for private communication, it's also +the gateway to compromise of the user's other accounts and a means of +performing subsequent social engineering attacks on everyone they know +or could potentially know. + +My request is not that Google/Gmail slow down their protection of users, +just more provide more updates with ideally a little more detail. If +the announcement has to come after the change or the details need to be +a little nebulous, that's also okay. Just knowing that the automated +abuse-detection features are involved is useful, and hopefully doesn't +provide would-be attackers with information they hadn't already figured out. + +For example, we already explicitly detect the Gmail specific "NO +[ALERT]" cases of things like the following: +- Application-specific password required +- Your account is not enabled for IMAP use. +- IMAP access is disabled for your domain. +and want to better handle: +- Please log in via your web browser: +http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure) + +I believe this new failure adds another specialized error code (and +regrettably, we screw up here, mea culpa.) + +Knowing what the string would be, whether it's localized, etc. would be +handy. We do these detections to try and provide appropriately +localized error messages that might provide better context to the user +and differentiate between persistent failures and transient failures +(ex: NO [UNAVAILABLE]), although I should be clear these are +insufficiently researched hacks. I don't know if these strings are +actually localized based on the user's locale or if they're always +English and the URL is expected to do the localization fix-ups. + +It's definitely clear we did the wrong thing for gmail, and maybe in +general for ALERT, because even if there are other servers that might +use ALERT in ways that are annoying to users if done naively, it's +clearly not the case for gmail. At the bare minimum we will make sure +to detect and expose URLs in the errors in the future. + + +> Our abuse team is handling this, and so I'm not directly involved and +> don't know the specifics to your questions. I'll forward this to them +> to see what we can say. + +Thank you very much! + + +> I'm not really sure why the developer docs would link to the "how to +> avoid using this" support page... I guess I can suggest it. + +Apologies, I think I meant to link the page +https://developers.google.com/gmail/oauth_overview instead of its +child. (Its heading in the sidebar is "IMAP and SMTP" but the page is +"oauth_overview, which is how I got confused amongst my too many tabs.) + +I don't mean this in a "how to avoid using this" context. Mainly, I +think it would be handy if it conveyed something like: + +- If you don't use OAuth2, we will, to protect our users who are also +your users, require users not using 2-factor authentication to +explicitly enable support for plaintext logins via the Google Accounts +Settings page. Authentication will fail with a NO [ALERT] error that +links to the support page +https://support.google.com/accounts/answer/6010255?hl=en. + +The goal is that if a client developer has a user who runs up against +this problem, they can find some documentation on what's going on. And +if they're a new developer, they can be aware of the ramifications of +cutting corners with security. Importantly, they can do that during +their planning stage too, not just after they implement it. + +(And likewise on the support page side, linking to the XOAuth2 docs / +elaborating on what makes an app "less secure" and how they can address +it is also handy, just in that on the web it's not that hard to support +statements that might otherwise be interpreted as FUD. I've already used +the feedback mechanism to relay that, however.) + + +> Also, is the Gaia email app open source as well, ie is it something +> you can reasonably use OAUTH2 with today? + +Yes, the Gaia email app is open source[1]. And we are absolutely going +to implement this on trunk/master over the next few weeks. It was on +our to-do list before the blog post, its priority went way up after the +blog post, but unfortunately I made the wrong inferences from reading +the blog post and so its relative priority still ended up beneath +addressing some crasher blockers and other technical debt fires. + +My concern and interest in how this affects our already shipped apps is +because we are in the embarassing position where we are not currently +able to to easily update the core Firefox OS apps that ship on the +devices until a full Firefox OS upgrade version is released to phones +via an over-the-air update. Having more information lets us know how +much of a problem this will pose to users of shipped devices and how +much support can help affected users versus how hard we need to push on +getting mitigating patches and/or smaller over-the-air updates rolled out. + +As always, thanks for the quick response! +Andrew + + +1: And as of the last day or two our IMAP and SMTP protocols are now +built on whiteout-io's open source mail library underpinnings as +documented at http://emailjs.org/. Woo! (AKA a bunch of technical debt +has now been addressed! :) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095010.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095010.22629.mbox:2,S new file mode 100644 index 00000000..71f90a6d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095010.22629.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From spang at inboxapp.com Wed Jul 16 21:59:30 2014 +To: imap-protocol@u.washington.edu +From: Christine Spang +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: <874AA50791EC4A89B8989C2ABADF0B3E@gmail.com> +References: + + + <874AA50791EC4A89B8989C2ABADF0B3E@gmail.com> +Message-ID: + +Yeah, I thought about it a bit more and I don't think cross-account dedup +actually makes sense. For full message content / attachments I'm already +using content hashes to dedup the canonical store. + +Thanks for the input! + + +On Wed, Jul 16, 2014 at 8:00 PM, Hoa V. Dinh +wrote: + +> I?m not sure how much you would gain by reduplicating across accounts. +> One way you could try to de-duplicate could be to get a hash (sha1?) of +> the content of the email. +> +> -- +> Hoa V. Dinh +> +> On Wednesday, July 16, 2014 at 7:54 PM, Christine Spang wrote: +> +> Hi Saqib, +> +> Thanks for the quick response. +> +> I'm trying to maximally deduplicate Gmail messages amongst an (arbitrary) +> set of Gmail accounts synchronized locally. Seems like you can deduplicate +> within-account easily based on X-GM-MSGID, but cross-account deduplication +> is much harder. +> +> I'm using Gmail IMAP. +> +> --Christine +> +> On Wed, Jul 16, 2014 at 7:43 PM, Ali, Saqib wrote: +> +> Hello Christine, +> +> As far as I know: +> 1) X-GM-MSGID is not unique. +> 2) It is possible. +> 3) No (as far as i know) +> +> Can you tell us what you are planning to use the X-GM-MSGID for? +> +> Are you using IMAP or Gmail REST API to access the Inbox? +> +> Saqib +> http://hivemined.net +> +> On Wed, Jul 16, 2014 at 7:29 PM, Christine Spang +> wrote: +> +> I know that some of the Gmail IMAP devs are on this list, so might be a +> good place to ask a few questions about what assumptions one can make about +> X-GM-MSGID with Gmail IMAP. +> +> * Is X-GM-MSGID globally unique across all of Gmail? (I assume no, given +> sharding.) +> * Can the same message in different accounts have the same X-GM-MSGID? +> * Do X-GM-MSGID values associated with messages ever change? (Based on the +> Gmail API docs about messageId, seems not?) +> +> --Christine +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095010.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095010.22635.mbox:2,S new file mode 100644 index 00000000..f30909d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095010.22635.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From slusarz at curecanti.org Thu May 1 21:12:16 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: +References: <53608FE7.8090909@verizon.net> + + <5360FF8D.9000201@comaxis.com> + <20140430143517.743B37306E@mailwash38.pair.com> + <53611C4E.7030904@comaxis.com> + +Message-ID: <20140501221216.Horde.tVt3I3IxynGA-BHsdRqS5w6@bigworm.curecanti.org> + +Quoting "Jamie Nicolson (???)" : + +> This prints an access token that can login to foo@bar.com, following the +> instructions for XOAUTH2 Gmail access at +> https://developers.google.com/gmail/xoauth2_protocol. + +I reported a viral bug/typo on that page months ago, but looks like +it's still present. + +The sample client response is identified on that page as: + +user=someuser@example.com^Aauth=Bearer +vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg==^A^A (^A = ASCII 1) + +And the base64-encoded version of that is given as: + +dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB2RjlkZnQ0cW1UYzJOdmIzUmxj +a0JoZEhSaGRtbHpkR0V1WTI5dENnPT0BAQo= + +The problem is that decodes to this string: + +user=someuser@example.com^Aauth=Bearer +vF9dft4qmTc2Nvb3RlckBhdHRhdmlzdGEuY29tCg==^A^A + +The correct base64 representation is instead: + +dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlYXJlciB2RjlkZnQ0cW1UYzJOdmIzUmxj +a0JoZEhSaGRtbHpkR0V1WTI5dENnPT0BAQ== + + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095010.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095010.22638.mbox:2,S new file mode 100644 index 00000000..688cefea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095010.22638.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From imap at maclean.com Tue Apr 29 16:16:35 2014 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] FETCH order +Message-ID: + +I am working with a customer that wants some changes made to my IMAP +server to optimize the FETCHing of batches of full messages (such as +during mailbox syncs). Currently the server always returns messages +in ascending order by UID/MSN irrespective of the order in the FETCH +command. In the case of this customer, messages have to be retrieved +internally from one or more back ends and the time required to do +this can vary considerably from message to message. We want to +pipeline this retrieval so that those messages that can be retrieved +most quickly are returned to the client first. The result would be +that the client would receive the messages in an apparently random order. + +It is very clear that this is permitted by IMAP. It seems in the +spirit of the protocol and there is some text in the definition of +"sequence-set" that makes it explicit (although the way it is +expressed could be much improved). However this leaves us with one +concern. We observe that there exist clients that appear to only +ever send FETCH commands with sequence sets in ascending order and we +wonder if any of these would get messed up if they are sent the +message data in a different order. Does anyone have any experience with this? + +Thanks, + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22589.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22589.mbox:2,S new file mode 100644 index 00000000..fe650d35 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22589.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue May 26 10:07:15 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:55 2018 +Subject: [Imap-protocol] COPYUID message order +In-Reply-To: <55641351.8030608@ymail.com> +References: <555FBFD2.1030800@ymail.com> + + <555FD141.1060300@ymail.com> + + + <55641351.8030608@ymail.com> +Message-ID: <23e30726-1ae2-46da-abba-e50cdf1d3359@gulbrandsen.priv.no> + +Bill Shannon writes: +> I'd like to be able to report the status of each message that +> was requested to be copied. If one of the messages was not +> copied for some reason, and so is left out of the returned list +> of source UIDs, how do I figure out which one that was? Without +> a complete map from sequence number to UID, it seems that the +> COPYUID response code for the simple COPY command may not be +> sufficient. + +True. For that case you'll need to issue "FETCH ... UID" and then "COPY ... +target" (without waiting). When you have received tagged responses for +both, you know that your MSN-UID map is contains all the necessary UIDs and +you can process the COPYUID response code completely. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22595.mbox:2,S new file mode 100644 index 00000000..b3ea17e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22595.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From tjs at psaux.com Sat Mar 7 22:56:09 2015 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FAEB94.4070508@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> +Message-ID: <54FBF289.3010202@psaux.com> + +On 03/07/2015 04:14 AM, Ladar Levison wrote: +> I thought this might be a good list to ask a simple, but admittedly +> subjective question: If Mark Crispin was creating IMAP from scratch, in +> the world of today, would it still be a line based protocol like it was +> with RFC3501, or would he have gone with something more stateless, like +> a JSON-RPC paradigm, like JMAP? + +He'd make changes, but knowing Mark, they would probably not be what +you'd expect. + +IMAP 2 came after the advent of RPC mechanisms, and if Mark had wanted +to use one, he would have. Since I've been around IMAP, CORBA, XML-RPC, +BEEP, "REST", and others have come into and out of vogue. Mark didn't +use them. He also didn't use SMTP-style dot stuffing. + +Swapping in JSON in place of s-expressions is reasonable, so maybe we'd +see less parens and more square brackets and commas Yet IMAP has a +strange grammar that looks like s-expressions, parses as s-expressions, +yet is spelled out byte for byte without free whitespace, a hallmark of +JSON and s expressions. So it's hard to say what Mark would have done. + +IMAP had counted-length strings way before HTTP, and IMAP uses them more +pervasively. IMAP 2 also happened after early RPC protocols had started +to appear. I think if Mark had intended a non-line protocol underneath +IMAP, again, he could have. + +I recall Mark commenting once about the reality of TCP connections being +a lot less reliable than when the protocol was invented. If he was +starting over, he'd have to take that into account. I don't know how +he'd solve it. I don't know how I'd solve it. + +The LIST and LSUB commands were a compromise nobody loves. Mark +commented on one occasion that he'd figured out The Right Thing, an +s-expression notation instead of OS-style paths. This would have helped. + +Mark once said he might have implemented folders purely with flags, but +he ran out of flag bits in messages in one of the older (pre-mbx) +mailbox formats. If you're trying to do archeology in this, it was in +the context of Gmail being different than other implementations, and I +think the discussion was on this list. + +Sometimes, what others viewed as warts, Mark viewed as features. One +reason for this is that Mark's server supported a bunch of different +mailbox formats with varying levels of feature support. (No reliable +UIDs on MH mailboxes, classic Unix mbox performance is terrible, etc.) +Mark would oppose things that couldn't be implemented in those, so UW +was never going to get CONDSTORE or QRESYNC support. A MOVE command was +routinely opposed by Mark, in part because it was essentially impossible +for correct implementation in most of the per-file mailbox formats, but +also because he just didn't get Trash folders. + +And I thought it odd that his imapd reported all your files in your home +directory as mailboxes, each with a single message, but that's how Mark +wanted it (as I learned the hard way). + +This is a long-winded way of saying, if Mark were creating IMAP today, +he'd still be worrying about how to implement it on TOPS-20, just in +case. Because that's who he was. + +Tim + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22623.mbox:2,S new file mode 100644 index 00000000..363bae69 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22623.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From angel at 16bits.net Wed Sep 3 14:01:39 2014 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?=C1ngel_Gonz=E1lez?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <03710d62-c480-4224-b33a-96f979ebd1a3@gulbrandsen.priv.no> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <1409774552.1122.3.camel@16bits.net> + <03710d62-c480-4224-b33a-96f979ebd1a3@gulbrandsen.priv.no> +Message-ID: <1409778099.1122.7.camel@16bits.net> + +Arnt Gulbrandsen wrote: +> FWIW, there already is a language extension for IMAP. My name is on the +> RFC, even. I think Ned Freed has an implementation, but I haven't exactly +> been swamped by comments from would-be implementers. +> +> I didn't implement it myself. To be frank I only finished the RFC because +> it was the easiest way out. Sometimes "ship and discard" is easier than any +> other alternative. +> +> Arnt + +My bad. The proper thing would then be to use rfc 5255, of course. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22626.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22626.mbox:2,S new file mode 100644 index 00000000..886361fe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22626.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Aug 30 14:02:13 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <54011E24.4080209@mozilla.com> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> +Message-ID: <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + +This makes me sad. + +On Saturday, August 30, 2014 2:43:16 AM CEST, Andrew Sutherland wrote: +> For example, we already explicitly detect the Gmail specific +> "NO [ALERT]" cases of things like the following: +> - Application-specific password required +> - Your account is not enabled for IMAP use. +> - IMAP access is disabled for your domain. + +As if 5530 didn't exist. + +> and want to better handle: +> - Please log in via your web browser: +> http://support.google.com/mail/accounts/bin/answer.py?answer=78754 +> (Failure) + +There is a response code for that, WEBALERT. Not standard, but at least +it's better than trying to have a client parsing human-readable text. + +> I believe this new failure adds another specialized error code +> (and regrettably, we screw up here, mea culpa.) +> +> Knowing what the string would be, whether it's localized, etc. +> would be handy. We do these detections to try and provide +> appropriately localized error messages that might provide better +> context to the user and differentiate between persistent +> failures and transient failures (ex: NO [UNAVAILABLE]), although +> I should be clear these are insufficiently researched hacks. + +The point of 5530 and that registry was that clients should not need to do +such things. IMO Google screws up by not defininig response codes, not you. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22629.mbox:2,S new file mode 100644 index 00000000..5f448ed7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22629.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jul 16 22:47:45 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: <874AA50791EC4A89B8989C2ABADF0B3E@gmail.com> +References: + + + <874AA50791EC4A89B8989C2ABADF0B3E@gmail.com> +Message-ID: <88532138-054a-4ed8-89aa-ffd72f89a677@gulbrandsen.priv.no> + +On Thursday, July 17, 2014 5:00:08 AM CEST, Hoa V. Dinh wrote: +> I?m not sure how much you would gain by reduplicating across accounts. + +You haven't seen how googleapps users can cc fourteen teams ;) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22635.mbox:2,S new file mode 100644 index 00000000..7ffe0a0c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22635.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From imap at maclean.com Fri May 2 06:05:49 2014 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: +References: <53608FE7.8090909@verizon.net> + + <5360FF8D.9000201@comaxis.com> + <20140430143517.743B37306E@mailwash38.pair.com> + <53611C4E.7030904@comaxis.com> + +Message-ID: + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22638.mbox:2,S new file mode 100644 index 00000000..3c97f885 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22638.mbox:2,S @@ -0,0 +1,111 @@ +MBOX-Line: From Pidgeot18 at verizon.net Tue Apr 29 22:53:43 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +Message-ID: <53608FE7.8090909@verizon.net> + +Hello, + +This is a message mostly directed to our fine Gmail server maintainers +who happen to be listening on this list, but I think the issues here are +relevant to other people who would read this list and I value the +feedback of others, so I'm posting this publicly. + +Google's recent announcement +() +about its authentication polices, I have been led to believe, is in part +a plea for clients to implement OAuth2.0-based authentication, and an +intent to degrade experience of users for clients that remain +authenticating based on common IMAP authentication passwords. I believe +that I have a duty to the users of Thunderbird to provide them the best +experience I can, but I believe that I also have the responsibility to +help ensure that this experience can be easily had by both users of +other email services and other email clients; the OAuth 2.0 requirements +as I have found them put these responsibilities in conflict, and I do +not want to be in the position of having to choose which is the more +important one. + +So far, I've read the OAuth 2.0 RFC (6749), Google's documentation on +its OAuth 2.0 implementation [1], and even the most recent draft of +integrating OAuth into SASL +(), which is +what I view AUTH=XOAUTH2 in GMail's support as being analogous to. I +have not yet had time to fully digest all the related emails about OAuth +and SASL on the kitten working group. There has also been a discussion +on this on Thunderbird's development mailing list +(), +if you're interested in seeing some of the discussion that has already +been brought up and my or others' personal views on the quality of OAuth +2.0. + + +Pieces of information: +* Client Identifier: This is required in the RFC, and it is emphatic +that this is neither secret nor is it to be used alone for client +authentication. The problem I have here is the registration requirement: +not that it is hard, but rather that it introduces a discrimination on +the part of less common mail services that might wish to use this +mechanism, if clients have to register a separate identifier for every +such server. Given that such data will evidently be public (e.g., +checked into Thunderbird's source code; even were it not, it's still a +simple matter to intercept all outgoing http/https requests and obtain +the id from that), and given that IMAP already defines an ID call that +is used by Thunderbird and other clients, if the call is merely to +indicate to the user the name of the program wishing to obtain +authorization, it seems to me that deriving the client identifier from +the ID call somehow ought to be sufficient. + +* Authorization endpoint: Arguably the biggest flaw in the entire +process is that I see no way to build the HTTPS request to an OAuth +authorization endpoint without hardcoding specific values. + +* Token endpoint: Similar to the authorization endpoint, the location of +this is also left indeterminable. + +* Scope: It seems to me that this part, though technically optional in +the OAuth specification, is meant to basically be required. For a single +standardized name, it seems to me that, given that SASL mandates that +applications using it describe a service name (cf. RFC 4422, section 4), +it makes sense to use this parameter (or some simple derivation thereof) +to use as the scope parameter. [2] + +* Refresh tokens: Google's documentation on this is vague. At times, it +implies that these last essentially forever unless the user revokes +access. At other times (and apparently in experiments), it seems that +these last only for long-ish terms (e.g., a few weeks). This need to +"refresh" the refresh tokens would be troubling to me, since it implies +that I should be attempting to do more things in my power to autofill +the server's authentication mechanisms without the user knowing, in +accordance with the user's wish to not have to retype passwords implied +by saving these credentials in our password manager. This sort of action +appears to be contrary to the goals of OAuth 2.0, though. + +Providing this information via some sort of autoconfigurable, +autodiscoverable mechanism given only the user's email and/or server +name is, in my mind, absolutely necessary before any attempt to +implement this in Thunderbird is started. While tying the records to DNS +is theoretically better since a chain of trust can be followed with +DANE, many clients may find it easier to look it up at some well-known +URL similar to how Thunderbird's autoconfiguration mechanism already works. + +[1] Which is rather infuriating and confusing if all you're trying to do +is figure out how to use AUTH=XOAUTH2, as most of the documentation is +clearly geared towards usecases specific to other APIs and not IMAP or +SMTP access. + +[2] On careful rereading of the SASL OAUTHBEARER draft it seems that it +is possible to automatically infer the desired scope... but only by +executing a AUTHENTICATE command that fails, which is rather suboptimal +workflow for trying to develop client behavior in this regard. It means, +e.g., I can't wrap the OAUTH support in a generic SASL provider +mechanism and expect to have it pick up the desired scope information. +It's also suboptimal that the information about scope is revealed but +not any other hints about how to go about requesting authorization. + +-- +Joshua Cranmer +Thunderbird contributor +DXR coauthor + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095011.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095011.22641.mbox:2,S new file mode 100644 index 00000000..3004ca11 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095011.22641.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From asuth at mozilla.com Fri Mar 7 07:05:48 2014 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Is it okay/common for servers to ignore commands + sent before the greeting? (gmail seems to?) +Message-ID: <5319E04C.3070105@mozilla.com> + +We're seeing a problem in the Firefox OS Gaia e-mail app where if we +manage to send our "A1 CAPABILITY" request to the gmail IMAP server +(initial-TLS imaps/993) before it sends its greeting, it acts like it +never hears the request. Our not-so-clever state machine hangs until +the connection times out. + +There's more details and pcap dumps at https://bugzil.la/977867#c21 but +basically we sometimes manage to get that request in the same TCP packet +as the conclusion of TLS setup. The TCP/TLS packet with the server +greeting ACKs that packet, so it's quite conceivable our request is +managing to fall into a very specific edge case/race. + +The spec does not seem to have a final word on this, although the state +flow diagram in http://tools.ietf.org/html/rfc3501#section-3 does seem +to imply that it's bad form to not wait for the server greeting. While +I think it's clear that for gmail we need to wait for the server +greeting, I am wondering if this is just an unusual complication/bug of +gmail's likely more complicated server architecture. I'd expect a +server intentionally being pedantic to issue a NO or BAD request... + +Thoughts / has anyone seen servers that intentionally or accidentally +get upset in cases like this? + +Thanks, +Andrew + +PS: We do have a lot of round-trip fat in our connection establishment, +so it's not the end of the world to explicitly wait for the server +greeting in all cases, but if it's just gmail (and we appropriately add +some improved timeout logic that triggers a persistent quirk for the +server), I could see it make sense to continue not waiting for the greeting. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095012.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095012.22595.mbox:2,S new file mode 100644 index 00000000..4099c640 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095012.22595.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Mar 8 03:34:58 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <25599.1425793832@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> <8701.1425748438@parc.com> + <54FB3E1F.3020909@lavabitllc.com> <25599.1425793832@parc.com> +Message-ID: <42edfcce-7703-4d8f-8c50-03f1704335dd@gulbrandsen.priv.no> + +Bill Janssen writes: +> But what I'm doing is an MTA-to-MTA protocol; what you're looking at is +> an MUA-MTA protocol, like IMAP. On the other hand, in my design the MUA +> *is* the MTA, so perhaps there's no difference. + +In Ladar's case there ought not to be any difference... I hereby define +end-to-end encrypted mail that's encrypted by the sender rather than a +third party, is handled by zero or more third parties en route, and is then +decrypted at the last possible moment before the point where the recipient +wants to thread or search the mail. + +Lots of people disagree with that definion, and want to keep the mail +encrypted at the point where it's threaded and searched. Folly, say I. Do +that, and either the processing or the encryption has to be hobbled. + +In your design, the thread and seach functions are moved very close to the +human recipient, which may be expensive in terms of bandwidth and storage, +but for Ladar, that's just the price of proper encryption. It's not a +drawback of your design when compared to other possibilities that also +encrypt properly. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095012.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095012.22623.mbox:2,S new file mode 100644 index 00000000..153f8fd7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095012.22623.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 3 14:18:19 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <1409778099.1122.7.camel@16bits.net> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <1409774552.1122.3.camel@16bits.net> + <03710d62-c480-4224-b33a-96f979ebd1a3@gulbrandsen.priv.no> + <1409778099.1122.7.camel@16bits.net> +Message-ID: + +Except that 5255 doesn't solve the problem at hand, it just changes it from +"what to do before ENABLE" into "what to do before LANGUAGE". + +I did that a few weeks ago: Spent several days writing code only to +discover that I had solved one problem and now had another, exactly like +the first ;) + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095012.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095012.22629.mbox:2,S new file mode 100644 index 00000000..6f0d6f6e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095012.22629.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From blong at google.com Thu Jul 17 15:00:32 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: <88532138-054a-4ed8-89aa-ffd72f89a677@gulbrandsen.priv.no> +References: + + + <874AA50791EC4A89B8989C2ABADF0B3E@gmail.com> + <88532138-054a-4ed8-89aa-ffd72f89a677@gulbrandsen.priv.no> +Message-ID: + +Every message on delivery to the user's mailbox will have a Delivered-To +and Received header for that delivery, so they won't be de-dupable at that +level without being able to look at specific sub-sets of the message. + +De-duplication of attachments can be useful, though then you need to be +able to extract them and correctly rehydrate to get the full message (if +you're providing access to full messages). + +Brandon + + +On Wed, Jul 16, 2014 at 10:47 PM, Arnt Gulbrandsen wrote: + +> On Thursday, July 17, 2014 5:00:08 AM CEST, Hoa V. Dinh wrote: +> +>> I?m not sure how much you would gain by reduplicating across accounts. +>> +> +> You haven't seen how googleapps users can cc fourteen teams ;) +> +> Arnt +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095012.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095012.22635.mbox:2,S new file mode 100644 index 00000000..7dd3fcd8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095012.22635.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From jjmckay at comaxis.com Fri May 23 18:03:33 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +Message-ID: <537FEFE5.4040103@comaxis.com> + +Has something changed with how Gmail handles the hierarchy character in +the CREATE command? +I am sure I had this working at one point, but now: + +CREATE "TopLevelFolder/" + +generates "NO hierarchy character ignored" + +If I try to do: + +CREATE "TopLevelFolder/Subfolder" + +it is accepted but of course I just get a single folder with a slash in +the middle. What is the secret? + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095012.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095012.22638.mbox:2,S new file mode 100644 index 00000000..06c571ae --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095012.22638.mbox:2,S @@ -0,0 +1,142 @@ +MBOX-Line: From blong at google.com Tue Apr 29 23:55:20 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <53608FE7.8090909@verizon.net> +References: <53608FE7.8090909@verizon.net> +Message-ID: + +I'm not our expert on oauth, he's welcome to pipe up here in a bit. + +I'd also point you to our documentation here, +https://developers.google.com/gmail/oauth_overview which at the least has +working examples. + + + +On Tue, Apr 29, 2014 at 10:53 PM, Joshua Cranmer wrote: + +> Hello, +> +> This is a message mostly directed to our fine Gmail server maintainers who +> happen to be listening on this list, but I think the issues here are +> relevant to other people who would read this list and I value the feedback +> of others, so I'm posting this publicly. +> +> Google's recent announcement ( blogspot.co.uk/2014/04/new-security-measures-will-affect-older.html>) +> about its authentication polices, I have been led to believe, is in part a +> plea for clients to implement OAuth2.0-based authentication, and an intent +> to degrade experience of users for clients that remain authenticating based +> on common IMAP authentication passwords. I believe that I have a duty to +> the users of Thunderbird to provide them the best experience I can, but I +> believe that I also have the responsibility to help ensure that this +> experience can be easily had by both users of other email services and +> other email clients; the OAuth 2.0 requirements as I have found them put +> these responsibilities in conflict, and I do not want to be in the position +> of having to choose which is the more important one. +> +> So far, I've read the OAuth 2.0 RFC (6749), Google's documentation on its +> OAuth 2.0 implementation [1], and even the most recent draft of integrating +> OAuth into SASL ( 14>), which is what I view AUTH=XOAUTH2 in GMail's support as being +> analogous to. I have not yet had time to fully digest all the related +> emails about OAuth and SASL on the kitten working group. There has also +> been a discussion on this on Thunderbird's development mailing list (< +> https://mail.mozilla.org/pipermail/tb-planning/2014-April/003236.html>), +> if you're interested in seeing some of the discussion that has already been +> brought up and my or others' personal views on the quality of OAuth 2.0. +> +> +> Pieces of information: +> * Client Identifier: This is required in the RFC, and it is emphatic that +> this is neither secret nor is it to be used alone for client +> authentication. The problem I have here is the registration requirement: +> not that it is hard, but rather that it introduces a discrimination on the +> part of less common mail services that might wish to use this mechanism, if +> clients have to register a separate identifier for every such server. Given +> that such data will evidently be public (e.g., checked into Thunderbird's +> source code; even were it not, it's still a simple matter to intercept all +> outgoing http/https requests and obtain the id from that), and given that +> IMAP already defines an ID call that is used by Thunderbird and other +> clients, if the call is merely to indicate to the user the name of the +> program wishing to obtain authorization, it seems to me that deriving the +> client identifier from the ID call somehow ought to be sufficient. +> + +The client identifier here, from my understanding, is different in that its +an actual registered ID, not just some string. Re-using the ID isn't going +to work, plus, as a SASL mechanism, its supposed to be contained and +generic for use in multiple protocols, so relying on a protocol specific +passing of that information was probably considered non-ideal. + + +> * Authorization endpoint: Arguably the biggest flaw in the entire process +> is that I see no way to build the HTTPS request to an OAuth authorization +> endpoint without hardcoding specific values. +> +> * Token endpoint: Similar to the authorization endpoint, the location of +> this is also left indeterminable. +> +> * Scope: It seems to me that this part, though technically optional in the +> OAuth specification, is meant to basically be required. For a single +> standardized name, it seems to me that, given that SASL mandates that +> applications using it describe a service name (cf. RFC 4422, section 4), it +> makes sense to use this parameter (or some simple derivation thereof) to +> use as the scope parameter. [2] +> +> * Refresh tokens: Google's documentation on this is vague. At times, it +> implies that these last essentially forever unless the user revokes access. +> At other times (and apparently in experiments), it seems that these last +> only for long-ish terms (e.g., a few weeks). This need to "refresh" the +> refresh tokens would be troubling to me, since it implies that I should be +> attempting to do more things in my power to autofill the server's +> authentication mechanisms without the user knowing, in accordance with the +> user's wish to not have to retype passwords implied by saving these +> credentials in our password manager. This sort of action appears to be +> contrary to the goals of OAuth 2.0, though. +> +> Providing this information via some sort of autoconfigurable, +> autodiscoverable mechanism given only the user's email and/or server name +> is, in my mind, absolutely necessary before any attempt to implement this +> in Thunderbird is started. While tying the records to DNS is theoretically +> better since a chain of trust can be followed with DANE, many clients may +> find it easier to look it up at some well-known URL similar to how +> Thunderbird's autoconfiguration mechanism already works. +> + +Yes, as far as I know, there is no discoverability mechanism as of yet. + + +> [1] Which is rather infuriating and confusing if all you're trying to do +> is figure out how to use AUTH=XOAUTH2, as most of the documentation is +> clearly geared towards usecases specific to other APIs and not IMAP or SMTP +> access. +> + +Ah, is this the documentation I pointed out above? Happy to pass on any +feedback to the docs folks. + +[2] On careful rereading of the SASL OAUTHBEARER draft it seems that it is +> possible to automatically infer the desired scope... but only by executing +> a AUTHENTICATE command that fails, which is rather suboptimal workflow for +> trying to develop client behavior in this regard. It means, e.g., I can't +> wrap the OAUTH support in a generic SASL provider mechanism and expect to +> have it pick up the desired scope information. It's also suboptimal that +> the information about scope is revealed but not any other hints about how +> to go about requesting authorization. +> +> -- +> Joshua Cranmer +> Thunderbird contributor +> DXR coauthor +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095012.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095012.22641.mbox:2,S new file mode 100644 index 00000000..11285848 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095012.22641.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From blong at google.com Fri Mar 7 07:34:40 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Is it okay/common for servers to ignore + commands sent before the greeting? (gmail seems to?) +In-Reply-To: <5319E04C.3070105@mozilla.com> +References: <5319E04C.3070105@mozilla.com> +Message-ID: + +Is this behavior new? + +We're just finishing the rollout of a new IMAP proxy, its possible its a +bug in the new impl. + +Brandon +On Mar 7, 2014 7:06 AM, "Andrew Sutherland" wrote: + +> We're seeing a problem in the Firefox OS Gaia e-mail app where if we +> manage to send our "A1 CAPABILITY" request to the gmail IMAP server +> (initial-TLS imaps/993) before it sends its greeting, it acts like it never +> hears the request. Our not-so-clever state machine hangs until the +> connection times out. +> +> There's more details and pcap dumps at https://bugzil.la/977867#c21 but +> basically we sometimes manage to get that request in the same TCP packet as +> the conclusion of TLS setup. The TCP/TLS packet with the server greeting +> ACKs that packet, so it's quite conceivable our request is managing to fall +> into a very specific edge case/race. +> +> The spec does not seem to have a final word on this, although the state +> flow diagram in http://tools.ietf.org/html/rfc3501#section-3 does seem to +> imply that it's bad form to not wait for the server greeting. While I +> think it's clear that for gmail we need to wait for the server greeting, I +> am wondering if this is just an unusual complication/bug of gmail's likely +> more complicated server architecture. I'd expect a server intentionally +> being pedantic to issue a NO or BAD request... +> +> Thoughts / has anyone seen servers that intentionally or accidentally get +> upset in cases like this? +> +> Thanks, +> Andrew +> +> PS: We do have a lot of round-trip fat in our connection establishment, so +> it's not the end of the world to explicitly wait for the server greeting in +> all cases, but if it's just gmail (and we appropriately add some improved +> timeout logic that triggers a persistent quirk for the server), I could see +> it make sense to continue not waiting for the greeting. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095012.22645.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095012.22645.mbox:2,S new file mode 100644 index 00000000..bc226513 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095012.22645.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From no263 at dpmms.cam.ac.uk Thu Feb 20 08:25:53 2014 +To: imap-protocol@u.washington.edu +From: Nicolas Ojeda Bar +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] MUTF7, UTF8, and Unicode flags +Message-ID: + +Dear List, + +I am trying to implement an IMAP4rev1 client correctly, and was a +little lost with respect to the use of MUTF7 and more generally how +unicode works with respect to IMAP. I am writing so maybe someone more +experienced can correct my misunderstandings. + +1. First of all, the page + seems to +indicate that mailboxes names must be encoded/decoded into MUTF7 when +talking to the server. Period. Now, if the client happens to receive a +name that contains a byte that does not fit in 7 bits, then it must +automatically consider that name to be encoded in UTF8, in which case +the MUTF7 decoding is not necessary. + +2. Is the same true for Flags? I did a little experimenting with Gmail +and it seemed to be encoding flags with MUTF7 (but I am not 100% sure +about this)... In general, are flags supposed to be encoded in any +particular manner? + +I am sure I will have more questions as I progress, but if I could +understand these two points I would be happy already. + +Thanks a lot! + +Best wishes, +Nicolas + diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22595.mbox:2,S new file mode 100644 index 00000000..de1ebc7a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From janssen at parc.com Sun Mar 8 09:13:04 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FBF289.3010202@psaux.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> +Message-ID: <7164.1425831184@parc.com> + +Messages in files is itself kind of old-school. There's still a place +for MUA/MDA separation, but perhaps the MDA should just be an SQL or +NoSQL database; dump all the messages in MySQL. Then the "access +protocol" would simply be the appropriate set of queries for whatever +the client is trying to achieve. The DB schema would define the protocol. + +Triggers in the DB could do the thread calculation. + +And let the DB guys solve the intermittent connection problems :-). +Oracle, for instance, has a "Mobile Server" product that synchonizes a +local cache on a mobile device with a remote Oracle DB, including SSL +encryption on the sync connection, and data compression. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22623.mbox:2,S new file mode 100644 index 00000000..d2131309 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22623.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From angel at 16bits.net Wed Sep 3 16:03:42 2014 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?=C1ngel_Gonz=E1lez?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <1409774552.1122.3.camel@16bits.net> + <03710d62-c480-4224-b33a-96f979ebd1a3@gulbrandsen.priv.no> + <1409778099.1122.7.camel@16bits.net> + +Message-ID: <1409785422.1122.9.camel@16bits.net> + +Arnt Gulbrandsen wrote: +> Except that 5255 doesn't solve the problem at hand, it just changes it from +> "what to do before ENABLE" into "what to do before LANGUAGE". +> +> I did that a few weeks ago: Spent several days writing code only to +> discover that I had solved one problem and now had another, exactly like +> the first ;) +> +> Arnt + +What do you mean? The client should send LANGUAGE as the first command +(that is, if they want translated messages) so the only problem would be +if the server greeting is a BYE (IP banned or exhausted resources). +The best way seems to attempt mapping them to rfc5530 codes. The second +is a clear UNAVAILABLE, while for the former there are several not +exactly matching ones: NOPERM, AUTHENTICATIONFAILED, PRIVACYREQUIRED. + +Regards + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22629.mbox:2,S new file mode 100644 index 00000000..390eb40a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22629.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From blong at google.com Thu Jul 17 15:05:19 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: +References: +Message-ID: + +On Wed, Jul 16, 2014 at 7:29 PM, Christine Spang wrote: + +> I know that some of the Gmail IMAP devs are on this list, so might be a +> good place to ask a few questions about what assumptions one can make about +> X-GM-MSGID with Gmail IMAP. +> +> * Is X-GM-MSGID globally unique across all of Gmail? (I assume no, given +> sharding.) +> + +No. + + +> * Can the same message in different accounts have the same X-GM-MSGID? +> + +Yes, though fairly unlikely. + + +> * Do X-GM-MSGID values associated with messages ever change? (Based on the +> Gmail API docs about messageId, seems not?) +> + +Only in the case of a complete account re-build, which is exceedingly rare. + Maybe 100 times in the history of Gmail? And given the current message +store, probably not likely to happen every again (but never say never). + For the API, maybe we should have a UIDVALIDITY equivalent just in case. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22635.mbox:2,S new file mode 100644 index 00000000..8566c0d0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22635.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From nicolson at google.com Fri May 23 18:16:35 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: <537FEFE5.4040103@comaxis.com> +References: <537FEFE5.4040103@comaxis.com> +Message-ID: + +This behavior hasn't changed. Your second example is the way to go, and it +seems to work for me: + +a create "foo/bar" +a OK Success +a list "" "*" +[...] +* LIST (\Noselect \HasChildren) "/" "foo" +* LIST (\HasNoChildren) "/" "foo/bar" +a OK Success + + +On Fri, May 23, 2014 at 6:03 PM, Jeff McKay wrote: + +> Has something changed with how Gmail handles the hierarchy character in +> the CREATE command? +> I am sure I had this working at one point, but now: +> +> CREATE "TopLevelFolder/" +> +> generates "NO hierarchy character ignored" +> +> If I try to do: +> +> CREATE "TopLevelFolder/Subfolder" +> +> it is accepted but of course I just get a single folder with a slash in +> the middle. What is the secret? +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22638.mbox:2,S new file mode 100644 index 00000000..cf309f33 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22638.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Apr 30 00:44:02 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <53608FE7.8090909@verizon.net> +References: <53608FE7.8090909@verizon.net> +Message-ID: <91126e57-0707-4038-9696-dda82a1f7aae@gulbrandsen.priv.no> + +> * Authorization endpoint: Arguably the biggest flaw in the +> entire process is that I see no way to build the HTTPS request +> to an OAuth authorization endpoint without hardcoding specific +> values. + ++1 on this. + +> * Refresh tokens: Google's documentation on this is vague. At +> times, it implies that these last essentially forever unless the +> user revokes access. At other times (and apparently in +> experiments), it seems that these last only for long-ish terms +> (e.g., a few weeks). + +Both are sort of true: Every time you use the refresh token you restart the +clock. + +You may look at it like this: The access token is short-lived and often +exposed on the wire. But if snooped, the snooper has only brief access and +cannot extend the access period. The refresh token is exposed less often, +but is valid for a long time. It's like a client-specific revocable +subpassword. + +I implemented it and quited liked the behaviour. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22641.mbox:2,S new file mode 100644 index 00000000..365deac4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22641.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From jkt at flaska.net Fri Mar 7 08:01:49 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?Is_it_okay/common_for_servers_to_i?= + =?iso-8859-1?q?gnore_commands_sent_before_the_greeting=3F_=28gmail?= + =?iso-8859-1?q?_seems_to=3F=29?= +In-Reply-To: <5319E04C.3070105@mozilla.com> +References: <5319E04C.3070105@mozilla.com> +Message-ID: + +On Friday, 7 March 2014 16:05:48 CEST, Andrew Sutherland wrote: +> We're seeing a problem in the Firefox OS Gaia e-mail app where +> if we manage to send our "A1 CAPABILITY" request to the gmail +> IMAP server (initial-TLS imaps/993) before it sends its +> greeting, it acts like it never hears the request. Our +> not-so-clever state machine hangs until the connection times +> out. + +Interesting. What my client is doing is patiently waiting for the initial +response and checking whether the capability list is passed in there as a +response code. The same for the tagged OK for the STARTTLS. + +I am wondering whether you are deliberately trading bandwidth for latency, +and whether you have some measurements showing that sending the CAPABILITY +speculatively is beneficial. This is something which I haven't thought +about, and if you have already measured this, I would like to, er, "be +isnpired" :) and do it this way as well. + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22645.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22645.mbox:2,S new file mode 100644 index 00000000..a77e0708 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22645.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Feb 20 09:10:01 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] MUTF7, UTF8, and Unicode flags +In-Reply-To: <> +Message-ID: <57f94285-8e26-4eb1-9556-826fde4edd89@gulbrandsen.priv.no> + +I suggest that if the IMAP server advertises RFC6855 support you use that, +if not you just use UTF8 for both mailbox names and flags (ie. exactly as +6855, but undeclared). If/when you run into problems you add mUTF7 support. +If you're lucky you can avoid mUTF7 ;) + +I can provide an account on a 6855-capable server if you want to test that. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095013.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095013.22648.mbox:2,S new file mode 100644 index 00000000..ceffc289 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095013.22648.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From jazzo72 at gmail.com Thu Jan 9 00:38:55 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: <1386416422.25962.56660581.73973518@webmail.messagingengine.com> +References: + + + <1386389242.20171.56591329.4EBEE69A@webmail.messagingengine.com> + <8ec5b37c-1444-44be-b328-7ce0a0851e7e@email.android.com> + <1386416422.25962.56660581.73973518@webmail.messagingengine.com> +Message-ID: + +I found a new strange behavior, look at this response: + +25 FETCH (X-GM-MSGID 1278960432827658851 UID 5460 RFC822.SIZE 2532936 +RFC822 {0} + +Maybe the file on the server is corrupted? +I will try to get it by Gmail website and I will give you more info about +it. +But it could be really 0? + + + + + + +-- +Davide Gullo +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22595.mbox:2,S new file mode 100644 index 00000000..95127c19 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22595.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From brong at fastmail.fm Mon Mar 9 06:27:41 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <7164.1425831184@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> +Message-ID: <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + +On Mon, Mar 9, 2015, at 03:13 AM, Bill Janssen wrote: +> Messages in files is itself kind of old-school. There's still a place +> for MUA/MDA separation, but perhaps the MDA should just be an SQL or +> NoSQL database; dump all the messages in MySQL. Then the "access +> protocol" would simply be the appropriate set of queries for whatever +> the client is trying to achieve. The DB schema would define the +> protocol. + +So this is pretty much what JMAP is actually, it's a data model query +and update protocol which is designed around batch operations (and batch +queries) to reduce chattyness. + +> Triggers in the DB could do the thread calculation. + +Roughly what I'm doing for the non-Gmail case in the JMAP proxy (which +is sqlite3 backed) where I generate an ID from the envelope +datastructure, and then do a messageid lookup on the In-Reply-To (cheap +and nasty implementation, a better one would be what we do in Cyrus) + +https://github.com/jmapio/jmap-perl/blob/master/JMAP/ImapDB.pm#L279 + +https://github.com/brong/cyrus-imapd/blob/07381525b6dcaa57fb1f9110ffec83d3618a0b96/imap/message.c#L3036 + +> And let the DB guys solve the intermittent connection problems :-). +> Oracle, for instance, has a "Mobile Server" product that synchonizes a +> local cache on a mobile device with a remote Oracle DB, including SSL +> encryption on the sync connection, and data compression. + +The problem is, DB protocols are pretty chatty. And you need to solve +authencation too. + +Seriously, I think we've pretty much done what you're suggesting in +JMAP, but we've solved the latency problems that chatty protocols have +when you don't have a nice short piece of solid copper between you and +the server as well. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22623.mbox:2,S new file mode 100644 index 00000000..89235a1e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22623.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 3 23:10:05 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <1409785422.1122.9.camel@16bits.net> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <1409774552.1122.3.camel@16bits.net> + <03710d62-c480-4224-b33a-96f979ebd1a3@gulbrandsen.priv.no> + <1409778099.1122.7.camel@16bits.net> + + <1409785422.1122.9.camel@16bits.net> +Message-ID: <09c251b8-ba35-476e-a3d2-1e352c0ce58f@gulbrandsen.priv.no> + +The problem is: What it do if there's a problem, the description includes +UTF8, and the client hasn't indicated via ENABLE that it can handle UTF in +human-readable text. + +The revised problem is: What it do if there's a problem, the description +includes UTF8, and the client hasn't indicated via LANGUAGE that it can +handle UTF in human-readable text. + +Not much difference. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22629.mbox:2,S new file mode 100644 index 00000000..0291ee29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22629.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From docbook.xml at gmail.com Thu Jul 17 15:12:42 2014 +To: imap-protocol@u.washington.edu +From: "Ali, Saqib" +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail IMAP and X-GM-MSGID +In-Reply-To: +References: + + + <874AA50791EC4A89B8989C2ABADF0B3E@gmail.com> + <88532138-054a-4ed8-89aa-ffd72f89a677@gulbrandsen.priv.no> + +Message-ID: + +rehydrate-- i like that! :) + +Saqib Ali +http://hivemined.net + + +On Thu, Jul 17, 2014 at 3:00 PM, Brandon Long wrote: + +> Every message on delivery to the user's mailbox will have a Delivered-To +> and Received header for that delivery, so they won't be de-dupable at that +> level without being able to look at specific sub-sets of the message. +> +> De-duplication of attachments can be useful, though then you need to be +> able to extract them and correctly rehydrate to get the full message (if +> you're providing access to full messages). +> +> Brandon +> +> +> +> On Wed, Jul 16, 2014 at 10:47 PM, Arnt Gulbrandsen < +> arnt@gulbrandsen.priv.no> wrote: +> +>> On Thursday, July 17, 2014 5:00:08 AM CEST, Hoa V. Dinh wrote: +>> +>>> I'm not sure how much you would gain by reduplicating across accounts. +>>> +>> +>> You haven't seen how googleapps users can cc fourteen teams ;) +>> +>> Arnt +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22635.mbox:2,S new file mode 100644 index 00000000..32939a1b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22635.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From nicolson at google.com Fri May 23 18:19:07 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: +References: <537FEFE5.4040103@comaxis.com> + +Message-ID: + +Or are you talking about how it shows up in the Gmail web UI? + + +On Fri, May 23, 2014 at 6:16 PM, Jamie Nicolson (???) +wrote: + +> This behavior hasn't changed. Your second example is the way to go, and it +> seems to work for me: +> +> a create "foo/bar" +> a OK Success +> a list "" "*" +> [...] +> * LIST (\Noselect \HasChildren) "/" "foo" +> * LIST (\HasNoChildren) "/" "foo/bar" +> a OK Success +> +> +> On Fri, May 23, 2014 at 6:03 PM, Jeff McKay wrote: +> +>> Has something changed with how Gmail handles the hierarchy character in +>> the CREATE command? +>> I am sure I had this working at one point, but now: +>> +>> CREATE "TopLevelFolder/" +>> +>> generates "NO hierarchy character ignored" +>> +>> If I try to do: +>> +>> CREATE "TopLevelFolder/Subfolder" +>> +>> it is accepted but of course I just get a single folder with a slash in +>> the middle. What is the secret? +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22638.mbox:2,S new file mode 100644 index 00000000..5568caac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22638.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From andris.reinman at gmail.com Wed Apr 30 00:53:03 2014 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <53608FE7.8090909@verizon.net> +References: <53608FE7.8090909@verizon.net> +Message-ID: <58DD71AD-BA0F-43AD-BEC7-19C658060275@gmail.com> + +Hi, + +> This is a message mostly directed to our fine Gmail server maintainers who happen to be listening on this list, but I think the issues here are relevant to other people who would read this list and I value the feedback of others, so I'm posting this publicly. + + +The Oauth2.0 issue is beginning to be more important as Gmail is not the only large IMAP server supporting AUTH=XOAUTH2 by now, notable others would be Outlook.com/Hotmail and Mail.ru. + +I found this when I created a simple script to fetch IMAP capabilities from a list of "well known? services which can be found here: http://capa.kreata.ee/ + +Best regards, +Andris Reinman + + +On 30.04.2014, at 8:53, Joshua Cranmer wrote: + +> Hello, +> +> This is a message mostly directed to our fine Gmail server maintainers who happen to be listening on this list, but I think the issues here are relevant to other people who would read this list and I value the feedback of others, so I'm posting this publicly. +> +> Google's recent announcement () about its authentication polices, I have been led to believe, is in part a plea for clients to implement OAuth2.0-based authentication, and an intent to degrade experience of users for clients that remain authenticating based on common IMAP authentication passwords. I believe that I have a duty to the users of Thunderbird to provide them the best experience I can, but I believe that I also have the responsibility to help ensure that this experience can be easily had by both users of other email services and other email clients; the OAuth 2.0 requirements as I have found them put these responsibilities in conflict, and I do not want to be in the position of having to choose which is the more important one. +> +> So far, I've read the OAuth 2.0 RFC (6749), Google's documentation on its OAuth 2.0 implementation [1], and even the most recent draft of integrating OAuth into SASL (), which is what I view AUTH=XOAUTH2 in GMail's support as being analogous to. I have not yet had time to fully digest all the related emails about OAuth and SASL on the kitten working group. There has also been a discussion on this on Thunderbird's development mailing list (), if you're interested in seeing some of the discussion that has already been brought up and my or others' personal views on the quality of OAuth 2.0. +> +> +> Pieces of information: +> * Client Identifier: This is required in the RFC, and it is emphatic that this is neither secret nor is it to be used alone for client authentication. The problem I have here is the registration requirement: not that it is hard, but rather that it introduces a discrimination on the part of less common mail services that might wish to use this mechanism, if clients have to register a separate identifier for every such server. Given that such data will evidently be public (e.g., checked into Thunderbird's source code; even were it not, it's still a simple matter to intercept all outgoing http/https requests and obtain the id from that), and given that IMAP already defines an ID call that is used by Thunderbird and other clients, if the call is merely to indicate to the user the name of the program wishing to obtain authorization, it seems to me that deriving the client identifier from the ID call somehow ought to be sufficient. +> +> * Authorization endpoint: Arguably the biggest flaw in the entire process is that I see no way to build the HTTPS request to an OAuth authorization endpoint without hardcoding specific values. +> +> * Token endpoint: Similar to the authorization endpoint, the location of this is also left indeterminable. +> +> * Scope: It seems to me that this part, though technically optional in the OAuth specification, is meant to basically be required. For a single standardized name, it seems to me that, given that SASL mandates that applications using it describe a service name (cf. RFC 4422, section 4), it makes sense to use this parameter (or some simple derivation thereof) to use as the scope parameter. [2] +> +> * Refresh tokens: Google's documentation on this is vague. At times, it implies that these last essentially forever unless the user revokes access. At other times (and apparently in experiments), it seems that these last only for long-ish terms (e.g., a few weeks). This need to "refresh" the refresh tokens would be troubling to me, since it implies that I should be attempting to do more things in my power to autofill the server's authentication mechanisms without the user knowing, in accordance with the user's wish to not have to retype passwords implied by saving these credentials in our password manager. This sort of action appears to be contrary to the goals of OAuth 2.0, though. +> +> Providing this information via some sort of autoconfigurable, autodiscoverable mechanism given only the user's email and/or server name is, in my mind, absolutely necessary before any attempt to implement this in Thunderbird is started. While tying the records to DNS is theoretically better since a chain of trust can be followed with DANE, many clients may find it easier to look it up at some well-known URL similar to how Thunderbird's autoconfiguration mechanism already works. +> +> [1] Which is rather infuriating and confusing if all you're trying to do is figure out how to use AUTH=XOAUTH2, as most of the documentation is clearly geared towards usecases specific to other APIs and not IMAP or SMTP access. +> +> [2] On careful rereading of the SASL OAUTHBEARER draft it seems that it is possible to automatically infer the desired scope... but only by executing a AUTHENTICATE command that fails, which is rather suboptimal workflow for trying to develop client behavior in this regard. It means, e.g., I can't wrap the OAUTH support in a generic SASL provider mechanism and expect to have it pick up the desired scope information. It's also suboptimal that the information about scope is revealed but not any other hints about how to go about requesting authorization. +> +> -- +> Joshua Cranmer +> Thunderbird contributor +> DXR coauthor +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22641.mbox:2,S new file mode 100644 index 00000000..281a0cdf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22641.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From tss at iki.fi Fri Mar 7 09:27:30 2014 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Is it okay/common for servers to ignore + commands sent before the greeting? (gmail seems to?) +In-Reply-To: +References: <5319E04C.3070105@mozilla.com> + +Message-ID: <4012E0DA-1598-47CA-804E-9ED75CE22327@iki.fi> + +On 7.3.2014, at 18.01, Jan Kundr?t wrote: + +> On Friday, 7 March 2014 16:05:48 CEST, Andrew Sutherland wrote: +>> We're seeing a problem in the Firefox OS Gaia e-mail app where if we manage to send our "A1 CAPABILITY" request to the gmail IMAP server (initial-TLS imaps/993) before it sends its greeting, it acts like it never hears the request. Our not-so-clever state machine hangs until the connection times out. +> +> Interesting. What my client is doing is patiently waiting for the initial response and checking whether the capability list is passed in there as a response code. + +I think the ideal solution would be for everyone to start sending the CAPABILITY in the initial reply. Dovecot v2.x actually sends only a truncated CAPABILITY reply that contains only the extensions relevant to client before login. If you want to be sure not to break any clients, you could still do that and send the full capabilities list as a reply to the CAPABILITY command. The clients that understand the initial reply will also understand the updated OK [CAPABILITY ..] reply to LOGIN/AUTHENTICATE, while those that don't understand it will just request the CAPABILITY command directly. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22645.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22645.mbox:2,S new file mode 100644 index 00000000..d4b2efcb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22645.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From jkt at flaska.net Thu Feb 20 09:53:21 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] MUTF7, UTF8, and Unicode flags +In-Reply-To: <57f94285-8e26-4eb1-9556-826fde4edd89@gulbrandsen.priv.no> +References: <57f94285-8e26-4eb1-9556-826fde4edd89@gulbrandsen.priv.no> +Message-ID: + +On Thursday, 20 February 2014 18:10:01 CEST, Arnt Gulbrandsen wrote: +> just use UTF8 for mailbox names + +Seriously? This is going to break stuff. You might argue that people +creating mailboxes named "&U,BTFw-" are unlikely :), but it's a valid +string both in UTF-8 and in the modified UTF-7 encoding -- except that the +two meanings are very different. + +Implementing imap-utf7 is not hard, and chances are that there are +libraries which one can easily use in almost every language. Sending UTF-8 +where the standard is absolutely clear on what to do is just wrong. + +As for the flags/keywords, there's unfortunately no standard for that. +Thunerbird is using modified UTF-7 for them [1]. There's a proposal [2] for +using the METADATA extension for mapping ASCII keywords to Unicode names, +but I don't think it was ever standardized (and perhaps not implemented, +either). + +Cheers, +Jan + +[1] https://bugzilla.mozilla.org/show_bug.cgi?id=650623 +[2] +http://dovecot.2317879.n4.nabble.com/Gmail-like-labels-three-years-later-td41128.html + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095014.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095014.22648.mbox:2,S new file mode 100644 index 00000000..eff37c57 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095014.22648.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From blong at google.com Mon Jan 13 16:20:29 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: +References: + + + <1386389242.20171.56591329.4EBEE69A@webmail.messagingengine.com> + <8ec5b37c-1444-44be-b328-7ce0a0851e7e@email.android.com> + <1386416422.25962.56660581.73973518@webmail.messagingengine.com> + +Message-ID: + +If you want to send me the user off line, I can take a look. + +Brandon + + +On Thu, Jan 9, 2014 at 12:38 AM, Davide Gullo wrote: + +> I found a new strange behavior, look at this response: +> +> 25 FETCH (X-GM-MSGID 1278960432827658851 UID 5460 RFC822.SIZE 2532936 +> RFC822 {0} +> +> Maybe the file on the server is corrupted? +> I will try to get it by Gmail website and I will give you more info about +> it. +> But it could be really 0? +> +> +> +> +> +> +> -- +> Davide Gullo +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22595.mbox:2,S new file mode 100644 index 00000000..1957c0fb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22595.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From janssen at parc.com Mon Mar 9 08:35:29 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> +Message-ID: <6506.1425915329@parc.com> + +Bron Gondwana wrote: + +> > And let the DB guys solve the intermittent connection problems :-). +> > Oracle, for instance, has a "Mobile Server" product that synchonizes a +> > local cache on a mobile device with a remote Oracle DB, including SSL +> > encryption on the sync connection, and data compression. +> +> The problem is, DB protocols are pretty chatty. And you need to solve +> authencation too. + +I'm guessing that's why Oracle has a sync protocol instead of a remote +DB protocol. The mobile client works against an on-phone copy of the +DB, using a variant of Oracle's full SQL -- the documentation says it is +SQLite compatible -- and then there's a minimal sync protocol which +keeps that in step with the full DB back on the server. Interesting +question as to whether the on-phone copy is a subset or not. + +> Seriously, I think we've pretty much done what you're suggesting in +> JMAP, but we've solved the latency problems that chatty protocols have +> when you don't have a nice short piece of solid copper between you and +> the server as well. + +Sure, JMAP's great, but it's very email-specific. Seems to me this is a +problem which lots of other domains have as well. So: take JMAP, skip +the enumeration of email object types, generalize the getFooUpdates to +get/putTableUpdates, add some ability to specify per-table +parameterization which says things like how much of the remote table you +need locally, how frequently it needs to be updated, how precious +on-device changes are, etc., and you've got a general protocol. + +That way, when you want to add a new object type, say Conference Rooms, +you don't need to change the protocol. + +Bill + +> +> Bron. +> +> -- +> Bron Gondwana +> brong@fastmail.fm +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22623.mbox:2,S new file mode 100644 index 00000000..6d976c3c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22623.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From nicolson at google.com Tue Sep 9 19:12:33 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] client support for UTF8=ACCEPT? +Message-ID: + +We're looking to support the UTF8=ACCEPT extension from RFC 6855 in Gmail's +IMAP server. Anyone know of clients that support it? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22629.mbox:2,S new file mode 100644 index 00000000..1b154c86 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22629.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From jazzo72 at gmail.com Tue Jul 29 13:26:07 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +Message-ID: + +Hi, +I got a very strange behavior on an account on Gmail. +A lot of them have the size wrong, look at the attached log (especially the +bold lines). +Then the parser obviously return an error. + + +29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS RFC822.SIZE +ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE RFC822) +29.07.14 17:07 >>> >>>>>>> end send >>>>>> +29.07.14 17:07 <<< <<<<<<< read <<<<<< +*29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2}* +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +.... +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< ) +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +*29.07.14 17:07 <<< * 2 FETCH (X-GM-MSGID 1345153544278287346 UID 7853 +RFC822.SIZE 5433 BODY[HEADER.FIELDS (References)] {151}* +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +...... +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< ) +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< 5 OK Success + + + +-- +Davide Gullo +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22635.mbox:2,S new file mode 100644 index 00000000..c0608b87 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22635.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Fri May 23 21:09:43 2014 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: <537FEFE5.4040103@comaxis.com> +References: <537FEFE5.4040103@comaxis.com> +Message-ID: <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + +On 23 May 2014 at 18:03, Jeff McKay wrote: + +> Has something changed with how Gmail handles the hierarchy character +> in the CREATE command? I am sure I had this working at one point, but +> now: +> +> CREATE "TopLevelFolder/" +> +> generates "NO hierarchy character ignored" + +The server would appear to be in error. See RFC3501, section 6.3.3 ("The +Create Command"): + + If the mailbox name is suffixed with the server's hierarchy + separator character (as returned from the server by a LIST + command), this is a declaration that the client intends to create + mailbox names under this name in the hierarchy. Server + implementations that do not require this declaration MUST ignore + the declaration. In any case, the name created is without the + trailing hierarchy delimiter. + +This seems pretty unambiguous to me, but no doubt there's an alternative +reading I haven't considered (there usually is). I assume GMail actually +*does* support submailboxes (I don't personally use it)? + +Interestingly, the example for section 6.3.3 is an almost exact match to your +report: + + Example: + C: A003 CREATE owatagusiam/ + S: A003 OK CREATE completed + +Note that there is a reverse condition to this where a server may report a +mailbox with a trailing hierarchy delimiter as part of a LIST response; I +confess I've never understood exactly what that means (Exchange used to +do it and may still do so) - Mark Crispin once explained it to me as having +some meaning related to a test for existence, but I couldn't grasp what he +meant. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Real newspaper headlines from U.S. papers: + TRAFFIC DEAD RISE SLOWLY + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22638.mbox:2,S new file mode 100644 index 00000000..a2028f96 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22638.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From imap at maclean.com Wed Apr 30 06:28:51 2014 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] FETCH order +In-Reply-To: <14D026C7F297AD44AC82578DD818CDD0344BC64F31@TUS1XCHEVSPIN35 + .SYMC.SYMANTEC.COM> +References: <201404292317.s3TNHSVi029561@mxout12.cac.washington.edu> + <14D026C7F297AD44AC82578DD818CDD0344BC64F31@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +Message-ID: + +Hi Neil, + +That helps a lot. Indeed it is highly comforting. Thank you! + +Pete + +At 07:46 PM 4/29/2014, Neil Hunsperger wrote: +>Hi Pete, +> +>Symantec Desktop Email Encryption's IMAP proxy reorders the FETCH +>results that it returns to Windows and Mac IMAP clients to allow for +>more efficient batching of decryption. The product has worked this +>way for 6 or so years and I've heard no issues caused by the re-ordering. +> +>I hope this helps, +>-Neil +> +>-----Original Message----- +>From: Imap-protocol +>[mailto:imap-protocol-bounces@mailman13.u.washington.edu] On Behalf +>Of Pete Maclean +>Sent: Tuesday, April 29, 2014 4:17 PM +>To: imap-protocol@u.washington.edu +>Subject: [Imap-protocol] FETCH order +> +>I am working with a customer that wants some changes made to my IMAP +>server to optimize the FETCHing of batches of full messages (such as +>during mailbox syncs). Currently the server always returns messages +>in ascending order by UID/MSN irrespective of the order in the FETCH +>command. In the case of this customer, messages have to be retrieved +>internally from one or more back ends and the time required to do +>this can vary considerably from message to message. We want to +>pipeline this retrieval so that those messages that can be retrieved +>most quickly are returned to the client first. The result would be +>that the client would receive the messages in an apparently random order. +> +>It is very clear that this is permitted by IMAP. It seems in the +>spirit of the protocol and there is some text in the definition of +>"sequence-set" that makes it explicit (although the way it is +>expressed could be much improved). However this leaves us with one +>concern. We observe that there exist clients that appear to only +>ever send FETCH commands with sequence sets in ascending order and we +>wonder if any of these would get messed up if they are sent the +>message data in a different order. Does anyone have any experience with this? +> +>Thanks, +> +>Pete Maclean +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22641.mbox:2,S new file mode 100644 index 00000000..bce0da56 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22641.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From asuth at mozilla.com Fri Mar 7 16:17:47 2014 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Is it okay/common for servers to ignore + commands sent before the greeting? (gmail seems to?) +In-Reply-To: +References: <5319E04C.3070105@mozilla.com> + +Message-ID: <531A61AB.9090406@mozilla.com> + +Aha! Yes, the behavior does appear to be new and is manifesting in +older releases that didn't experience this problem before*. QA filed +the bug with a log indicating this problem on 2/27 on +https://bugzil.la/977867, but it's conceivable this was happening before +that time. + +Thanks! +Andrew + +* But that doesn't necessarily guarantee things given the high rate of +platform change and platform backports occurring for Firefox OS. In +this case our IMAP implementation is unchanged and our TCPSocket +implementation on top of Necko/NSS is unchanged. I assume NSS changes +and gets uplifts. + +On 03/07/2014 10:34 AM, Brandon Long wrote: +> +> Is this behavior new? +> +> We're just finishing the rollout of a new IMAP proxy, its possible its +> a bug in the new impl. +> +> Brandon +> +> On Mar 7, 2014 7:06 AM, "Andrew Sutherland" > wrote: +> +> We're seeing a problem in the Firefox OS Gaia e-mail app where if +> we manage to send our "A1 CAPABILITY" request to the gmail IMAP +> server (initial-TLS imaps/993) before it sends its greeting, it +> acts like it never hears the request. Our not-so-clever state +> machine hangs until the connection times out. +> +> There's more details and pcap dumps at +> https://bugzil.la/977867#c21 but basically we sometimes manage to +> get that request in the same TCP packet as the conclusion of TLS +> setup. The TCP/TLS packet with the server greeting ACKs that +> packet, so it's quite conceivable our request is managing to fall +> into a very specific edge case/race. +> +> The spec does not seem to have a final word on this, although the +> state flow diagram in http://tools.ietf.org/html/rfc3501#section-3 +> does seem to imply that it's bad form to not wait for the server +> greeting. While I think it's clear that for gmail we need to wait +> for the server greeting, I am wondering if this is just an unusual +> complication/bug of gmail's likely more complicated server +> architecture. I'd expect a server intentionally being pedantic to +> issue a NO or BAD request... +> +> Thoughts / has anyone seen servers that intentionally or +> accidentally get upset in cases like this? +> +> Thanks, +> Andrew +> +> PS: We do have a lot of round-trip fat in our connection +> establishment, so it's not the end of the world to explicitly wait +> for the server greeting in all cases, but if it's just gmail (and +> we appropriately add some improved timeout logic that triggers a +> persistent quirk for the server), I could see it make sense to +> continue not waiting for the greeting. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22645.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22645.mbox:2,S new file mode 100644 index 00000000..1b9c63b3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22645.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Feb 20 10:02:40 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] MUTF7, UTF8, and Unicode flags +In-Reply-To: +References: <57f94285-8e26-4eb1-9556-826fde4edd89@gulbrandsen.priv.no> + +Message-ID: + +On Thursday, February 20, 2014 6:53:21 PM CEST, Jan Kundr?t wrote: +> Seriously? This is going to break stuff. You might argue that +> people creating mailboxes named "&U,BTFw-" are unlikely :), but +> it's a valid string both in UTF-8 and in the modified UTF-7 +> encoding -- except that the two meanings are very different. + +Actually, my thinking was (and is) that there's a fighting chance that +before a new client being written today is ready for production use, UTF8 +might be all you need. + +Mailboxes named &U,BTw- are not a major concern. An obvious problem, but +hardly a pressing problem. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22648.mbox:2,S new file mode 100644 index 00000000..571e4cb4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22648.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From tss at iki.fi Tue Jan 14 13:32:15 2014 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Login referrals resurrection? +Message-ID: + +I started wondering today if it would be a good idea to bring back the login referrals, only a little bit changed from their original behavior. I guess originally they didn't really get used because few clients supported them and proxying works for everyone. But nowadays many larger installations have IMAP proxies and backends in multiple data centers and even though everything works, doing unnecessary proxying between data centers increases latency and often also costs money. Using DNS to give the correct data center IP based on the source IP might work for some users, but that's somewhat difficult to set up and likely won't work very well for the increasing number of mobile users. So what if we got the most popular clients to implement support for login referrals and use them? + +Problem 1: LOGIN tagged OK [REFERRAL] reply conflicts between Lemonade-required OK [CAPABILITY] reply. + +So either one of them needs to be moved to an untagged OK reply. RFC 2221 only talks about tagged OK reply, while RFC 5550 makes it possible to use untagged OK reply. But I'm a bit worried about changing this now, there may well be clients that handle only the tagged OK [CAPABILITY] while there are almost no clients that handle [REFERRAL] anywhere. So my preferred server reply would be: + +* OK [REFERRAL imap://user;AUTH=*;us1.imap.example.com/] Use this server for decreased latency +a OK [CAPABILITY ...] Logged in. + +Problem 2: RFC 2221 specified OK [REFERRAL] to mean that user's mailboxes aren't on this server, but some shared mailboxes are. + +Instead now the OK [REFERRAL] should simply be a suggestion to the client to connect to the specified server to get better latency, but it would work just as well to just ignore it and keep using the current server. In fact the client likely shouldn't reconnect at all, but just create all future connections using the referral's server. If the referral server ever fails, the client should connect back to the original server. + +Does anyone else think this would be worth maybe writing a new updated RFC2221bis and trying to convince client developers to implement it? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095015.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095015.22651.mbox:2,S new file mode 100644 index 00000000..d128c6ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095015.22651.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From jjmckay at comaxis.com Thu Dec 5 13:56:50 2013 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Kerio and authenticate plain +Message-ID: <52A0F6A2.8090108@comaxis.com> + +I am trying to use authenticate plain with a Kerio imap server and not +having much luck. +The idea is to use the admin name and password in order to log in to a +user account and +access the user's folders. This appears to work but in fact I get +access to the admin folders, +not the user's. + +Basically I am constructing a buffer that looks like: +00 +(the 0 being a binary byte=x00.) I base64 encode this, issue +"authenticate plain" wait for the prompt, +then send the encoded data. Server responds authentication successful, +however I am logged into +the admin account, not the user. + +I have used this code successfully with other imap servers that support +auth plain, so I know it +works. Is there something screwy about Kerio? + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22595.mbox:2,S new file mode 100644 index 00000000..82bd9a01 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22595.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Mon Mar 9 12:05:30 2015 +To: imap-protocol@u.washington.edu +From: "Hoa V. DINH" +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <6506.1425915329@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> +Message-ID: + +By using a generic DB protocol to sync emails, it sounds like it would be easy to break your email database consistency. +It would also add a big constraints with the choice of implementation of the storage of the emails on server side and client side. + +There was also a mention of using a binary protocol in this thread. +I think using human readable text protocol is still a very good idea since it makes it easier to debug just by logging input/output of the protocol. +I?ve used a lot this way of debugging things: for IMAP, SMTP and (unrelated but for) HTTP requests. + +-- +Hoa V. DINH + + +On Monday, March 9, 2015 at 8:35 AM, Bill Janssen wrote: + +> Bron Gondwana wrote: +> +> > > And let the DB guys solve the intermittent connection problems :-). +> > > Oracle, for instance, has a "Mobile Server" product that synchonizes a +> > > local cache on a mobile device with a remote Oracle DB, including SSL +> > > encryption on the sync connection, and data compression. +> > > +> > +> > +> > The problem is, DB protocols are pretty chatty. And you need to solve +> > authencation too. +> > +> +> +> I'm guessing that's why Oracle has a sync protocol instead of a remote +> DB protocol. The mobile client works against an on-phone copy of the +> DB, using a variant of Oracle's full SQL -- the documentation says it is +> SQLite compatible -- and then there's a minimal sync protocol which +> keeps that in step with the full DB back on the server. Interesting +> question as to whether the on-phone copy is a subset or not. +> +> > Seriously, I think we've pretty much done what you're suggesting in +> > JMAP, but we've solved the latency problems that chatty protocols have +> > when you don't have a nice short piece of solid copper between you and +> > the server as well. +> > +> +> +> Sure, JMAP's great, but it's very email-specific. Seems to me this is a +> problem which lots of other domains have as well. So: take JMAP, skip +> the enumeration of email object types, generalize the getFooUpdates to +> get/putTableUpdates, add some ability to specify per-table +> parameterization which says things like how much of the remote table you +> need locally, how frequently it needs to be updated, how precious +> on-device changes are, etc., and you've got a general protocol. +> +> That way, when you want to add a new object type, say Conference Rooms, +> you don't need to change the protocol. +> +> Bill +> +> > +> > Bron. +> > +> > -- +> > Bron Gondwana +> > brong@fastmail.fm (mailto:brong@fastmail.fm) +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> > http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> > +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22623.mbox:2,S new file mode 100644 index 00000000..7feb3e20 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22623.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Tue Sep 9 19:56:10 2014 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] client support for UTF8=ACCEPT? +In-Reply-To: +References: +Message-ID: <540FBDCA.5991.9ED0725@David.Harris.pmail.gen.nz> + +On 9 Sep 2014 at 19:12, Jamie Nicolson wrote: + +> We're looking to support the UTF8=ACCEPT extension from RFC 6855 in +> Gmail's IMAP server. Anyone know of clients that support it? + +It's well up on my to-do list, but I don't at the moment. + +Mind you, Pegasus Mail is a bit of a niche product these days, so this +probably doesn't help you a lot. + +My 2c? Since any competent mail client already has extensive internal +support for UTF-8, extending that to work with RFC6855-compliant servers +shouldn't be much of an effort for any developer. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Real book titles from history (really!): + "A Toddler's Guide to the Rubber Industry". + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22629.mbox:2,S new file mode 100644 index 00000000..85ec615d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22629.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From blong at google.com Tue Jul 29 14:28:10 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: +Message-ID: + +Which size is wrong? The literal? Or the RFC822.SIZE? And you know its +wrong based on what other information? + +We're going to need more information to understand the issue. + +Brandon + + +On Tue, Jul 29, 2014 at 1:26 PM, Davide Gullo wrote: + +> Hi, +> I got a very strange behavior on an account on Gmail. +> A lot of them have the size wrong, look at the attached log (especially +> the bold lines). +> Then the parser obviously return an error. +> +> +> 29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS RFC822.SIZE +> ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE RFC822) +> 29.07.14 17:07 >>> >>>>>>> end send >>>>>> +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> *29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +> RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2}* +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> .... +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> 29.07.14 17:07 <<< ) +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> *29.07.14 17:07 <<< * 2 FETCH (X-GM-MSGID 1345153544278287346 UID 7853 +> RFC822.SIZE 5433 BODY[HEADER.FIELDS (References)] {151}* +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> ...... +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> 29.07.14 17:07 <<< ) +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> 29.07.14 17:07 <<< 5 OK Success +> +> +> +> -- +> Davide Gullo +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22635.mbox:2,S new file mode 100644 index 00000000..61d731b5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22635.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From jjmckay at comaxis.com Fri May 23 22:59:08 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: +References: <537FEFE5.4040103@comaxis.com> + + +Message-ID: <5380352C.50807@comaxis.com> + +Right. What I have just noticed is that if I turn around and read back +the folder list, my new folder is indeed +a child to the parent folder, as I intended. But when I look at the +folder in the Gmail web interface, all I see +is a single folder named "foo/bar". There is no hierarchy present. I +know this used to work. + +On 5/23/2014 6:19 PM, Jamie Nicolson (???) wrote: +> Or are you talking about how it shows up in the Gmail web UI? +> +> +> On Fri, May 23, 2014 at 6:16 PM, Jamie Nicolson (???) +> > wrote: +> +> This behavior hasn't changed. Your second example is the way to +> go, and it seems to work for me: +> +> a create "foo/bar" +> a OK Success +> a list "" "*" +> [...] +> * LIST (\Noselect \HasChildren) "/" "foo" +> * LIST (\HasNoChildren) "/" "foo/bar" +> a OK Success +> +> +> On Fri, May 23, 2014 at 6:03 PM, Jeff McKay > wrote: +> +> Has something changed with how Gmail handles the hierarchy +> character in the CREATE command? +> I am sure I had this working at one point, but now: +> +> CREATE "TopLevelFolder/" +> +> generates "NO hierarchy character ignored" +> +> If I try to do: +> +> CREATE "TopLevelFolder/Subfolder" +> +> it is accepted but of course I just get a single folder with a +> slash in the middle. What is the secret? +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22638.mbox:2,S new file mode 100644 index 00000000..af46d0eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22638.mbox:2,S @@ -0,0 +1,157 @@ +MBOX-Line: From jjmckay at comaxis.com Wed Apr 30 06:50:05 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: +References: <53608FE7.8090909@verizon.net> + +Message-ID: <5360FF8D.9000201@comaxis.com> + +I have used oauth 2 with Gmail and it works well for my purpose. I have +seen the refresh token work several months after +first obtaining it with no intervening use. To change the subject just +a it, I wonder if Google could comment on the continuing +use of oauth 1 with Gmail? Currently that is the only method I know +that will allow me to grab Google Apps email data using +only administrative credentials, i.e. the client secret. If there is a +way to do that with oauth 2 I would appreciate detailed +low level documentation (not a library function). But I sure hope that +oauth 1 support is not going away anytime soon. + +On 4/29/2014 11:55 PM, Brandon Long wrote: +> I'm not our expert on oauth, he's welcome to pipe up here in a bit. +> +> I'd also point you to our documentation here, +> https://developers.google.com/gmail/oauth_overview which at the least +> has working examples. +> +> +> +> On Tue, Apr 29, 2014 at 10:53 PM, Joshua Cranmer +> > wrote: +> +> Hello, +> +> This is a message mostly directed to our fine Gmail server +> maintainers who happen to be listening on this list, but I think +> the issues here are relevant to other people who would read this +> list and I value the feedback of others, so I'm posting this publicly. +> +> Google's recent announcement +> () +> about its authentication polices, I have been led to believe, is +> in part a plea for clients to implement OAuth2.0-based +> authentication, and an intent to degrade experience of users for +> clients that remain authenticating based on common IMAP +> authentication passwords. I believe that I have a duty to the +> users of Thunderbird to provide them the best experience I can, +> but I believe that I also have the responsibility to help ensure +> that this experience can be easily had by both users of other +> email services and other email clients; the OAuth 2.0 requirements +> as I have found them put these responsibilities in conflict, and I +> do not want to be in the position of having to choose which is the +> more important one. +> +> So far, I've read the OAuth 2.0 RFC (6749), Google's documentation +> on its OAuth 2.0 implementation [1], and even the most recent +> draft of integrating OAuth into SASL +> (), +> which is what I view AUTH=XOAUTH2 in GMail's support as being +> analogous to. I have not yet had time to fully digest all the +> related emails about OAuth and SASL on the kitten working group. +> There has also been a discussion on this on Thunderbird's +> development mailing list +> (), +> if you're interested in seeing some of the discussion that has +> already been brought up and my or others' personal views on the +> quality of OAuth 2.0. +> +> +> Pieces of information: +> * Client Identifier: This is required in the RFC, and it is +> emphatic that this is neither secret nor is it to be used alone +> for client authentication. The problem I have here is the +> registration requirement: not that it is hard, but rather that it +> introduces a discrimination on the part of less common mail +> services that might wish to use this mechanism, if clients have to +> register a separate identifier for every such server. Given that +> such data will evidently be public (e.g., checked into +> Thunderbird's source code; even were it not, it's still a simple +> matter to intercept all outgoing http/https requests and obtain +> the id from that), and given that IMAP already defines an ID call +> that is used by Thunderbird and other clients, if the call is +> merely to indicate to the user the name of the program wishing to +> obtain authorization, it seems to me that deriving the client +> identifier from the ID call somehow ought to be sufficient. +> +> +> The client identifier here, from my understanding, is different in +> that its an actual registered ID, not just some string. Re-using the +> ID isn't going to work, plus, as a SASL mechanism, its supposed to be +> contained and generic for use in multiple protocols, so relying on a +> protocol specific passing of that information was probably considered +> non-ideal. +> +> * Authorization endpoint: Arguably the biggest flaw in the entire +> process is that I see no way to build the HTTPS request to an +> OAuth authorization endpoint without hardcoding specific values. +> +> * Token endpoint: Similar to the authorization endpoint, the +> location of this is also left indeterminable. +> +> * Scope: It seems to me that this part, though technically +> optional in the OAuth specification, is meant to basically be +> required. For a single standardized name, it seems to me that, +> given that SASL mandates that applications using it describe a +> service name (cf. RFC 4422, section 4), it makes sense to use this +> parameter (or some simple derivation thereof) to use as the scope +> parameter. [2] +> +> * Refresh tokens: Google's documentation on this is vague. At +> times, it implies that these last essentially forever unless the +> user revokes access. At other times (and apparently in +> experiments), it seems that these last only for long-ish terms +> (e.g., a few weeks). This need to "refresh" the refresh tokens +> would be troubling to me, since it implies that I should be +> attempting to do more things in my power to autofill the server's +> authentication mechanisms without the user knowing, in accordance +> with the user's wish to not have to retype passwords implied by +> saving these credentials in our password manager. This sort of +> action appears to be contrary to the goals of OAuth 2.0, though. +> +> Providing this information via some sort of autoconfigurable, +> autodiscoverable mechanism given only the user's email and/or +> server name is, in my mind, absolutely necessary before any +> attempt to implement this in Thunderbird is started. While tying +> the records to DNS is theoretically better since a chain of trust +> can be followed with DANE, many clients may find it easier to look +> it up at some well-known URL similar to how Thunderbird's +> autoconfiguration mechanism already works. +> +> +> Yes, as far as I know, there is no discoverability mechanism as of yet. +> +> [1] Which is rather infuriating and confusing if all you're trying +> to do is figure out how to use AUTH=XOAUTH2, as most of the +> documentation is clearly geared towards usecases specific to other +> APIs and not IMAP or SMTP access. +> +> +> Ah, is this the documentation I pointed out above? Happy to pass on +> any feedback to the docs folks. +> +> [2] On careful rereading of the SASL OAUTHBEARER draft it seems +> that it is possible to automatically infer the desired scope... +> but only by executing a AUTHENTICATE command that fails, which is +> rather suboptimal workflow for trying to develop client behavior +> in this regard. It means, e.g., I can't wrap the OAUTH support in +> a generic SASL provider mechanism and expect to have it pick up +> the desired scope information. It's also suboptimal that the +> information about scope is revealed but not any other hints about +> how to go about requesting authorization. +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22641.mbox:2,S new file mode 100644 index 00000000..512ff1da --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22641.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From blong at google.com Fri Mar 7 16:29:19 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Is it okay/common for servers to ignore + commands sent before the greeting? (gmail seems to?) +In-Reply-To: <531A61AB.9090406@mozilla.com> +References: <5319E04C.3070105@mozilla.com> + + <531A61AB.9090406@mozilla.com> +Message-ID: + +We've identified at least one bug here and submitted a fix. Not sure +the exact timeframe of rollout. + +Brandon + +On Fri, Mar 7, 2014 at 4:17 PM, Andrew Sutherland wrote: +> Aha! Yes, the behavior does appear to be new and is manifesting in older +> releases that didn't experience this problem before*. QA filed the bug with +> a log indicating this problem on 2/27 on https://bugzil.la/977867, but it's +> conceivable this was happening before that time. +> +> Thanks! +> Andrew +> +> * But that doesn't necessarily guarantee things given the high rate of +> platform change and platform backports occurring for Firefox OS. In this +> case our IMAP implementation is unchanged and our TCPSocket implementation +> on top of Necko/NSS is unchanged. I assume NSS changes and gets uplifts. +> +> +> On 03/07/2014 10:34 AM, Brandon Long wrote: +> +> Is this behavior new? +> +> We're just finishing the rollout of a new IMAP proxy, its possible its a bug +> in the new impl. +> +> Brandon +> +> On Mar 7, 2014 7:06 AM, "Andrew Sutherland" wrote: +>> +>> We're seeing a problem in the Firefox OS Gaia e-mail app where if we +>> manage to send our "A1 CAPABILITY" request to the gmail IMAP server +>> (initial-TLS imaps/993) before it sends its greeting, it acts like it never +>> hears the request. Our not-so-clever state machine hangs until the +>> connection times out. +>> +>> There's more details and pcap dumps at https://bugzil.la/977867#c21 but +>> basically we sometimes manage to get that request in the same TCP packet as +>> the conclusion of TLS setup. The TCP/TLS packet with the server greeting +>> ACKs that packet, so it's quite conceivable our request is managing to fall +>> into a very specific edge case/race. +>> +>> The spec does not seem to have a final word on this, although the state +>> flow diagram in http://tools.ietf.org/html/rfc3501#section-3 does seem to +>> imply that it's bad form to not wait for the server greeting. While I think +>> it's clear that for gmail we need to wait for the server greeting, I am +>> wondering if this is just an unusual complication/bug of gmail's likely more +>> complicated server architecture. I'd expect a server intentionally being +>> pedantic to issue a NO or BAD request... +>> +>> Thoughts / has anyone seen servers that intentionally or accidentally get +>> upset in cases like this? +>> +>> Thanks, +>> Andrew +>> +>> PS: We do have a lot of round-trip fat in our connection establishment, so +>> it's not the end of the world to explicitly wait for the server greeting in +>> all cases, but if it's just gmail (and we appropriately add some improved +>> timeout logic that triggers a persistent quirk for the server), I could see +>> it make sense to continue not waiting for the greeting. +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22648.mbox:2,S new file mode 100644 index 00000000..b4c8ff40 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22648.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From brong at fastmail.fm Tue Jan 14 13:43:07 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Login referrals resurrection? +In-Reply-To: +References: +Message-ID: <1389735787.25987.70781289.30514553@webmail.messagingengine.com> + +On Wed, Jan 15, 2014, at 08:32 AM, Timo Sirainen wrote: +> I started wondering today if it would be a good idea to bring back the login referrals, only a little bit changed from their original behavior. I guess originally they didn't really get used because few clients supported them and proxying works for everyone. But nowadays many larger installations have IMAP proxies and backends in multiple data centers and even though everything works, doing unnecessary proxying between data centers increases latency and often also costs money. Using DNS to give the correct data center IP based on the source IP might work for some users, but that's somewhat difficult to set up and likely won't work very well for the increasing number of mobile users. So what if we got the most popular clients to implement support for login referrals and use them? +> +> Problem 1: LOGIN tagged OK [REFERRAL] reply conflicts between Lemonade-required OK [CAPABILITY] reply. +> +> So either one of them needs to be moved to an untagged OK reply. RFC 2221 only talks about tagged OK reply, while RFC 5550 makes it possible to use untagged OK reply. But I'm a bit worried about changing this now, there may well be clients that handle only the tagged OK [CAPABILITY] while there are almost no clients that handle [REFERRAL] anywhere. So my preferred server reply would be: +> +> * OK [REFERRAL imap://user;AUTH=*;us1.imap.example.com/] Use this server for decreased latency +> a OK [CAPABILITY ...] Logged in. +> +> Problem 2: RFC 2221 specified OK [REFERRAL] to mean that user's mailboxes aren't on this server, but some shared mailboxes are. +> +> Instead now the OK [REFERRAL] should simply be a suggestion to the client to connect to the specified server to get better latency, but it would work just as well to just ignore it and keep using the current server. In fact the client likely shouldn't reconnect at all, but just create all future connections using the referral's server. If the referral server ever fails, the client should connect back to the original server. +> +> Does anyone else think this would be worth maybe writing a new updated RFC2221bis and trying to convince client developers to implement it? + +Any particular reason to reuse the same name with an altered meaning rather than coming up with a new name for this? e.g. + +* OK [CANONICAL imaps://user;AUTH=*;us1.imap.example.com/] home server is us1 + +Bron ( I can't believe you're sending the user to a non-ssl URL in this day and age! ) + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22651.mbox:2,S new file mode 100644 index 00000000..4b44cac3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22651.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From jazzo72 at gmail.com Thu Dec 5 14:18:32 2013 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +Message-ID: + +Hi, +I'm fetching data from Gmail IMAP server and I get this response: + + 20293 FETCH (X-GM-MSGID 1345230530776790491 UID 33925 RFC822.SIZE +*14787*RFC822 { +*14985*} + +Look at the RFC822.SIZE (14787), it is different from the size in +RFC822 {14985}. +Do you see something like that before? +It could be a bug or I miss something from the IMAP protocol? + + +Thanks and Regards, + +-- +Davide Gullo +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095016.22656.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095016.22656.mbox:2,S new file mode 100644 index 00000000..76ad5d8c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095016.22656.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Sat Nov 2 13:52:42 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] NILs +Message-ID: <9F0687D5-B209-4922-93EB-B728B8B8869B@iki.fi> + +I realized today I had several bugs related to NILs. I?ll add these to imaptest, but thought I?d mention here also in case others have similar issues: + +1. My understanding from RFC 3501 is that NILs are case-insensitive, because of: + + Note: [ABNF] rules MUST be followed strictly; in + particular: + + (1) Except as noted otherwise, all alphabetic characters + are case-insensitive. The use of upper or lower case + characters to define token strings is for editorial clarity + only. Implementations MUST accept these strings in a + case-insensitive fashion. + +I was checking only for uppercase NILs. Then again there weren't actually any IMAP command parameters where NIL was allowed before I implemented SETMETADATA today. + +2. NIL is a valid atom in astrings, and must be treated the same as ?NIL?: + + Note: NIL is never used for any data item which takes the + form of an atom. For example, a mailbox name of "NIL" is a + mailbox named NIL as opposed to a non-existent mailbox + name. This is because mailbox uses "astring" syntax which + is an atom or a string. + +And of course this needs to work case-sensitively when used in mailbox names, so NIL != nil. + +3. When sending NIL (case-insensitive) astring to clients, it?s better to send it quoted. Clients are much less likely to implement 2 correctly, and I?m sure in some cases my code is calling write_astring() when it?s really nstring in ABNF. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22595.mbox:2,S new file mode 100644 index 00000000..d03288e3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From janssen at parc.com Mon Mar 9 14:17:43 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + +Message-ID: <17104.1425935863@parc.com> + +Hoa V. DINH wrote: + +> I think using human readable text protocol is still a very good idea since it makes it easier to debug just by logging input/output of the protocol. + +Yes, that's always been the argument. On the other hand, you don't +read those logs with your bare Mark-I eyeballs. You use a tool, even +if it's just less+xterm. Writing a WireShark plugin is so streamlined +these days that I see no real advantage in the text formats anymore. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22623.mbox:2,S new file mode 100644 index 00000000..71528346 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22623.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From slusarz at curecanti.org Tue Sep 9 22:53:45 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] client support for UTF8=ACCEPT? +In-Reply-To: +Message-ID: <20140909235345.Horde.8m5EQse39pjXgGhgdGLPqg3@bigworm.curecanti.org> + + Quoting Jamie Nicolson (???) : + +> We're looking to support the UTF8=ACCEPT extension from RFC 6855 in +> Gmail's IMAP server. Anyone know of clients that support it? + +Horde/IMP webmail supports it, as of a few months ago.? Although I +have no idea if it works since I could not find any freely available +IMAP servers to test against when implementing. + + From a client perspective - really wasn't that difficult to implement +since we are handling everything internally in UTF-8 already. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22629.mbox:2,S new file mode 100644 index 00000000..fc8fbdbc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22629.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From jazzo72 at gmail.com Tue Jul 29 15:29:00 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + +Message-ID: + +The literal is wrong, I don't know if the RFC822.SIZE too. +Brandon, I can give you the account if you want. + + + + +2014-07-29 23:28 GMT+02:00 Brandon Long : + +> Which size is wrong? The literal? Or the RFC822.SIZE? And you know its +> wrong based on what other information? +> +> We're going to need more information to understand the issue. +> +> Brandon +> +> +> On Tue, Jul 29, 2014 at 1:26 PM, Davide Gullo wrote: +> +>> Hi, +>> I got a very strange behavior on an account on Gmail. +>> A lot of them have the size wrong, look at the attached log (especially +>> the bold lines). +>> Then the parser obviously return an error. +>> +>> +>> 29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS +>> RFC822.SIZE ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE +>> RFC822) +>> 29.07.14 17:07 >>> >>>>>>> end send >>>>>> +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> *29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +>> RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2}* +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> .... +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> 29.07.14 17:07 <<< ) +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> *29.07.14 17:07 <<< * 2 FETCH (X-GM-MSGID 1345153544278287346 UID 7853 +>> RFC822.SIZE 5433 BODY[HEADER.FIELDS (References)] {151}* +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> ...... +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> 29.07.14 17:07 <<< ) +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> 29.07.14 17:07 <<< 5 OK Success +>> +>> +>> +>> -- +>> Davide Gullo +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> + + +-- +Davide Gullo, Consulente Web (professionista disciplinato ai sensi della +legge 4/2013) +http://www.m4ss.net +gullo@m4ss.net +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22635.mbox:2,S new file mode 100644 index 00000000..b7dd6e8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22635.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Sun May 25 22:24:46 2014 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] RFC7162 (CONDSTORE and QRESYNC) +Message-ID: <5382D01E.22246.FAB84F9@David.Harris.pmail.gen.nz> + +I'm just reading through RFC7162 and was wondering if anyone on this list +would be willing to give a speculative estimate of the percentage of servers +and clients that support CONDSTORE? I'm only looking for a +"back-of-the-envelope" estimate here - even something like "more than half" +or "less than half" would be useful. + +I'd also like to offer a short, heartfelt thanks to the people out there like +Alexey Melnikov and Dave Cridland (representative names only - there are +many, many more) who put in a lot of time and effort to come out with helpful +RFCs like this. IMAP is complex and in places very arcane, so all assistance +is helpful, and I for one appreciate it. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +True life insurance claim: + "My car was legally parked as it backed into the other vehicle." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22638.mbox:2,S new file mode 100644 index 00000000..0cf54531 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22638.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From imap at maclean.com Wed Apr 30 07:34:54 2014 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <5360FF8D.9000201@comaxis.com> +References: <53608FE7.8090909@verizon.net> + + <5360FF8D.9000201@comaxis.com> +Message-ID: + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22641.mbox:2,S new file mode 100644 index 00000000..7657ffc7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22641.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From asuth at mozilla.com Fri Mar 7 17:13:30 2014 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Is it okay/common for servers to ignore + commands sent before the greeting? (gmail seems to?) +In-Reply-To: <4012E0DA-1598-47CA-804E-9ED75CE22327@iki.fi> +References: <5319E04C.3070105@mozilla.com> + <4012E0DA-1598-47CA-804E-9ED75CE22327@iki.fi> +Message-ID: <531A6EBA.5000307@mozilla.com> + +On 03/07/2014 12:27 PM, Timo Sirainen wrote: +> On 7.3.2014, at 18.01, Jan Kundr?t wrote: +> +>> Interesting. What my client is doing is patiently waiting for the initial response and checking whether the capability list is passed in there as a response code. + +Our IMAP implementation has not gotten a lot of love. We started from +https://github.com/mscdex/node-imap/ as a base and this was simply its +default behavior which worked, so we ran with it. We have a backlog of +things to do to improve our IMAP implementation, but we do want +connection setup to be as fast as possible so it's nice to know the +right thing to do when correcting immediate issues and longer term. + + +> I think the ideal solution would be for everyone to start sending the CAPABILITY in the initial reply. Dovecot v2.x actually sends only a truncated CAPABILITY reply that contains only the extensions relevant to client before login. If you want to be sure not to break any clients, you could still do that and send the full capabilities list as a reply to the CAPABILITY command. The clients that understand the initial reply will also understand the updated OK [CAPABILITY ..] reply to LOGIN/AUTHENTICATE, while those that don't understand it will just request the CAPABILITY command directly. + +Yes, dovecot's behavior here is very nice. We do understand and want to +continue to understand LOGINDISABLED so we can treat the situation as an +appropriate type of transient failure, so it's good for us to have that +information. + +However, if a server such as dovecot does this and we have persisted +this knowledge and are on an imaps/993/initial-TLS connection, would it +then be okay for us to attempt our login as our first step before having +seen the greeting? Assuming the server always sends the greeting +regardless of our initial command, we can drop the connection and/or +ignore the login failure when we see that there was a LOGINDISABLED command. + +Thanks, +Andrew + diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22648.mbox:2,S new file mode 100644 index 00000000..36399909 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22648.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From blong at google.com Tue Jan 14 14:05:21 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Login referrals resurrection? +In-Reply-To: +References: +Message-ID: + +I assume this would also mean that all of the "more specific" locations +would need to be alt names in the ssl certificate. + +If you were blind load balancing (ie, just multiple A records), then this +would clearly be a win, but I'm not sure how many people with multiple DCs +are doing that. Even then, knowing which proxy point is closer to the +user's backend may be easy to know, but knowing which proxy point is the +better network mid-point from the user to the backend is harder. Granted, +that's more likely a problem once you go beyond two DCs, where the user may +be closest to a DC which doesn't have their data. And I guess you can +always go with "give them a proxy closest to their data and let the network +figure out the best path to get there". + +There's also the question of how do you handle having the user's data in +multiple DCs and the user traveling, though presumably you'd just evaluate +every time and it improves the next connection. With mobile devices, a +user could have many very different network paths through-out the day. + +Is it common for people with multiple DCs to have blind DNS load balancing? + +We would be unlikely to implement this because our load balancing is not +blind and our network topology is designed to get people onto our network +as their closest point. Also, load balancing for us is not strictly geo +based, otherwise we'd need a lot more capacity to handle daily peaks from +different parts of the world. + +Brandon + + +On Tue, Jan 14, 2014 at 1:32 PM, Timo Sirainen wrote: + +> I started wondering today if it would be a good idea to bring back the +> login referrals, only a little bit changed from their original behavior. I +> guess originally they didn't really get used because few clients supported +> them and proxying works for everyone. But nowadays many larger +> installations have IMAP proxies and backends in multiple data centers and +> even though everything works, doing unnecessary proxying between data +> centers increases latency and often also costs money. Using DNS to give the +> correct data center IP based on the source IP might work for some users, +> but that's somewhat difficult to set up and likely won't work very well for +> the increasing number of mobile users. So what if we got the most popular +> clients to implement support for login referrals and use them? +> +> Problem 1: LOGIN tagged OK [REFERRAL] reply conflicts between +> Lemonade-required OK [CAPABILITY] reply. +> +> So either one of them needs to be moved to an untagged OK reply. RFC 2221 +> only talks about tagged OK reply, while RFC 5550 makes it possible to use +> untagged OK reply. But I'm a bit worried about changing this now, there may +> well be clients that handle only the tagged OK [CAPABILITY] while there are +> almost no clients that handle [REFERRAL] anywhere. So my preferred server +> reply would be: +> +> * OK [REFERRAL imap://user;AUTH=*;us1.imap.example.com/] Use this server +> for decreased latency +> a OK [CAPABILITY ...] Logged in. +> +> Problem 2: RFC 2221 specified OK [REFERRAL] to mean that user's mailboxes +> aren't on this server, but some shared mailboxes are. +> +> Instead now the OK [REFERRAL] should simply be a suggestion to the client +> to connect to the specified server to get better latency, but it would work +> just as well to just ignore it and keep using the current server. In fact +> the client likely shouldn't reconnect at all, but just create all future +> connections using the referral's server. If the referral server ever fails, +> the client should connect back to the original server. +> +> Does anyone else think this would be worth maybe writing a new updated +> RFC2221bis and trying to convince client developers to implement it? +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22651.mbox:2,S new file mode 100644 index 00000000..7260e2ec --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22651.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From blong at google.com Thu Dec 5 14:57:52 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: +References: +Message-ID: + +Why ask for the size if you're getting the whole data? j/k + +Anyways, I'm a bit surprised that it would be wrong in that context, but +yes, they can be off in our implementation. We've been trying to fix all +of our data to prevent it, but the fixes are still ongoing. + +If you want to send me the account off-list, I can take a look to see if +its a known issue causing it in this case or not. + +Brandon + + +On Thu, Dec 5, 2013 at 2:18 PM, Davide Gullo wrote: + +> Hi, +> I'm fetching data from Gmail IMAP server and I get this response: +> +> 20293 FETCH (X-GM-MSGID 1345230530776790491 UID 33925 RFC822.SIZE +> *14787* RFC822 {*14985*} +> +> Look at the RFC822.SIZE (14787), it is different from the size in +> RFC822 {14985}. +> Do you see something like that before? +> It could be a bug or I miss something from the IMAP protocol? +> +> +> Thanks and Regards, +> +> -- +> Davide Gullo +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22656.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22656.mbox:2,S new file mode 100644 index 00000000..37573c2b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22656.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From jjmckay at comaxis.com Wed Nov 27 16:36:48 2013 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Strange behavior from Office 365 IMAP +Message-ID: <52969020.8070807@comaxis.com> + +I am trying to send a message to Office 365 via IMAP (using my own +software). What +I am seeing is, if the message is over a certain size (10240 bytes, to +be exact) the +server will fail the APPEND command like this: + +Delivered-To: BAD Command Error. 10 + +The server name is "outlook.office365.com". Using SSL on port 993. + +The "Delivered-To:" happens to be the first line of the message +(although there is +additional text after that, it does not show up in the error message). +For some +reason it thinks that the first line of data is a command, instead of +message text. +If the total length of the message is less than 10240, then it works +just fine +(with the exact same data, just cutoff at the end). For example, here +is the +first part of the trace, where it fails: + +A009 APPEND "Migrated/INBOX" "08-May-2013 13:38:56 -0800" {21748} ++ Ready for additional command text. +Delivered-To: jmckay9351@gmail.com +Received: by 10.194.162.225 with SMTP id yd1csp6294wjb; + Wed, 8 May 2013 08:38:58 -0700 (PDT) + + +(the and strings are not part of the data, just info from +the trace). + +Here is a trace where it works: + +A009 APPEND "Migrated/INBOX" "08-May-2013 13:38:56 -0800" {8000} ++ Ready for additional command text. +Delivered-To: jmckay9351@gmail.com +Received: by 10.194.162.225 with SMTP id yd1csp6294wjb; + Wed, 8 May 2013 08:38:58 -0700 (PDT) + + +In this case, I have arbitrarily cut off the data at 8000 bytes. The +APPEND command works +fine. By the way, this exact same code/data works fine with every other +IMAP server I have +tried. Any ideas? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095017.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095017.22659.mbox:2,S new file mode 100644 index 00000000..70d3ff8e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095017.22659.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From jkt at flaska.net Wed Oct 16 13:20:06 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Accessing the Content-Transfer-Encoding of a + top-level multipart +Message-ID: <18960e4a-19cb-4a82-b287-aee478965e77@flaska.net> + +Hi, +can I somehow access the Content-Transfer-Encoding of a root-level +multipart except via parsing the HEADER part myself? + +The use case is the following -- my MUA supports attaching arbitrary IMAP +messages when composing mail. Under the hood, this works by simply taking +the whole payload of the message and placing it as an extra part into a +top-level multipart/mixed. No MIME encoding is performed for the attached +message; its HEADER and TEXT parts are simply concatenated and used as-is. + +Now I'm trying to conform to various mail standards and am considering what +to do with the Content-Transfer-Encoding of the attachment. Ironically, +this works well when the attached item is actually a message/rfc822 which +is already attached to some other message; if that is the case, the +BODYSTRUCTURE response typically contains a body-fld-enc field which I can +use verbatim. + +However, it appears that the body-fld-enc is not reachable from the +body-type-mpart (which expands into body-ext-mpart, which contains only a +subset of interesting fields). The only way of getting these data is, +apparently, via the HEADER.FIELDS(Content-Transfer-Encoding). This is +rather inconvenient. + +A couple of questions: + +- Is this analysis correct? +- If so, what was the reason for leaving out the CTE header from +BODYSTRUCTURE of multipart/* parts? +- Is my approach of blindly accepting the message/rfc822 payload directly +in the composer fatally flawed anyway? What else shall one use when +"forwarding message as an attachment"? Shall the MUA reparse and sanitize +the whole MIME structure in some way? If so, wouldn't that go against the +perceived goal of "forward as attachment" which is often used for e.g. +passing around "interesting" messages? +- What can I expect for mistakenly claiming that my message/rfc822 MIME +part nested within a multipart/mixed has CTE: 7bit while its own header +clearly says that it uses an 8bit CTE? + +The BODYSTRUCTURE of this thing, as returned by Dovecot: + +* 10507 FETCH (UID 60464 BODYSTRUCTURE (("text" "plain" ("charset" "utf8") +NIL NIL "8bit" 642 17 NIL NIL NIL NIL)("message" "rfc822" NIL NIL NIL +"8bit" 8600 ("Wed, 16 Oct 2013 22:49:48 +0400" "[trojita] +=?Windows-1251?B?xOXq6+Bw6PDu4uDt6OUg8u7iYfDu4iDoIPLg7G/mZe3t++Ug8GXm6Oz7?=" +(("=?Windows-1251?B?0uDs7ubt/w==?=" NIL "kurilluck.urebrof" "mail.ru")) +(("=?Windows-1251?B?0uDs7ubt/w==?=" NIL "kurilluck.urebrof" "mail.ru")) +((NIL NIL "trojita" "lists.flaska.net")) ((NIL NIL "trojita" +"lists.flaska.net")) NIL NIL NIL +"<464148380.20131016829328@mx.tillions.com>") ("text" "html" ("charset" +"windows-1251") NIL NIL "8bit" 7524 124 NIL NIL NIL NIL) 146 NIL ("inline" +("filename" "message.eml")) NIL NIL) "mixed" ("boundary" +"=_7b26f5171179a9455fc646812635670f_=") NIL NIL NIL)) + +The full message is available at http://jkt.flaska.net/tmp/msg_60464.eml . + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22595.mbox:2,S new file mode 100644 index 00000000..e5b78889 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22595.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From imantc at gmail.com Mon Mar 9 14:19:35 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + +Message-ID: + +> human readable text protocol is still a very good idea since it makes it easier to debug just by logging input/output of the protocol. + +Binary can be transformed to text easier than current "text"-flavoured +formats. It is possible to open any major encoding in good text +editors, or convert between encodings via libraries for display in +browser. Binary however is much easier to interpret in code than text. +Current standards (i.e. case insensitive commands, mixture of +encodings within a single text block, injection of CRLF which is not +part of the text), complicate interpreting a lot. It also consumes a +lot of CPU resources - visibly. + +SMTP protocol would benefit from a few very clear (as in: explicit +sequence of bytes) instructions and explicit expectations about each +immediate payload: what follows (type, encoding), what byte length is +expected. + +Email server does not need to guess: is it over yet? how much more to +expect? It needs to know with each command, what payload to prepare +for. It does not need to analyze / parse each line of the content as +it trickles in. + +Something like this: +n1 bytes: command +n2 bytes: args (type: header, body, mime, etc) +n3 bytes: length +n4 bytes: content + +both the specs and the code would be a few times shorter than what +they are with the current standard. + +no guesswork. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22623.mbox:2,S new file mode 100644 index 00000000..c3ae6c2a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22623.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 10 00:47:42 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] client support for UTF8=ACCEPT? +In-Reply-To: +References: +Message-ID: <1759f73e-ab22-4c82-b09c-1ba77b0d1623@gulbrandsen.priv.no> + +Mutt does, in a way. If you build this version on a host without libidna: + +https://bitbucket.org/arnt/mutt/ + +I did that work as a favour for a mutt user, submitted it for inclusion +into the official tree, and got back a rather positive response but nothing +more has happened. I'm sure it will be merged into the official tree. In +due course. In the fullness of time. At the proper junction. + +FWIW, the programming itself took about an hour. I then spent some time +chasing a bug before determining that the bug is completely unrelated to +EAI. The first test message I tried happened to trigger that other bug. All +in all, I started after breakfast and was done well before lunch. EAI is +great. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22629.mbox:2,S new file mode 100644 index 00000000..ab0d1852 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22629.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From slusarz at curecanti.org Tue Jul 29 15:36:45 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + +Message-ID: <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + +Quoting Davide Gullo : + +> The literal is wrong, I don't know if the RFC822.SIZE too. +> Brandon, I can give you the account if you want. + +Why is the literal wrong? The References header might not match in +that message. In which case the literal length will correctly be 2 +(for the CRLF header delimiter). + +[snip] + +>>> 29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS +>>> RFC822.SIZE ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE +>>> RFC822) +>>> 29.07.14 17:07 >>> >>>>>>> end send >>>>>> +>>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>>> *29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +>>> RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2}* +>>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22635.mbox:2,S new file mode 100644 index 00000000..4e2cfa54 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22635.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon May 26 00:29:24 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] RFC7162 (CONDSTORE and QRESYNC) +In-Reply-To: <5382D01E.22246.FAB84F9@David.Harris.pmail.gen.nz> +References: <5382D01E.22246.FAB84F9@David.Harris.pmail.gen.nz> +Message-ID: <87e88de2-4b47-4f13-97ee-1b46f9e2e6a7@gulbrandsen.priv.no> + +My numbers say: a considerable majority, but not 90%. Not enough to +disregard servers that don't support condstore. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22638.mbox:2,S new file mode 100644 index 00000000..f14bef09 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22638.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From Pidgeot18 at verizon.net Wed Apr 30 08:40:24 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: +References: <53608FE7.8090909@verizon.net> + +Message-ID: <53611968.6010707@verizon.net> + +On 4/30/2014 1:55 AM, Brandon Long wrote: +> On Tue, Apr 29, 2014 at 10:53 PM, Joshua Cranmer +> > wrote: +> +> * Client Identifier: This is required in the RFC, and it is +> emphatic that this is neither secret nor is it to be used alone +> for client authentication. The problem I have here is the +> registration requirement: not that it is hard, but rather that it +> introduces a discrimination on the part of less common mail +> services that might wish to use this mechanism, if clients have to +> register a separate identifier for every such server. Given that +> such data will evidently be public (e.g., checked into +> Thunderbird's source code; even were it not, it's still a simple +> matter to intercept all outgoing http/https requests and obtain +> the id from that), and given that IMAP already defines an ID call +> that is used by Thunderbird and other clients, if the call is +> merely to indicate to the user the name of the program wishing to +> obtain authorization, it seems to me that deriving the client +> identifier from the ID call somehow ought to be sufficient. +> +> +> The client identifier here, from my understanding, is different in +> that its an actual registered ID, not just some string. Re-using the +> ID isn't going to work, plus, as a SASL mechanism, its supposed to be +> contained and generic for use in multiple protocols, so relying on a +> protocol specific passing of that information was probably considered +> non-ideal. + +The fact that a client ID needs to be pre-registered, and pre-registered +per site, would make it impossible to implement SASL OAuth in a +non-discriminatory manner: a client would only be able to connect to +those sites for which it knows what its client ID is, and only those for +which the developer(s) have the time to go register an ID. In a world +where many servers of disparate networks implement this (as other +servers are already starting to do, see Andris's email). + +My suggestion, which I think got misunderstood, was that instead of +relying on a pre-registration mechanism for the client ID, IMAP clients +should be able to construct a client ID somehow from the IMAP ID that +they send out. I didn't intend to imply that the client ID should be +extracted by the server from observing an IMAP ID on the transaction. + +> [1] Which is rather infuriating and confusing if all you're trying +> to do is figure out how to use AUTH=XOAUTH2, as most of the +> documentation is clearly geared towards usecases specific to other +> APIs and not IMAP or SMTP access. +> +> +> Ah, is this the documentation I pointed out above? Happy to pass on +> any feedback to the docs folks. + +Well, if you're inviting me to complain about the documentation... :-) + +* The scope for IMAP and SMTP is not linked to from the OAuth2 +documentation itself (it is mentioned only the xoauth2 page). +* The meaning of the return result in the error response to SASL XOAUTH2 +is not clear, since only an example is given. I had to read the draft +specification at IETF to make any sorts of heads or tails out of it. +* The same flowchart is used on the "Using OAuth 2.0 for Devices" and +"Using OAuth 2.0 for Installed Applications" pages. One of them is wrong. +* There's no documentation on how to handle the case where the client +application is capable of spawning a controlled browser application and +proceeding with minimal user interaction. Right now, I think our +OAuth.jsm code works by redirecting to http://localhost/, intercepting +the redirect at the http level, and stripping the URI information from that. +* Refresh token documentation is contradictory, as mentioned above. +* There's in general very little information on what responses actually +mean. For example, is the expiry timestamp measured in milliseconds, +seconds, hours, number of total eclipses viewable from Google's +headquarters? What values are reasonably expected by these timestamps? +[This is everything I can think of off the top of my head. I'm sure +there's much more.] + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22641.mbox:2,S new file mode 100644 index 00000000..8895e406 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22641.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From slusarz at curecanti.org Tue Mar 18 13:13:05 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +Message-ID: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + +STARTTLS is a non-authenticated command (3501 [6.2.1]). + +Am I correct in my reading that this means that you lose any ability +to protect message data via TLS if PREAUTH is used? In other words: +was STARTTLS solely designed to protect authentication credentials +(security) and not message data (privacy)? + +I guess the workaround for a situation where you *could* +preauthenticate based on connection factors/details, but still need +message privacy, is to require some sort of dummy authentication +(after initializing TLS layer). Feels pretty hackish though. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22648.mbox:2,S new file mode 100644 index 00000000..9360e772 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22648.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From blong at google.com Tue Jan 14 14:06:56 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Login referrals resurrection? +In-Reply-To: <1389735787.25987.70781289.30514553@webmail.messagingengine.com> +References: + <1389735787.25987.70781289.30514553@webmail.messagingengine.com> +Message-ID: + +On Tue, Jan 14, 2014 at 1:43 PM, Bron Gondwana wrote: + +> On Wed, Jan 15, 2014, at 08:32 AM, Timo Sirainen wrote: +> > I started wondering today if it would be a good idea to bring back the +> login referrals, only a little bit changed from their original behavior. I +> guess originally they didn't really get used because few clients supported +> them and proxying works for everyone. But nowadays many larger +> installations have IMAP proxies and backends in multiple data centers and +> even though everything works, doing unnecessary proxying between data +> centers increases latency and often also costs money. Using DNS to give the +> correct data center IP based on the source IP might work for some users, +> but that's somewhat difficult to set up and likely won't work very well for +> the increasing number of mobile users. So what if we got the most popular +> clients to implement support for login referrals and use them? +> > +> > Problem 1: LOGIN tagged OK [REFERRAL] reply conflicts between +> Lemonade-required OK [CAPABILITY] reply. +> > +> > So either one of them needs to be moved to an untagged OK reply. RFC +> 2221 only talks about tagged OK reply, while RFC 5550 makes it possible to +> use untagged OK reply. But I'm a bit worried about changing this now, there +> may well be clients that handle only the tagged OK [CAPABILITY] while there +> are almost no clients that handle [REFERRAL] anywhere. So my preferred +> server reply would be: +> > +> > * OK [REFERRAL imap://user;AUTH=*;us1.imap.example.com/] Use this +> server for decreased latency +> > a OK [CAPABILITY ...] Logged in. +> > +> > Problem 2: RFC 2221 specified OK [REFERRAL] to mean that user's +> mailboxes aren't on this server, but some shared mailboxes are. +> > +> > Instead now the OK [REFERRAL] should simply be a suggestion to the +> client to connect to the specified server to get better latency, but it +> would work just as well to just ignore it and keep using the current +> server. In fact the client likely shouldn't reconnect at all, but just +> create all future connections using the referral's server. If the referral +> server ever fails, the client should connect back to the original server. +> > +> > Does anyone else think this would be worth maybe writing a new updated +> RFC2221bis and trying to convince client developers to implement it? +> +> Any particular reason to reuse the same name with an altered meaning +> rather than coming up with a new name for this? e.g. +> +> * OK [CANONICAL imaps://user;AUTH=*;us1.imap.example.com/] home server is +> us1 +> +> Bron ( I can't believe you're sending the user to a non-ssl URL in this +> day and age! ) +> + +I'm sure he implied STARTTLS, that is, after all, the preferred way for +IETF protocols to work. Or is that the difference between simap and imaps? + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22651.mbox:2,S new file mode 100644 index 00000000..0245d2a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22651.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From dave at cridland.net Fri Dec 6 00:18:28 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Kerio and authenticate plain +In-Reply-To: <52A0F6A2.8090108@comaxis.com> +References: <52A0F6A2.8090108@comaxis.com> +Message-ID: + +On Thu, Dec 5, 2013 at 9:56 PM, Jeff McKay wrote: + +> I am trying to use authenticate plain with a Kerio imap server and not +> having much luck. +> The idea is to use the admin name and password in order to log in to a +> user account and +> access the user's folders. This appears to work but in fact I get access +> to the admin folders, +> not the user's. +> +> Basically I am constructing a buffer that looks like: +> 00 +> (the 0 being a binary byte=x00.) I base64 encode this, issue +> "authenticate plain" wait for the prompt, +> then send the encoded data. Server responds authentication successful, +> however I am logged into +> the admin account, not the user. +> +> I have used this code successfully with other imap servers that support +> auth plain, so I know it +> works. Is there something screwy about Kerio? +> + +This isn't an IMAP question, per se, but a SASL one. + +Still, the issue here is that you're using a different Authorization +identifier, and the server's neither allowing this, or rejecting your +authentication. I'd have thought one or other would be the correct thing to +do, and silently ignoring it would be a "bad" thing. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22656.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22656.mbox:2,S new file mode 100644 index 00000000..4d697a0d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22656.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From brong at fastmail.fm Wed Nov 27 17:03:44 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Strange behavior from Office 365 IMAP +In-Reply-To: <52969020.8070807@comaxis.com> +References: <52969020.8070807@comaxis.com> +Message-ID: <1385600624.4495.52958797.3CE9620E@webmail.messagingengine.com> + +On Thu, Nov 28, 2013, at 11:36 AM, Jeff McKay wrote: +> I am trying to send a message to Office 365 via IMAP (using my own +> software). What +> I am seeing is, if the message is over a certain size (10240 bytes, to +> be exact) the +> server will fail the APPEND command like this: +> +> Delivered-To: BAD Command Error. 10 +> +> The server name is "outlook.office365.com". Using SSL on port 993. +> +> The "Delivered-To:" happens to be the first line of the message +> (although there is +> additional text after that, it does not show up in the error message). +> For some +> reason it thinks that the first line of data is a command, instead of +> message text. +> If the total length of the message is less than 10240, then it works +> just fine +> (with the exact same data, just cutoff at the end). For example, here +> is the +> first part of the trace, where it fails: +> +> A009 APPEND "Migrated/INBOX" "08-May-2013 13:38:56 -0800" {21748} +> + Ready for additional command text. +> Delivered-To: jmckay9351@gmail.com +> Received: by 10.194.162.225 with SMTP id yd1csp6294wjb; +> Wed, 8 May 2013 08:38:58 -0700 (PDT) +> +> +> (the and strings are not part of the data, just info from +> the trace). +> +> Here is a trace where it works: +> +> A009 APPEND "Migrated/INBOX" "08-May-2013 13:38:56 -0800" {8000} +> + Ready for additional command text. +> Delivered-To: jmckay9351@gmail.com +> Received: by 10.194.162.225 with SMTP id yd1csp6294wjb; +> Wed, 8 May 2013 08:38:58 -0700 (PDT) +> +> +> In this case, I have arbitrarily cut off the data at 8000 bytes. The +> APPEND command works +> fine. By the way, this exact same code/data works fine with every other +> IMAP server I have +> tried. Any ideas? + +I would be interested in seeing the END of the larger message. It's almost +certainly a bug in office365's IMAP implementation of course. + +Of particular interest is whether it's a security hole ;) + +Other fun things to check - does it only happen over SSL? + +What if you send smaller blobs and flush them, rather than streaming all 20k bytes at once? + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095018.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095018.22659.mbox:2,S new file mode 100644 index 00000000..6d554cda --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095018.22659.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dave at cridland.net Wed Oct 16 13:44:55 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Accessing the Content-Transfer-Encoding of a + top-level multipart +In-Reply-To: <18960e4a-19cb-4a82-b287-aee478965e77@flaska.net> +References: <18960e4a-19cb-4a82-b287-aee478965e77@flaska.net> +Message-ID: + +On 16 Oct 2013 16:24, "Jan Kundr?t" wrote: +> +> Hi, +> can I somehow access the Content-Transfer-Encoding of a root-level +multipart except via parsing the HEADER part myself? + +Perhaps I'm misunderstanding, but isn't the CTE of any multipart/* 7bit by +definition? + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22595.mbox:2,S new file mode 100644 index 00000000..0168a991 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22595.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From dave at cridland.net Mon Mar 9 14:24:34 2015 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <17104.1425935863@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <17104.1425935863@parc.com> +Message-ID: + +On 9 March 2015 at 21:17, Bill Janssen wrote: + +> Hoa V. DINH wrote: +> +> > I think using human readable text protocol is still a very good idea +> since it makes it easier to debug just by logging input/output of the +> protocol. +> +> Yes, that's always been the argument. On the other hand, you don't +> read those logs with your bare Mark-I eyeballs. You use a tool, even +> if it's just less+xterm. Writing a WireShark plugin is so streamlined +> these days that I see no real advantage in the text formats anymore. +> + +That would indeed explain the recent resurgence of ASN.1 based protocols. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22623.mbox:2,S new file mode 100644 index 00000000..9a518a1d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22623.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From jcea at jcea.es Wed Sep 10 17:48:07 2014 +To: imap-protocol@u.washington.edu +From: Jesus Cea +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Enhanced IDLE +Message-ID: <5410F147.8040803@jcea.es> + +As far as I know, IDLE *ONLY* notifies changes in the selected mailbox. +If you want to monitor all mailboxes, you have to use NOTIFY. But +checking around I see references to something called "enhanced idle", +apparently able to notify changes in any mailbox using IDLE. For instance: + + + +I would like to know more about that "enhanced IDLE". How to activate it +in Dovecot would be nice too :-p + +I hope this is not offtopic. Thanks for your time and your help. + +-- +Jes?s Cea Avi?n _/_/ _/_/_/ _/_/_/ +jcea@jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ +Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ +jabber / xmpp:jcea@jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ +"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ +"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ +"El amor es poner tu felicidad en la felicidad de otro" - Leibniz + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 484 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22629.mbox:2,S new file mode 100644 index 00000000..c957cc84 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22629.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Tue Jul 29 15:38:32 2014 +To: imap-protocol@u.washington.edu +From: "Hoa V. Dinh" +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> +Message-ID: + +Davide, +you should probably show explicitly the content it?s sending and why it doesn?t match the size of the literal. + +-- +Hoa V. Dinh + + +On Tuesday, July 29, 2014 at 3:36 PM, Michael M Slusarz wrote: + +> Quoting Davide Gullo : +> +> > The literal is wrong, I don't know if the RFC822.SIZE too. +> > Brandon, I can give you the account if you want. +> > +> +> +> Why is the literal wrong? The References header might not match in +> that message. In which case the literal length will correctly be 2 +> (for the CRLF header delimiter). +> +> [snip] +> +> > > > 29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS +> > > > RFC822.SIZE ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE +> > > > RFC822) +> > > > 29.07.14 17:07 >>> >>>>>>> end send >>>>>> +> > > > 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> > > > *29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +> > > > RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2}* +> > > > 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> > > > 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> > > > +> > > +> > +> +> +> michael +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22635.mbox:2,S new file mode 100644 index 00000000..a11c3d95 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22635.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From andris.reinman at gmail.com Mon May 26 00:44:15 2014 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] RFC7162 (CONDSTORE and QRESYNC) +In-Reply-To: <5382D01E.22246.FAB84F9@David.Harris.pmail.gen.nz> +References: <5382D01E.22246.FAB84F9@David.Harris.pmail.gen.nz> +Message-ID: + +Several large e-mail providers do not support CONDSTORE, for example AOL, Mail.ru (large russian provider), QQ (large chinese provider), Outlook.com/Hotmail.com, Yahoo, Yandex (another large russian provider). So you can use it as a nice add-on if available but can not assume that you can always rely on it. + +Best regards, +Andris Reinman + +On 26.05.2014, at 8:24, David Harris wrote: + +> I'm just reading through RFC7162 and was wondering if anyone on this list +> would be willing to give a speculative estimate of the percentage of servers +> and clients that support CONDSTORE? I'm only looking for a +> "back-of-the-envelope" estimate here - even something like "more than half" +> or "less than half" would be useful. +> +> I'd also like to offer a short, heartfelt thanks to the people out there like +> Alexey Melnikov and Dave Cridland (representative names only - there are +> many, many more) who put in a lot of time and effort to come out with helpful +> RFCs like this. IMAP is complex and in places very arcane, so all assistance +> is helpful, and I for one appreciate it. +> +> Cheers! +> +> -- David -- +> +> ------------------ David Harris -+- Pegasus Mail ---------------------- +> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> +> True life insurance claim: +> "My car was legally parked as it backed into the other vehicle." +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22638.mbox:2,S new file mode 100644 index 00000000..22473d4c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22638.mbox:2,S @@ -0,0 +1,198 @@ +MBOX-Line: From jjmckay at comaxis.com Wed Apr 30 08:52:46 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <20140430143517.743B37306E@mailwash38.pair.com> +References: <53608FE7.8090909@verizon.net> + + <5360FF8D.9000201@comaxis.com> + <20140430143517.743B37306E@mailwash38.pair.com> +Message-ID: <53611C4E.7030904@comaxis.com> + +Of course, 2-legged OAuth 1.0 has been "deprecated" for several years +now. I think I heard Brandon mention once +that it would not be killed until there is a replacement, since a lot of +applications depend on it. I have experimented +also with everything I can find on OAuth 2.0 and nothing works for admin +access, or the documentation is insufficient +for me to do it correctly. + +On 4/30/2014 7:34 AM, Pete Maclean wrote: +> Jeff, +> +> I find your post very interesting because I have been trying on and +> off for months to get OAuth 2 to work for Gmail for Google Apps users +> via admin credentials -- without success. I do not have the luxury of +> using OAuth 1 because I started only recently and choose not to go to +> the trouble of implementing something that is deprecated and likely to +> quickly become obsolete. I have found the matter frustrating because +> of the lack of documentation and because the problem is never a +> failure to obtain a token but the failure of the token I get to work +> for IMAP authentication. (Making OAuth 2 work for individual Gmail +> users was, by comparison, a piece of cake.) +> +> I am gratified in particular to hear your call for detailed +> documentation on the topic because it tends to confirm that I have not +> simply missed something. +> +> Pete Maclean +> +> At 09:50 AM 4/30/2014, Jeff McKay wrote: +>> I have used oauth 2 with Gmail and it works well for my purpose. I +>> have seen the refresh token work several months after +>> first obtaining it with no intervening use. To change the subject +>> just a it, I wonder if Google could comment on the continuing +>> use of oauth 1 with Gmail? Currently that is the only method I know +>> that will allow me to grab Google Apps email data using +>> only administrative credentials, i.e. the client secret. If there is +>> a way to do that with oauth 2 I would appreciate detailed +>> low level documentation (not a library function). But I sure hope +>> that oauth 1 support is not going away anytime soon. +>> +>> On 4/29/2014 11:55 PM, Brandon Long wrote: +>>> I'm not our expert on oauth, he's welcome to pipe up here in a bit. +>>> +>>> I'd also point you to our documentation here, +>>> https://developers.google.com/gmail/oauth_overview +>>> which at the +>>> least has working examples. +>>> +>>> +>>> +>>> On Tue, Apr 29, 2014 at 10:53 PM, Joshua Cranmer +>>> > wrote: +>>> +>>> Hello, +>>> +>>> This is a message mostly directed to our fine Gmail server +>>> maintainers who happen to be listening on this list, but I think +>>> the issues here are relevant to other people who would read this +>>> list and I value the feedback of others, so I'm posting this +>>> publicly. +>>> +>>> Google's recent announcement +>>> (>> >) about its authentication polices, I have been led to believe, +>>> is in part a plea for clients to implement OAuth2.0-based +>>> authentication, and an intent to degrade experience of users for +>>> clients that remain authenticating based on common IMAP +>>> authentication passwords. I believe that I have a duty to the +>>> users of Thunderbird to provide them the best experience I can, +>>> but I believe that I also have the responsibility to help ensure +>>> that this experience can be easily had by both users of other +>>> email services and other email clients; the OAuth 2.0 +>>> requirements as I have found them put these responsibilities in +>>> conflict, and I do not want to be in the position of having to +>>> choose which is the more important one. +>>> +>>> So far, I've read the OAuth 2.0 RFC (6749), Google's +>>> documentation on its OAuth 2.0 implementation [1], and even the +>>> most recent draft of integrating OAuth into SASL +>>> (), +>>> which is what I view AUTH=XOAUTH2 in GMail's support as being +>>> analogous to. I have not yet had time to fully digest all the +>>> related emails about OAuth and SASL on the kitten working group. +>>> There has also been a discussion on this on Thunderbird's +>>> development mailing list +>>> (>> >), if you're interested in seeing some of the discussion that +>>> has already been brought up and my or others' personal views on +>>> the quality of OAuth 2.0. +>>> +>>> +>>> Pieces of information: +>>> * Client Identifier: This is required in the RFC, and it is +>>> emphatic that this is neither secret nor is it to be used alone +>>> for client authentication. The problem I have here is the +>>> registration requirement: not that it is hard, but rather that +>>> it introduces a discrimination on the part of less common mail +>>> services that might wish to use this mechanism, if clients have +>>> to register a separate identifier for every such server. Given +>>> that such data will evidently be public (e.g., checked into +>>> Thunderbird's source code; even were it not, it's still a simple +>>> matter to intercept all outgoing http/https requests and obtain +>>> the id from that), and given that IMAP already defines an ID +>>> call that is used by Thunderbird and other clients, if the call +>>> is merely to indicate to the user the name of the program +>>> wishing to obtain authorization, it seems to me that deriving +>>> the client identifier from the ID call somehow ought to be +>>> sufficient. +>>> +>>> +>>> The client identifier here, from my understanding, is different in +>>> that its an actual registered ID, not just some string. Re-using +>>> the ID isn't going to work, plus, as a SASL mechanism, its supposed +>>> to be contained and generic for use in multiple protocols, so +>>> relying on a protocol specific passing of that information was +>>> probably considered non-ideal. +>>> +>>> * Authorization endpoint: Arguably the biggest flaw in the +>>> entire process is that I see no way to build the HTTPS request +>>> to an OAuth authorization endpoint without hardcoding specific +>>> values. +>>> +>>> * Token endpoint: Similar to the authorization endpoint, the +>>> location of this is also left indeterminable. +>>> +>>> * Scope: It seems to me that this part, though technically +>>> optional in the OAuth specification, is meant to basically be +>>> required. For a single standardized name, it seems to me that, +>>> given that SASL mandates that applications using it describe a +>>> service name (cf. RFC 4422, section 4), it makes sense to use +>>> this parameter (or some simple derivation thereof) to use as the +>>> scope parameter. [2] +>>> +>>> * Refresh tokens: Google's documentation on this is vague. At +>>> times, it implies that these last essentially forever unless the +>>> user revokes access. At other times (and apparently in +>>> experiments), it seems that these last only for long-ish terms +>>> (e.g., a few weeks). This need to "refresh" the refresh tokens +>>> would be troubling to me, since it implies that I should be +>>> attempting to do more things in my power to autofill the +>>> server's authentication mechanisms without the user knowing, in +>>> accordance with the user's wish to not have to retype passwords +>>> implied by saving these credentials in our password manager. +>>> This sort of action appears to be contrary to the goals of OAuth +>>> 2.0, though. +>>> +>>> Providing this information via some sort of autoconfigurable, +>>> autodiscoverable mechanism given only the user's email and/or +>>> server name is, in my mind, absolutely necessary before any +>>> attempt to implement this in Thunderbird is started. While tying +>>> the records to DNS is theoretically better since a chain of +>>> trust can be followed with DANE, many clients may find it easier +>>> to look it up at some well-known URL similar to how +>>> Thunderbird's autoconfiguration mechanism already works. +>>> +>>> +>>> Yes, as far as I know, there is no discoverability mechanism as of yet. +>>> +>>> [1] Which is rather infuriating and confusing if all you're +>>> trying to do is figure out how to use AUTH=XOAUTH2, as most of +>>> the documentation is clearly geared towards usecases specific to +>>> other APIs and not IMAP or SMTP access. +>>> +>>> +>>> Ah, is this the documentation I pointed out above? Happy to pass on +>>> any feedback to the docs folks. +>>> +>>> [2] On careful rereading of the SASL OAUTHBEARER draft it seems +>>> that it is possible to automatically infer the desired scope... +>>> but only by executing a AUTHENTICATE command that fails, which +>>> is rather suboptimal workflow for trying to develop client +>>> behavior in this regard. It means, e.g., I can't wrap the OAUTH +>>> support in a generic SASL provider mechanism and expect to have +>>> it pick up the desired scope information. It's also suboptimal +>>> that the information about scope is revealed but not any other +>>> hints about how to go about requesting authorization. +>>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22641.mbox:2,S new file mode 100644 index 00000000..d1cd8e6c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22641.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From jkt at flaska.net Tue Mar 18 13:46:29 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> +Message-ID: <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + +On Tuesday, 18 March 2014 21:13:05 CEST, Michael M Slusarz wrote: +> Am I correct in my reading that this means that you lose any +> ability to protect message data via TLS if PREAUTH is used? In +> other words: was STARTTLS solely designed to protect +> authentication credentials (security) and not message data +> (privacy)? + +Not at all. Once issued, STARTTLS protects everything, i.e. both your +credentials and transfers of all messages. + +> I guess the workaround for a situation where you *could* +> preauthenticate based on connection factors/details, but still +> need message privacy, is to require some sort of dummy +> authentication (after initializing TLS layer). Feels pretty +> hackish though. + +That's what you could get with AUTH EXTERNAL. Also, nothing prevents a +server from going directly to PREAUTH if the whole connection is using +SSL/TLS ("port 993") with client certificates. + +I'm a bit confused by your message. How do you want to authenticate your +user? Specifically, what's the use case where you can safely verify the +user's identity, but cannot guarantee confidentiality of the connection +stream? + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22648.mbox:2,S new file mode 100644 index 00000000..f8ad8652 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22648.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From Pidgeot18 at verizon.net Tue Jan 14 16:37:33 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer (In a comment ) +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +Message-ID: <52D5D84D.6070208@verizon.net> + +A recent concern of mine has been attempting to work out the grand +messiness that is charsets in the context of reading and parsing email +messages. I am not aware of any prior attempts to assess the practice of +charsets in email, so I can only offer evidence from personal anecdote +and culling of bug reports on open-source software, neither of which are +a good source of information. I was wondering if anyone else on this +list had access to a larger database of messages that they could check +or have more specific generalities that are needed. + +The particular questions that are useful to me, in order of importance: +1. What charsets (and aliases) are needed to support mail? +2. How prevalent is unlabeled text in mail? +3. Do we need to support charset autodetection? Which charsets, and for +which languages? +4. How prevalent is HTML (or the +variant) in a message? How often do these parts have no charset +declaration in their Content-Type? How often are they different, and who +wins? +5. How prevalent are non-UTF-8 8-bit headers? +6. How prevalent are confused charsets (e.g., text that is labeled as +ISO 8859-1 that needs to be decoded as Windows-1252)? + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22651.mbox:2,S new file mode 100644 index 00000000..3f189eb9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22651.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Dec 6 02:01:29 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: +References: +Message-ID: <20131206100129.GE12843@gulbrandsen.priv.no> + +On Thu, Dec 05, 2013 at 11:18:32PM +0100, Davide Gullo wrote: +> Look at the RFC822.SIZE (14787), it is different from the size in +> RFC822 {14985}. +> Do you see something like that before? + +I've seen it. It doesn't happen often and most servers avoid it +completely, but I've seen it. + +> It could be a bug or I miss something from the IMAP protocol? + +You can call it either a server bug or an unrealistic demand from the +RFC. + +Supplying an exact number can be extremely expensive for the server, +since the data stored is often not exactly the same as on the wire, +e.g. with LF instead of CRLF line endings, or with attachments stored +in binary format instead of as base64. So some servers compute the +RFC822.SIZE at message arrival time. If the code is then changed (say, +the base64 encoder makes 74-character lines instead of 75) RFC822.SIZE +can be off by a little. It's regrettable. + +IMO, the wise client author does not expect that size to be exact, +even though the RFC says it has to be. You can use RFC822.SIZE to +display the message size (ie. "14k" or "1.2M" or what have you), but +when you count bytes you should use the literal size. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22656.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22656.mbox:2,S new file mode 100644 index 00000000..dbac92a2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22656.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From jkt at flaska.net Thu Nov 28 01:24:28 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Strange behavior from Office 365 IMAP +In-Reply-To: <52969020.8070807@comaxis.com> +References: <52969020.8070807@comaxis.com> +Message-ID: + +On Thursday, 28 November 2013 01:36:48 CEST, Jeff McKay wrote: +> A009 APPEND "Migrated/INBOX" "08-May-2013 13:38:56 -0800" +{21748} +> + Ready for additional command text. +> Delivered-To: jmckay9351@gmail.com + +Checking the obvious -- you do wait for the "+" continuation, right? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22659.mbox:2,S new file mode 100644 index 00000000..07e5c9f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22659.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From jkt at flaska.net Wed Oct 16 14:24:57 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Accessing the Content-Transfer-Encoding of a + =?iso-8859-1?Q?top-level_multipart?= +In-Reply-To: +References: <18960e4a-19cb-4a82-b287-aee478965e77@flaska.net> + +Message-ID: + +On Wednesday, 16 October 2013 22:44:55 CEST, Dave Cridland wrote: +> Perhaps I'm misunderstanding, but isn't the CTE of any multipart/* 7bit +by +> definition? + +No, as per page 17 of RFC2045: + + Certain Content-Transfer-Encoding values may only be used on certain + media types. In particular, it is EXPRESSLY FORBIDDEN to use any + encodings other than "7bit", "8bit", or "binary" with any composite + media type, i.e. one that recursively includes other Content-Type + fields. Currently the only composite media types are "multipart" and + "message". All encodings that are desired for bodies of type + multipart or message must be done at the innermost level, by encoding + the actual body that needs to be encoded. + +And indeed, I'm seeing multipart/mixed with CTE: 8bit; they are produced by +mlmmj mailing list moderation. + +The next paragraph is related to my fourth question: + + It should also be noted that, by definition, if a composite entity + has a transfer-encoding value such as "7bit", but one of the enclosed + entities has a less restrictive value such as "8bit", then either the + outer "7bit" labelling is in error, because 8bit data are included, + or the inner "8bit" labelling placed an unnecessarily high demand on + the transport system because the actual included data were actually + 7bit-safe. + +It doesn't answer what one might expect when dealing with such errors -- I +know that's a difficulr question, though. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095019.22662.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095019.22662.mbox:2,S new file mode 100644 index 00000000..8aa31d48 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095019.22662.mbox:2,S @@ -0,0 +1,166 @@ +MBOX-Line: From asuth at mozilla.com Tue Sep 3 03:53:00 2013 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Best way to support HTTP PUT based 'push' + notifications from IMAP? +Message-ID: <5225BF8C.7060602@mozilla.com> + +On devices that either have difficulty maintaining persistent TCP +connections or have power concerns about doing so, maintaining an IMAP +connection for IDLE/NOTIFY purposes is undesirable and it would be great +if the IMAP server could generate a notification via other means. + +For the Firefox OS e-mail client, one of the Web APIs the Firefox OS +platform makes available and that Mozilla and other contributors are +trying to standardize is the "Push API" (http://www.w3.org/TR/push-api/) +under the auspices of the webapps WG (http://www.w3.org/2008/webapps/). +The API is somewhat decoupled from the actual notification mechanism. +Mozilla's reference server protocol is documented at +https://wiki.mozilla.org/WebAPI/SimplePush/Protocol. + + From the IMAP server's perspective, the process is that the client uses +the Push API to get a URL and then the client tells the IMAP server the +URL. To notify the client, the IMAP server issues a PUT request to the +URL. The only data payload is the 'version' which is a monotonically +increasing 64-bit integer and allows for a degree of idempotency. The +only key thing for the version is that if the server doesn't increase +the value since the last time the client heard it, the client won't +receive a new notification. + +Our application-level goal is that rather than checking every N minutes, +after each synchronization attempt we refresh our notification request +before disconnecting from the IMAP server. The IMAP server would then +send a ping notification when new messages are received for the +account/inbox/whatever. + +Details/thoughts from my investigation are found below. In general, I'm +very interested in what server implementers think and would be willing +to adopt, especially for things that might be enabled-by-default in +deployments. It's been indicated to me that we (Mozilla) have +engineering resources that could be used to help provide patches to open +source implementation to help make this happen. + +Note that any solution that satisfies our needs could probably also +satisfy similar needs. For example, the Firefox OS Calendar App makes +use of the Google Calendar API's push notifications mechanism as +documented at https://developers.google.com/google-apps/calendar/v3/push + + +# Existing Work + +## XAPPLEPUSHSERVICE + +The only thing I've seen in the wild seems to be XAPPLEPUSHSERVICE +advertised by Yahoo's IMAP server and Apple's dovecot fork. The most +useful information I've found on this is +http://www.dovecot.org/list/dovecot/2012-August/067682.html which leads +us to the implementation of XAPPLEPUSHSERVICE at +http://www.opensource.apple.com/source/dovecot/dovecot-239.8/dovecot/src/imap/cmd-x-apple-push-service.c +which tells us the syntax of the command. While the idea is similar, +XAPPLEPUSHSERVICE does not seem to support alternate endpoints to +Apple's Push Notification Service and so is not useful for our purposes. + +## sieve/enotify + +The sieve enotify extension (http://tools.ietf.org/html/rfc5435) seems +like the only standadized mechanism capable of implementing such logic. +Unfortunately, there is no HTTP/URL notification listed in the registry +at +https://www.iana.org/assignments/sieve-notification/sieve-notification.xhtml. +'mailto' is a defined mechanism that has some support (ex: Pigeonhole on +Dovecot), and it's possible for Mozilla to stand-up a proxy to help +bridge this gap. + +The main problem with sieve is that adoption does not seem particularly +wide-spread and discoverability when supported is limited, although I'm +hoping that http://tools.ietf.org/html/rfc6785 could help improve that. + + +# Potential Workarounds + +I think the following options exist to make this work today: + +## sieve mailto bridge + +Stand up an SMTP-receiving proxy so that sieve/enotify/mailto can be +used to trigger instead of HTTP PUT. Use sieve to set up a rule to +generate mail notifications every time a message is received. No +message contents would be sent. This might result in a large number of +notifications since it's not obvious to me how to write a stateful sieve +script. + +## Hosted IMAP Proxy (Undesirable due to inherent credential/data exposure) + +A proposal from those working on the back-end of Mozilla's push +notification service is an HTTPS-accessible proxy. Instead of having +the device maintain the long-lived IMAP connection, the device has a +server do that on its behalf. The very undesirable aspect of such a +solution is that while the proxy need not persist the credentials to +disk, it does need to know them to establish the connection using +traditional LOGIN. And even if a challenge-response authentication +mechanism was used in such a way that the proxy server could not +establish additional connections without device support, the proxy (or +whatever pretends to be the proxy) would still have a fully authorized +IMAP connection to use as it chooses until the connection is dropped. + + +# Potential Standards Approaches + +## Create a new capability, ex: PUSH-NOTIFY-HTTP=PUT + +Create a "PUSH-NOTIFY-HTTP PUT " capability with +very simple semantics: +- Each request is one-shot. The request lives until it is fired. +- At once most one request per URL; new requests replace the old request. +- An HTTP PUT is triggered to the given URL with content-type +application/x-www-form-urlencoded with the provided body payload. +- Body payload is limited to something really small; we only need to be +able to encode "version=<64bitnumber>" +- Delivery to the Inbox or maybe just delivery to the account in general +in case a filter files the message somewhere. Messages filed to the +junk folder would not trigger the notification. + +## sieve enotify HTTP PUT extension + +Since it's not likely for adoption to happen immediately anyways and +sieve is extremely powerful it seems like a reasonable choice to avoid +introducing a new feature which is doomed to feature creep. + +Because sieve is not particularly stateful the main issue would be how +to achieve single-shot semantics. This might be best addressed by doing +something like the servermetadata example at +http://tools.ietf.org/html/rfc5490#section-4.1 where the client would +use metadata to control the process and the URL notification function +would have built-in idempotent semantics. Each time the client +connected it would refresh the 'verson' it uses and which is used in the +notification invocation. Then when the sieve rule next fires, the +URL/payload changes so that the notify action actually goes through. + +Multiple consumers of such notifications would be handled during +rewrites of the sieve rules. A new device setting up for push +notifications would identify its rule based on the URL the push API +tells it. It would write its rule to the sieve store along with the +current timestamp for the rule. It would also cull any other rules of +the same variety whose timestamp more than twice as old as the +rule-rewrite-interval based on the timestamp. + +## custom sieve extension + +Realize the above state management logic is too crazy. Internalize the +one-shot state management, still using metadata somehow. + +## Extend NOTIFY somehow + +This seems like it would be a mismatch since the NOTIFY subscription is +inherently associated with the connection lifetime and any other +lifetime would be weird. + +## Define CONTEXT=pushnotify + +Similar to NOTIFY, this seems like a mismatch. + + +Thanks for any/all responses, +Andrew Sutherland + diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22595.mbox:2,S new file mode 100644 index 00000000..e708bbc6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22595.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Mar 9 15:59:19 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + +Message-ID: <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + +On Mar 9, 2015, at 2:19 PM, Imants Cekusins wrote: + +> Current standards (i.e. case insensitive commands, mixture of +> encodings within a single text block, injection of CRLF which is not +> part of the text), complicate interpreting a lot. It also consumes a +> lot of CPU resources - visibly. + +Is your measurement data and methodology for this available online anywhere? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22623.mbox:2,S new file mode 100644 index 00000000..34e493cd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22623.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From brong at fastmail.fm Wed Sep 10 17:58:59 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Enhanced IDLE +In-Reply-To: <5410F147.8040803@jcea.es> +References: <5410F147.8040803@jcea.es> +Message-ID: <1410397139.2469479.166104813.4C1E57C9@webmail.messagingengine.com> + +On Thu, Sep 11, 2014, at 10:48 AM, Jesus Cea wrote: +> As far as I know, IDLE *ONLY* notifies changes in the selected mailbox. +> If you want to monitor all mailboxes, you have to use NOTIFY. But +> checking around I see references to something called "enhanced idle", +> apparently able to notify changes in any mailbox using IDLE. For instance: +> +> + +"If you choose not to install fam, you can still use IMAP_ENHANCEDIDLE, but instead Courier IMAP will poll for changes every 60 seconds for folders opened by IMAP clients." + +> I would like to know more about that "enhanced IDLE". How to activate it +> in Dovecot would be nice too :-p +> +> I hope this is not offtopic. Thanks for your time and your help. + +So it smells to me like "enhanced idle" is just "idle which actually works". Dovecot (and Cyrus for that matter) already have that. +I believe Thunderbird just does a STATUS on every folder in the background to get data for the other folders. + +Regards, + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22629.mbox:2,S new file mode 100644 index 00000000..5905aef7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22629.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From echappa at gmx.com Tue Jul 29 19:18:47 2014 +To: imap-protocol@u.washington.edu +From: Eduardo Chappa +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail search on Subject +Message-ID: + +Dear all, + + Apologies if this is not the right forum to post this, but it seems that +it is the de facto place to report bugs on Gmail. I did send this +privately a few weeks ago, but received not acknowledgement, so I hope +this time it will be considered. + + A search using the string "%" matches all messages. For example, the +command + +0000000a SEARCH SUBJECT "%" + +matches all messages in my inbox, not only those that contain the string +"50%", but also those that do not contain it, such as this one. + +Thank you. + +-- +Eduardo +http://patches.freeiz.com/alpine/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22635.mbox:2,S new file mode 100644 index 00000000..9f9cffbe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22635.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From mg at MIT.EDU Mon May 26 10:15:57 2014 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] RFC7162 (CONDSTORE and QRESYNC) +In-Reply-To: +References: <5382D01E.22246.FAB84F9@David.Harris.pmail.gen.nz> + +Message-ID: + +Can you share an actual breakdown? + +Is this 90% of providers or 90% of estimated users' accounts? + + + +On Mon, May 26, 2014 at 12:44 AM, Andris Reinman +wrote: + +> Several large e-mail providers do not support CONDSTORE, for example AOL, +> Mail.ru (large russian provider), QQ (large chinese provider), +> Outlook.com/Hotmail.com, Yahoo, Yandex (another large russian provider). So +> you can use it as a nice add-on if available but can not assume that you +> can always rely on it. +> +> Best regards, +> Andris Reinman +> +> On 26.05.2014, at 8:24, David Harris wrote: +> +> > I'm just reading through RFC7162 and was wondering if anyone on this list +> > would be willing to give a speculative estimate of the percentage of +> servers +> > and clients that support CONDSTORE? I'm only looking for a +> > "back-of-the-envelope" estimate here - even something like "more than +> half" +> > or "less than half" would be useful. +> > +> > I'd also like to offer a short, heartfelt thanks to the people out there +> like +> > Alexey Melnikov and Dave Cridland (representative names only - there are +> > many, many more) who put in a lot of time and effort to come out with +> helpful +> > RFCs like this. IMAP is complex and in places very arcane, so all +> assistance +> > is helpful, and I for one appreciate it. +> > +> > Cheers! +> > +> > -- David -- +> > +> > ------------------ David Harris -+- Pegasus Mail ---------------------- +> > Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> > Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> > +> > True life insurance claim: +> > "My car was legally parked as it backed into the other vehicle." +> > +> > +> > +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22638.mbox:2,S new file mode 100644 index 00000000..f4124a50 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22638.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Wed Apr 30 18:34:10 2014 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <53611968.6010707@verizon.net> +References: <53608FE7.8090909@verizon.net>, + , + <53611968.6010707@verizon.net> +Message-ID: <5361A492.27040.8E4360E0@David.Harris.pmail.gen.nz> + +Tyro alert! Sorry to be thick here - I'll try to keep it brief. + +On 30 Apr 2014 at 10:40, Joshua Cranmer wrote: + +> My suggestion, which I think got misunderstood, was that instead of +> relying on a pre-registration mechanism for the client ID, IMAP clients +> should be able to construct a client ID somehow from the IMAP ID that +> they send out. I didn't intend to imply that the client ID should be +> extracted by the server from observing an IMAP ID on the transaction. + +Could you explain what "IMAP ID" you're talking about here? Is this +something specific to the OAUTH2 specification, or has some kind of ID +been added to post-RFC3501 IMAP while I was asleep? + +Secondly, could someone send me a link showing the intended use of +OAUTH in an IMAP implementation? Am I correct in assuming that you are +intended to submit a user's GMail short-term token to login to GMail instead +of using a username/password or other SASL mechanism? + +Finally, could someone comment on how real any of this is? The Wikipedia +article on OAUTH (I know, I know - Wikipedia is Wikipedia, but it's useful +despite all its shortcomings) paints a picture of a vague, fractured, +poorly-designed mechanism being torn apart by internal bickering and +infighting. + + http://en.wikipedia.org/wiki/OAuth + +Links to overview sources that could help bring me up to speed on the broad +issues would be gratefully received. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Thought for the day: + A penny saved is ridiculous. + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22641.mbox:2,S new file mode 100644 index 00000000..4e4b7f92 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22641.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From slusarz at curecanti.org Tue Mar 18 14:25:49 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> +Message-ID: <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + +Quoting Jan Kundr?t : + +> On Tuesday, 18 March 2014 21:13:05 CEST, Michael M Slusarz wrote: +>> In other words: was STARTTLS solely designed to protect +>> authentication credentials (security) and not message data (privacy)? +> +> Not at all. Once issued, STARTTLS protects everything, i.e. both +> your credentials and transfers of all messages. + +Except as defined in base spec, STARTTLS is defined as "you are +allowed to protect privacy ONLY if you protect authentication". In +the absence of a need to protect authentication, you can't protect +privacy. + +>> I guess the workaround for a situation where you *could* +>> preauthenticate based on connection factors/details, but still need +>> message privacy, is to require some sort of dummy authentication +>> (after initializing TLS layer). Feels pretty hackish though. +> +> That's what you could get with AUTH EXTERNAL. + +Not a part of the base IMAP spec, which is what I was talking about. + +> Also, nothing prevents a server from going directly to PREAUTH if +> the whole connection is using SSL/TLS ("port 993") with client +> certificates. + +STARTTLS deprecated the use of port 993, which isn't an official IMAP +port FWIW. It hasn't really happened, but still is good to avoid and +end users appreciate it when they don't have to have any knowledge of +port number. + +I wish this did work with the STARTTLS command (i.e. PREAUTH response +after STARTTLS in the above situation). Unfortunately that isn't part +of the spec either. + +> I'm a bit confused by your message. How do you want to authenticate +> your user? Specifically, what's the use case where you can safely +> verify the user's identity, but cannot guarantee confidentiality of +> the connection stream? + +Simple real-world example would be a machine on an internal network +that is guaranteed to belong to a certain user. + +I don't really care one way or another - mainly wanted to verify to +myself that I wasn't missing a valid use-case. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22648.mbox:2,S new file mode 100644 index 00000000..f6a55067 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22648.mbox:2,S @@ -0,0 +1,107 @@ +MBOX-Line: From blong at google.com Tue Jan 14 17:08:47 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: <52D5D84D.6070208@verizon.net> +References: <52D5D84D.6070208@verizon.net> +Message-ID: + +I don't have exact numbers for you, but we recently did some large (>10M +messages) investigations because we were doing some invasive changes to our +mime parser. + +And the answer is, it sucks. See also +http://cr.yp.to/smtp/8bitmime.html It also makes the downgrade part of +RFC5738 look pretty silly, as I +imagine almost every IMAP server is basically doing the same thing today, +sending 8bits blindly, assuming the headers were 7bit clean. It seems like +implementing RFC5738 makes your server break more messages than it fixes. + + +On Tue, Jan 14, 2014 at 4:37 PM, Joshua Cranmer (In a comment) < +Pidgeot18@verizon.net> wrote: + +> A recent concern of mine has been attempting to work out the grand +> messiness that is charsets in the context of reading and parsing email +> messages. I am not aware of any prior attempts to assess the practice of +> charsets in email, so I can only offer evidence from personal anecdote and +> culling of bug reports on open-source software, neither of which are a good +> source of information. I was wondering if anyone else on this list had +> access to a larger database of messages that they could check or have more +> specific generalities that are needed. +> +> The particular questions that are useful to me, in order of importance: +> 1. What charsets (and aliases) are needed to support mail? +> + +Is there a reason you wouldn't just use some existing library with support +for just about everything? + + +> 2. How prevalent is unlabeled text in mail? +> + +Prevalent enough. Even if less than 1%, if you expect billions of +messages, you'll see too many of them to ignore. + + +> 3. Do we need to support charset autodetection? Which charsets, and for +> which languages? +> + +Well, that depends on what you do with the data. If you don't need to do +conversions and such, I guess it won't matter. We need to make our +messages display by default in UTF8 in the browser, forcing users to work +around that is pretty poor. If you mostly rely on third party clients, you +may be able to rely on them to translate your data for you. + + +> 4. How prevalent is HTML (or the variant) +> in a message? How often do these parts have no charset declaration in their +> Content-Type? How often are they different, and who wins? +> + +They do differ, but we just let the auto-detection take care of it instead +of trying to parse it directly. Yahoo used to also generate a lot of html +entity references even in text/plain parts, not on purpose, but if you +submit an html textdata form with unicode in it when the page is in a +non-utf8 charset, the browser does the conversion using entity refs. + + +> 5. How prevalent are non-UTF-8 8-bit headers? +> + +UTF8 is the first or second most prevalent, but there were many others we +saw (koi8-r is probably the next highest). + + +> 6. How prevalent are confused charsets (e.g., text that is labeled as ISO +> 8859-1 that needs to be decoded as Windows-1252)? + + +Prevalent enough that we basically ignore when people say they're 8859-1 +and don't provide it as a hint to our detector. That's not just for 1252, +though, there are a lot of bad web forms to email gateways out there which +do a lot of garbage. + +I realize these answers aren't very exact and in the vein of "implement it +all", but that's basically what it looks like to us. + +Brandon + + +> +> +> -- +> Beware of bugs in the above code; I have only proved it correct, not tried +> it. -- Donald E. Knuth +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22651.mbox:2,S new file mode 100644 index 00000000..6e3fbc47 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22651.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From blong at google.com Fri Dec 6 07:58:02 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: +References: + +Message-ID: + +Ah, right, we compute the attributes in alphabetical order, so normally +we'd do the BODY first and then RFC822.SIZE would be correct. Since you're +using the older RFC822 name instead, its coming later. + +Which is to say that yes the size can be off, but we tried to make it be +correct when you request both, otherwise Thunderbird would truncate larger +messages that were being fetched in chunks. + +Brandon +On Dec 5, 2013 2:57 PM, "Brandon Long" wrote: + +> Why ask for the size if you're getting the whole data? j/k +> +> Anyways, I'm a bit surprised that it would be wrong in that context, but +> yes, they can be off in our implementation. We've been trying to fix all +> of our data to prevent it, but the fixes are still ongoing. +> +> If you want to send me the account off-list, I can take a look to see if +> its a known issue causing it in this case or not. +> +> Brandon +> +> +> On Thu, Dec 5, 2013 at 2:18 PM, Davide Gullo wrote: +> +>> Hi, +>> I'm fetching data from Gmail IMAP server and I get this response: +>> +>> 20293 FETCH (X-GM-MSGID 1345230530776790491 UID 33925 RFC822.SIZE +>> *14787* RFC822 {*14985*} +>> +>> Look at the RFC822.SIZE (14787), it is different from the size in +>> RFC822 {14985}. +>> Do you see something like that before? +>> It could be a bug or I miss something from the IMAP protocol? +>> +>> +>> Thanks and Regards, +>> +>> -- +>> Davide Gullo +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22659.mbox:2,S new file mode 100644 index 00000000..a61e7eb1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22659.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Oct 16 14:30:15 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Accessing the Content-Transfer-Encoding of a + top-level multipart +In-Reply-To: +References: <18960e4a-19cb-4a82-b287-aee478965e77@flaska.net> + +Message-ID: <27ae442a-80d7-4451-a416-2512d25052f4@email.android.com> + +No, multipart does not have a cte at all. The leaf parts may have different cte values. + +As I recall, there is a ban on sending cte for a multipart somewhere in the mime documents. + +Arnt +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22662.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22662.mbox:2,S new file mode 100644 index 00000000..09a3938b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22662.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Tue Sep 3 16:21:23 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Best way to support HTTP PUT based 'push' + notifications from IMAP? +In-Reply-To: <5225BF8C.7060602@mozilla.com> +References: <5225BF8C.7060602@mozilla.com> +Message-ID: <8B2FFC28-F503-4EAF-90E9-42278ABCBB02@iki.fi> + +On 3.9.2013, at 13.53, Andrew Sutherland wrote: + +> On devices that either have difficulty maintaining persistent TCP connections or have power concerns about doing so, maintaining an IMAP connection for IDLE/NOTIFY purposes is undesirable and it would be great if the IMAP server could generate a notification via other means. +> +> For the Firefox OS e-mail client, one of the Web APIs the Firefox OS platform makes available and that Mozilla and other contributors are trying to standardize is the "Push API" (http://www.w3.org/TR/push-api/) under the auspices of the webapps WG (http://www.w3.org/2008/webapps/). The API is somewhat decoupled from the actual notification mechanism. Mozilla's reference server protocol is documented at https://wiki.mozilla.org/WebAPI/SimplePush/Protocol. +> +> From the IMAP server's perspective, the process is that the client uses the Push API to get a URL and then the client tells the IMAP server the URL. To notify the client, the IMAP server issues a PUT request to the URL. The only data payload is the 'version' which is a monotonically increasing 64-bit integer and allows for a degree of idempotency. The only key thing for the version is that if the server doesn't increase the value since the last time the client heard it, the client won't receive a new notification. + +Interesting. I talked with Stephan Bosch (Pigeonhole author) about this and here's some of our thoughts: + + - Probably a new IMAP command would be best for this. There would have to be some limit to how many new URLs can be registered. + + - The Protocol Considerations recommends not sending a notification while the client is already connected. This is annoyingly difficult to do, and I don't think it's really worth the effort. (And it would reuqire the logged in client to identify itself anyway somehow.) If a mobile client is already connected, the device's radio is probably already on anyway so it doesn't matter much? And it's going to be sent only once anyway. The client could of course cancel the URL when it logs in. + + - To get widespread adoption the default behavior should be to enable this. I don't really see any dangers in doing that. I'm not sure if by default it should notify only about mails in INBOX, or mails about everywhere except in \Junk or \Trash (as specified by SPECIAL-USE). I'm leaning a bit towards INBOX-only by default. + + - If Sieve script marks the message as \Seen, there shouldn't be a notification + + - Sieve script could be used to further configure which mails/folders trigger a push notification. Most importantly it should be configurable that a high volume mailing list wouldn't trigger a push notification all the time. + + - Most installations don't allow users to directly modify their Sieve scripts. From that perspective specifying the folder push rules via IMAP could be useful (e.g. NOTIFY-based). But then again maybe that's too much complexity, and if this becomes a problem the email providers will do something about it. + + - Push should probably be triggered only by newly delivered mails, not IMAP APPEND/COPY. + + - IMAP clients should re-register the URL periodically even if the previous one hadn't been triggered. Otherwise if a server loses the registered URL for any reason, the client would stop receiving notifications forever. + + - This feature could be quite easily implemented for old Dovecot versions as a plugin, so Debian stable users wouldn't necessarily have to wait 3 years for it. + +> ## Hosted IMAP Proxy (Undesirable due to inherent credential/data exposure) +> +> A proposal from those working on the back-end of Mozilla's push notification service is an HTTPS-accessible proxy. Instead of having the device maintain the long-lived IMAP connection, the device has a server do that on its behalf. The very undesirable aspect of such a solution is that while the proxy need not persist the credentials to disk, it does need to know them to establish the connection using traditional LOGIN. And even if a challenge-response authentication mechanism was used in such a way that the proxy server could not establish additional connections without device support, the proxy (or whatever pretends to be the proxy) would still have a fully authorized IMAP connection to use as it chooses until the connection is dropped. + +BTW. Dovecot has the ability to use a remote IMAP server as email storage, so if this push feature was implemented by Dovecot, anyone could get the push functionality from any IMAP server by setting up their own Dovecot proxy. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095020.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095020.22665.mbox:2,S new file mode 100644 index 00000000..c36039b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095020.22665.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From docbook.xml at gmail.com Thu Aug 8 14:57:19 2013 +To: imap-protocol@u.washington.edu +From: "Ali, Saqib" +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] GMail IMAP: returning BODYSTRUCTURE for embedded + messages +Message-ID: + +Hello, + +Has there been any progress made on this? + +Thanks! +Saqib + +Brandon Long google.com> writes: +> +> Yes, we have an open bug for this one, I'm not sure why there hasn't +> been any progress on it. +> +> Brandon +> +> On Thu, May 19, 2011 at 7:35 AM, Mark Crispin panda.com> wrote: +> > On Thu, 19 May 2011, Jan Kundr?t wrote: +> >> +> >> I'd appreciate if you could investigate your compliance with the format +> >> of BODYSTRUCTURE you generate when working with certain messages, as +> >> described in this messages. The same issue was reported to you through +> >> an internal issue tracker in January 2011 by Henner Zeller on my behalf. +> > +> > And was reported by me more than 3 years ago. +> > +> > -- Mark -- +> > +> > http://panda.com/mrc +> > Democracy is two wolves and a sheep deciding what to eat for lunch. +> > Liberty is a well-armed sheep contesting the vote. +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol u.washington.edu +> > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> > +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22595.mbox:2,S new file mode 100644 index 00000000..17d41be8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22595.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From imantc at gmail.com Mon Mar 9 16:44:00 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> +Message-ID: + +> Is your measurement data and methodology for this available online anywhere? + +this is a subjective assessment. Email servers are way too busy for +what they deliver. I believe it is for these reasons: + +Parsing takes time. So does transfer decoding and charset conversion, +unwrapping text, dot stuffing. + +It can be reduced to: +no case conversion for commands; no parsing for commands even: a +simple switch case statement suffice; + +no parsing for CRLF, empty line or DOT CRLF; actually, no content +parsing at all is necessary for transmission; + +no transfer encoding / decoding (it is transferred as binary); + +no charset decoding: a single encoding is applied to the entire (text +part of) the message. + + +Simply from pragmatic point of view: if these tasks need not to be +done, server is less busy and can process higher throughput. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22623.mbox:2,S new file mode 100644 index 00000000..c7cf576e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22623.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From angel at 16bits.net Thu Sep 11 16:02:35 2014 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?=C1ngel_Gonz=E1lez?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <09c251b8-ba35-476e-a3d2-1e352c0ce58f@gulbrandsen.priv.no> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <1409774552.1122.3.camel@16bits.net> + <03710d62-c480-4224-b33a-96f979ebd1a3@gulbrandsen.priv.no> + <1409778099.1122.7.camel@16bits.net> + + <1409785422.1122.9.camel@16bits.net> + <09c251b8-ba35-476e-a3d2-1e352c0ce58f@gulbrandsen.priv.no> +Message-ID: <1410476555.2441.1.camel@16bits.net> + +Arnt Gulbrandsen wrote: +> The problem is: What it do if there's a problem, the description includes +> UTF8, and the client hasn't indicated via ENABLE that it can handle UTF in +> human-readable text. +> +> The revised problem is: What it do if there's a problem, the description +> includes UTF8, and the client hasn't indicated via LANGUAGE that it can +> handle UTF in human-readable text. +> +> Not much difference. +> +> Arnt + +You would have several sets of messages for the different languages. +Amongst them you include one that is used as default (if no language is +sent) and doesn't contain utf-8 characters. Just like LANG=C is limited +to ascii. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22629.mbox:2,S new file mode 100644 index 00000000..121b0a1d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22629.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From blong at google.com Wed Jul 30 00:43:34 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail search on Subject +In-Reply-To: +References: +Message-ID: + +In violation of the IMAP spec, Gmail's IMAP search is implemented on top of +our search index, and is not sub-string search. Well, that's not entirely +true, we do implement sub-string search for "non indexed" headers, which +admittedly is more complicated for developers to understand... but the +performance benefit is considered to be worth it. + +If you search for '%' in the Gmail web interface, you'll see that it +matches every message there as well. That's probably unintended behavior. + I haven't checked recently, but last I knew, our search index didn't +include symbols, though its possible it does special case some symbols for +things like 'c++'. In any case, what you're most likely seeing is that +terms are added to the search, the '%' is parsed into nothing, so what +remains is just the added terms (ie, in:foldername). + +We've debated before what the "proper" response is in this context, whether +to have no/all results, or whether to have an error response like NO +[SERVERBUG] when we're given a query which makes no sense to our +implementation. Currently, we tend to respond with "all in folder" as more +of an accident of implementation than purpose. In general, clients seem +ill prepared for NO responses... or even to an OK response without an +untagged response. + +Brandon + + +On Tue, Jul 29, 2014 at 7:18 PM, Eduardo Chappa wrote: + +> Dear all, +> +> Apologies if this is not the right forum to post this, but it seems that +> it is the de facto place to report bugs on Gmail. I did send this privately +> a few weeks ago, but received not acknowledgement, so I hope this time it +> will be considered. +> +> A search using the string "%" matches all messages. For example, the +> command +> +> 0000000a SEARCH SUBJECT "%" +> +> matches all messages in my inbox, not only those that contain the string +> "50%", but also those that do not contain it, such as this one. +> +> Thank you. +> +> -- +> Eduardo +> http://patches.freeiz.com/alpine/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22635.mbox:2,S new file mode 100644 index 00000000..dd743ab9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22635.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From nicolson at google.com Tue May 27 11:09:32 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> +Message-ID: + +I don't see any error message in the Gmail code for "hierarchy character +ignored". When I try to reproduce this, I see something different: + +a create foo/ +a OK [CANNOT] Ignoring hierarchy declaration (Success) + +This seems to follow 6.3.3. + + +On Fri, May 23, 2014 at 9:09 PM, David Harris wrote: + +> On 23 May 2014 at 18:03, Jeff McKay wrote: +> +> > Has something changed with how Gmail handles the hierarchy character +> > in the CREATE command? I am sure I had this working at one point, but +> > now: +> > +> > CREATE "TopLevelFolder/" +> > +> > generates "NO hierarchy character ignored" +> +> The server would appear to be in error. See RFC3501, section 6.3.3 ("The +> Create Command"): +> +> If the mailbox name is suffixed with the server's hierarchy +> separator character (as returned from the server by a LIST +> command), this is a declaration that the client intends to create +> mailbox names under this name in the hierarchy. Server +> implementations that do not require this declaration MUST ignore +> the declaration. In any case, the name created is without the +> trailing hierarchy delimiter. +> +> This seems pretty unambiguous to me, but no doubt there's an alternative +> reading I haven't considered (there usually is). I assume GMail actually +> *does* support submailboxes (I don't personally use it)? +> +> Interestingly, the example for section 6.3.3 is an almost exact match to +> your +> report: +> +> Example: +> C: A003 CREATE owatagusiam/ +> S: A003 OK CREATE completed +> +> Note that there is a reverse condition to this where a server may report a +> mailbox with a trailing hierarchy delimiter as part of a LIST response; I +> confess I've never understood exactly what that means (Exchange used to +> do it and may still do so) - Mark Crispin once explained it to me as having +> some meaning related to a test for existence, but I couldn't grasp what he +> meant. +> +> Cheers! +> +> -- David -- +> +> ------------------ David Harris -+- Pegasus Mail ---------------------- +> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> +> Real newspaper headlines from U.S. papers: +> TRAFFIC DEAD RISE SLOWLY +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22638.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22638.mbox:2,S new file mode 100644 index 00000000..bdb8041d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22638.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From brong at fastmail.fm Wed Apr 30 21:20:39 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] OAUTH and IMAP +In-Reply-To: <5361A492.27040.8E4360E0@David.Harris.pmail.gen.nz> +References: <53611968.6010707@verizon.net> + <5361A492.27040.8E4360E0@David.Harris.pmail.gen.nz> +Message-ID: <1398918039.5438.112413829.2E4642A9@webmail.messagingengine.com> + +On Thu, May 1, 2014, at 11:34 AM, David Harris wrote: +> Could you explain what "IMAP ID" you're talking about here? Is this +> something specific to the OAUTH2 specification, or has some kind of ID +> been added to post-RFC3501 IMAP while I was asleep? + +It's only post-RFC3501 if you have a time machine, I guess. + +http://www.ietf.org/rfc/rfc2971.txt + +Cheers, + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22641.mbox:2,S new file mode 100644 index 00000000..eaa9c8b6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22641.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From jkt at flaska.net Tue Mar 18 14:58:35 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> +Message-ID: + +On Tuesday, 18 March 2014 22:25:49 CEST, Michael M Slusarz wrote: +> Except as defined in base spec, STARTTLS is defined as "you are +> allowed to protect privacy ONLY if you protect authentication". +> In the absence of a need to protect authentication, you can't +> protect privacy. + +That's right. To my understanding, providing just these two options: + +a) don't protect anything, +b) protect everything, + +is much simpler than doing this in a more fine-grained manner, and the cost +of forcing STARTTLS to happen earlier is negligible. But perhaps I'm +missing something? + +>> That's what you could get with AUTH EXTERNAL. +> +> Not a part of the base IMAP spec, which is what I was talking about. + +The way I see it, IMAP delegates all means of authentication and +authorization except the basic LOGIN (which is probably specified mainly +for backward compatibility) to SASL, doesn't it? But you're of course right +that it is not a mandatory part of the spec. + +Besides, there's a reference to the EXTERNAL and an example of how to use +it with STARTTLS right in the official IMAP RFC [1]. + +> Simple real-world example would be a machine on an internal +> network that is guaranteed to belong to a certain user. + +While I can imagine a scenario where an attacker can listen, but cannot +spoof, I think that would be quite an artificial setup to be honest. + +With kind regards, +Jan + +[1] http://tools.ietf.org/html/rfc3501#section-6.2.1 + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22648.mbox:2,S new file mode 100644 index 00000000..e3e44591 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22648.mbox:2,S @@ -0,0 +1,123 @@ +MBOX-Line: From Pidgeot18 at verizon.net Tue Jan 14 19:04:04 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer (In a comment ) +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: +References: <52D5D84D.6070208@verizon.net> + +Message-ID: <52D5FAA4.6030406@verizon.net> + +On 1/14/2014 7:08 PM, Brandon Long wrote: +> I don't have exact numbers for you, but we recently did some large +> (>10M messages) investigations because we were doing some invasive +> changes to our mime parser. + +Coincidence, I'm also doing invasive changes to our mime parser. Where +"invasive" means "rewriting from scratch." :-P +> +> And the answer is, it sucks. See also +> http://cr.yp.to/smtp/8bitmime.html It also makes the downgrade part +> of RFC5738 look pretty silly, as I imagine almost every IMAP server is +> basically doing the same thing today, sending 8bits blindly, assuming +> the headers were 7bit clean. It seems like implementing RFC5738 makes +> your server break more messages than it fixes. + +The more I dig into emitting MIME properly, the more I myself am tempted +to ignore its strictures outright. +> +> +> On Tue, Jan 14, 2014 at 4:37 PM, Joshua Cranmer (In a comment) +> > wrote: +> +> A recent concern of mine has been attempting to work out the grand +> messiness that is charsets in the context of reading and parsing +> email messages. I am not aware of any prior attempts to assess the +> practice of charsets in email, so I can only offer evidence from +> personal anecdote and culling of bug reports on open-source +> software, neither of which are a good source of information. I was +> wondering if anyone else on this list had access to a larger +> database of messages that they could check or have more specific +> generalities that are needed. +> +> The particular questions that are useful to me, in order of +> importance: +> 1. What charsets (and aliases) are needed to support mail? +> +> +> Is there a reason you wouldn't just use some existing library with +> support for just about everything? + +Largely, the library we're using is deciding to attempt to be proactive +against charset proliferation and accept only a narrow selection of +charsets. Thus, anything not inside that set needs to be manually +implemented. The set of charsets may be found at +, if you scroll down a bit. +So far, the only extra charset I've found that I need to support is the +abominable UTF-7 (grrrrrr). +> +> 3. Do we need to support charset autodetection? Which charsets, +> and for which languages? +> +> +> Well, that depends on what you do with the data. If you don't need to +> do conversions and such, I guess it won't matter. We need to make our +> messages display by default in UTF8 in the browser, forcing users to +> work around that is pretty poor. If you mostly rely on third party +> clients, you may be able to rely on them to translate your data for you. + +I need to be able to fairly reliable convert to UTF-8 (although I do +have APIs in place in the parser to be able to override charsets on a +per-message basis). I think, for the moment, Thunderbird only (attempts +to) autodetects Japanese charsets, and the functionality required to get +that working in my new API is much more difficult and annoying, so I +want to avoid it if I possibly can. Given that we've gotten away without +autodetection in most of the world thus far, I was hoping that we could +get away without it in the one or two locales that still have it. +> +> 4. How prevalent is HTML (or the +> variant) in a message? How often do these parts have no charset +> declaration in their Content-Type? How often are they different, +> and who wins? +> +> +> They do differ, but we just let the auto-detection take care of it +> instead of trying to parse it directly. Yahoo used to also generate a +> lot of html entity references even in text/plain parts, not on +> purpose, but if you submit an html textdata form with unicode in it +> when the page is in a non-utf8 charset, the browser does the +> conversion using entity refs. + +Since I really don't want to implement autodetection, I guess that means +I have to do the HTML scan. :-/ I was really, really hoping to +not have to write yet another (streaming) HTML parser just to figure out +what charset the message is supposed to be. +> +> 5. How prevalent are non-UTF-8 8-bit headers? +> +> +> UTF8 is the first or second most prevalent, but there were many others +> we saw (koi8-r is probably the next highest). + +The algorithm I was looking at implementing was try as UTF-8 or fallback +to message body's charset if that fails. Do you have any sense on how +well that heuristic would work? +> +> 6. How prevalent are confused charsets (e.g., text that is labeled +> as ISO 8859-1 that needs to be decoded as Windows-1252)? +> +> +> Prevalent enough that we basically ignore when people say they're +> 8859-1 and don't provide it as a hint to our detector. That's not +> just for 1252, though, there are a lot of bad web forms to email +> gateways out there which do a lot of garbage. + +Do you happen to have a list of confusions? + + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22651.mbox:2,S new file mode 100644 index 00000000..a317f749 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22651.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From brong at fastmail.fm Fri Dec 6 20:07:22 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: +References: + + +Message-ID: <1386389242.20171.56591329.4EBEE69A@webmail.messagingengine.com> + +The size can never change. Why not just calculate it once at delivery time and then cache it? Or even at first fetch time. + +On Sat, Dec 7, 2013, at 02:58 AM, Brandon Long wrote: +> Ah, right, we compute the attributes in alphabetical order, so normally +> we'd do the BODY first and then RFC822.SIZE would be correct. Since you're +> using the older RFC822 name instead, its coming later. +> +> Which is to say that yes the size can be off, but we tried to make it be +> correct when you request both, otherwise Thunderbird would truncate larger +> messages that were being fetched in chunks. +> +> Brandon +> On Dec 5, 2013 2:57 PM, "Brandon Long" wrote: +> +> > Why ask for the size if you're getting the whole data? j/k +> > +> > Anyways, I'm a bit surprised that it would be wrong in that context, but +> > yes, they can be off in our implementation. We've been trying to fix all +> > of our data to prevent it, but the fixes are still ongoing. +> > +> > If you want to send me the account off-list, I can take a look to see if +> > its a known issue causing it in this case or not. +> > +> > Brandon +> > +> > +> > On Thu, Dec 5, 2013 at 2:18 PM, Davide Gullo wrote: +> > +> >> Hi, +> >> I'm fetching data from Gmail IMAP server and I get this response: +> >> +> >> 20293 FETCH (X-GM-MSGID 1345230530776790491 UID 33925 RFC822.SIZE +> >> *14787* RFC822 {*14985*} +> >> +> >> Look at the RFC822.SIZE (14787), it is different from the size in +> >> RFC822 {14985}. +> >> Do you see something like that before? +> >> It could be a bug or I miss something from the IMAP protocol? +> >> +> >> +> >> Thanks and Regards, +> >> +> >> -- +> >> Davide Gullo +> >> +> >> _______________________________________________ +> >> Imap-protocol mailing list +> >> Imap-protocol@u.washington.edu +> >> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> >> +> > +> > +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22659.mbox:2,S new file mode 100644 index 00000000..0871ab99 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22659.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From blong at google.com Wed Oct 16 15:42:49 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Accessing the Content-Transfer-Encoding of a + top-level multipart +In-Reply-To: <27ae442a-80d7-4451-a416-2512d25052f4@email.android.com> +References: <18960e4a-19cb-4a82-b287-aee478965e77@flaska.net> + + <27ae442a-80d7-4451-a416-2512d25052f4@email.android.com> +Message-ID: + +Yes, you're allowed non-transformative types... and for more fun, RFC +6532 for message/global so you can have UTF8 headers. + +Brandon + +On Wed, Oct 16, 2013 at 2:30 PM, Arnt Gulbrandsen + wrote: +> No, multipart does not have a cte at all. The leaf parts may have different +> cte values. +> +> As I recall, there is a ban on sending cte for a multipart somewhere in the +> mime documents. +> +> +> Arnt +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22662.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22662.mbox:2,S new file mode 100644 index 00000000..7b7cf711 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22662.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From jkt at flaska.net Wed Sep 4 12:43:00 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Best way to support HTTP PUT based 'push' + =?iso-8859-1?Q?notifications_from_IMAP=3F?= +In-Reply-To: <5225BF8C.7060602@mozilla.com> +References: <5225BF8C.7060602@mozilla.com> +Message-ID: + +On Tuesday, 3 September 2013 12:53:00 CEST, Andrew Sutherland wrote: +> On devices that either have difficulty maintaining persistent +> TCP connections or have power concerns about doing so, +> maintaining an IMAP connection for IDLE/NOTIFY purposes is +> undesirable and it would be great if the IMAP server could +> generate a notification via other means. + +I have heard this a couple of times, but there was never a pointer to an +article quantifying these claims. I understand that something different +than TCP (e.g. an incoming SMS) could have a very different impact on power +consumption simply because it utilizes a different part of the radio, but +this proposal is about replacing one TCP connection with another one. So, +why do you expect that this change will reduce power consumption, and do +you have any measurements or other data? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22665.mbox:2,S new file mode 100644 index 00000000..bdd690e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22665.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From gilles.lamiral at laposte.net Sat Aug 10 14:05:58 2013 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with \ANYFOO + flag. +Message-ID: <5206AB36.7080808@laposte.net> + +Hello, + +I would like a precision on the behavior to follow with PERMANENTFLAGS with \* and flags like \FOO + +For example, Zimbra imap server can have this PERMANENTFLAGS list: + +OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded $MDNSent Forwarded NULL \*)] junk-related flags are not permanent" + +So Zimbra honors the \* flags meaning any new keyword creation is allowed. + +But a client command like the following + + APPEND INBOX (\Seen \ATTACHED) "03-Jul-2013 15:02:40 -0400" {51806}': + +generates an error from Zimbra + + BAD parse error: invalid flag: \ATTACHED + +I understand \ATTACHED is not a keyword, it is a \flag, +but rising an error here seems not correct since the RFC says: + + "If the client + attempts to STORE a flag that is not in the PERMANENTFLAGS + list, the server will either ignore the change or store the + state change for the remainder of the current session only." + +So the RFC asks "the server will either ignore or store for current session only." +Ignoring is not raising an error like "BAD ...", as does Zimbra. +And will is shall, shall is must in RFC vocabulary: http://www.ietf.org/rfc/rfc2119.txt + +What do other imap servers do? +Are there servers accepting \ANYFOO flag? +From a migration point of view (imapsync), does the migrate tool have to filter flags like \FOO +or should it try to sync it? + +Thanks in advance. + +IMAP RFC http://tools.ietf.org/html/rfc3501 full quote of PERMANENTFLAGS + +PERMANENTFLAGS + + Followed by a parenthesized list of flags, indicates which of + the known flags the client can change permanently. Any flags + that are in the FLAGS untagged response, but not the + PERMANENTFLAGS list, can not be set permanently. If the client + attempts to STORE a flag that is not in the PERMANENTFLAGS + list, the server will either ignore the change or store the + state change for the remainder of the current session only. + The PERMANENTFLAGS list can also include the special flag \*, + which indicates that it is possible to create new keywords by + attempting to store those flags in the mailbox. + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095021.22668.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095021.22668.mbox:2,S new file mode 100644 index 00000000..f34760ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095021.22668.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From rfs9999 at earthlink.net Sat Jul 27 07:56:51 2013 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Exchange IMAP service dropping sessions after 9 + errors +In-Reply-To: <20130410222025.GC25711@arlut.utexas.edu> +References: <20130410222025.GC25711@arlut.utexas.edu> +Message-ID: <51F3DFB3.6010609@earthlink.net> + +I have observed that the Exchange IMAP server will disconnect an IMAP +session after 9 errors (such as issuing an EXAMINE command on a +non-existent mailbox or trying to append a message with an invalid +internaldate. + +I've seen this with Exchange 2007 but the limit may exist in new +versions as well. + +That can represent a problem during migration of a user account since +during copying thousands of messages it is unreasonable to hit the error +limit and get blown away. + +I have modified my migration tool to deal with this by counting the +number of NO or BAD status returns, disconnecting & reconnecting, and +then resuming from the point of error. + +However, I would like to ask if anyone knows if the error threshold is +configurable in Exchange. + +Thanks, +Rick + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22595.mbox:2,S new file mode 100644 index 00000000..72d120b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22595.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Mon Mar 9 16:54:38 2015 +To: imap-protocol@u.washington.edu +From: "Hoa V. Dinh" +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + +Message-ID: + +Unfortunately, mail servers have to deal with the existing world of emails, +where there are charset encoding, MIME encoding, spinning disks and memory. + +Lots of those operation have to happen until every users of emails move to anything else than email. +That said, spinning disks and memory might be still around. + +Also, I actually think that the text protocol is neglectable in term of CPU usage (and that?s also a subjective assessment), compare to let?s say indexing of emails for search. + +-- +Hoa V. Dinh + + +On Monday, March 9, 2015 at 4:44 PM, Imants Cekusins wrote: + +> > Is your measurement data and methodology for this available online anywhere? +> +> +> this is a subjective assessment. Email servers are way too busy for +> what they deliver. I believe it is for these reasons: +> +> Parsing takes time. So does transfer decoding and charset conversion, +> unwrapping text, dot stuffing. +> +> It can be reduced to: +> no case conversion for commands; no parsing for commands even: a +> simple switch case statement suffice; +> +> no parsing for CRLF, empty line or DOT CRLF; actually, no content +> parsing at all is necessary for transmission; +> +> no transfer encoding / decoding (it is transferred as binary); +> +> no charset decoding: a single encoding is applied to the entire (text +> part of) the message. +> +> +> Simply from pragmatic point of view: if these tasks need not to be +> done, server is less busy and can process higher throughput. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22623.mbox:2,S new file mode 100644 index 00000000..d93464fd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22623.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 17 03:23:56 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <14D026C7F297AD44AC82578DD818CDD034516112A0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <00bd4f8b-cc4e-48b9-8aad-6788e23666af@gulbrandsen.priv.no> + + <14D026C7F297AD44AC82578DD818CDD034516112A0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +Message-ID: <27b2d77f-d522-4f52-82ee-bcac200175fd@gulbrandsen.priv.no> + +On Tuesday, September 16, 2014 10:43:16 PM CEST, Neil Hunsperger wrote: +> To elaborate on Brandon?s point, the issue is with following +> IMAP?s ABNF. Base RFC 3501 strings are CHAR-based instead of +> CHAR8-based. A UTF-8 response might not ever reach the client if +> there is an IMAP proxy such as Symantec Desktop Email between +> the client and server. I would strongly consider ensuring that +> all server output can be parsed using the ABNF currently agreed +> upon by the client and server. + +1. This is about errors. There isn't much to lose if you're already in an +error situation. As I said, the chance seems slight that the client could +recover, but fails to recover merely because the human-readable text +contains bytes outside the legal range. + +2. Would you make the same argument about the other major grammar involved +in IMAP: RFC5322? Or do you think it's okay for a server to just-send-8 +when a message violates the rules of RFC5322 and the client hasn't +indicated that it can accept that? + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22629.mbox:2,S new file mode 100644 index 00000000..cb0a9970 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22629.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From blong at google.com Wed Jul 30 00:46:46 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail search on Subject +In-Reply-To: +References: + +Message-ID: + +Note that this is documented here: +https://support.google.com/mail/answer/78761?hl=en&ref_topic=3397501 +Though, admittedly, "Substring search. All searches are assumed to be +words" isn't enough to make this behavior obvious. + +Brandon + + +On Wed, Jul 30, 2014 at 12:43 AM, Brandon Long wrote: + +> In violation of the IMAP spec, Gmail's IMAP search is implemented on top +> of our search index, and is not sub-string search. Well, that's not +> entirely true, we do implement sub-string search for "non indexed" headers, +> which admittedly is more complicated for developers to understand... but +> the performance benefit is considered to be worth it. +> +> If you search for '%' in the Gmail web interface, you'll see that it +> matches every message there as well. That's probably unintended behavior. +> I haven't checked recently, but last I knew, our search index didn't +> include symbols, though its possible it does special case some symbols for +> things like 'c++'. In any case, what you're most likely seeing is that +> terms are added to the search, the '%' is parsed into nothing, so what +> remains is just the added terms (ie, in:foldername). +> +> We've debated before what the "proper" response is in this context, +> whether to have no/all results, or whether to have an error response like +> NO [SERVERBUG] when we're given a query which makes no sense to our +> implementation. Currently, we tend to respond with "all in folder" as more +> of an accident of implementation than purpose. In general, clients seem +> ill prepared for NO responses... or even to an OK response without an +> untagged response. +> +> Brandon +> +> +> On Tue, Jul 29, 2014 at 7:18 PM, Eduardo Chappa wrote: +> +>> Dear all, +>> +>> Apologies if this is not the right forum to post this, but it seems +>> that it is the de facto place to report bugs on Gmail. I did send this +>> privately a few weeks ago, but received not acknowledgement, so I hope this +>> time it will be considered. +>> +>> A search using the string "%" matches all messages. For example, the +>> command +>> +>> 0000000a SEARCH SUBJECT "%" +>> +>> matches all messages in my inbox, not only those that contain the string +>> "50%", but also those that do not contain it, such as this one. +>> +>> Thank you. +>> +>> -- +>> Eduardo +>> http://patches.freeiz.com/alpine/ +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22635.mbox:2,S new file mode 100644 index 00000000..1706e713 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22635.mbox:2,S @@ -0,0 +1,117 @@ +MBOX-Line: From jjmckay at comaxis.com Tue May 27 12:14:20 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: +References: <537FEFE5.4040103@comaxis.com> <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + +Message-ID: <5384E40C.3070907@comaxis.com> + +Yes that is what I get also, sorry for misstating the error message. I +am still unclear though about how to create a folder +with a sub-folder. You said that the correct syntax should be: + +CREATE "foo/bar" + +which creates a single top level folder called "foo/bar". I know that +you want to support being able to create folder names +that contain the hierarchy delimiter, but there seems to be a conflict +here. + +On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +> I don't see any error message in the Gmail code for "hierarchy +> character ignored". When I try to reproduce this, I see something +> different: +> +> a create foo/ +> a OK [CANNOT] Ignoring hierarchy declaration (Success) +> +> This seems to follow 6.3.3. +> +> +> On Fri, May 23, 2014 at 9:09 PM, David Harris +> > wrote: +> +> On 23 May 2014 at 18:03, Jeff McKay wrote: +> +> > Has something changed with how Gmail handles the hierarchy character +> > in the CREATE command? I am sure I had this working at one +> point, but +> > now: +> > +> > CREATE "TopLevelFolder/" +> > +> > generates "NO hierarchy character ignored" +> +> The server would appear to be in error. See RFC3501, section 6.3.3 +> ("The +> Create Command"): +> +> If the mailbox name is suffixed with the server's hierarchy +> separator character (as returned from the server by a LIST +> command), this is a declaration that the client intends to +> create +> mailbox names under this name in the hierarchy. Server +> implementations that do not require this declaration MUST ignore +> the declaration. In any case, the name created is without the +> trailing hierarchy delimiter. +> +> This seems pretty unambiguous to me, but no doubt there's an +> alternative +> reading I haven't considered (there usually is). I assume GMail +> actually +> *does* support submailboxes (I don't personally use it)? +> +> Interestingly, the example for section 6.3.3 is an almost exact +> match to your +> report: +> +> Example: +> C: A003 CREATE owatagusiam/ +> S: A003 OK CREATE completed +> +> Note that there is a reverse condition to this where a server may +> report a +> mailbox with a trailing hierarchy delimiter as part of a LIST +> response; I +> confess I've never understood exactly what that means (Exchange +> used to +> do it and may still do so) - Mark Crispin once explained it to me +> as having +> some meaning related to a test for existence, but I couldn't grasp +> what he +> meant. +> +> Cheers! +> +> -- David -- +> +> ------------------ David Harris -+- Pegasus Mail +> ---------------------- +> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> +> Phone: +64 3 453-6880 | Fax: +> +64 3 453-6612 +> +> Real newspaper headlines from U.S. papers: +> TRAFFIC DEAD RISE SLOWLY +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22641.mbox:2,S new file mode 100644 index 00000000..05860d42 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22641.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Mar 18 15:01:12 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> +References: <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> +Message-ID: + +On Tuesday, March 18, 2014 9:46:29 PM CEST, Jan Kundr?t wrote: +> I'm a bit confused by your message. How do you want to +> authenticate your user? Specifically, what's the use case where +> you can safely verify the user's identity, but cannot guarantee +> confidentiality of the connection stream? + +Think about it this way. As a client author, how do you handle the case +where the server sends you PREAUTH and you want to use TLS? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22648.mbox:2,S new file mode 100644 index 00000000..a31a4111 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22648.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jan 15 00:13:17 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: <> +References: <52D5D84D.6070208@verizon.net> +Message-ID: <6a420a96-0755-48c3-b8d7-f208c6de14a1@gulbrandsen.priv.no> + +On Wednesday, January 15, 2014 2:08:47 AM CEST, Brandon Long wrote: +> It also makes the +> downgrade part of RFC5738 look pretty silly, as I imagine almost +> every IMAP server is basically doing the same thing today, +> sending 8bits blindly, assuming the headers were 7bit clean. It +> seems like implementing RFC5738 makes your server break more +> messages than it fixes. + +Yes, but why are you doing 5738 instead of 6855? + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22651.mbox:2,S new file mode 100644 index 00000000..b70a8f5d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22651.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From brong at fastmail.fm Fri Dec 6 20:08:55 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: +References: + + +Message-ID: <1386389335.20518.56591617.10E10517@webmail.messagingengine.com> + +Also, you sort funny. Dot comes after null in my world. + +On Sat, Dec 7, 2013, at 02:58 AM, Brandon Long wrote: +> Ah, right, we compute the attributes in alphabetical order, so normally +> we'd do the BODY first and then RFC822.SIZE would be correct. Since you're +> using the older RFC822 name instead, its coming later. +> +> Which is to say that yes the size can be off, but we tried to make it be +> correct when you request both, otherwise Thunderbird would truncate larger +> messages that were being fetched in chunks. +> +> Brandon +> On Dec 5, 2013 2:57 PM, "Brandon Long" wrote: +> +> > Why ask for the size if you're getting the whole data? j/k +> > +> > Anyways, I'm a bit surprised that it would be wrong in that context, but +> > yes, they can be off in our implementation. We've been trying to fix all +> > of our data to prevent it, but the fixes are still ongoing. +> > +> > If you want to send me the account off-list, I can take a look to see if +> > its a known issue causing it in this case or not. +> > +> > Brandon +> > +> > +> > On Thu, Dec 5, 2013 at 2:18 PM, Davide Gullo wrote: +> > +> >> Hi, +> >> I'm fetching data from Gmail IMAP server and I get this response: +> >> +> >> 20293 FETCH (X-GM-MSGID 1345230530776790491 UID 33925 RFC822.SIZE +> >> *14787* RFC822 {*14985*} +> >> +> >> Look at the RFC822.SIZE (14787), it is different from the size in +> >> RFC822 {14985}. +> >> Do you see something like that before? +> >> It could be a bug or I miss something from the IMAP protocol? +> >> +> >> +> >> Thanks and Regards, +> >> +> >> -- +> >> Davide Gullo +> >> +> >> _______________________________________________ +> >> Imap-protocol mailing list +> >> Imap-protocol@u.washington.edu +> >> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> >> +> > +> > +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22659.mbox:2,S new file mode 100644 index 00000000..cdc8b774 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22659.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Oct 17 01:56:13 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Accessing the Content-Transfer-Encoding of a + top-level multipart +In-Reply-To: +References: <18960e4a-19cb-4a82-b287-aee478965e77@flaska.net> + + <27ae442a-80d7-4451-a416-2512d25052f4@email.android.com> + +Message-ID: <20131017085613.GB15056@gulbrandsen.priv.no> + +On Wed, Oct 16, 2013 at 03:42:49PM -0700, Brandon Long wrote: +> Yes, you're allowed non-transformative types... and for more fun, RFC +> 6532 for message/global so you can have UTF8 headers. + +Right. I had forgotten that detail. + +Put differently: You're allowed to specify any CTE which is equivalent +to not specifying CTE. I expect that's why Mark didn't want to include +the CTE when reporting header contents. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22662.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22662.mbox:2,S new file mode 100644 index 00000000..3230836c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22662.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From tss at iki.fi Wed Sep 4 12:52:18 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Best way to support HTTP PUT based 'push' + notifications from IMAP? +In-Reply-To: +References: <5225BF8C.7060602@mozilla.com> + +Message-ID: + +On 4.9.2013, at 22.43, Jan Kundr?t wrote: + +> On Tuesday, 3 September 2013 12:53:00 CEST, Andrew Sutherland wrote: +>> On devices that either have difficulty maintaining persistent TCP connections or have power concerns about doing so, maintaining an IMAP connection for IDLE/NOTIFY purposes is undesirable and it would be great if the IMAP server could generate a notification via other means. +> +> I have heard this a couple of times, but there was never a pointer to an article quantifying these claims. I understand that something different than TCP (e.g. an incoming SMS) could have a very different impact on power consumption simply because it utilizes a different part of the radio, but this proposal is about replacing one TCP connection with another one. So, why do you expect that this change will reduce power consumption, and do you have any measurements or other data? + +My understanding was that this simply replaces each different application polling for data to a single central local application polling for the data. If you're using only one app there's not much difference but for each new app it helps. And in theory you could have that polling app work with non-TCP also but I don't think that's commonly used. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22665.mbox:2,S new file mode 100644 index 00000000..b45f1acf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22665.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From gilles.lamiral at laposte.net Sat Aug 10 14:58:17 2013 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with \ANYFOO + flag. +In-Reply-To: <1331562206.23673506.1376171314193.JavaMail.root@vmware.com> +References: <5206AB36.7080808@laposte.net> + <1331562206.23673506.1376171314193.JavaMail.root@vmware.com> +Message-ID: <5206B779.1050107@laposte.net> + +Hi Dan, + +> \ATTACHED is neither a flag nor a keyword. It is invalid. + +Ok thanks, I'll filter them. + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095022.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095022.22671.mbox:2,S new file mode 100644 index 00000000..55b85a53 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095022.22671.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From jkt at flaska.net Thu Jun 6 13:15:32 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] UW-IMAPD and its interpretation of ESEARCH +Message-ID: + +Hi, +one of my users has reported [1] that his IMAP server (UW-IMAPD, reporting as "2007e.404" in the initial greetings) is using the wrong [2] interpretation of the ESEARCH extension -- always reporting the UIDs as "min:max", effectively removing the huge benefit of that extension. + +What is the least damaging way to work around this? Here's a couple of ideas: + +a) Detect ESEARCH response passed as min:max. When the number of messages exceeds what EXISTS reports, blacklist the ESEARCH extension and try once again using plain SEARCH. + +b) Resort to ugly user-agent-sniffing-alike and blacklist ESEARCH preemptively when the initial greetings contains the "IMAP4rev1 2007e.404 at" string *and* the "SCAN" capability is present. + +The option b) looks like a reasonable stopgap measure with a very limited potential for false positives. It is also implementable very quickly within my client. The option a) will require a bit more work, but it looks like something more "robust" than b). + +Is there some inherent drawback in -- at least temporarily -- going with b) that I might be missing? It's an obsolete, unmaintained server with not that great market share, so implementing extra workarounds just for it are not terribly high on my list of priorities... + +With kind regards, +Jan + +[1] https://bugs.kde.org/show_bug.cgi?id=320828 +[2] http://www.ietf.org/mail-archive/web/imapext/current/msg00477.html + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22595.mbox:2,S new file mode 100644 index 00000000..3514ca92 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22595.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From blong at google.com Mon Mar 9 17:01:16 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + +Message-ID: + +We witnessed quite a big portion of cpu involved in un-dot-stuffing smtp +(and correcting line endings) and saved quite a bit of that with supporting +BDAT. + +OTOH, I don't think IMAP parsing has been a large CPU issue for us, +partially because with LITERAL we already skip through the larger data +pieces. + +Brandon + +On Mon, Mar 9, 2015 at 4:54 PM, Hoa V. Dinh wrote: + +> Unfortunately, mail servers have to deal with the existing world of emails, +> where there are charset encoding, MIME encoding, spinning disks and memory. +> +> Lots of those operation have to happen until every users of emails move to +> anything else than email. +> That said, spinning disks and memory might be still around. +> +> Also, I actually think that the text protocol is neglectable in term of +> CPU usage (and that?s also a subjective assessment), compare to let?s say +> indexing of emails for search. +> +> -- +> Hoa V. Dinh +> +> On Monday, March 9, 2015 at 4:44 PM, Imants Cekusins wrote: +> +> Is your measurement data and methodology for this available online +> anywhere? +> +> +> this is a subjective assessment. Email servers are way too busy for +> what they deliver. I believe it is for these reasons: +> +> Parsing takes time. So does transfer decoding and charset conversion, +> unwrapping text, dot stuffing. +> +> It can be reduced to: +> no case conversion for commands; no parsing for commands even: a +> simple switch case statement suffice; +> +> no parsing for CRLF, empty line or DOT CRLF; actually, no content +> parsing at all is necessary for transmission; +> +> no transfer encoding / decoding (it is transferred as binary); +> +> no charset decoding: a single encoding is applied to the entire (text +> part of) the message. +> +> +> Simply from pragmatic point of view: if these tasks need not to be +> done, server is less busy and can process higher throughput. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22623.mbox:2,S new file mode 100644 index 00000000..8f079909 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22623.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From Neil_Hunsperger at symantec.com Wed Sep 17 10:57:36 2014 +To: imap-protocol@u.washington.edu +From: Neil Hunsperger +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <00bd4f8b-cc4e-48b9-8aad-6788e23666af@gulbrandsen.priv.no> + + <14D026C7F297AD44AC82578DD818CDD034516112A0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + <27b2d77f-d522-4f52-82ee-bcac200175fd@gulbrandsen.priv.no> +Message-ID: <14D026C7F297AD44AC82578DD818CDD0345161158B@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + +> On Tuesday, September 16, 2014 10:43:16 PM CEST, Neil Hunsperger wrote: +> > To elaborate on Brandon?s point, the issue is with following IMAP?s +> > ABNF. Base RFC 3501 strings are CHAR-based instead of CHAR8-based. A +> > UTF-8 response might not ever reach the client if there is an IMAP +> > proxy such as Symantec Desktop Email between the client and server. +> > I would strongly consider ensuring that all server output can be +> > parsed using the ABNF currently agreed upon by the client and server. + +[snip] + +> 2. Would you make the same argument about the other major grammar +> involved in IMAP: RFC5322? Or do you think it's okay for a server to +> just-send- +> 8 when a message violates the rules of RFC5322 and the client hasn't +> indicated that it can accept that? +> +> Arnt + +That's a great question about avoiding propagating existing protocol violations. My goal was to avoid introducing more protocol violations. Looking at the IMAP fetch responses, it appears to me that the server can always send the original email content in a literal to follow RFC 3501's own syntax. If somewhere in RFC 3501 there were email content transmitted to the client where a literal isn't allowed, then yes I would make the same argument. + +I'm not sure if you were asking about a server deeply parsing email content for the purpose of protecting the client from 8-bit content found where RFC 5322 disallows it. If so, I would suggest leaving in the syntax errors and letting the client take a guess at how to render it. Most of the unlabeled high bytes I've seen in headers were ISO-8859-1 instead of UTF-8 anyway. I've seen clients recover from this issue. diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22629.mbox:2,S new file mode 100644 index 00000000..04c0a34d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22629.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From echappa at gmx.com Wed Jul 30 01:21:10 2014 +To: imap-protocol@u.washington.edu +From: Eduardo Chappa +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail search on Subject +In-Reply-To: +References: + + +Message-ID: + +On Wed, 30 Jul 2014, Brandon Long wrote: + +> Note that this is documented here: +> https://support.google.com/mail/answer/78761?hl=en&ref_topic=3397501 +> Though, admittedly, "Substring search. All searches are assumed to be words" +> isn't enough to make this behavior obvious. + +Dear Brandon, + + Thank you for your complete explanation. Although there is no substring +search, I guess "%" is not a string on its own in the Gmail server, which +would have actually resulted in no messages selected in the search in my +case, instead of all of them. + + Thank you! I appreciate your explanation. + +-- +Eduardo +http://patches.freeiz.com/alpine/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22635.mbox:2,S new file mode 100644 index 00000000..2b098782 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22635.mbox:2,S @@ -0,0 +1,143 @@ +MBOX-Line: From nicolson at google.com Tue May 27 12:40:15 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: <5384E40C.3070907@comaxis.com> +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> +Message-ID: + +I'm not sure what you mean by "single top level folder". "foo/bar" has the +hierarchy delimiter in it, so from IMAP's point of view it is a nested +folder. + +If you want to be able to store messages in "foo/bar", but not "foo", you +can CREATE foo/ and then CREATE foo/bar. The first CREATE will be a no-op +on Gmail, but will succeed with OK. The second CREATE will result in this +folder layout: + +* LIST (\Noselect \HasChildren) "/" "foo" +* LIST (\HasNoChildren) "/" "foo/bar" + +Now you can COPY and APPEND messages to foo/bar. If you also want to be +able to store messages directly in foo, you just have to CREATE +foo(without the hierarchy delimiter suffix). You can do this before or +after +creating "foo/bar". Then you'll have this: + +* LIST (\HasChildren) "/" "foo" +* LIST (\HasNoChildren) "/" "foo/bar" + +The web UI displays these two cases differently. In the first case (where +foo/bar is selectable but foo is \Noselect), we show "foo/bar" as a +standalone label. In the second case (where foo/bar and foo are both +selectable folders), we display bar nested under foo. This is just a quirk +of the web UI. + + +On Tue, May 27, 2014 at 12:14 PM, Jeff McKay wrote: + +> Yes that is what I get also, sorry for misstating the error message. I +> am still unclear though about how to create a folder +> with a sub-folder. You said that the correct syntax should be: +> +> CREATE "foo/bar" +> +> which creates a single top level folder called "foo/bar". I know that +> you want to support being able to create folder names +> that contain the hierarchy delimiter, but there seems to be a conflict +> here. +> +> +> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +> +> I don't see any error message in the Gmail code for "hierarchy character +> ignored". When I try to reproduce this, I see something different: +> +> a create foo/ +> a OK [CANNOT] Ignoring hierarchy declaration (Success) +> +> This seems to follow 6.3.3. +> +> +> On Fri, May 23, 2014 at 9:09 PM, David Harris wrote: +> +>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>> +>> > Has something changed with how Gmail handles the hierarchy character +>> > in the CREATE command? I am sure I had this working at one point, but +>> > now: +>> > +>> > CREATE "TopLevelFolder/" +>> > +>> > generates "NO hierarchy character ignored" +>> +>> The server would appear to be in error. See RFC3501, section 6.3.3 ("The +>> Create Command"): +>> +>> If the mailbox name is suffixed with the server's hierarchy +>> separator character (as returned from the server by a LIST +>> command), this is a declaration that the client intends to create +>> mailbox names under this name in the hierarchy. Server +>> implementations that do not require this declaration MUST ignore +>> the declaration. In any case, the name created is without the +>> trailing hierarchy delimiter. +>> +>> This seems pretty unambiguous to me, but no doubt there's an alternative +>> reading I haven't considered (there usually is). I assume GMail actually +>> *does* support submailboxes (I don't personally use it)? +>> +>> Interestingly, the example for section 6.3.3 is an almost exact match to +>> your +>> report: +>> +>> Example: +>> C: A003 CREATE owatagusiam/ +>> S: A003 OK CREATE completed +>> +>> Note that there is a reverse condition to this where a server may report a +>> mailbox with a trailing hierarchy delimiter as part of a LIST response; I +>> confess I've never understood exactly what that means (Exchange used to +>> do it and may still do so) - Mark Crispin once explained it to me as +>> having +>> some meaning related to a test for existence, but I couldn't grasp what he +>> meant. +>> +>> Cheers! +>> +>> -- David -- +>> +>> ------------------ David Harris -+- Pegasus Mail ---------------------- +>> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +>> Phone: +64 3 453-6880 <%2B64%203%20453-6880> | Fax: +64 3 +>> 453-6612 <%2B64%203%20453-6612> +>> +>> Real newspaper headlines from U.S. papers: +>> TRAFFIC DEAD RISE SLOWLY +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +> +> _______________________________________________ +> Imap-protocol mailing listImap-protocol@u.washington.eduhttp://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22641.mbox:2,S new file mode 100644 index 00000000..17ebeecc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22641.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 18 17:04:13 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> +Message-ID: <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + +On Wed, Mar 19, 2014, at 08:25 AM, Michael M Slusarz wrote: +> Quoting Jan Kundr?t : +> > Also, nothing prevents a server from going directly to PREAUTH if +> > the whole connection is using SSL/TLS ("port 993") with client +> > certificates. +> +> STARTTLS deprecated the use of port 993, which isn't an official IMAP +> port FWIW. It hasn't really happened, but still is good to avoid and +> end users appreciate it when they don't have to have any knowledge of +> port number. +> +> I wish this did work with the STARTTLS command (i.e. PREAUTH response +> after STARTTLS in the above situation). Unfortunately that isn't part +> of the spec either. + +I can't understand how STARTTLS ever got floated as an idea. It's totally insane. + +Your hypothetical MITM just strips the "LOGINDISABLED" capability response, and anything saying that the server supports TLS, and the client goes ahead and sends the credentials in cleartext. At that point the MITM does the TLS negotiation with the server and it can read everything without the server knowing. + +The only way that STARTTLS has any value is if every client refuses to send credentials until TLS or equivalent protection is established - in which case STARTTLS is pointless, you might as well just go straight to encryption and avoid the round trip. + +Bron. + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22648.mbox:2,S new file mode 100644 index 00000000..ac1c723b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22648.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From stephan at rename-it.nl Wed Jan 15 00:26:31 2014 +To: imap-protocol@u.washington.edu +From: Stephan Bosch +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Login referrals resurrection? +In-Reply-To: +References: +Message-ID: <52D64637.5000203@rename-it.nl> + +Hi, + +On 1/14/2014 10:32 PM, Timo Sirainen wrote: +> Does anyone else think this would be worth maybe writing a new updated RFC2221bis and trying to convince client developers to implement it? + +Oh, excellent opportunity to post the following problem with RFC2221 +that emerged with the advent of RFC 5092 and RFC 3986 (I keep forgetting +about this). These RFCs updated the IMAP and generic URL scheme +respectively and added the IP-literal syntax element to accommodate for +IP6 addresses: + +IP-literal = "[" ( IPv6address / IPvFuture ) "]" + + +The syntax of REFERRAL is specified in RFC2221, Section 5 and looks as +follows: + +resp_text_code =/ "REFERRAL" SPACE + +RFC 3501 shows the following for resp_text_code: + +resp-text-code = "ALERT" / + "BADCHARSET" [SP "(" astring *(SP astring) ")" ] / + capability-data / "PARSE" / + "PERMANENTFLAGS" SP "(" + [flag-perm *(SP flag-perm)] ")" / + "READ-ONLY" / "READ-WRITE" / "TRYCREATE" / + "UIDNEXT" SP nz-number / "UIDVALIDITY" SP nz-number / + "UNSEEN" SP nz-number / + atom [SP 1*] + +Obviously, response code arguments cannot contain "]". However, with the +new IP-literal syntax element in the IMAP URL, the REFERRAL argument +could actually contain a "]" now. Clients that know about REFERRAL and +the most recent IMAP URL scheme version could still parse this with some +extra care, but clients that don't will fail to parse this properly. + +This isn't easy to fix, since I don't see any means to escape the "]" in +the response code arguments. + +Regards, + +Stephan. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22651.mbox:2,S new file mode 100644 index 00000000..e09cef22 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22651.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Dec 7 01:51:05 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: <1386389242.20171.56591329.4EBEE69A@webmail.messagingengine.com> +References: + + + <1386389242.20171.56591329.4EBEE69A@webmail.messagingengine.com> +Message-ID: <8ec5b37c-1444-44be-b328-7ce0a0851e7e@email.android.com> + +I noticed that some messages changed when I added support for eai, because messages that contained 2047 in headers at arrival time suddenly needed to use utf8. + +Arnt +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22659.mbox:2,S new file mode 100644 index 00000000..c8c66d4a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22659.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From brong at fastmail.fm Fri Oct 25 18:10:18 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Mac OS 10.9 particularly buggy implementation of + IMAP +Message-ID: <1382749818.11252.38686053.54FA9CC9@webmail.messagingengine.com> + +Is anyone else seeing particularly bad IMAP behaviour from the new Mac OS? Here's a lovely one from a user who keeps copying messages into the Junk Mail folder over and over: + +<1382743710<4<1382743710<4.18 SELECT "INBOX.Junk Mail" (CONDSTORE) +>1382743711>* OK [CLOSED] Ok +* 79 EXISTS +* 0 RECENT +* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $X-ME-Annot-2 $IsMailingList $IsNotification $HasAttachment $HasTD $Junk $NotJunk $X +-ME-Annot-1 JunkRecorded hasatt Junk $MailFlagBit1 $MailFlagBit2 NotJunk hasnoatt hasnotd Forwarded $Forwarded) +* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $X-ME-Annot-2 $IsMailingList $IsNotification $HasAttachment $HasTD $Jun +k $NotJunk $X-ME-Annot-1 JunkRecorded hasatt Junk $MailFlagBit1 $MailFlagBit2 NotJunk hasnoatt hasnotd Forwarded $Forwarded \*)] Ok +* OK [UNSEEN 1] Ok +* OK [UIDVALIDITY 1318456612] Ok +* OK [UIDNEXT 3361070] Ok +* OK [HIGHESTMODSEQ 213636] Ok +* OK [URLMECH INTERNAL] Ok +* OK [ANNOTATIONS 65536] Ok +44.18 OK [READ-WRITE] Completed +<1382743711<4<1382743711<5.18 FETCH 1:* (FLAGS UID MODSEQ) (CHANGEDSINCE 213634) +>1382743711>45.18 OK Completed (0.000 sec) +<1382743713<4<1382743713<6.18 IDLE +>1382743713>+ idling +<13827437131382743713>46.18 OK Completed +<1382743713<4<1382743713<7.18 CHECK +>1382743713>47.18 OK Completed +<1382743713<4<1382743713<8.18 UID COPY 3360991:3361069 "INBOX.Junk Mail" +>1382743714>* 158 EXISTS +* 79 RECENT +48.18 OK [COPYUID 1318456612 3360991:3361069 3361070:3361148] Completed + +They've had 2 million messages in that mailbox over the past couple of week, using pre-release and then released 10.9. + +(there's another interesting pattern, it appears to send the 'D' of 'DONE' in a separate packet when finishing IDLE... no idea why. I've never seen DONE split over two reads before) + +We've also had users reporting regular bugs in the interface, like turning off "store sent items on server" not working, and the "\Archive" folder not appearing in the GUI, but that's not IMAP protocol territory. + +... + +I've also seen this lovely pattern on Mail.app sessions while debugging today: + +<1382690260<229.12 UID STORE 588201 +FLAGS.SILENT ($Junk Junk JunkRecorded) +>1382690260>229.12 OK Completed +<1382690260<230.12 UID STORE 588201 -FLAGS.SILENT ($NotJunk NotJunk) +>1382690260>230.12 OK Completed +<1382690260<231.12 UID EXPUNGE 588201 +>1382690260>231.12 OK Completed +<1382690260<232.12 UID STORE 588201 +FLAGS.SILENT (\Deleted) +>1382690260>232.12 OK Completed + +Unsurprisingly, this doesn't actually lead to the message being expunged. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22662.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22662.mbox:2,S new file mode 100644 index 00000000..95b16e4b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22662.mbox:2,S @@ -0,0 +1,88 @@ +MBOX-Line: From asuth at mozilla.com Wed Sep 4 14:33:20 2013 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Best way to support HTTP PUT based 'push' + notifications from IMAP? +In-Reply-To: +References: <5225BF8C.7060602@mozilla.com> + +Message-ID: <5227A720.6060001@mozilla.com> + +On 09/04/2013 03:43 PM, Jan Kundr?t wrote: +> On Tuesday, 3 September 2013 12:53:00 CEST, Andrew Sutherland wrote: +>> On devices that either have difficulty maintaining persistent TCP +>> connections or have power concerns about doing so, maintaining an +>> IMAP connection for IDLE/NOTIFY purposes is undesirable and it would +>> be great if the IMAP server could generate a notification via other +>> means. +> +> I have heard this a couple of times, but there was never a pointer to +> an article quantifying these claims. I understand that something +> different than TCP (e.g. an incoming SMS) could have a very different +> impact on power consumption simply because it utilizes a different +> part of the radio, but this proposal is about replacing one TCP +> connection with another one. So, why do you expect that this change +> will reduce power consumption, and do you have any measurements or +> other data? + +So there are 2 separate issues here. + +1) Maintaining the connection. + +1a) Wi-fi connections. Firefox OS shuts down the wi-fi when we turn off +the screen if we are on battery power unless some application has a +wi-fi wake-lock. It's my understanding that wi-fi is somewhat power +hungry, but either way, wi-fi off is going to take less power than wi-fi +on, no matter what. So all connections established via wi-fi will die. +We could re-establish them via cellular data, of course. + +1b) Cellular data connections. I think this is a theory-versus-practice +thing, at least in the markets that Firefox OS devices have been +targeting. In theory, it should be possible for the device to roam +around without losing its TCP connection if the tower infrastructure +maintains the IP/NAT mapping and routes the packets to the right tower. +What I am told and my own limited experience bears out in the markets +that I have been to is that the connections end up dropping/hanging. As +you say, any TCP-based push notification would be subject to these same +problems. + + +2) Power levels. A presentation I saw quite some time ago made by +Telefonica Digital, but whose slides I am unable to find characterized +the cellular radio power usage as similar to a CPU and its varying sleep +levels. An idle TCP connection would actually let us get down to the +second lowest power level. Not the best, but not the end of the world. +As Timo says, using/maintaining one TCP connection is better than +maintaining N TCP connections. Also important issue is that keeping a +TCP connection alive means keeping the application that owns it alive +too and that is not without its costs. Our initial Firefox OS devices +have 256 MiB of memory, with about half of that available for +applications, so there's not a lot of spare capacity for one app to be +hanging around, and definitely not multiple apps. + +In terms of replacing TCP with TCP, my understanding is that we actually +have 3 implementation approaches on the table for communication with the +push notification server. The most preferred implementation is +SMS-based or something similar using the control channel of the cellular +network which is both reliable and allows for the cellular radio to go +to its lowest power level. I believe this requires carrier +participation and so is not available for all devices. The next best +solution is UDP-based; the device still needs to maintain an IP address +but there is less overhead or risk of the connection hanging in a weird +way. I believe heartbeats/pings are used for the UDP approach to ensure +that we haven't lost touch with the server. The last approach is based +on polling. The push implementation wakes up and then talks to the +server to see if there's a new event. That might be what the UDP +solution degrades to when the heartbeats aren't getting through. + +And of course having a single native C++ thread waking up to perform the +polling is generally better for resource usage than having N +uncoordinated HTML/JS-based apps either waking up or using alarms to go +through their entire startup process to perform their own polling. I +believe we are looking at supporting some type of coordinated polling +process for apps that do have to poll for resource usage reasons so we +take maximum advantage of having the CPU/radio/wi-fi all cranked up. + +Andrew + diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22665.mbox:2,S new file mode 100644 index 00000000..943e1b31 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22665.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From dave at cridland.net Sun Aug 11 00:39:10 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with + \ANYFOO flag. +In-Reply-To: <5206AB36.7080808@laposte.net> +References: <5206AB36.7080808@laposte.net> +Message-ID: + +On Sat, Aug 10, 2013 at 10:05 PM, Gilles LAMIRAL wrote: + +> OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded +> $MDNSent Forwarded NULL \*)] junk-related flags are not permanent" +> +> So Zimbra honors the \* flags meaning any new keyword creation is allowed. +> +> But a client command like the following +> +> APPEND INBOX (\Seen \ATTACHED) "03-Jul-2013 15:02:40 -0400" {51806}': +> +> generates an error from Zimbra +> +> BAD parse error: invalid flag: \ATTACHED +> +> I understand \ATTACHED is not a keyword, it is a \flag, +> + +No, it's not. Page 86 shows that flags beginning "\" are enumerated, for +example. Elsewhere (?2.3.2) it discussed that these are system flags, and +defined within RFC 3501. + +And will is shall, shall is must in RFC vocabulary: +> http://www.ietf.org/rfc/rfc2119.txt +> +> +Will is not SHALL, will is a statement of fact... + + +> What do other imap servers do? +> Are there servers accepting \ANYFOO flag? +> >From a migration point of view (imapsync), does the migrate tool have to +> filter flags like \FOO +> or should it try to sync it? +> +> +It should ignore it and not pass it through, or else drop the leading "\". + +IMAP RFC http://tools.ietf.org/html/rfc3501 full quote of PERMANENTFLAGS +> +> PERMANENTFLAGS +> +> Followed by a parenthesized list of flags, indicates which of +> the known flags the client can change permanently. Any flags +> that are in the FLAGS untagged response, but not the +> PERMANENTFLAGS list, can not be set permanently. If the client +> attempts to STORE a flag that is not in the PERMANENTFLAGS +> list, the server will either ignore the change or store the +> state change for the remainder of the current session only. +> The PERMANENTFLAGS list can also include the special flag \*, +> which indicates that it is possible to create new keywords by +> attempting to store those flags in the mailbox. +> + +Right, and here it says "keywords". + +From ?2.3.2, para 3: + + A keyword is defined by the server implementation. Keywords do not + begin with "\". Servers MAY permit the client to define new keywords + in the mailbox (see the description of the PERMANENTFLAGS response + code for more information). + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095023.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095023.22671.mbox:2,S new file mode 100644 index 00000000..f85c9143 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095023.22671.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Jun 7 00:22:06 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] UW-IMAPD and its interpretation of ESEARCH +In-Reply-To: +References: +Message-ID: <1945792A-24F7-4F88-ACCE-279167C04BA0@isode.com> + +On 6 Jun 2013, at 21:15, Jan Kundr?t wrote: + +> Hi, +> one of my users has reported [1] that his IMAP server (UW-IMAPD, reporting as "2007e.404" in the initial greetings) is using the wrong [2] interpretation of the ESEARCH extension -- always reporting the UIDs as "min:max", effectively removing the huge benefit of that extension. +> +> What is the least damaging way to work around this? Here's a couple of ideas: +> +> a) Detect ESEARCH response passed as min:max. When the number of messages exceeds what EXISTS reports, blacklist the ESEARCH extension and try once again using plain SEARCH. +> +> b) Resort to ugly user-agent-sniffing-alike and blacklist ESEARCH preemptively when the initial greetings contains the "IMAP4rev1 2007e.404 at" string *and* the "SCAN" capability is present. +> +> The option b) looks like a reasonable stopgap measure with a very limited potential for false positives. It is also implementable very quickly within my client. The option a) will require a bit more work, but it looks like something more "robust" than b). + +Option a) looks quite unreliable (and dangerous) to me. +I hope newer versions of UW don't suffer from this. + +> Is there some inherent drawback in -- at least temporarily -- going with b) that I might be missing? It's an obsolete, unmaintained server with not that great market share, so implementing extra workarounds just for it are not terribly high on my list of priorities... +> +> With kind regards, +> Jan +> +> [1] https://bugs.kde.org/show_bug.cgi?id=320828 +> [2] http://www.ietf.org/mail-archive/web/imapext/current/msg00477.html + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22595.mbox:2,S new file mode 100644 index 00000000..ce7e667b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22595.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From imantc at gmail.com Mon Mar 9 17:15:12 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + +Message-ID: + +> text protocol is neglectable in term of CPU usage ..., compare to let's say indexing of emails for search. + +well indexing is another topic. business email servers may or may not +index email. of course, there is virus scanning, spam filtering - all +this consumes resources. + +all I am saying: current protocols are wasteful from several points of +view and can be simplified. + +if anything, simpler protocols would lead to +- fewer production issues, +- shorter development time (for email server developers), +- more email server implementations, (choice is good) +- better protocol compliance (simpler protocol makes it easier to comply with). +- more robust mail delivery (less confusion over protocol) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22623.mbox:2,S new file mode 100644 index 00000000..826c7e23 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22623.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Sep 25 03:47:12 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <14D026C7F297AD44AC82578DD818CDD0345161158B@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +References: <5400A146.4020602@mozilla.com> + + <54011E24.4080209@mozilla.com> + <6f3e9961-32e6-4b4b-866f-7ce5526b0bf8@gulbrandsen.priv.no> + + <00bd4f8b-cc4e-48b9-8aad-6788e23666af@gulbrandsen.priv.no> + + <14D026C7F297AD44AC82578DD818CDD034516112A0@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> + <27b2d77f-d522-4f52-82ee-bcac200175fd@gulbrandsen.priv.no> + <14D026C7F297AD44AC82578DD818CDD0345161158B@TUS1XCHEVSPIN35.SYMC.SYMANTEC.COM> +Message-ID: <6feaea46-12c8-44a3-aab5-cc11a494b528@gulbrandsen.priv.no> + +Neil Hunsperger answers me: +> That's a great question about avoiding propagating existing +> protocol violations. My goal was to avoid introducing more +> protocol violations. Looking at the IMAP fetch responses, it +> appears to me that the server can always send the original email +> content in a literal to follow RFC 3501's own syntax. + +That's true, but that doesn't follow 5322's syntax, and I don't see any +permission in 3501 to ignore what 5322 says. Or 2822, or 4422/2222, or... + +The case Brandon has is similar: The client introduces a violation and the +server's straightforward error response propagates that. I did the same +this summer, when I decided that if a client sends an errant SMTP command +that includes non-ASCII, that client grants the server permission to use +non-ASCII in the error message too (in the code I wrote that would be +"parse error near ?re", "will not relay to ?re@v?re.h?ye" or similar). + +> I'm not sure if you were asking about a server deeply parsing +> email content for the purpose of protecting the client from +> 8-bit content found where RFC 5322 disallows it. + +No, I'm asking whether you have a sensible argument for arguing that the +server must take the MUSTs in some RFCs seriously and can ignore the MUSTs +in others. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22629.mbox:2,S new file mode 100644 index 00000000..574d91a6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22629.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From andris.reinman at gmail.com Wed Jul 30 01:34:31 2014 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Another gmail bug +Message-ID: + +Hello, + +It seems that recently everyone has been starting to use this mailing list as a GMail issue tracker, so heres my findings as well (do not know if these are known issues or not). + +1. If you EXAMINE a mailbox and FETCH a message with (FLAGS BODY[HEADER.FIELDS ?]) then the returned FLAGS list *always* includes the \Seen flag even if the message does not have this flag set. If you omit the headers part and just FETCH (FLAGS) then the \Seen flag is returned as it should. Notice that I am using BODY and not BODY.PEEK to fetch the headers. The actual flags are not changed as the mailbox was EXAMINEd not SELECTed but for this call the response includes the invalid \Seen. + +tag EXAMINE INBOX +tag FETCH 123 (FLAGS BODY[HEADER.FIELDS (?)) +* 123 FETCH (FLAGS (\Seen)) +tag FETCH 123 (FLAGS) +* 123 FETCH (FLAGS ()) <- no \Seen flag anymore + +2. If you have a message with an message/rfc822 attachment and the attached message does not have In-Reply-To set in its headers, then the returned ENVELOPE for this attachment uses ?NIL? as a String instead of NIL for the In-Reply-To value. + +tag FETCH 123 (BODYSTRUCTURE) +* 123 FETCH (BODYSTRUCTURE ? (?MESSAGE? ?RFC822? ? (NIL NIL ? ?NIL? <- Should be NIL, not ?NIL" + +I have also set up simple test cases (as node.js scripts) to verify these bugs: https://gist.github.com/andris9/592d69a40e970ea32597 + +Best regards, +Andris Reinman +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22635.mbox:2,S new file mode 100644 index 00000000..5cbdbe7a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22635.mbox:2,S @@ -0,0 +1,186 @@ +MBOX-Line: From jjmckay at comaxis.com Tue May 27 13:22:12 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> + +Message-ID: <5384F3F4.5090507@comaxis.com> + +It is the second case I am trying to implement, where in the UI, I can +see bar nested under foo. That does not appear to work +as you stated. Here is the trace of me creating two folders: + +A103 CREATE "Migrated" +A103 OK Success +A104 CREATE "Migrated/BUDGET CALCULATION" +A104 OK Success +A001 APPEND "Migrated/BUDGET CALCULATION" (\Seen) "18-Apr-2014 +09:49:00 -0700" {135007} ++ go ahead + +When I get a new list, I see this: + +* LIST (\HasChildren) "/" "Migrated" +* LIST (\HasNoChildren) "/" "Migrated/BUDGET CALCULATION" + +So it would have appeared to work, but, the UI displays only +"Migrated/BUDGET CALCULATION". There is also another +label called "[IMAP]/Migrated" with nothing in it. + + +On 5/27/2014 12:40 PM, Jamie Nicolson (???) wrote: +> I'm not sure what you mean by "single top level folder". "foo/bar" has +> the hierarchy delimiter in it, so from IMAP's point of view it is a +> nested folder. +> +> If you want to be able to store messages in "foo/bar", but not "foo", +> you can CREATE foo/ and then CREATE foo/bar. The first CREATE will be +> a no-op on Gmail, but will succeed with OK. The second CREATE will +> result in this folder layout: +> +> * LIST (\Noselect \HasChildren) "/" "foo" +> * LIST (\HasNoChildren) "/" "foo/bar" +> +> Now you can COPY and APPEND messages to foo/bar. If you also want to +> be able to store messages directly in foo, you just have to CREATE foo +> (without the hierarchy delimiter suffix). You can do this before or +> after creating "foo/bar". Then you'll have this: +> +> * LIST (\HasChildren) "/" "foo" +> * LIST (\HasNoChildren) "/" "foo/bar" +> +> The web UI displays these two cases differently. In the first case +> (where foo/bar is selectable but foo is \Noselect), we show "foo/bar" +> as a standalone label. In the second case (where foo/bar and foo are +> both selectable folders), we display bar nested under foo. This is +> just a quirk of the web UI. +> +> +> On Tue, May 27, 2014 at 12:14 PM, Jeff McKay > wrote: +> +> Yes that is what I get also, sorry for misstating the error +> message. I am still unclear though about how to create a folder +> with a sub-folder. You said that the correct syntax should be: +> +> CREATE "foo/bar" +> +> which creates a single top level folder called "foo/bar". I know +> that you want to support being able to create folder names +> that contain the hierarchy delimiter, but there seems to be a +> conflict here. +> +> +> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +>> I don't see any error message in the Gmail code for "hierarchy +>> character ignored". When I try to reproduce this, I see something +>> different: +>> +>> a create foo/ +>> a OK [CANNOT] Ignoring hierarchy declaration (Success) +>> +>> This seems to follow 6.3.3. +>> +>> +>> On Fri, May 23, 2014 at 9:09 PM, David Harris +>> > wrote: +>> +>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>> +>> > Has something changed with how Gmail handles the hierarchy +>> character +>> > in the CREATE command? I am sure I had this working at one +>> point, but +>> > now: +>> > +>> > CREATE "TopLevelFolder/" +>> > +>> > generates "NO hierarchy character ignored" +>> +>> The server would appear to be in error. See RFC3501, section +>> 6.3.3 ("The +>> Create Command"): +>> +>> If the mailbox name is suffixed with the server's hierarchy +>> separator character (as returned from the server by a LIST +>> command), this is a declaration that the client intends +>> to create +>> mailbox names under this name in the hierarchy. Server +>> implementations that do not require this declaration +>> MUST ignore +>> the declaration. In any case, the name created is +>> without the +>> trailing hierarchy delimiter. +>> +>> This seems pretty unambiguous to me, but no doubt there's an +>> alternative +>> reading I haven't considered (there usually is). I assume +>> GMail actually +>> *does* support submailboxes (I don't personally use it)? +>> +>> Interestingly, the example for section 6.3.3 is an almost +>> exact match to your +>> report: +>> +>> Example: +>> C: A003 CREATE owatagusiam/ +>> S: A003 OK CREATE completed +>> +>> Note that there is a reverse condition to this where a server +>> may report a +>> mailbox with a trailing hierarchy delimiter as part of a LIST +>> response; I +>> confess I've never understood exactly what that means +>> (Exchange used to +>> do it and may still do so) - Mark Crispin once explained it +>> to me as having +>> some meaning related to a test for existence, but I couldn't +>> grasp what he +>> meant. +>> +>> Cheers! +>> +>> -- David -- +>> +>> ------------------ David Harris -+- Pegasus Mail +>> ---------------------- +>> Box 5451, Dunedin, New Zealand | e-mail: +>> David.Harris@pmail.gen.nz +>> Phone: +64 3 453-6880 | +>> Fax: +64 3 453-6612 +>> +>> Real newspaper headlines from U.S. papers: +>> TRAFFIC DEAD RISE SLOWLY +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22641.mbox:2,S new file mode 100644 index 00000000..c7222834 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22641.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 18 18:39:49 2014 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> +Message-ID: <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + + +On Mar 18, 2014, at 5:04 PM, Bron Gondwana wrote: + +> I can't understand how STARTTLS ever got floated as an idea. It's totally insane. + +Damn you and your 20/20 hindsight! Care to lend us your waybac machine? :-) + +Anyway, if you think STARTTLS is horrific, you really don't want to know about the adventures surrounding the early implementations of AUTH ... + +The bottom line is that breaking every existing IMAP client and server wasn't a practical way to move forward. And the various authentication bits in IMAP rolled out just at the end of the 'naive' age of the 'we are all friends' internet. They were (are) incremental improvements to the situation as it existed. Breaking existing clients/servers was not an option. The best you can hope for is to offer better alternatives, encourage adoption, and hope attrition eventually solves the problem. + +Which it never will, but almost two decades after the fact, anyone using, or inflicting upon someone, an IMAP client that blindly issues LOGIN is perhaps deserving of their fate. C'est la vie. + +--lyndon +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22648.mbox:2,S new file mode 100644 index 00000000..c6d1e06d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22648.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From blong at google.com Wed Jan 15 13:07:45 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: <6a420a96-0755-48c3-b8d7-f208c6de14a1@gulbrandsen.priv.no> +References: <52D5D84D.6070208@verizon.net> + <6a420a96-0755-48c3-b8d7-f208c6de14a1@gulbrandsen.priv.no> +Message-ID: + +On Wed, Jan 15, 2014 at 12:13 AM, Arnt Gulbrandsen wrote: + +> On Wednesday, January 15, 2014 2:08:47 AM CEST, Brandon Long wrote: +> +>> It also makes the downgrade part of RFC5738 look pretty silly, as I +>> imagine almost every IMAP server is basically doing the same thing today, +>> sending 8bits blindly, assuming the headers were 7bit clean. It seems like +>> implementing RFC5738 makes your server break more messages than it fixes. +>> +> +> Yes, but why are you doing 5738 instead of 6855? + + +Didn't remember the exact rfc and did a quick search to find it. Yes, I +meant 6855... which really could use more information on how its different +from 5738, as I look at both right now. 6855 just says it obsoletes 5738. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22651.mbox:2,S new file mode 100644 index 00000000..1de8c212 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22651.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From brong at fastmail.fm Sat Dec 7 03:40:22 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Size wrong +In-Reply-To: <8ec5b37c-1444-44be-b328-7ce0a0851e7e@email.android.com> +References: + + + <1386389242.20171.56591329.4EBEE69A@webmail.messagingengine.com> + <8ec5b37c-1444-44be-b328-7ce0a0851e7e@email.android.com> +Message-ID: <1386416422.25962.56660581.73973518@webmail.messagingengine.com> + +If we did something like that in Cyrus it would be a flag on the index record, and old messages would not get changed until a reconstruct on the index. Then again, we store raw rfc822, so it's trivial to ensure identical output every time. + +On Sat, Dec 7, 2013, at 08:51 PM, Arnt Gulbrandsen wrote: +> I noticed that some messages changed when I added support for eai, because messages that contained 2047 in headers at arrival time suddenly needed to use utf8. +> +> Arnt + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22659.mbox:2,S new file mode 100644 index 00000000..5c6e96da --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22659.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Oct 28 06:25:22 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Mac OS 10.9 particularly buggy implementation of + IMAP +In-Reply-To: <1382749818.11252.38686053.54FA9CC9@webmail.messagingengine.com> +References: <1382749818.11252.38686053.54FA9CC9@webmail.messagingengine.com> +Message-ID: <20131028132511.GA13146@gulbrandsen.priv.no> + +On Sat, Oct 26, 2013 at 12:10:18PM +1100, Bron Gondwana wrote: +> (there's another interesting pattern, it appears to send the 'D' of +> 'DONE' in a separate packet when finishing IDLE... no idea why. I've +> never seen DONE split over two reads before) + +Two possibilities: + +1. It's a neat hack to learn whether a middlebox has killed the + connection. + +2. They're sending the D, O and N separately to extend NAT timeouts. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22662.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22662.mbox:2,S new file mode 100644 index 00000000..a531a229 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22662.mbox:2,S @@ -0,0 +1,200 @@ +MBOX-Line: From alexey.melnikov at isode.com Sun Sep 8 13:22:32 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Best way to support HTTP PUT based 'push' + notifications from IMAP? +In-Reply-To: <5225BF8C.7060602@mozilla.com> +References: <5225BF8C.7060602@mozilla.com> +Message-ID: <522CDC88.4070607@isode.com> + +On 03/09/2013 11:53, Andrew Sutherland wrote: +> On devices that either have difficulty maintaining persistent TCP +> connections or have power concerns about doing so, maintaining an IMAP +> connection for IDLE/NOTIFY purposes is undesirable and it would be +> great if the IMAP server could generate a notification via other means. +> +> For the Firefox OS e-mail client, one of the Web APIs the Firefox OS +> platform makes available and that Mozilla and other contributors are +> trying to standardize is the "Push API" +> (http://www.w3.org/TR/push-api/) under the auspices of the webapps WG +> (http://www.w3.org/2008/webapps/). The API is somewhat decoupled from +> the actual notification mechanism. Mozilla's reference server +> protocol is documented at +> https://wiki.mozilla.org/WebAPI/SimplePush/Protocol. +> +> From the IMAP server's perspective, the process is that the client +> uses the Push API to get a URL and then the client tells the IMAP +> server the URL. To notify the client, the IMAP server issues a PUT +> request to the URL. The only data payload is the 'version' which is a +> monotonically increasing 64-bit integer and allows for a degree of +> idempotency. The only key thing for the version is that if the server +> doesn't increase the value since the last time the client heard it, +> the client won't receive a new notification. +> +> *Our application-level goal is that rather than checking every N +> minutes, after each synchronization attempt we refresh our +> notification request before disconnecting from the IMAP server. The +> IMAP server would then send a ping notification when new messages are +> received for the account/inbox/whatever. * +> +> Details/thoughts from my investigation are found below. In general, +> I'm very interested in what server implementers think and would be +> willing to adopt, especially for things that might be +> enabled-by-default in deployments. It's been indicated to me that we +> (Mozilla) have engineering resources that could be used to help +> provide patches to open source implementation to help make this happen. +> +> Note that any solution that satisfies our needs could probably also +> satisfy similar needs. For example, the Firefox OS Calendar App makes +> use of the Google Calendar API's push notifications mechanism as +> documented at https://developers.google.com/google-apps/calendar/v3/push +> +> +> # Existing Work +> +> ## XAPPLEPUSHSERVICE +> +> The only thing I've seen in the wild seems to be XAPPLEPUSHSERVICE +> advertised by Yahoo's IMAP server and Apple's dovecot fork. The most +> useful information I've found on this is +> http://www.dovecot.org/list/dovecot/2012-August/067682.html which +> leads us to the implementation of XAPPLEPUSHSERVICE at +> http://www.opensource.apple.com/source/dovecot/dovecot-239.8/dovecot/src/imap/cmd-x-apple-push-service.c +> which tells us the syntax of the command. While the idea is similar, +> XAPPLEPUSHSERVICE does not seem to support alternate endpoints to +> Apple's Push Notification Service and so is not useful for our purposes. +> +> ## sieve/enotify +> +> The sieve enotify extension (http://tools.ietf.org/html/rfc5435) seems +> like the only standadized mechanism capable of implementing such +> logic. Unfortunately, there is no HTTP/URL notification listed in the +> registry at +> https://www.iana.org/assignments/sieve-notification/sieve-notification.xhtml. +> 'mailto' is a defined mechanism that has some support (ex: Pigeonhole +> on Dovecot), and it's possible for Mozilla to stand-up a proxy to help +> bridge this gap. + +mailto: can be sufficient for some gatewaying cases, but I suggest you +define a new "http" notification mechanism. I would be happy to help you +out with that. + +> The main problem with sieve is that adoption does not seem +> particularly wide-spread and discoverability when supported is +> limited, although I'm hoping that http://tools.ietf.org/html/rfc6785 +> could help improve that. +If you only care about notifications generated due to new mail +deliveries, than you can use ManageSieve: +. This is quite common when +Sieve is supported on delivery. + +> # Potential Workarounds +> +> I think the following options exist to make this work today: +> +> ## sieve mailto bridge +> +> Stand up an SMTP-receiving proxy so that sieve/enotify/mailto can be +> used to trigger instead of HTTP PUT. Use sieve to set up a rule to +> generate mail notifications every time a message is received. No +> message contents would be sent. This might result in a large number +> of notifications since it's not obvious to me how to write a stateful +> sieve script. + +Metadata can be used, as you suggested below. + +> ## Hosted IMAP Proxy (Undesirable due to inherent credential/data +> exposure) +> +> A proposal from those working on the back-end of Mozilla's push +> notification service is an HTTPS-accessible proxy. Instead of having +> the device maintain the long-lived IMAP connection, the device has a +> server do that on its behalf. The very undesirable aspect of such a +> solution is that while the proxy need not persist the credentials to +> disk, it does need to know them to establish the connection using +> traditional LOGIN. And even if a challenge-response authentication +> mechanism was used in such a way that the proxy server could not +> establish additional connections without device support, the proxy (or +> whatever pretends to be the proxy) would still have a fully authorized +> IMAP connection to use as it chooses until the connection is dropped. +> +> +> # Potential Standards Approaches +> +> ## Create a new capability, ex: PUSH-NOTIFY-HTTP=PUT +> +> Create a "PUSH-NOTIFY-HTTP PUT " capability with +> very simple semantics: +Did you mean an IMAP capability? +> - Each request is one-shot. The request lives until it is fired. +> - At once most one request per URL; new requests replace the old request. +> - An HTTP PUT is triggered to the given URL with content-type +> application/x-www-form-urlencoded with the provided body payload. +> - Body payload is limited to something really small; we only need to +> be able to encode "version=<64bitnumber>" +> - Delivery to the Inbox or maybe just delivery to the account in +> general in case a filter files the message somewhere. Messages filed +> to the junk folder would not trigger the notification. +> +> ## sieve enotify HTTP PUT extension + +This would be my preferred method. + +> Since it's not likely for adoption to happen immediately anyways and +> sieve is extremely powerful it seems like a reasonable choice to avoid +> introducing a new feature which is doomed to feature creep. +> +> Because sieve is not particularly stateful the main issue would be how +> to achieve single-shot semantics. This might be best addressed by +> doing something like the servermetadata example at +> http://tools.ietf.org/html/rfc5490#section-4.1 where the client would +> use metadata to control the process and the URL notification function +> would have built-in idempotent semantics. +A particular notification mechanism can support duplicate suppression, +although I am not sure that that is what you are asking for. + +Metadata works otherwise though. +> Each time the client connected it would refresh the 'verson' it uses +> and which is used in the notification invocation. Then when the sieve +> rule next fires, the URL/payload changes so that the notify action +> actually goes through. +> +> Multiple consumers of such notifications would be handled during +> rewrites of the sieve rules. A new device setting up for push +> notifications would identify its rule based on the URL the push API +> tells it. It would write its rule to the sieve store along with the +> current timestamp for the rule. It would also cull any other rules of +> the same variety whose timestamp more than twice as old as the +> rule-rewrite-interval based on the timestamp. +> +> ## custom sieve extension +> +> Realize the above state management logic is too crazy. Internalize the +> one-shot state management, still using metadata somehow. + +It is better to extend enotify, unless you can see some severe +limitations in the enotify framework. + +> ## Extend NOTIFY somehow +> +> This seems like it would be a mismatch since the NOTIFY subscription +> is inherently associated with the connection lifetime and any other +> lifetime would be weird. + +Agreed. + +> ## Define CONTEXT=pushnotify +> +> Similar to NOTIFY, this seems like a mismatch. +> +> +> Thanks for any/all responses, +> Andrew Sutherland + +Best Regards, +Alexey + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22665.mbox:2,S new file mode 100644 index 00000000..e45ecf30 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22665.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Aug 11 01:33:48 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with + \ANYFOO flag. +In-Reply-To: +References: <5206AB36.7080808@laposte.net> + +Message-ID: <20130811083343.GA8165@gulbrandsen.priv.no> + +On Sun, Aug 11, 2013 at 08:39:10AM +0100, Dave Cridland wrote: +> Will is not SHALL, will is a statement of fact... + +2119 doesn't say that its definitions apply only in upper case. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22671.mbox:2,S new file mode 100644 index 00000000..ae90c980 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22671.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dave at cridland.net Fri Jun 7 01:01:09 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] UW-IMAPD and its interpretation of ESEARCH +In-Reply-To: <1945792A-24F7-4F88-ACCE-279167C04BA0@isode.com> +References: + <1945792A-24F7-4F88-ACCE-279167C04BA0@isode.com> +Message-ID: + +On Fri, Jun 7, 2013 at 8:22 AM, Alexey Melnikov +wrote: + +> On 6 Jun 2013, at 21:15, Jan Kundr?t wrote: +> > The option b) looks like a reasonable stopgap measure with a very +> limited potential for false positives. It is also implementable very +> quickly within my client. The option a) will require a bit more work, but +> it looks like something more "robust" than b). +> +> Option a) looks quite unreliable (and dangerous) to me. +> I hope newer versions of UW don't suffer from this. +> +> +Yes, go for (b); it's what I'd do. (In fact, Inky possible already does +this). + +I might see if I can knock out an RFC 4731 bis which clarifies this. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095024.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095024.22675.mbox:2,S new file mode 100644 index 00000000..689e9d33 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095024.22675.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From blong at google.com Wed May 1 14:18:56 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Unsure paternity +In-Reply-To: <1367371210.5033.140661224967997.4E7EBBE1@webmail.messagingengine.com> +References: <5180559B.4010000@gmail.com> + <1367371210.5033.140661224967997.4E7EBBE1@webmail.messagingengine.com> +Message-ID: + +Would you believe its been a recognized bug since 2010 but we thought it +only applied if the user specifically had deleted the subfolder? And the +broken code has existed since we originally supported HasChildren in 2007. + +*sigh* + +I have a fix in process. + +Brandon + + +On Tue, Apr 30, 2013 at 6:20 PM, Bron Gondwana wrote: + +> +> +> On Wed, May 1, 2013, at 09:36 AM, David Barchiesi wrote: +> > I was analyzing the response produced by LISTing Gmails mailboxes and +> > came across something similiar: +> > +> > * LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" +> > +> > According to RFC 3348 [1]: +> > "It is an error for the server to return both a \HasChildren and a +> > \HasNoChildren attribute in a LIST response. ". +> > Could anyone explain what is going on here? +> +> Well, a bug obviously. It's not just you either, here's my gmail account +> complete LIST response (XLIST is identical, and LIST-EXTENDED doesn't seem +> to be supported at all) +> +> . list "" * +> * LIST (\HasNoChildren) "/" "INBOX" +> * LIST (\HasNoChildren) "/" "Personal" +> * LIST (\HasNoChildren) "/" "Receipts" +> * LIST (\HasNoChildren) "/" "Travel" +> * LIST (\HasNoChildren) "/" "Work" +> * LIST (\Noselect \HasChildren) "/" "[Gmail]" +> * LIST (\HasChildren \HasNoChildren \All) "/" "[Gmail]/All Mail" +> * LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts" +> * LIST (\HasChildren \HasNoChildren \Important) "/" "[Gmail]/Important" +> * LIST (\HasChildren \HasNoChildren \Sent) "/" "[Gmail]/Sent Mail" +> * LIST (\HasChildren \HasNoChildren \Junk) "/" "[Gmail]/Spam" +> * LIST (\HasChildren \HasNoChildren \Flagged) "/" "[Gmail]/Starred" +> * LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" +> . OK Success +> +> Brandon - any idea when this crept in? I haven't played with gmail's IMAP +> for a while, but I don't remember seeing it before. +> +> Bron. +> -- +> Bron Gondwana +> brong@fastmail.fm +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22595.mbox:2,S new file mode 100644 index 00000000..ae724dc6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22595.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From imantc at gmail.com Mon Mar 9 17:22:25 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + + +Message-ID: + +> with LITERAL we already skip through the larger data pieces + +yes Literal with IMAP and BDAT would be good examples to follow. +However because standards allow various combinations in syntax, all +these need to be taken care of in every server implementation. + +these features made perfect sense back in the day however things moved +on quite a bit since '90s. + +why not make the format as simple as possible to prepare, deliver and +display - given the advances in technology? + +maybe even give an extra thought to preventing spam - if this is possible.. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22623.mbox:2,S new file mode 100644 index 00000000..671f5dc7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22623.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Sep 26 05:38:49 2014 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> + +Message-ID: <54255E59.6040104@earthlink.net> + +Hi, + +With Gmail is XOAUTH2 the only login method that is not considered "less +secure"? + +For some reason I got the impression that AUTHENTICATE PLAIN was not +considered "less secure". + +Thanks +-Rick + + +-- +Rick Sanders +rfs9999@earthlink.net +IMAP Tools http://www.athensfbc.com/imap-tools + diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22629.mbox:2,S new file mode 100644 index 00000000..71869ea4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22629.mbox:2,S @@ -0,0 +1,136 @@ +MBOX-Line: From gullo at m4ss.net Wed Jul 30 06:20:06 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + +Message-ID: + +This is the complete transaction. +As you can see the Gmail Imap server does not send any contents: + +29.07.14 17:07 >>> >>>>>>> send >>>>>> +29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS RFC822.SIZE +ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE RFC822) +29.07.14 17:07 >>> >>>>>>> end send >>>>>> +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2} +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< FLAGS (\Seen) ENVELOPE ("Thu, 26 Aug 2010 16:32:43 ++0200" "Transfer of Licence" (("Marcus Breiden" NIL "marcus" "edu-magic.net")) +((NIL NIL "marcus" "breiden.net")) (("Marcus Breiden" NIL "marcus" " +edu-magic.net")) ((NIL NIL "sales" "activewords.com")) NIL NIL NIL "< +AANLkTim1oYW+6YcmJkJb7dWDqF6d36wBUTjEjtJC1+wr@mail.gmail.com>") +BODYSTRUCTURE (("TEXT" "PLAIN" ("CHARSET" "ISO-8859-1") NIL NIL "7BIT" 243 +9 NIL NIL NIL)("TEXT" "HTML" ("CHARSET" "ISO-8859-1") NIL NIL "7BIT" 395 2 +NIL NIL NIL) "ALTERNATIVE" ("BOUNDARY" "000325573a4605caab048ebadf78") NIL +NIL) BODY[HEADER.FIELDS (References)] {2} +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< ) +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< * 2 FETCH (X-GM-MSGID 1345153544278287346 UID 7853 +RFC822.SIZE 5433 BODY[HEADER.FIELDS (References)] {151} +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< References: < +AANLkTim1oYW+6YcmJkJb7dWDqF6d36wBUTjEjtJC1+wr@mail.gmail.com> + <52AA1094A13E1B4389FE071EFAFD69D42B1C3FEA7A@mbx1.hostedexchange.local> +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< FLAGS (\Seen) ENVELOPE ("Thu, 26 Aug 2010 17:59:46 ++0200" "Re: Transfer of Licence" (("Marcus Breiden" NIL "marcus" " +edu-magic.net")) ((NIL NIL "marcus" "breiden.net")) (("Marcus Breiden" NIL +"marcus" "edu-magic.net")) (("ActiveWords Support" NIL "support" " +activewords.com")) NIL NIL "< +52AA1094A13E1B4389FE071EFAFD69D42B1C3FEA7A@mbx1.hostedexchange.local>" "< +AANLkTin+c+NkCma81D0F6uksqCTJrC5ZJ4Hr5qTJJ8ue@mail.gmail.com>") +BODYSTRUCTURE (("TEXT" "PLAIN" ("CHARSET" "ISO-8859-1") NIL NIL "7BIT" 997 +53 NIL NIL NIL)("TEXT" "HTML" ("CHARSET" "ISO-8859-1") NIL NIL +"QUOTED-PRINTABLE" 3395 125 NIL NIL NIL) "ALTERNATIVE" ("BOUNDARY" +"001636c59a685986fc048ebc165f") NIL NIL) BODY[HEADER.FIELDS (References)] +{151} +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< References: < +AANLkTim1oYW+6YcmJkJb7dWDqF6d36wBUTjEjtJC1+wr@mail.gmail.com> + <52AA1094A13E1B4389FE071EFAFD69D42B1C3FEA7A@mbx1.hostedexchange.local> +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< ) +29.07.14 17:07 <<< <<<<<<< end read <<<<<< +29.07.14 17:07 <<< <<<<<<< read <<<<<< +29.07.14 17:07 <<< 5 OK Success + + +2014-07-30 0:38 GMT+02:00 Hoa V. Dinh : + +> Davide, +> you should probably show explicitly the content it?s sending and why it +> doesn?t match the size of the literal. +> +> -- +> Hoa V. Dinh +> +> On Tuesday, July 29, 2014 at 3:36 PM, Michael M Slusarz wrote: +> +> Quoting Davide Gullo : +> +> The literal is wrong, I don't know if the RFC822.SIZE too. +> Brandon, I can give you the account if you want. +> +> +> Why is the literal wrong? The References header might not match in +> that message. In which case the literal length will correctly be 2 +> (for the CRLF header delimiter). +> +> [snip] +> +> 29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS +> RFC822.SIZE ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE +> RFC822) +> 29.07.14 17:07 >>> >>>>>>> end send >>>>>> +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> *29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +> RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2}* +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> +> +> michael +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + + + +-- +Davide Gullo, Consulente Web (professionista disciplinato ai sensi della +legge 4/2013) +http://www.m4ss.net +gullo@m4ss.net +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22635.mbox:2,S new file mode 100644 index 00000000..de740b2f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22635.mbox:2,S @@ -0,0 +1,184 @@ +MBOX-Line: From nicolson at google.com Tue May 27 13:39:42 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: <5384F3F4.5090507@comaxis.com> +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> + + <5384F3F4.5090507@comaxis.com> +Message-ID: + +Ah, yes, "Migrated" matches a Gmail system label (like Inbox, Sent, etc), +and therefore it is aliased to [IMAP]/Migrated in the web interface. Note +that you can't even create a label named "Migrated" in the web interface; +you'll get the error, "The label name Migrated is invalid." The same thing +would happen if your top-level folder were named Sent, Spam, Trash, etc. +This shouldn't effect how things work in IMAP, but will change how they are +displayed in the web interface. + + +On Tue, May 27, 2014 at 1:22 PM, Jeff McKay wrote: + +> It is the second case I am trying to implement, where in the UI, I can +> see bar nested under foo. That does not appear to work +> as you stated. Here is the trace of me creating two folders: +> +> A103 CREATE "Migrated" +> A103 OK Success +> A104 CREATE "Migrated/BUDGET CALCULATION" +> A104 OK Success +> A001 APPEND "Migrated/BUDGET CALCULATION" (\Seen) "18-Apr-2014 +> 09:49:00 -0700" {135007} +> + go ahead +> +> When I get a new list, I see this: +> +> * LIST (\HasChildren) "/" "Migrated" +> * LIST (\HasNoChildren) "/" "Migrated/BUDGET CALCULATION" +> +> So it would have appeared to work, but, the UI displays only +> "Migrated/BUDGET CALCULATION". There is also another +> label called "[IMAP]/Migrated" with nothing in it. +> +> +> On 5/27/2014 12:40 PM, Jamie Nicolson (???) wrote: +> +> I'm not sure what you mean by "single top level folder". "foo/bar" has the +> hierarchy delimiter in it, so from IMAP's point of view it is a nested +> folder. +> +> If you want to be able to store messages in "foo/bar", but not "foo", +> you can CREATE foo/ and then CREATE foo/bar. The first CREATE will be a +> no-op on Gmail, but will succeed with OK. The second CREATE will result in +> this folder layout: +> +> * LIST (\Noselect \HasChildren) "/" "foo" +> * LIST (\HasNoChildren) "/" "foo/bar" +> +> Now you can COPY and APPEND messages to foo/bar. If you also want to be +> able to store messages directly in foo, you just have to CREATE foo(without the hierarchy delimiter suffix). You can do this before or after +> creating "foo/bar". Then you'll have this: +> +> * LIST (\HasChildren) "/" "foo" +> * LIST (\HasNoChildren) "/" "foo/bar" +> +> The web UI displays these two cases differently. In the first case +> (where foo/bar is selectable but foo is \Noselect), we show "foo/bar" as a +> standalone label. In the second case (where foo/bar and foo are both +> selectable folders), we display bar nested under foo. This is just a quirk +> of the web UI. +> +> +> On Tue, May 27, 2014 at 12:14 PM, Jeff McKay wrote: +> +>> Yes that is what I get also, sorry for misstating the error message. I +>> am still unclear though about how to create a folder +>> with a sub-folder. You said that the correct syntax should be: +>> +>> CREATE "foo/bar" +>> +>> which creates a single top level folder called "foo/bar". I know that +>> you want to support being able to create folder names +>> that contain the hierarchy delimiter, but there seems to be a conflict +>> here. +>> +>> +>> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +>> +>> I don't see any error message in the Gmail code for "hierarchy character +>> ignored". When I try to reproduce this, I see something different: +>> +>> a create foo/ +>> a OK [CANNOT] Ignoring hierarchy declaration (Success) +>> +>> This seems to follow 6.3.3. +>> +>> +>> On Fri, May 23, 2014 at 9:09 PM, David Harris > > wrote: +>> +>>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>>> +>>> > Has something changed with how Gmail handles the hierarchy character +>>> > in the CREATE command? I am sure I had this working at one point, but +>>> > now: +>>> > +>>> > CREATE "TopLevelFolder/" +>>> > +>>> > generates "NO hierarchy character ignored" +>>> +>>> The server would appear to be in error. See RFC3501, section 6.3.3 ("The +>>> Create Command"): +>>> +>>> If the mailbox name is suffixed with the server's hierarchy +>>> separator character (as returned from the server by a LIST +>>> command), this is a declaration that the client intends to create +>>> mailbox names under this name in the hierarchy. Server +>>> implementations that do not require this declaration MUST ignore +>>> the declaration. In any case, the name created is without the +>>> trailing hierarchy delimiter. +>>> +>>> This seems pretty unambiguous to me, but no doubt there's an alternative +>>> reading I haven't considered (there usually is). I assume GMail actually +>>> *does* support submailboxes (I don't personally use it)? +>>> +>>> Interestingly, the example for section 6.3.3 is an almost exact match to +>>> your +>>> report: +>>> +>>> Example: +>>> C: A003 CREATE owatagusiam/ +>>> S: A003 OK CREATE completed +>>> +>>> Note that there is a reverse condition to this where a server may report +>>> a +>>> mailbox with a trailing hierarchy delimiter as part of a LIST response; I +>>> confess I've never understood exactly what that means (Exchange used to +>>> do it and may still do so) - Mark Crispin once explained it to me as +>>> having +>>> some meaning related to a test for existence, but I couldn't grasp what +>>> he +>>> meant. +>>> +>>> Cheers! +>>> +>>> -- David -- +>>> +>>> ------------------ David Harris -+- Pegasus Mail ---------------------- +>>> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +>>> Phone: +64 3 453-6880 <%2B64%203%20453-6880> | Fax: +64 3 +>>> 453-6612 <%2B64%203%20453-6612> +>>> +>>> Real newspaper headlines from U.S. papers: +>>> TRAFFIC DEAD RISE SLOWLY +>>> +>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing listImap-protocol@u.washington.eduhttp://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22641.mbox:2,S new file mode 100644 index 00000000..3b7e01ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22641.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 18 19:23:31 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> +Message-ID: <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + +On Wed, Mar 19, 2014, at 12:39 PM, Lyndon Nerenberg wrote: +> On Mar 18, 2014, at 5:04 PM, Bron Gondwana wrote: +> +> > I can't understand how STARTTLS ever got floated as an idea. It's totally insane. +> +> Damn you and your 20/20 hindsight! Care to lend us your waybac machine? :-) + +So why is 993 deprecated rather than STARTTLS deprecated now? STARTTLS is _still_ a bad idea. + +We don't need a wayback machine to fix the future. + +> Anyway, if you think STARTTLS is horrific, you really don't want to know about the adventures surrounding the early implementations of AUTH ... +> +> The bottom line is that breaking every existing IMAP client and server wasn't a practical way to move forward. And the various authentication bits in IMAP rolled out just at the end of the 'naive' age of the 'we are all friends' internet. They were (are) incremental improvements to the situation as it existed. Breaking existing clients/servers was not an option. The best you can hope for is to offer better alternatives, encourage adoption, and hope attrition eventually solves the problem. +> +> Which it never will, but almost two decades after the fact, anyone using, or inflicting upon someone, an IMAP client that blindly issues LOGIN is perhaps deserving of their fate. C'est la vie. + +Sadly, they're still out there - which is why FastMail doesn't allow port 143 at all. Port 993 appears to be working in the real world[tm]. + +I'd be interested in seeing the actual stats for which clients can be convinced by a MITM to give up their credentials in plaintext in their default configuration. Don't give me a checkbox which requires the user to actively increase the security level, because that won't work. In fact, don't even give the user a dialog which allows them to send the password insecurely, because they will. + +Not responding to a SYN on port 143 with an ACK... + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22648.mbox:2,S new file mode 100644 index 00000000..a2168e6a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22648.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jan 15 13:19:14 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: +References: <52D5D84D.6070208@verizon.net> + <6a420a96-0755-48c3-b8d7-f208c6de14a1@gulbrandsen.priv.no> + +Message-ID: + +On Wednesday, January 15, 2014 10:07:45 PM CEST, Brandon Long wrote: +> Didn't remember the exact rfc and did a quick search to find +> it. Yes, I meant 6855... which really could use more +> information on how its different from 5738, as I look at both +> right now. 6855 just says it obsoletes 5738. + +I suppose it could do with a bit more. + +6855 started as 5738 with a random smattering of improvements (I didn't pay +attention at the start). Then I tried to implement it and protested against +various brain damage, and in one quick jabber session, 5738bis lost every +feature I hated. I was so surprised that I'm not sure I remembered to +mention everything. Then Dave Cridland suggested better quoting, and then +the RFC was published. + +What badness do you see in 6855? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22651.mbox:2,S new file mode 100644 index 00000000..25941ac9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22651.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From docbook.xml at gmail.com Thu Dec 12 14:03:31 2013 +To: imap-protocol@u.washington.edu +From: "Ali, Saqib" +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Localized Gmail IMAP Folders +Message-ID: + +I am not sure if this is the correct forum for this question, but I will +ask anyways :) + +We have an application that connects to [Gmail]\All Mail. However it +appears this special folder's name is localized based on user's +localization settings. + +What is the best way to handle this? One way is to keep a list of localized +names of this folder........ + + +Thanks, +Saqib +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22659.mbox:2,S new file mode 100644 index 00000000..0e368f68 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22659.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From mg at MIT.EDU Mon Oct 28 12:00:13 2013 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Mac OS 10.9 particularly buggy implementation of + IMAP +In-Reply-To: <20131028132511.GA13146@gulbrandsen.priv.no> +References: <1382749818.11252.38686053.54FA9CC9@webmail.messagingengine.com> + <20131028132511.GA13146@gulbrandsen.priv.no> +Message-ID: + +Have you seen the 2-million-message-copy behavior on multiple users? That +seems like a bug that might be related to some weird rules, or perhaps a +buggy migration of rules from 10.8 to 10.9. + +From talking to people at Apple, literally the *best* way to get stuff like +this fixed is to file bug reports on BugReporter. +After that, please post the issue to +OpenRadar so +others can see it. For your users that actively report problems, you can +send them some boilerplate to also submit a bug, and include the original +bug number so it can be marked as a dupe. + + + + + + + + +On Mon, Oct 28, 2013 at 6:25 AM, Arnt Gulbrandsen +wrote: + +> On Sat, Oct 26, 2013 at 12:10:18PM +1100, Bron Gondwana wrote: +> > (there's another interesting pattern, it appears to send the 'D' of +> > 'DONE' in a separate packet when finishing IDLE... no idea why. I've +> > never seen DONE split over two reads before) +> +> Two possibilities: +> +> 1. It's a neat hack to learn whether a middlebox has killed the +> connection. +> +> 2. They're sending the D, O and N separately to extend NAT timeouts. +> +> Arnt +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22665.mbox:2,S new file mode 100644 index 00000000..039e19af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22665.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From dave at cridland.net Sun Aug 11 03:27:47 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with + \ANYFOO flag. +In-Reply-To: <20130811083343.GA8165@gulbrandsen.priv.no> +References: <5206AB36.7080808@laposte.net> + + <20130811083343.GA8165@gulbrandsen.priv.no> +Message-ID: + +On Sun, Aug 11, 2013 at 9:33 AM, Arnt Gulbrandsen +wrote: + +> On Sun, Aug 11, 2013 at 08:39:10AM +0100, Dave Cridland wrote: +> > Will is not SHALL, will is a statement of fact... +> +> 2119 doesn't say that its definitions apply only in upper case. +> + +No, but "WILL" isn't listed either... +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22671.mbox:2,S new file mode 100644 index 00000000..22dcaf84 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22671.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From jonabbey at arlut.utexas.edu Fri Jun 7 23:10:48 2013 +To: imap-protocol@u.washington.edu +From: Jonathan Abbey +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] UW-IMAPD and its interpretation of ESEARCH +In-Reply-To: +References: +Message-ID: <20130608061048.GE3533@arlut.utexas.edu> + +On Thu, 06 Jun 2013 15:15:32 -0500, Jan Kundr?t wrote: +| Hi, +| one of my users has reported [1] that his IMAP server (UW-IMAPD, +| reporting as "2007e.404" in the initial greetings) is using the +| wrong [2] interpretation of the ESEARCH extension -- always +| reporting the UIDs as "min:max", effectively removing the huge +| benefit of that extension. +| +| What is the least damaging way to work around this? Here's a couple of ideas: +| +| a) Detect ESEARCH response passed as min:max. When the number of +| messages exceeds what EXISTS reports, blacklist the ESEARCH +| extension and try once again using plain SEARCH. +| +| b) Resort to ugly user-agent-sniffing-alike and blacklist ESEARCH +| preemptively when the initial greetings contains the "IMAP4rev1 +| 2007e.404 at" string *and* the "SCAN" capability is present. +| +| The option b) looks like a reasonable stopgap measure with a very +| limited potential for false positives. It is also implementable very +| quickly within my client. The option a) will require a bit more +| work, but it looks like something more "robust" than b). +| +| Is there some inherent drawback in -- at least temporarily -- going +| with b) that I might be missing? It's an obsolete, unmaintained +| server with not that great market share, so implementing extra +| workarounds just for it are not terribly high on my list of +| priorities... + +Take a look at Panda IMAP at + + http://github.com/jonabey/panda-imap + +that repo includes the very last version of Mark Crispin's personal +fork of UW IMAP that he did after he was laid off from UW. I know he +fixed a lot of non-security related stuff in his code that was never +back-ported into UW IMAP. + +If it turns out that the bug you're describing is still in this code, +I'd be happy to work on fixing it / accepting patches to fix it. + +Thanks, + + Jon + +-- +------------------------------------------------------------------------------- +Jonathan Abbey jonabbey@arlut.utexas.edu +Applied Research Laboratories The University of Texas at Austin +GPG Key: 71767586 at keyserver pgp.mit.edu, http://www.ganymeta.org/workkey.gpg +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: not available +Type: application/pgp-signature +Size: 205 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22675.mbox:2,S new file mode 100644 index 00000000..937b055c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22675.mbox:2,S @@ -0,0 +1,153 @@ +MBOX-Line: From brong at fastmail.fm Wed May 1 16:40:26 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Unsure paternity +In-Reply-To: +References: <5180559B.4010000@gmail.com> + <1367371210.5033.140661224967997.4E7EBBE1@webmail.messagingengine.com> + +Message-ID: <1367451626.16110.140661225409245.52FEA78F@webmail.messagingengine.com> + +It would be rather cool if you had somewhere you could publish a list +of known differences between your implementation and the standard... +not quite as good as working, but hey :) + + + +I'm finally at the point where I have the cycles to fix some long +standing bugs in LIST-EXT handling in Cyrus - we have a problem that +the mailbox listing the subscriptions listing are different databases, +and we choose to iterate one or the other, but not both, meaning we +miss some recursivematch cases. + + + +Looking forward to finding time to play with your CONDSTORE stuff too. +I'm really liking the power of MODSEQ to save bandwidth. + + + +Bron. + + + +On Thu, May 2, 2013, at 07:18 AM, Brandon Long wrote: + +Would you believe its been a recognized bug since 2010 but we thought +it only applied if the user specifically had deleted the subfolder? +And the broken code has existed since we originally supported +HasChildren in 2007. + +*sigh* + +I have a fix in process. + +Brandon + + + +On Tue, Apr 30, 2013 at 6:20 PM, Bron Gondwana <[1]brong@fastmail.fm> +wrote: + + + + + +On Wed, May 1, 2013, at 09:36 AM, David Barchiesi wrote: + +> I was analyzing the response produced by LISTing Gmails mailboxes and + +> came across something similiar: + +> + +> * LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" + +> + +> According to RFC 3348 [1]: + +> "It is an error for the server to return both a \HasChildren and a + +> \HasNoChildren attribute in a LIST response. ". + +> Could anyone explain what is going on here? + + + +Well, a bug obviously. It's not just you either, here's my gmail +account + +complete LIST response (XLIST is identical, and LIST-EXTENDED doesn't +seem + +to be supported at all) + + + +. list "" * + +* LIST (\HasNoChildren) "/" "INBOX" + +* LIST (\HasNoChildren) "/" "Personal" + +* LIST (\HasNoChildren) "/" "Receipts" + +* LIST (\HasNoChildren) "/" "Travel" + +* LIST (\HasNoChildren) "/" "Work" + +* LIST (\Noselect \HasChildren) "/" "[Gmail]" + +* LIST (\HasChildren \HasNoChildren \All) "/" "[Gmail]/All Mail" + +* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts" + +* LIST (\HasChildren \HasNoChildren \Important) "/" "[Gmail]/Important" + +* LIST (\HasChildren \HasNoChildren \Sent) "/" "[Gmail]/Sent Mail" + +* LIST (\HasChildren \HasNoChildren \Junk) "/" "[Gmail]/Spam" + +* LIST (\HasChildren \HasNoChildren \Flagged) "/" "[Gmail]/Starred" + + + +* LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" + +. OK Success + + + +Brandon - any idea when this crept in? I haven't played with gmail's +IMAP + +for a while, but I don't remember seeing it before. + + + +Bron. + +-- + + Bron Gondwana + + [2]brong@fastmail.fm + + + + + + +-- +Bron Gondwana +brong@fastmail.fm + +References + +1. mailto:brong@fastmail.fm +2. mailto:brong@fastmail.fm +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095025.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095025.22679.mbox:2,S new file mode 100644 index 00000000..4da727ac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095025.22679.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Mon Apr 1 01:53:41 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + <465A2A40-E7B0-421E-9140-D2672F0F682D@iki.fi> + +Message-ID: <16568A67-AB8A-4627-AEC4-243E1B2709E7@iki.fi> + +On 1.4.2013, at 8.42, Brandon Long wrote: + +> On Sat, Mar 30, 2013 at 2:01 PM, Timo Sirainen wrote: +> On 26.3.2013, at 23.26, Brandon Long wrote: +> +> > So, if a user attempted to draft a message larger than our limit (35MB), with LITERAL+, the client would just issue an APPEND with two large a message. Our options were to just eat the data and say NO afterwards (great waste of bandwidth) or drop the connection. Some clients would just keep retrying to do the APPEND until they exhausted the upload bandwidth quota, or just cost the user a lot of money if they happened to be on a line that charged. +> +> Did you consider blocking the client's IP for n minutes and sending the user an email explaining the issue and asking to reset the client? +> +> +> If we block the IP, they won't get the email either... but there may be something there that could work. + +I was more thinking that the user would then login via webmail to find the mail. Maybe not block entirely but show login failure with [ALERT] or something. + +> I'm more thinking that implementing the UTF8 rfc (or at least parts of it) would eliminate most of the need to use literals in commands, giving us the near equivalent to "only allow literal+ except for append". + +Well, would be nice to implement UTF8 in any case, but somehow I doubt it's going to help anytime soon. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22595.mbox:2,S new file mode 100644 index 00000000..898d7384 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22595.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From brong at fastmail.fm Mon Mar 9 17:25:42 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + + +Message-ID: <1425947142.1718611.238135065.31CDBC0E@webmail.messagingengine.com> + + + +On Tue, Mar 10, 2015, at 11:15 AM, Imants Cekusins wrote: +> > text protocol is neglectable in term of CPU usage ..., compare to let's say indexing of emails for search. +> +> well indexing is another topic. business email servers may or may not +> index email. of course, there is virus scanning, spam filtering - all +> this consumes resources. +> +> all I am saying: current protocols are wasteful from several points of +> view and can be simplified. +> +> if anything, simpler protocols would lead to +> - fewer production issues, +> - shorter development time (for email server developers), +> - more email server implementations, (choice is good) +> - better protocol compliance (simpler protocol makes it easier to comply with). +> - more robust mail delivery (less confusion over protocol) + +So it looks like we're talking about SMTP more than IMAP here. One thing with the client<->server protocol is that you can do a lot of pre-calculation and caching on the server, particularly if you know what fields clients are likely to request. If you're re-creating the ENVELOPE on every read, then your server will be slow for sure. + +But yes, simpler protocols are good for a lot of things. Text vs not text is not so much of a big issue there though, if you can just load a JSON library or even (cough, splutter) an XML library and get on with business, it doesn't matter what the wire protocol is so much. A protocol which is nicely regular and easy to parse/recreate is valuable, because then you can proxy it easily. + +We use nginx as an IMAP proxy, but it all it does is the authentication step, and then provides a dumb stream proxy to the backends. I would love if it was easy to make it a bit more protocol aware, so we could easily inject a notice to the proxy that this backend was going away, and to switch the connection to this new replica. Of course, that sucks anyway because of selected mailbox state, and THAT would need to be moved to the replica - or uploaded to nginx and streamed back in. Messy either way. Having that state removed so that you don't need to serialise it to a new backend would make me very happy. + +Bron ( or just stop having connections that persist for days ) + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22623.mbox:2,S new file mode 100644 index 00000000..7436fa4a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22623.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From blong at google.com Fri Sep 26 09:09:58 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: <54255E59.6040104@earthlink.net> +References: <5400A146.4020602@mozilla.com> + + <54255E59.6040104@earthlink.net> +Message-ID: + +Anything that uses the user's password is generally considered 'less +secure'. + +Basically, with the high prevalence of password reuse and +compromise/exfiltration/phishing/malware/etc, passwords are no longer a +sufficient method of proving account ownership. On the web, with a Turing +machine available to us and a number of signals and the fact that the user +is actually sitting physical in front of a computer, we can mostly ensure +auth, but for IMAP which may be from a service or proxy and the prevalence +of smart phones which both travel and are often NAT'd across the country, +things are much more complicated. + +So, yes, please use xoauth2 or the oauth-bearer when its available (we're +just waiting on the rfc to be published at this point). + +And as good a time as any to remind folks that xoauth has been deprecated +for a while now and will cease to work next year. Migrate your users now. + +XOAuth2 should be supported as long as oauth-bearer since its has only +minor differences being based on an earlier draft, the tokens are all the +same. + +Brandon +On Sep 26, 2014 5:36 AM, "Rick Sanders" wrote: + +> Hi, +> +> With Gmail is XOAUTH2 the only login method that is not considered "less +> secure"? +> +> For some reason I got the impression that AUTHENTICATE PLAIN was not +> considered "less secure". +> +> Thanks +> -Rick +> +> +> -- +> Rick Sanders +> rfs9999@earthlink.net +> IMAP Tools http://www.athensfbc.com/imap-tools +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22629.mbox:2,S new file mode 100644 index 00000000..dbbc66d9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22629.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From jkt at flaska.net Wed Jul 30 06:50:38 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + +Message-ID: <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + +On Wednesday, 30 July 2014 15:20:06 CEST, Davide Gullo wrote: +> 29.07.14 17:07 >>> >>>>>>> send >>>>>> +> 29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS RFC822.SIZE +> ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE RFC822) +> 29.07.14 17:07 >>> >>>>>>> end send >>>>>> +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> 29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +> RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2} +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< + +I don't see any problem in this log. Chances are that your client's IMAP +parser does not properly support literals. Please note that the server says +that the "BODY[HEADER.FIELDS (References)]" item which you are fetching +contains exactly two bytes, the CR followed by LF. In C-syntax, that would +be "\r\n". + +So this is how the data sent by the server look like on the wire (again, +using the C-style escaping of non-printable character): + +BODY[HEADER.FIELDS (References)] {2}\r\n\r\n)\r\n + +Let's break it down: + +1) "BODY[HEADER.FIELDS (References)]" -- that's an identification what +you're about to read. + +2) SP (a space, " ") -- delimiter, as defined by the FETCH response format + +3) "{2}\r\n" -- this means that a LITERAL follows. The overal size of the +literal is two bytes. You *must* stop reading in a line-oriented manner +right now, and switch to reading the exact number of bytes which the server +tells you -- two bytes in this case. + +4) "\r\n", i.e. CR LF -- actual header data. The header is missing, so the +server sends just the CR LF which is the separator between the header and +the body of a MIME message. + +5) ")" -- consitutes the end of the FETCH response data + +6) CR LF -- end of the line, end of the response + +Let's see it in action: + +> BODY[HEADER.FIELDS (References)] {2} +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< + +...at this point you know it's a literal. You should switch from +read-until-end-of-line mode into reading-number-of-binary-bytes mode right +now, and read two bytes in that mode. + +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< + +Your code silently ignores CR LF line ends. You have a bug right here. + +OK, you've read two bytes, you should switch to the standard mode of +reading until EOL: + +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +> 29.07.14 17:07 <<< ) +> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< + +Right, end of response, everything is OK. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22635.mbox:2,S new file mode 100644 index 00000000..b8312227 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22635.mbox:2,S @@ -0,0 +1,213 @@ +MBOX-Line: From jjmckay at comaxis.com Tue May 27 13:56:53 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> + + <5384F3F4.5090507@comaxis.com> + +Message-ID: <5384FC15.9060307@comaxis.com> + +Thanks. Bad luck and ignorance on my part to have picked a reserved +folder name to test, but it's good to know that it works +the way I thought it did. + +On 5/27/2014 1:39 PM, Jamie Nicolson (???) wrote: +> Ah, yes, "Migrated" matches a Gmail system label (like Inbox, Sent, +> etc), and therefore it is aliased to [IMAP]/Migrated in the web +> interface. Note that you can't even create a label named "Migrated" in +> the web interface; you'll get the error, "The label name Migrated is +> invalid." The same thing would happen if your top-level folder were +> named Sent, Spam, Trash, etc. This shouldn't effect how things work in +> IMAP, but will change how they are displayed in the web interface. +> +> +> On Tue, May 27, 2014 at 1:22 PM, Jeff McKay > wrote: +> +> It is the second case I am trying to implement, where in the UI, I +> can see bar nested under foo. That does not appear to work +> as you stated. Here is the trace of me creating two folders: +> +> A103 CREATE "Migrated" +> A103 OK Success +> A104 CREATE "Migrated/BUDGET CALCULATION" +> A104 OK Success +> A001 APPEND "Migrated/BUDGET CALCULATION" (\Seen) +> "18-Apr-2014 09:49:00 -0700" {135007} +> + go ahead +> +> When I get a new list, I see this: +> +> * LIST (\HasChildren) "/" "Migrated" +> * LIST (\HasNoChildren) "/" "Migrated/BUDGET CALCULATION" +> +> So it would have appeared to work, but, the UI displays only +> "Migrated/BUDGET CALCULATION". There is also another +> label called "[IMAP]/Migrated" with nothing in it. +> +> +> On 5/27/2014 12:40 PM, Jamie Nicolson (???) wrote: +>> I'm not sure what you mean by "single top level folder". +>> "foo/bar" has the hierarchy delimiter in it, so from IMAP's point +>> of view it is a nested folder. +>> +>> If you want to be able to store messages in "foo/bar", but not +>> "foo", you can CREATE foo/ and then CREATE foo/bar. The first +>> CREATE will be a no-op on Gmail, but will succeed with OK. The +>> second CREATE will result in this folder layout: +>> +>> * LIST (\Noselect \HasChildren) "/" "foo" +>> * LIST (\HasNoChildren) "/" "foo/bar" +>> +>> Now you can COPY and APPEND messages to foo/bar. If you also want +>> to be able to store messages directly in foo, you just have to +>> CREATE foo (without the hierarchy delimiter suffix). You can do +>> this before or after creating "foo/bar". Then you'll have this: +>> +>> * LIST (\HasChildren) "/" "foo" +>> * LIST (\HasNoChildren) "/" "foo/bar" +>> +>> The web UI displays these two cases differently. In the first +>> case (where foo/bar is selectable but foo is \Noselect), we show +>> "foo/bar" as a standalone label. In the second case (where +>> foo/bar and foo are both selectable folders), we display bar +>> nested under foo. This is just a quirk of the web UI. +>> +>> +>> On Tue, May 27, 2014 at 12:14 PM, Jeff McKay > > wrote: +>> +>> Yes that is what I get also, sorry for misstating the error +>> message. I am still unclear though about how to create a folder +>> with a sub-folder. You said that the correct syntax should be: +>> +>> CREATE "foo/bar" +>> +>> which creates a single top level folder called "foo/bar". I +>> know that you want to support being able to create folder names +>> that contain the hierarchy delimiter, but there seems to be +>> a conflict here. +>> +>> +>> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +>>> I don't see any error message in the Gmail code for +>>> "hierarchy character ignored". When I try to reproduce this, +>>> I see something different: +>>> +>>> a create foo/ +>>> a OK [CANNOT] Ignoring hierarchy declaration (Success) +>>> +>>> This seems to follow 6.3.3. +>>> +>>> +>>> On Fri, May 23, 2014 at 9:09 PM, David Harris +>>> >> > wrote: +>>> +>>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>>> +>>> > Has something changed with how Gmail handles the +>>> hierarchy character +>>> > in the CREATE command? I am sure I had this working at +>>> one point, but +>>> > now: +>>> > +>>> > CREATE "TopLevelFolder/" +>>> > +>>> > generates "NO hierarchy character ignored" +>>> +>>> The server would appear to be in error. See RFC3501, +>>> section 6.3.3 ("The +>>> Create Command"): +>>> +>>> If the mailbox name is suffixed with the server's +>>> hierarchy +>>> separator character (as returned from the server +>>> by a LIST +>>> command), this is a declaration that the client +>>> intends to create +>>> mailbox names under this name in the hierarchy. +>>> Server +>>> implementations that do not require this +>>> declaration MUST ignore +>>> the declaration. In any case, the name created is +>>> without the +>>> trailing hierarchy delimiter. +>>> +>>> This seems pretty unambiguous to me, but no doubt +>>> there's an alternative +>>> reading I haven't considered (there usually is). I +>>> assume GMail actually +>>> *does* support submailboxes (I don't personally use it)? +>>> +>>> Interestingly, the example for section 6.3.3 is an +>>> almost exact match to your +>>> report: +>>> +>>> Example: +>>> C: A003 CREATE owatagusiam/ +>>> S: A003 OK CREATE completed +>>> +>>> Note that there is a reverse condition to this where a +>>> server may report a +>>> mailbox with a trailing hierarchy delimiter as part of a +>>> LIST response; I +>>> confess I've never understood exactly what that means +>>> (Exchange used to +>>> do it and may still do so) - Mark Crispin once explained +>>> it to me as having +>>> some meaning related to a test for existence, but I +>>> couldn't grasp what he +>>> meant. +>>> +>>> Cheers! +>>> +>>> -- David -- +>>> +>>> ------------------ David Harris -+- Pegasus Mail +>>> ---------------------- +>>> Box 5451, Dunedin, New Zealand | e-mail: +>>> David.Harris@pmail.gen.nz +>>> Phone: +64 3 453-6880 +>>> | Fax: +64 3 453-6612 +>>> +>>> +>>> Real newspaper headlines from U.S. papers: +>>> TRAFFIC DEAD RISE SLOWLY +>>> +>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>>> +>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22641.mbox:2,S new file mode 100644 index 00000000..85024740 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22641.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From davew at hireahit.com Tue Mar 18 19:50:34 2014 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> +Message-ID: <532905FA.1060706@hireahit.com> + +On 2014-03-18 19:23, Bron Gondwana wrote: +> Sadly, they're still out there - which is why FastMail doesn't allow port 143 at all. Port 993 appears to be working in the real world[tm]. +> +> I'd be interested in seeing the actual stats for which clients can be convinced by a MITM to give up their credentials in plaintext in their default configuration. Don't give me a checkbox which requires the user to actively increase the security level, because that won't work. In fact, don't even give the user a dialog which allows them to send the password insecurely, because they will. +> +> Not responding to a SYN on port 143 with an ACK... + + +If you put together a list, be sure to exclude clients that either +ignore certificate errors, or have users that ignore certificate errors. +SSL solves nothing when users are already trained to just ignore errors +and proceed anyway. + +-- +Dave Warren +http://www.hireahit.com/ +http://ca.linkedin.com/in/davejwarren + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22648.mbox:2,S new file mode 100644 index 00000000..f44f31b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22648.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jan 15 13:27:55 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: +References: <52D5D84D.6070208@verizon.net> + <6a420a96-0755-48c3-b8d7-f208c6de14a1@gulbrandsen.priv.no> + +Message-ID: <42241671-b23e-4a3f-9506-b054eb639447@gulbrandsen.priv.no> + +On Wednesday, January 15, 2014 10:07:45 PM CEST, Brandon Long wrote: +> Didn't remember the exact rfc and did a quick search to find +> it. Yes, I meant 6855... which really could use more +> information on how its different from 5738, as I look at both +> right now. 6855 just says it obsoletes 5738. + +I suppose it could do with a bit more. + +6855 started as 5738 with a random smattering of improvements (I didn't pay +attention at the start). Then I tried to implement it and protested against +various brain damage, and in one quick jabber session, 5738bis lost every +feature I hated. I was so surprised that I'm not sure I remembered to +mention everything. Then Dave Cridland suggested better quoting, and then +the RFC was published. + +What badness do you see in 6855? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22651.mbox:2,S new file mode 100644 index 00000000..31bd6ae3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22651.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From andris.reinman at gmail.com Thu Dec 12 14:10:04 2013 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Localized Gmail IMAP Folders +In-Reply-To: +References: +Message-ID: <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + +You should check the mailbox flags - Gmail exposes \All for All Mail when listing with LIST. See page 3 of https://tools.ietf.org/html/rfc6154 for all possible flags for special use mailboxes. + +TAG LIST "" "[Gmail]/%" +* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail" + +(notice the "\All? in the response) + +Best regards, +Andris Reinman + +On 13.12.2013, at 0:03, Ali, Saqib wrote: + +> I am not sure if this is the correct forum for this question, but I will ask anyways :) +> +> We have an application that connects to [Gmail]\All Mail. However it appears this special folder's name is localized based on user's localization settings. +> +> What is the best way to handle this? One way is to keep a list of localized names of this folder........ +> +> +> Thanks, +> Saqib +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22659.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22659.mbox:2,S new file mode 100644 index 00000000..1c4f124d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22659.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 28 13:47:29 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Mac OS 10.9 particularly buggy implementation of + IMAP +In-Reply-To: +References: <1382749818.11252.38686053.54FA9CC9@webmail.messagingengine.com> + <20131028132511.GA13146@gulbrandsen.priv.no> + +Message-ID: <1382993249.27424.39913645.5FED0591@webmail.messagingengine.com> + +On Tue, Oct 29, 2013, at 06:00 AM, Michael Grinich wrote: + +Have you seen the 2-million-message-copy behavior on multiple users? +That seems like a bug that might be related to some weird rules, or +perhaps a buggy migration of rules from 10.8 to 10.9. + + +No, just one - but the latest appears that he deleted a bunch of +folders with names like "Junk" and "Junk Mail" - I'm guessing that +something got corrupted inside his mail database. + +From talking to people at Apple, literally the *best* way to get stuff +like this fixed is to file bug reports on [1]BugReporter. After that, +please post the issue to [2]OpenRadar so others can see it. For your +users that actively report problems, you can send them some boilerplate +to also submit a bug, and include the original bug number so it can be +marked as a dupe. + + +Luckily we actually have a developer account, or it would be a "pay +money so you can report bugs to us". Of course, my bug hasn't actually +be LOOKED AT yet. + +Anyway: +[3]http://www.openradar.me/radar?id=5268346471710720 + +Bron. +-- +Bron Gondwana +brong@fastmail.fm + +References + +1. http://bugreporter.apple.com/ +2. http://www.openradar.me/page/1 +3. http://www.openradar.me/radar?id=5268346471710720 +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22665.mbox:2,S new file mode 100644 index 00000000..697ac6f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22665.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Aug 11 04:48:41 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with + \ANYFOO flag. +In-Reply-To: +References: <5206AB36.7080808@laposte.net> + + <20130811083343.GA8165@gulbrandsen.priv.no> + +Message-ID: <20130811114841.GC8165@gulbrandsen.priv.no> + +On Sun, Aug 11, 2013 at 11:27:47AM +0100, Dave Cridland wrote: +> No, but "WILL" isn't listed either... + +You have a point ;) + +Gilles, anyway: \* means that you can store new flags, but now +\attachments. \ is not a permitted character in the flag names YOU can +store. RFCs can make up new names containing \, you can not. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22671.mbox:2,S new file mode 100644 index 00000000..cc27364c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22671.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From brong at fastmail.fm Fri Jun 7 23:39:00 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] UW-IMAPD and its interpretation of ESEARCH +In-Reply-To: <20130608061048.GE3533@arlut.utexas.edu> +References: + <20130608061048.GE3533@arlut.utexas.edu> +Message-ID: <1370673540.28336.140661241407785.7767A035@webmail.messagingengine.com> + +On Sat, Jun 8, 2013, at 04:10 PM, Jonathan Abbey wrote: +> On Thu, 06 Jun 2013 15:15:32 -0500, Jan Kundr?t wrote: +> | Hi, +> | one of my users has reported [1] that his IMAP server (UW-IMAPD, +> | reporting as "2007e.404" in the initial greetings) is using the +> | wrong [2] interpretation of the ESEARCH extension -- always +> | reporting the UIDs as "min:max", effectively removing the huge +> | benefit of that extension. +> | +> | What is the least damaging way to work around this? Here's a couple of ideas: +> | +> | a) Detect ESEARCH response passed as min:max. When the number of +> | messages exceeds what EXISTS reports, blacklist the ESEARCH +> | extension and try once again using plain SEARCH. +> | +> | b) Resort to ugly user-agent-sniffing-alike and blacklist ESEARCH +> | preemptively when the initial greetings contains the "IMAP4rev1 +> | 2007e.404 at" string *and* the "SCAN" capability is present. +> | +> | The option b) looks like a reasonable stopgap measure with a very +> | limited potential for false positives. It is also implementable very +> | quickly within my client. The option a) will require a bit more +> | work, but it looks like something more "robust" than b). +> | +> | Is there some inherent drawback in -- at least temporarily -- going +> | with b) that I might be missing? It's an obsolete, unmaintained +> | server with not that great market share, so implementing extra +> | workarounds just for it are not terribly high on my list of +> | priorities... +> +> Take a look at Panda IMAP at +> +> http://github.com/jonabey/panda-imap +> +> that repo includes the very last version of Mark Crispin's personal +> fork of UW IMAP that he did after he was laid off from UW. I know he +> fixed a lot of non-security related stuff in his code that was never +> back-ported into UW IMAP. +> +> If it turns out that the bug you're describing is still in this code, +> I'd be happy to work on fixing it / accepting patches to fix it. + +I think in Jan's case as a client author, there's often a limited amount +that you can do to get servers fixed. Sure this path will lead to the +bugfixes appearing sometime in the next 2-3 years once it gets accepted +upstream, packaged by distributions, and finally slipstreamed onto +everyone's servers in the next round of stable updates. + +Even as a server author, you wouldn't believe the resistance to updates. +"it's not in Debian stable, we're not using it". So plenty of my 2 year +old Cyrus bugs are still out there in the real world. Unless it's a +security issue, good luck getting it fixed quickly. + +Hence: workarounds. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22675.mbox:2,S new file mode 100644 index 00000000..6deae49c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22675.mbox:2,S @@ -0,0 +1,132 @@ +MBOX-Line: From blong at google.com Thu May 2 13:03:39 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Unsure paternity +In-Reply-To: <1367451626.16110.140661225409245.52FEA78F@webmail.messagingengine.com> +References: <5180559B.4010000@gmail.com> + <1367371210.5033.140661224967997.4E7EBBE1@webmail.messagingengine.com> + + <1367451626.16110.140661225409245.52FEA78F@webmail.messagingengine.com> +Message-ID: + +So, we have some stuff on our support pages, and more in the product forums. + +https://support.google.com/mail/answer/78761?hl=en&ref_topic=1668982 + +This page lists things we don't support or known bugs we have no plans to +fix. + +Actually listing all known bugs, we don't really have a mechanism for doing +that. We have some bugs that we intend to fix, but they keep getting +de-prioritized. We have others which we assume only affect a small number +of very specific cases. This particular one was a global leak that got +worse over time as we have more users doing the very special things that +caused it (ie, the attributes for system folders were supposed to be +immutable and then copied to the user, but instead updates were going +directly to the global copy, but so \HasChildren was showing up for any +system folder where someone had a child of that system folder... the +original bug description implied it only happened if a user first created a +sub-folder and then deleted it). + +I think the only Google products which use a user visible bug database are +those that are open sourced, such as Chrome and Android. Even then, that +then requires another level of thinking (is this bug public or not, is this +data in the bug should be public or not) which is how Chrome has to think, +and Android is worse since they use both the internal and external bug +database. And seeing how people pile onto the public bugs who don't really +understand what's going on... that doesn't sound fun. + +Anyways, the fix should be live in a week or two. + +Brandon + + +On Wed, May 1, 2013 at 4:40 PM, Bron Gondwana wrote: + +> ** +> It would be rather cool if you had somewhere you could publish a list of +> known differences between your implementation and the standard... not quite +> as good as working, but hey :) +> +> I'm finally at the point where I have the cycles to fix some long standing +> bugs in LIST-EXT handling in Cyrus - we have a problem that the mailbox +> listing the subscriptions listing are different databases, and we choose to +> iterate one or the other, but not both, meaning we miss some recursivematch +> cases. +> +> Looking forward to finding time to play with your CONDSTORE stuff too. +> I'm really liking the power of MODSEQ to save bandwidth. +> +> Bron. +> +> On Thu, May 2, 2013, at 07:18 AM, Brandon Long wrote: +> +> Would you believe its been a recognized bug since 2010 but we thought it +> only applied if the user specifically had deleted the subfolder? And the +> broken code has existed since we originally supported HasChildren in 2007. +> +> *sigh* +> +> I have a fix in process. +> +> Brandon +> +> +> On Tue, Apr 30, 2013 at 6:20 PM, Bron Gondwana wrote: +> +> +> +> +> On Wed, May 1, 2013, at 09:36 AM, David Barchiesi wrote: +> > I was analyzing the response produced by LISTing Gmails mailboxes and +> > came across something similiar: +> > +> > * LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" +> > +> > According to RFC 3348 [1]: +> > "It is an error for the server to return both a \HasChildren and a +> > \HasNoChildren attribute in a LIST response. ". +> > Could anyone explain what is going on here? +> +> Well, a bug obviously. It's not just you either, here's my gmail account +> complete LIST response (XLIST is identical, and LIST-EXTENDED doesn't seem +> to be supported at all) +> +> . list "" * +> * LIST (\HasNoChildren) "/" "INBOX" +> * LIST (\HasNoChildren) "/" "Personal" +> * LIST (\HasNoChildren) "/" "Receipts" +> * LIST (\HasNoChildren) "/" "Travel" +> * LIST (\HasNoChildren) "/" "Work" +> * LIST (\Noselect \HasChildren) "/" "[Gmail]" +> * LIST (\HasChildren \HasNoChildren \All) "/" "[Gmail]/All Mail" +> * LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts" +> * LIST (\HasChildren \HasNoChildren \Important) "/" "[Gmail]/Important" +> * LIST (\HasChildren \HasNoChildren \Sent) "/" "[Gmail]/Sent Mail" +> * LIST (\HasChildren \HasNoChildren \Junk) "/" "[Gmail]/Spam" +> * LIST (\HasChildren \HasNoChildren \Flagged) "/" "[Gmail]/Starred" +> +> * LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" +> . OK Success +> +> Brandon - any idea when this crept in? I haven't played with gmail's IMAP +> for a while, but I don't remember seeing it before. +> +> Bron. +> -- +> Bron Gondwana +> brong@fastmail.fm +> +> +> +> +> +> -- +> Bron Gondwana +> brong@fastmail.fm +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22679.mbox:2,S new file mode 100644 index 00000000..80a4678c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22679.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From tjs at psaux.com Mon Apr 1 09:00:37 2013 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <465A2A40-E7B0-421E-9140-D2672F0F682D@iki.fi> +References: + <465A2A40-E7B0-421E-9140-D2672F0F682D@iki.fi> +Message-ID: <5159AF25.9060707@psaux.com> + +On 3/30/13 2:01 PM, Timo Sirainen wrote: +> On 26.3.2013, at 23.26, Brandon Long wrote: +> +>> So, if a user attempted to draft a message larger than our limit (35MB), with LITERAL+, the client would just issue an APPEND with two large a message. Our options were to just eat the data and say NO afterwards (great waste of bandwidth) or drop the connection. Some clients would just keep retrying to do the APPEND until they exhausted the upload bandwidth quota, or just cost the user a lot of money if they happened to be on a line that charged. +> +> Did you consider blocking the client's IP for n minutes and sending the user an email explaining the issue and asking to reset the client? + +If the client is a mobile phone, they are coming from some NAT address +and you stand a good chance of blocking a large number of users. + +Tim + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095026.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095026.22682.mbox:2,S new file mode 100644 index 00000000..1e77e005 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095026.22682.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From dave at cridland.net Fri Mar 1 05:14:47 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] CONDSTORE RFC typo +In-Reply-To: +References: +Message-ID: + +On Feb 28, 2013 5:24 PM, "Ho? V. Dinh" wrote: +> RFC 1730 and RFC 2060 mentioned "set". It's been changed to sequence-set +in RFC 3501. +> Therefore, I think the same name should be applied in RFC 4551. + +I agree - thankfully it's quite minor. You want to submit an errata? + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22595.mbox:2,S new file mode 100644 index 00000000..52555cb3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22595.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From Pidgeot18 at verizon.net Mon Mar 9 18:15:49 2015 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + + +Message-ID: <54FE45C5.2030207@verizon.net> + +On 3/9/2015 7:01 PM, Brandon Long wrote: +> We witnessed quite a big portion of cpu involved in un-dot-stuffing +> smtp (and correcting line endings) and saved quite a bit of that with +> supporting BDAT. + +Yeah, dot-stuffing definitely seems to me to be the slowest and worst +part of SMTP: if you use BDAT, you could use splice() or similar kernel +features to just shunt things between sockets and files without needing +to do immediate inspection. And I'm guessing that almost of the time +spent having to work with the SMTP protocol itself (as opposed to +necessary routing or processing logic) is likely to be worrying about +dot-stuffing, since it's most of the datastream by size and it's not a +unitary transformation. + +> On Mon, Mar 9, 2015 at 4:54 PM, Hoa V. Dinh > wrote: +> +> Unfortunately, mail servers have to deal with the existing world +> of emails, +> where there are charset encoding, MIME encoding, spinning disks +> and memory. +> + +Well, if you're talking about replacing the rfc 5322/MIME format, there +is certainly a large number of historical warts and issues that could be +fixed that are completely orthogonal to text versus binary. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22623.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22623.mbox:2,S new file mode 100644 index 00000000..a0d9ac64 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22623.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Sep 26 09:18:00 2014 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Seeking clarity on Gmail "Access for less + secure apps" setting for non XOAuth2 access +In-Reply-To: +References: <5400A146.4020602@mozilla.com> <54255E59.6040104@earthlink.net> + +Message-ID: <542591B8.8040909@earthlink.net> + + >please use xoauth2 or the oauth-bearer when its available + +Thanks, Brandon. + +-Rick + + +-- +Rick Sanders +rfs9999@earthlink.net +IMAP Tools http://www.athensfbc.com/imap-tools + diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22629.mbox:2,S new file mode 100644 index 00000000..cfa44bf4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22629.mbox:2,S @@ -0,0 +1,119 @@ +MBOX-Line: From gullo at m4ss.net Wed Jul 30 09:33:42 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> +Message-ID: + +Ok Jan, I understand what you mean but the problem comes from the missed +RFC822. +The server does not send it, why? + + +2014-07-30 15:50 GMT+02:00 Jan Kundr?t : + +> On Wednesday, 30 July 2014 15:20:06 CEST, Davide Gullo wrote: +> +>> 29.07.14 17:07 >>> >>>>>>> send >>>>>> +>> 29.07.14 17:07 >>> 5 UID FETCH 7848:7853 (UID X-GM-MSGID FLAGS RFC822.SIZE +>> ENVELOPE BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE RFC822) +>> 29.07.14 17:07 >>> >>>>>>> end send >>>>>> +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> 29.07.14 17:07 <<< * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848 +>> RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] {2} +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> +> +> I don't see any problem in this log. Chances are that your client's IMAP +> parser does not properly support literals. Please note that the server says +> that the "BODY[HEADER.FIELDS (References)]" item which you are fetching +> contains exactly two bytes, the CR followed by LF. In C-syntax, that would +> be "\r\n". +> +> So this is how the data sent by the server look like on the wire (again, +> using the C-style escaping of non-printable character): +> +> BODY[HEADER.FIELDS (References)] {2}\r\n\r\n)\r\n +> +> Let's break it down: +> +> 1) "BODY[HEADER.FIELDS (References)]" -- that's an identification what +> you're about to read. +> +> 2) SP (a space, " ") -- delimiter, as defined by the FETCH response format +> +> 3) "{2}\r\n" -- this means that a LITERAL follows. The overal size of the +> literal is two bytes. You *must* stop reading in a line-oriented manner +> right now, and switch to reading the exact number of bytes which the server +> tells you -- two bytes in this case. +> +> 4) "\r\n", i.e. CR LF -- actual header data. The header is missing, so the +> server sends just the CR LF which is the separator between the header and +> the body of a MIME message. +> +> 5) ")" -- consitutes the end of the FETCH response data +> +> 6) CR LF -- end of the line, end of the response +> +> Let's see it in action: +> +> +> BODY[HEADER.FIELDS (References)] {2} +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> +> +> ...at this point you know it's a literal. You should switch from +> read-until-end-of-line mode into reading-number-of-binary-bytes mode right +> now, and read two bytes in that mode. +> +> +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> +> +> Your code silently ignores CR LF line ends. You have a bug right here. +> +> OK, you've read two bytes, you should switch to the standard mode of +> reading until EOL: +> +> +> 29.07.14 17:07 <<< <<<<<<< read <<<<<< +>> 29.07.14 17:07 <<< ) +>> 29.07.14 17:07 <<< <<<<<<< end read <<<<<< +>> +> +> Right, end of response, everything is OK. +> +> Cheers, +> Jan +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + + + +-- +Davide Gullo, Consulente Web (professionista disciplinato ai sensi della +legge 4/2013) +http://www.m4ss.net +gullo@m4ss.net +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22635.mbox:2,S new file mode 100644 index 00000000..4ba4a4ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22635.mbox:2,S @@ -0,0 +1,206 @@ +MBOX-Line: From mg at MIT.EDU Tue May 27 14:00:42 2014 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: <5384FC15.9060307@comaxis.com> +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> + + <5384F3F4.5090507@comaxis.com> + + <5384FC15.9060307@comaxis.com> +Message-ID: + +Is there a list of these reserved folder names anywhere public? + + +On Tue, May 27, 2014 at 1:56 PM, Jeff McKay wrote: + +> Thanks. Bad luck and ignorance on my part to have picked a reserved +> folder name to test, but it's good to know that it works +> the way I thought it did. +> +> +> On 5/27/2014 1:39 PM, Jamie Nicolson (???) wrote: +> +> Ah, yes, "Migrated" matches a Gmail system label (like Inbox, Sent, etc), +> and therefore it is aliased to [IMAP]/Migrated in the web interface. Note +> that you can't even create a label named "Migrated" in the web interface; +> you'll get the error, "The label name Migrated is invalid." The same thing +> would happen if your top-level folder were named Sent, Spam, Trash, etc. +> This shouldn't effect how things work in IMAP, but will change how they are +> displayed in the web interface. +> +> +> On Tue, May 27, 2014 at 1:22 PM, Jeff McKay wrote: +> +>> It is the second case I am trying to implement, where in the UI, I can +>> see bar nested under foo. That does not appear to work +>> as you stated. Here is the trace of me creating two folders: +>> +>> A103 CREATE "Migrated" +>> A103 OK Success +>> A104 CREATE "Migrated/BUDGET CALCULATION" +>> A104 OK Success +>> A001 APPEND "Migrated/BUDGET CALCULATION" (\Seen) "18-Apr-2014 +>> 09:49:00 -0700" {135007} +>> + go ahead +>> +>> When I get a new list, I see this: +>> +>> * LIST (\HasChildren) "/" "Migrated" +>> * LIST (\HasNoChildren) "/" "Migrated/BUDGET CALCULATION" +>> +>> So it would have appeared to work, but, the UI displays only +>> "Migrated/BUDGET CALCULATION". There is also another +>> label called "[IMAP]/Migrated" with nothing in it. +>> +>> +>> On 5/27/2014 12:40 PM, Jamie Nicolson (???) wrote: +>> +>> I'm not sure what you mean by "single top level folder". "foo/bar" has +>> the hierarchy delimiter in it, so from IMAP's point of view it is a nested +>> folder. +>> +>> If you want to be able to store messages in "foo/bar", but not "foo", +>> you can CREATE foo/ and then CREATE foo/bar. The first CREATE will be a +>> no-op on Gmail, but will succeed with OK. The second CREATE will result in +>> this folder layout: +>> +>> * LIST (\Noselect \HasChildren) "/" "foo" +>> * LIST (\HasNoChildren) "/" "foo/bar" +>> +>> Now you can COPY and APPEND messages to foo/bar. If you also want to be +>> able to store messages directly in foo, you just have to CREATE foo(without the hierarchy delimiter suffix). You can do this before or after +>> creating "foo/bar". Then you'll have this: +>> +>> * LIST (\HasChildren) "/" "foo" +>> * LIST (\HasNoChildren) "/" "foo/bar" +>> +>> The web UI displays these two cases differently. In the first case +>> (where foo/bar is selectable but foo is \Noselect), we show "foo/bar" as a +>> standalone label. In the second case (where foo/bar and foo are both +>> selectable folders), we display bar nested under foo. This is just a quirk +>> of the web UI. +>> +>> +>> On Tue, May 27, 2014 at 12:14 PM, Jeff McKay wrote: +>> +>>> Yes that is what I get also, sorry for misstating the error message. I +>>> am still unclear though about how to create a folder +>>> with a sub-folder. You said that the correct syntax should be: +>>> +>>> CREATE "foo/bar" +>>> +>>> which creates a single top level folder called "foo/bar". I know that +>>> you want to support being able to create folder names +>>> that contain the hierarchy delimiter, but there seems to be a conflict +>>> here. +>>> +>>> +>>> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +>>> +>>> I don't see any error message in the Gmail code for "hierarchy character +>>> ignored". When I try to reproduce this, I see something different: +>>> +>>> a create foo/ +>>> a OK [CANNOT] Ignoring hierarchy declaration (Success) +>>> +>>> This seems to follow 6.3.3. +>>> +>>> +>>> On Fri, May 23, 2014 at 9:09 PM, David Harris < +>>> David.Harris@pmail.gen.nz> wrote: +>>> +>>>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>>>> +>>>> > Has something changed with how Gmail handles the hierarchy character +>>>> > in the CREATE command? I am sure I had this working at one point, but +>>>> > now: +>>>> > +>>>> > CREATE "TopLevelFolder/" +>>>> > +>>>> > generates "NO hierarchy character ignored" +>>>> +>>>> The server would appear to be in error. See RFC3501, section 6.3.3 +>>>> ("The +>>>> Create Command"): +>>>> +>>>> If the mailbox name is suffixed with the server's hierarchy +>>>> separator character (as returned from the server by a LIST +>>>> command), this is a declaration that the client intends to create +>>>> mailbox names under this name in the hierarchy. Server +>>>> implementations that do not require this declaration MUST ignore +>>>> the declaration. In any case, the name created is without the +>>>> trailing hierarchy delimiter. +>>>> +>>>> This seems pretty unambiguous to me, but no doubt there's an alternative +>>>> reading I haven't considered (there usually is). I assume GMail actually +>>>> *does* support submailboxes (I don't personally use it)? +>>>> +>>>> Interestingly, the example for section 6.3.3 is an almost exact match +>>>> to your +>>>> report: +>>>> +>>>> Example: +>>>> C: A003 CREATE owatagusiam/ +>>>> S: A003 OK CREATE completed +>>>> +>>>> Note that there is a reverse condition to this where a server may +>>>> report a +>>>> mailbox with a trailing hierarchy delimiter as part of a LIST response; +>>>> I +>>>> confess I've never understood exactly what that means (Exchange used to +>>>> do it and may still do so) - Mark Crispin once explained it to me as +>>>> having +>>>> some meaning related to a test for existence, but I couldn't grasp what +>>>> he +>>>> meant. +>>>> +>>>> Cheers! +>>>> +>>>> -- David -- +>>>> +>>>> ------------------ David Harris -+- Pegasus Mail ---------------------- +>>>> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +>>>> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +>>>> +>>>> Real newspaper headlines from U.S. papers: +>>>> TRAFFIC DEAD RISE SLOWLY +>>>> +>>>> +>>>> +>>>> _______________________________________________ +>>>> Imap-protocol mailing list +>>>> Imap-protocol@u.washington.edu +>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>> +>>> +>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing listImap-protocol@u.washington.eduhttp://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>> +>> +>> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22641.mbox:2,S new file mode 100644 index 00000000..fc3e6cc1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22641.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 18 20:00:47 2014 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> +Message-ID: <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> + + +On Mar 18, 2014, at 7:23 PM, Bron Gondwana wrote: + +> So why is 993 deprecated rather than STARTTLS deprecated now? STARTTLS is _still_ a bad idea. + +That seemed to be a political argument within disparate IETF WGs. Begrudgingly I would nominate Chris to talk about that history, as I recall he was involved (or argued) during the period. But I also know many people want to forget about it. I just ignored the whole thing due to the in-fighting. + +Okay, not completely. I was discouraging against SSL on 993 for one main reason: + +If SSL is proven broken, where do we go? Another port for another encryption layer? How does that scale? + +And I think that was the crux of the overall IETF argument against allocating dedicated ports to dedicated SSL versions of the existing protocols. SRV was supposed to mitigate against that, but SRV hasn't taken over the protocol developer community. + +> We don't need a wayback machine to fix the future. + +But we need it to fix the past, and that's what you are complaining about. + +> Sadly, they're still out there - which is why FastMail doesn't allow port 143 at all. Port 993 appears to be working in the real world[tm]. + +No doubt. Almost every IMAP client I stumble across today supports it. But what happens when TLS is broken in a way that requires divorcing from any of the previous instantiations? It will happen. Do we roll off to yet another port number for the new version? We have much fewer than 65535 cracks at that cat. And what about all the existing clients that still expect to speak to port 993 TLS <=1.2? + +> I'd be interested in seeing the actual stats for which clients can be convinced by a MITM to give up their credentials in plaintext in their default configuration. Don't give me a checkbox which requires the user to actively increase the security level, because that won't work. In fact, don't even give the user a dialog which allows them to send the password insecurely, because they will. + +Stop being a tease ? you know they all will (some require a little more foreplay than others). + +But how do you propose to solve this in an everlasting manner? Imagine how embarrassed you will be when your grandchildren break your perfect encryption system on their laptops. From the womb. + +--lyndon + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22648.mbox:2,S new file mode 100644 index 00000000..62c411ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22648.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From blong at google.com Wed Jan 15 13:57:40 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: <42241671-b23e-4a3f-9506-b054eb639447@gulbrandsen.priv.no> +References: <52D5D84D.6070208@verizon.net> + <6a420a96-0755-48c3-b8d7-f208c6de14a1@gulbrandsen.priv.no> + + <42241671-b23e-4a3f-9506-b054eb639447@gulbrandsen.priv.no> +Message-ID: + +Oh, found some of our notes, 2% of messages in our sample had unencoded +8bit data in the headers + + +On Wed, Jan 15, 2014 at 1:27 PM, Arnt Gulbrandsen +wrote: + +> On Wednesday, January 15, 2014 10:07:45 PM CEST, Brandon Long wrote: +> +>> Didn't remember the exact rfc and did a quick search to find it. Yes, I +>> meant 6855... which really could use more information on how its different +>> from 5738, as I look at both right now. 6855 just says it obsoletes 5738. +>> +> +> I suppose it could do with a bit more. +> +> 6855 started as 5738 with a random smattering of improvements (I didn't +> pay attention at the start). Then I tried to implement it and protested +> against various brain damage, and in one quick jabber session, 5738bis lost +> every feature I hated. I was so surprised that I'm not sure I remembered to +> mention everything. Then Dave Cridland suggested better quoting, and then +> the RFC was published. +> +> What badness do you see in 6855? +> +> + If an IMAP server supports "UTF8=ACCEPT" and the IMAP client has not + issued the "ENABLE UTF8=ACCEPT" command, the server MUST reject, with + a "NO" response, an "APPEND" command that includes any 8-bit + character in message header fields. + + +Compared to RFC 3501: + + The APPEND command appends the literal argument as a new message + to the end of the specified destination mailbox. This argument + SHOULD be in the format of an [RFC-2822] message. 8-bit + characters are permitted in the message. + +So, I upgrade my server, and clients now break. And I've seen first hand +how much clients love it when APPEND fails, especially when people are +dragging and dropping an entire folder from one server to another, which +means historically non-UTF8 messages will exist for a while. We already +have minimum requirements for parseability that exceed that of other +servers, which is why we already get complaints when this migration method +doesn't work. + + When a message that requires SMTPUTF8 is encountered and the client + does not enable UTF-8 capability, choices available to the server + include hiding the problematic message(s), creating in-band or + out-of-band notifications or error messages, or somehow trying to + create a surrogate of the message with the intention of providing + useful information to that client about what has occurred. + +I feel like that entire section does a good job of saying why all of those +choices are bad, but ignores the obvious alternative: do nothing, send the +data as is. I'm willing to bet a large percentage of servers which don't +implement rfc 6855 do that today. Like I said, we get up to 2% of emails +today which are bad, we certainly don't censor them from our users or +prevent them from downloading them, we just give the raw data to the users. + I would say that this is better than any of the 3 choices above, and +again, implementing 6855 would require me to break clients which are +'working' today. + +I don't know, we haven't reached the point of interoperability testing yet, +so its possible that we'll have to do one of those if say the iOS mail +client crashes on 6532 messages. Or maybe I'm missing something about why +the current state is really really bad. + +I'm even debating what to do with 6532 messages that are cc'd to both 6531 +and non-6531 servers, bounce, degrade or just follow Bernstein's comment +about 8BITMIME and send anyways, which is what the world is already doing +today. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22651.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22651.mbox:2,S new file mode 100644 index 00000000..77a70f27 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22651.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From docbook.xml at gmail.com Sat Dec 21 13:29:31 2013 +To: imap-protocol@u.washington.edu +From: "Ali, Saqib" +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Localized Gmail IMAP Folders +In-Reply-To: <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> +Message-ID: + +Thanks Andris! :) + + + + +On Thu, Dec 12, 2013 at 2:10 PM, Andris Reinman wrote: + +> You should check the mailbox flags - Gmail exposes \All for All Mail when +> listing with LIST. See page 3 of https://tools.ietf.org/html/rfc6154 for +> all possible flags for special use mailboxes. +> +> TAG LIST "" "[Gmail]/%" +> * LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail" +> +> (notice the "\All? in the response) +> +> Best regards, +> Andris Reinman +> +> On 13.12.2013, at 0:03, Ali, Saqib wrote: +> +> > I am not sure if this is the correct forum for this question, but I will +> ask anyways :) +> > +> > We have an application that connects to [Gmail]\All Mail. However it +> appears this special folder's name is localized based on user's +> localization settings. +> > +> > What is the best way to handle this? One way is to keep a list of +> localized names of this folder........ +> > +> > +> > Thanks, +> > Saqib +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22665.mbox:2,S new file mode 100644 index 00000000..e885498f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22665.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From gilles.lamiral at laposte.net Sun Aug 11 06:10:16 2013 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with \ANYFOO + flag. +In-Reply-To: <20130811114841.GC8165@gulbrandsen.priv.no> +References: <5206AB36.7080808@laposte.net> + + <20130811083343.GA8165@gulbrandsen.priv.no> + + <20130811114841.GC8165@gulbrandsen.priv.no> +Message-ID: <52078D38.3050502@laposte.net> + +Hi, + +> Gilles, anyway: \* means that you can store new flags, but now +> \attachments. \ is not a permitted character in the flag names YOU can +> store. RFCs can make up new names containing \, you can not. + +Ok. I understand now. +I guessed wrong because of the syntax \*, it is a terribly bad symbol. +It really means "anything else than what I look like". +A single * or a double ** (or anything else without a \) would have been less tortuous. + +I MUST read the RFCs very carefully, with no background in mind, and I MUST retain +what I read despite the syntax. All of this in a foreign language. I'm welcome. + +Thanks for your clarifications. I guess it is not the last time I ask for them. + + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22671.mbox:2,S new file mode 100644 index 00000000..7577b4e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22671.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From jonabbey at arlut.utexas.edu Fri Jun 7 23:47:07 2013 +To: imap-protocol@u.washington.edu +From: Jonathan Abbey +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] UW-IMAPD and its interpretation of ESEARCH +In-Reply-To: <1370673540.28336.140661241407785.7767A035@webmail.messagingengine.com> +References: + <20130608061048.GE3533@arlut.utexas.edu> + <1370673540.28336.140661241407785.7767A035@webmail.messagingengine.com> +Message-ID: <20130608064707.GA28014@arlut.utexas.edu> + +On Sat, 08 Jun 2013 01:39:00 -0500, Bron Gondwana wrote: +| +| I think in Jan's case as a client author, there's often a limited amount +| that you can do to get servers fixed. Sure this path will lead to the +| bugfixes appearing sometime in the next 2-3 years once it gets accepted +| upstream, packaged by distributions, and finally slipstreamed onto +| everyone's servers in the next round of stable updates. + +Oh, of course. Sorry, I didn't pick up the clue that Jan was a client +author. + +| Even as a server author, you wouldn't believe the resistance to updates. +| "it's not in Debian stable, we're not using it". So plenty of my 2 year +| old Cyrus bugs are still out there in the real world. Unless it's a +| security issue, good luck getting it fixed quickly. +| +| Hence: workarounds. + +Right. Nonetheless, I'd like to get it fixed in Panda if it's a +problem there. For my local users, if nothing else. + + Jon + +-- +------------------------------------------------------------------------------- +Jonathan Abbey jonabbey@arlut.utexas.edu +Applied Research Laboratories The University of Texas at Austin +GPG Key: 71767586 at keyserver pgp.mit.edu, http://www.ganymeta.org/workkey.gpg +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: not available +Type: application/pgp-signature +Size: 205 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22675.mbox:2,S new file mode 100644 index 00000000..2d2ce418 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22675.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From barryleiba at computer.org Thu May 2 13:24:21 2013 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Unsure paternity +In-Reply-To: +References: <5180559B.4010000@gmail.com> + <1367371210.5033.140661224967997.4E7EBBE1@webmail.messagingengine.com> + + <1367451626.16110.140661225409245.52FEA78F@webmail.messagingengine.com> + +Message-ID: + +On Thursday, May 2, 2013, Brandon Long wrote: + +> So, we have some stuff on our support pages, and more in the product +> forums. +> +> https://support.google.com/mail/answer/78761?hl=en&ref_topic=1668982 +> +> This page lists things we don't support or known bugs we have no plans to +> fix. +> + + Thanks for that, Brandon; it's useful. + +That page lists this item: + + - untagged FETCH responses. + +I presume it means *unsolicited* FETCH responses (not untagged ones), yes? + +Barry + + - +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22679.mbox:2,S new file mode 100644 index 00000000..fbbd8529 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22679.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From lists at hireahit.com Mon Apr 1 15:16:25 2013 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <5159AF25.9060707@psaux.com> +References: + <465A2A40-E7B0-421E-9140-D2672F0F682D@iki.fi> + <5159AF25.9060707@psaux.com> +Message-ID: <515A0739.2090700@hireahit.com> + +On 2013-04-01 09:00, Tim Showalter wrote: +> On 3/30/13 2:01 PM, Timo Sirainen wrote: +>> On 26.3.2013, at 23.26, Brandon Long wrote: +>> +>>> So, if a user attempted to draft a message larger than our limit +>>> (35MB), with LITERAL+, the client would just issue an APPEND with +>>> two large a message. Our options were to just eat the data and say +>>> NO afterwards (great waste of bandwidth) or drop the connection. +>>> Some clients would just keep retrying to do the APPEND until they +>>> exhausted the upload bandwidth quota, or just cost the user a lot of +>>> money if they happened to be on a line that charged. +>> +>> Did you consider blocking the client's IP for n minutes and sending +>> the user an email explaining the issue and asking to reset the client? +> +> If the client is a mobile phone, they are coming from some NAT address +> and you stand a good chance of blocking a large number of users. + +You wouldn't necessarily block the entire IP, but rather, the IP in +question from accessing that particular account. Or possibly all IMAP +access to the account in question since some mobile devices regularly +flip between IPs. + +For two-factor-auth enabled users, you could just block that IP and a +specific two-factor password so as to impact the user as little as possible. + +-- +Dave Warren +http://www.hireahit.com/ +http://ca.linkedin.com/in/davejwarren + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22682.mbox:2,S new file mode 100644 index 00000000..a05192ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22682.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Fri Mar 1 19:02:41 2013 +To: imap-protocol@u.washington.edu +From: =?utf-8?Q?Ho=C3=A0_V._Dinh?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] CONDSTORE RFC typo +In-Reply-To: +References: + +Message-ID: + +On Friday, March 1, 2013 at 5:14 AM, Dave Cridland wrote: +> +> +> On Feb 28, 2013 5:24 PM, "Ho? V. Dinh" wrote: +> > RFC 1730 and RFC 2060 mentioned "set". It's been changed to sequence-set in RFC 3501. +> > Therefore, I think the same name should be applied in RFC 4551. +> +> +> I agree - thankfully it's quite minor. You want to submit an errata? +> +> +> Dave. +> +> +> + +Here you go: http://www.rfc-editor.org/errata_search.php?rfc=4551&eid=3506 + +-- +Ho? V. Dinh + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095027.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095027.22685.mbox:2,S new file mode 100644 index 00000000..82e4e443 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095027.22685.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From gmail-imap at google.com Mon Feb 4 16:49:51 2013 +To: imap-protocol@u.washington.edu +From: Eric +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Gmail IMAP CONDSTORE + Beta Testers +In-Reply-To: +References: +Message-ID: + +Gmail will soon open beta testing for IMAP MOVE, ESEARCH, and ENABLE +as well; so if you'd like to try them out, see below. + +On Fri, Jan 18, 2013 at 11:51 AM, Eric wrote: +> If you want to be an early adopter of CONDSTORE and other new Gmail +> IMAP features we develop--and you have a detailed knowledge of +> IMAP--then we'd love your help! +> +> Note that you will be given access to features that are still *beta*. +> They will have passed our QA and we are using them for our own IMAP +> accounts. If you need a feature disabled, email us and we'll disable +> it promptly during US/Pacific business hours. +> +> To sign up, send an email to gmail-imap@google.com indicating your +> interest and your Gmail/Google Apps account(s). If you have a +> particular client/server you develop/test/maintain/use please include +> that (and your involvement) as well. Once you accept the Google +> Trusted Tester invitation, we'll email you when the new feature is +> enabled for your account. +> +> Thanks, +> Eric +> +> -- +> +> FAQ: +> +> == What is Google Trusted Tester? +> It is a standard Google program to allow outside users to try out new +> features early. Once you've emailed us and accepted the Trusted +> Tester invite you'll get new IMAP features enabled on your account +> before others. You can leave the program at any time. +> +> == I have an issue/bug to report. +> Email it to gmail-imap@google.com +> +> == When will CONDSTORE be enabled for everyone? +> Hopefully soon, depends on how the internal QA and external beta turn out. +> +> == Do you support QRESYNC also? +> Not yet, but it's on our roadmap. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22595.mbox:2,S new file mode 100644 index 00000000..f2228fe1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22595.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Mar 9 18:19:50 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + +Message-ID: + + +On Mar 9, 2015, at 4:44 PM, Imants Cekusins wrote: + +>> Is your measurement data and methodology for this available online anywhere? +> +> this is a subjective assessment. Email servers are way too busy for +> what they deliver. I believe + +No, it's not. Everything you are claiming can be measured. No belief required. + +Do you have measurements to back up your claim? I don't discount it out of hand, but if you can't back it up with proof, I won't believe it. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22629.mbox:2,S new file mode 100644 index 00000000..d3be9f0b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22629.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From jkt at flaska.net Wed Jul 30 09:40:05 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + +Message-ID: + +On Wednesday, 30 July 2014 18:33:42 CEST, Davide Gullo wrote: +> Ok Jan, I understand what you mean but the problem comes from the missed +> RFC822. +> The server does not send it, why? + +What is a "missed RFC822"? Are you referring to RFC822.SIZE? I see it just +fine in both untagged FETCH responses which the server sent you. Maybe +you're confused by the fact that the literal syntax split the response into +multiple "lines"? It's still a single response. + +BTW, do you realize that it would be perfectly OK for the server to +actually send many responses instead of a single one, like this: + +* 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848)\r\n +* 1 FETCH (RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] +{2}\r\n\r\n)\r\n +* 1 FETCH (FLAGS (\Seen) ENVELOPE (...))\r\n +* 1 FETCH (BODY[HEADER.FIELDS (References)] {2}\r\n\r\n)\r\n + +I have no idea what else you're asking about, sorry. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22635.mbox:2,S new file mode 100644 index 00000000..7bee2fc1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22635.mbox:2,S @@ -0,0 +1,224 @@ +MBOX-Line: From nicolson at google.com Tue May 27 14:14:51 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> + + <5384F3F4.5090507@comaxis.com> + + <5384FC15.9060307@comaxis.com> + +Message-ID: + +Unfortunately, no. It's a big set, consisting of every translation of every +system label. For example, you can't create a label named "Trash" (US +English), and neither can you create one named "Bin" (UK English) or +"Corbeille" (French). Since our translations are subject to change, and we +may add system labels in the future, we don't want to publish a static list +somewhere that would quickly become out of date. It might be possible to +add a special result code to the CREATE response indicating that the folder +name will be aliased. Would that be useful? + + +On Tue, May 27, 2014 at 2:00 PM, Michael Grinich wrote: + +> Is there a list of these reserved folder names anywhere public? +> +> +> On Tue, May 27, 2014 at 1:56 PM, Jeff McKay wrote: +> +>> Thanks. Bad luck and ignorance on my part to have picked a reserved +>> folder name to test, but it's good to know that it works +>> the way I thought it did. +>> +>> +>> On 5/27/2014 1:39 PM, Jamie Nicolson (???) wrote: +>> +>> Ah, yes, "Migrated" matches a Gmail system label (like Inbox, Sent, etc), +>> and therefore it is aliased to [IMAP]/Migrated in the web interface. Note +>> that you can't even create a label named "Migrated" in the web interface; +>> you'll get the error, "The label name Migrated is invalid." The same thing +>> would happen if your top-level folder were named Sent, Spam, Trash, etc. +>> This shouldn't effect how things work in IMAP, but will change how they are +>> displayed in the web interface. +>> +>> +>> On Tue, May 27, 2014 at 1:22 PM, Jeff McKay wrote: +>> +>>> It is the second case I am trying to implement, where in the UI, I can +>>> see bar nested under foo. That does not appear to work +>>> as you stated. Here is the trace of me creating two folders: +>>> +>>> A103 CREATE "Migrated" +>>> A103 OK Success +>>> A104 CREATE "Migrated/BUDGET CALCULATION" +>>> A104 OK Success +>>> A001 APPEND "Migrated/BUDGET CALCULATION" (\Seen) "18-Apr-2014 +>>> 09:49:00 -0700" {135007} +>>> + go ahead +>>> +>>> When I get a new list, I see this: +>>> +>>> * LIST (\HasChildren) "/" "Migrated" +>>> * LIST (\HasNoChildren) "/" "Migrated/BUDGET CALCULATION" +>>> +>>> So it would have appeared to work, but, the UI displays only +>>> "Migrated/BUDGET CALCULATION". There is also another +>>> label called "[IMAP]/Migrated" with nothing in it. +>>> +>>> +>>> On 5/27/2014 12:40 PM, Jamie Nicolson (???) wrote: +>>> +>>> I'm not sure what you mean by "single top level folder". "foo/bar" has +>>> the hierarchy delimiter in it, so from IMAP's point of view it is a nested +>>> folder. +>>> +>>> If you want to be able to store messages in "foo/bar", but not "foo", +>>> you can CREATE foo/ and then CREATE foo/bar. The first CREATE will be a +>>> no-op on Gmail, but will succeed with OK. The second CREATE will result in +>>> this folder layout: +>>> +>>> * LIST (\Noselect \HasChildren) "/" "foo" +>>> * LIST (\HasNoChildren) "/" "foo/bar" +>>> +>>> Now you can COPY and APPEND messages to foo/bar. If you also want to +>>> be able to store messages directly in foo, you just have to CREATE foo(without the hierarchy delimiter suffix). You can do this before or after +>>> creating "foo/bar". Then you'll have this: +>>> +>>> * LIST (\HasChildren) "/" "foo" +>>> * LIST (\HasNoChildren) "/" "foo/bar" +>>> +>>> The web UI displays these two cases differently. In the first case +>>> (where foo/bar is selectable but foo is \Noselect), we show "foo/bar" as a +>>> standalone label. In the second case (where foo/bar and foo are both +>>> selectable folders), we display bar nested under foo. This is just a quirk +>>> of the web UI. +>>> +>>> +>>> On Tue, May 27, 2014 at 12:14 PM, Jeff McKay wrote: +>>> +>>>> Yes that is what I get also, sorry for misstating the error message. +>>>> I am still unclear though about how to create a folder +>>>> with a sub-folder. You said that the correct syntax should be: +>>>> +>>>> CREATE "foo/bar" +>>>> +>>>> which creates a single top level folder called "foo/bar". I know that +>>>> you want to support being able to create folder names +>>>> that contain the hierarchy delimiter, but there seems to be a conflict +>>>> here. +>>>> +>>>> +>>>> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +>>>> +>>>> I don't see any error message in the Gmail code for "hierarchy +>>>> character ignored". When I try to reproduce this, I see something +>>>> different: +>>>> +>>>> a create foo/ +>>>> a OK [CANNOT] Ignoring hierarchy declaration (Success) +>>>> +>>>> This seems to follow 6.3.3. +>>>> +>>>> +>>>> On Fri, May 23, 2014 at 9:09 PM, David Harris < +>>>> David.Harris@pmail.gen.nz> wrote: +>>>> +>>>>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>>>>> +>>>>> > Has something changed with how Gmail handles the hierarchy character +>>>>> > in the CREATE command? I am sure I had this working at one point, but +>>>>> > now: +>>>>> > +>>>>> > CREATE "TopLevelFolder/" +>>>>> > +>>>>> > generates "NO hierarchy character ignored" +>>>>> +>>>>> The server would appear to be in error. See RFC3501, section 6.3.3 +>>>>> ("The +>>>>> Create Command"): +>>>>> +>>>>> If the mailbox name is suffixed with the server's hierarchy +>>>>> separator character (as returned from the server by a LIST +>>>>> command), this is a declaration that the client intends to create +>>>>> mailbox names under this name in the hierarchy. Server +>>>>> implementations that do not require this declaration MUST ignore +>>>>> the declaration. In any case, the name created is without the +>>>>> trailing hierarchy delimiter. +>>>>> +>>>>> This seems pretty unambiguous to me, but no doubt there's an +>>>>> alternative +>>>>> reading I haven't considered (there usually is). I assume GMail +>>>>> actually +>>>>> *does* support submailboxes (I don't personally use it)? +>>>>> +>>>>> Interestingly, the example for section 6.3.3 is an almost exact match +>>>>> to your +>>>>> report: +>>>>> +>>>>> Example: +>>>>> C: A003 CREATE owatagusiam/ +>>>>> S: A003 OK CREATE completed +>>>>> +>>>>> Note that there is a reverse condition to this where a server may +>>>>> report a +>>>>> mailbox with a trailing hierarchy delimiter as part of a LIST +>>>>> response; I +>>>>> confess I've never understood exactly what that means (Exchange used to +>>>>> do it and may still do so) - Mark Crispin once explained it to me as +>>>>> having +>>>>> some meaning related to a test for existence, but I couldn't grasp +>>>>> what he +>>>>> meant. +>>>>> +>>>>> Cheers! +>>>>> +>>>>> -- David -- +>>>>> +>>>>> ------------------ David Harris -+- Pegasus Mail ---------------------- +>>>>> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +>>>>> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +>>>>> +>>>>> Real newspaper headlines from U.S. papers: +>>>>> TRAFFIC DEAD RISE SLOWLY +>>>>> +>>>>> +>>>>> +>>>>> _______________________________________________ +>>>>> Imap-protocol mailing list +>>>>> Imap-protocol@u.washington.edu +>>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>>> +>>>> +>>>> +>>>> +>>>> _______________________________________________ +>>>> Imap-protocol mailing listImap-protocol@u.washington.eduhttp://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>> +>>>> +>>>> +>>>> _______________________________________________ +>>>> Imap-protocol mailing list +>>>> Imap-protocol@u.washington.edu +>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>> +>>> +>>> +>>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22641.mbox:2,S new file mode 100644 index 00000000..60da9e27 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22641.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From Pidgeot18 at verizon.net Tue Mar 18 20:24:20 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> +Message-ID: <53290DE4.2020909@verizon.net> + +On 3/18/2014 7:04 PM, Bron Gondwana wrote: +> On Wed, Mar 19, 2014, at 08:25 AM, Michael M Slusarz wrote: +>> Quoting Jan Kundr?t : +>>> Also, nothing prevents a server from going directly to PREAUTH if +>>> the whole connection is using SSL/TLS ("port 993") with client +>>> certificates. +>> STARTTLS deprecated the use of port 993, which isn't an official IMAP +>> port FWIW. It hasn't really happened, but still is good to avoid and +>> end users appreciate it when they don't have to have any knowledge of +>> port number. +>> +>> I wish this did work with the STARTTLS command (i.e. PREAUTH response +>> after STARTTLS in the above situation). Unfortunately that isn't part +>> of the spec either. +> I can't understand how STARTTLS ever got floated as an idea. It's totally insane. +> +> Your hypothetical MITM just strips the "LOGINDISABLED" capability response, and anything saying that the server supports TLS, and the client goes ahead and sends the credentials in cleartext. At that point the MITM does the TLS negotiation with the server and it can read everything without the server knowing. + +Except for clients that refuse to support LOGIN and non-STARTTLS. +Thunderbird (IIRC, I haven't poked at this code in years) refuses to +downgrade authentication from what is specified (so if the setting +requires CRAM-MD5, it will refuse to use AUTH PLAIN or LOGIN to specify +credentials), and also screams mightily if you said you're going to do +STARTTLS but don't. We also have a nasty warning if you refuse to do +both SSL and STARTTLS when configuring the account, although we will +allow it. This does open the possibility of being able to MITM the +connection startup, but I'll also point out that ssh has the same +intrinsic weakness to permanent MITM as it is used in practice and this +isn't generally seen as evidence that it's MITM-able. + +Some authentication protocols also can't be MITM'd: client certificate, +NTLM, and Kerberos (via GSSAPI) don't involve the username and password +so the MITM server can't tell the server to move to the authenticated +state and the client won't move. Granted, these authentication +mechanisms are probably much less widspread than CRAM-MD5 or PLAIN or +the ilk. +> The only way that STARTTLS has any value is if every client refuses to send credentials until TLS or equivalent protection is established - in which case STARTTLS is pointless, you might as well just go straight to encryption and avoid the round trip. +It's not entirely pointless. It means you don't have to specify if the +connection is encrypted or unencrypted via magic out-of-band information +(i.e., port number). + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22648.mbox:2,S new file mode 100644 index 00000000..24819599 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22648.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From blong at google.com Wed Jan 15 14:01:29 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Email charset statistics +In-Reply-To: +References: <52D5D84D.6070208@verizon.net> + <6a420a96-0755-48c3-b8d7-f208c6de14a1@gulbrandsen.priv.no> + + <42241671-b23e-4a3f-9506-b054eb639447@gulbrandsen.priv.no> + +Message-ID: + +Sure, my issue wasn't that I preferred 5738. + +Brandon + + +On Wed, Jan 15, 2014 at 1:59 PM, Joseph Yee wrote: + +> Off my mind RFC6855 reduces lots of UTF8=* overheads (and headaches) +> and makes ENABLE call much better. +> +> I have to read both again to confirm, but the old RFC had many +> overheads for different mode (UTF8 or not) to too many commands, and +> now (RFC6855) only APPEND has new extension. +> +> I suggest to ignore RFC5738 at all if you care for implementation +> only. RFC6855 was written to cover all extension needed for UTF8 +> without the need to touch RFC5738. +> +> Joseph +> +> +> On Wed, Jan 15, 2014 at 4:27 PM, Arnt Gulbrandsen +> wrote: +> > On Wednesday, January 15, 2014 10:07:45 PM CEST, Brandon Long wrote: +> >> +> >> Didn't remember the exact rfc and did a quick search to find it. Yes, I +> >> meant 6855... which really could use more information on how its +> different +> >> from 5738, as I look at both right now. 6855 just says it obsoletes +> 5738. +> > +> > +> > I suppose it could do with a bit more. +> > +> > 6855 started as 5738 with a random smattering of improvements (I didn't +> pay +> > attention at the start). Then I tried to implement it and protested +> against +> > various brain damage, and in one quick jabber session, 5738bis lost every +> > feature I hated. I was so surprised that I'm not sure I remembered to +> > mention everything. Then Dave Cridland suggested better quoting, and then +> > the RFC was published. +> > +> > What badness do you see in 6855? +> > +> > +> > Arnt +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22665.mbox:2,S new file mode 100644 index 00000000..d4c5200a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22665.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From gilles.lamiral at laposte.net Sun Aug 11 14:43:10 2013 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] PERMANENTFLAGS \* and server behavior with \ANYFOO + flag. +In-Reply-To: <2027158854.23781711.1376245854854.JavaMail.root@vmware.com> +References: <5206AB36.7080808@laposte.net> + + <20130811083343.GA8165@gulbrandsen.priv.no> + + <20130811114841.GC8165@gulbrandsen.priv.no> + <52078D38.3050502@laposte.net> + <2027158854.23781711.1376245854854.JavaMail.root@vmware.com> +Message-ID: <5208056E.609@laposte.net> + + +> Believe it or not, the absolute most important thing in RFC 3501 is the ABNF. + +I believe you with no problem. I was just saying that semantically good syntax easily saves headaches and bugs. +No brain is perfect, even the master's. + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22671.mbox:2,S new file mode 100644 index 00000000..5d3ea3a9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22671.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From jkt at flaska.net Sat Jun 8 05:38:04 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Re: UW-IMAPD and its interpretation of ESEARCH +In-Reply-To: <20130608061048.GE3533@arlut.utexas.edu> +References: + <20130608061048.GE3533@arlut.utexas.edu> +Message-ID: + +On Saturday, 8 June 2013 08:10:48 CEST, Jonathan Abbey wrote: +> http://github.com/jonabey/panda-imap + +Assuming your github username is with double Bs, the offending code is likely found at https://github.com/jonabbey/panda-imap/blob/master/src/imapd/imapd.c#L939 . I'm not sure whether I'm interpreting it correctly, it's a foreign code with a very different style than I'm used to. + +That code appears to be broken on a fourth read or so :) -- it iterates over all messages and if a particular sequence of messages matches, it will output the result as min:max. That is, however, the exact problem here -- the code does not check whether the range of UIDs assigned to these messages has any holes within. In other words, the code produces correct results for SEARCH RETURN ..., but fails for UID SEARCH RETURN ... because the UIDs, unlike sequence numbers, are not guaranteed to be consecutive. + +This is consistent with the output of `git blame` which suggests that the code in question comes from commit 199adc96 which is marked as "imap-2006i.tar.Z" in your repository. The capability advertised by the user's server says 2007e.404, and that version is still affected. + +You can easily check this yourself. Create new mailbox, append three messages, remove the middle one and send `UID SEARCH RETURN (ALL) ALL`. If you get back something like "1,3", the code is OK, if you get "1:3", it's wrong. + +I do not dare writing a patch for that code -- the assumption that one could get away with acting as if the client knew which UIDs exist and which are gone is a big one. The loop at line 952 looks like the obvious problem (it shall check for a consecutive range of UIDs, but only if the command is the UID variant of ESEARCH...), but more changes might be needed. Well, I've had enough C for now :). + +On an unrelated topic -- I've noticed that you're using "|" as a quote indicator. This breaks clients which respect the long-standing convention (more or less also codified in RFC 3676 [1] -- yes, your MUA doesn't do format=flowed, but it's still useful for clients to safely detect a quoted text) that quotes are always done by ">". I was wondering if there was a particular reason for this setting, or whether it just happened to be a system-wide settings on your machine. + +Yes, I *could* change the format=flowed decoder in Trojita so that it supports non-standard quoting options, but this is the first mail I've read since adding that feature four months ago, so I'm hoping that sticking with language of that RFC still has a chance of working. + +With kind regards, +Jan + +[1] http://tools.ietf.org/html/rfc3676 + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22675.mbox:2,S new file mode 100644 index 00000000..e4e827a9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22675.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From blong at google.com Thu May 2 13:37:19 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Unsure paternity +In-Reply-To: +References: <5180559B.4010000@gmail.com> + <1367371210.5033.140661224967997.4E7EBBE1@webmail.messagingengine.com> + + <1367451626.16110.140661225409245.52FEA78F@webmail.messagingengine.com> + + +Message-ID: + +Yes, unsolicited. The internal page says unrequested, but apparently it +got mangled in translation. + + +Brandon + + +On Thu, May 2, 2013 at 1:24 PM, Barry Leiba wrote: + +> On Thursday, May 2, 2013, Brandon Long wrote: +> +>> So, we have some stuff on our support pages, and more in the product +>> forums. +>> +>> https://support.google.com/mail/answer/78761?hl=en&ref_topic=1668982 +>> +>> This page lists things we don't support or known bugs we have no plans to +>> fix. +>> +> +> Thanks for that, Brandon; it's useful. +> +> That page lists this item: +> +> - untagged FETCH responses. +> +> I presume it means *unsolicited* FETCH responses (not untagged ones), yes? +> +> Barry +> +> - +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22679.mbox:2,S new file mode 100644 index 00000000..cbe72beb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22679.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From jonabbey at arlut.utexas.edu Wed Apr 10 15:20:25 2013 +To: imap-protocol@u.washington.edu +From: Jonathan Abbey +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Github repo for Panda IMAP / UW IMAP +Message-ID: <20130410222025.GC25711@arlut.utexas.edu> + +Hi, folks. We've been using Mark Crispin's UW IMAP and then Panda +IMAP for years here, but since Mark passed, there's obviously been no +further development on it. + +Mark was asking for donations to get access to Panda IMAP, but from +looking at all the licensing terms he put in his distribution, it +appears that Panda remained under Apache 2.0, and hence should be free +to redistribute. + +With that in mind, I've generated a Git repo by concatenating all of +the public releases of UW IMAP with the last version of Panda IMAP I +had from Mark before he died. + +You can access it at + + https://github.com/jonabbey/panda-imap + +for those who might be interested. + +At this point, I'm intending to do whatever low level of maintenance +might be required for our use here, but if anyone is interested in +collaborating on keeping it going, I'd be delighted to talk to you. + +Thanks, + + Jon + +-- +------------------------------------------------------------------------------- +Jonathan Abbey jonabbey@arlut.utexas.edu +Applied Research Laboratories The University of Texas at Austin +GPG Key: 71767586 at keyserver pgp.mit.edu, http://www.ganymeta.org/workkey.gpg +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: not available +Type: application/pgp-signature +Size: 205 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22682.mbox:2,S new file mode 100644 index 00000000..ebced954 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22682.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From barryleiba at computer.org Fri Mar 1 19:28:43 2013 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] CONDSTORE RFC typo +In-Reply-To: +References: + + +Message-ID: + +> +> +> > RFC 1730 and RFC 2060 mentioned "set". It's been changed to sequence-set +> in RFC 3501. +> > Therefore, I think the same name should be applied in RFC 4551. +> +> I agree - thankfully it's quite minor. You want to submit an errata? +> +> Here you go: +> http://www.rfc-editor.org/errata_search.php?rfc=4551&eid=3506 +> + +Thanks... and I've marked it as "Verified". + +Barry +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095028.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095028.22685.mbox:2,S new file mode 100644 index 00000000..5e91ae5a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095028.22685.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From stujenerin at aol.com Wed Feb 6 09:38:27 2013 +To: imap-protocol@u.washington.edu +From: Stuart Brandt +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Clarification on RFC 6851 +Message-ID: <51129513.5080905@aol.com> + +I'm hoping someone can clarify the following section of the new MOVE +extension: + + Because a MOVE applies to a set of messages, it might fail partway + through the set. Regardless of whether the command is successful in + moving the entire set, each individual message SHOULD either be moved + or unaffected. The server MUST leave each message in a state where + it is in at least one of the source or target mailboxes (no message + can be lost or orphaned). The server SHOULD NOT leave any message in + both mailboxes (it would be bad for a partial failure to result in a + bunch of duplicate messages). This is true even if the server + returns a tagged NO response to the command. + + +In the case where a MOVE fails partway through the set and leaves some +messages moved and others unaffected, does this imply that servers +SHOULD return a NO in the tagged response, or is OK the more appropriate +tagged response? + +Thanks... +- Stuart + diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22595.mbox:2,S new file mode 100644 index 00000000..2581a9e4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22595.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From imantc at gmail.com Mon Mar 9 18:24:36 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <1425947142.1718611.238135065.31CDBC0E@webmail.messagingengine.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + + + <1425947142.1718611.238135065.31CDBC0E@webmail.messagingengine.com> +Message-ID: + +> we're talking about SMTP more than IMAP here. + +SMTP first of all but both really. IMAP is more complex than SMTP. it +is very slow too - maybe for different reasons. + +generally, it can takes less time to send, receive and read email. + + +> Text vs not text is not so much of a big issue there though, + +bytes are sent across the wire. any transformations we perform are an +extra cost, come at a price. do we really absolutely need all of these +transformations? + +btw even today we can ship utf8 or utf16 to a modern browser in binary +format - and parse the bytes in browser to display to the user. +obviously, single encoding across the message helps in this case. + +think about this: original blob message- as sent - are shipped +directly to browser - no server parsing or indeed any transformations +on the server. ok, maybe filter messages somehow. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22629.mbox:2,S new file mode 100644 index 00000000..0b2db568 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22629.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jul 30 09:53:35 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + +Message-ID: <9b80c7bb-b901-4e52-a3ab-db7bee7018aa@gulbrandsen.priv.no> + +On Wednesday, July 30, 2014 6:33:42 PM CEST, Davide Gullo wrote: +> Ok Jan, I understand what you mean but the problem comes from +> the missed RFC822. + +It's called BODY in the response. + +> The server does not send it, why? + +BODY has largely superseded RFC822. Good clients ask for BODY instead. UID +FETCH 1234 BODY[1] etc. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22635.mbox:2,S new file mode 100644 index 00000000..2d6d983c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22635.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From blong at google.com Tue May 27 15:58:40 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] RFC7162 (CONDSTORE and QRESYNC) +In-Reply-To: +References: <5382D01E.22246.FAB84F9@David.Harris.pmail.gen.nz> + + +Message-ID: + +I think that would highly depend on what your client base looks like. + +Clients include: iOS Mail, MacOS Mail, Android Email (ie, the AOSP email +client), Thunderbird, eM Client, Blackberry 10, MailMate, Trojita. Its +over 90% of our users using a CONDSTORE capable client. We don't offer +QRESYNC yet, so I can't speak to that. + +Brandon + + +On Mon, May 26, 2014 at 10:15 AM, Michael Grinich wrote: + +> Can you share an actual breakdown? +> +> Is this 90% of providers or 90% of estimated users' accounts? +> +> +> +> On Mon, May 26, 2014 at 12:44 AM, Andris Reinman > wrote: +> +>> Several large e-mail providers do not support CONDSTORE, for example AOL, +>> Mail.ru (large russian provider), QQ (large chinese provider), +>> Outlook.com/Hotmail.com, Yahoo, Yandex (another large russian provider). So +>> you can use it as a nice add-on if available but can not assume that you +>> can always rely on it. +>> +>> Best regards, +>> Andris Reinman +>> +>> On 26.05.2014, at 8:24, David Harris wrote: +>> +>> > I'm just reading through RFC7162 and was wondering if anyone on this +>> list +>> > would be willing to give a speculative estimate of the percentage of +>> servers +>> > and clients that support CONDSTORE? I'm only looking for a +>> > "back-of-the-envelope" estimate here - even something like "more than +>> half" +>> > or "less than half" would be useful. +>> > +>> > I'd also like to offer a short, heartfelt thanks to the people out +>> there like +>> > Alexey Melnikov and Dave Cridland (representative names only - there are +>> > many, many more) who put in a lot of time and effort to come out with +>> helpful +>> > RFCs like this. IMAP is complex and in places very arcane, so all +>> assistance +>> > is helpful, and I for one appreciate it. +>> > +>> > Cheers! +>> > +>> > -- David -- +>> > +>> > ------------------ David Harris -+- Pegasus Mail ---------------------- +>> > Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +>> > Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +>> > +>> > True life insurance claim: +>> > "My car was legally parked as it backed into the other vehicle." +>> > +>> > +>> > +>> > _______________________________________________ +>> > Imap-protocol mailing list +>> > Imap-protocol@u.washington.edu +>> > http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22641.mbox:2,S new file mode 100644 index 00000000..2b1c98f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22641.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 18 20:34:06 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> +Message-ID: <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> + +On Wed, Mar 19, 2014, at 02:00 PM, Lyndon Nerenberg wrote: +> Okay, not completely. I was discouraging against SSL on 993 for one main reason: +> +> If SSL is proven broken, where do we go? Another port for another encryption layer? How does that scale? + +Badly, I presume. + +> And I think that was the crux of the overall IETF argument against allocating dedicated ports to dedicated SSL versions of the existing protocols. SRV was supposed to mitigate against that, but SRV hasn't taken over the protocol developer community. + +Indeed. + +> > We don't need a wayback machine to fix the future. +> +> But we need it to fix the past, and that's what you are complaining about. + +Not entirely, I'll articulate what I'm complaining about in a moment... + +> But how do you propose to solve this in an everlasting manner? Imagine how embarrassed you will be when your grandchildren break your perfect encryption system on their laptops. From the womb. + +I've seen an awful lot of "you are gonna need it" (to flip around what the +kids these days call YAGNI) justification for broken stuff in the standards +world. Stuff that's so future-proof and optimised for the 1% cases that it +fails to perform the 99% case here and now adequately. + +You see it all the time in standards with low and poor adoption. Optimising +for the edge cases. Case in point the argument against SUBMIT via IMAP and +POP - instead needing a separate authenticated connection for SMTP so that it +can support all the future extensions which might be added to SMTP. + +Meanwhile everyone has been in a support nightmare for years. I remember +ISPs with POP before SMTP rubbish to work around the fact that you couldn't +just shove the outbound message up your POP connection. + +And I _still_ see issues where SMTP connectivity is blocked but IMAP is working, +and people can't send email from their clients on some networks. Not a total +failure, but a partial failure. + +And the "standard fix"? BURL. Instead of converting two possibilities of failure +into a single "it's on or off" it creates a triangle, in which any one of THREE +different interlinks could fail, making things break. Funnily enough, I don't see +very much of it out there. + +It's broken for now because of assumed future risks. And that's my problem with +the standards world. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22648.mbox:2,S new file mode 100644 index 00000000..05041545 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22648.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From rfs9999 at earthlink.net Thu Jan 23 13:22:49 2014 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> +Message-ID: <52E18829.40305@earthlink.net> + +Is it true that Gmail does not send notification to a client which is +idling on a mailbox? + +I ran across that while testing some code that detects flag changes +using IDLE and I was surprised that I did not get anything from Gmail. + +Google searches suggest that's the case. + +Thanks, +Rick + +-- +Rick Sanders +rfs9999@earthlink.net +IMAP Tools http://www.athensfbc.com/imap-tools + diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22665.mbox:2,S new file mode 100644 index 00000000..65166f23 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22665.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From blong at google.com Mon Aug 12 16:09:16 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] GMail IMAP: returning BODYSTRUCTURE for embedded + messages +In-Reply-To: +References: +Message-ID: + +Like everything, its complicated. + +We attempted to roll out a fix for this a year ago, and it even fixed some +other random bugs in completely unrelated code. + +Unfortunately, it also broke some fairly important backend handling of +messages that were previously parsed with the incorrect parser as it +changed our understanding of the structure of the message. Enabling our +system to handle these types of changes is very complicated, and the work +is still ongoing. I don't have an ETA on when we'll be able to switch to +the correct parsing. + +The exact bug was that we didn't parse message/rfc822 attachments if they +had a Content-Disposition: header of value attached. This was an +unfortunate and wrong fix to a bug in the early days of Gmail where people +would want to attach entire email messages (.eml files) and forward them +and otherwise handle them as an "attachment" and not a sub-part of the +message. + +Brandon + + +On Thu, Aug 8, 2013 at 2:57 PM, Ali, Saqib wrote: + +> Hello, +> +> Has there been any progress made on this? +> +> Thanks! +> Saqib +> +> Brandon Long google.com> writes: +> > +> > Yes, we have an open bug for this one, I'm not sure why there hasn't +> > been any progress on it. +> > +> > Brandon +> > +> > On Thu, May 19, 2011 at 7:35 AM, Mark Crispin panda.com> +> wrote: +> > > On Thu, 19 May 2011, Jan Kundr?t wrote: +> > >> +> > >> I'd appreciate if you could investigate your compliance with the +> format +> > >> of BODYSTRUCTURE you generate when working with certain messages, as +> > >> described in this messages. The same issue was reported to you through +> > >> an internal issue tracker in January 2011 by Henner Zeller on my +> behalf. +> > > +> > > And was reported by me more than 3 years ago. +> > > +> > > -- Mark -- +> > > +> > > http://panda.com/mrc +> > > Democracy is two wolves and a sheep deciding what to eat for lunch. +> > > Liberty is a well-armed sheep contesting the vote. +> > > _______________________________________________ +> > > Imap-protocol mailing list +> > > Imap-protocol u.washington.edu +> > > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> > > +> > +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22671.mbox:2,S new file mode 100644 index 00000000..395b1fc2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22671.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From ayluen at i-freelancer.net Tue Jun 11 02:50:56 2013 +To: imap-protocol@u.washington.edu +From: =?big5?B?p/Wm463b?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Question on BODYSTRUCTURE +Message-ID: <004101ce6689$2b6b0630$82411290$@i-freelancer.net> + + +I'm working on parsing email to construct BODYSTRUCTURE response back to +client. + +I put together a simple email with some text, image and an attachment on +gmail, so I can have a guideline by comparing its response back to RFC. +Here's the response : + + + +* 35 FETCH (BODYSTRUCTURE (((("TEXT" "PLAIN" ("CHARSET" "big5") NIL NIL +"7BIT" 860 14 NIL NIL NIL)("TEXT" "HTML" ("CHARSET" "big5") NIL NIL +"QUOTED-PRINTABLE" 4347 63 NIL NIL NIL) "ALTERNATIVE" ("BOUNDARY" +"----=_NextPart_002_0025_01CE5E06.E9940610") NIL NIL)("IMAGE" "PNG" ("NAME" +"image001.png") "" NIL "BASE64" 231788 NIL +NIL NIL) "RELATED" ("BOUNDARY" "----=_NextPart_001_0024_01CE5E06.E9940610") +NIL NIL)("IMAGE" "PNG" ("NAME" "DNS_MX_RECORD.png") NIL NIL "BASE64" 73572 +NIL ("ATTACHMENT" ("FILENAME" "DNS_MX_RECORD.png")) NIL) "MIXED" ("BOUNDARY" +"----=_NextPart + +_000_0023_01CE5E06.E9940610") NIL NIL)) + + + +However, when I tried to match up the fields with RFC, it seemed to be +missing an extension data item or am I misinterpreting the RFC? + +For the non-multipart body part, I thought the format should be : + + + +body-type body-subtype (parenthesized list of parameter) body-id body-desc +body-encoding body-size + + + +if body-type = "text" then follow by + +if body-type = "message" and body-subtype = "rfc822" then follow by +envelope, body structure, number of lines in message + + + +lastly, follow by 4 extension data items : MD5, body disposition, body +language, body location + + + +so, shouldn?t the first part look like this instead? + + + +("TEXT" "PLAIN" ("CHARSET" "big5") NIL NIL "7BIT" 860 14 NIL NIL NIL NIL) +<--- I added body location data item + + + +Also, I couldn't figure out what are the remaining fields for the multipart. +In my example above, what do the last 2 NIL represent after "MIXED" +("BOUNDARY" "----=_NextPart + +_000_0023_01CE5E06.E9940610")? I thought for multipart, it also follows by +4 extension data? + + + + + +Thank you for your help~~ + + + +Helen + + + + +====================================== +Powered by Rainbow Mail Server 6.0 + +????????????????????????????????????????????????????????????????????????????????????? +The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you are not the intended recipient, please contact the sender immediately and destroy the material in its entirety, whether electronic or hard copy. You are notified that any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. Please consider the environment before printing this email. + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22675.mbox:2,S new file mode 100644 index 00000000..7ba6507b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22675.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From ayluen at i-freelancer.net Fri May 3 03:16:38 2013 +To: imap-protocol@u.washington.edu +From: =?big5?B?p/Wm463b?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Imap Search Command Parse Logic +Message-ID: <000001ce47e7$4c7bead0$e573c070$@i-freelancer.net> + + +Hi, + + + +I'm currently working on implementing IMAP protocol on our mail server. +This is my first time implementing such a big project and I've so far coded +a majority of IMAP commands in the RFC, except the Search command. + +I've been searching on the internet and studied postfix(RPN) algorithm for +weeks to see how to parse the search command correctly. + +It seems Postfix would work until I encountered something like OR OR A B C D +==> (OR (OR A B) C) D + +Could anyone point me a direction on how to implement the Search command +when there are multiple ORs? + +Should I even consider using Postfix(RPN) algorithm to parse search command? + + + +Thank you very much for any help or tips you could provide. + + + +Helen + + +====================================== +Powered by Rainbow Mail Server 6.0 + +????????????????????????????????????????????????????????????????????????????????????? +The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you are not the intended recipient, please contact the sender immediately and destroy the material in its entirety, whether electronic or hard copy. You are notified that any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. Please consider the environment before printing this email. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22679.mbox:2,S new file mode 100644 index 00000000..b4a7c4b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22679.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From jonabbey at arlut.utexas.edu Wed Apr 10 15:21:10 2013 +To: imap-protocol@u.washington.edu +From: Jonathan Abbey +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Github Repo for UW, Panda IMAP +Message-ID: <20130410222110.GD25711@arlut.utexas.edu> + +Hi, folks. We've been using Mark Crispin's UW IMAP and then Panda +IMAP for years here, but since Mark passed, there's obviously been no +further development on it. + +Mark was asking for donations to get access to Panda IMAP, but from +looking at all the licensing terms he put in his distribution, it +appears that Panda remained under Apache 2.0, and hence should be free +to redistribute. + +With that in mind, I've generated a Git repo by concatenating all of +the public releases of UW IMAP with the last version of Panda IMAP I +had from Mark before he died. + +You can access it at + + https://github.com/jonabbey/panda-imap + +for those who might be interested. + +At this point, I'm intending to do whatever low level of maintenance +might be required for our use here, but if anyone is interested in +collaborating on keeping it going, I'd be delighted to talk to you. + +Thanks, + + Jon + +-- +------------------------------------------------------------------------------- +Jonathan Abbey jonabbey@arlut.utexas.edu +Applied Research Laboratories The University of Texas at Austin +GPG Key: 71767586 at keyserver pgp.mit.edu, http://www.ganymeta.org/workkey.gpg +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: not available +Type: application/pgp-signature +Size: 205 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22682.mbox:2,S new file mode 100644 index 00000000..cc652674 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22682.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From slusarz at curecanti.org Sat Mar 2 20:02:12 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] QRESYNC & Long Command Lines +In-Reply-To: <8100D6D4-66F1-40C4-A9B2-6A03F8CCC175@iki.fi> +References: <20130218002432.Horde.oHbZYiST0vPMI_hKIDlLvg1@bigworm.curecanti.org> + <8100D6D4-66F1-40C4-A9B2-6A03F8CCC175@iki.fi> +Message-ID: <20130302210212.Horde.q66x7X5K6O_eEUdg-T5_zg1@bigworm.curecanti.org> + +Quoting Timo Sirainen : + +> On 18.2.2013, at 9.24, Michael M Slusarz wrote: +> +>> There seems to be a conflict between the recommendations in RFC +>> 2683 [3.2.1.5] and the QRESYNC extension to the SELECT/EXAMINE +>> command. +>> +>> A user recently reported an issue involving an overly long UID list +>> passed to the FETCH command. Although not using caching +>> themselves, while analyzing the issue I quickly realized that there +>> could potentially be issues in passing a lengthy cached UID list to +>> SELECT/EXAMINE. +>> +>> This particular user's mailbox contained 6-digit UIDs that were not +>> sequential. In this hypothetical: +>> +>> - 1500 cached messages +>> - non-sequential UIDs +>> - All UIDs are 6 digits +>> +>> ...the UID string alone would be approximately 10500 characters +>> (1500 UIDs * 6 characters + 1499 ',' characters). This doesn't +>> factor in the rest of the command - or even the optional 4th +>> sequence match parameter. Obviously, the 1000 character limit for +>> outgoing client IMAP commands suggested in RFC 2683 has pretty much +>> been obsoleted. +> +> I don't think the idea was to provide all the known UIDs. The first +> UID range is about giving FLAGS replies only those ones listed. I +> think it's basically always 1:. Or if you +> happen to be doing something more special where you're caching only +> a partial state of the mailbox, you could decide to create for +> example max. 1000 bytes of UID string and then start merging the UID +> ranges. You'll get a few bytes of more data but it shouldn't matter +> that much. + +Our client NEVER caches the entire mailbox - only tiny view windows +(100 messages/slice). I have a trash mailbox with 100,000+ messages. +I am never going to load that entire mailbox into memory/cache. At +best, I will open the mailbox (loading, say, 100 message in the +slice), do a search to find what I need (loading up to another 100 +unique messages), and maybe move around the search results a bit +(possibly loading another 100-200 messages as I do a bit of +scrolling). So I only have 400 messages in my cache. I most +certainly do not want flag changes for the entire mailbox. + +But with the command size limitations I do have to make some +compromises for long UID lists. So I picked an arbitrary sequence-set +length which, when exceeded, we necessarily fall-back to a : range. I guess I could get fancier and +try to optimize this more -- e.g. cut out UID "holes" over a certain +length -- but seems like a waste of time since I've never actually +heard of a SELECT/EXAMINE failing with our software due to a long UID +string in the 4 years we have implemented QRESYNC. So this is more of +a theoretical exercise than anything else. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22685.mbox:2,S new file mode 100644 index 00000000..4ffad1b9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22685.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From imap at maclean.com Fri Feb 8 06:50:38 2013 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] QRESYNC Questions +Message-ID: + +I am busy implementing QRESYNC in my server. I have most of the code +completed but making sense of RFC 5162 has been very taxing on my +brain and there are several areas where my understanding is +uncertain. I am likely to have a few questions to raise and hope +that some folks here will help me out. Let's start with what I +expect should be an easy one: + +When a client has not enabled CONDSTORE and sends an ENABLE QRESYNC +command to a server that advertises QRESYNC capability, should the +untagged response say "* ENABLED QRESYNC" or "* ENABLED QRESYNC +CONDSTORE"? My reading of the spec tells me the latter but I observe +that another server sends the former. + +Thank you, + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095029.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095029.22688.mbox:2,S new file mode 100644 index 00000000..576f5c56 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095029.22688.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From slusarz at curecanti.org Sun Jan 6 21:34:02 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Missing UIDNEXT during mailbox synchronization +In-Reply-To: +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + +Message-ID: <20130106223402.Horde.ZSCj1mxY7M87XW6Ro4AX9A1@bigworm.curecanti.org> + +Quoting Jan Kundr?t : + +> Looks like that part of 3501 was not updated from 2060, then -- the +> UIDNEXT is listed as REQUIRED in the description of the SELECT +> command, as Bron pointed out. + +I reported this as an errata to RFC 3501, with the recommendation that +the "assumption" sentence from the UIDNEXT text be removed in order to +eliminate the ambiguity between this text (which implies that the +UIDNEXT response may be optional) and the REQUIRED requirement located +in Sections 6.3.1 & 6.3.2. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22595.mbox:2,S new file mode 100644 index 00000000..f66cb5d0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22595.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Mar 9 18:55:45 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + +Message-ID: <0C18524D-28EC-4DF9-A888-678E7DD4E56A@orthanc.ca> + + +On Mar 9, 2015, at 4:44 PM, Imants Cekusins wrote: + +> Simply from pragmatic point of view: if these tasks need not to be +> done, server is less busy and can process higher throughput. + +The micro-optimization fallacy. + +Before you dive in to this too far, spend a bit of time reading the papers Rob Pike and Brian Kernighan have published over the years. + +Also, consider the latency of a network connection vs. the speed of the CPUs processing the data travelling to/from them. Is the CPU you are using to parse your IMAP/SMTP stream so slow that it cannot do a 'c = tolower(getchar())' in real time? Is it slower than your network link? Even my ancient pre-Android phone can keep up with that. Let alone the group of mail servers I run that manage to push through several hundred messages a second. + +--lyndon + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22629.mbox:2,S new file mode 100644 index 00000000..669e4d17 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22629.mbox:2,S @@ -0,0 +1,136 @@ +MBOX-Line: From gullo at m4ss.net Wed Jul 30 09:57:01 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + + +Message-ID: + +This is a log from another account: + +*2014-07-30 18:50:05.332 BackUp Gmail[7934:2307] >>> 4 UID FETCH +198358:198635 (UID X-GM-MSGID FLAGS RFC822.SIZE ENVELOPE +BODY.PEEK[HEADER.FIELDS (References)] BODYSTRUCTURE RFC822)* + +*2014-07-30 18:50:05.333 BackUp Gmail[7934:2307] >>> >>>>>>> end send +>>>>>>* + +*2014-07-30 18:50:05.591 BackUp Gmail[7934:2307] <<< <<<<<<< read <<<<<<* + +*2014-07-30 18:50:05.592 BackUp Gmail[7934:2307] <<< * 45211 FETCH +(X-GM-MSGID 1472932652151963247 UID 198358 RFC822.SIZE 3631 RFC822 {3631}* + +*Delivered-To: jazzo72@gmail.com * + +*Received: by 10.221.27.131 with SMTP id rq3csp536493vcb;* + +* Sun, 6 Jul 2014 18:54:00 -0700 (PDT)* + +*..* + +*..* + +*[here there is a lot of data: the RFC822 field]* + +*..* + +*..* + +*e8cacbee0fc1368da87.gif" width="1" />

* + +*----==_mimepart_53b9fdb735668_75643fd39d2f52a04456d8--* + +* FLAGS (\Seen) ENVELOPE ("Sun, 06 Jul 2014 18:53:59 -0700" "Re: [libetpan] +Very big allocation (#150)" (("=?ISO-8859-1?Q?Ho=E0_V._DINH?=" NIL +"notifications" "github.com ")) +(("=?ISO-8859-1?Q?Ho=E0_V._DINH?=" NIL "notifications" "github.com +")) (("dinhviethoa/libetpan" NIL +"reply+i-37227579-fd8194f6b5e1ca5e2c8070c49eb84688e1b4223a-1465434" +"reply.github.com ")) (("dinhviethoa/* + +*2014-07-30 18:50:05.600 BackUp Gmail[7934:2307] <<< <<<<<<< end read +<<<<<<* + +*2014-07-30 18:50:05.601 BackUp Gmail[7934:2307] <<< <<<<<<< read <<<<<<* + +*2014-07-30 18:50:05.602 BackUp Gmail[7934:2307] <<< libetpan" NIL +"libetpan" "noreply.github.com ")) (("Davide +Gullo" NIL "jazzo72" "gmail.com ")) NIL +">" +">") BODYSTRUCTURE (("TEXT" "PLAIN" ("CHARSET" "UTF-8") +NIL NIL "7BIT" 273 8 NIL NIL NIL)("TEXT" "HTML" ("CHARSET" "UTF-8") NIL NIL +"7BIT" 621 5 NIL NIL NIL) "ALTERNATIVE" ("BOUNDARY" +"--==_mimepart_53b9fdb735668_75643fd39d2f52a04456d8" "CHARSET" "UTF-8") NIL +NIL) BODY[HEADER.FIELDS (References)] {60}* + +*References: >* + + +*)* + + + +As you can see above the RFC822 is the email data (header and body). +What I wrong? + + + + + +2014-07-30 18:40 GMT+02:00 Jan Kundr?t : + +> On Wednesday, 30 July 2014 18:33:42 CEST, Davide Gullo wrote: +> +>> Ok Jan, I understand what you mean but the problem comes from the missed +>> RFC822. +>> The server does not send it, why? +>> +> +> What is a "missed RFC822"? Are you referring to RFC822.SIZE? I see it just +> fine in both untagged FETCH responses which the server sent you. Maybe +> you're confused by the fact that the literal syntax split the response into +> multiple "lines"? It's still a single response. +> +> BTW, do you realize that it would be perfectly OK for the server to +> actually send many responses instead of a single one, like this: +> +> * 1 FETCH (X-GM-MSGID 1345148067064026772 UID 7848)\r\n +> * 1 FETCH (RFC822.SIZE 1372 BODY[HEADER.FIELDS (References)] +> {2}\r\n\r\n)\r\n +> * 1 FETCH (FLAGS (\Seen) ENVELOPE (...))\r\n +> * 1 FETCH (BODY[HEADER.FIELDS (References)] {2}\r\n\r\n)\r\n +> +> I have no idea what else you're asking about, sorry. +> +> +> Cheers, +> Jan +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + + + +-- +Davide Gullo, Consulente Web (professionista disciplinato ai sensi della +legge 4/2013) +http://www.m4ss.net +gullo@m4ss.net +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22635.mbox:2,S new file mode 100644 index 00000000..68d0708a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22635.mbox:2,S @@ -0,0 +1,264 @@ +MBOX-Line: From jjmckay at comaxis.com Tue May 27 16:58:54 2014 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> + + <5384F3F4.5090507@comaxis.com> + + <5384FC15.9060307@comaxis.com> + + +Message-ID: <538526BE.1030705@comaxis.com> + +The LIST command will show the various system folders, under the top +level "[Gmail]". Trash is there, but I don't see +"Migrated". I can avoid using folder names from that subset, but it +does not seem to be complete. + +On 5/27/2014 2:14 PM, Jamie Nicolson (???) wrote: +> Unfortunately, no. It's a big set, consisting of every translation of +> every system label. For example, you can't create a label named +> "Trash" (US English), and neither can you create one named "Bin" (UK +> English) or "Corbeille" (French). Since our translations are subject +> to change, and we may add system labels in the future, we don't want +> to publish a static list somewhere that would quickly become out of +> date. It might be possible to add a special result code to the CREATE +> response indicating that the folder name will be aliased. Would that +> be useful? +> +> +> On Tue, May 27, 2014 at 2:00 PM, Michael Grinich > wrote: +> +> Is there a list of these reserved folder names anywhere public? +> +> +> On Tue, May 27, 2014 at 1:56 PM, Jeff McKay > wrote: +> +> Thanks. Bad luck and ignorance on my part to have picked a +> reserved folder name to test, but it's good to know that it works +> the way I thought it did. +> +> +> On 5/27/2014 1:39 PM, Jamie Nicolson (???) wrote: +>> Ah, yes, "Migrated" matches a Gmail system label (like Inbox, +>> Sent, etc), and therefore it is aliased to [IMAP]/Migrated in +>> the web interface. Note that you can't even create a label +>> named "Migrated" in the web interface; you'll get the error, +>> "The label name Migrated is invalid." The same thing would +>> happen if your top-level folder were named Sent, Spam, Trash, +>> etc. This shouldn't effect how things work in IMAP, but will +>> change how they are displayed in the web interface. +>> +>> +>> On Tue, May 27, 2014 at 1:22 PM, Jeff McKay +>> > wrote: +>> +>> It is the second case I am trying to implement, where in +>> the UI, I can see bar nested under foo. That does not +>> appear to work +>> as you stated. Here is the trace of me creating two +>> folders: +>> +>> A103 CREATE "Migrated" +>> A103 OK Success +>> A104 CREATE "Migrated/BUDGET CALCULATION" +>> A104 OK Success +>> A001 APPEND "Migrated/BUDGET CALCULATION" +>> (\Seen) "18-Apr-2014 09:49:00 -0700" {135007} +>> + go ahead +>> +>> When I get a new list, I see this: +>> +>> * LIST (\HasChildren) "/" "Migrated" +>> * LIST (\HasNoChildren) "/" "Migrated/BUDGET CALCULATION" +>> +>> So it would have appeared to work, but, the UI displays +>> only "Migrated/BUDGET CALCULATION". There is also another +>> label called "[IMAP]/Migrated" with nothing in it. +>> +>> +>> On 5/27/2014 12:40 PM, Jamie Nicolson (???) wrote: +>>> I'm not sure what you mean by "single top level folder". +>>> "foo/bar" has the hierarchy delimiter in it, so from +>>> IMAP's point of view it is a nested folder. +>>> +>>> If you want to be able to store messages in "foo/bar", +>>> but not "foo", you can CREATE foo/ and then CREATE +>>> foo/bar. The first CREATE will be a no-op on Gmail, but +>>> will succeed with OK. The second CREATE will result in +>>> this folder layout: +>>> +>>> * LIST (\Noselect \HasChildren) "/" "foo" +>>> * LIST (\HasNoChildren) "/" "foo/bar" +>>> +>>> Now you can COPY and APPEND messages to foo/bar. If you +>>> also want to be able to store messages directly in foo, +>>> you just have to CREATE foo (without the hierarchy +>>> delimiter suffix). You can do this before or after +>>> creating "foo/bar". Then you'll have this: +>>> +>>> * LIST (\HasChildren) "/" "foo" +>>> * LIST (\HasNoChildren) "/" "foo/bar" +>>> +>>> The web UI displays these two cases differently. In the +>>> first case (where foo/bar is selectable but foo is +>>> \Noselect), we show "foo/bar" as a standalone label. In +>>> the second case (where foo/bar and foo are both +>>> selectable folders), we display bar nested under foo. +>>> This is just a quirk of the web UI. +>>> +>>> +>>> On Tue, May 27, 2014 at 12:14 PM, Jeff McKay +>>> > wrote: +>>> +>>> Yes that is what I get also, sorry for misstating +>>> the error message. I am still unclear though about +>>> how to create a folder +>>> with a sub-folder. You said that the correct syntax +>>> should be: +>>> +>>> CREATE "foo/bar" +>>> +>>> which creates a single top level folder called +>>> "foo/bar". I know that you want to support being +>>> able to create folder names +>>> that contain the hierarchy delimiter, but there +>>> seems to be a conflict here. +>>> +>>> +>>> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +>>>> I don't see any error message in the Gmail code for +>>>> "hierarchy character ignored". When I try to +>>>> reproduce this, I see something different: +>>>> +>>>> a create foo/ +>>>> a OK [CANNOT] Ignoring hierarchy declaration (Success) +>>>> +>>>> This seems to follow 6.3.3. +>>>> +>>>> +>>>> On Fri, May 23, 2014 at 9:09 PM, David Harris +>>>> >>> > wrote: +>>>> +>>>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>>>> +>>>> > Has something changed with how Gmail handles +>>>> the hierarchy character +>>>> > in the CREATE command? I am sure I had this +>>>> working at one point, but +>>>> > now: +>>>> > +>>>> > CREATE "TopLevelFolder/" +>>>> > +>>>> > generates "NO hierarchy character ignored" +>>>> +>>>> The server would appear to be in error. See +>>>> RFC3501, section 6.3.3 ("The +>>>> Create Command"): +>>>> +>>>> If the mailbox name is suffixed with the +>>>> server's hierarchy +>>>> separator character (as returned from the +>>>> server by a LIST +>>>> command), this is a declaration that the client +>>>> intends to create +>>>> mailbox names under this name in the +>>>> hierarchy. Server +>>>> implementations that do not require this +>>>> declaration MUST ignore +>>>> the declaration. In any case, the name +>>>> created is without the +>>>> trailing hierarchy delimiter. +>>>> +>>>> This seems pretty unambiguous to me, but no +>>>> doubt there's an alternative +>>>> reading I haven't considered (there usually +>>>> is). I assume GMail actually +>>>> *does* support submailboxes (I don't personally +>>>> use it)? +>>>> +>>>> Interestingly, the example for section 6.3.3 is +>>>> an almost exact match to your +>>>> report: +>>>> +>>>> Example: +>>>> C: A003 CREATE owatagusiam/ +>>>> S: A003 OK CREATE completed +>>>> +>>>> Note that there is a reverse condition to this +>>>> where a server may report a +>>>> mailbox with a trailing hierarchy delimiter as +>>>> part of a LIST response; I +>>>> confess I've never understood exactly what that +>>>> means (Exchange used to +>>>> do it and may still do so) - Mark Crispin once +>>>> explained it to me as having +>>>> some meaning related to a test for existence, +>>>> but I couldn't grasp what he +>>>> meant. +>>>> +>>>> Cheers! +>>>> +>>>> -- David -- +>>>> +>>>> ------------------ David Harris -+- Pegasus +>>>> Mail ---------------------- +>>>> Box 5451, Dunedin, New Zealand | e-mail: +>>>> David.Harris@pmail.gen.nz +>>>> +>>>> Phone: +64 3 453-6880 +>>>> | Fax: +64 3 +>>>> 453-6612 +>>>> +>>>> Real newspaper headlines from U.S. papers: +>>>> TRAFFIC DEAD RISE SLOWLY +>>>> +>>>> +>>>> +>>>> _______________________________________________ +>>>> Imap-protocol mailing list +>>>> Imap-protocol@u.washington.edu +>>>> +>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>> +>>>> +>>>> +>>>> +>>>> _______________________________________________ +>>>> Imap-protocol mailing list +>>>> Imap-protocol@u.washington.edu +>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>>> +>> +>> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22641.mbox:2,S new file mode 100644 index 00000000..39be313c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22641.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 18 20:43:02 2014 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> + <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> +Message-ID: <295B89D3-01E0-42E2-A9D8-DEFCAD16B4D2@orthanc.ca> + + +On Mar 18, 2014, at 8:34 PM, Bron Gondwana wrote: + +> It's broken for now because of assumed future risks. And that's my problem with +> the standards world. + +Where is your answer? + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22648.mbox:2,S new file mode 100644 index 00000000..b6e3b42b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22648.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From blong at google.com Thu Jan 23 13:32:44 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <52E18829.40305@earthlink.net> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> +Message-ID: + +Yes, gmail currently only notifies of new messages and expunged messages +during idle. + +Brandon +On Jan 23, 2014 1:26 PM, "Rick Sanders" wrote: + +> Is it true that Gmail does not send notification to a client which is +> idling on a mailbox? +> +> I ran across that while testing some code that detects flag changes using +> IDLE and I was surprised that I did not get anything from Gmail. +> +> Google searches suggest that's the case. +> +> Thanks, +> Rick +> +> -- +> Rick Sanders +> rfs9999@earthlink.net +> IMAP Tools http://www.athensfbc.com/imap-tools +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22665.mbox:2,S new file mode 100644 index 00000000..9384ef5c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22665.mbox:2,S @@ -0,0 +1,85 @@ +MBOX-Line: From docbook.xml at gmail.com Tue Aug 13 09:22:56 2013 +To: imap-protocol@u.washington.edu +From: "Ali, Saqib" +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] GMail IMAP: returning BODYSTRUCTURE for embedded + messages +In-Reply-To: +References: + +Message-ID: + +Hello Brandon, + +Thanks for the response. Where is this issue in the Google priority +list? I understand that you may not have an ETA, but we would like to +understand if Google considers this of high priority or low prirority. + +Thanks! :) + +On Mon, Aug 12, 2013 at 4:09 PM, Brandon Long wrote: +> Like everything, its complicated. +> +> We attempted to roll out a fix for this a year ago, and it even fixed some +> other random bugs in completely unrelated code. +> +> Unfortunately, it also broke some fairly important backend handling of +> messages that were previously parsed with the incorrect parser as it changed +> our understanding of the structure of the message. Enabling our system to +> handle these types of changes is very complicated, and the work is still +> ongoing. I don't have an ETA on when we'll be able to switch to the correct +> parsing. +> +> The exact bug was that we didn't parse message/rfc822 attachments if they +> had a Content-Disposition: header of value attached. This was an +> unfortunate and wrong fix to a bug in the early days of Gmail where people +> would want to attach entire email messages (.eml files) and forward them and +> otherwise handle them as an "attachment" and not a sub-part of the message. +> +> Brandon +> +> +> On Thu, Aug 8, 2013 at 2:57 PM, Ali, Saqib wrote: +>> +>> Hello, +>> +>> Has there been any progress made on this? +>> +>> Thanks! +>> Saqib +>> +>> Brandon Long google.com> writes: +>> > +>> > Yes, we have an open bug for this one, I'm not sure why there hasn't +>> > been any progress on it. +>> > +>> > Brandon +>> > +>> > On Thu, May 19, 2011 at 7:35 AM, Mark Crispin panda.com> +>> > wrote: +>> > > On Thu, 19 May 2011, Jan Kundr?t wrote: +>> > >> +>> > >> I'd appreciate if you could investigate your compliance with the +>> > >> format +>> > >> of BODYSTRUCTURE you generate when working with certain messages, as +>> > >> described in this messages. The same issue was reported to you +>> > >> through +>> > >> an internal issue tracker in January 2011 by Henner Zeller on my +>> > >> behalf. +>> > > +>> > > And was reported by me more than 3 years ago. +>> > > +>> > > -- Mark -- +>> > > +>> > > http://panda.com/mrc +>> > > Democracy is two wolves and a sheep deciding what to eat for lunch. +>> > > Liberty is a well-armed sheep contesting the vote. +>> > > _______________________________________________ +>> > > Imap-protocol mailing list +>> > > Imap-protocol u.washington.edu +>> > > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> > > +>> > +> +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22671.mbox:2,S new file mode 100644 index 00000000..e0e92185 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22671.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dave at cridland.net Tue Jun 11 03:46:15 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Question on BODYSTRUCTURE +In-Reply-To: <004101ce6689$2b6b0630$82411290$@i-freelancer.net> +References: <004101ce6689$2b6b0630$82411290$@i-freelancer.net> +Message-ID: + +On Tue, Jun 11, 2013 at 10:50 AM, ??? wrote: + +> lastly, follow by 4 extension data items : MD5, body disposition, body +> language, body location +> +> +> +No, in the Formal Syntax (and if Mark were still here, he'd be pointing out +that the Formal Syntax is essential reading), it says: + +body-ext-1part = body-fld-md5 [SP body-fld-dsp [SP body-fld-lang + [SP body-fld-loc *(SP body-extension)]]] + ; MUST NOT be returned on non-extensible + ; "BODY" fetch + +So implementations can supply only the MD5, for example - but if they +supply the location, they must also supply MD5, description, and language +first. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22675.mbox:2,S new file mode 100644 index 00000000..cf8bbaf3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22675.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tss at iki.fi Fri May 3 03:55:52 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Imap Search Command Parse Logic +In-Reply-To: <000001ce47e7$4c7bead0$e573c070$@i-freelancer.net> +References: <000001ce47e7$4c7bead0$e573c070$@i-freelancer.net> +Message-ID: <5EC8241E-F964-43EE-85EA-0DCD76E021A4@iki.fi> + +On 3.5.2013, at 13.16, ??? wrote: + +> I'm currently working on implementing IMAP protocol on our mail server. This is my first time implementing such a big project and I've so far coded a majority of IMAP commands in the RFC, except the Search command. +> I've been searching on the internet and studied postfix(RPN) algorithm for weeks to see how to parse the search command correctly. +> It seems Postfix would work until I encountered something like OR OR A B C D ==> (OR (OR A B) C) D +> Could anyone point me a direction on how to implement the Search command when there are multiple ORs? +> Should I even consider using Postfix(RPN) algorithm to parse search command? + +Did you notice that it's also possible to use parenthesis explicitly in the search query? I implemented it by parsing the search command to a tree structure and then iterating through the tree. There are quite a lot of optimizations you can then also do with the tree structure, like first trying to see if the search can even match the message sequence or UID, next checking for flags, then checking for slower ones. I'm not sure if there are any other reasonable ways to even implement it. + +BTW. You should test your implementation's RFC compliancy with http://imapwiki.org/ImapTest + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22679.mbox:2,S new file mode 100644 index 00000000..8cdd9fe2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22679.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From jonabbey at arlut.utexas.edu Thu Apr 11 09:03:30 2013 +To: imap-protocol@u.washington.edu +From: Jonathan Abbey +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Panda/UW IMAP GitHub repo destroyed, rebuilt +Message-ID: <20130411160330.GH25711@arlut.utexas.edu> + +Hi, everyone. I'm afraid I made a mistake when crafting the Panda / +UW IMAP git repo on GitHub yesterday. The script I wrote to make the +repo was not taking care to rm files that were removed from one +version to the next. + +I've recreated the repo, destroyed the old one on GitHub, and remade it at + + https://github.com/jonabbey/panda-imap + +I saw that a few of you had starred the old version on GitHub, so you +guys will have to do that again for the recreated repo. + +Very sorry about that, + + Jon + +-- +------------------------------------------------------------------------------- +Jonathan Abbey jonabbey@arlut.utexas.edu +Applied Research Laboratories The University of Texas at Austin +GPG Key: 71767586 at keyserver pgp.mit.edu, http://www.ganymeta.org/workkey.gpg +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: not available +Type: application/pgp-signature +Size: 205 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22682.mbox:2,S new file mode 100644 index 00000000..325f4761 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22682.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From slusarz at curecanti.org Sat Mar 2 20:28:05 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC & Long Command Lines +In-Reply-To: <2deda4fd-081b-4b1c-9702-269c3b6bca25@flaska.net> +References: <20130218002432.Horde.oHbZYiST0vPMI_hKIDlLvg1@bigworm.curecanti.org> + <2deda4fd-081b-4b1c-9702-269c3b6bca25@flaska.net> +Message-ID: <20130302212805.Horde.Q2lND55F8fxpy0sVKrcluQ8@bigworm.curecanti.org> + +Quoting Jan Kundr?t : + +> CONDSTORE and QRESYNC are life savers for clients that maintain a +> fully synchronized view of the whole mailbox (speaking about FLAGS +> and UIDs now, *not* envelopes and other immutable data!) such as +> Trojita. If your client is optimized towards a different goal, +> especially when you do not cache flags between sessions and your +> knowledge of the UID-seq mapping is sparse, it seems to me that +> these extensions do not provide much benefit over simply doing a +> sync with the facilities from baseline RFC3501. I might be wrong, as +> always, so please feel free to correct me. + +I would partially disagree about this statement. I think that +CONDSTORE/QRESYNC is MORE important for newer, more disconnected +clients - think mobile than more traditional clients. + +Traditional flag syncing, e.g. UID FETCH (FLAGS), can +potentially be an expensive operation bandwidth wise for a mobile +client. Couple that with the fact that a wireless connection can cut +in/out frequently, and these costs can add up. + +Say a mobile client is caching 200 messages. Let's say this client is +polling for new mail every 5 minutes (push notifications/IDLE may not +always be available since the connection may not be constant). An +average FETCH response might be about 50 bytes. Assume that no flag +changes take place in the mailbox at all. + +That's 120,000 bytes of additional network traffic an hour (I'm going +to assume CONDSTORE/QRESYNC command syncing traffic is negligible) +that has to be parsed to determine that nothing has changed in the +mailbox. 120,000 bytes for a desktop computer over an hour on a +decent network connection is minimal. On a mobile device, having to +parse this additional traffic might add up to 1-2 minutes less +battery. (Under this scenario, that would be ~85 MB of extra traffic +a month. Considering that some mobile plans are limited to 1-2 GB of +traffic a month, that is a substantial chunk of traffic being used) + +And this is just CONDSTORE. VANISHED responses w/QRESYNC eliminate +the need to do UID synchronization to check for deleted messages. + +All this being said... I don't think any of the decent Android e-mail +clients (e.g. stock client, k-9 mail) implement QRESYNC, let alone +CONDSTORE. Don't know about the iOS client. If this is indeed true, +they are missing out on at least some resource savings. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22685.mbox:2,S new file mode 100644 index 00000000..1332736a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22685.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From jkt at flaska.net Fri Feb 8 07:06:25 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC Questions +In-Reply-To: <201302081451.r18EpC0d010777@mxout11.cac.washington.edu> +References: <201302081451.r18EpC0d010777@mxout11.cac.washington.edu> +Message-ID: <7237e649-33b3-47fb-a99a-4d3e7f28030f@flaska.net> + +On Friday, 8 February 2013 15:50:38 CEST, Pete Maclean wrote: +> When a client has not enabled CONDSTORE and sends an ENABLE +> QRESYNC command to a server that advertises QRESYNC capability, +> should the untagged response say "* ENABLED QRESYNC" or "* +> ENABLED QRESYNC CONDSTORE"? My reading of the spec tells me the +> latter but I observe that another server sends the former. + +I believe that both of these are compliant. I haven't found a definitive answer on this in either 5161 (ENABLE) or 5162 (QRESYNC) RFCs. + +I have one suggestion for the actual implementation: please don't ever send EXPUNGE when QRESYNC is enabled, and never reference other UIDs in VANISHED than those which have been just expunged. These restrictions are not mandated by the current version of the RFC, but are very important for clients (they prevent an ambiguous state where the client suddenly doesn't know which UIDs still remain in the mailbox). + +Also, thanks for implementing QRESYNC; it's an extremely important RFC which improves the clients' behavior tremendously; the savings on traffic when opening mailboxes are huge. What IMAP server is the code you're working on? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095030.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095030.22688.mbox:2,S new file mode 100644 index 00000000..7a0ff96c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095030.22688.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From barryleiba at computer.org Mon Jan 7 18:26:42 2013 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Missing UIDNEXT during mailbox synchronization +In-Reply-To: <20130106223402.Horde.ZSCj1mxY7M87XW6Ro4AX9A1@bigworm.curecanti.org> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + + <20130106223402.Horde.ZSCj1mxY7M87XW6Ro4AX9A1@bigworm.curecanti.org> +Message-ID: + +>> Looks like that part of 3501 was not updated from 2060, then -- the +>> UIDNEXT is listed as REQUIRED in the description of the SELECT command, as +>> Bron pointed out. +> +> I reported this as an errata to RFC 3501, with the recommendation that the +> "assumption" sentence from the UIDNEXT text be removed in order to eliminate +> the ambiguity between this text (which implies that the UIDNEXT response may +> be optional) and the REQUIRED requirement located in Sections 6.3.1 & 6.3.2. + +Um... + +But this erratum is wrong. You jumped to premature conclusions. + +Look at the paragraph above the responses in Section 6.3.1. It says this: + + The SELECT command selects a mailbox so that messages in the + mailbox can be accessed. Before returning an OK to the client, + the server MUST send the following untagged data to the client. + Note that earlier versions of this protocol only required the + FLAGS, EXISTS, and RECENT untagged data; consequently, client + implementations SHOULD implement default behavior for missing data + as discussed with the individual item. + +The text that you're suggesting removing is there very purposefully, +and should NOT be removed. I intend to mark the erratum as +"Rejected", but I'll give us some time to discuss it further first. + +Barry, Applications AD + diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22595.mbox:2,S new file mode 100644 index 00000000..1cbc90a3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22595.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From imantc at gmail.com Mon Mar 9 21:25:12 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <0C18524D-28EC-4DF9-A888-678E7DD4E56A@orthanc.ca> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + <0C18524D-28EC-4DF9-A888-678E7DD4E56A@orthanc.ca> +Message-ID: + +Let's take chat messages as an example. They are fast. much faster +than email, aren't they? Why? Isn't it a similar concept: text +(transmitted as bytes) flowing from one browser to another - via an +intermediate server? + +Web servers are getting more efficient, databases are getting more efficient. + +Why not bring email servers up to speed? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22629.mbox:2,S new file mode 100644 index 00000000..2b9f08c9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22629.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From gullo at m4ss.net Wed Jul 30 10:04:01 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: <9b80c7bb-b901-4e52-a3ab-db7bee7018aa@gulbrandsen.priv.no> +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + + <9b80c7bb-b901-4e52-a3ab-db7bee7018aa@gulbrandsen.priv.no> +Message-ID: + +Sorry Arnt, +I follow the rfc3501 and in the 7.4.2 + section you can read: + + + RFC822 + Equivalent to BODY[]. + + + +What is a "good client"? + + + + + +2014-07-30 18:53 GMT+02:00 Arnt Gulbrandsen : + +> On Wednesday, July 30, 2014 6:33:42 PM CEST, Davide Gullo wrote: +> +>> Ok Jan, I understand what you mean but the problem comes from the missed +>> RFC822. +>> +> +> It's called BODY in the response. +> +> +> The server does not send it, why? +>> +> +> BODY has largely superseded RFC822. Good clients ask for BODY instead. UID +> FETCH 1234 BODY[1] etc. +> +> Arnt +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + + + +-- +Davide Gullo, Consulente Web (professionista disciplinato ai sensi della +legge 4/2013) +http://www.m4ss.net +gullo@m4ss.net +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22635.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22635.mbox:2,S new file mode 100644 index 00000000..062db669 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22635.mbox:2,S @@ -0,0 +1,252 @@ +MBOX-Line: From nicolson at google.com Wed May 28 13:09:19 2014 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Creating subfolders in Gmail +In-Reply-To: <538526BE.1030705@comaxis.com> +References: <537FEFE5.4040103@comaxis.com> + <53801B87.29010.51A00D5@David.Harris.pmail.gen.nz> + + <5384E40C.3070907@comaxis.com> + + <5384F3F4.5090507@comaxis.com> + + <5384FC15.9060307@comaxis.com> + + + <538526BE.1030705@comaxis.com> +Message-ID: + +Right, not all system folders are exposed through LIST. Even if they were +it wouldn't help, because *all translations* of the name are affected, not +just the translation that your user happens to use. + +To reiterate, this doesn't prevent you from creating the folder, nor does +it change the way it appears in IMAP. It only affects how that IMAP-created +folder will show up in the web UI. + + +On Tue, May 27, 2014 at 4:58 PM, Jeff McKay wrote: + +> The LIST command will show the various system folders, under the top +> level "[Gmail]". Trash is there, but I don't see +> "Migrated". I can avoid using folder names from that subset, but it does +> not seem to be complete. +> +> +> On 5/27/2014 2:14 PM, Jamie Nicolson (???) wrote: +> +> Unfortunately, no. It's a big set, consisting of every translation of +> every system label. For example, you can't create a label named "Trash" (US +> English), and neither can you create one named "Bin" (UK English) or +> "Corbeille" (French). Since our translations are subject to change, and we +> may add system labels in the future, we don't want to publish a static list +> somewhere that would quickly become out of date. It might be possible to +> add a special result code to the CREATE response indicating that the folder +> name will be aliased. Would that be useful? +> +> +> On Tue, May 27, 2014 at 2:00 PM, Michael Grinich wrote: +> +>> Is there a list of these reserved folder names anywhere public? +>> +>> +>> On Tue, May 27, 2014 at 1:56 PM, Jeff McKay wrote: +>> +>>> Thanks. Bad luck and ignorance on my part to have picked a reserved +>>> folder name to test, but it's good to know that it works +>>> the way I thought it did. +>>> +>>> +>>> On 5/27/2014 1:39 PM, Jamie Nicolson (???) wrote: +>>> +>>> Ah, yes, "Migrated" matches a Gmail system label (like Inbox, Sent, +>>> etc), and therefore it is aliased to [IMAP]/Migrated in the web interface. +>>> Note that you can't even create a label named "Migrated" in the web +>>> interface; you'll get the error, "The label name Migrated is invalid." The +>>> same thing would happen if your top-level folder were named Sent, Spam, +>>> Trash, etc. This shouldn't effect how things work in IMAP, but will change +>>> how they are displayed in the web interface. +>>> +>>> +>>> On Tue, May 27, 2014 at 1:22 PM, Jeff McKay wrote: +>>> +>>>> It is the second case I am trying to implement, where in the UI, I can +>>>> see bar nested under foo. That does not appear to work +>>>> as you stated. Here is the trace of me creating two folders: +>>>> +>>>> A103 CREATE "Migrated" +>>>> A103 OK Success +>>>> A104 CREATE "Migrated/BUDGET CALCULATION" +>>>> A104 OK Success +>>>> A001 APPEND "Migrated/BUDGET CALCULATION" (\Seen) "18-Apr-2014 +>>>> 09:49:00 -0700" {135007} +>>>> + go ahead +>>>> +>>>> When I get a new list, I see this: +>>>> +>>>> * LIST (\HasChildren) "/" "Migrated" +>>>> * LIST (\HasNoChildren) "/" "Migrated/BUDGET CALCULATION" +>>>> +>>>> So it would have appeared to work, but, the UI displays only +>>>> "Migrated/BUDGET CALCULATION". There is also another +>>>> label called "[IMAP]/Migrated" with nothing in it. +>>>> +>>>> +>>>> On 5/27/2014 12:40 PM, Jamie Nicolson (???) wrote: +>>>> +>>>> I'm not sure what you mean by "single top level folder". "foo/bar" has +>>>> the hierarchy delimiter in it, so from IMAP's point of view it is a nested +>>>> folder. +>>>> +>>>> If you want to be able to store messages in "foo/bar", but not "foo", +>>>> you can CREATE foo/ and then CREATE foo/bar. The first CREATE will be +>>>> a no-op on Gmail, but will succeed with OK. The second CREATE will result +>>>> in this folder layout: +>>>> +>>>> * LIST (\Noselect \HasChildren) "/" "foo" +>>>> * LIST (\HasNoChildren) "/" "foo/bar" +>>>> +>>>> Now you can COPY and APPEND messages to foo/bar. If you also want to +>>>> be able to store messages directly in foo, you just have to CREATE foo(without the hierarchy delimiter suffix). You can do this before or after +>>>> creating "foo/bar". Then you'll have this: +>>>> +>>>> * LIST (\HasChildren) "/" "foo" +>>>> * LIST (\HasNoChildren) "/" "foo/bar" +>>>> +>>>> The web UI displays these two cases differently. In the first case +>>>> (where foo/bar is selectable but foo is \Noselect), we show "foo/bar" as a +>>>> standalone label. In the second case (where foo/bar and foo are both +>>>> selectable folders), we display bar nested under foo. This is just a quirk +>>>> of the web UI. +>>>> +>>>> +>>>> On Tue, May 27, 2014 at 12:14 PM, Jeff McKay wrote: +>>>> +>>>>> Yes that is what I get also, sorry for misstating the error message. +>>>>> I am still unclear though about how to create a folder +>>>>> with a sub-folder. You said that the correct syntax should be: +>>>>> +>>>>> CREATE "foo/bar" +>>>>> +>>>>> which creates a single top level folder called "foo/bar". I know +>>>>> that you want to support being able to create folder names +>>>>> that contain the hierarchy delimiter, but there seems to be a +>>>>> conflict here. +>>>>> +>>>>> +>>>>> On 5/27/2014 11:09 AM, Jamie Nicolson (???) wrote: +>>>>> +>>>>> I don't see any error message in the Gmail code for "hierarchy +>>>>> character ignored". When I try to reproduce this, I see something +>>>>> different: +>>>>> +>>>>> a create foo/ +>>>>> a OK [CANNOT] Ignoring hierarchy declaration (Success) +>>>>> +>>>>> This seems to follow 6.3.3. +>>>>> +>>>>> +>>>>> On Fri, May 23, 2014 at 9:09 PM, David Harris < +>>>>> David.Harris@pmail.gen.nz> wrote: +>>>>> +>>>>>> On 23 May 2014 at 18:03, Jeff McKay wrote: +>>>>>> +>>>>>> > Has something changed with how Gmail handles the hierarchy character +>>>>>> > in the CREATE command? I am sure I had this working at one point, +>>>>>> but +>>>>>> > now: +>>>>>> > +>>>>>> > CREATE "TopLevelFolder/" +>>>>>> > +>>>>>> > generates "NO hierarchy character ignored" +>>>>>> +>>>>>> The server would appear to be in error. See RFC3501, section 6.3.3 +>>>>>> ("The +>>>>>> Create Command"): +>>>>>> +>>>>>> If the mailbox name is suffixed with the server's hierarchy +>>>>>> separator character (as returned from the server by a LIST +>>>>>> command), this is a declaration that the client intends to +>>>>>> create +>>>>>> mailbox names under this name in the hierarchy. Server +>>>>>> implementations that do not require this declaration MUST ignore +>>>>>> the declaration. In any case, the name created is without the +>>>>>> trailing hierarchy delimiter. +>>>>>> +>>>>>> This seems pretty unambiguous to me, but no doubt there's an +>>>>>> alternative +>>>>>> reading I haven't considered (there usually is). I assume GMail +>>>>>> actually +>>>>>> *does* support submailboxes (I don't personally use it)? +>>>>>> +>>>>>> Interestingly, the example for section 6.3.3 is an almost exact match +>>>>>> to your +>>>>>> report: +>>>>>> +>>>>>> Example: +>>>>>> C: A003 CREATE owatagusiam/ +>>>>>> S: A003 OK CREATE completed +>>>>>> +>>>>>> Note that there is a reverse condition to this where a server may +>>>>>> report a +>>>>>> mailbox with a trailing hierarchy delimiter as part of a LIST +>>>>>> response; I +>>>>>> confess I've never understood exactly what that means (Exchange used +>>>>>> to +>>>>>> do it and may still do so) - Mark Crispin once explained it to me as +>>>>>> having +>>>>>> some meaning related to a test for existence, but I couldn't grasp +>>>>>> what he +>>>>>> meant. +>>>>>> +>>>>>> Cheers! +>>>>>> +>>>>>> -- David -- +>>>>>> +>>>>>> ------------------ David Harris -+- Pegasus Mail +>>>>>> ---------------------- +>>>>>> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +>>>>>> Phone: +64 3 453-6880 <%2B64%203%20453-6880> | Fax: +64 3 +>>>>>> 453-6612 <%2B64%203%20453-6612> +>>>>>> +>>>>>> Real newspaper headlines from U.S. papers: +>>>>>> TRAFFIC DEAD RISE SLOWLY +>>>>>> +>>>>>> +>>>>>> +>>>>>> _______________________________________________ +>>>>>> Imap-protocol mailing list +>>>>>> Imap-protocol@u.washington.edu +>>>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>>>> +>>>>> +>>>>> +>>>>> +>>>>> _______________________________________________ +>>>>> Imap-protocol mailing listImap-protocol@u.washington.eduhttp://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>>> +>>>>> +>>>>> +>>>>> _______________________________________________ +>>>>> Imap-protocol mailing list +>>>>> Imap-protocol@u.washington.edu +>>>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>>>> +>>>> +>>>> +>>>> +>>> +>>> +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>> +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22641.mbox:2,S new file mode 100644 index 00000000..0937c1cd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22641.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From blong at google.com Tue Mar 18 20:46:10 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> + <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> +Message-ID: + +So, should we expect STARTTLS12 any time soon? + +TLS is itself fairly self negotiating, though I wouldn't bet against +something needing a completely different impl. That said, if the existing +thing is that broken, sunsetting the broken thing is necessary anyways. + +And we don't seem to be adding protocols all that fast. + +Anyways, I'm more worried about SMTP getting encrypted and actually +validated, IMAP at least is something you can mostly control yourself, with +SMTP interoperability and coexistence are required. + +Brandon +On Mar 18, 2014 8:34 PM, "Bron Gondwana" wrote: + +> On Wed, Mar 19, 2014, at 02:00 PM, Lyndon Nerenberg wrote: +> > Okay, not completely. I was discouraging against SSL on 993 for one +> main reason: +> > +> > If SSL is proven broken, where do we go? Another port for another +> encryption layer? How does that scale? +> +> Badly, I presume. +> +> > And I think that was the crux of the overall IETF argument against +> allocating dedicated ports to dedicated SSL versions of the existing +> protocols. SRV was supposed to mitigate against that, but SRV hasn't taken +> over the protocol developer community. +> +> Indeed. +> +> > > We don't need a wayback machine to fix the future. +> > +> > But we need it to fix the past, and that's what you are complaining +> about. +> +> Not entirely, I'll articulate what I'm complaining about in a moment... +> +> > But how do you propose to solve this in an everlasting manner? Imagine +> how embarrassed you will be when your grandchildren break your perfect +> encryption system on their laptops. From the womb. +> +> I've seen an awful lot of "you are gonna need it" (to flip around what the +> kids these days call YAGNI) justification for broken stuff in the standards +> world. Stuff that's so future-proof and optimised for the 1% cases that it +> fails to perform the 99% case here and now adequately. +> +> You see it all the time in standards with low and poor adoption. +> Optimising +> for the edge cases. Case in point the argument against SUBMIT via IMAP and +> POP - instead needing a separate authenticated connection for SMTP so that +> it +> can support all the future extensions which might be added to SMTP. +> +> Meanwhile everyone has been in a support nightmare for years. I remember +> ISPs with POP before SMTP rubbish to work around the fact that you couldn't +> just shove the outbound message up your POP connection. +> +> And I _still_ see issues where SMTP connectivity is blocked but IMAP is +> working, +> and people can't send email from their clients on some networks. Not a +> total +> failure, but a partial failure. +> +> And the "standard fix"? BURL. Instead of converting two possibilities of +> failure +> into a single "it's on or off" it creates a triangle, in which any one of +> THREE +> different interlinks could fail, making things break. Funnily enough, I +> don't see +> very much of it out there. +> +> It's broken for now because of assumed future risks. And that's my +> problem with +> the standards world. +> +> Bron. +> +> -- +> Bron Gondwana +> brong@fastmail.fm +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22648.mbox:2,S new file mode 100644 index 00000000..6ea092cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22648.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From mgrinich at gmail.com Thu Jan 23 13:33:30 2014 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <52E18829.40305@earthlink.net> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> +Message-ID: + +Gmail's IDLE only returns for new or deleted mail, not flag changes. + + +On Thu, Jan 23, 2014 at 4:22 PM, Rick Sanders wrote: + +> Is it true that Gmail does not send notification to a client which is +> idling on a mailbox? +> +> I ran across that while testing some code that detects flag changes using +> IDLE and I was surprised that I did not get anything from Gmail. +> +> Google searches suggest that's the case. +> +> Thanks, +> Rick +> +> -- +> Rick Sanders +> rfs9999@earthlink.net +> IMAP Tools http://www.athensfbc.com/imap-tools +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22665.mbox:2,S new file mode 100644 index 00000000..0542536f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22665.mbox:2,S @@ -0,0 +1,106 @@ +MBOX-Line: From blong at google.com Tue Aug 13 16:24:11 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] GMail IMAP: returning BODYSTRUCTURE for embedded + messages +In-Reply-To: +References: + + +Message-ID: + +Low priority. + +Brandon + + +On Tue, Aug 13, 2013 at 9:22 AM, Ali, Saqib wrote: + +> Hello Brandon, +> +> Thanks for the response. Where is this issue in the Google priority +> list? I understand that you may not have an ETA, but we would like to +> understand if Google considers this of high priority or low prirority. +> +> Thanks! :) +> +> On Mon, Aug 12, 2013 at 4:09 PM, Brandon Long wrote: +> > Like everything, its complicated. +> > +> > We attempted to roll out a fix for this a year ago, and it even fixed +> some +> > other random bugs in completely unrelated code. +> > +> > Unfortunately, it also broke some fairly important backend handling of +> > messages that were previously parsed with the incorrect parser as it +> changed +> > our understanding of the structure of the message. Enabling our system +> to +> > handle these types of changes is very complicated, and the work is still +> > ongoing. I don't have an ETA on when we'll be able to switch to the +> correct +> > parsing. +> > +> > The exact bug was that we didn't parse message/rfc822 attachments if they +> > had a Content-Disposition: header of value attached. This was an +> > unfortunate and wrong fix to a bug in the early days of Gmail where +> people +> > would want to attach entire email messages (.eml files) and forward them +> and +> > otherwise handle them as an "attachment" and not a sub-part of the +> message. +> > +> > Brandon +> > +> > +> > On Thu, Aug 8, 2013 at 2:57 PM, Ali, Saqib +> wrote: +> >> +> >> Hello, +> >> +> >> Has there been any progress made on this? +> >> +> >> Thanks! +> >> Saqib +> >> +> >> Brandon Long google.com> writes: +> >> > +> >> > Yes, we have an open bug for this one, I'm not sure why there hasn't +> >> > been any progress on it. +> >> > +> >> > Brandon +> >> > +> >> > On Thu, May 19, 2011 at 7:35 AM, Mark Crispin +> panda.com> +> >> > wrote: +> >> > > On Thu, 19 May 2011, Jan Kundr?t wrote: +> >> > >> +> >> > >> I'd appreciate if you could investigate your compliance with the +> >> > >> format +> >> > >> of BODYSTRUCTURE you generate when working with certain messages, +> as +> >> > >> described in this messages. The same issue was reported to you +> >> > >> through +> >> > >> an internal issue tracker in January 2011 by Henner Zeller on my +> >> > >> behalf. +> >> > > +> >> > > And was reported by me more than 3 years ago. +> >> > > +> >> > > -- Mark -- +> >> > > +> >> > > http://panda.com/mrc +> >> > > Democracy is two wolves and a sheep deciding what to eat for lunch. +> >> > > Liberty is a well-armed sheep contesting the vote. +> >> > > _______________________________________________ +> >> > > Imap-protocol mailing list +> >> > > Imap-protocol u.washington.edu +> >> > > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> >> > > +> >> > +> > +> > +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22671.mbox:2,S new file mode 100644 index 00000000..336dd74c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22671.mbox:2,S @@ -0,0 +1,103 @@ +MBOX-Line: From ayluen at i-freelancer.net Wed Jun 12 19:45:44 2013 +To: imap-protocol@u.washington.edu +From: =?utf-8?B?5p2O6Im+5YCr?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Question on BODYSTRUCTURE +In-Reply-To: +References: <004101ce6689$2b6b0630$82411290$@i-freelancer.net> + +Message-ID: <004f01ce67e0$1a14a960$4e3dfc20$@i-freelancer.net> + + +Hi Dave, + + + +I?m still a bit puzzled, hopefully you could help me out. I was studying a thread posted long time ago. In that post, Mark corrected a bodystructure response. + +He put 4 NILs in the positions which I thought were for extension data. + + + +Here is the thread I was referring to : + + + +http://mailman2.u.washington.edu/pipermail/imap-uw/2005-November/000287.html + + + +but according to your previous reply, the first non-multipart can look like this : + + + +("TEXT" "PLAIN" ("CHARSET" "BIG5") NIL NIL "7BIT" 860 14 NIL) + + + +Where the last NIL stands for MD5 (the rest 3 are optional)? + + + + + +Thank you for being patient with me, I know my question sounds like a newbie as I?m trying to grasp RFC reading and IMAP little by little?. + + + +Helen + + + + + +From: Dave Cridland [mailto:dave@cridland.net] +Sent: Tuesday, June 11, 2013 6:46 PM +To: ??? +Cc: IMAP Protocol Interest List +Subject: Re: [Imap-protocol] Question on BODYSTRUCTURE + + + + + + + +On Tue, Jun 11, 2013 at 10:50 AM, ??? wrote: + +lastly, follow by 4 extension data items : MD5, body disposition, body language, body location + + + + +No, in the Formal Syntax (and if Mark were still here, he'd be pointing out that the Formal Syntax is essential reading), it says: + + + +body-ext-1part = body-fld-md5 [SP body-fld-dsp [SP body-fld-lang + + [SP body-fld-loc *(SP body-extension)]]] + + ; MUST NOT be returned on non-extensible + + ; "BODY" fetch + + + +So implementations can supply only the MD5, for example - but if they supply the location, they must also supply MD5, description, and language first. + + + +Dave. + + +====================================== +Powered by Rainbow Mail Server 6.0 + +????????????????????????????????????????????????????????????????????????????????????? +The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you are not the intended recipient, please contact the sender immediately and destroy the material in its entirety, whether electronic or hard copy. You are notified that any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. Please consider the environment before printing this email. + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22675.mbox:2,S new file mode 100644 index 00000000..cc8ef2bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22675.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From gullo at m4ss.net Sat May 4 06:40:44 2013 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] RFC822.SIZE bug? +Message-ID: + +Hi, +nobody knows an issue like this: + +------ +* 22136 FETCH (X-GM-MSGID 1384367682512034576 UID 77480 RFC822.SIZE 0 +RFC822 {11012} + +Delivered-To: jazzo72@gmail.com +.... +.... +.... +) + +TAG21 OK Success +------ + +Look at the *RFC822.SIZE, it?s 0 (zero)!* +But it isn?t really zero as you can see by the RFC822 size, it?s correct +(11012 bytes). + +I got it always at the same time: all the emails after Nov 2011 until Feb +2012 have this issue. +Maybe Gmail had problems in this period? +Anybody knows it? +Could it be an IMAP bug? + +Thanks, + +-- +Davide Gullo +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22679.mbox:2,S new file mode 100644 index 00000000..9b0047f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22679.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From dlbarchiesi at gmail.com Tue Apr 30 16:36:59 2013 +To: imap-protocol@u.washington.edu +From: David Barchiesi +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Unsure paternity +Message-ID: <5180559B.4010000@gmail.com> + +I was analyzing the response produced by LISTing Gmails mailboxes and +came across something similiar: + +* LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" + +According to RFC 3348 [1]: +"It is an error for the server to return both a \HasChildren and a +\HasNoChildren attribute in a LIST response. ". +Could anyone explain what is going on here? + +Thanks in advance, +David + +[1] https://www.ietf.org/rfc/rfc3348.txt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22682.mbox:2,S new file mode 100644 index 00000000..6c754d95 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22682.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From imap at maclean.com Mon Mar 4 11:15:30 2013 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Error in RFC 4551 (CONDSTORE)?? +Message-ID: + +It seems to me that there is an error in Example 5 of section 3.2. It reads: + + C: c101 STORE 1 (UNCHANGEDSINCE 12121230045) -FLAGS.SILENT (\Deleted) + S: * OK [HIGHESTMODSEQ 12111230047] + S: * 50 FETCH (MODSEQ (12111230048)) + S: c101 OK Store (conditional) completed + + +Surely the message index in the first line (1) should match that in +the third line (50). + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22685.mbox:2,S new file mode 100644 index 00000000..1946d7ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22685.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From tss at iki.fi Fri Feb 8 08:55:14 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Clarification on RFC 6851 +In-Reply-To: <51129513.5080905@aol.com> +References: <51129513.5080905@aol.com> +Message-ID: <1360342514.3230.53.camel@hurina> + +On Wed, 2013-02-06 at 12:38 -0500, Stuart Brandt wrote: +> I'm hoping someone can clarify the following section of the new MOVE +> extension: +> +> Because a MOVE applies to a set of messages, it might fail partway +> through the set. Regardless of whether the command is successful in +> moving the entire set, each individual message SHOULD either be moved +> or unaffected. The server MUST leave each message in a state where +> it is in at least one of the source or target mailboxes (no message +> can be lost or orphaned). The server SHOULD NOT leave any message in +> both mailboxes (it would be bad for a partial failure to result in a +> bunch of duplicate messages). This is true even if the server +> returns a tagged NO response to the command. +> +> +> In the case where a MOVE fails partway through the set and leaves some +> messages moved and others unaffected, does this imply that servers +> SHOULD return a NO in the tagged response, or is OK the more appropriate +> tagged response? + +I was waiting for someone else to give a more exact answer, maybe +referring to the RFC text, but here's my take on it. I think the only +two reasonable server implementations are: + +a) Return OK if you moved all of the messages, NO if you didn't move +anything. (This is similar to how COPY works.) + +b) Return OK if you moved all messages that currently exist, i.e. you +skipped over messages recently expunged by another session. Return NO if +you didn't move anything. (I'm not a fan of this implementation.) + +I don't think a server should leave the mailbox in a state where some of +the messages were copied and some of them weren't, except if something +exceptionally bad happens (e.g. server crash). If server happens to do +that anyway in normal code, it should return NO. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22688.mbox:2,S new file mode 100644 index 00000000..bc07207e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22688.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From slusarz at curecanti.org Mon Jan 7 20:05:10 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Missing UIDNEXT during mailbox synchronization +In-Reply-To: +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + + <20130106223402.Horde.ZSCj1mxY7M87XW6Ro4AX9A1@bigworm.curecanti.org> + +Message-ID: <20130107210510.Horde.qsaKFcRqd9QLEChauk461g3@bigworm.curecanti.org> + +Quoting Barry Leiba : + +>>> Looks like that part of 3501 was not updated from 2060, then -- the +>>> UIDNEXT is listed as REQUIRED in the description of the SELECT command, as +>>> Bron pointed out. +>> +>> I reported this as an errata to RFC 3501, with the recommendation that the +>> "assumption" sentence from the UIDNEXT text be removed in order to eliminate +>> the ambiguity between this text (which implies that the UIDNEXT response may +>> be optional) and the REQUIRED requirement located in Sections 6.3.1 & 6.3.2. +> +> Um... +> +> But this erratum is wrong. You jumped to premature conclusions. + +Sigh. I *KNEW* that UIDNEXT was not required for some reason - I had +just forgotten the logic & explanation. For some reason I forgot that +RFC 2060 is also IMAP4rev1, NOT IMAP4, so there are several backward +compatibility concerns between the two documents. + +> Look at the paragraph above the responses in Section 6.3.1. It says this: +> +> The SELECT command selects a mailbox so that messages in the +> mailbox can be accessed. Before returning an OK to the client, +> the server MUST send the following untagged data to the client. +> Note that earlier versions of this protocol only required the +> FLAGS, EXISTS, and RECENT untagged data; consequently, client +> implementations SHOULD implement default behavior for missing data +> as discussed with the individual item. + +I'd still argue that labeling the PERMANENTFLAGS/UIDNEXT responses an +unqualified REQUIRED in the SELECT/EXAMINE description is, at best, +confusing - this thread being proof of this fact. (I will note the +UNSEEN response has already been modified in an errata to handle a +similar case where UNSEEN is REQUIRED... unless it isn't.) However, +this critique is more of an extremely tardy editorial comment rather +than an errata. + +> The text that you're suggesting removing is there very purposefully, +> and should NOT be removed. I intend to mark the erratum as +> "Rejected", but I'll give us some time to discuss it further first. + +I don't think further discussion is necessary. You are correct - it +should be rejected. Wishing there was an "unsubmit" button on the +submission page... + +Sorry for the noise, +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095031.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095031.22697.mbox:2,S new file mode 100644 index 00000000..c709d931 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095031.22697.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From johngalton217 at gmail.com Mon Dec 3 16:46:57 2012 +To: imap-protocol@u.washington.edu +From: Johnathan Galton +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] condstore mod-sequence 0 +Message-ID: + +In section 3.3.1 of RFC 4551 it says for FETCH to only return messages +where the mod-sequence of the message is "bigger than" that specified (i.e. +">"). However, it seems reasonable for clients to be able to say "FETCH +... (CHANGEDSINCE 0)" and retrieve *all* messages (AFAICT thunderbird does +this initially), however 0 isn't "bigger than" any valid value that we may +store for the mod-sequence of a message. + +How do other folks handle this? Is 0 explicitly special cased to mean "do +not filter anything" in the server implementation even though (based on my +reading) against the letter of the RFC? + +Interestingly enough in SEARCH MODSEQ (in section 3.4) is explicitly ">=". + Seems a little incongruent, not sure if it's intentional or not. + +Thanks for your time, +John +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22595.mbox:2,S new file mode 100644 index 00000000..23d40a03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22595.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Mon Mar 9 21:35:53 2015 +To: imap-protocol@u.washington.edu +From: "Hoa V. DINH" +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + <0C18524D-28EC-4DF9-A888-678E7DD4E56A@orthanc.ca> + +Message-ID: <26AB3DC45CA940E1B88C705DA21772DA@gmail.com> + +Please go ahead. + +(Btw, text protocol doesn?t seem to be an issue with chat app (FYI they use jabber, which is a verbose protocol using XML)) + + + +-- +Hoa V. DINH + + +On Monday, March 9, 2015 at 9:25 PM, Imants Cekusins wrote: + +> Let's take chat messages as an example. They are fast. much faster +> than email, aren't they? Why? Isn't it a similar concept: text +> (transmitted as bytes) flowing from one browser to another - via an +> intermediate server? +> +> Web servers are getting more efficient, databases are getting more efficient. +> +> Why not bring email servers up to speed? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22629.mbox:2,S new file mode 100644 index 00000000..72e08c14 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22629.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From jkt at flaska.net Wed Jul 30 11:10:06 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + + + +Message-ID: <2b103f33-47ba-4463-a0bc-725398f92e52@flaska.net> + +On Wednesday, 30 July 2014 18:57:01 CEST, Davide Gullo wrote: +> As you can see above the RFC822 is the email data (header and body). +> What I wrong? + +Ah, so this has nothing to do with RFC822.SIZE or sizes of anything else, +for that matter. You are complaining that the server did not return the +"RFC822" item which Arnt points out is nowadays usually referred to as +BODY[]. + +I have no idea why GMail skips it, sorry. It seems reasonable to expect +that the server should return it as RFC822, so it appears that it's a GMail +bug of some sort. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22641.mbox:2,S new file mode 100644 index 00000000..39e4f7a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22641.mbox:2,S @@ -0,0 +1,130 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 18 20:46:44 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <53290DE4.2020909@verizon.net> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <53290DE4.2020909@verizon.net> +Message-ID: <1395200804.27059.96196209.4345452F@webmail.messagingengine.com> + +On Wed, Mar 19, 2014, at 02:24 PM, Joshua Cranmer wrote: +> On 3/18/2014 7:04 PM, Bron Gondwana wrote: +> > On Wed, Mar 19, 2014, at 08:25 AM, Michael M Slusarz wrote: +> >> Quoting Jan Kundr?t : +> >>> Also, nothing prevents a server from going directly to PREAUTH if +> >>> the whole connection is using SSL/TLS ("port 993") with client +> >>> certificates. +> >> STARTTLS deprecated the use of port 993, which isn't an official IMAP +> >> port FWIW. It hasn't really happened, but still is good to avoid and +> >> end users appreciate it when they don't have to have any knowledge of +> >> port number. +> >> +> >> I wish this did work with the STARTTLS command (i.e. PREAUTH response +> >> after STARTTLS in the above situation). Unfortunately that isn't part +> >> of the spec either. +> > I can't understand how STARTTLS ever got floated as an idea. It's totally insane. +> > +> > Your hypothetical MITM just strips the "LOGINDISABLED" capability response, and anything saying that the server supports TLS, and the client goes ahead and sends the credentials in cleartext. At that point the MITM does the TLS negotiation with the server and it can read everything without the server knowing. +> +> Except for clients that refuse to support LOGIN and non-STARTTLS. +> Thunderbird (IIRC, I haven't poked at this code in years) refuses to +> downgrade authentication from what is specified (so if the setting +> requires CRAM-MD5, it will refuse to use AUTH PLAIN or LOGIN to specify +> credentials), and also screams mightily if you said you're going to do +> STARTTLS but don't. We also have a nasty warning if you refuse to do +> both SSL and STARTTLS when configuring the account, although we will +> allow it. This does open the possibility of being able to MITM the +> connection startup, but I'll also point out that ssh has the same +> intrinsic weakness to permanent MITM as it is used in practice and this +> isn't generally seen as evidence that it's MITM-able. + +I was almost impressed until I saw this: + +GET /mail/config-v1.1.xml?emailaddress=brong%40fastmail.fm HTTP/1.1 +Host: autoconfig.fastmail.fm +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 Lightning/2.6.4 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate +Connection: keep-alive + +HTTP/1.1 200 OK +Server: nginx/1.4.4 +Date: Wed, 19 Mar 2014 03:37:11 GMT +Content-Type: text/xml +Transfer-Encoding: chunked +Connection: keep-alive +X-UA-Compatible: IE=Edge +X-Frontend: frontend2 + +57b + + + + + fastmail.fm + FastMail + FastMail + + mail.messagingengine.com + 993 + SSL + password-cleartext + %EMAILADDRESS% + + + mail.messagingengine.com + 995 + SSL + password-cleartext + %EMAILADDRESS% + + + mail.messagingengine.com + 465 + SSL + password-cleartext + %EMAILADDRESS% + + + Server Names and Ports + + + Using FastMail with Mozilla Thunderbird 3.x + + + + + +It made a secure connection to broker.thunderbird.net, but then fell back to an insecure connection to pick up the configuration. + +As you can see, we're using a domain at FastMail which isn't 'fastmail.fm' for our IMAP endpoint (we host thousands of domains, we don't want to have thousands of IPs and SSL certs) + +It would be trivial to respond to this query with the details of an SSL MITM host and then all bets are off. + +GET /mail/config-v1.1.xml?emailaddress=brongondwana%40gmail.com HTTP/1.1 +Host: autoconfig.gmail.com +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 Lightning/2.6.4 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate +Connection: keep-alive + +HTTP/1.0 303 See Other +Location: http://guidetest.a.id.opendns.com/?url=autoconfig%2Egmail%2Ecom%2Fmail%2Fconfig%2Dv1%2E1%2Exml%3Femailaddress%3Dbrongondwana%2540gmail%2Ecom +Content-Length: 0 +Date: Wed, 19 Mar 2014 03:44:04 GMT +Server: OpenDNS Guide + +And then it fell back to the Mozilla ISP database, but there's no reason I couldn't have MITMed that and stolen the gmail creds too. Thunderbird is pretty trivially fooled at setup time. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22648.mbox:2,S new file mode 100644 index 00000000..13122326 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22648.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Jan 24 02:50:39 2014 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + +Message-ID: <1F07B294-2A10-424C-9299-434013CBEE6D@isode.com> + +Hi Brandon, + +Can you add an IMAP capability (or can an existing one be used) so that client can detect this behaviour? + +Thank you, +Alexey + +> On 23 Jan 2014, at 21:32, Brandon Long wrote: +> +> Yes, gmail currently only notifies of new messages and expunged messages during idle. +> +> Brandon +> +>> On Jan 23, 2014 1:26 PM, "Rick Sanders" wrote: +>> Is it true that Gmail does not send notification to a client which is idling on a mailbox? +>> +>> I ran across that while testing some code that detects flag changes using IDLE and I was surprised that I did not get anything from Gmail. +>> +>> Google searches suggest that's the case. +>> +>> Thanks, +>> Rick + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22665.mbox:2,S new file mode 100644 index 00000000..1d4b001b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22665.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From lasse at lasselog.com Wed Aug 21 03:26:50 2013 +To: imap-protocol@u.washington.edu +From: Lasse Jansen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +Message-ID: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + +Hi, + + +I'm trying to find out if it's possible to issue multiple non-waiting UID SEARCH commands like this: + + +1 UID SEARCH UNSEEN +2 UID SEARCH FLAGGED +3 UID SEARCH DELETED + + + +RFC 3501 says this: + + +UID SEARCH + UID SEARCH may be valid or invalid as a non-waiting + command sequence, depending upon whether or not the second UID + SEARCH contains message sequence numbers. + + +As none of the commands contain message sequence numbers, I would say this should be allowed. + + +With Gmail and Courier-IMAP everything seems to work fine, but with Dovecot, although both the tagged and untagged responses have the correct order within their category in my testing, sometimes an untagged response is sent before the tagged response of the preceding command: + + +1 UID SEARCH UNSEEN +2 UID SEARCH FLAGGED +3 UID SEARCH DELETED +* SEARCH 33085 +1 OK Search completed (0.000 secs). +* SEARCH +* SEARCH +2 OK Search completed (0.000 secs). +3 OK Search completed (0.000 secs). + + +But this should be fine as long as I can rely on the order of the untagged responses. So my questions are: + + +1. Is my interpretation correct that the above commands are valid according to the RFC? +2. Do you know of any servers that don't respond in the order of the commands? + + +Thanks! +Lasse + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22671.mbox:2,S new file mode 100644 index 00000000..9a88c9d7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22671.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From dave at cridland.net Thu Jun 13 06:03:36 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Question on BODYSTRUCTURE +In-Reply-To: <004f01ce67e0$1a14a960$4e3dfc20$@i-freelancer.net> +References: <004101ce6689$2b6b0630$82411290$@i-freelancer.net> + + <004f01ce67e0$1a14a960$4e3dfc20$@i-freelancer.net> +Message-ID: + +On Thu, Jun 13, 2013 at 3:45 AM, ??? wrote: + +> Hi Dave,**** +> +> ** ** +> +> I?m still a bit puzzled, hopefully you could help me out. I was studying +> a thread posted long time ago. In that post, Mark corrected a +> bodystructure response. **** +> +> He put 4 NILs in the positions which I thought were for extension data.*** +> * +> +> ** ** +> +> Here is the thread I was referring to :**** +> +> ** ** +> +> +> http://mailman2.u.washington.edu/pipermail/imap-uw/2005-November/000287.html +> **** +> +> ** +> + +Yes; he's correcting other things, and he's including all the optional data +set to NULL (because that's what his library chooses to do). + + +> ** +> +> but according to your previous reply, the first non-multipart can look +> like this :**** +> +> ** ** +> +> ("TEXT" "PLAIN" ("CHARSET" "BIG5") NIL NIL "7BIT" 860 14 NIL)**** +> +> ** ** +> +> Where the last NIL stands for MD5 (the rest 3 are optional)?**** +> +> ** +> + +That seems valid by RFC 3501 to me, yes. + +Though I'm surprised that BIG5 can be 7-bit encoded. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22675.mbox:2,S new file mode 100644 index 00000000..9e49c887 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22675.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From ayluen at i-freelancer.net Sun May 5 20:52:55 2013 +To: imap-protocol@u.washington.edu +From: =?big5?B?p/Wm463b?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Imap Search Command Parse Logic +In-Reply-To: <5EC8241E-F964-43EE-85EA-0DCD76E021A4@iki.fi> +References: <000001ce47e7$4c7bead0$e573c070$@i-freelancer.net> + <5EC8241E-F964-43EE-85EA-0DCD76E021A4@iki.fi> +Message-ID: <001901ce4a0d$3101b9b0$93052d10$@i-freelancer.net> + +Yes, I've been testing my logic with different kinds of scenarios with/out +parenthesis and got stuck when there are many levels of sublists. I have to +admit my background on data structure is not very solid. +That's why I was hoping to get some tips from the experts here. I will +proceed with your suggestion using the tree structure. Thank you for helping +me out~~ + +Regards, + +Helen + +-----Original Message----- +From: Timo Sirainen [mailto:tss@iki.fi] +Sent: Friday, May 03, 2013 6:56 PM +To: ??? +Cc: imap-protocol@u.washington.edu +Subject: Re: [Imap-protocol] Imap Search Command Parse Logic + +On 3.5.2013, at 13.16, ??? wrote: + +> I'm currently working on implementing IMAP protocol on our mail server. +This is my first time implementing such a big project and I've so far coded +a majority of IMAP commands in the RFC, except the Search command. +> I've been searching on the internet and studied postfix(RPN) algorithm for +weeks to see how to parse the search command correctly. +> It seems Postfix would work until I encountered something like OR OR A +> B C D ==> (OR (OR A B) C) D Could anyone point me a direction on how to +implement the Search command when there are multiple ORs? +> Should I even consider using Postfix(RPN) algorithm to parse search +command? + +Did you notice that it's also possible to use parenthesis explicitly in the +search query? I implemented it by parsing the search command to a tree +structure and then iterating through the tree. There are quite a lot of +optimizations you can then also do with the tree structure, like first +trying to see if the search can even match the message sequence or UID, next +checking for flags, then checking for slower ones. I'm not sure if there are +any other reasonable ways to even implement it. + +BTW. You should test your implementation's RFC compliancy with +http://imapwiki.org/ImapTest====================================== +Powered by Rainbow Mail Server 6.0 + +????????????????????????????????????????????????????????????????????????????????????? +The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you are not the intended recipient, please contact the sender immediately and destroy the material in its entirety, whether electronic or hard copy. You are notified that any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. Please consider the environment before printing this email. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22679.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22679.mbox:2,S new file mode 100644 index 00000000..1e904185 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22679.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From brong at fastmail.fm Tue Apr 30 18:20:10 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Unsure paternity +In-Reply-To: <5180559B.4010000@gmail.com> +References: <5180559B.4010000@gmail.com> +Message-ID: <1367371210.5033.140661224967997.4E7EBBE1@webmail.messagingengine.com> + + + +On Wed, May 1, 2013, at 09:36 AM, David Barchiesi wrote: +> I was analyzing the response produced by LISTing Gmails mailboxes and +> came across something similiar: +> +> * LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" +> +> According to RFC 3348 [1]: +> "It is an error for the server to return both a \HasChildren and a +> \HasNoChildren attribute in a LIST response. ". +> Could anyone explain what is going on here? + +Well, a bug obviously. It's not just you either, here's my gmail account +complete LIST response (XLIST is identical, and LIST-EXTENDED doesn't seem +to be supported at all) + +. list "" * +* LIST (\HasNoChildren) "/" "INBOX" +* LIST (\HasNoChildren) "/" "Personal" +* LIST (\HasNoChildren) "/" "Receipts" +* LIST (\HasNoChildren) "/" "Travel" +* LIST (\HasNoChildren) "/" "Work" +* LIST (\Noselect \HasChildren) "/" "[Gmail]" +* LIST (\HasChildren \HasNoChildren \All) "/" "[Gmail]/All Mail" +* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts" +* LIST (\HasChildren \HasNoChildren \Important) "/" "[Gmail]/Important" +* LIST (\HasChildren \HasNoChildren \Sent) "/" "[Gmail]/Sent Mail" +* LIST (\HasChildren \HasNoChildren \Junk) "/" "[Gmail]/Spam" +* LIST (\HasChildren \HasNoChildren \Flagged) "/" "[Gmail]/Starred" +* LIST (\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Trash" +. OK Success + +Brandon - any idea when this crept in? I haven't played with gmail's IMAP +for a while, but I don't remember seeing it before. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22682.mbox:2,S new file mode 100644 index 00000000..bc867d79 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22682.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From slusarz at curecanti.org Mon Mar 4 13:27:14 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Error in RFC 4551 (CONDSTORE)?? +In-Reply-To: <201303041916.r24JG5Nn016193@mxout11.cac.washington.edu> +References: <201303041916.r24JG5Nn016193@mxout11.cac.washington.edu> +Message-ID: <20130304142714.Horde.s_tq5R6sICEto7h6FHx-9A1@bigworm.curecanti.org> + +Quoting Pete Maclean : + +> It seems to me that there is an error in Example 5 of section 3.2. It reads: +> +> C: c101 STORE 1 (UNCHANGEDSINCE 12121230045) -FLAGS.SILENT (\Deleted) +> S: * OK [HIGHESTMODSEQ 12111230047] +> S: * 50 FETCH (MODSEQ (12111230048)) +> S: c101 OK Store (conditional) completed +> +> +> Surely the message index in the first line (1) should match that in +> the third line (50). + +I think you are correct. The '* 50' response has to relate-back to +the original request since the conditional store was successful (no +MODIFIED response-code was returned) and successful conditional stores +MUST return the FETCH (MODSEQ) data for every message that was changed. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22685.mbox:2,S new file mode 100644 index 00000000..f789b5a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22685.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From imap at maclean.com Fri Feb 8 09:36:34 2013 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC Questions +Message-ID: + +Jan, + +Thank you for your response. What I am working +on is not an IMAP server in the conventional +sense but what I call an IMAP Server +Engine. Companies license it either to add IMAP +capability to an existing email server that lacks +it or, more commonly, to provide IMAP access to +other types of message stores such as voicemail +systems and email archives. The product is called MISE. + +Pete Maclean + +At 10:06 AM 2/8/2013, Jan Kundr?t wrote: +>On Friday, 8 February 2013 15:50:38 CEST, Pete Maclean wrote: +> +> > When a client has not enabled CONDSTORE and sends an ENABLE +> > QRESYNC command to a server that advertises QRESYNC capability, +> > should the untagged response say "* ENABLED QRESYNC" or "* +> > ENABLED QRESYNC CONDSTORE"? My reading of the spec tells me the +> > latter but I observe that another server sends the former. +> +>I believe that both of these are compliant. I +>haven't found a definitive answer on this in +>either 5161 (ENABLE) or 5162 (QRESYNC) RFCs. I +>have one suggestion for the actual +>implementation: please don't ever send EXPUNGE +>when QRESYNC is enabled, and never reference +>other UIDs in VANISHED than those which have +>been just expunged. These restrictions are not +>mandated by the current version of the RFC, but +>are very important for clients (they prevent an +>ambiguous state where the client suddenly +>doesn't know which UIDs still remain in the +>mailbox). Also, thanks for implementing QRESYNC; +>it's an extremely important RFC which improves +>the clients' behavior tremendously; the savings +>on traffic when opening mailboxes are huge. What +>IMAP server is the code you're working on? With +>kind regards, Jan -- Trojit??, a fast Qt IMAP +>e-mail client -- http://trojita.flaska.net/ +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22688.mbox:2,S new file mode 100644 index 00000000..3b945073 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22688.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From iceman at google.com Wed Jan 9 14:22:46 2013 +To: imap-protocol@u.washington.edu +From: Eric +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] RFC 6154 (SPECIAL-USE) and \Important +In-Reply-To: +References: +Message-ID: <20130109222254.D203E82004A@wpzn4.hot.corp.google.com> + +On Mon, Dec 10, 2012 at 2:54 PM, Ian Anderson wrote: +> +> I notice that Gmail is including \Important in the result from the LIST +> command. +> +> * LIST (\HasNoChildren \Important) "/" "[Gmail]/Important" +> +> I don?t see that documented in RFC 6154, is that in another RFC? Or +> documented anywhere? + +Sorry for delay, we've updated our docs at +https://developers.google.com/google-apps/gmail/imap_extensions#special-use_extension_of_the_list_command +to mention '\Important' as well, though it's basically repeating what +Brandon has already said. + +I'll reach out to Barry to see what we can do about adding this to a +newly-created registry of special-use flags. + +> +> Ian +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22697.mbox:2,S new file mode 100644 index 00000000..d7214d46 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22697.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From tss at iki.fi Mon Dec 3 17:19:41 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] condstore mod-sequence 0 +In-Reply-To: +References: +Message-ID: + +On 4.12.2012, at 2.46, Johnathan Galton wrote: + +> In section 3.3.1 of RFC 4551 it says for FETCH to only return messages where the mod-sequence of the message is "bigger than" that specified (i.e. ">"). However, it seems reasonable for clients to be able to say "FETCH ... (CHANGEDSINCE 0)" and retrieve *all* messages (AFAICT thunderbird does this initially), however 0 isn't "bigger than" any valid value that we may store for the mod-sequence of a message. + +According to RFC 4551 ABNF it's illegal for client to send CHANGEDSINCE 0. It simply shouldn't include the CHANGESINCE parameter if it wants to fetch everything. It wouldn't be wrong for servers to simply reject this command with a BAD reply. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095032.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095032.22701.mbox:2,S new file mode 100644 index 00000000..268cbb65 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095032.22701.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From blong at google.com Fri Nov 9 13:15:58 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Efficiently handling sequence numbers +Message-ID: + +I'm drawing a blank on how to efficiently handle sequence numbers without +O(n) operations (where n is the number of messages in a folder). + +You can store the uids for a folder on disk in sorted order, but because +every connection has its own "view" of that data, and the view itself is +only allowed to change for a connection at specific points, it seems like +the connection needs a copy of that uidlist. + +Now, its possible you can maintain an in-memory "diff" between the view and +the actual state. Or maybe you're using a data store where you can +maintain access to the view based on timestamp. And then you also keep a +log of changes so you know what to send to the client at a sync checkpoint. + Even then, there aren't many efficient ways to answer the question of +"give me the 500th entry in that table". If you store the table as fixed +size records, sure, but then you have to rewrite the whole table, or use +some sort of fixed blocks so you can update only from change to end, but I +don't see what data storage you're using to do that and keep multiple +versions. Plus, this is starting to sound like using some serious data +storage beyond what I usually see in software like this. + +So, what do people use? IMAP allows 4B messages per folder, right? Even +in a fairly compact format, that's a lot of data to be either re-writing +constantly or loading completely and caching in memory. + +I guess an on-disk b+ tree could be modified to keep counts of each +sub-tree in a node, and then you'd just need to re-write all the nodes up +the list, is that a widely supported feature of such data structures? + +Or am I missing something else obvious? + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22595.mbox:2,S new file mode 100644 index 00000000..f9ab98c1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22595.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From imantc at gmail.com Mon Mar 9 22:55:30 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + <0C18524D-28EC-4DF9-A888-678E7DD4E56A@orthanc.ca> + + +Message-ID: + +> Please go ahead. + +.. i.e., write an RFC up? are there no more qualified takers? I could +write up a page to start the discussion - if anyone else were +interested. + + +> chat messages are delivered faster than email most of the time because the protocols were designed for real-time delivery, not because the protocols are more efficient or easier to implement. + +Is this possible that if we eliminate all activities but those +essential to byte delivery to the right place, email servers would do +more in less time and message recipients would enjoy faster, more +robust communication experience? + +a bad example: a compliant SMTP server sends all messages encoded +entirely as quoted-printable and shortens line length to 40 chars. I +am pretty certain that this would slow things down. In other words, it +is possible to comply with the protocol yet require recipient server +to do something that could be avoided. + +a better example: +performance web servers are known to run faster when serving static +content vs dynamic content (page generation per-request). Arguably, +reducing or eliminating dynamic content processing of email messages +by SMTP servers (current protocol) in favour of static message +processing (no-frills byte delivery), performance SMTP servers would +serve more concurrent requests. + +It is possible that SMTP server performance aligns with web server performance. + +why not? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22629.mbox:2,S new file mode 100644 index 00000000..0b958e0c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22629.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From blong at google.com Wed Jul 30 11:40:52 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: <2b103f33-47ba-4463-a0bc-725398f92e52@flaska.net> +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + + + + <2b103f33-47ba-4463-a0bc-725398f92e52@flaska.net> +Message-ID: + +I'll file a bug, not sure what's going on there. + +Brandon + + +On Wed, Jul 30, 2014 at 11:10 AM, Jan Kundr?t wrote: + +> On Wednesday, 30 July 2014 18:57:01 CEST, Davide Gullo wrote: +> +>> As you can see above the RFC822 is the email data (header and body). +>> What I wrong? +>> +> +> Ah, so this has nothing to do with RFC822.SIZE or sizes of anything else, +> for that matter. You are complaining that the server did not return the +> "RFC822" item which Arnt points out is nowadays usually referred to as +> BODY[]. +> +> I have no idea why GMail skips it, sorry. It seems reasonable to expect +> that the server should return it as RFC822, so it appears that it's a GMail +> bug of some sort. +> +> +> Cheers, +> Jan +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22641.mbox:2,S new file mode 100644 index 00000000..29c58d88 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22641.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From Pidgeot18 at verizon.net Tue Mar 18 21:13:10 2014 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395200804.27059.96196209.4345452F@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <53290DE4.2020909@verizon.net> + <1395200804.27059.96196209.4345452F@webmail.messagingengine.com> +Message-ID: <53291956.90203@verizon.net> + +On 3/18/2014 10:46 PM, Bron Gondwana wrote: +> And then it fell back to the Mozilla ISP database, but there's no +> reason I couldn't have MITMed that and stolen the gmail creds too. +> Thunderbird is pretty trivially fooled at setup time. Bron. +The ISP database requires an https connection IIRC, but that's a minor +detail (I thought autoconfig also required https and not http, but +again, that's minor). + +You seem to be coming from the standpoint that a security system that +can't protect against everything is no better than one that protects +against most things. Autoconfiguration can be fooled, true (even if +https were required--we fallback to guessing servers and trying +commands, so a DNS hijack setup could easily screw it over). But you +have a 5-second window (and I'm being generous here) to do it. And if +you miss that chance, you've lost it for another 3 years. + +It's like ssh: ssh is actually weak to being MITM'd on the first +connection (based on how people use it): people don't remember the keys, +so they'll always say "yes" to the question "are you sure this key is +correct?" Does that mean that ssh provides no protection? Of course +not--the difficulty of intercepting the ssh connection is made extremely +harder and makes attackers pour much more resources into doing so. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22648.mbox:2,S new file mode 100644 index 00000000..d9a71d56 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22648.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From benny at diku.dk Fri Jan 24 04:17:32 2014 +To: imap-protocol@u.washington.edu +From: Benny =?utf-8?q?Kj=C3=A6r?= Nielsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <1F07B294-2A10-424C-9299-434013CBEE6D@isode.com> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + <1F07B294-2A10-424C-9299-434013CBEE6D@isode.com> +Message-ID: <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> + +On 24 Jan 2014, at 11:50, Alexey Melnikov wrote: + +>> On 23 Jan 2014, at 21:32, Brandon Long wrote: +>> +>> Yes, gmail currently only notifies of new messages and expunged +>> messages during idle. +> +> Can you add an IMAP capability (or can an existing one be used) so +> that client can detect this behaviour? + +I second that! I've played with a simple workaround for Gmail in which I +regularly check for flag changes when in the IDLE state, but I haven't +enabled it because I don't like that the workaround is not automatically +disabled when/if Gmail IDLE is improved. + +I've also been wondering: The RFC on IMAP IDLE does not state it as a +requirement that servers must (or even should) report flag changes when +in the IDLE state. Has anyone done any experiments showing whether or +not this is a widespread IMAP server limitation (beyond Gmail)? + +-- +Benny +MailMate: http://freron.com + diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22665.mbox:2,S new file mode 100644 index 00000000..f36fd5f7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22665.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Aug 21 03:58:03 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +Message-ID: <20130821105802.GD8168@gulbrandsen.priv.no> + +On Wed, Aug 21, 2013 at 03:26:50AM -0700, Lasse Jansen wrote: +> 1. Is my interpretation correct that the above commands are valid according to the RFC? + +Borderline. But I'd say it's okay. + +> 2. Do you know of any servers that don't respond in the order of the commands? + +No. And I've looked. + +The belt-and-braces crowd would suggest implementing ESEARCH: If the +server supports that the untagged response will be tied explicitly to +the appropriated command. + +May I ask what you're doing? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22671.mbox:2,S new file mode 100644 index 00000000..b088432b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22671.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From slusarz at curecanti.org Thu Jun 13 07:46:19 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] CATENATE and literal8's +Message-ID: <20130613084619.Horde.PUc2jvmekaWVpKgWu3-WLA1@bigworm.curecanti.org> + +Confused the heck out of me why CATENATE (RFC 4469) does not allow +literal8's in TEXT parts, and led me to question whether this was a +conscious design decision. Eventually found this: + +http://osdir.com/ml/ietf.imapext/2006-03/msg00030.html + +Would it be useful to list this as an errata for both documentation +purposes and to indicate that this was indeed an oversight and not a +design decision? + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22675.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22675.mbox:2,S new file mode 100644 index 00000000..9bcc3921 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22675.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From nicolson at google.com Tue May 28 17:08:37 2013 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFtaWUgTmljb2xzb24gKOWAquW/l+aYjik=?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] RFC822.SIZE bug? +In-Reply-To: +References: +Message-ID: + +This looks like a known issue where we incorrectly constructed some message +metadata. As you can see, it affected messages during a certain timeframe +in the past, and the raw message data itself is not affected. We're hoping +to clean this up, but don't have an ETA for that. + + +On Sat, May 4, 2013 at 6:40 AM, Davide Gullo wrote: + +> Hi, +> nobody knows an issue like this: +> +> ------ +> * 22136 FETCH (X-GM-MSGID 1384367682512034576 UID 77480 RFC822.SIZE 0 +> RFC822 {11012} +> +> Delivered-To: jazzo72@gmail.com +> .... +> .... +> .... +> ) +> +> TAG21 OK Success +> ------ +> +> Look at the *RFC822.SIZE, it?s 0 (zero)!* +> But it isn?t really zero as you can see by the RFC822 size, it?s correct +> (11012 bytes). +> +> I got it always at the same time: all the emails after Nov 2011 until Feb +> 2012 have this issue. +> Maybe Gmail had problems in this period? +> Anybody knows it? +> Could it be an IMAP bug? +> +> Thanks, +> +> -- +> Davide Gullo +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22682.mbox:2,S new file mode 100644 index 00000000..57e2fb05 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22682.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Mar 5 04:48:04 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Error in RFC 4551 (CONDSTORE)?? +In-Reply-To: <20130304142714.Horde.s_tq5R6sICEto7h6FHx-9A1@bigworm.curecanti.org> +References: <201303041916.r24JG5Nn016193@mxout11.cac.washington.edu> + <20130304142714.Horde.s_tq5R6sICEto7h6FHx-9A1@bigworm.curecanti.org> +Message-ID: <5135E984.9020807@isode.com> + +On 04/03/2013 21:27, Michael M Slusarz wrote: +> Quoting Pete Maclean : +> +>> It seems to me that there is an error in Example 5 of section 3.2. +>> It reads: +>> +>> C: c101 STORE 1 (UNCHANGEDSINCE 12121230045) -FLAGS.SILENT +>> (\Deleted) +>> S: * OK [HIGHESTMODSEQ 12111230047] +>> S: * 50 FETCH (MODSEQ (12111230048)) +>> S: c101 OK Store (conditional) completed +>> +>> +>> Surely the message index in the first line (1) should match that in +>> the third line (50). +> +> I think you are correct. The '* 50' response has to relate-back to +> the original request since the conditional store was successful (no +> MODIFIED response-code was returned) and successful conditional stores +> MUST return the FETCH (MODSEQ) data for every message that was changed. + +You are right, it should be either "STORE 50 ..." or "* 1 FETCH ...". + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22685.mbox:2,S new file mode 100644 index 00000000..6bbda5ee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22685.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From brong at fastmail.fm Fri Feb 8 12:46:02 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Clarification on RFC 6851 +In-Reply-To: <1360342514.3230.53.camel@hurina> +References: <51129513.5080905@aol.com> <1360342514.3230.53.camel@hurina> +Message-ID: <1360356362.25348.140661188777389.5DDC322F@webmail.messagingengine.com> + +On Sat, Feb 9, 2013, at 03:55 AM, Timo Sirainen wrote: +> On Wed, 2013-02-06 at 12:38 -0500, Stuart Brandt wrote: +> > I'm hoping someone can clarify the following section of the new MOVE +> > extension: +> > +> > Because a MOVE applies to a set of messages, it might fail partway +> > through the set. Regardless of whether the command is successful in +> > moving the entire set, each individual message SHOULD either be moved +> > or unaffected. The server MUST leave each message in a state where +> > it is in at least one of the source or target mailboxes (no message +> > can be lost or orphaned). The server SHOULD NOT leave any message in +> > both mailboxes (it would be bad for a partial failure to result in a +> > bunch of duplicate messages). This is true even if the server +> > returns a tagged NO response to the command. +> > +> > +> > In the case where a MOVE fails partway through the set and leaves some +> > messages moved and others unaffected, does this imply that servers +> > SHOULD return a NO in the tagged response, or is OK the more appropriate +> > tagged response? +> +> I was waiting for someone else to give a more exact answer, maybe +> referring to the RFC text, but here's my take on it. I think the only +> two reasonable server implementations are: +> +> a) Return OK if you moved all of the messages, NO if you didn't move +> anything. (This is similar to how COPY works.) +> +> b) Return OK if you moved all messages that currently exist, i.e. you +> skipped over messages recently expunged by another session. Return NO if +> you didn't move anything. (I'm not a fan of this implementation.) + +Woah. WTF? + +UID MOVE 1:* Dest + +I think B is the only way that makes sense here. OK for "I moved every existing message matching the selector" and NO for any partial move where a matching message is left in the source mailbox. + +If every matching message is not in the source mailbox, then IMHO you're done. If some got expunged before then user intent is that they don't exist any more, so it's "OK" for them to not be in Dest. + +> I don't think a server should leave the mailbox in a state where some of +> the messages were copied and some of them weren't, except if something +> exceptionally bad happens (e.g. server crash). If server happens to do +> that anyway in normal code, it should return NO. +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22688.mbox:2,S new file mode 100644 index 00000000..dd876eac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22688.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From iana at apple.com Sun Jan 13 16:31:36 2013 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +Message-ID: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + +I?ve noticed that in some systems when you send a message via SMTP, it will put a copy in the user?s Sent mailbox. Most of them don?t however, necessitating that I do an IMAP APPEND to get the message in Sent. Is there a good/any way to tell when the APPEND is necessary? Right now I?m doing it all the time which is resulting in double copies in the Sent mailbox for systems that do it automatically. + +Ian +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22697.mbox:2,S new file mode 100644 index 00000000..3687dc46 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22697.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From johngalton217 at gmail.com Mon Dec 3 17:19:51 2012 +To: imap-protocol@u.washington.edu +From: Johnathan Galton +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: condstore mod-sequence 0 +In-Reply-To: +References: +Message-ID: + +On Mon, Dec 3, 2012 at 4:46 PM, Johnathan Galton wrote: + +> In section 3.3.1 of RFC 4551 it says for FETCH to only return messages +> where the mod-sequence of the message is "bigger than" that specified (i.e. +> ">"). However, it seems reasonable for clients to be able to say "FETCH +> ... (CHANGEDSINCE 0)" and retrieve *all* messages (AFAICT thunderbird does +> this initially), however 0 isn't "bigger than" any valid value that we may +> store for the mod-sequence of a message. +> + +Oops, actually this last sentence is incorrect because having a message's +mod-sequence of 0 is invalid ("*positive* unsigned 64-bit value") despite +being quite useful as a default/initial value. + + +> +> How do other folks handle this? Is 0 explicitly special cased to mean "do +> not filter anything" in the server implementation even though (based on my +> reading) against the letter of the RFC? +> +> Interestingly enough in SEARCH MODSEQ (in section 3.4) is explicitly ">=". +> Seems a little incongruent, not sure if it's intentional or not. +> +> Thanks for your time, +> John +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095033.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095033.22701.mbox:2,S new file mode 100644 index 00000000..0257a86b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095033.22701.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From tss at iki.fi Fri Nov 9 13:37:58 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Efficiently handling sequence numbers +In-Reply-To: +References: +Message-ID: + +On 9.11.2012, at 23.15, Brandon Long wrote: + +> I'm drawing a blank on how to efficiently handle sequence numbers without O(n) operations (where n is the number of messages in a folder). + +I don't think it's a real concern. A long time ago I wrote some kind of a binary tree based algorithm to do expunges in O(log n), but eventually I just realized it's way too much trouble (and I'm pretty sure it had some O(n) operations hidden in there at some intervals). Small fixed size records (especially a simple uids[] array) works just fine for probably up to tens of millions of mails, and just about no one has that many mails in one mailbox. + +Dovecot nowadays doesn't rewrite the whole index to disk every time you delete a mail. It appends "uid 123 expunged" to a log file and updates the index in memory (memmove()ing data around). Then once in a while it recreates the index. Works nicely. I've wondered about making this two arrays though, so that you'd have the uids[] array and other_fixed_data[] array and expunge would only need to move data in the uids[] array, but I don't know if that really is a good idea. Probably not. + +Also large mailboxes could be split to "old mails" and "new mails" indexes. If you have a huge mailbox, it's very unlikely that any old messages get expunged. Then you only need to append to the old index and rewrite the small new index. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22595.mbox:2,S new file mode 100644 index 00000000..f3906a7c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22595.mbox:2,S @@ -0,0 +1,96 @@ +MBOX-Line: From brong at fastmail.fm Mon Mar 9 23:06:19 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + <0C18524D-28EC-4DF9-A888-678E7DD4E56A@orthanc.ca> + + + +Message-ID: <1425967579.1849414.238222149.3EB9CA30@webmail.messagingengine.com> + +On Tue, Mar 10, 2015, at 04:55 PM, Imants Cekusins wrote: +> > Please go ahead. +> +> .. i.e., write an RFC up? are there no more qualified takers? I could +> write up a page to start the discussion - if anyone else were +> interested. + +I don't think there are very many people who think that byte optimising +the mail flow is the thing that's holding email back. Particularly +without any science to back up the assertion. + +> > chat messages are delivered faster than email most of the time +> > because the protocols were designed for real-time delivery, not +> > because the protocols are more efficient or easier to implement. +> +> Is this possible that if we eliminate all activities but those +> essential to byte delivery to the right place, email servers would do +> more in less time and message recipients would enjoy faster, more +> robust communication experience? + +Well, obviously. It might be horrible to write code for, which is going +to mean nobody wants to do it. Or maybe not, depends what you're +actually proposing. + +> a bad example: a compliant SMTP server sends all messages encoded +> entirely as quoted-printable and shortens line length to 40 chars. I +> am pretty certain that this would slow things down. In other words, it +> is possible to comply with the protocol yet require recipient server +> to do something that could be avoided. +> +> a better example: performance web servers are known to run faster when +> serving static content vs dynamic content (page generation per- +> request). Arguably, reducing or eliminating dynamic content processing +> of email messages by SMTP servers (current protocol) in favour of +> static message processing (no-frills byte delivery), performance SMTP +> servers would serve more concurrent requests. + +Sure. Again, SMTP is not IMAP. And it's harder to replace, because +SMTP is server-to-server, whereas replacing the client/server protocol +only needs two instances to change, while replacing SMTP needs everyone +to change. + +I'll tell you what does make things faster - and just about every server +does it. Calculate commonly requested items like ENVELOPE at +delivery/append time so that they can answer immediately when requested. +Or at least cache them the first time they are requested over IMAP so +they don't need to be calculated again. That's a real win. + +I'll tell you what's faster than everything you've proposed. Not sending +the email in the first place! + +> It is possible that SMTP server performance aligns with web server +> performance. +> +> why not? + +Why? You're the one bringing unsupported assertions about how +performance works. + +I can tell you that SELECT is expensive because it needs to create a COW +state. You can make it cheaper by pre-computing and only actually +storing any state when there is a second client that cares. We read the +whole bloody thing into memory with Cyrus, and we get acceptable +performance with a 1 million email mailbox. That's our design goal. + +You know what our biggest headache is. Disk IO. Even with a ton of +SSD-based optimisation, things that reduce IO win every time over +reducing computation. lowercasing, decoding subjects - they don't +even show up in the heat map. It's not where time is going. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22629.mbox:2,S new file mode 100644 index 00000000..ad5103a3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22629.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From blong at google.com Wed Jul 30 12:52:58 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail search on Subject +In-Reply-To: +References: + + + +Message-ID: + +I think there's an argument to be made that it should be no results, sure. + Except that implies that there are no messages which match, which isn't +true either. We could also certainly be smarter and fallback to doing +substring searches... the problem is, we never really want to do sub-string +searches on a folder of say 1M messages, and if we have a cut-off from the +maximum number of messages we'll search, that isn't developer friendly +either. + +We should probably just respond with a NO. + +Brandon + + +On Wed, Jul 30, 2014 at 1:21 AM, Eduardo Chappa wrote: + +> On Wed, 30 Jul 2014, Brandon Long wrote: +> +> Note that this is documented here: +>> https://support.google.com/mail/answer/78761?hl=en&ref_topic=3397501 +>> Though, admittedly, "Substring search. All searches are assumed to be +>> words" +>> isn't enough to make this behavior obvious. +>> +> +> Dear Brandon, +> +> Thank you for your complete explanation. Although there is no substring +> search, I guess "%" is not a string on its own in the Gmail server, which +> would have actually resulted in no messages selected in the search in my +> case, instead of all of them. +> +> Thank you! I appreciate your explanation. +> +> -- +> Eduardo +> http://patches.freeiz.com/alpine/ +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22641.mbox:2,S new file mode 100644 index 00000000..6d3c173e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22641.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 18 21:34:42 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <53291956.90203@verizon.net> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <53290DE4.2020909@verizon.net> + <1395200804.27059.96196209.4345452F@webmail.messagingengine.com> + <53291956.90203@verizon.net> +Message-ID: <1395203682.4445.96207281.659A22F3@webmail.messagingengine.com> + +On Wed, Mar 19, 2014, at 03:13 PM, Joshua Cranmer wrote: +> On 3/18/2014 10:46 PM, Bron Gondwana wrote: +> > And then it fell back to the Mozilla ISP database, but there's no +> > reason I couldn't have MITMed that and stolen the gmail creds too. +> > Thunderbird is pretty trivially fooled at setup time. Bron. +> The ISP database requires an https connection IIRC, but that's a minor +> detail (I thought autoconfig also required https and not http, but +> again, that's minor). + +Yes, it did in my tcpdump, which is good. + +> You seem to be coming from the standpoint that a security system that +> can't protect against everything is no better than one that protects +> against most things. Autoconfiguration can be fooled, true (even if +> https were required--we fallback to guessing servers and trying +> commands, so a DNS hijack setup could easily screw it over). But you +> have a 5-second window (and I'm being generous here) to do it. And if +> you miss that chance, you've lost it for another 3 years. +> +> It's like ssh: ssh is actually weak to being MITM'd on the first +> connection (based on how people use it): people don't remember the keys, +> so they'll always say "yes" to the question "are you sure this key is +> correct?" Does that mean that ssh provides no protection? Of course +> not--the difficulty of intercepting the ssh connection is made extremely +> harder and makes attackers pour much more resources into doing so. + +No, you're absolutely right there. It's definitely an improvement. +Thunderbird is one of the better clients out there. + +Of course, it could try SRV records first. There's a standard for that +now, and they could point you at port 993 (ours do) immediately. + +Gmail also uses port 993 fwiw. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22648.mbox:2,S new file mode 100644 index 00000000..02417197 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22648.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Jan 24 04:23:56 2014 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> +References: <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> <52E18829.40305@earthlink.net> <1F07B294-2A10-424C-9299-434013CBEE6D@isode.com> + <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> +Message-ID: <52E25B5C.4060104@earthlink.net> + + > I've played with a simple workaround for Gmail in which I + > regularly check for flag changes when in the IDLE state, + +Can you share the workaround with us? + +Thanks, +Rick + + +-- +Rick Sanders +rfs9999@earthlink.net +IMAP Tools http://www.athensfbc.com/imap-tools + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22665.mbox:2,S new file mode 100644 index 00000000..c2d55660 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22665.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Wed Aug 21 04:13:33 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +Message-ID: <3409C1FB-B43A-4C35-B28A-3DD435A5063A@iki.fi> + +On 21.8.2013, at 13.26, Lasse Jansen wrote: + +> UID SEARCH + UID SEARCH may be valid or invalid as a non-waiting +> command sequence, depending upon whether or not the second UID +> SEARCH contains message sequence numbers. +> +> +> As none of the commands contain message sequence numbers, I would say this should be allowed. + +It is. However it doesn't say anything about the order in which the replies should arrive. So it would make sense only when you just want to combine multiple SEARCHes into one results. + +> With Gmail and Courier-IMAP everything seems to work fine, but with Dovecot, although both the tagged and untagged responses have the correct order within their category in my testing, sometimes an untagged response is sent before the tagged response of the preceding command: +> +> 1 UID SEARCH UNSEEN +> 2 UID SEARCH FLAGGED +> 3 UID SEARCH DELETED +> * SEARCH 33085 +> 1 OK Search completed (0.000 secs). +> * SEARCH +> * SEARCH +> 2 OK Search completed (0.000 secs). +> 3 OK Search completed (0.000 secs). +> +> But this should be fine as long as I can rely on the order of the untagged responses. + +For the above SEARCH commands it's very likely that you receive the untagged responses in the correct order, but I don't think it's guaranteed. Dovecot attempts to process SEARCH commands 0.1 seconds at a time, then see if there's some other work to do, handle that and go back to processing SEARCH. So for example if the first SEARCH was using BODY/TEXT in a large enough mailbox, the 2 and 3 SEARCH replies could be finished and returned first. The tagged replies are always returned in order, because Mail.app used to break if they weren't. + +FETCH command is handled in somewhat similar way. It gets processed until the client output buffer gets full, then Dovecot sees if there's some other work to be done while waiting, possibly starting another FETCH command that starts mixing the results with the first one. With FETCH this shouldn't cause any trouble though. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22671.mbox:2,S new file mode 100644 index 00000000..d843cd78 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22671.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From yjh0502 at gmail.com Fri Jun 14 01:50:04 2013 +To: imap-protocol@u.washington.edu +From: Jihyun Yu +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +Message-ID: + +Hi, + +I'm implementing RCS message storage server (which is used for Joyn +messaging). RCS uses IMAP to access/synchronize chat logs from multiple +clients. + +RCS specification specifies that new mailbox should be created for every +new conversation (1-1 chat, and group chat). It implies that a user may +have hundreds of mailboxes. IMAP has several extensions that helps to +reduce both number of commands and bandwidth while synchronizing single +mailbox (for example, RFC5162). However it seems that there is no extension +to help synchronizing multiple mailboxes at once. That means that if a user +has a 100 mailboxes, it will execute at least 100 commands to server every +time it lost connection between server, which is quite frequent in mobile +environment. Our goal is a build a server which can handle million +subscribers, and it seems infeasible to build such server when each clients +send 100 commands every time it reconnects to server. + +Is there any solutions or IMAP extensions that solves the problem? + + +Jihyun Yu +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22682.mbox:2,S new file mode 100644 index 00000000..a5c04148 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22682.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From barryleiba at computer.org Tue Mar 5 07:21:57 2013 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Error in RFC 4551 (CONDSTORE)?? +In-Reply-To: <5135E984.9020807@isode.com> +References: <201303041916.r24JG5Nn016193@mxout11.cac.washington.edu> + <20130304142714.Horde.s_tq5R6sICEto7h6FHx-9A1@bigworm.curecanti.org> + <5135E984.9020807@isode.com> +Message-ID: + +>> Quoting Pete Maclean : +>> +>>> It seems to me that there is an error in Example 5 of section 3.2. It +>>> reads: +>>> +>>> C: c101 STORE 1 (UNCHANGEDSINCE 12121230045) -FLAGS.SILENT +>>> (\Deleted) +>>> S: * OK [HIGHESTMODSEQ 12111230047] +>>> S: * 50 FETCH (MODSEQ (12111230048)) +>>> S: c101 OK Store (conditional) completed +>>> +>>> Surely the message index in the first line (1) should match that in the +>>> third line (50). +>> +>> I think you are correct. The '* 50' response has to relate-back to the +>> original request since the conditional store was successful (no MODIFIED +>> response-code was returned) and successful conditional stores MUST return +>> the FETCH (MODSEQ) data for every message that was changed. +> +> You are right, it should be either "STORE 50 ..." or "* 1 FETCH ...". + +I suggest "STORE 50", just to avoid making anyone think that "1" is special. + +Pete, will you submit an errata report, please?: +http://www.rfc-editor.org/errata.php + +Barry, Applications AD + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22685.mbox:2,S new file mode 100644 index 00000000..0d59d570 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22685.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From brong at fastmail.fm Fri Feb 8 12:52:05 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC Questions +In-Reply-To: <7237e649-33b3-47fb-a99a-4d3e7f28030f@flaska.net> +References: <201302081451.r18EpC0d010777@mxout11.cac.washington.edu> + <7237e649-33b3-47fb-a99a-4d3e7f28030f@flaska.net> +Message-ID: <1360356725.26278.140661188781457.3532161E@webmail.messagingengine.com> + + + +On Sat, Feb 9, 2013, at 02:06 AM, Jan Kundr?t wrote: +> On Friday, 8 February 2013 15:50:38 CEST, Pete Maclean wrote: +> > When a client has not enabled CONDSTORE and sends an ENABLE +> > QRESYNC command to a server that advertises QRESYNC capability, +> > should the untagged response say "* ENABLED QRESYNC" or "* +> > ENABLED QRESYNC CONDSTORE"? My reading of the spec tells me the +> > latter but I observe that another server sends the former. +> +> I believe that both of these are compliant. I haven't found a definitive answer on this in either 5161 (ENABLE) or 5162 (QRESYNC) RFCs. + +Cyrus does the latter. I also agree it is the correct way. + +> I have one suggestion for the actual implementation: please don't ever send EXPUNGE when QRESYNC is enabled, and never reference other UIDs in VANISHED than those which have been just expunged. These restrictions are not mandated by the current version of the RFC, but are very important for clients (they prevent an ambiguous state where the client suddenly doesn't know which UIDs still remain in the mailbox). + +This one could be tricky depending on your backend. Cyrus does it right for changes, but may need to tell "gaps" during SELECT depending on storage settings. + +> Also, thanks for implementing QRESYNC; it's an extremely important RFC which improves the clients' behavior tremendously; the savings on traffic when opening mailboxes are huge. What IMAP server is the code you're working on? + +Agree. It's good to see many servers coming out with more than just RFC3501 support. + +> With kind regards, +> Jan +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22688.mbox:2,S new file mode 100644 index 00000000..98ebc135 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22688.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From iana at apple.com Sun Jan 13 16:43:12 2013 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> +Message-ID: <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + +I suppose this might be more likely as an SMTP response code (though I can?t find a defined one) than an IMAP capability or some such, but maybe someone on this list knows anyway? + +Ian + +On Jan 13, 2013, at 4:31 PM, Ian Anderson wrote: + +> I?ve noticed that in some systems when you send a message via SMTP, it will put a copy in the user?s Sent mailbox. Most of them don?t however, necessitating that I do an IMAP APPEND to get the message in Sent. Is there a good/any way to tell when the APPEND is necessary? Right now I?m doing it all the time which is resulting in double copies in the Sent mailbox for systems that do it automatically. +> +> Ian_______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22697.mbox:2,S new file mode 100644 index 00000000..c01f87cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22697.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From tss at iki.fi Tue Dec 4 03:12:55 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +Message-ID: + +Another BINARY issue not specified by the current BINARY RFC: How to handle fetching BINARY[x] or BINARY.SIZE[x] when the MIME part exists but contains invalid base64/quoted-printable data? The possibilities I think would be: + +a) Just ignore the invalid data and reply as best as you can. I'm not sure if this is actually useful in any case since the result will be invalid, and it might even cause security problems in case viruses try to exploit it at some point when virus scanner and IMAP server do the decoding differently. I remember reading a few years ago a lot of reports about this issue. + +b) Reply NIL to BINARY[x] and 0 to BINARY.SIZE[x] and overall reply OK to the FETCH. + +c) Abort and return NO to the FETCH, similarly to as for [UNKNOWNCTE] handling, except without that resp-code. + +I implemented b) today for Dovecot, thinking that it would probably cause less client confusion than c) and would be more secure then a). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22701.mbox:2,S new file mode 100644 index 00000000..5c1e3f9b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22701.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From blong at google.com Fri Nov 9 13:45:12 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Efficiently handling sequence numbers +In-Reply-To: +References: + +Message-ID: + +On Fri, Nov 9, 2012 at 1:37 PM, Timo Sirainen wrote: + +> On 9.11.2012, at 23.15, Brandon Long wrote: +> +> > I'm drawing a blank on how to efficiently handle sequence numbers +> without O(n) operations (where n is the number of messages in a folder). +> +> I don't think it's a real concern. A long time ago I wrote some kind of a +> binary tree based algorithm to do expunges in O(log n), but eventually I +> just realized it's way too much trouble (and I'm pretty sure it had some +> O(n) operations hidden in there at some intervals). Small fixed size +> records (especially a simple uids[] array) works just fine for probably up +> to tens of millions of mails, and just about no one has that many mails in +> one mailbox. +> +> Dovecot nowadays doesn't rewrite the whole index to disk every time you +> delete a mail. It appends "uid 123 expunged" to a log file and updates the +> index in memory (memmove()ing data around). Then once in a while it +> recreates the index. Works nicely. I've wondered about making this two +> arrays though, so that you'd have the uids[] array and other_fixed_data[] +> array and expunge would only need to move data in the uids[] array, but I +> don't know if that really is a good idea. Probably not. +> +> Also large mailboxes could be split to "old mails" and "new mails" +> indexes. If you have a huge mailbox, it's very unlikely that any old +> messages get expunged. Then you only need to append to the old index and +> rewrite the small new index. +> +> So, do you load the full sequence into memory on SELECT? + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095034.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095034.22707.mbox:2,S new file mode 100644 index 00000000..0e53356d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095034.22707.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From johngalton217 at gmail.com Wed Oct 10 15:27:36 2012 +To: imap-protocol@u.washington.edu +From: John Galton +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] GMail SPECIAL-USE LIST +Message-ID: + +Hmm looks like GMail now supports the SPECIAL-USE LIST extension (rfc6154) +in addition to their own XLIST command: + +3 list "/" "*" +* LIST (\HasNoChildren) "/" "INBOX" +* LIST (\HasNoChildren) "/" "Personal" +* LIST (\HasNoChildren) "/" "Receipts" +* LIST (\HasNoChildren) "/" "Travel" +* LIST (\HasNoChildren) "/" "Work" +* LIST (\Noselect \HasChildren) "/" "[Gmail]" +* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail" +* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts" +* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important" +* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail" +* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam" +* LIST (\HasNoChildren \Flagged) "/" "[Gmail]/Starred" +* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash" + +// John +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22595.mbox:2,S new file mode 100644 index 00000000..fe09fae8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22595.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From jkt at flaska.net Tue Mar 10 02:40:23 2015 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?If_Crispin_were_creating_IMAP_toda?= + =?iso-8859-1?q?y_how_would_it_be_different=3F?= +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + +Message-ID: <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> + +On Monday, 9 March 2015 22:19:35 CET, Imants Cekusins wrote: +> It also consumes a lot of CPU resources - visibly. + +I don't know which server you're basing your observations on, but my +suggestion is to try benchmarking a recent version of one of the popular +Linux mail servers at first (perhaps Postfix with Dovecot or Cyrus). If the +actual throughput of this stack still bothers you, please post the numbers +-- I'm always interested in reading a well-executed benchmark. Comparing +the data to some other e-mail servers might be even a bit entertaining, I +suspect. + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22629.mbox:2,S new file mode 100644 index 00000000..bb04a4d6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22629.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jul 30 13:16:40 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail search on Subject +In-Reply-To: +References: + + + + +Message-ID: + +What's happening here is that you're translating the search to a backend, +which can't handle it, so it's a [SERVERBUG]. The remaining questions are: +send OK or NO, and send a short response or a perhaps overwhelmingly long. + +I'm sure sending a million-message SEARCH response will help flush out a +few client bugs, if you want to be quixotic. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22641.mbox:2,S new file mode 100644 index 00000000..2530da2f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22641.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 18 21:37:51 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <295B89D3-01E0-42E2-A9D8-DEFCAD16B4D2@orthanc.ca> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> + <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> + <295B89D3-01E0-42E2-A9D8-DEFCAD16B4D2@orthanc.ca> +Message-ID: <1395203871.5223.96206133.66747719@webmail.messagingengine.com> + +On Wed, Mar 19, 2014, at 02:43 PM, Lyndon Nerenberg wrote: +> +> On Mar 18, 2014, at 8:34 PM, Bron Gondwana wrote: +> +> > It's broken for now because of assumed future risks. And that's my problem with +> > the standards world. +> +> Where is your answer? + +Pragmatic standards that solve the problems now, ahead of the perceived +potential problems of the future. Designing for the future gets us ISO +7 layer networking, not TCP. + +As an example: + +In the mail space - it means replace authenticated SMTP with SUBMIT via IMAP. +That doesn't mean turn off authenticated SMTP, it means add SUBMIT via IMAP. +I'm willing to make a bet that client authors would jump on it - particularly +if it was implemented with a latch. + +(by which I mean that the server sets a flag on the message upon successful +SUBMIT to the next hop) + +Add a SPECIALUSE mailbox name for messages to be IMAP appended into, then: + +> SELECT Outbox + +> TAG UID SUBMIT $N (OPTS) +< TAG OK SUBMITTED $N ESMTP id A01306C0037 + +And you get single-copy-over-the-wire upload. Define the few basics (strip +BCC) that everyone needs, and you've hit the 99% use case for right now. + +Yet every time this kind of idea comes up, the naysayers are all screaming +"won't somebody think of the future" - and meanwhile exchange active sync +is out there eating lunches, which it so much should not be. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22648.mbox:2,S new file mode 100644 index 00000000..4594ad89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22648.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From andris.reinman at gmail.com Fri Jan 24 04:29:29 2014 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <52E25B5C.4060104@earthlink.net> +References: <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> <52E18829.40305@earthlink.net> <1F07B294-2A10-424C-9299-434013CBEE6D@isode.com> + <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> + <52E25B5C.4060104@earthlink.net> +Message-ID: + +Hi, + +Gmail not advertising flag updates is a real bummer. My workaround is to poll regularly using CONDSTORE like this: + +a FETCH 1:* (UID FLAGS) (CHANGEDSINCE zzz) + +Where zzz is the last known HIGHESTMODSEQ value. + +Best regards, +Andris Reinman + + +On 24.01.2014, at 14:23, Rick Sanders wrote: + +> > I've played with a simple workaround for Gmail in which I +> > regularly check for flag changes when in the IDLE state, +> +> Can you share the workaround with us? +> +> Thanks, +> Rick +> +> +> -- +> Rick Sanders +> rfs9999@earthlink.net +> IMAP Tools http://www.athensfbc.com/imap-tools +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22665.mbox:2,S new file mode 100644 index 00000000..da41d6ee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22665.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From lasse at lasselog.com Wed Aug 21 04:17:23 2013 +To: imap-protocol@u.washington.edu +From: Lasse Jansen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <20130821105802.GD8168@gulbrandsen.priv.no> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <20130821105802.GD8168@gulbrandsen.priv.no> +Message-ID: <92F1AAB2-B441-446B-B0C9-E4E4239BF297@lasselog.com> + +We are currently working on optimizing the IMAP sync of our email client Unibox [1]. I've looked at other clients and most of them use things like UID FETCH 1:* (UID FLAGS) or similar to update flags of already-synced emails, but this sends quite a lot of redundant data. As we only care about very few tags anyway (seen, deleted, flagged) we implemented the flag-updating with UID SEARCH. Being able to pipeline this would speed things up. + + +[1] http://www.uniboxapp.com + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22671.mbox:2,S new file mode 100644 index 00000000..10000c55 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22671.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From brong at fastmail.fm Fri Jun 14 03:08:42 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +In-Reply-To: +References: +Message-ID: <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> + +On Fri, Jun 14, 2013, at 06:50 PM, Jihyun Yu wrote: + +Hi, + +I'm implementing RCS message storage server (which is used for Joyn +messaging). RCS uses IMAP to access/synchronize chat logs from multiple +clients. + +RCS specification specifies that new mailbox should be created for +every new conversation (1-1 chat, and group chat). It implies that a +user may have hundreds of mailboxes. IMAP has several extensions that +helps to reduce both number of commands and bandwidth while +synchronizing single mailbox (for example, RFC5162). However it seems +that there is no extension to help synchronizing multiple mailboxes at +once. That means that if a user has a 100 mailboxes, it will execute at +least 100 commands to server every time it lost connection between +server, which is quite frequent in mobile environment. Our goal is a +build a server which can handle million subscribers, and it seems +infeasible to build such server when each clients send 100 commands +every time it reconnects to server. + +Is there any solutions or IMAP extensions that solves the problem? + + +I suspect you're looking for RFC5819 here - LIST RETURN STATUS. You +can then use RFC5162 for each mailbox with a changed HIGHESTMODSEQ to +get the actual changes, so it become 1 command plus another 1 command +per mailbox which has changed since disconnection. + +We cheat at FastMail - we've got a patched Cyrus server which uses a +single HIGHESTMODSEQ counter per user, as well as a single +MAXUIDVALIDITY. Since we always bump the UIDVALIDITY of folders on +rename, create or delete (keeping a tombstone record), we only need to +keep track of two numbers - one for any changes to the folder listing, +and a second for any changes to any mailbox. This allows us to +optimise our web interface significantly (and provide the same +advantages to any future clients that talk to our JSON API directly). + +BUT - if you already control both the client and the server, you can do +whatever you want. If you don't control the client, you probably can't +force it to use your fancy extensions anyway. + +Good luck, +Bron. +-- + Bron Gondwana + brong@fastmail.fm + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22682.mbox:2,S new file mode 100644 index 00000000..3a17a8b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22682.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From imap at maclean.com Tue Mar 5 07:31:33 2013 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Error in RFC 4551 (CONDSTORE)?? +Message-ID: + +At 10:21 AM 3/5/2013, Barry Leiba wrote: +> >> Quoting Pete Maclean : +> >> +> >>> It seems to me that there is an error in Example 5 of section 3.2. It +> >>> reads: +> >>> +> >>> C: c101 STORE 1 (UNCHANGEDSINCE 12121230045) -FLAGS.SILENT +> >>> (\Deleted) +> >>> S: * OK [HIGHESTMODSEQ 12111230047] +> >>> S: * 50 FETCH (MODSEQ (12111230048)) +> >>> S: c101 OK Store (conditional) completed +> >>> +> >>> Surely the message index in the first line (1) should match that in the +> >>> third line (50). +> >> +> >> I think you are correct. The '* 50' response has to relate-back to the +> >> original request since the conditional store was successful (no MODIFIED +> >> response-code was returned) and successful conditional stores MUST return +> >> the FETCH (MODSEQ) data for every message that was changed. +> > +> > You are right, it should be either "STORE 50 ..." or "* 1 FETCH ...". +> +>I suggest "STORE 50", just to avoid making anyone think that "1" is special. +> +>Pete, will you submit an errata report, please?: +>http://www.rfc-editor.org/errata.php + +Good. I had the same idea about "STORE 50" and yes, I will submit a report. + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22685.mbox:2,S new file mode 100644 index 00000000..874bc74b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22685.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Fri Feb 8 12:56:34 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Clarification on RFC 6851 +In-Reply-To: <1360356362.25348.140661188777389.5DDC322F@webmail.messagingengine.com> +References: <51129513.5080905@aol.com> <1360342514.3230.53.camel@hurina> + <1360356362.25348.140661188777389.5DDC322F@webmail.messagingengine.com> +Message-ID: <85789225-4185-487E-B971-4783437732EB@iki.fi> + +On 8.2.2013, at 22.46, Bron Gondwana wrote: + +>> I was waiting for someone else to give a more exact answer, maybe +>> referring to the RFC text, but here's my take on it. I think the only +>> two reasonable server implementations are: +>> +>> a) Return OK if you moved all of the messages, NO if you didn't move +>> anything. (This is similar to how COPY works.) +>> +>> b) Return OK if you moved all messages that currently exist, i.e. you +>> skipped over messages recently expunged by another session. Return NO if +>> you didn't move anything. (I'm not a fan of this implementation.) +> +> Woah. WTF? +> +> UID MOVE 1:* Dest +> +> I think B is the only way that makes sense here. OK for "I moved every existing message matching the selector" and NO for any partial move where a matching message is left in the source mailbox. +> +> If every matching message is not in the source mailbox, then IMHO you're done. If some got expunged before then user intent is that they don't exist any more, so it's "OK" for them to not be in Dest. + +Well, that's not the same as how COPY works, so that would require yet another check for it. I'd have preferred the MOVE spec to require COPY-like behavior.. + +Also somewhat interesting case is what happens if you try to MOVE messages and none of them exist? OK reply without COPYUID tag? NO reply as a special case for this?.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22688.mbox:2,S new file mode 100644 index 00000000..c1d367b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22688.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From dave at cridland.net Sun Jan 13 16:52:02 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> +Message-ID: + +On 13 Jan 2013 19:32, "Ian Anderson" wrote: +> +> I?ve noticed that in some systems when you send a message via SMTP, it +will put a copy in the user?s Sent mailbox. Most of them don?t however, +necessitating that I do an IMAP APPEND to get the message in Sent. Is +there a good/any way to tell when the APPEND is necessary? Right now I?m +doing it all the time which is resulting in double copies in the Sent +mailbox for systems that do it automatically. +> + +No, there isn't, as far as I know. You can, on some systems, tell which is +the Sent mailbox, and you could watch it for a new message, I suppose. I +bet systems supporting special use mailboxes don't do the automatic append, +though. + +On other systems, the "correct" method for sending a message is to first +append it, and then submit by BURL. + +Finally, Alexey had a postaddress extension which allowed you to do the +append by using a special address during submission. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22697.mbox:2,S new file mode 100644 index 00000000..20db027e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22697.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu Dec 6 06:17:24 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: +References: +Message-ID: <50C0A8F4.4070405@isode.com> + +Hi Timo, + +On 04/12/2012 11:12, Timo Sirainen wrote: +> Another BINARY issue not specified by the current BINARY RFC: How to handle fetching BINARY[x] or BINARY.SIZE[x] when the MIME part exists but contains invalid base64/quoted-printable data? The possibilities I think would be: +> +> a) Just ignore the invalid data and reply as best as you can. I'm not sure if this is actually useful in any case since the result will be invalid, and it might even cause security problems in case viruses try to exploit it at some point when virus scanner and IMAP server do the decoding differently. I remember reading a few years ago a lot of reports about this issue. +> +> b) Reply NIL to BINARY[x] and 0 to BINARY.SIZE[x] and overall reply OK to the FETCH. +> +> c) Abort and return NO to the FETCH, similarly to as for [UNKNOWNCTE] handling, except without that resp-code. + +I think both b) and c) would be Ok. But b) is probably less likely to +surprise client authors. + +> I implemented b) today for Dovecot, thinking that it would probably cause less client confusion than c) and would be more secure then a). + +Maybe it is worth to do b) but also return "UNKNOWNCTE"? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22701.mbox:2,S new file mode 100644 index 00000000..fea817ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22701.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Fri Nov 9 13:53:32 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Efficiently handling sequence numbers +In-Reply-To: +References: + + +Message-ID: <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> + +On 9.11.2012, at 23.45, Brandon Long wrote: + +> On Fri, Nov 9, 2012 at 1:37 PM, Timo Sirainen wrote: +> On 9.11.2012, at 23.15, Brandon Long wrote: +> +> > I'm drawing a blank on how to efficiently handle sequence numbers without O(n) operations (where n is the number of messages in a folder). +> +> I don't think it's a real concern. A long time ago I wrote some kind of a binary tree based algorithm to do expunges in O(log n), but eventually I just realized it's way too much trouble (and I'm pretty sure it had some O(n) operations hidden in there at some intervals). Small fixed size records (especially a simple uids[] array) works just fine for probably up to tens of millions of mails, and just about no one has that many mails in one mailbox. +> +> Dovecot nowadays doesn't rewrite the whole index to disk every time you delete a mail. It appends "uid 123 expunged" to a log file and updates the index in memory (memmove()ing data around). Then once in a while it recreates the index. Works nicely. I've wondered about making this two arrays though, so that you'd have the uids[] array and other_fixed_data[] array and expunge would only need to move data in the uids[] array, but I don't know if that really is a good idea. Probably not. +> +> Also large mailboxes could be split to "old mails" and "new mails" indexes. If you have a huge mailbox, it's very unlikely that any old messages get expunged. Then you only need to append to the old index and rewrite the small new index. +> +> So, do you load the full sequence into memory on SELECT? + +Yes, first read/mmap the index snapshot into memory and then apply any expunges and other changes to it from the log. It could be optimized so that all the expunges are done in one O(n) scan of the index instead of multiple separate of memmove()s, but it hasn't been a real problem so far. I don't have the old/new index separation yet, but I think that would be a good idea to add when the mailbox size grows past maybe 100k messages (or maybe even sooner). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22707.mbox:2,S new file mode 100644 index 00000000..630918d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22707.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From tss at iki.fi Wed Oct 10 15:36:28 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] GMail SPECIAL-USE LIST +In-Reply-To: +References: +Message-ID: + +On 11.10.2012, at 1.27, John Galton wrote: + +> Hmm looks like GMail now supports the SPECIAL-USE LIST extension (rfc6154) in addition to their own XLIST command: + +Although the SPECIAL-USE capability itself isn't advertised. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095035.22716.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095035.22716.mbox:2,S new file mode 100644 index 00000000..ecb6d16e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095035.22716.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From tss at iki.fi Mon Sep 10 09:33:32 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Comparators? +Message-ID: <25F5C770-A983-40E7-A075-87A27449240F@iki.fi> + +http://www.iana.org/assignments/collation/collation-index.html + +Looks like there aren't many comparators. I guess there aren't any other such lists either by other organizations? I'm mainly wondering how to add support for languages where the acutes/graves in letters should be ignored by searches. I guess I could simply add some kludgy setting for that, but then I shouldn't be advertising I18NLEVEL=1 anymore, because i;unicode-casemap is no longer being used as the default comparator.. + +Also full text search indexes make the matter of changing comparators or using multiple comparators more-or-less impossible. Of course I18NLEVEL=2 requires that i;unicode-casemap must be one of the available comparators, so I couldn't advertise that either. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22595.mbox:2,S new file mode 100644 index 00000000..5711e507 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22595.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From imantc at gmail.com Tue Mar 10 04:14:27 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> +Message-ID: + +Ok it appears I am not the only one considering current protocol slow. +I read this a while ago so I do not claim to be a discoverer of this +solution. + +This is what D. J. Bernstein apparently wrote: + + +> The bottleneck in mailing list delivery today is SMTP latency. It typically takes more than ten seconds to transfer a message to another Internet host through SMTP. My mail transfer protocol, QMTP, is much faster, but how can qmail tell whether a remote host supports it? Answer: encode the information into the remote host's MX record. A future version of qmail-remote will support this. My target is 100 million remote deliveries per day on a 16MB machine. + +http://cr.yp.to/qmail/future.html + + +> The Quick Mail Transfer Protocol (QMTP) is a replacement for the + Simple Mail Transfer Protocol (SMTP). QMTP eliminates any need for + end-of-line scanning between hosts with the same end-of-line + convention. It features automatic pipelining and chunking, 8-bit + transmission, prior declaration of the message size, and efficient + batching. It is designed to be very easy to implement. + + +http://cr.yp.to/proto/qmtp.txt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22629.mbox:2,S new file mode 100644 index 00000000..38d5bbdc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22629.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From blong at google.com Wed Jul 30 13:23:50 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Another gmail bug +In-Reply-To: +References: +Message-ID: + +bugs filed. + +Brandon + + +On Wed, Jul 30, 2014 at 1:34 AM, Andris Reinman +wrote: + +> Hello, +> +> It seems that recently everyone has been starting to use this mailing list +> as a GMail issue tracker, so heres my findings as well (do not know if +> these are known issues or not). +> +> 1. If you EXAMINE a mailbox and FETCH a message with +> (FLAGS BODY[HEADER.FIELDS ?]) then the returned FLAGS list *always* +> includes the \Seen flag even if the message does not have this flag set. If +> you omit the headers part and just FETCH (FLAGS) then the \Seen flag is +> returned as it should. Notice that I am using BODY and not BODY.PEEK to +> fetch the headers. The actual flags are not changed as the mailbox was +> EXAMINEd not SELECTed but for this call the response includes the invalid +> \Seen. +> +> tag EXAMINE INBOX +> tag FETCH 123 (FLAGS BODY[HEADER.FIELDS (?)) +> * 123 FETCH (FLAGS (\Seen)) +> tag FETCH 123 (FLAGS) +> * 123 FETCH (FLAGS ()) <- no \Seen flag anymore +> +> 2. If you have a message with an message/rfc822 attachment and the +> attached message does not have In-Reply-To set in its headers, then the +> returned ENVELOPE for this attachment uses ?NIL? as a String instead of NIL +> for the In-Reply-To value. +> +> tag FETCH 123 (BODYSTRUCTURE) +> * 123 FETCH (BODYSTRUCTURE ? (?MESSAGE? ?RFC822? ? (NIL NIL ? ?NIL? <- +> Should be NIL, not ?NIL" +> +> I have also set up simple test cases (as node.js scripts) to verify these +> bugs: https://gist.github.com/andris9/592d69a40e970ea32597 +> +> Best regards, +> Andris Reinman +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22641.mbox:2,S new file mode 100644 index 00000000..d09a8712 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22641.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From dave at cridland.net Wed Mar 19 01:52:45 2014 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> +Message-ID: + +On 19 March 2014 02:23, Bron Gondwana wrote: + +> I'd be interested in seeing the actual stats for which clients can be +> convinced by a MITM to give up their credentials in plaintext in their +> default configuration. Don't give me a checkbox which requires the user to +> actively increase the security level, because that won't work. In fact, +> don't even give the user a dialog which allows them to send the password +> insecurely, because they will. +> + +Inky does a single leap-of-faith to handle unverified certificates during +its account setup phase, and won't (ever) send passwords insecurely. This +limits providers alarmingly; many "free with your internet" providers still +seem to insist on cleartext passwords and no TLS. + +The leap-of-faith is needed because it performs RFC 6186 lookups, as well +as heuristic discovery, and providers do not supply verifiable SANs in this +case - that is, Inky's only reference identifiers [RFC 6125] are typically +domains like "fastmail.fm" or "gmail.com" rather than hostnames supplied +directly by the user. + +In these example cases, the provider supplies RFC 6186 records +authoritatively: + +;; ANSWER SECTION: +_imaps._tcp.gmail.com. 86400 IN SRV 5 0 993 imap.gmail.com. +;; ANSWER SECTION: +_imaps._tcp.fastmail.fm. 600 IN SRV 0 1 993 mail.messagingengine.com. + +However trusting these requires either DNSSEC (which I'm not sure either +domain supports; Inky certainly doesn't) or for the certificates to include +an identifier for either the domain (which I don't think they do) or the +service+domain restricted identifier (via sRVNames for example). + +I think a good first step to helping MUA developers rely on a valid trust +path would be to ensure that a valid trust path actually exists (whether +that's via DNSSEC or sRVName SANs). Then you're in a much better position +to denounce the client developers for how awful and slack they are. :-) + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22648.mbox:2,S new file mode 100644 index 00000000..21541c3b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22648.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From barryleiba at computer.org Fri Jan 24 07:47:53 2014 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + <1F07B294-2A10-424C-9299-434013CBEE6D@isode.com> + <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> +Message-ID: + +> I've also been wondering: The RFC on IMAP IDLE does not state it as a +> requirement that servers must (or even should) report flag changes when in +> the IDLE state. + +That's because there isn't an IDLE "state": IDLE is a command that +continues "running", and IMAP servers are supposed to report state +changes while commands are in progress. There's nothing special here +that's different to any other command. If gmail fails to sent state +updates for flag changes during, say, FETCH or APPEND commands, then +they're being consistent (and wrong). If they're doing some special +case for IDLE, then they're being peculiar (and wrong). + +But there's no reason for the IDLE spec to say anything about flag +changes in particular. Head to the base IMAP spec to see what status +updates servers should be reporting. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22665.mbox:2,S new file mode 100644 index 00000000..a01ca9e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22665.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Aug 21 04:20:30 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +Message-ID: <5214A27E.8030300@isode.com> + +On 21/08/2013 11:26, Lasse Jansen wrote: +> Hi, +> +> I'm trying to find out if it's possible to issue multiple non-waiting +> UID SEARCH commands like this: +> +> 1 UID SEARCH UNSEEN +> 2 UID SEARCH FLAGGED +> 3 UID SEARCH DELETED +> +> RFC 3501 says this: +> +> UID SEARCH + UID SEARCH may be valid or invalid as a non-waiting +> command sequence, depending upon whether or not the second UID +> SEARCH contains message sequence numbers. +> As none of the commands contain message sequence numbers, I would say this should be allowed. +> +> With Gmail and Courier-IMAP everything seems to work fine, but with Dovecot, although both the tagged and untagged responses have the correct order within their category in my testing, sometimes an untagged response is sent before the tagged response of the preceding command: +Both are legal. +> +> 1 UID SEARCH UNSEEN +> 2 UID SEARCH FLAGGED +> 3 UID SEARCH DELETED +> * SEARCH 33085 +> 1 OK Search completed (0.000 secs). +> * SEARCH +> * SEARCH +> 2 OK Search completed (0.000 secs). +> 3 OK Search completed (0.000 secs). +> But this should be fine as long as I can rely on the order of the untagged responses. So my questions are: +> +> 1. Is my interpretation correct that the above commands are valid according to the RFC? +> 2. Do you know of any servers that don't respond in the order of the commands? +Servers should not reorder responses to such commands or they will be in +violation of RFC 3501. So yes, you can rely on the order. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22671.mbox:2,S new file mode 100644 index 00000000..70084663 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22671.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From tss at iki.fi Fri Jun 14 05:22:12 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +In-Reply-To: <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> +References: + <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> +Message-ID: <2C3638E0-49E6-4F8B-B998-7923F5FFEA8A@iki.fi> + +On 14.6.2013, at 13.08, Bron Gondwana wrote: + +> We cheat at FastMail - we've got a patched Cyrus server which uses a single HIGHESTMODSEQ counter per user, as well as a single MAXUIDVALIDITY. Since we always bump the UIDVALIDITY of folders on rename, create or delete (keeping a tombstone record), we only need to keep track of two numbers - one for any changes to the folder listing, and a second for any changes to any mailbox. This allows us to optimise our web interface significantly (and provide the same advantages to any future clients that talk to our JSON API directly). + +Won't the UIDVALIDITY change on RENAME invalidate the local cache even for the client that issued the RENAME command? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22682.mbox:2,S new file mode 100644 index 00000000..deec7755 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22682.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From imap at maclean.com Tue Mar 5 12:01:10 2013 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] CONDSTORE question +Message-ID: + +Section 3.3.2 of RFC 4551 states: + + Once the client specified the MODSEQ message data item in a FETCH + request, the server MUST include the MODSEQ fetch response data items + in all subsequent unsolicited FETCH responses. + +I wonder how specific this is intended to be. If I simply have my +server include a MODSEQ on all subsequent unsolicited FETCH responses +once CONDSTORE has been enabled (which a FETCH with a MODSEQ +implicitly serves to do) would that be wrong? Be wasteful? Break +clients left and right? + +Thanks for any guidance, + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22685.mbox:2,S new file mode 100644 index 00000000..10c61227 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22685.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From jkt at flaska.net Fri Feb 8 13:11:00 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC Questions +In-Reply-To: <1360356725.26278.140661188781457.3532161E@webmail.messagingengine.com> +References: <201302081451.r18EpC0d010777@mxout11.cac.washington.edu> + <7237e649-33b3-47fb-a99a-4d3e7f28030f@flaska.net> + <1360356725.26278.140661188781457.3532161E@webmail.messagingengine.com> +Message-ID: <196b59fe-4582-4880-8ce2-b358f1207e15@flaska.net> + +On Friday, 8 February 2013 21:52:05 CEST, Bron Gondwana wrote: +>> I have one suggestion for the actual implementation: please +>> don't ever send EXPUNGE when QRESYNC is enabled, and never +>> reference other UIDs in VANISHED than those which have been +>> just expunged. These restrictions are not mandated by the +>> current version of the RFC, but are very important for clients +>> (they prevent an ambiguous state where the client suddenly +>> doesn't know which UIDs still remain in the mailbox). +> +> This one could be tricky depending on your backend. Cyrus does +> it right for changes, but may need to tell "gaps" during SELECT +> depending on storage settings. + +I meant VANISHED, not VANISHED EARLIER in this context. Sending superfluous UIDs in VANISHED EARLIER doesn't lead to inconsistency. The spec even mentions that this might be required under certain situations (hence the optional facility for telling the server about the client's UID mapping). + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22688.mbox:2,S new file mode 100644 index 00000000..3e5465da --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22688.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From iana at apple.com Mon Jan 14 00:05:39 2013 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> +Message-ID: + +Oh yeah, I didn?t think about BURL. Bleargh. Searching for the message in the Sent mailbox after sending seems rather error prone. What if it takes ten minutes for the message to show up automatically? Maybe an extended SMTP status code from the DATA command would make sense on servers that are going to do the append for you though? + +Ian + +On Jan 13, 2013, at 5:34 PM, Ho? V. Dinh wrote: + +> Maybe you could detect the IMAP server you're dealing with and behaves accordingly to its behaviour. +> An other solution could be to FETCH in the Sent mailbox after the mail has been sent. +> And match the message based on the Message-ID, then, decide whether you really need to APPEND the message. +> +> -- +> Ho? V. Dinh + +On Jan 13, 2013, at 4:52 PM, Dave Cridland wrote: +> No, there isn't, as far as I know. You can, on some systems, tell which is the Sent mailbox, and you could watch it for a new message, I suppose. I bet systems supporting special use mailboxes don't do the automatic append, though. +> +> On other systems, the "correct" method for sending a message is to first append it, and then submit by BURL. +> +> Finally, Alexey had a postaddress extension which allowed you to do the append by using a special address during submission. +> +> Dave. +> + +> On Sunday, January 13, 2013 at 4:43 PM, Ian Anderson wrote: +>> I suppose this might be more likely as an SMTP response code (though I can?t find a defined one) than an IMAP capability or some such, but maybe someone on this list knows anyway? +>> +>> Ian +>> +>> On Jan 13, 2013, at 4:31 PM, Ian Anderson wrote: +>> +>>> I?ve noticed that in some systems when you send a message via SMTP, it will put a copy in the user?s Sent mailbox. Most of them don?t however, necessitating that I do an IMAP APPEND to get the message in Sent. Is there a good/any way to tell when the APPEND is necessary? Right now I?m doing it all the time which is resulting in double copies in the Sent mailbox for systems that do it automatically. +>>> +>>> Ian_______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> +>> Attachments: +>> - smime.p7s +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22697.mbox:2,S new file mode 100644 index 00000000..04dc3433 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22697.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu Dec 6 07:09:40 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] rfc-5258 LIST Command Extensions +In-Reply-To: <26B31F64-2066-43C7-B228-977ABE9AB695@iki.fi> +References: <508841A2.4010602@1und1.de> + <26B31F64-2066-43C7-B228-977ABE9AB695@iki.fi> +Message-ID: <50C0B534.2040807@isode.com> + +On 30/10/2012 17:37, Timo Sirainen wrote: +> On 24.10.2012, at 22.29, Thomas Dressler wrote: +> +>> i am a litle bit confused about some examples in rfc-5258 (page 17): +>> C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*" +>> S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED")) +> .. +>> S: D03 OK done +>> +>> baz2 is returned, and baz2 is not supscribed. +> I don't think it should have been included. It's not entirely wrong for the server to do it, but it's unnecessary when listing a "*". When listing "%" it would have been necessary, otherwise the client wouldn't have known of its children. +Right. Some examples in the document demonstrate valid, but maybe not +entirely expected responses. That was intentional, although the document +should have explained that. +>> i miss the following response: +>> * LIST (\NonExistent) "/" qux2 ("CHILDINFO" ("SUBSCRIBED")) +> This would also need to be returned for %, but for * it's optional (and better if not returned). +> +>> in wich situations should "LIST (RECURSIVEMATCH SUBSCRIBED)" return an mailbox, +>> which is not subscribed? +> When the pattern matches an unsubscribed mailbox, which has subscribed children that don't match the pattern. That's the optimal case. Servers can somewhat easily optimize the % and * cases, but for others it would pretty much require to save the results in a tree structure and based on that figure out which nodes to return to client. If that's too much work, I think it's okay for the server to just return more than necessary (Dovecot does that with some settings). +Agreed. +>> are there some rfc-conform implementations, for testing/orientating? +> I think Dovecot v2.1 returns everything optimally with Maildir backend. See also imaptest's listext test: http://hg.dovecot.org/imaptest/file/62ac822588f0/src/tests/listext +> +>> the second example in rfc-5819 is an invalid commandline (there must be an SP before mailbox): +>> C: A02 LIST (SUBSCRIBED RECURSIVEMATCH)"" % RETURN (STATUS (MESSAGES)) +> You could report this as RFC errata, and maybe the example change also. + +This was already reported: + +http://www.rfc-editor.org/errata_search.php?eid=2072 + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22701.mbox:2,S new file mode 100644 index 00000000..9b4f32e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22701.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From blong at google.com Fri Nov 9 14:05:01 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Efficiently handling sequence numbers +In-Reply-To: <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> +References: + + + <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> +Message-ID: + +On Fri, Nov 9, 2012 at 1:53 PM, Timo Sirainen wrote: + +> On 9.11.2012, at 23.45, Brandon Long wrote: +> +> > On Fri, Nov 9, 2012 at 1:37 PM, Timo Sirainen wrote: +> > On 9.11.2012, at 23.15, Brandon Long wrote: +> > +> > > I'm drawing a blank on how to efficiently handle sequence numbers +> without O(n) operations (where n is the number of messages in a folder). +> > +> > I don't think it's a real concern. A long time ago I wrote some kind of +> a binary tree based algorithm to do expunges in O(log n), but eventually I +> just realized it's way too much trouble (and I'm pretty sure it had some +> O(n) operations hidden in there at some intervals). Small fixed size +> records (especially a simple uids[] array) works just fine for probably up +> to tens of millions of mails, and just about no one has that many mails in +> one mailbox. +> > +> > Dovecot nowadays doesn't rewrite the whole index to disk every time you +> delete a mail. It appends "uid 123 expunged" to a log file and updates the +> index in memory (memmove()ing data around). Then once in a while it +> recreates the index. Works nicely. I've wondered about making this two +> arrays though, so that you'd have the uids[] array and other_fixed_data[] +> array and expunge would only need to move data in the uids[] array, but I +> don't know if that really is a good idea. Probably not. +> > +> > Also large mailboxes could be split to "old mails" and "new mails" +> indexes. If you have a huge mailbox, it's very unlikely that any old +> messages get expunged. Then you only need to append to the old index and +> rewrite the small new index. +> > +> > So, do you load the full sequence into memory on SELECT? +> +> Yes, first read/mmap the index snapshot into memory and then apply any +> expunges and other changes to it from the log. It could be optimized so +> that all the expunges are done in one O(n) scan of the index instead of +> multiple separate of memmove()s, but it hasn't been a real problem so far. +> I don't have the old/new index separation yet, but I think that would be a +> good idea to add when the mailbox size grows past maybe 100k messages (or +> maybe even sooner). +> +> +Ah, ok. If only loading the data was as simple as an mmap for us ;) At +this point, I think the data only moves through 5 separate servers on 4 +machines, usually in the same data center though. That, and of course we +don't use UIDs as our primary message-id, so we're looking at 32 bits for +the uid and 64 bits for the message-id, so 96 bits minimum per message, +which means a 10M message folder is loading 120MB, probably another 30MB of +overhead in protocol buffers (not really meant for millions of entries). + +Brandon +My other computer is a datacenter +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22707.mbox:2,S new file mode 100644 index 00000000..5e2da70e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22707.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From iana at apple.com Wed Oct 10 15:53:09 2012 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] GMail SPECIAL-USE LIST +In-Reply-To: +References: + +Message-ID: <9CD3AECA-5993-40DD-B971-8A2DF75B3A94@apple.com> + +RFC 6154 is "theirs" as well considering the authors. ;-) Section 2 does say this. +There is no capability string related to the support of special-use attributes on the non-extended LIST command. + +So it seems right that there's no advertised capability. + +Ian + +On Oct 10, 2012, at 3:36 PM, Timo Sirainen wrote: + +> On 11.10.2012, at 1.27, John Galton wrote: +> +>> Hmm looks like GMail now supports the SPECIAL-USE LIST extension (rfc6154) in addition to their own XLIST command: +> +> Although the SPECIAL-USE capability itself isn't advertised. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22716.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22716.mbox:2,S new file mode 100644 index 00000000..18b7d07b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22716.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From alexey.melnikov at isode.com Mon Sep 10 11:33:51 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Comparators? +In-Reply-To: <25F5C770-A983-40E7-A075-87A27449240F@iki.fi> +References: <25F5C770-A983-40E7-A075-87A27449240F@iki.fi> +Message-ID: <504E328F.7030000@isode.com> + +Hi Timo, + +On 10/09/2012 17:33, Timo Sirainen wrote: +> http://www.iana.org/assignments/collation/collation-index.html +> +> Looks like there aren't many comparators. I guess there aren't any other such lists either by other organizations? +I am not aware of any. + +The only other comparator which is not registered that was discussed +recently is a numeric one which can also handle negative integers. +> I'm mainly wondering how to add support for languages where the acutes/graves in letters should be ignored by searches. +If you write it down, I will review and can find other reviewers. I +don't think this is the first time this was proposed, so maybe there is +some utility in it. +> I guess I could simply add some kludgy setting for that, but then I shouldn't be advertising I18NLEVEL=1 anymore, because i;unicode-casemap is no longer being used as the default comparator.. +> +> Also full text search indexes make the matter of changing comparators or using multiple comparators more-or-less impossible. Of course I18NLEVEL=2 requires that i;unicode-casemap must be one of the available comparators, so I couldn't advertise that either. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095036.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095036.22719.mbox:2,S new file mode 100644 index 00000000..ecaedc4f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095036.22719.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From tss at iki.fi Fri Aug 10 19:39:17 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + multiparts +Message-ID: <283BA59D-2B55-4E29-BD2F-D3C392D2E673@iki.fi> + +How do servers currently handle if you try to fetch more than just a single body part? For example: + +a FETCH 1 BINARY[] + +for a message that contains base64-encoded MIME parts. Do you change the MIME headers' Content-Transfer-Encoding value to "binary"? Or do you just return NO to the command? I implemented the former, but the RFC doesn't seem to require it. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22595.mbox:2,S new file mode 100644 index 00000000..f6ad6902 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22595.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From imantc at gmail.com Tue Mar 10 04:29:50 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> +Message-ID: + +> benchmarking a recent version of one of the popular Linux mail servers at first (perhaps Postfix with Dovecot or Cyrus) + +I tried to set up and configure this exact combination for virtual +hosting. It took me a long time and in the end I gave up. Yes, I +understand someone somewhere succeeded to configure it. My point is +not that it is impossible to set it up. + +My point (well, other than speed, robustness & simplicity) is that +with simplifed protocols though we could have more servers, a choice +between servers & configurations, supporting multitude of storage +backends. + +Wouldn't it be nice - to choose? eh? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22629.mbox:2,S new file mode 100644 index 00000000..acd56383 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22629.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jul 30 23:59:56 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + + <9b80c7bb-b901-4e52-a3ab-db7bee7018aa@gulbrandsen.priv.no> + +Message-ID: + +On Wednesday, July 30, 2014 7:04:01 PM CEST, Davide Gullo wrote: +> I follow the rfc3501 and in the 7.4.2 section you can read: +> +> RFC822 +> Equivalent to BODY[]. + +I see now. I was confused by the way you issued both body[...]/envelope and +rfc822, sorry. + +Why do you want to download e.g. the From address twice? + +> What is a "good client"? + +Same as for every network protocol: One that downloads little more than it +uses, that doesn't send unnecessary commands, that chooses efficient and +effective commands for its purpose, and that avoids making its user wait +for the network. + +Most clients have both good and bad aspects. For example, the client I'm +using to type this only downloads one copy of the From address for a +message, and doesn't download large attachments unless I need those +attachments: Good. But it's also checked the number of messages in the +Drafts folder dozens of time while I was sleeping in my bed tonight: Bad. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22641.mbox:2,S new file mode 100644 index 00000000..23f795fc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22641.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From dave at cridland.net Wed Mar 19 01:57:25 2014 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> +Message-ID: + +On 19 March 2014 03:00, Lyndon Nerenberg wrote: + +> +> On Mar 18, 2014, at 7:23 PM, Bron Gondwana wrote: +> +> > So why is 993 deprecated rather than STARTTLS deprecated now? STARTTLS +> is _still_ a bad idea. +> +> That seemed to be a political argument within disparate IETF WGs. +> Begrudgingly I would nominate Chris to talk about that history, as I +> recall he was involved (or argued) during the period. But I also know many +> people want to forget about it. I just ignored the whole thing due to the +> in-fighting. +> +> Okay, not completely. I was discouraging against SSL on 993 for one main +> reason: +> +> If SSL is proven broken, where do we go? Another port for another +> encryption layer? How does that scale? +> +> And I think that was the crux of the overall IETF argument against +> allocating dedicated ports to dedicated SSL versions of the existing +> protocols. SRV was supposed to mitigate against that, but SRV hasn't taken +> over the protocol developer community. +> +> +The main argument was mostly that TLS wasn't seen as the sole encryption +method, and it was possible (and in fact quite common at one stage) to find +better security via SASL security layers than by (export grade) TLS. + +That argument has gone, I think. + +The other argument relates to port number exhaustion, which turned out to +be unimportant because everyone uses either 80 or 443 these days. + +It's possible that revisiting the issue might prove interesting. + +I don't think that it's worth worrying over TLS breaking, though, I think +the custodians of that protocol are well able to maintain some kind of +upgrade path. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22648.mbox:2,S new file mode 100644 index 00000000..ff6605dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22648.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From dave at cridland.net Fri Jan 24 08:07:26 2014 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + +Message-ID: + +That implies you'd expect flag changes to be sent during other commands, +like NOOP etc? I thought Gmail never sent any unsolicited flag changes at +all - am I wrong? + + +On Thu, Jan 23, 2014 at 9:32 PM, Brandon Long wrote: + +> Yes, gmail currently only notifies of new messages and expunged messages +> during idle. +> +> Brandon +> On Jan 23, 2014 1:26 PM, "Rick Sanders" wrote: +> +>> Is it true that Gmail does not send notification to a client which is +>> idling on a mailbox? +>> +>> I ran across that while testing some code that detects flag changes using +>> IDLE and I was surprised that I did not get anything from Gmail. +>> +>> Google searches suggest that's the case. +>> +>> Thanks, +>> Rick +>> +>> -- +>> Rick Sanders +>> rfs9999@earthlink.net +>> IMAP Tools http://www.athensfbc.com/imap-tools +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22665.mbox:2,S new file mode 100644 index 00000000..ce4a2b13 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22665.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From jkt at flaska.net Wed Aug 21 05:29:05 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> +Message-ID: <13d1f255-73e7-4bfd-83ec-bfc1bd5278e6@flaska.net> + +On Wednesday, 21 August 2013 12:26:50 CEST, Lasse Jansen wrote: +> As none of the commands contain message sequence numbers, I +> would say this should be allowed. + +In my understanding of the RFC, even though you are allowed to send this, +the result you get might not match your expectations, as others have +explained in this thread. + +The command to implement here is ESEARCH which: + +a) solves your pipelining problem neatly and properly, +b) allows for further compression of the result via the min:max syntax, +c) is nowadays supported even by GMail + +Furthermore, if your IMAP server supports CONDSTORE (again, GMail nowadays +does), you can save yourself some traffic during the flag resynchronization +by using FETCH CHANGEDSINCE. + +There is one more uncertainity with the SEARCH response -- some sources +(see the whole thread at [1]) support the interpretation that it is OK to +actually send the SEARCH data for a single command split into multiple +responses which are to be joined by the client. I wonder if this is valid. +My understanding of RFC3501 wording is that such behavior is *not* correct +and that there should always be exactly one SEARCH response to each SEARCH +command, but my client will join them anyway. I wasn't able to pinpoint +some authoritative source which made me change this, unfortunately. + +With kind regards, +Jan + +[1] http://www.mail-archive.com/imap@u.washington.edu/msg02127.html + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22671.mbox:2,S new file mode 100644 index 00000000..06bf2f0d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22671.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From brong at fastmail.fm Fri Jun 14 05:36:38 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +In-Reply-To: <2C3638E0-49E6-4F8B-B998-7923F5FFEA8A@iki.fi> +References: + <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> + <2C3638E0-49E6-4F8B-B998-7923F5FFEA8A@iki.fi> +Message-ID: <1371213398.8438.140661243890973.11ABE89B@webmail.messagingengine.com> + +On Fri, Jun 14, 2013, at 10:22 PM, Timo Sirainen wrote: +> On 14.6.2013, at 13.08, Bron Gondwana wrote: +> +> > We cheat at FastMail - we've got a patched Cyrus server which uses a single HIGHESTMODSEQ counter per user, as well as a single MAXUIDVALIDITY. Since we always bump the UIDVALIDITY of folders on rename, create or delete (keeping a tombstone record), we only need to keep track of two numbers - one for any changes to the folder listing, and a second for any changes to any mailbox. This allows us to optimise our web interface significantly (and provide the same advantages to any future clients that talk to our JSON API directly). +> +> Won't the UIDVALIDITY change on RENAME invalidate the local cache even for the client that issued the RENAME command? + +It has no guarantee anyway. You can't keep the UIDVALIDITY on rename if the destination name previously existed with that same UIDVALIDITY. Which means it either has to either trust that it's still the same folder after rename... + +Anyway, rename of folders is a pretty rare case all around, so I'm not super concerned about it. We could probably bump the MAXUIDVALIDITY without actually changing the folder's UIDVALIDITY and it will still work though. I can do that now that we're tracking deleted folder UIDVALIDITY. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22682.mbox:2,S new file mode 100644 index 00000000..e3126196 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22682.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tss at iki.fi Tue Mar 5 12:20:58 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] CONDSTORE question +In-Reply-To: <201303052001.r25K1hGk022426@mxout14.cac.washington.edu> +References: <201303052001.r25K1hGk022426@mxout14.cac.washington.edu> +Message-ID: <2A78534C-8CFD-42D5-BC70-6C54A92FDF16@iki.fi> + +On 5.3.2013, at 22.01, Pete Maclean wrote: + +> Section 3.3.2 of RFC 4551 states: +> +> Once the client specified the MODSEQ message data item in a FETCH +> request, the server MUST include the MODSEQ fetch response data items +> in all subsequent unsolicited FETCH responses. +> +> I wonder how specific this is intended to be. If I simply have my server include a MODSEQ on all subsequent unsolicited FETCH responses once CONDSTORE has been enabled (which a FETCH with a MODSEQ implicitly serves to do) would that be wrong? Be wasteful? Break clients left and right? + +Aren't you saying here exactly the same thing as the RFC? Or did you mean that all subsequent untagged FETCH responses, unsolicited and solicited? Anyway I doubt it would break anything if all FETCH responses had MODSEQs other than possibly being a little bit wasteful. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22685.mbox:2,S new file mode 100644 index 00000000..4510b53c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22685.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From dave at cridland.net Fri Feb 8 13:16:26 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Clarification on RFC 6851 +In-Reply-To: <85789225-4185-487E-B971-4783437732EB@iki.fi> +References: <51129513.5080905@aol.com> <1360342514.3230.53.camel@hurina> + <1360356362.25348.140661188777389.5DDC322F@webmail.messagingengine.com> + <85789225-4185-487E-B971-4783437732EB@iki.fi> +Message-ID: + +My take: + +Say NO if no messages were moved. (For whatever reason). + +Say OK if some were. (Typically all extant messages in the range). + +Rationale: You need to put in response codes in various places; it's not +clear to me you can put a HIGHESTMODSEQ in a NO response. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22688.mbox:2,S new file mode 100644 index 00000000..18ca324e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22688.mbox:2,S @@ -0,0 +1,107 @@ +MBOX-Line: From tss at iki.fi Mon Jan 14 00:33:46 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + +Message-ID: <1358152426.27730.105.camel@innu> + +I doubt you could get such DATA response a) standardized and especially +b) implemented by server admins. Or are you thinking about some specific +large email provider that does this? I'm not aware of any provider that +does this. + +I think BURL is going to become much more available at least in server +side within a few years. + +On Mon, 2013-01-14 at 00:05 -0800, Ian Anderson wrote: +> Oh yeah, I didn?t think about BURL. Bleargh. Searching for the +> message in the Sent mailbox after sending seems rather error prone. +> What if it takes ten minutes for the message to show up +> automatically? Maybe an extended SMTP status code from the DATA +> command would make sense on servers that are going to do the append +> for you though? +> +> +> Ian +> +> On Jan 13, 2013, at 5:34 PM, Ho? V. Dinh +> wrote: +> +> > Maybe you could detect the IMAP server you're dealing with and +> > behaves accordingly to its behaviour. +> > An other solution could be to FETCH in the Sent mailbox after the +> > mail has been sent. +> > And match the message based on the Message-ID, then, decide whether +> > you really need to APPEND the message. +> > +> > +> > -- +> > Ho? V. Dinh +> +> +> On Jan 13, 2013, at 4:52 PM, Dave Cridland wrote: +> +> > No, there isn't, as far as I know. You can, on some systems, tell +> > which is the Sent mailbox, and you could watch it for a new message, +> > I suppose. I bet systems supporting special use mailboxes don't do +> > the automatic append, though. +> > +> > On other systems, the "correct" method for sending a message is to +> > first append it, and then submit by BURL. +> > +> > Finally, Alexey had a postaddress extension which allowed you to do +> > the append by using a special address during submission. +> > +> > Dave. +> > +> +> > On Sunday, January 13, 2013 at 4:43 PM, Ian Anderson wrote: +> > > I suppose this might be more likely as an SMTP response code +> > > (though I can?t find a defined one) than an IMAP capability or +> > > some such, but maybe someone on this list knows anyway? +> > > +> > > +> > > +> > > Ian +> > > +> > > +> > > On Jan 13, 2013, at 4:31 PM, Ian Anderson wrote: +> > > +> > > +> > > > I?ve noticed that in some systems when you send a message via +> > > > SMTP, it will put a copy in the user?s Sent mailbox. Most of +> > > > them don?t however, necessitating that I do an IMAP APPEND to +> > > > get the message in Sent. Is there a good/any way to tell when +> > > > the APPEND is necessary? Right now I?m doing it all the time +> > > > which is resulting in double copies in the Sent mailbox for +> > > > systems that do it automatically. +> > > > +> > > > +> > > > Ian_______________________________________________ +> > > > Imap-protocol mailing list +> > > > Imap-protocol@u.washington.edu +> > > > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> > > _______________________________________________ +> > > Imap-protocol mailing list +> > > Imap-protocol@u.washington.edu +> > > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> > > +> > > +> > > Attachments: +> > > - smime.p7s +> > +> > +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22697.mbox:2,S new file mode 100644 index 00000000..5b1d20e1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22697.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From iana at apple.com Mon Dec 10 14:54:06 2012 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] RFC 6154 (SPECIAL-USE) and \Important +Message-ID: + +I notice that Gmail is including \Important in the result from the LIST command. + +* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important" + +I don?t see that documented in RFC 6154, is that in another RFC? Or documented anywhere? + +Ian +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22701.mbox:2,S new file mode 100644 index 00000000..743eda73 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22701.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From tss at iki.fi Fri Nov 9 14:16:19 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Efficiently handling sequence numbers +In-Reply-To: +References: + + + <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> + +Message-ID: <9B0A7B09-AF1D-41E5-A87E-7BD3A6A05DB2@iki.fi> + +On 10.11.2012, at 0.05, Brandon Long wrote: + +> > So, do you load the full sequence into memory on SELECT? +> +> Yes, first read/mmap the index snapshot into memory and then apply any expunges and other changes to it from the log. It could be optimized so that all the expunges are done in one O(n) scan of the index instead of multiple separate of memmove()s, but it hasn't been a real problem so far. I don't have the old/new index separation yet, but I think that would be a good idea to add when the mailbox size grows past maybe 100k messages (or maybe even sooner). +> +> +> Ah, ok. If only loading the data was as simple as an mmap for us ;) At this point, I think the data only moves through 5 separate servers on 4 machines, usually in the same data center though. That, and of course we don't use UIDs as our primary message-id, so we're looking at 32 bits for the uid and 64 bits for the message-id, so 96 bits minimum per message, which means a 10M message folder is loading 120MB, probably another 30MB of overhead in protocol buffers (not really meant for millions of entries). + +Sure, Dovecot has also similar extra metadata, more or less depending on the mailbox format. Keep the user typically assigned to the same backend server and you need to fetch the 120MB only once (or somewhat rarely). Send the data back in smaller diffs to avoid constantly re-uploading the whole 120MB file when it changes. I've been working on an object storage optimized backend for Dovecot these last few months. I think it could work well for GMail as well ;) + +Anyway, like I mentioned several times already :), I think the most important optimization for huge mailboxes is the separation of old/new data. You most likely don't need to even download/read the old data normally. (Although many IMAP clients fetch 1:* flags after SELECT, but even if IMAP server had no problems with that, the IMAP client would probably be unusably slow so that's not a real problem.) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22707.mbox:2,S new file mode 100644 index 00000000..c45f275a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22707.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From blong at google.com Mon Oct 15 13:45:50 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] GMail SPECIAL-USE LIST +In-Reply-To: <9CD3AECA-5993-40DD-B971-8A2DF75B3A94@apple.com> +References: + + <9CD3AECA-5993-40DD-B971-8A2DF75B3A94@apple.com> +Message-ID: + +For those keeping track at home, we had to revert this because a minor +phone client wasn't able to handle the extended syntax, hard coding a small +set of acceptable list-flags. We'll probably re-enable it as soon as they +have a fix. + +Brandon + +On Wed, Oct 10, 2012 at 3:53 PM, Ian Anderson wrote: + +> RFC 6154 is "theirs" as well considering the authors. ;-) Section 2 does +> say this. +> There is no capability string related to the support of special-use +> attributes on the non-extended LIST command. +> +> So it seems right that there's no advertised capability. +> +> Ian +> +> On Oct 10, 2012, at 3:36 PM, Timo Sirainen wrote: +> +> > On 11.10.2012, at 1.27, John Galton wrote: +> > +> >> Hmm looks like GMail now supports the SPECIAL-USE LIST extension +> (rfc6154) in addition to their own XLIST command: +> > +> > Although the SPECIAL-USE capability itself isn't advertised. +> > +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22716.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22716.mbox:2,S new file mode 100644 index 00000000..2d3eb962 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22716.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From tss at iki.fi Fri Sep 14 12:52:54 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Comparators? +In-Reply-To: <504E328F.7030000@isode.com> +References: <25F5C770-A983-40E7-A075-87A27449240F@iki.fi> + <504E328F.7030000@isode.com> +Message-ID: + +On 10.9.2012, at 21.33, Alexey Melnikov wrote: + +>> I'm mainly wondering how to add support for languages where the acutes/graves in letters should be ignored by searches. +> If you write it down, I will review and can find other reviewers. I don't think this is the first time this was proposed, so maybe there is some utility in it. + +Looks like i;unicode-casemap could already optionally do that, according to its security section: + +> 2) Step (2)(b) defines a subset of Normalization Form KD (NFKD) that +> does not require normalization of out-of-order diacriticals. +> However, an implementation MAY use an NFKD library routine that +> does such normalization. This impacts step (2)(b) and possibly +> also step (1)(a), and is an issue only with ill-formed UTF-8 +> input. + +I'm thinking about just using Lucene's ICUFoldingFilterFactory for this. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095037.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095037.22719.mbox:2,S new file mode 100644 index 00000000..02db6705 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095037.22719.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From lyndon at orthanc.ca Sat Aug 11 08:43:32 2012 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + multiparts +In-Reply-To: <283BA59D-2B55-4E29-BD2F-D3C392D2E673@iki.fi> +References: <283BA59D-2B55-4E29-BD2F-D3C392D2E673@iki.fi> +Message-ID: + + +On 2012-08-10, at 19:39 PM, Timo Sirainen wrote: + +> for a message that contains base64-encoded MIME parts. Do you change the MIME headers' Content-Transfer-Encoding value to "binary"? Or do you just return NO to the command? I implemented the former, but the RFC doesn't seem to require it. + +If you convert the MIME part to binary encoding, you have to change the CTE header's value, else you have an invalid MIME object. + +I was very uncomfortable about this sort of body content re-writing, and wanted to restrict binary fetch to terminal MIME body parts. In fact, I had thought that's how I had written the spec ? shows you how long it's been since I read the RFC. So either somebody talked me out of that restriction, or I just screwed up and forgot to include it in the document :-P + +But given what's there today, "Fetch 1 Binary []" is a valid command in the fact of nested body content, so if it's not too hard to do the CTE rewrite, you might as well do it. But I would strongly advise client authors to restrict binary fetches to terminal body parts, as the behaviour of fetching non-terminals is going to be unpredictable. + +--lyndon + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 858 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22595.mbox:2,S new file mode 100644 index 00000000..d8c2c464 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22595.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From jkt at flaska.net Tue Mar 10 04:40:28 2015 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?If_Crispin_were_creating_IMAP_toda?= + =?iso-8859-1?q?y_how_would_it_be_different=3F?= +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> + +Message-ID: + +On Tuesday, 10 March 2015 12:29:50 CET, Imants Cekusins wrote: +> My point (well, other than speed, robustness & simplicity) is that +> with simplifed protocols though we could have more servers, a choice +> between servers & configurations, supporting multitude of storage +> backends. +> +> Wouldn't it be nice - to choose? eh? + +I see plenty of choice at e.g. [1]. + +What I suspect is that you might have had bad experience with performance +of a random mail server, and are drawing conclusion from there. Sure, +optimizing raw performance of a given protocol is nice (and being done, see +BDAT and other examples people have mentioned), but maybe the actual +reasons for slowness are somewhere else but in the live transformation of +incoming bytestream? + +Cheers, +Jan + +[1] http://en.wikipedia.org/wiki/List_of_mail_servers + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22629.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22629.mbox:2,S new file mode 100644 index 00000000..6faa21cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22629.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From gullo at m4ss.net Thu Jul 31 03:47:28 2014 +To: imap-protocol@u.washington.edu +From: Davide Gullo +Date: Fri Jun 8 12:34:53 2018 +Subject: [Imap-protocol] Gmail size fail +In-Reply-To: +References: + + + <20140729163645.Horde.h5gjOOLwGbpVI_dHXPMKnQ6@bigworm.curecanti.org> + + + <42e6254c-76ec-4d2e-8f95-5dc407db8eea@flaska.net> + + <9b80c7bb-b901-4e52-a3ab-db7bee7018aa@gulbrandsen.priv.no> + + +Message-ID: + +@Arnt +it is not a client. It is the app "BackUp Gmail" for OSX so it needs to +download the complete RFC822 field to store all the content in an eml file. + +@Jan +Yes, sorry. I realized the real error just after your first email in this +thread. Thanks! + + + +2014-07-31 8:59 GMT+02:00 Arnt Gulbrandsen : + +> On Wednesday, July 30, 2014 7:04:01 PM CEST, Davide Gullo wrote: +> +>> I follow the rfc3501 and in the 7.4.2 section you can read: +>> +>> RFC822 +>> Equivalent to BODY[]. +>> +> +> I see now. I was confused by the way you issued both body[...]/envelope +> and rfc822, sorry. +> +> Why do you want to download e.g. the From address twice? +> +> +> What is a "good client"? +>> +> +> Same as for every network protocol: One that downloads little more than it +> uses, that doesn't send unnecessary commands, that chooses efficient and +> effective commands for its purpose, and that avoids making its user wait +> for the network. +> +> Most clients have both good and bad aspects. For example, the client I'm +> using to type this only downloads one copy of the From address for a +> message, and doesn't download large attachments unless I need those +> attachments: Good. But it's also checked the number of messages in the +> Drafts folder dozens of time while I was sleeping in my bed tonight: Bad. +> +> +> Arnt +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> + + + +-- +Davide Gullo, Consulente Web (professionista disciplinato ai sensi della +legge 4/2013) +http://www.m4ss.net +gullo@m4ss.net +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22641.mbox:2,S new file mode 100644 index 00000000..0cec4cca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22641.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From dot at dotat.at Wed Mar 19 03:08:05 2014 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> +Message-ID: + +Bron Gondwana wrote: +> On Wed, Mar 19, 2014, at 08:25 AM, Michael M Slusarz wrote: +> > +> > STARTTLS deprecated the use of port 993, which isn't an official IMAP +> > port FWIW. + +What do you mean by "official"? Have you seen RFC 6186? + +> > It hasn't really happened, but still is good to avoid and end users +> > appreciate it when they don't have to have any knowledge of port +> > number. +> +> I can't understand how STARTTLS ever got floated as an idea. It's +> totally insane. + +Well RFC 2595 gives some reasons... + +I get the impression that the UTA working group is likely to prefer +TLS-on-connect over STARTTLS. + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +Wight, Portland: Southwest backing south 4 or 5, occasionally 6. Slight or +moderate. Fair. Moderate or good. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22648.mbox:2,S new file mode 100644 index 00000000..f5a35d33 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22648.mbox:2,S @@ -0,0 +1,79 @@ +MBOX-Line: From blong at google.com Fri Jan 24 11:16:52 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + +Message-ID: + +The RFC only says SHOULD, ie: + + Server + implementations that offer multiple simultaneous access to the same + mailbox SHOULD also send appropriate unilateral untagged FETCH and + EXPUNGE responses if another agent changes the state of any message + flags or expunges any messages + + +Currently, Gmail never sends unsolicited untagged FETCH responses. This +has been documented in our help center since day one, ie: +https://support.google.com/mail/answer/78761?hl=en&ref_topic=3397501 + +This was done due to the expensive nature of providing that feature with +the capabilities our backend had. We've been working on adding support for +this for some time, but I'm not sure when/if it will ever launch. + +Brandon + + +On Fri, Jan 24, 2014 at 8:07 AM, Dave Cridland wrote: + +> That implies you'd expect flag changes to be sent during other commands, +> like NOOP etc? I thought Gmail never sent any unsolicited flag changes at +> all - am I wrong? +> +> +> On Thu, Jan 23, 2014 at 9:32 PM, Brandon Long wrote: +> +>> Yes, gmail currently only notifies of new messages and expunged messages +>> during idle. +>> +>> Brandon +>> On Jan 23, 2014 1:26 PM, "Rick Sanders" wrote: +>> +>>> Is it true that Gmail does not send notification to a client which is +>>> idling on a mailbox? +>>> +>>> I ran across that while testing some code that detects flag changes +>>> using IDLE and I was surprised that I did not get anything from Gmail. +>>> +>>> Google searches suggest that's the case. +>>> +>>> Thanks, +>>> Rick +>>> +>>> -- +>>> Rick Sanders +>>> rfs9999@earthlink.net +>>> IMAP Tools http://www.athensfbc.com/imap-tools +>>> _______________________________________________ +>>> Imap-protocol mailing list +>>> Imap-protocol@u.washington.edu +>>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22665.mbox:2,S new file mode 100644 index 00000000..58e27ffe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22665.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From lasse at lasselog.com Wed Aug 21 05:58:31 2013 +To: imap-protocol@u.washington.edu +From: Lasse Jansen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <13d1f255-73e7-4bfd-83ec-bfc1bd5278e6@flaska.net> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <13d1f255-73e7-4bfd-83ec-bfc1bd5278e6@flaska.net> +Message-ID: <3DD9D698-0FD3-40AD-BB02-81ED3224CA84@lasselog.com> + +Ok, cool. So it looks like my fallback option will stay non-pipelined UID SEARCH and I'll need to decide if I use pipelined ESEARCH or CONDSTORE as optimized version. + + +Thanks all! +Lasse + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22671.mbox:2,S new file mode 100644 index 00000000..13cdc9af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22671.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Fri Jun 14 10:55:20 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +In-Reply-To: <1371213398.8438.140661243890973.11ABE89B@webmail.messagingengine.com> +References: + <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> + <2C3638E0-49E6-4F8B-B998-7923F5FFEA8A@iki.fi> + <1371213398.8438.140661243890973.11ABE89B@webmail.messagingengine.com> +Message-ID: <6F96B898-B612-4272-B322-7A693E1CE35D@iki.fi> + +On 14.6.2013, at 15.36, Bron Gondwana wrote: + +> On Fri, Jun 14, 2013, at 10:22 PM, Timo Sirainen wrote: +>> On 14.6.2013, at 13.08, Bron Gondwana wrote: +>> +>>> We cheat at FastMail - we've got a patched Cyrus server which uses a single HIGHESTMODSEQ counter per user, as well as a single MAXUIDVALIDITY. Since we always bump the UIDVALIDITY of folders on rename, create or delete (keeping a tombstone record), we only need to keep track of two numbers - one for any changes to the folder listing, and a second for any changes to any mailbox. This allows us to optimise our web interface significantly (and provide the same advantages to any future clients that talk to our JSON API directly). +>> +>> Won't the UIDVALIDITY change on RENAME invalidate the local cache even for the client that issued the RENAME command? +> +> It has no guarantee anyway. You can't keep the UIDVALIDITY on rename if the destination name previously existed with that same UIDVALIDITY. Which means it either has to either trust that it's still the same folder after rename? + +I'm increasing UIDVALIDITY every time a new mailbox is created, so no two mailboxes have the same. This avoids conflicts with RENAME. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22682.mbox:2,S new file mode 100644 index 00000000..a41b872c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22682.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From jjmckay at comaxis.com Wed Mar 6 17:18:52 2013 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Yahoo Imap 'Bad Sequence' error +Message-ID: <5137EAFC.7070302@comaxis.com> + +Working with Yahoo's imap server, I have code that just does a bunch of +FETCH commands of the +inbox, until they are all downloaded. In one case, the inbox has 69000+ +messages. My code starts +at the highest, and works downward. After 45 successful message +downloads, Yahoo responds to +the fetch command with "BAD [CLIENTBUG] FETCH Bad sequence in the command". + +Anybody know what this means? I have had no problem with this code when +connected to other +imap servers. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22685.mbox:2,S new file mode 100644 index 00000000..4daa51c9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22685.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From slusarz at curecanti.org Fri Feb 8 14:05:07 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC Questions +In-Reply-To: <1360356725.26278.140661188781457.3532161E@webmail.messagingengine.com> +References: <201302081451.r18EpC0d010777@mxout11.cac.washington.edu> + <7237e649-33b3-47fb-a99a-4d3e7f28030f@flaska.net> + <1360356725.26278.140661188781457.3532161E@webmail.messagingengine.com> +Message-ID: <20130208150507.Horde.lf3D8gdWBQ-bpWCXHv1Xug4@bigworm.curecanti.org> + +Quoting Bron Gondwana : + +> On Sat, Feb 9, 2013, at 02:06 AM, Jan Kundr?t wrote: +>> On Friday, 8 February 2013 15:50:38 CEST, Pete Maclean wrote: +>> > When a client has not enabled CONDSTORE and sends an ENABLE +>> > QRESYNC command to a server that advertises QRESYNC capability, +>> > should the untagged response say "* ENABLED QRESYNC" or "* +>> > ENABLED QRESYNC CONDSTORE"? My reading of the spec tells me the +>> > latter but I observe that another server sends the former. +>> +>> I believe that both of these are compliant. I haven't found a +>> definitive answer on this in either 5161 (ENABLE) or 5162 (QRESYNC) +>> RFCs. +> +> Cyrus does the latter. I also agree it is the correct way. + + From a client's POV, it shouldn't matter. It is crystal clear in the +RFC that QRESYNC implies CONDSTORE, so the second QRESYNC is seen in +an ENABLED response a client should automatically add CONDSTORE to the +current capability list. + +But the better-safe-than-sorry approach is to include both since it +would workaround potentially broken clients and nobody is going to +fret over the additional 10 bytes anyway. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22688.mbox:2,S new file mode 100644 index 00000000..b8368a29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22688.mbox:2,S @@ -0,0 +1,100 @@ +MBOX-Line: From iana at apple.com Mon Jan 14 00:37:21 2013 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <1358152426.27730.105.camel@innu> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> +Message-ID: <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + +I haven?t tested it, but I hear that FastMail, Tuffmail, Gmail, 126, and 163 all do this. (Some of those may have since stopped, my data?s a bit old.) + +Ian + +On Jan 14, 2013, at 12:33 AM, Timo Sirainen wrote: + +> I doubt you could get such DATA response a) standardized and especially +> b) implemented by server admins. Or are you thinking about some specific +> large email provider that does this? I'm not aware of any provider that +> does this. +> +> I think BURL is going to become much more available at least in server +> side within a few years. +> +> On Mon, 2013-01-14 at 00:05 -0800, Ian Anderson wrote: +>> Oh yeah, I didn?t think about BURL. Bleargh. Searching for the +>> message in the Sent mailbox after sending seems rather error prone. +>> What if it takes ten minutes for the message to show up +>> automatically? Maybe an extended SMTP status code from the DATA +>> command would make sense on servers that are going to do the append +>> for you though? +>> +>> +>> Ian +>> +>> On Jan 13, 2013, at 5:34 PM, Ho? V. Dinh +>> wrote: +>> +>>> Maybe you could detect the IMAP server you're dealing with and +>>> behaves accordingly to its behaviour. +>>> An other solution could be to FETCH in the Sent mailbox after the +>>> mail has been sent. +>>> And match the message based on the Message-ID, then, decide whether +>>> you really need to APPEND the message. +>>> +>>> +>>> -- +>>> Ho? V. Dinh +>> +>> +>> On Jan 13, 2013, at 4:52 PM, Dave Cridland wrote: +>> +>>> No, there isn't, as far as I know. You can, on some systems, tell +>>> which is the Sent mailbox, and you could watch it for a new message, +>>> I suppose. I bet systems supporting special use mailboxes don't do +>>> the automatic append, though. +>>> +>>> On other systems, the "correct" method for sending a message is to +>>> first append it, and then submit by BURL. +>>> +>>> Finally, Alexey had a postaddress extension which allowed you to do +>>> the append by using a special address during submission. +>>> +>>> Dave. +>>> +>> +>>> On Sunday, January 13, 2013 at 4:43 PM, Ian Anderson wrote: +>>>> I suppose this might be more likely as an SMTP response code +>>>> (though I can?t find a defined one) than an IMAP capability or +>>>> some such, but maybe someone on this list knows anyway? +>>>> +>>>> +>>>> +>>>> Ian +>>>> +>>>> +>>>> On Jan 13, 2013, at 4:31 PM, Ian Anderson wrote: +>>>> +>>>> +>>>>> I?ve noticed that in some systems when you send a message via +>>>>> SMTP, it will put a copy in the user?s Sent mailbox. Most of +>>>>> them don?t however, necessitating that I do an IMAP APPEND to +>>>>> get the message in Sent. Is there a good/any way to tell when +>>>>> the APPEND is necessary? Right now I?m doing it all the time +>>>>> which is resulting in double copies in the Sent mailbox for +>>>>> systems that do it automatically. +>>>>> +>>>>> +>>>>> Ian +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22697.mbox:2,S new file mode 100644 index 00000000..eb6b6caf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22697.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From blong at google.com Mon Dec 10 15:59:06 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] RFC 6154 (SPECIAL-USE) and \Important +In-Reply-To: +References: +Message-ID: + +Its not documented anywhere that I know of. That folder is used to +represent the label assigned to messages which are detected as "important" +by our Priority Inbox, and we had folks who use IMAP as an API for Gmail +asking for access to that information. + +Its not clear this would ever be a "standard" special-use flag, but I've +also seen a bunch of push back against using the X prefix, so we weren't +clear on which way to go. + +We could have just exposed it on XLIST which isn't formally defined, though +that keeps us on special handling for Gmail. + +We went with adding it to LIST since special-use (and previous extensions) +already imply that clients need to be flexible in handling these. We were +worried about that, which is why we created XLIST in the first place... and +when we launched special-use, we did break at least one client which hard +coded a list of acceptable attributes. + +Brandon + + +On Mon, Dec 10, 2012 at 2:54 PM, Ian Anderson wrote: + +> I notice that Gmail is including \Important in the result from the LIST +> command. +> +> * LIST (\HasNoChildren \Important) "/" "[Gmail]/Important" +> +> I don?t see that documented in RFC 6154, is that in another RFC? Or +> documented anywhere? +> +> Ian +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22701.mbox:2,S new file mode 100644 index 00000000..fec7bf98 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22701.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From jkt at flaska.net Sun Nov 11 06:49:33 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Efficiently handling sequence numbers +In-Reply-To: <9B0A7B09-AF1D-41E5-A87E-7BD3A6A05DB2@iki.fi> +References: + + + <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> + + <9B0A7B09-AF1D-41E5-A87E-7BD3A6A05DB2@iki.fi> +Message-ID: + +On Friday, 9 November 2012 23:16:19 CEST, Timo Sirainen wrote: +> (Although many IMAP clients fetch 1:* flags after SELECT, but +> even if IMAP server had no problems with that, the IMAP client +> would probably be unusably slow so that's not a real problem.) + +In Trojita, I always want to establish a fully synchronized view to a mailbox, which means either CONDSTORE or QRESYNC or a blind 1:* FLAGS fetch upon connecting to a mailbox, yes. At first, this looks like an ugly inefficiency, but I believe that it's more or less the only reasonable way. + +A graphical MUA typically wants to show a simple statistic like X new, Y unread messages. I can get that number through the STATUS command, but what shall I do when receving EXPUNGE for a message whose flags are not known -- shall the number of the unread messages be decreased? Shall I invoke an explicit SEARCH NOT SEEN? Shall I just sync the flags in such case? (Note that I cannot use STATUS on an already opened mailbox.) + +It's true that one can probably come up with a pretty good heuristic like "on mailboxes >10k messages, it's unlikely to ever see expunges from the beginning, so let's load the flags only on demand" and defer to a full sync upon detecting a race. However, because there are extensions (CONDSTORE, QRESYNC) which make this synchronization painless and extremely efficient, I haven't decided to invest my time in optimizing Trojita for interaction with the legacy servers who don't implement these optimizations. + +Some of these servers don't even support ESEARCH for an efficient compression of the UID ranges which are needed in any client wishing to maintain its own offline cache (for essentially the same reason -- you want to remove data from the cache upon seeing an EXPUNGE, but in order to do that, you have to know the UID of the message which was expunged or come up with creative ways of finding out that infromation on demand, which is far from trivial -- you could for example ask for the UID of just two messages, the one before the message being expunged and the second one right after it, but then you have to deal with network disconnects in some complicated way, and you would still have to solve this for expunges which have happened while offline, between your reconnects). + +In short, yep, there are ample opportunities for clients to make the interoperability "better", but I somehow don't believe that clients should be responsible for this -- there are extensions designed to make this problem go away, and the two most widely deployed open source IMAP servers have implemented them for quite some time. It's a sad reality that many proprietary IMAP server vendors don't bother with ESEARCH, CONDSTORE and QRESYNC. + +With kind regards, +Jan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22707.mbox:2,S new file mode 100644 index 00000000..f3bfeb43 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22707.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From jkt at flaska.net Tue Oct 16 04:49:41 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] GMail SPECIAL-USE LIST +In-Reply-To: +References: + + <9CD3AECA-5993-40DD-B971-8A2DF75B3A94@apple.com> + +Message-ID: <507D49D5.6070309@flaska.net> + +On 10/15/12 22:45, Brandon Long wrote: +> For those keeping track at home, we had to revert this because a minor +> phone client wasn't able to handle the extended syntax, hard coding a +> small set of acceptable list-flags. We'll probably re-enable it as soon +> as they have a fix. + +I assume you are not likely to name the vendor in question. I was +wondering what the engineering reason for refusing to accept unknown +list flags might be... + +With kind regards +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22716.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22716.mbox:2,S new file mode 100644 index 00000000..5189bd56 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22716.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From alexey.melnikov at isode.com Sun Sep 16 01:02:37 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Comparators? +In-Reply-To: +References: <25F5C770-A983-40E7-A075-87A27449240F@iki.fi> + <504E328F.7030000@isode.com> + +Message-ID: <5055879D.9020106@isode.com> + +On 14/09/2012 20:52, Timo Sirainen wrote: +> On 10.9.2012, at 21.33, Alexey Melnikov wrote: +> +>>> I'm mainly wondering how to add support for languages where the acutes/graves in letters should be ignored by searches. +>> If you write it down, I will review and can find other reviewers. I don't think this is the first time this was proposed, so maybe there is some utility in it. +> Looks like i;unicode-casemap could already optionally do that, according to its security section: + +It depends on whether you want sorting or comparison for equality +(during searching). I think i;unicode-casemap provides the former, but +wouldn't give you the latter. + +>> 2) Step (2)(b) defines a subset of Normalization Form KD (NFKD) that +>> does not require normalization of out-of-order diacriticals. +>> However, an implementation MAY use an NFKD library routine that +>> does such normalization. This impacts step (2)(b) and possibly +>> also step (1)(a), and is an issue only with ill-formed UTF-8 +>> input. +> I'm thinking about just using Lucene's ICUFoldingFilterFactory for this. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22719.mbox:2,S new file mode 100644 index 00000000..f441e404 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22719.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu Aug 16 20:46:44 2012 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +Message-ID: <502DBEA4.2070204@verizon.net> + +For various reasons, I've been writing my own custom MIME parser. One +goal I had was to be able to match IMAP's part numbering for all parts, +so I don't have to pass metadata around on part numbers all the time. +The parser I've been cribbing off of uses a rather different numbering +scheme (effectively, anything that can hold a subpart gets a number, so +the part identified as 3.1 in the example is actually part 1.3.1.1 in +the internal numbering scheme), so following its logic was completely +out of the question. On a careful reading of the spec, however, it seems +that a critical part of the algorithm goes completely undefined. This is +not noticeable except on an evil message like the following: + +------ +Date: Fri, 01 Jan 2010 12:00 -0500 +To: x@x.x +From: y@y.y +Subject: download on demand problem +MIME-Version: 1.0 +Content-Type: message/rfc822 + +Date: Fri, 01 Jan 2012 12:00 -0500 +To: y@y.y +From: x@x.x +Subject: Blast from the future +MIME-Version:1.0 +Content-Type: text/plain + +Do you know what to do when you see this message? +------- + +What should FETCH BODY[1] return for this message? BODY[1.TEXT]? BODY[1.1]? + +I tested the results on 4 different IMAP servers and got 4 different +answers: +[Unknown server, ID returns NIL] +BODY[TEXT]: The entire inner message +BODY[1]: The entire inner message +BODY[1.1]: Do you know... +BODY[1.MIME]: Headers of the outer message +BODY[1.HEADER]: Headers of the inner message +BODY[1.TEXT]: Do you know... + +[GMail]: +BODY[TEXT]: The entire inner message +BODY[1]: NIL +BODY[1.1]: NIL +BODY[1.MIME]: NIL +BODY[1.HEADER]: NIL +BODY[1.TEXT]: NIL + +[Zimbra, specifically 7.2.0_GA_2669]: +BODY[TEXT]: The entire inner message +BODY[1]: The entire inner message +BODY[1.1]: Do you know... +BODY[1.MIME]: Headers of the outer message +BODY[1.HEADER]: Headers of the outer message +BODY[1.TEXT]: The entire inner message + +[Outlook, I'm pretty sure, but it doesn't implement ID]: +BODY[TEXT]: The entire inner message +BODY[1]: The entire inner message +BODY[1.1]: NIL +BODY[1.MIME]: NIL +BODY[1.HEADER]: NIL +BODY[1.TEXT]: NIL + +FWIW, as an aside, I'm currently putting together a testsuite of MIME +messages in part to be able to do things like ensure correctness of +things like IMAP servers, even in the face of horribly malformed +messages. I'm frankly shocked by how not comprehensive the testsuites I +can find are, which makes it hard to judge whether or not edge cases are +viable to change or not in handling. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095038.22723.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095038.22723.mbox:2,S new file mode 100644 index 00000000..57c77b8c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095038.22723.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From iana at apple.com Tue Jul 10 11:30:32 2012 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Non-ASCII text in the human readable portion of a + response +Message-ID: <5B2D87F5-EFFF-4225-BE4A-F4660CF8E964@apple.com> + +How is one supposed to put non-ASCII text in the human readable portion of a response? Something like this. + +tag01 NO [ALERT] some non-ASCII text to show the user + +RFC 3501 is unclear on this, it would seem to indicate that this part of the response is "text" which boils down to "any CHAR except CR and LF". But how are the bytes to be interpreted? Are they limited to ASCII? Is there another standard that allows non-ASCII bytes? + +Ian +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22595.mbox:2,S new file mode 100644 index 00000000..30e81739 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Mar 10 04:40:33 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <6506.1425915329@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> +Message-ID: <93ca8a07-02d5-47cc-8b6e-aa7cb2f02145@gulbrandsen.priv.no> + +Bill Janssen writes: +> Sure, JMAP's great, but it's very email-specific. + +I put that differently: It leverages JSON well and does a great job of +avoiding second-system syndrome. + +What you suggest doing risks following Postgres multimaster replication +down a long, winding, tiresome path. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22641.mbox:2,S new file mode 100644 index 00000000..d3f68fdf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22641.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From dot at dotat.at Wed Mar 19 03:21:47 2014 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> + <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> +Message-ID: + +Bron Gondwana wrote: +> +> You see it all the time in standards with low and poor adoption. Optimising +> for the edge cases. Case in point the argument against SUBMIT via IMAP and +> POP - instead needing a separate authenticated connection for SMTP so that it +> can support all the future extensions which might be added to SMTP. + +Indeed. Particularly annoying. + +Aside from the operational problems you listed, there is an architectural +problem with ESMTP for message submission: the IETF refused to describe a +way to represent envelope extensions in RFC 822 message headers, which +means MUAs have to invent their own non-standard ways to represent this +information in draft messages and saved copies of sent messages. + +A sensible design would be like BCC: where the submission process +constructs the envelope based on information in the message header and +strips any extraneous headers. If you do that then draft and saved +messages can use a standard format and you can trivially put the +submission process into the IMAP server. + +http://www.ietf.org/mail-archive/web/apps-discuss/current/msg11566.html + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +Trafalgar: Cyclonic 4 in southeast, otherwise northerly 5 to 7, decreasing 4 +or 5. Moderate or rough. Fair. Good. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22648.mbox:2,S new file mode 100644 index 00000000..77f66585 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22648.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From davew at hireahit.com Fri Jan 24 11:16:40 2014 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> +References: <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> <52E18829.40305@earthlink.net> <1F07B294-2A10-424C-9299-434013CBEE6D@isode.com> + <03EA56BC-6D49-4156-A842-D043A2099570@diku.dk> +Message-ID: <52E2BC18.7050508@hireahit.com> + +On 2014-01-24 04:17, Benny Kj?r Nielsen wrote: +> On 24 Jan 2014, at 11:50, Alexey Melnikov wrote: +> +>>> On 23 Jan 2014, at 21:32, Brandon Long wrote: +>>> +>>> Yes, gmail currently only notifies of new messages and expunged +>>> messages during idle. +>> +>> Can you add an IMAP capability (or can an existing one be used) so +>> that client can detect this behaviour? +> +> I second that! I've played with a simple workaround for Gmail in which +> I regularly check for flag changes when in the IDLE state, but I +> haven't enabled it because I don't like that the workaround is not +> automatically disabled when/if Gmail IDLE is improved. +> +> I've also been wondering: The RFC on IMAP IDLE does not state it as a +> requirement that servers must (or even should) report flag changes +> when in the IDLE state. Has anyone done any experiments showing +> whether or not this is a widespread IMAP server limitation (beyond +> Gmail)? + +Exchange has some "quirks" when it comes to updating an IDLE client; +like Gmail, it flawlessly notifies when a new message is added to a +folder, but on the Exchange side, flag changes and even deletes are +either not sent by IDLE, or at least not done so consistently. + +I've not investigated the actual IMAP implementation, but as a IMAP +user, I see folders get out of sync until I force the client to refresh +-- The only IMAP client-side code I interact with actually only cares +about new messages, so I've never taken the time to investigate further. + +Speaking as a user, the lack of working IMAP IDLE is extremely +frustrating, and is a significant part of why hireahit.com is a Google +Apps domain, but we don't use Google Apps mail, and instead host mail +ourselves, so I'd appreciate a CAPABILITY flag that indicates to clients +what IDLE will and will not notify, allowing clients to resort to +polling without completely disabling IDLE for new messages. + +-- +Dave Warren +http://www.hireahit.com/ +http://ca.linkedin.com/in/davejwarren + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22665.mbox:2,S new file mode 100644 index 00000000..3985245d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22665.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From barryleiba at computer.org Wed Aug 21 07:47:56 2013 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <5214A27E.8030300@isode.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> +Message-ID: + +>> But this should be fine as long as I can rely on the order of the untagged +>> responses. So my questions are: +>> +>> 1. Is my interpretation correct that the above commands are valid according +>> to the RFC? +>> +>> 2. Do you know of any servers that don't respond in the order of the +>> commands? +> +> Servers should not reorder responses to such commands or they will be in +> violation of RFC 3501. So yes, you can rely on the order. + +Really? Can you show us where in 3501 it's required that untagged +responses be in any particular order? I don't think it does. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22671.mbox:2,S new file mode 100644 index 00000000..6a7812c7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22671.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From brong at fastmail.fm Fri Jun 14 14:42:36 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +In-Reply-To: <6F96B898-B612-4272-B322-7A693E1CE35D@iki.fi> +References: + <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> + <2C3638E0-49E6-4F8B-B998-7923F5FFEA8A@iki.fi> + <1371213398.8438.140661243890973.11ABE89B@webmail.messagingengine.com> + <6F96B898-B612-4272-B322-7A693E1CE35D@iki.fi> +Message-ID: <1371246156.572.140661244082645.7D3937BB@webmail.messagingengine.com> + +On Sat, Jun 15, 2013, at 03:55 AM, Timo Sirainen wrote: +> On 14.6.2013, at 15.36, Bron Gondwana wrote: +> +> > On Fri, Jun 14, 2013, at 10:22 PM, Timo Sirainen wrote: +> >> On 14.6.2013, at 13.08, Bron Gondwana wrote: +> >> +> >>> We cheat at FastMail - we've got a patched Cyrus server which uses a single HIGHESTMODSEQ counter per user, as well as a single MAXUIDVALIDITY. Since we always bump the UIDVALIDITY of folders on rename, create or delete (keeping a tombstone record), we only need to keep track of two numbers - one for any changes to the folder listing, and a second for any changes to any mailbox. This allows us to optimise our web interface significantly (and provide the same advantages to any future clients that talk to our JSON API directly). +> >> +> >> Won't the UIDVALIDITY change on RENAME invalidate the local cache even for the client that issued the RENAME command? +> > +> > It has no guarantee anyway. You can't keep the UIDVALIDITY on rename if the destination name previously existed with that same UIDVALIDITY. Which means it either has to either trust that it's still the same folder after rename? +> +> I'm increasing UIDVALIDITY every time a new mailbox is created, so no two mailboxes have the same. This avoids conflicts with RENAME. + +We do this as well - but only within individual users, and mailboxes can be copied between users (yay shared mailboxes), so that would become prohibitively messy on a really large Cyrus instance. + +Bron. + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22682.mbox:2,S new file mode 100644 index 00000000..919fcf93 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22682.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Wed Mar 6 17:21:50 2013 +To: imap-protocol@u.washington.edu +From: "Hoa V. Dinh" +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Yahoo Imap 'Bad Sequence' error +In-Reply-To: <5137EAFC.7070302@comaxis.com> +References: <5137EAFC.7070302@comaxis.com> +Message-ID: + +Could you show the FETCH command you're sending? + +Though, Yahoo IMAP server is known as one of the worst implementation. + +-- +Hoa V. Dinh + + +On Wednesday, March 6, 2013 at 5:18 PM, Jeff McKay wrote: + +> Working with Yahoo's imap server, I have code that just does a bunch of +> FETCH commands of the +> inbox, until they are all downloaded. In one case, the inbox has 69000+ +> messages. My code starts +> at the highest, and works downward. After 45 successful message +> downloads, Yahoo responds to +> the fetch command with "BAD [CLIENTBUG] FETCH Bad sequence in the command". +> +> Anybody know what this means? I have had no problem with this code when +> connected to other +> imap servers. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22685.mbox:2,S new file mode 100644 index 00000000..8e6c0ac3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22685.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Feb 8 21:57:10 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Clarification on RFC 6851 +In-Reply-To: +References: <51129513.5080905@aol.com> <1360342514.3230.53.camel@hurina> + <1360356362.25348.140661188777389.5DDC322F@webmail.messagingengine.com> + <85789225-4185-487E-B971-4783437732EB@iki.fi> + +Message-ID: <248FDD1A-2FEF-4F8C-B62B-194518BE538A@isode.com> + +On 8 Feb 2013, at 21:16, Dave Cridland wrote: + +> My take: +> +> Say NO if no messages were moved. (For whatever reason). +> +> Say OK if some were. (Typically all extant messages in the range). +> +> Rationale: You need to put in response codes in various places; it's not clear to me you can put a HIGHESTMODSEQ in a NO response. +> +I don't think HIGHESTMODSEQ makes sense in a NO response, but if no messages were moved, the server can return OK with no HIGHESTMODSEQ. Having said that, I don't have a strong preference one way or another, although I implemented returning OK when no messages were moved. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22688.mbox:2,S new file mode 100644 index 00000000..53558e95 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22688.mbox:2,S @@ -0,0 +1,115 @@ +MBOX-Line: From blong at google.com Mon Jan 14 02:12:13 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> +Message-ID: + +Gmail definitely does this, though as long as your message is well formed +when sending via msa (date and messageid headers set), the appended copy +should just be considered a DUP, so no two copies. Unnecessary bandwidth, +I guess. + +Nothing we do to indicate this protocol wise, but I'm open to suggestions. + +Brandon +On Jan 14, 2013 12:38 AM, "Ian Anderson" wrote: + +> I haven?t tested it, but I hear that FastMail, Tuffmail, Gmail, 126, and +> 163 all do this. (Some of those may have since stopped, my data?s a bit +> old.) +> +> Ian +> +> On Jan 14, 2013, at 12:33 AM, Timo Sirainen wrote: +> +> > I doubt you could get such DATA response a) standardized and especially +> > b) implemented by server admins. Or are you thinking about some specific +> > large email provider that does this? I'm not aware of any provider that +> > does this. +> > +> > I think BURL is going to become much more available at least in server +> > side within a few years. +> > +> > On Mon, 2013-01-14 at 00:05 -0800, Ian Anderson wrote: +> >> Oh yeah, I didn?t think about BURL. Bleargh. Searching for the +> >> message in the Sent mailbox after sending seems rather error prone. +> >> What if it takes ten minutes for the message to show up +> >> automatically? Maybe an extended SMTP status code from the DATA +> >> command would make sense on servers that are going to do the append +> >> for you though? +> >> +> >> +> >> Ian +> >> +> >> On Jan 13, 2013, at 5:34 PM, Ho? V. Dinh +> >> wrote: +> >> +> >>> Maybe you could detect the IMAP server you're dealing with and +> >>> behaves accordingly to its behaviour. +> >>> An other solution could be to FETCH in the Sent mailbox after the +> >>> mail has been sent. +> >>> And match the message based on the Message-ID, then, decide whether +> >>> you really need to APPEND the message. +> >>> +> >>> +> >>> -- +> >>> Ho? V. Dinh +> >> +> >> +> >> On Jan 13, 2013, at 4:52 PM, Dave Cridland wrote: +> >> +> >>> No, there isn't, as far as I know. You can, on some systems, tell +> >>> which is the Sent mailbox, and you could watch it for a new message, +> >>> I suppose. I bet systems supporting special use mailboxes don't do +> >>> the automatic append, though. +> >>> +> >>> On other systems, the "correct" method for sending a message is to +> >>> first append it, and then submit by BURL. +> >>> +> >>> Finally, Alexey had a postaddress extension which allowed you to do +> >>> the append by using a special address during submission. +> >>> +> >>> Dave. +> >>> +> >> +> >>> On Sunday, January 13, 2013 at 4:43 PM, Ian Anderson wrote: +> >>>> I suppose this might be more likely as an SMTP response code +> >>>> (though I can?t find a defined one) than an IMAP capability or +> >>>> some such, but maybe someone on this list knows anyway? +> >>>> +> >>>> +> >>>> +> >>>> Ian +> >>>> +> >>>> +> >>>> On Jan 13, 2013, at 4:31 PM, Ian Anderson wrote: +> >>>> +> >>>> +> >>>>> I?ve noticed that in some systems when you send a message via +> >>>>> SMTP, it will put a copy in the user?s Sent mailbox. Most of +> >>>>> them don?t however, necessitating that I do an IMAP APPEND to +> >>>>> get the message in Sent. Is there a good/any way to tell when +> >>>>> the APPEND is necessary? Right now I?m doing it all the time +> >>>>> which is resulting in double copies in the Sent mailbox for +> >>>>> systems that do it automatically. +> >>>>> +> >>>>> +> >>>>> Ian +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22697.mbox:2,S new file mode 100644 index 00000000..a9ea6e51 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22697.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Mon Dec 10 21:56:34 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: <50C0A8F4.4070405@isode.com> +References: + <50C0A8F4.4070405@isode.com> +Message-ID: <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + +On 6.12.2012, at 16.17, Alexey Melnikov wrote: + +> On 04/12/2012 11:12, Timo Sirainen wrote: +>> Another BINARY issue not specified by the current BINARY RFC: How to handle fetching BINARY[x] or BINARY.SIZE[x] when the MIME part exists but contains invalid base64/quoted-printable data? The possibilities I think would be: +>> +>> a) Just ignore the invalid data and reply as best as you can. I'm not sure if this is actually useful in any case since the result will be invalid, and it might even cause security problems in case viruses try to exploit it at some point when virus scanner and IMAP server do the decoding differently. I remember reading a few years ago a lot of reports about this issue. +>> +>> b) Reply NIL to BINARY[x] and 0 to BINARY.SIZE[x] and overall reply OK to the FETCH. +>> +>> c) Abort and return NO to the FETCH, similarly to as for [UNKNOWNCTE] handling, except without that resp-code. +> +> I think both b) and c) would be Ok. But b) is probably less likely to surprise client authors. +> +>> I implemented b) today for Dovecot, thinking that it would probably cause less client confusion than c) and would be more secure then a). +> +> Maybe it is worth to do b) but also return "UNKNOWNCTE"? + +So: + +a FETCH 1 BINARY[1] +* 1 FETCH (BINARY[1] NIL) +a OK [UNKNOWN-CTE] Invalid input? + +I don't know how clients currently handle UNKNOWN-CTE. Maybe some would think that if it's returned then the server can never decode that content-transfer-encoding?.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22701.mbox:2,S new file mode 100644 index 00000000..d24984ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22701.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From blong at google.com Tue Nov 13 16:00:45 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Efficiently handling sequence numbers +In-Reply-To: +References: + + + <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> + + <9B0A7B09-AF1D-41E5-A87E-7BD3A6A05DB2@iki.fi> + +Message-ID: + +On Sun, Nov 11, 2012 at 6:49 AM, Jan Kundr?t wrote: + +> On Friday, 9 November 2012 23:16:19 CEST, Timo Sirainen wrote: +> +>> (Although many IMAP clients fetch 1:* flags after SELECT, but even if +>> IMAP server had no problems with that, the IMAP client would probably be +>> unusably slow so that's not a real problem.) +>> +> +> In Trojita, I always want to establish a fully synchronized view to a +> mailbox, which means either CONDSTORE or QRESYNC or a blind 1:* FLAGS fetch +> upon connecting to a mailbox, yes. At first, this looks like an ugly +> inefficiency, but I believe that it's more or less the only reasonable way. +> + +Probably depends on which flags you care about, but the SEARCH method is +certainly less data transfered if you only care about certain flags. I +estimated that a 100k folder will take around 6MB of data to do the FETCH +1:* (UID FLAGS) response. Obviously, ESEARCH is even more efficient. + + +> A graphical MUA typically wants to show a simple statistic like X new, Y +> unread messages. I can get that number through the STATUS command, but what +> shall I do when receving EXPUNGE for a message whose flags are not known -- +> shall the number of the unread messages be decreased? Shall I invoke an +> explicit SEARCH NOT SEEN? Shall I just sync the flags in such case? (Note +> that I cannot use STATUS on an already opened mailbox.) +> + +Anyone know what the point of that restriction is? We've had at least one +client ask us if it was ok, and it works fine on our implementation +(though, its the actual state of the folder, not the possibly out of date +view the client has). + +Obviously an ESEARCH (RETURN COUNT) NOT SEEN would work here, but may not +be as optimized (note to self, optimize this case). + + +> It's true that one can probably come up with a pretty good heuristic like +> "on mailboxes >10k messages, it's unlikely to ever see expunges from the +> beginning, so let's load the flags only on demand" and defer to a full sync +> upon detecting a race. However, because there are extensions (CONDSTORE, +> QRESYNC) which make this synchronization painless and extremely efficient, +> I haven't decided to invest my time in optimizing Trojita for interaction +> with the legacy servers who don't implement these optimizations. +> +> Some of these servers don't even support ESEARCH for an efficient +> compression of the UID ranges which are needed in any client wishing to +> maintain its own offline cache (for essentially the same reason -- you want +> to remove data from the cache upon seeing an EXPUNGE, but in order to do +> that, you have to know the UID of the message which was expunged or come up +> with creative ways of finding out that infromation on demand, which is far +> from trivial -- you could for example ask for the UID of just two messages, +> the one before the message being expunged and the second one right after +> it, but then you have to deal with network disconnects in some complicated +> way, and you would still have to solve this for expunges which have +> happened while offline, between your reconnects). +> +> In short, yep, there are ample opportunities for clients to make the +> interoperability "better", but I somehow don't believe that clients should +> be responsible for this -- there are extensions designed to make this +> problem go away, and the two most widely deployed open source IMAP servers +> have implemented them for quite some time. It's a sad reality that many +> proprietary IMAP server vendors don't bother with ESEARCH, CONDSTORE and +> QRESYNC. +> + +ESEARCH - 11/2006 +CONDSTORE 6/2006 +QRESYNC 3/2008 + +So, I guess some of these are pretty dated at this point, but client +support is much more recent. CONDSTORE in particular requires another very +IMAP specific piece of information in the storage layer which made us wait +on more client support before taking the expensive plunge. Our lack of +ESEARCH support is just an embarrassing result of our hand built parser. + +Anyways, these all help with the client synchronization, but don't really +help with the server having to load this information (Well, the client as +well) even if it doesn't sync down to the client. + +I'm willing to believe this is only a problem for our ridiculo distributed +implementation, but I really dislike having O(n) operations like this which +are just bound to trip at some number of n. Maybe I should instead post to +the imap5 list that not having sequence numbers would be a good idea. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22707.mbox:2,S new file mode 100644 index 00000000..3fd07839 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22707.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From blong at google.com Tue Oct 16 15:46:35 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] GMail SPECIAL-USE LIST +In-Reply-To: <507D49D5.6070309@flaska.net> +References: + + <9CD3AECA-5993-40DD-B971-8A2DF75B3A94@apple.com> + + <507D49D5.6070309@flaska.net> +Message-ID: + +On Tue, Oct 16, 2012 at 4:49 AM, Jan Kundr?t wrote: + +> On 10/15/12 22:45, Brandon Long wrote: +> +>> For those keeping track at home, we had to revert this because a minor +>> phone client wasn't able to handle the extended syntax, hard coding a +>> small set of acceptable list-flags. We'll probably re-enable it as soon +>> as they have a fix. +>> +> +> I assume you are not likely to name the vendor in question. I was +> wondering what the engineering reason for refusing to accept unknown list +> flags might be... +> + +Someone made an easy mistake? Unless you pay close attention to the RFC +EBNF, its probably easy to make that mistake. + +They haven't shared with me their reasoning. Or their planned fix, though +I did point out that section of the EBNF to them, so hopefully they will +fix it the right way instead of just adding the SPECIAL-USE flags to their +supported list. + +Brandon + + +> +> With kind regards +> Jan +> +> -- +> Trojita, a fast e-mail client -- http://trojita.flaska.net/ +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22716.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22716.mbox:2,S new file mode 100644 index 00000000..cc7575d8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22716.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From jkt at flaska.net Sun Sep 30 04:40:27 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] SSL compression attack and IMAP +Message-ID: <50682FAB.5030102@flaska.net> + +Hi, +recently, there's been an attack on TLS connections which carry the HTTP +traffic -- "CRIME" [1]. I'm not a cryptographic expert (although I like +to play one occasionally), but to my understanding, the attack combines +adaptive stream compression leaking data about the plaintext with the +attacker being able to control what gets transferred through the stream. +Together, these can reveal a secret HTTP cookie in just 6 requests per +each byte of the plaintext. Basically, when a secret cookie of +"foo=123456789" is passed in the HTTP headers (which happens to be +automatically included by the browser), an attacker-chosen payload later +in the stream like "foo=123xxx" will compress better than "foo=120xxx", +revealing one byte of the plaintext at a time. + +The browser vendors have reacted by disabling the TLS compression +unconditionally. The Qt library which my IMAP client Trojita [2] uses +has changed to disable TLS compression by default [3]. + +To my non-expert understanding, this attack could probably be limited by +explicitly flushing the compressor's dictionary before and after sending +the sensitive data over the wire. However, this is only my quick +analysis of how the attack works, and I cannot guarantee that it is +reasonably correct. + +I was wondering if any IMAP vendor has evaluated the risk here. Do you +ship with the TLS compression on by default? (Both clients and servers +can refuse the compression.) Do you reset the zlib compressor's +dictionary around "sensitive" parts? What is sensitive for you -- a +password, message payload in FETCH responses and APPEND commands? What +else? If you support the COMPRESS extension, do you employ the same +safeguards? + +With kind regards, +Jan + +[1] +http://security.stackexchange.com/questions/19911/crime-how-to-beat-the-beast-successor +[2] http://trojita.flaska.net/ +[3] http://qt.digia.com/en/Release-Notes/security-issue-september-2012/ + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22719.mbox:2,S new file mode 100644 index 00000000..890312d8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22719.mbox:2,S @@ -0,0 +1,101 @@ +MBOX-Line: From blong at google.com Thu Aug 16 21:00:43 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: <502DBEA4.2070204@verizon.net> +References: <502DBEA4.2070204@verizon.net> +Message-ID: + +On Thu, Aug 16, 2012 at 8:46 PM, Joshua Cranmer wrote: + +> For various reasons, I've been writing my own custom MIME parser. One goal +> I had was to be able to match IMAP's part numbering for all parts, so I +> don't have to pass metadata around on part numbers all the time. The parser +> I've been cribbing off of uses a rather different numbering scheme +> (effectively, anything that can hold a subpart gets a number, so the part +> identified as 3.1 in the example is actually part 1.3.1.1 in the internal +> numbering scheme), so following its logic was completely out of the +> question. On a careful reading of the spec, however, it seems that a +> critical part of the algorithm goes completely undefined. This is not +> noticeable except on an evil message like the following: +> +> ------ +> Date: Fri, 01 Jan 2010 12:00 -0500 +> To: x@x.x +> From: y@y.y +> Subject: download on demand problem +> MIME-Version: 1.0 +> Content-Type: message/rfc822 +> +> Date: Fri, 01 Jan 2012 12:00 -0500 +> To: y@y.y +> From: x@x.x +> Subject: Blast from the future +> MIME-Version:1.0 +> Content-Type: text/plain +> +> Do you know what to do when you see this message? +> ------- +> +> What should FETCH BODY[1] return for this message? BODY[1.TEXT]? BODY[1.1]? +> +> I tested the results on 4 different IMAP servers and got 4 different +> answers: +> [Unknown server, ID returns NIL] +> BODY[TEXT]: The entire inner message +> BODY[1]: The entire inner message +> BODY[1.1]: Do you know... +> BODY[1.MIME]: Headers of the outer message +> BODY[1.HEADER]: Headers of the inner message +> BODY[1.TEXT]: Do you know... +> +> [GMail]: +> BODY[TEXT]: The entire inner message +> BODY[1]: NIL +> BODY[1.1]: NIL +> BODY[1.MIME]: NIL +> BODY[1.HEADER]: NIL +> BODY[1.TEXT]: NIL +> + +This looks like the known bug in the way Gmail handles message/rfc822, its +essentially not considering it a container. See +http://www.ietf.org/mail-archive/web/imapext/current/msg04583.html for the +full break down on the state of that. + +[Zimbra, specifically 7.2.0_GA_2669]: +> BODY[TEXT]: The entire inner message +> BODY[1]: The entire inner message +> BODY[1.1]: Do you know... +> BODY[1.MIME]: Headers of the outer message +> BODY[1.HEADER]: Headers of the outer message +> BODY[1.TEXT]: The entire inner message +> +> [Outlook, I'm pretty sure, but it doesn't implement ID]: +> BODY[TEXT]: The entire inner message +> BODY[1]: The entire inner message +> BODY[1.1]: NIL +> BODY[1.MIME]: NIL +> BODY[1.HEADER]: NIL +> BODY[1.TEXT]: NIL +> +> FWIW, as an aside, I'm currently putting together a testsuite of MIME +> messages in part to be able to do things like ensure correctness of things +> like IMAP servers, even in the face of horribly malformed messages. I'm +> frankly shocked by how not comprehensive the testsuites I can find are, +> which makes it hard to judge whether or not edge cases are viable to change +> or not in handling. +> +> -- +> Beware of bugs in the above code; I have only proved it correct, not tried +> it. -- Donald E. Knuth +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22723.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22723.mbox:2,S new file mode 100644 index 00000000..749023e3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22723.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From slusarz at curecanti.org Tue Jul 10 11:45:42 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Non-ASCII text in the human readable portion of + a response +In-Reply-To: <5B2D87F5-EFFF-4225-BE4A-F4660CF8E964@apple.com> +References: <5B2D87F5-EFFF-4225-BE4A-F4660CF8E964@apple.com> +Message-ID: <20120710124542.Horde.DgHsC4F5lbhP-HhWuUbyDRA@bigworm.curecanti.org> + +Quoting Ian Anderson : + +> How is one supposed to put non-ASCII text in the human readable +> portion of a response? Something like this. +> +> tag01 NO [ALERT] some non-ASCII text to show the user +> +> RFC 3501 is unclear on this, it would seem to indicate that this +> part of the response is "text" which boils down to "any CHAR except +> CR and LF". But how are the bytes to be interpreted? Are they +> limited to ASCII? Is there another standard that allows non-ASCII +> bytes? + +RFC 3501 is limited to US-ASCII response text. To use UTF-8, you need +the LANGUAGE extension: RFC 5255 (http://tools.ietf.org/html/rfc5255). + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095039.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095039.22726.mbox:2,S new file mode 100644 index 00000000..2fa3ec92 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095039.22726.mbox:2,S @@ -0,0 +1,137 @@ +MBOX-Line: From jkt at flaska.net Fri Jun 8 09:02:01 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +Message-ID: <4FD221F9.8090601@flaska.net> + +Hi, +a big part of this mail is probably answered in RFC5162's errata, but +I'd still like someone to explicitly confirm that how I understand this +thing is correct. + +I'm afraid I have a possible race condition in my code which keeps +mailbox up to date with server's responses. Right now, my code supports +CONDSTORE but not QRESYNC. The following bits describe how it behaves +after the mailbox has been "synced", ie. when my idea about UID -> seq +mapping matches with the state on server. + +In this situation, whenever the program needs to perform something (like +send the LIST command, issue a FETCH for some body part, store some +flags through UID STORE etc), the command will be sent to the IMAP +server almost immediately, and this can in turn trigger many interesting +responses like EXISTS or EXPUNGE. That's why I'm ready to process them +at any point, no matter if there's a command in progress or not. I +believe that I'm handling them correctly now: + +- Whenever I receive EXISTS >= current number of messages, I simply add +the correct number of "empty messages" with UID zero to the end of my +UID -> seq mapping and to some internal data structure which is in turn +shown to the user who will see a few "Loading..." placeholders. I also +immediately queue a UID FETCH previous_uidnext:* FLAGS command. The goal +is that the UID number will eventually arrive and when they arrive, I +update my on-disk cache with the obtained data. + +- When EXPUNGE arrives, I check the number for correctness (1 <= number +< mailbox_size) and remove the message which is at that particular +index. If its UID was not zero, I also remove any data associated with +that UID from my on-disk cache. If the number was zero, well, the idea +is that this shouldn't matter at all as I couldn't possibly have any +useful data for that message in my cache (message parts, envelopes and +body structure are fetched only after the UID is known). + +I'm not sure how to deal with it if I enable QRESYNC, though. The spec +says that I should be ready for both EXPUNGE and VANISHED. I'd like to +leave my handling of EXPUNGE unchanged if possible, which means that I +really have to create and insert the fake UID-0 messages immediately in +response to increased EXISTS. + +The problem is what shall I do when I get VANISHED with a UID which is +bigger than the highest UID I already know? (Like if a message arrived +and before I had a chance to ask for its UID, it gets removed through +VANISHED.) At this point it looks like I can just pick any of the still +unknown messages in my in-memory state and delete one of them for each +high UID received in the VANISHED response. I'm a bit nervous about that +approach, though -- consider the following situation (which is partially +answered by the QRESYNC errata): + +(Mailbox contains one message with UID 5; UIDNEXT is 11, everything is +synced.) + +S: * 12 EXISTS +C: x UID FETCH 11:* (FLAGS) + +(At this point, server sends unsolicited data like FLAGS or even +BODYSTRUCTURE for the new arrivals. I believe that it's allowed to do so +per RFC3501.) + +S: * 2 FETCH (FLAGS (a) BODYSTRUCTURE ...) +S: * 3 FETCH (FLAGS (b) ENVELOPE ...) + +(I'm on a slow network, so even before my UID FETCH arrives to the +server, one of these messages is gone and the server sends back VANISHED:) + +S: * VANISHED 11 + +(The programmer has flipped a coin and hence the code always deletes the +very last message with UID=0. That means that the message flagged "b" is +gone and "a" remains.) + +S: * 2 FETCH (FLAGS (b) UID 12) + +(At this point, client finally gets the UID for the only remaining +message with UID=0, along with flags. The bad thing is that user has +already seen a stub message flagged as "a" while in fact there was just +the "b" one.) + +After reading the errata, I realize that servers are discouraged from +not sending UIDs in FETCH responses when QRESYNC has been enabled. Would +it be reasonable for my client to always ignore FETCH updates which do +not contain UID when QRESYNC is in effect? (I can easily change my code +to never issue a FETCH, always UID FETCH with QRESYNC.) + +My biggest concern is that my code perform potentially intrusive actions +(like allocating complex structures for BODYSTRUCTURE and actually +showing them to the user) upon seeing the FETCH responses for a given +message for the first time. When I receive interleaved VANISHED and +FETCH-without-UID responses, the result could be confusing to the user +(and given that I already have an application where the messages are +pushed into an external DB as soon as they arrive, I can imagine a use +case where people would want to store only messages with a particular +flag -- again, the code would get confused in the situation I described +above.) + +It seems to me that if the QRESYNC extension introduced new * ARRIVED + response to replace EXISTS in a similar way that +VANISHED replaces EXPUNGE, the window where client knows about new +arrivals but doesn't know about the UIDs would cease to exist. Is there +a particular reason why QRESYNC is not modeled in that way? + +Finally, my last question is why does QRESYNC require me to issue an +ENABLE QRESYNC at all? I feel like the SELECT ... QRESYNC should be +enough to tell the server that I'm really expecting the VANISHED +responses. My biggest issue with ENABLE is that (at least according to +the last errata by Alfred Hoenes from 2008-03-11 which is "held for +document update") I'm supposed to wait for untagged ENABLED before +issuing SELECT ... QRESYNC which introduces another roundtrip to the +connection process. I'm ignoring this requirement for now, so I'll +happily pipeline ENABLE QRESYNC with SELECT ... QRESYNC and hope that I +won't get BAD in response from some pedantic server. I'd love to get +some comments on this as well. + +With kind regards, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22595.mbox:2,S new file mode 100644 index 00000000..7e5345bd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22595.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From imantc at gmail.com Tue Mar 10 04:54:39 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> + + +Message-ID: + +> you might have had bad experience with performance of a random mail server + +Actually, I did not get this far. I could not configure one of the +better email servers currently available. It is easier to write one +from the ground up. + +My performance observations are based on experience with production +IMAP servers and on writing actual SMTP & IMAP server code compliant +with the current protocols. + +Yes, this code may be inefficient, can be optimized. + +Yet this seems obvious: regardless of how quickly a server can do a +task, not doing this task (parsing, conversion and altering bytes in +any way) saves time. + +Could we agree on this as an axiom? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22641.mbox:2,S new file mode 100644 index 00000000..f79bff86 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22641.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 19 03:52:31 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + <08C9B4E3-B0C3-40B3-AF7A-1B29FA09A0C9@orthanc.ca> + <1395195811.7439.96177201.64A35884@webmail.messagingengine.com> + <0327E34F-DD13-4350-A16F-FE621E029FEB@orthanc.ca> + <1395200046.23977.96193797.757C6481@webmail.messagingengine.com> + +Message-ID: <1395226351.18057.96296969.765874C2@webmail.messagingengine.com> + +On Wed, Mar 19, 2014, at 09:21 PM, Tony Finch wrote: +> Bron Gondwana wrote: +> > +> > You see it all the time in standards with low and poor adoption. Optimising +> > for the edge cases. Case in point the argument against SUBMIT via IMAP and +> > POP - instead needing a separate authenticated connection for SMTP so that it +> > can support all the future extensions which might be added to SMTP. +> +> Indeed. Particularly annoying. +> +> Aside from the operational problems you listed, there is an architectural +> problem with ESMTP for message submission: the IETF refused to describe a +> way to represent envelope extensions in RFC 822 message headers, which +> means MUAs have to invent their own non-standard ways to represent this +> information in draft messages and saved copies of sent messages. +> +> A sensible design would be like BCC: where the submission process +> constructs the envelope based on information in the message header and +> strips any extraneous headers. If you do that then draft and saved +> messages can use a standard format and you can trivially put the +> submission process into the IMAP server. +> +> http://www.ietf.org/mail-archive/web/apps-discuss/current/msg11566.html + +I've signed up to that list now. + +I've argued about the SUBMIT via IMAP issues before, and every time I've +been shot down by the "it's not future-proof", and even more clear "we've +chosen another way to do that, and we're not going to rehash the arguments +we made at the time, go read the archives to see why you're wrong and also +stupid". + +It kind of turned me off the whole standards world for a while, because for +every excellent thing like CONDSTORE you get a whole ton of architecture +astronaut solutions like BURL. + +But standards are the only way to make things useful for more than your own +little walled garden, so there's really no choice. I don't want to +improve one little walled garden. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22648.mbox:2,S new file mode 100644 index 00000000..b0d5c6b0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22648.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From slusarz at curecanti.org Fri Jan 24 11:30:18 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + + +Message-ID: <20140124123018.Horde.ISM6FP9eZKKDDqTOtSqihQ1@bigworm.curecanti.org> + +Quoting Brandon Long : + +> Currently, Gmail never sends unsolicited untagged FETCH responses. This +> has been documented in our help center since day one, ie: +> https://support.google.com/mail/answer/78761?hl=en&ref_topic=3397501 + +On that page, shouldn't it be "unsolicited FETCH responses" instead of +"untagged FETCH responses"? All FETCH responses are untagged, after +all. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22665.mbox:2,S new file mode 100644 index 00000000..fe18de03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22665.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Aug 21 08:08:07 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> + +Message-ID: <5214D7D7.8080100@isode.com> + +On 21/08/2013 15:47, Barry Leiba wrote: +>>> But this should be fine as long as I can rely on the order of the untagged +>>> responses. So my questions are: +>>> +>>> 1. Is my interpretation correct that the above commands are valid according +>>> to the RFC? +>>> +>>> 2. Do you know of any servers that don't respond in the order of the +>>> commands? +>> Servers should not reorder responses to such commands or they will be in +>> violation of RFC 3501. So yes, you can rely on the order. +> Really? Can you show us where in 3501 it's required that untagged +> responses be in any particular order? I don't think it does. +I was looking at: + +5.5. Multiple Commands in Progress + + The client MAY send another command without waiting for the + completion result response of a command, subject to ambiguity rules + (see below) and flow control constraints on the underlying data + stream. Similarly, a server MAY begin processing another command + before processing the current command to completion, subject to + ambiguity rules. However, any command continuation request responses + and command continuations MUST be negotiated before any subsequent + command is initiated. + + The exception is if an ambiguity would result because of a command + that would affect the results of other commands. Clients MUST NOT + send multiple commands without waiting if an ambiguity would result. + If the server detects a possible ambiguity, it MUST execute commands + to completion in the order given by the client. + +(The last sentence) But I suppose it doesn't cover cases when there is +no ambiguity, for example if commands are truly independent. + +So I suppose I was not quite correct. In reality though, I don't know of +any server that would execute multiple SEARCHes out of order. I am +curious to learn if any such server exists. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22671.mbox:2,S new file mode 100644 index 00000000..b353bbb0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22671.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Fri Jun 14 14:49:54 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +In-Reply-To: <1371246156.572.140661244082645.7D3937BB@webmail.messagingengine.com> +References: + <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> + <2C3638E0-49E6-4F8B-B998-7923F5FFEA8A@iki.fi> + <1371213398.8438.140661243890973.11ABE89B@webmail.messagingengine.com> + <6F96B898-B612-4272-B322-7A693E1CE35D@iki.fi> + <1371246156.572.140661244082645.7D3937BB@webmail.messagingengine.com> +Message-ID: <966C226A-BF79-453E-8759-6CEBBC8DFACF@iki.fi> + +On 15.6.2013, at 0.42, Bron Gondwana wrote: + +> On Sat, Jun 15, 2013, at 03:55 AM, Timo Sirainen wrote: +>> On 14.6.2013, at 15.36, Bron Gondwana wrote: +>> +>>> On Fri, Jun 14, 2013, at 10:22 PM, Timo Sirainen wrote: +>>>> On 14.6.2013, at 13.08, Bron Gondwana wrote: +>>>> +>>>>> We cheat at FastMail - we've got a patched Cyrus server which uses a single HIGHESTMODSEQ counter per user, as well as a single MAXUIDVALIDITY. Since we always bump the UIDVALIDITY of folders on rename, create or delete (keeping a tombstone record), we only need to keep track of two numbers - one for any changes to the folder listing, and a second for any changes to any mailbox. This allows us to optimise our web interface significantly (and provide the same advantages to any future clients that talk to our JSON API directly). +>>>> +>>>> Won't the UIDVALIDITY change on RENAME invalidate the local cache even for the client that issued the RENAME command? +>>> +>>> It has no guarantee anyway. You can't keep the UIDVALIDITY on rename if the destination name previously existed with that same UIDVALIDITY. Which means it either has to either trust that it's still the same folder after rename? +>> +>> I'm increasing UIDVALIDITY every time a new mailbox is created, so no two mailboxes have the same. This avoids conflicts with RENAME. +> +> We do this as well - but only within individual users, and mailboxes can be copied between users (yay shared mailboxes), so that would become prohibitively messy on a really large Cyrus instance. + +I don't allow RENAME across user boundaries. Seems potentially dangerous. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22682.mbox:2,S new file mode 100644 index 00000000..76b19194 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22682.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From jjmckay at comaxis.com Wed Mar 6 17:28:00 2013 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Yahoo Imap 'Bad Sequence' error +In-Reply-To: +References: <5137EAFC.7070302@comaxis.com> + +Message-ID: <5137ED20.4030007@comaxis.com> + +Here is the relevant portion of the log: + +A123 FETCH 69270 (FLAGS BODY.PEEK[]) +A123 BAD [CLIENTBUG] FETCH Bad sequence in the command +* BYE IMAP4rev1 Server logging out + +The fetch command is exactly the same as the previous 56, except for the +message number. + +On 3/6/2013 5:21 PM, Hoa V. Dinh wrote: +> Could you show the FETCH command you're sending? +> +> Though, Yahoo IMAP server is known as one of the worst implementation. +> +> -- +> Hoa V. Dinh +> +> On Wednesday, March 6, 2013 at 5:18 PM, Jeff McKay wrote: +> +>> Working with Yahoo's imap server, I have code that just does a bunch of +>> FETCH commands of the +>> inbox, until they are all downloaded. In one case, the inbox has 69000+ +>> messages. My code starts +>> at the highest, and works downward. After 45 successful message +>> downloads, Yahoo responds to +>> the fetch command with "BAD [CLIENTBUG] FETCH Bad sequence in the +>> command". +>> +>> Anybody know what this means? I have had no problem with this code when +>> connected to other +>> imap servers. +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22685.mbox:2,S new file mode 100644 index 00000000..698b1427 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22685.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Feb 8 21:59:39 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC Questions +In-Reply-To: <20130208150507.Horde.lf3D8gdWBQ-bpWCXHv1Xug4@bigworm.curecanti.org> +References: <201302081451.r18EpC0d010777@mxout11.cac.washington.edu> + <7237e649-33b3-47fb-a99a-4d3e7f28030f@flaska.net> + <1360356725.26278.140661188781457.3532161E@webmail.messagingengine.com> + <20130208150507.Horde.lf3D8gdWBQ-bpWCXHv1Xug4@bigworm.curecanti.org> +Message-ID: <98EEF27C-6BFB-47BB-B9E1-82CF7EB41428@isode.com> + +On 8 Feb 2013, at 22:05, Michael M Slusarz wrote: + +> Quoting Bron Gondwana : +> +>> On Sat, Feb 9, 2013, at 02:06 AM, Jan Kundr?t wrote: +>>> On Friday, 8 February 2013 15:50:38 CEST, Pete Maclean wrote: +>>> > When a client has not enabled CONDSTORE and sends an ENABLE +>>> > QRESYNC command to a server that advertises QRESYNC capability, +>>> > should the untagged response say "* ENABLED QRESYNC" or "* +>>> > ENABLED QRESYNC CONDSTORE"? My reading of the spec tells me the +>>> > latter but I observe that another server sends the former. +>>> +>>> I believe that both of these are compliant. I haven't found a definitive answer on this in either 5161 (ENABLE) or 5162 (QRESYNC) RFCs. +>> +>> Cyrus does the latter. I also agree it is the correct way. +> +> From a client's POV, it shouldn't matter. + +Right. + +> It is crystal clear in the RFC that QRESYNC implies CONDSTORE, so the second QRESYNC is seen in an ENABLED response a client should automatically add CONDSTORE to the current capability list. + +Exactly. + +> But the better-safe-than-sorry approach is to include both since it would workaround potentially broken clients and nobody is going to fret over the additional 10 bytes anyway. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22688.mbox:2,S new file mode 100644 index 00000000..3ec48d0e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22688.mbox:2,S @@ -0,0 +1,123 @@ +MBOX-Line: From iana at apple.com Mon Jan 14 02:15:14 2013 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + +Message-ID: <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + +It does make the whole sending process take twice as long. The only think I can think of protocol wise is an extended SMTP status code from the DATA command or an IMAP capability, neither of which are super wonderful. =\ + +Ian + +On Jan 14, 2013, at 2:12 AM, Brandon Long wrote: + +> Gmail definitely does this, though as long as your message is well formed when sending via msa (date and messageid headers set), the appended copy should just be considered a DUP, so no two copies. Unnecessary bandwidth, I guess. +> +> Nothing we do to indicate this protocol wise, but I'm open to suggestions. +> +> Brandon +> +> On Jan 14, 2013 12:38 AM, "Ian Anderson" wrote: +> I haven?t tested it, but I hear that FastMail, Tuffmail, Gmail, 126, and 163 all do this. (Some of those may have since stopped, my data?s a bit old.) +> +> Ian +> +> On Jan 14, 2013, at 12:33 AM, Timo Sirainen wrote: +> +> > I doubt you could get such DATA response a) standardized and especially +> > b) implemented by server admins. Or are you thinking about some specific +> > large email provider that does this? I'm not aware of any provider that +> > does this. +> > +> > I think BURL is going to become much more available at least in server +> > side within a few years. +> > +> > On Mon, 2013-01-14 at 00:05 -0800, Ian Anderson wrote: +> >> Oh yeah, I didn?t think about BURL. Bleargh. Searching for the +> >> message in the Sent mailbox after sending seems rather error prone. +> >> What if it takes ten minutes for the message to show up +> >> automatically? Maybe an extended SMTP status code from the DATA +> >> command would make sense on servers that are going to do the append +> >> for you though? +> >> +> >> +> >> Ian +> >> +> >> On Jan 13, 2013, at 5:34 PM, Ho? V. Dinh +> >> wrote: +> >> +> >>> Maybe you could detect the IMAP server you're dealing with and +> >>> behaves accordingly to its behaviour. +> >>> An other solution could be to FETCH in the Sent mailbox after the +> >>> mail has been sent. +> >>> And match the message based on the Message-ID, then, decide whether +> >>> you really need to APPEND the message. +> >>> +> >>> +> >>> -- +> >>> Ho? V. Dinh +> >> +> >> +> >> On Jan 13, 2013, at 4:52 PM, Dave Cridland wrote: +> >> +> >>> No, there isn't, as far as I know. You can, on some systems, tell +> >>> which is the Sent mailbox, and you could watch it for a new message, +> >>> I suppose. I bet systems supporting special use mailboxes don't do +> >>> the automatic append, though. +> >>> +> >>> On other systems, the "correct" method for sending a message is to +> >>> first append it, and then submit by BURL. +> >>> +> >>> Finally, Alexey had a postaddress extension which allowed you to do +> >>> the append by using a special address during submission. +> >>> +> >>> Dave. +> >>> +> >> +> >>> On Sunday, January 13, 2013 at 4:43 PM, Ian Anderson wrote: +> >>>> I suppose this might be more likely as an SMTP response code +> >>>> (though I can?t find a defined one) than an IMAP capability or +> >>>> some such, but maybe someone on this list knows anyway? +> >>>> +> >>>> +> >>>> +> >>>> Ian +> >>>> +> >>>> +> >>>> On Jan 13, 2013, at 4:31 PM, Ian Anderson wrote: +> >>>> +> >>>> +> >>>>> I?ve noticed that in some systems when you send a message via +> >>>>> SMTP, it will put a copy in the user?s Sent mailbox. Most of +> >>>>> them don?t however, necessitating that I do an IMAP APPEND to +> >>>>> get the message in Sent. Is there a good/any way to tell when +> >>>>> the APPEND is necessary? Right now I?m doing it all the time +> >>>>> which is resulting in double copies in the Sent mailbox for +> >>>>> systems that do it automatically. +> >>>>> +> >>>>> +> >>>>> Ian +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22697.mbox:2,S new file mode 100644 index 00000000..2c798443 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22697.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From blong at google.com Mon Dec 10 22:16:35 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> +Message-ID: + +On Mon, Dec 10, 2012 at 9:56 PM, Timo Sirainen wrote: + +> On 6.12.2012, at 16.17, Alexey Melnikov wrote: +> +> > On 04/12/2012 11:12, Timo Sirainen wrote: +> >> Another BINARY issue not specified by the current BINARY RFC: How to +> handle fetching BINARY[x] or BINARY.SIZE[x] when the MIME part exists but +> contains invalid base64/quoted-printable data? The possibilities I think +> would be: +> >> +> >> a) Just ignore the invalid data and reply as best as you can. I'm not +> sure if this is actually useful in any case since the result will be +> invalid, and it might even cause security problems in case viruses try to +> exploit it at some point when virus scanner and IMAP server do the decoding +> differently. I remember reading a few years ago a lot of reports about this +> issue. +> >> +> >> b) Reply NIL to BINARY[x] and 0 to BINARY.SIZE[x] and overall reply OK +> to the FETCH. +> >> +> >> c) Abort and return NO to the FETCH, similarly to as for [UNKNOWNCTE] +> handling, except without that resp-code. +> > +> > I think both b) and c) would be Ok. But b) is probably less likely to +> surprise client authors. +> > +> >> I implemented b) today for Dovecot, thinking that it would probably +> cause less client confusion than c) and would be more secure then a). +> > +> > Maybe it is worth to do b) but also return "UNKNOWNCTE"? +> +> So: +> +> a FETCH 1 BINARY[1] +> * 1 FETCH (BINARY[1] NIL) +> a OK [UNKNOWN-CTE] Invalid input? +> +> I don't know how clients currently handle UNKNOWN-CTE. Maybe some would +> think that if it's returned then the server can never decode that +> content-transfer-encoding?.. + + +I would think [PARSE] would be more appropriate than UNKNOWN-CTE. Or just +stick with [ALERT]. + +Also, what if there is more than one message requested? We usually just +fail to return the broken message and respond NO to the whole fetch, but +return all the non-broken messages. + +Also, I wouldn't use "Invalid input", maybe its just my thinking, but I +would think the "input" is the IMAP command, but its an invalid message +data. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22701.mbox:2,S new file mode 100644 index 00000000..bd945d60 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22701.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Nov 14 00:56:11 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Efficiently handling sequence numbers +In-Reply-To: +References: + + + <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> + + <9B0A7B09-AF1D-41E5-A87E-7BD3A6A05DB2@iki.fi> + + +Message-ID: <50A35CAB.9080308@gulbrandsen.priv.no> + +On 11/14/2012 01:00 AM, Brandon Long wrote: +> Anyone know what the point of that restriction is? + +It broke a server, mrc's perhaps, which used a locking scheme where +select locks a mailbox and status does too, and the two locks conflict +even though they are owned by the same process. + +Arnt +(back from the dead, sorry about the prolonged silence) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22707.mbox:2,S new file mode 100644 index 00000000..b8a2c753 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22707.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From johngalton217 at gmail.com Tue Oct 16 15:58:41 2012 +To: imap-protocol@u.washington.edu +From: John Galton +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Apple Mail support for CONDSTORE +Message-ID: + +Does anyone know the specifics about Apple Mail's support of the CONDSTORE +extension, in iOS and OSX (e.g. version requirements, hardware, etc)? + +The iOS 4.0 release notes ( +https://developer.apple.com/library/ios/#releasenotes/General/RN-iPhoneSDK-4_0/_index.html) +claim CONDSTORE support was added in iOS 4.0 but that doesn't appear +to +be happening from my 2nd gen iPod touch (which runs iOS 4.2.1). + +Thanks for your time, +John +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22716.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22716.mbox:2,S new file mode 100644 index 00000000..9be41bc8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22716.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From tss at iki.fi Sun Sep 30 05:57:01 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] SSL compression attack and IMAP +In-Reply-To: <50682FAB.5030102@flaska.net> +References: <50682FAB.5030102@flaska.net> +Message-ID: + +I don't think IMAP protocol is very vulnerable. The vulnerable part of IMAP is the password string, but clients always use the same commands before logging in. After login the only way for attacker to affect the output is by sending emails that the client downloads. So, I guess if: + +1) Attacker finds out which IMAP client is being used. + +2) Attacker finds out how to send emails there, and what exactly they look like (the Received headers etc.) + +3) Keeps tracking when IMAP client is connecting to server, possibly even forces streams to disconnect to make this faster. + +4) Whenever client logs in, send a special mail that tries to crack the password. + +That's pretty difficult to do reliably and assumes that clients immediately download new mails. + +But yeah, I guess it would be good for security to flush the dictionary after login. But does OpenSSL even support that?.. Luckily COMPRESS extension isn't vulnerable to this. And I don't think there's anything worth protecting post-login (clients don't redownload the same old mails - at best you could get LIST reply and message flags). + +On 30.9.2012, at 14.40, Jan Kundr?t wrote: + +> Hi, +> recently, there's been an attack on TLS connections which carry the HTTP traffic -- "CRIME" [1]. I'm not a cryptographic expert (although I like to play one occasionally), but to my understanding, the attack combines adaptive stream compression leaking data about the plaintext with the attacker being able to control what gets transferred through the stream. Together, these can reveal a secret HTTP cookie in just 6 requests per each byte of the plaintext. Basically, when a secret cookie of "foo=123456789" is passed in the HTTP headers (which happens to be automatically included by the browser), an attacker-chosen payload later in the stream like "foo=123xxx" will compress better than "foo=120xxx", revealing one byte of the plaintext at a time. +> +> The browser vendors have reacted by disabling the TLS compression unconditionally. The Qt library which my IMAP client Trojita [2] uses has changed to disable TLS compression by default [3]. +> +> To my non-expert understanding, this attack could probably be limited by explicitly flushing the compressor's dictionary before and after sending the sensitive data over the wire. However, this is only my quick analysis of how the attack works, and I cannot guarantee that it is reasonably correct. +> +> I was wondering if any IMAP vendor has evaluated the risk here. Do you ship with the TLS compression on by default? (Both clients and servers can refuse the compression.) Do you reset the zlib compressor's dictionary around "sensitive" parts? What is sensitive for you -- a password, message payload in FETCH responses and APPEND commands? What else? If you support the COMPRESS extension, do you employ the same safeguards? +> +> With kind regards, +> Jan +> +> [1] http://security.stackexchange.com/questions/19911/crime-how-to-beat-the-beast-successor +> [2] http://trojita.flaska.net/ +> [3] http://qt.digia.com/en/Release-Notes/security-issue-september-2012/ +> +> -- +> Trojita, a fast e-mail client -- http://trojita.flaska.net/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22719.mbox:2,S new file mode 100644 index 00000000..0881426b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22719.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From tss at iki.fi Thu Aug 16 21:14:56 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: <502DBEA4.2070204@verizon.net> +References: <502DBEA4.2070204@verizon.net> +Message-ID: <80122A6E-2516-4E9C-B389-B66E07BE05DB@iki.fi> + +On 17.8.2012, at 6.46, Joshua Cranmer wrote: + +> For various reasons, I've been writing my own custom MIME parser. One goal I had was to be able to match IMAP's part numbering for all parts, so I don't have to pass metadata around on part numbers all the time. The parser I've been cribbing off of uses a rather different numbering scheme (effectively, anything that can hold a subpart gets a number, so the part identified as 3.1 in the example is actually part 1.3.1.1 in the internal numbering scheme), so following its logic was completely out of the question. On a careful reading of the spec, however, it seems that a critical part of the algorithm goes completely undefined. This is not noticeable except on an evil message like the following: + +Undefined also means that the client shouldn't attempt to fetch it. + +> ------ +> Date: Fri, 01 Jan 2010 12:00 -0500 +> To: x@x.x +> From: y@y.y +> Subject: download on demand problem +> MIME-Version: 1.0 +> Content-Type: message/rfc822 +> +> Date: Fri, 01 Jan 2012 12:00 -0500 +> To: y@y.y +> From: x@x.x +> Subject: Blast from the future +> MIME-Version:1.0 +> Content-Type: text/plain +> +> Do you know what to do when you see this message? +> ------- +> +> What should FETCH BODY[1] return for this message? BODY[1.TEXT]? BODY[1.1]? + +[1.1] is invalid, because the included message isn't multipart. + +> I tested the results on 4 different IMAP servers and got 4 different answers: +> [Unknown server, ID returns NIL] +> BODY[TEXT]: The entire inner message +> BODY[1]: The entire inner message +> BODY[1.HEADER]: Headers of the inner message +> BODY[1.TEXT]: Do you know... + +These are correct. + +> BODY[1.MIME]: Headers of the outer message +> BODY[1.1]: Do you know... + +These don't matter, they could have been anything. The client shouldn't have asked them. + +> FWIW, as an aside, I'm currently putting together a testsuite of MIME messages in part to be able to do things like ensure correctness of things like IMAP servers, even in the face of horribly malformed messages. I'm frankly shocked by how not comprehensive the testsuites I can find are, which makes it hard to judge whether or not edge cases are viable to change or not in handling. + + +I added your case to my tester: http://hg.dovecot.org/imaptest/rev/191e7c11d02e + +If you want to write more of those I'd be happy to include them. A few days ago I added many other tests cases. diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22723.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22723.mbox:2,S new file mode 100644 index 00000000..76000d05 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22723.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From jkt at flaska.net Fri Jul 13 11:23:16 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <4FD77DE4.2080602@isode.com> +References: <4FD221F9.8090601@flaska.net> <4FD4EB4B.7050000@flaska.net> + + <4FD75715.2040607@flaska.net> <4FD77DE4.2080602@isode.com> +Message-ID: <50006794.6050401@flaska.net> + +On 06/12/12 19:35, Alexey Melnikov wrote: +>> Would a proposal for adding "* ARRIVED 64,65,66" to replace EXISTS have +>> any real-world chance of getting accepted? +> Even if it would be, we can't just add "ARRIVED" to QRESYNC, because it +> is an RFC and I believer there are multiple server implementations +> already. We can reopen the document and define a new IMAP capability, +> but in short to medium term your code would have to handle the current +> situation anyway... + +I've tried to define an extension adding the ARRIVED response to +QRESYNC. The full text in HTML format is available at [1], source in +rfc2xml format at [2]. + +I'm not familiar with the IETF process and such, and I'll also +appreciate some feedback before I submit it further -- so I'm open to +suggestions about what to do here. If you (anyone on the list) feel like +this is a waste of time, a great idea or anything in between, please let +me know. + +I've also taken the liberty of not requiring an explicit ENABLE +QRESYNC-ARRIVED; it seems to me that the mere act of SELECT ... +QRESYNC-ARRIVED is explicit enough and the extra ENABLE is in fact not +necessary. + +I'll add code supporting this extension to my client shortly (probably +as "X-DRAFT-I00-QRESYNC-ARRIVED", that's the correct format, right?); if +any server vendors feel like implementing it as well for +interoperability testing, I'll offer a beer to the first such person I +meet in real life again :). + +With kind regards +Jan + +[1] http://trojita.flaska.net/draft-imap-qresync-arrived-00.html +[2] +https://gitorious.org/trojita/trojita/blobs/drafts/draft-imap-qresync-arrived-00/docs/proposed-extensions/draft-imap-qresync-arrived.xml + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22726.mbox:2,S new file mode 100644 index 00000000..4af14508 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22726.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From jkt at flaska.net Sun Jun 10 11:45:31 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <4FD221F9.8090601@flaska.net> +References: <4FD221F9.8090601@flaska.net> +Message-ID: <4FD4EB4B.7050000@flaska.net> + +I'm afraid I've found another possible issue with QRESYNC. The RFC5162 +is pretty clear that servers SHOULD inform only about those UIDs which +are expunged "right now" through the VANISHED response. Unless I'm +terribly mistaken, it means that a client has to handle VANISHED +responses which refer to UIDs which were expunged a long time ago, and +servers *can* send them and still be called compliant. + +I believe that this brings a few issues in the following scenario (where +mailbox contains one message with UID 5; UIDNEXT is 11, everything is +synced): + +S: * 3 EXISTS +S: * VANISHED 12:20 + +The server is telling me that any UIDs between 12 and 20 are gone. The +problem is that I don't know whether any message has got this UID, ie. +whether the messages #2 and #3 (the first and second arrivals) fall into +that range. What shall a compliant IMAP client do at this point? Shall I +remove any messages upon receiving the VANISHED response? Shall I send a +UID SEARCH command to find out what new messages are really there? +That'd complicate my code quite a lot, unfortunately. + +Even more entertaining would be an interaction where the server +occasionally sent a regular EXPUNGED instead of VANISHED (it's allowed +to do so per RFC 5162); that'd lead to an interesting mix of unknowns +about a mailbox' state... + +I'm looking forward to answers about this matter. + +With kind regards, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095040.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095040.22729.mbox:2,S new file mode 100644 index 00000000..2b60dbf2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095040.22729.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Wed May 2 14:28:46 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +Message-ID: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> + +I don't think IMAP RFCs actually require any specific behavior for this, so this is more of a "any recommendations?" type of a question: + +Clients C1 and C2 send: + +C1: a FETCH 1 FLAGS +S1: * 1 FETCH (FLAGS (\Seen \Answered)) +S1: a OK + +C2: b STORE 1 +FLAGS (\Flagged) +S2: * 1 FETCH (FLAGS (\Seen \Flagged)) +S2: b OK + +At this point C1 still thinks that 1's flags are (\Seen), and being a little bit stupid it unsets the \Seen flag by sending: + +C1: c STORE 1 FLAGS (\Answered) + +Now, I think the possible replies are either of these: + +S1: * 1 FETCH (FLAGS (\Answered)) +S1: * 1 FETCH (FLAGS (\Answered \Flagged)) + +Dovecot currently sends the first reply, but I've started thinking that perhaps I should change it to the second one. The question is really: Should STORE FLAGS be thought of as + +a) Reset all the flags that you have currently, whatever they are, and only set these flags. + +or + +b) Atomically add these flags I've listed, and remove those that I used to see previously in this session but aren't listed here. + +In the case of actual IMAP clients doing this, this is probably almost irrelevant. But it becomes more relevant if you have two IMAP servers doing a 2-way mailbox synchronization after a possibly long disconnection, and the same message's flags are changed in both of them. + +I haven't really looked at how many of the real world clients are using STORE FLAGS. For those I'd think b) is what they really intend to do. But are there perhaps some specialized clients / use cases assuming a)? diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22595.mbox:2,S new file mode 100644 index 00000000..736bc632 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22595.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From imantc at gmail.com Tue Mar 10 07:37:38 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <1425967579.1849414.238222149.3EB9CA30@webmail.messagingengine.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <7782A916-12BB-488C-BD57-697FDB5D47E2@orthanc.ca> + + <0C18524D-28EC-4DF9-A888-678E7DD4E56A@orthanc.ca> + + + + <1425967579.1849414.238222149.3EB9CA30@webmail.messagingengine.com> +Message-ID: + +> You know what our biggest headache is. Disk IO. Even with a ton of +SSD-based optimisation, things that reduce IO win every time over +reducing computation. + +well, let's say: +simpler protocol +-> more implementations +-> better choice of mailbox storage backends + +emails can even be stored in a cloud. +so much for disk bottleneck. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22641.mbox:2,S new file mode 100644 index 00000000..adfc1d2f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22641.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From jkt at flaska.net Wed Mar 19 04:56:08 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: +References: <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + +Message-ID: + +On Tuesday, 18 March 2014 23:01:12 CEST, Arnt Gulbrandsen wrote: +> Think about it this way. As a client author, how do you handle +> the case where the server sends you PREAUTH and you want to use +> TLS? + +Oops. Thanks for an excellent suggestion, Arnt. It turns out that Trojita +silenty fails to establish encryption when the remote server greets us with +an initial PREAUTH. That might lead to information leak (APPEND of +messages, confirmation of mailbox names), but never to credentials being +transmitted in plaintext (Trojita understands what PREAUTH is, and won't +attempt to LOGIN or AUTHENTICATE in that case). + +/me checks how to file a CVE... + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22648.mbox:2,S new file mode 100644 index 00000000..dc5738e9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22648.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From blong at google.com Fri Jan 24 12:04:26 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <20140124123018.Horde.ISM6FP9eZKKDDqTOtSqihQ1@bigworm.curecanti.org> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + + + <20140124123018.Horde.ISM6FP9eZKKDDqTOtSqihQ1@bigworm.curecanti.org> +Message-ID: + +On Fri, Jan 24, 2014 at 11:30 AM, Michael M Slusarz +wrote: + +> Quoting Brandon Long : +> +> Currently, Gmail never sends unsolicited untagged FETCH responses. This +>> has been documented in our help center since day one, ie: +>> https://support.google.com/mail/answer/78761?hl=en&ref_topic=3397501 +>> +> +> On that page, shouldn't it be "unsolicited FETCH responses" instead of +> "untagged FETCH responses"? All FETCH responses are untagged, after all. + + +Yes, I feel like I've pinged them to change that a number of times, I shall +try again. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22665.mbox:2,S new file mode 100644 index 00000000..46e213a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22665.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From lasse at lasselog.com Wed Aug 21 08:35:12 2013 +To: imap-protocol@u.washington.edu +From: Lasse Jansen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <5214D7D7.8080100@isode.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> + + <5214D7D7.8080100@isode.com> +Message-ID: <8A80BED6-24C0-45D1-AE80-DCB8C79FA4E8@lasselog.com> + +Dovecot does apparently if a search command takes longer that 0.1 seconds as Timo mentioned before. I tried his suggestion to force this behavior with a BODY search and it does indeed happen: + + +1 UID SEARCH BODY "NOT IN MY MESSAGES" +2 UID SEARCH UNSEEN +* SEARCH 33115 +* SEARCH +1 OK Search completed (7.811 secs). +2 OK Search completed (0.000 secs). + + + +The unseen message is reported before the empty search result for the body search. + + +Lasse + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22671.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22671.mbox:2,S new file mode 100644 index 00000000..fcee7e47 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22671.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From brong at fastmail.fm Fri Jun 14 19:29:09 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Synchronizing multiple mailbox +In-Reply-To: <966C226A-BF79-453E-8759-6CEBBC8DFACF@iki.fi> +References: + <1371204522.10116.140661243848077.263DB050@webmail.messagingengine.com> + <2C3638E0-49E6-4F8B-B998-7923F5FFEA8A@iki.fi> + <1371213398.8438.140661243890973.11ABE89B@webmail.messagingengine.com> + <6F96B898-B612-4272-B322-7A693E1CE35D@iki.fi> + <1371246156.572.140661244082645.7D3937BB@webmail.messagingengine.com> + <966C226A-BF79-453E-8759-6CEBBC8DFACF@iki.fi> +Message-ID: <1371263349.15443.140661244139353.6DEC2193@webmail.messagingengine.com> + +On Sat, Jun 15, 2013, at 07:49 AM, Timo Sirainen wrote: +> On 15.6.2013, at 0.42, Bron Gondwana wrote: +> +> > On Sat, Jun 15, 2013, at 03:55 AM, Timo Sirainen wrote: +> >> On 14.6.2013, at 15.36, Bron Gondwana wrote: +> >> +> >>> On Fri, Jun 14, 2013, at 10:22 PM, Timo Sirainen wrote: +> >>>> On 14.6.2013, at 13.08, Bron Gondwana wrote: +> >>>> +> >>>>> We cheat at FastMail - we've got a patched Cyrus server which uses a single HIGHESTMODSEQ counter per user, as well as a single MAXUIDVALIDITY. Since we always bump the UIDVALIDITY of folders on rename, create or delete (keeping a tombstone record), we only need to keep track of two numbers - one for any changes to the folder listing, and a second for any changes to any mailbox. This allows us to optimise our web interface significantly (and provide the same advantages to any future clients that talk to our JSON API directly). +> >>>> +> >>>> Won't the UIDVALIDITY change on RENAME invalidate the local cache even for the client that issued the RENAME command? +> >>> +> >>> It has no guarantee anyway. You can't keep the UIDVALIDITY on rename if the destination name previously existed with that same UIDVALIDITY. Which means it either has to either trust that it's still the same folder after rename? +> >> +> >> I'm increasing UIDVALIDITY every time a new mailbox is created, so no two mailboxes have the same. This avoids conflicts with RENAME. +> > +> > We do this as well - but only within individual users, and mailboxes can be copied between users (yay shared mailboxes), so that would become prohibitively messy on a really large Cyrus instance. +> +> I don't allow RENAME across user boundaries. Seems potentially dangerous. + +Legacy - gotta love it. You can't take things away from people... + +That said, this is probably something that could be a config switch defaulting to "don't allow it unless the user is an admin" or something. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22682.mbox:2,S new file mode 100644 index 00000000..de4ac06e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22682.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From dave at cridland.net Wed Mar 6 17:42:10 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Yahoo Imap 'Bad Sequence' error +In-Reply-To: <5137EAFC.7070302@comaxis.com> +References: <5137EAFC.7070302@comaxis.com> +Message-ID: + +On 6 Mar 2013 20:20, "Jeff McKay" wrote: +> +> Working with Yahoo's imap server, I have code that just does a bunch of +FETCH commands of the +> inbox, until they are all downloaded. In one case, the inbox has 69000+ +messages. My code starts +> at the highest, and works downward. After 45 successful message +downloads, Yahoo responds to +> the fetch command with "BAD [CLIENTBUG] FETCH Bad sequence in the +command". +> +> Anybody know what this means? I have had no problem with this code when +connected to other +> imap servers. + +It mostly means that Yahoo is a crock. + +I have a feeling we've seen this one recently, but I don't have the details +to hand. Is this a UID FETCH? And does the UID in the sequence set exist? +If not, then I think Yahoo might reject it, even if it certainly shouldn't +be doing so. + +Yahoo will also sometimes not return data for messages that do exist, and +give an error message in the tagged OK (repeating the FETCH works), and +also refuse outright to tell you about other messages (particularly deleted +drafts). + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22685.mbox:2,S new file mode 100644 index 00000000..9be966d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22685.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From stujenerin at aol.com Mon Feb 11 15:32:33 2013 +To: imap-protocol@u.washington.edu +From: Stuart Brandt +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Clarification on RFC 6851 +In-Reply-To: +References: <51129513.5080905@aol.com> <1360342514.3230.53.camel@hurina> + <1360356362.25348.140661188777389.5DDC322F@webmail.messagingengine.com> + <85789225-4185-487E-B971-4783437732EB@iki.fi> + +Message-ID: <51197F91.8050604@aol.com> + +Thanks for the good discussion. The scenario we're looking to cover is +indeed the case Timo hit on - non-recoverable failure of some system +component while processing an excessively large set of ids. + +I'll keep monitoring to see if more clarify comes, but for now we're +going to proceed with the approach Dave outlined below. + +- Stuart + +On 2/8/13 4:16 PM, Dave Cridland wrote: +> My take: +> +> Say NO if no messages were moved. (For whatever reason). +> +> Say OK if some were. (Typically all extant messages in the range). +> +> Rationale: You need to put in response codes in various places; it's not +> clear to me you can put a HIGHESTMODSEQ in a NO response. +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22688.mbox:2,S new file mode 100644 index 00000000..4134a6da --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22688.mbox:2,S @@ -0,0 +1,192 @@ +MBOX-Line: From brong at fastmail.fm Mon Jan 14 03:32:24 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> +Message-ID: <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + +I have ranted about this at length about the state of this. I don't +think BURL is going to be a solution which gains wide adoption, though +I'd love to see a convincing argument from anyone who's rolled it out +to anything other than a corporate-style network where the clients, +servers and intermediate networks are all controlled by a single +organisation. + +Fastmail has a configuration option which allows you to automatically +BCC all your outbound email to one or more other addresses, and one way +expose this is forwarding to an automatically created sieve rule which +files the copy directly into one of your own folders. We also don't +expose the existence of this anywhere. + +I still think the sane option is to upload the message contents once +via IMAP and then have a command which is sent over the IMAP channel +saying to inject said message into an outbound email queue - meaning +that there's only a single connection channel required. The +interesting bits are, of course, spam controls. But so long as it goes +through similar controls to port 587 I think it's sane. + +Anyway - we don't turn it on automatically, so users are likely to only +turn it on once they know what their client does. + +Bron. + + +On Mon, Jan 14, 2013, at 09:15 PM, Ian Anderson wrote: + +It does make the whole sending process take twice as long. The only +think I can think of protocol wise is an extended SMTP status code from +the DATA command or an IMAP capability, neither of which are super +wonderful. =\ + +Ian +On Jan 14, 2013, at 2:12 AM, Brandon Long <[1]blong@google.com> wrote: + + Gmail definitely does this, though as long as your message is well + formed when sending via msa (date and messageid headers set), the + appended copy should just be considered a DUP, so no two copies. + Unnecessary bandwidth, I guess. + + Nothing we do to indicate this protocol wise, but I'm open to + suggestions. + + Brandon + +On Jan 14, 2013 12:38 AM, "Ian Anderson" <[2]iana@apple.com> wrote: + + I haven?t tested it, but I hear that FastMail, Tuffmail, Gmail, 126, + and 163 all do this. (Some of those may have since stopped, my + data?s a bit old.) + Ian + On Jan 14, 2013, at 12:33 AM, Timo Sirainen <[3]tss@iki.fi> wrote: + > I doubt you could get such DATA response a) standardized and + especially + > b) implemented by server admins. Or are you thinking about some + specific + > large email provider that does this? I'm not aware of any provider + that + > does this. + > + > I think BURL is going to become much more available at least in + server + > side within a few years. + > + > On Mon, 2013-01-14 at 00:05 -0800, Ian Anderson wrote: + >> Oh yeah, I didn?t think about BURL. Bleargh. Searching for the + >> message in the Sent mailbox after sending seems rather error + prone. + >> What if it takes ten minutes for the message to show up + >> automatically? Maybe an extended SMTP status code from the DATA + >> command would make sense on servers that are going to do the + append + >> for you though? + >> + >> + >> Ian + >> + >> On Jan 13, 2013, at 5:34 PM, Ho? V. Dinh + <[4]dinh.viet.hoa@gmail.com> + >> wrote: + >> + >>> Maybe you could detect the IMAP server you're dealing with and + >>> behaves accordingly to its behaviour. + >>> An other solution could be to FETCH in the Sent mailbox after + the + >>> mail has been sent. + >>> And match the message based on the Message-ID, then, decide + whether + >>> you really need to APPEND the message. + >>> + >>> + >>> -- + >>> Ho? V. Dinh + >> + >> + >> On Jan 13, 2013, at 4:52 PM, Dave Cridland <[5]dave@cridland.net> + wrote: + >> + >>> No, there isn't, as far as I know. You can, on some systems, + tell + >>> which is the Sent mailbox, and you could watch it for a new + message, + >>> I suppose. I bet systems supporting special use mailboxes don't + do + >>> the automatic append, though. + >>> + >>> On other systems, the "correct" method for sending a message is + to + >>> first append it, and then submit by BURL. + >>> + >>> Finally, Alexey had a postaddress extension which allowed you to + do + >>> the append by using a special address during submission. + >>> + >>> Dave. + >>> + >> + >>> On Sunday, January 13, 2013 at 4:43 PM, Ian Anderson wrote: + >>>> I suppose this might be more likely as an SMTP response code + >>>> (though I can?t find a defined one) than an IMAP capability or + >>>> some such, but maybe someone on this list knows anyway? + >>>> + >>>> + >>>> + >>>> Ian + >>>> + >>>> + >>>> On Jan 13, 2013, at 4:31 PM, Ian Anderson <[6]iana@apple.com> + wrote: + >>>> + >>>> + >>>>> I?ve noticed that in some systems when you send a message via + >>>>> SMTP, it will put a copy in the user?s Sent mailbox. Most of + >>>>> them don?t however, necessitating that I do an IMAP APPEND to + >>>>> get the message in Sent. Is there a good/any way to tell when + >>>>> the APPEND is necessary? Right now I?m doing it all the time + >>>>> which is resulting in double copies in the Sent mailbox for + >>>>> systems that do it automatically. + >>>>> + >>>>> + >>>>> Ian + _______________________________________________ + Imap-protocol mailing list + [7]Imap-protocol@u.washington.edu + [8]http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +_______________________________________________ +Imap-protocol mailing list +[9]Imap-protocol@u.washington.edu +[10]http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +Email had 1 attachment: + * smime.p7s + 6k (application/pkcs7-signature) + +References + +1. mailto:blong@google.com +2. mailto:iana@apple.com +3. mailto:tss@iki.fi +4. mailto:dinh.viet.hoa@gmail.com +5. mailto:dave@cridland.net +6. mailto:iana@apple.com +7. mailto:Imap-protocol@u.washington.edu +8. http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +9. mailto:Imap-protocol@u.washington.edu + 10. http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-- + Bron Gondwana + brong@fastmail.fm + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22697.mbox:2,S new file mode 100644 index 00000000..d327c62c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22697.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From iana at apple.com Mon Dec 10 23:52:34 2012 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] RFC 6154 (SPECIAL-USE) and \Important +In-Reply-To: +References: + +Message-ID: <78147F1B-B52E-4C3B-A789-C4107E3A6C0C@apple.com> + +I kind of like the idea of amending 6154 to include \Important . 6154 already has several Gmail specific mailboxes defined anyway, seems like it might as well add \Important. Plus it would discourage people from adding their own \Important and then clashing with the established meaning that it already has on Gmail. + +Ian + +On Dec 10, 2012, at 3:59 PM, Brandon Long wrote: + +> Its not documented anywhere that I know of. That folder is used to represent the label assigned to messages which are detected as "important" by our Priority Inbox, and we had folks who use IMAP as an API for Gmail asking for access to that information. +> +> Its not clear this would ever be a "standard" special-use flag, but I've also seen a bunch of push back against using the X prefix, so we weren't clear on which way to go. +> +> We could have just exposed it on XLIST which isn't formally defined, though that keeps us on special handling for Gmail. +> +> We went with adding it to LIST since special-use (and previous extensions) already imply that clients need to be flexible in handling these. We were worried about that, which is why we created XLIST in the first place... and when we launched special-use, we did break at least one client which hard coded a list of acceptable attributes. +> +> Brandon +> +> +> On Mon, Dec 10, 2012 at 2:54 PM, Ian Anderson wrote: +> I notice that Gmail is including \Important in the result from the LIST command. +> +> * LIST (\HasNoChildren \Important) "/" "[Gmail]/Important" +> +> I don?t see that documented in RFC 6154, is that in another RFC? Or documented anywhere? +> +> Ian +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22701.mbox:2,S new file mode 100644 index 00000000..791980f8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22701.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From brong at fastmail.fm Wed Nov 14 01:18:23 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Efficiently handling sequence numbers +In-Reply-To: <50A35CAB.9080308@gulbrandsen.priv.no> +References: + + + <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> + + <9B0A7B09-AF1D-41E5-A87E-7BD3A6A05DB2@iki.fi> + + + <50A35CAB.9080308@gulbrandsen.priv.no> +Message-ID: <1352884703.18213.140661153457017.064C6E88@webmail.messagingengine.com> + +On Wed, Nov 14, 2012, at 09:56 AM, Arnt Gulbrandsen wrote: +> On 11/14/2012 01:00 AM, Brandon Long wrote: +> > Anyone know what the point of that restriction is? +> +> It broke a server, mrc's perhaps, which used a locking scheme where +> select locks a mailbox and status does too, and the two locks conflict +> even though they are owned by the same process. + +Yeah, that happens in Cyrus too. So we check if there's a selected +mailbox and if it has the same name as the one being asked for a +status response, and if so we call index_status() on the index state +rather than statuscache_status() with the mailbox name. + +Still, IMAP is already a crazy-stateful protocol, so what's one +more piece of state for every client track of on every connection +and never get wrong... + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22707.mbox:2,S new file mode 100644 index 00000000..cf12d199 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22707.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From iana at apple.com Tue Oct 16 16:20:22 2012 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Apple Mail support for CONDSTORE +In-Reply-To: +References: +Message-ID: <906475F7-E06F-4677-93E5-D3F53EB0937D@apple.com> + +It was added in OSX in Mountain Lion. Don't know about iOS off the top of my head. + +Ian + +On Oct 16, 2012, at 3:58 PM, John Galton wrote: + +> Does anyone know the specifics about Apple Mail's support of the CONDSTORE extension, in iOS and OSX (e.g. version requirements, hardware, etc)? +> +> The iOS 4.0 release notes ( https://developer.apple.com/library/ios/#releasenotes/General/RN-iPhoneSDK-4_0/_index.html ) claim CONDSTORE support was added in iOS 4.0 but that doesn't appear to be happening from my 2nd gen iPod touch (which runs iOS 4.2.1). +> +> Thanks for your time, +> John +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4383 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22716.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22716.mbox:2,S new file mode 100644 index 00000000..88213cf1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22716.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From Pidgeot18 at verizon.net Sun Sep 30 09:51:18 2012 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] SSL compression attack and IMAP +In-Reply-To: +References: <50682FAB.5030102@flaska.net> + +Message-ID: <50687886.4020507@verizon.net> + +On 9/30/2012 7:57 AM, Timo Sirainen wrote: +> I don't think IMAP protocol is very vulnerable. The vulnerable part of IMAP is the password string, but clients always use the same commands before logging in. After login the only way for attacker to affect the output is by sending emails that the client downloads. So, I guess if: +> +> 1) Attacker finds out which IMAP client is being used. +> +> 2) Attacker finds out how to send emails there, and what exactly they look like (the Received headers etc.) +> +> 3) Keeps tracking when IMAP client is connecting to server, possibly even forces streams to disconnect to make this faster. +> +> 4) Whenever client logs in, send a special mail that tries to crack the password. +> +> That's pretty difficult to do reliably and assumes that clients immediately download new mails. + +You also need to depend heavily on the authentication method used. A +regular LOGIN or an AUTHENTICATE PLAIN is more vulnerable to this than +NTLM, CRAM-MD5, or GSSAPI, particularly since the latter contain nonce +strings that make the utility of the discovered result much less useful. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22719.mbox:2,S new file mode 100644 index 00000000..47230dfe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22719.mbox:2,S @@ -0,0 +1,100 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Aug 16 21:17:40 2012 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: <502DBEA4.2070204@verizon.net> +References: <502DBEA4.2070204@verizon.net> +Message-ID: + +On Thu, 16 Aug 2012, Joshua Cranmer wrote: +> For various reasons, I've been writing my own custom MIME parser. One +> goal I had was to be able to match IMAP's part numbering for all parts, +> so I don't have to pass metadata around on part numbers all the time. +> The parser I've been cribbing off of uses a rather different numbering +> scheme (effectively, anything that can hold a subpart gets a number, so +> the part identified as 3.1 in the example is actually part 1.3.1.1 in +> the internal numbering scheme), so following its logic was completely +> out of the question. On a careful reading of the spec, however, it seems +> that a critical part of the algorithm goes completely undefined. This is +> not noticeable except on an evil message like the following: + +Hmm, can you clarify what part of this you think is undefined? Not well +*implemented*, sure, but let's look at this in the spec... + + +> ------ +> Date: Fri, 01 Jan 2010 12:00 -0500 +> To: x@x.x +> From: y@y.y +> Subject: download on demand problem +> MIME-Version: 1.0 +> Content-Type: message/rfc822 +> +> Date: Fri, 01 Jan 2012 12:00 -0500 +> To: y@y.y +> From: x@x.x +> Subject: Blast from the future +> MIME-Version:1.0 +> Content-Type: text/plain +> +> Do you know what to do when you see this message? +> ------- +> +> What should FETCH BODY[1] return for this message? BODY[1.TEXT]? BODY[1.1]? +> +> I tested the results on 4 different IMAP servers and got 4 different answers: +> [Unknown server, ID returns NIL] +> BODY[TEXT]: The entire inner message +> BODY[1]: The entire inner message +> BODY[1.1]: Do you know... +> BODY[1.MIME]: Headers of the outer message +> BODY[1.HEADER]: Headers of the inner message +> BODY[1.TEXT]: Do you know... + +This is the correct behavior. + + +> [GMail]: +> BODY[TEXT]: The entire inner message +> BODY[1]: NIL +... + +This violates this paragraph from RFC 3501, page 55: + Every message has at least one part number. Non-[MIME-IMB] + messages, and non-multipart [MIME-IMB] messages with no + encapsulated message, only have a part 1. + + +> [Zimbra, specifically 7.2.0_GA_2669]: +> BODY[TEXT]: The entire inner message +> BODY[1]: The entire inner message +> BODY[1.1]: Do you know... +> BODY[1.MIME]: Headers of the outer message +> BODY[1.HEADER]: Headers of the outer message + +This violates this paragraph from RFC 3501, page 55: + The HEADER, HEADER.FIELDS, and HEADER.FIELDS.NOT part + specifiers refer to the [RFC-2822] header of the message or of + an encapsulated [MIME-IMT] MESSAGE/RFC822 message. + +Since BODY[1] refers to the entire inner message, which is an encapsulated +MESSAGE/RFC822 message, BODY[1.HEADER] should be the header of that inner +message. + + +> [Outlook, I'm pretty sure, but it doesn't implement ID]: +> BODY[TEXT]: The entire inner message +> BODY[1]: The entire inner message +> BODY[1.1]: NIL + +This violates this paragraph from RFC 3501, page 55: + A part of type MESSAGE/RFC822 also has nested part numbers, + referring to parts of the MESSAGE part's body. + +...which when combined with the first quote above, means that "1.1" should +be a valid specifier for the inner message's content. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22723.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22723.mbox:2,S new file mode 100644 index 00000000..46581b5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22723.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From jkt at flaska.net Fri Jul 13 16:27:04 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <50006794.6050401@flaska.net> +References: <4FD221F9.8090601@flaska.net> <4FD4EB4B.7050000@flaska.net> + + <4FD75715.2040607@flaska.net> <4FD77DE4.2080602@isode.com> + <50006794.6050401@flaska.net> +Message-ID: <5000AEC8.1020205@flaska.net> + +I've fixed a few ambiguities in my proposed ARRIVED response draft. +Updated version is at [1], source at [2]. These changes are: + +- Clarified that UIDs presented in the ARRIVED response MUST be always +presented in a sorted order +- Used a special non-terminal in the ABNF grammar +- Used correct format for FETCH responses +- Clarify that EXISTS must be sent at least once and SHOULD be sent only +once +- Clarify that ARRIVED MUST NOT occur before the tagged response to +SELECT/EXAMINE +- Clarify that arrivals since the last time are to be reported through +usual UID FETCH, as in old QRESYNC + +This -01 version is also what I've implemented in Trojita under +capability of X-DRAFT-I01-QRESYNC-ARRIVED. A simple conversation is +depicted in a unit test [3]. + +Please accept my apologies if this is too high frequency of updates -- +just let me know and I'll introduce longer delays to the process; I +*have* read the original version after finishing it, yet missed a few +issues -- I should have definitely finished my implementation before +posting. Sorry for that. + +[1] http://trojita.flaska.net/draft-imap-qresync-arrived-01.html +[2] +https://gitorious.org/trojita/trojita/blobs/drafts/draft-imap-qresync-arrived-01/docs/proposed-extensions/draft-imap-qresync-arrived.xml +[3] +https://gitorious.org/trojita/trojita/blobs/drafts/draft-imap-qresync-arrived-01/tests/tests/test_Imap_Tasks_ObtainSynchronizedMailbox/test_Imap_Tasks_ObtainSynchronizedMailbox.cpp#line1948 + +With kind regards, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22726.mbox:2,S new file mode 100644 index 00000000..2ca3f3c2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22726.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From alexey.melnikov at isode.com Mon Jun 11 12:08:01 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <4FD4EB4B.7050000@flaska.net> +References: <4FD221F9.8090601@flaska.net> <4FD4EB4B.7050000@flaska.net> +Message-ID: + +Hi Jan, + +On 10 Jun 2012, at 19:45, Jan Kundr?t wrote: + +> I'm afraid I've found another possible issue with QRESYNC. The RFC5162 +> is pretty clear that servers SHOULD inform only about those UIDs which +> are expunged "right now" through the VANISHED response. Unless I'm +> terribly mistaken, it means that a client has to handle VANISHED +> responses which refer to UIDs which were expunged a long time ago, and +> servers *can* send them and still be called compliant. +> +> I believe that this brings a few issues in the following scenario (where +> mailbox contains one message with UID 5; UIDNEXT is 11, everything is +> synced): +> +> S: * 3 EXISTS +> S: * VANISHED 12:20 +> +> The server is telling me that any UIDs between 12 and 20 are gone. The +> problem is that I don't know whether any message has got this UID, ie. +> whether the messages #2 and #3 (the first and second arrivals) fall into +> that range. What shall a compliant IMAP client do at this point? + +It depends :) + +> Shall I +> remove any messages upon receiving the VANISHED response? Shall I send a +> UID SEARCH command to find out what new messages are really there? +> That'd complicate my code quite a lot, unfortunately. + +In most cases you don't need to do anything. For example if you only cached a part of the mailbox (e.g. N most recent messages), and UIDs listed in VANISHED are below any UID you know about, then you don't really care about removed messages. + +It might make a difference if you want to display the number of messages in the mailbox or use message numbers for some operations. If you cached the whole mailbox, then you know the whole msgno-to-UID map. If you only cached a part, then maybe doing something like "UID FETCH *" (or a similar SEARCH) would help. + +> Even more entertaining would be an interaction where the server +> occasionally sent a regular EXPUNGED instead of VANISHED (it's allowed +> to do so per RFC 5162); that'd lead to an interesting mix of unknowns +> about a mailbox' state... + +I hope no server does that (unless in different sessions, when QRESYNC is enabled in one and not another...). +> +> I'm looking forward to answers about this matter. + +Best Regards, +Alexey + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22729.mbox:2,S new file mode 100644 index 00000000..3db781e4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22729.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From jeff.mckay at comaxis.com Wed May 2 16:28:47 2012 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Gmail IMAP +Message-ID: <4FA1C32F.3030409@comaxis.com> + +I wonder if any IMAP client developers have had problems using the +SELECT statement against +Google Gmail "folders" (labels). I thought this was working fine but +today I was given access to +a customer's account where some folders work and some do not. When they +do not, the response +from the SELECT command is "NO System error (Failure)". I don't see any +difference between +working and non-working folders. All the folders have messages and +work fine using the web +client. I get the folder names from the LIST command. An example of a +failed SELECT would be: + +A101 SELECT "Clearwell" +A101 NO System error (Failure) + +A working example would be: + +A101 SELECT "Intransa" +* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded +$MDNSent) +* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen +$Forwarded $MDNSent \*)] Flags permitted. +* OK [UIDVALIDITY 1315401400] UIDs valid. +* 11 EXISTS +* 0 RECENT +* OK [UIDNEXT 12] Predicted next UID. + +Anybody have an idea about this problem? + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095041.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095041.22732.mbox:2,S new file mode 100644 index 00000000..8ed781e5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095041.22732.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From rfs9999 at earthlink.net Tue Apr 3 16:34:43 2012 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <20120209112411.GB29734@launde.brong.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> +Message-ID: <4F7B8913.4060308@earthlink.net> + +I'm working with an IMAP server which gives errors in response to what +seem to me to be valid FETCH commands. + +BODY[HEADER] works but if I try to select any header fields the IMAP +says 'command argument error'. + +1 fetch 1 (BODY[HEADER.FIELDS (MESSAGE-ID)]) +1 BAD Command Argument Error. 11 + +1 fetch 1 (BODY[HEADER.FIELDS (From)]) +1 BAD Command Argument Error. 11 + +1 fetch 1 (BODY[HEADER.FIELDS (Date)]) +1 BAD Command Argument Error. 11 + +Some info about the server: + +Microsoft Exchange Server 2007 IMAP4 +* CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN STARTTLS +IDLE NAMESPACE LITERAL+ + +I haven't seen any other servers respond this way. What am I missing or +doing wrong? I can send BODY[HEADER] and parse the fields I want from +the response of course if I have to. + +Thanks, +Rick + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22595.mbox:2,S new file mode 100644 index 00000000..d20d9ea6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22595.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Tue Mar 10 08:05:52 2015 +To: imap-protocol@u.washington.edu +From: "Hoa V. Dinh" +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> + +Message-ID: + +It's off topic here. +The mailing list is about IMAP. +It's not about SMTP. + + +-- +Hoa V. Dinh + + +On Tuesday, March 10, 2015 at 4:14 AM, Imants Cekusins wrote: + +> Ok it appears I am not the only one considering current protocol slow. +> I read this a while ago so I do not claim to be a discoverer of this +> solution. +> +> This is what D. J. Bernstein apparently wrote: +> +> +> > The bottleneck in mailing list delivery today is SMTP latency. It typically takes more than ten seconds to transfer a message to another Internet host through SMTP. My mail transfer protocol, QMTP, is much faster, but how can qmail tell whether a remote host supports it? Answer: encode the information into the remote host's MX record. A future version of qmail-remote will support this. My target is 100 million remote deliveries per day on a 16MB machine. +> +> http://cr.yp.to/qmail/future.html +> +> +> > The Quick Mail Transfer Protocol (QMTP) is a replacement for the +> Simple Mail Transfer Protocol (SMTP). QMTP eliminates any need for +> end-of-line scanning between hosts with the same end-of-line +> convention. It features automatic pipelining and chunking, 8-bit +> transmission, prior declaration of the message size, and efficient +> batching. It is designed to be very easy to implement. +> +> +> http://cr.yp.to/proto/qmtp.txt +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22641.mbox:2,S new file mode 100644 index 00000000..a65b7c6f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22641.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 19 05:38:56 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: +References: <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + + +Message-ID: <53608755-7559-4845-8023-d929dfb6e74c@gulbrandsen.priv.no> + +On Wednesday, March 19, 2014 12:56:08 PM CEST, Jan Kundr?t wrote: +> Oops. Thanks for an excellent suggestion, Arnt. It turns out +> that Trojita silenty fails to establish encryption when the +> remote server greets us with an initial PREAUTH. + +PREAUTH is a trouble magnet, IMNSHO. The protocol would have been better +off without it. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22648.mbox:2,S new file mode 100644 index 00000000..2a0672bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22648.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From jkt at flaska.net Fri Jan 24 15:40:49 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + + +Message-ID: <42d20be6-d711-40ba-8377-bde440689f17@flaska.net> + +On Friday, 24 January 2014 20:16:52 CEST, Brandon Long wrote: +> This was done due to the expensive nature of providing that feature with +> the capabilities our backend had. We've been working on adding support +for +> this for some time, but I'm not sure when/if it will ever launch. + +I assume that your official Android application uses something else but +IMAP. If that is the code, does it offer a way of being informed about +changes in e.g. the read/unread status of a message? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22665.mbox:2,S new file mode 100644 index 00000000..f03691c4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22665.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Wed Aug 21 08:46:33 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <8A80BED6-24C0-45D1-AE80-DCB8C79FA4E8@lasselog.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> + + <5214D7D7.8080100@isode.com> + <8A80BED6-24C0-45D1-AE80-DCB8C79FA4E8@lasselog.com> +Message-ID: <133DA207-C219-4676-9D97-9EC5167D41E7@iki.fi> + +On 21.8.2013, at 18.35, Lasse Jansen wrote: + +> Dovecot does apparently if a search command takes longer that 0.1 seconds as Timo mentioned before. I tried his suggestion to force this behavior with a BODY search and it does indeed happen: +> +> 1 UID SEARCH BODY "NOT IN MY MESSAGES" +> 2 UID SEARCH UNSEEN +> * SEARCH 33115 +> * SEARCH +> 1 OK Search completed (7.811 secs). +> 2 OK Search completed (0.000 secs). +> +> The unseen message is reported before the empty search result for the body search. + +I don't remember if that was really intentional though, since the main idea was to be able to send other commands during a long SEARCH, not really to be able to send another SEARCH. It requires adding extra code to prevent that. I think I'll probably add that, since although I'm not convinced the current way is violating RFC 3501, it's also not very helpful behavior for clients. But of course it'll take 10 years before most of the existing servers are upgraded.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22682.mbox:2,S new file mode 100644 index 00000000..6b5bc61e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22682.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From blong at google.com Tue Mar 26 14:26:37 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +Message-ID: + +More than a year ago, we (Gmail) disabled LITERAL+ on our servers. + +This was because of some unfortunate combination of factors. For one, we +have a maximum message size on our server, with no real way to make that +available to IMAP (maybe via GETQUOTA, but if no clients check it, that's +not that useful). For two, we have an inbound bandwidth quota to protect +against both broken clients and attempts to use Gmail IMAP as a storage +system. + +So, if a user attempted to draft a message larger than our limit (35MB), +with LITERAL+, the client would just issue an APPEND with two large a +message. Our options were to just eat the data and say NO afterwards +(great waste of bandwidth) or drop the connection. Some clients would just +keep retrying to do the APPEND until they exhausted the upload bandwidth +quota, or just cost the user a lot of money if they happened to be on a +line that charged. + +So, we disabled LITERAL+... but now I watch some UTF-8 SEARCH commands that +have N literals in them, each requiring a server response, its just kind of +evil. + +I guess we could have the server learn that a user is using a bad client +and disable LITERAL+ automatically, anyone have any other ideas? + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22685.mbox:2,S new file mode 100644 index 00000000..e8e622fb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22685.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From slusarz at curecanti.org Sun Feb 17 23:24:32 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] QRESYNC & Long Command Lines +Message-ID: <20130218002432.Horde.oHbZYiST0vPMI_hKIDlLvg1@bigworm.curecanti.org> + +There seems to be a conflict between the recommendations in RFC 2683 +[3.2.1.5] and the QRESYNC extension to the SELECT/EXAMINE command. + +A user recently reported an issue involving an overly long UID list +passed to the FETCH command. Although not using caching themselves, +while analyzing the issue I quickly realized that there could +potentially be issues in passing a lengthy cached UID list to +SELECT/EXAMINE. + +This particular user's mailbox contained 6-digit UIDs that were not +sequential. In this hypothetical: + +- 1500 cached messages +- non-sequential UIDs +- All UIDs are 6 digits + +...the UID string alone would be approximately 10500 characters (1500 +UIDs * 6 characters + 1499 ',' characters). This doesn't factor in +the rest of the command - or even the optional 4th sequence match +parameter. Obviously, the 1000 character limit for outgoing client +IMAP commands suggested in RFC 2683 has pretty much been obsoleted. + +The concern is that I know at least some IMAP servers have a hard ~8KB +limit on any command. This limit would render QRESYNC useless on +mailboxes over a certain size - or at least diminish the usefulness of +the SELECT/EXAMINE QRESYNC parameters. You could just do a basic +SELECT/EXAMINE and then issue a series of + + tag1 UID FETCH "known-uids" (FLAGS) (CHANGEDSINCE +"mod-sequence-value" VANISHED) + +commands, but that sort of defeats one of the main benefits of QRESYNC +- synchronization in a single command. Not to mention that this is +not anywhere near inherently obvious from reading the RFC and runs +directly counter to one of the main reasons for the extension as +identified in the abstract ("gives an IMAP client the ability to +quickly resynchronize any previously opened mailbox as part of the +SELECT command, without the need for server-side state or **additional +client round-trips**.") + +Is this a valid concern, at least with current IMAP server implementations? + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22688.mbox:2,S new file mode 100644 index 00000000..21b09a13 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22688.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From dave at cridland.net Mon Jan 14 04:39:16 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> +Message-ID: + +FWIW, I find Alexey's postaddress extension rather useful in practise - it +allows the data to be sent once, it remains in control of the MUA +(specifically, the organization of your mail remains within the remit of +the MUA), and it's zero-RTT (in as much as you just add another pipelined +RCPT to your ESMTP transaction). + +BURL is useful in concert for remote assembly of messages (forwarding +messages or attachments); less useful as a generic mechanism because it +radically increases the number of round-trips. + +The setup of BURL from an MUA's perspective is awkward, though, because the +BURL capable submission server provides no hints as to which IMAP server is +to be used, and vice-versa, making discovery a bit hit and miss. +Postaddress (I've a horrible feeling that Alexey's going to correct the +name any second) on the other hand gives you the magic email address to use +out of an extended LIST, making discovery trivial. + +So my summary is that after several years of actively using BURL, I'd +rather have postaddress, which satisfies pretty much everything, but also +keeps us within the Submission+IMAP model. But yeah, BURL's handy for the +1% of messages that postaddress doesn't handle. + +As a final note, while I've no particular objection to a model where the +remote message store can also handle submission (X.400 does this via, erm, +P7, and seems to work just fine), I'm more than a little wary of +introducing such a radical change in model. I don't think I'm clever enough +to spot all the things we may miss. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22697.mbox:2,S new file mode 100644 index 00000000..3abd05bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22697.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From barryleiba at computer.org Tue Dec 11 00:57:11 2012 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] RFC 6154 (SPECIAL-USE) and \Important +In-Reply-To: <78147F1B-B52E-4C3B-A789-C4107E3A6C0C@apple.com> +References: + + <78147F1B-B52E-4C3B-A789-C4107E3A6C0C@apple.com> +Message-ID: + +> I kind of like the idea of amending 6154 to include \Important . 6154 +> already has several Gmail specific mailboxes defined anyway, seems like it +> might as well add \Important. Plus it would discourage people from adding +> their own \Important and then clashing with the established meaning that it +> already has on Gmail. + +Indeed. I think the thing to do is to write an extension that creates +a registry for special-use flags, registers the 6154 flags in it, and +defines and registers \Important. The registry can be defined with a +policy of "First Come, First Served", and can recommend that +documentation be provided. Should be short and simple, and I'll be +happy to help with it if anyone should want to do it. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22701.mbox:2,S new file mode 100644 index 00000000..36b0ea02 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22701.mbox:2,S @@ -0,0 +1,113 @@ +MBOX-Line: From brong at fastmail.fm Wed Nov 14 01:34:05 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Efficiently handling sequence numbers +In-Reply-To: +References: + + + <8560FE55-3E60-4FCF-9B1A-FB0F66D04295@iki.fi> + + <9B0A7B09-AF1D-41E5-A87E-7BD3A6A05DB2@iki.fi> + + +Message-ID: <1352885645.20562.140661153457849.13635384@webmail.messagingengine.com> + +On Wed, Nov 14, 2012, at 01:00 AM, Brandon Long wrote: +> On Sun, Nov 11, 2012 at 6:49 AM, Jan Kundr?t wrote: +> > A graphical MUA typically wants to show a simple statistic like X new, Y +> > unread messages. I can get that number through the STATUS command, but what +> > shall I do when receving EXPUNGE for a message whose flags are not known -- +> > shall the number of the unread messages be decreased? Shall I invoke an +> > explicit SEARCH NOT SEEN? Shall I just sync the flags in such case? (Note +> > that I cannot use STATUS on an already opened mailbox.) +> +> Anyone know what the point of that restriction is? We've had at least one +> client ask us if it was ok, and it works fine on our implementation +> (though, its the actual state of the folder, not the possibly out of date +> view the client has). + +We're careful in Cyrus to return the view that the client has, so that +RECENT counts match up. This is done by fetching the status data from +the open index struct rather than the statuscache (which we also update +at the same time, but obviously with RECENT zeroed out, since other +connections don't see those messages as RECENT. It was kind of a pain +to implement, but it's unconfusing to the clients that way) + +> So, I guess some of these are pretty dated at this point, but client +> support is much more recent. CONDSTORE in particular requires another very +> IMAP specific piece of information in the storage layer which made us wait +> on more client support before taking the expensive plunge. Our lack of +> ESEARCH support is just an embarrassing result of our hand built parser. + +Yes, CONDSTORE is a pain to implement. If/when you do it, make sure to +consider QRESYNC as well. In particular you will need to keep track of +the lowest MODSEQ for which you still have "tombstones" for expunged UIDs. + +In Cyrus we call that "DELETEDMODSEQ". We use it not only for qresync: + + if (params->modseq >= mailbox->i.deletedmodseq) { + /* all records are significant */ + /* List only expunged UIDs with MODSEQ > requested */ + [...] + } + else { + [...] + /* use the sequence to uid mapping provided by the client to + * skip over any initial matches - see RFC 5162 section 3.1 */ + [...] + /* for the rest of the mailbox, we're just going to have to assume + * every record in the requested range which DOESN'T exist has been + * expunged, so build a complete sequence */ + [...] + /* include the space past the final record up to last_uid as well */ + } + +But also for our replication protocol - where if we have the full historical +data we can use the same logic as qresync to just send changes to the replica. + +For replication we also have a thing called 'sync_crc', which is an algorithm +calculated over the entire state of the mailbox at each end. If that doesn't +match up after a sync, we know something got corrupted and we do a full resync +(similar to FETCH 1:* FLAGS but with all the internal metadata and annotations +and foo) to bring the mailboxes back to a consistent state. + +> I'm willing to believe this is only a problem for our ridiculo distributed +> implementation, but I really dislike having O(n) operations like this which +> are just bound to trip at some number of n. Maybe I should instead post to +> the imap5 list that not having sequence numbers would be a good idea. + +Sequence numbers are a win for one particular use case, which seems to be +falling out of favour more and more in real clients. Mostly the are sorting +by date headers or some other complex algorithm rather than just showing the +last 'n' records in UID order. + +O(n) gets to be a problem once N is in the hundreds of thousands, though it's +surprisingly un-bad. We now have a search command (XCONVMULTISORT) which +reads in the index data from every mailbox, applies the search program to +every message, and finally sorts all the matches. It caches to disk, so if +you haven't had a modseq change, and you a query with the same search and +sort parameters, the result can be returned again. This is very useful for +us because said command also supports ranged returns - so you can ask for the +first 30, or the next 30, or 30 messages starting after a particular item. +Caching results makes paging fast. + +I was surprised at just how quickly a search like "UNREAD since:yesterday" +works in our interface (dates get parsed before passing them to IMAP), across +all my folders. I have a good half a million emails, and when I'm in +conversations mode it has to O(n) sweep the whole thing twice, once for the +search and a second time to combine related messages (so there's a hash lookup +on each record too). It returns in under half a second. + +Of course, the index format is only 120 bytes per message, and it's stored on +SSD, but still - O(n) isn't that scary. + +Bron. + + +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22707.mbox:2,S new file mode 100644 index 00000000..f6c6fd2c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22707.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From aclark at ghoti.org Tue Oct 16 16:33:58 2012 +To: imap-protocol@u.washington.edu +From: Ashley Clark +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Apple Mail support for CONDSTORE +In-Reply-To: +References: +Message-ID: + +I don?t recall there being any specific hardware requirements for CONDSTORE support on iOS. There?s certainly not any with recent builds (5.0+). + + +Ashley + +On Oct 16, 2012, at 3:58 PM, John Galton wrote: + +> Does anyone know the specifics about Apple Mail's support of the CONDSTORE extension, in iOS and OSX (e.g. version requirements, hardware, etc)? +> +> The iOS 4.0 release notes ( https://developer.apple.com/library/ios/#releasenotes/General/RN-iPhoneSDK-4_0/_index.html ) claim CONDSTORE support was added in iOS 4.0 but that doesn't appear to be happening from my 2nd gen iPod touch (which runs iOS 4.2.1). +> +> Thanks for your time, +> John +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22719.mbox:2,S new file mode 100644 index 00000000..27d486b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22719.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Thu Aug 16 21:35:49 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: +References: <502DBEA4.2070204@verizon.net> + +Message-ID: <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> + +On 17.8.2012, at 7.17, Philip Guenther wrote: + +>> +>> [Outlook, I'm pretty sure, but it doesn't implement ID]: +>> BODY[TEXT]: The entire inner message +>> BODY[1]: The entire inner message +>> BODY[1.1]: NIL +> +> This violates this paragraph from RFC 3501, page 55: +> A part of type MESSAGE/RFC822 also has nested part numbers, +> referring to parts of the MESSAGE part's body. +> +> ...which when combined with the first quote above, means that "1.1" should +> be a valid specifier for the inner message's content. + +Is it valid? 1.1 makes sense when it's a multipart, in which case it refers to the first MIME part, but is it valid when ther's no multipart? Looks like UW-IMAP allows it, but not 1.1.1, so maybe it was meant to be valid. I could add it to my tests.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22723.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22723.mbox:2,S new file mode 100644 index 00000000..99238f04 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22723.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From jkt at flaska.net Tue Jul 17 10:11:38 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <4FD221F9.8090601@flaska.net> +References: <4FD221F9.8090601@flaska.net> +Message-ID: <50059CCA.6030404@flaska.net> + +On 06/08/12 18:02, Jan Kundr?t wrote: +> Finally, my last question is why does QRESYNC require me to issue an +> ENABLE QRESYNC at all? I feel like the SELECT ... QRESYNC should be +> enough to tell the server that I'm really expecting the VANISHED +> responses. + +I think I have found an answer to this -- if the client doesn't have any +cached state for a particular mailbox, it cannot really SELECT QRESYNC that. + +If it tried to use a HIGHESTMODSEQ = 1, it would risk an enormous amount +of data being transferred in VANISHED EARLIER as the server would have +to inform about each and every expunge which has happened in the mailbox +since its creation. This is due to the known-uids ABNF item format which +doesn't provide any way of sending "nope, I don't know about any UIDs" +-- the list can either be missing, or contain at least one item. + +If I understand everything correctly, ENABLE QRESYNC is therefore still +required as long as one wants to receive VANISHED instead of EXPUNGE. My +apologies for assuming that it's useless :). + +Also is probably means that a QRESYNC-capable clients have to use SELECT +... CONDSTORE when they open a mailbox for the first time. + +I'd appreciate if someone could verify these assumptions -- they look +plausible to me, but I didn't see any flaw in my previous reasoning, +either :). + +With kind regards +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22726.mbox:2,S new file mode 100644 index 00000000..19f0cf87 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22726.mbox:2,S @@ -0,0 +1,149 @@ +MBOX-Line: From alexey.melnikov at isode.com Mon Jun 11 12:22:50 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <4FD221F9.8090601@flaska.net> +References: <4FD221F9.8090601@flaska.net> +Message-ID: <15B1C62B-9221-4A65-94FA-4FADF1616551@isode.com> + +Hi Jan, + +On 8 Jun 2012, at 17:02, Jan Kundr?t wrote: + +> Hi, +> a big part of this mail is probably answered in RFC5162's errata, but +> I'd still like someone to explicitly confirm that how I understand this +> thing is correct. +> +> I'm afraid I have a possible race condition in my code which keeps +> mailbox up to date with server's responses. Right now, my code supports +> CONDSTORE but not QRESYNC. The following bits describe how it behaves +> after the mailbox has been "synced", ie. when my idea about UID -> seq +> mapping matches with the state on server. +> +> In this situation, whenever the program needs to perform something (like +> send the LIST command, issue a FETCH for some body part, store some +> flags through UID STORE etc), the command will be sent to the IMAP +> server almost immediately, and this can in turn trigger many interesting +> responses like EXISTS or EXPUNGE. That's why I'm ready to process them +> at any point, no matter if there's a command in progress or not. I +> believe that I'm handling them correctly now: +> +> - Whenever I receive EXISTS >= current number of messages, I simply add +> the correct number of "empty messages" with UID zero to the end of my +> UID -> seq mapping and to some internal data structure which is in turn +> shown to the user who will see a few "Loading..." placeholders. I also +> immediately queue a UID FETCH previous_uidnext:* FLAGS command. The goal +> is that the UID number will eventually arrive and when they arrive, I +> update my on-disk cache with the obtained data. +> +> - When EXPUNGE arrives, I check the number for correctness (1 <= number +> < mailbox_size) and remove the message which is at that particular +> index. If its UID was not zero, I also remove any data associated with +> that UID from my on-disk cache. If the number was zero, well, the idea +> is that this shouldn't matter at all as I couldn't possibly have any +> useful data for that message in my cache (message parts, envelopes and +> body structure are fetched only after the UID is known). +> +> I'm not sure how to deal with it if I enable QRESYNC, though. The spec +> says that I should be ready for both EXPUNGE and VANISHED. I'd like to +> leave my handling of EXPUNGE unchanged if possible, which means that I +> really have to create and insert the fake UID-0 messages immediately in +> response to increased EXISTS. +> +> The problem is what shall I do when I get VANISHED with a UID which is +> bigger than the highest UID I already know? (Like if a message arrived +> and before I had a chance to ask for its UID, it gets removed through +> VANISHED.) At this point it looks like I can just pick any of the still +> unknown messages in my in-memory state and delete one of them for each +> high UID received in the VANISHED response. I'm a bit nervous about that +> approach, though -- consider the following situation (which is partially +> answered by the QRESYNC errata): +> +> (Mailbox contains one message with UID 5; UIDNEXT is 11, everything is +> synced.) +> +> S: * 12 EXISTS +> C: x UID FETCH 11:* (FLAGS) +> +> (At this point, server sends unsolicited data like FLAGS or even +> BODYSTRUCTURE for the new arrivals. I believe that it's allowed to do so +> per RFC3501.) +> +> S: * 2 FETCH (FLAGS (a) BODYSTRUCTURE ...) +> S: * 3 FETCH (FLAGS (b) ENVELOPE ...) +> +> (I'm on a slow network, so even before my UID FETCH arrives to the +> server, one of these messages is gone and the server sends back VANISHED:) +> +> S: * VANISHED 11 +> +> (The programmer has flipped a coin and hence the code always deletes the +> very last message with UID=0. That means that the message flagged "b" is +> gone and "a" remains.) +> +> S: * 2 FETCH (FLAGS (b) UID 12) +> +> (At this point, client finally gets the UID for the only remaining +> message with UID=0, along with flags. The bad thing is that user has +> already seen a stub message flagged as "a" while in fact there was just +> the "b" one.) + +Right, guessing which of the yet unknown to your client messages got expunged doesn't look right. +> +> After reading the errata, I realize that servers are discouraged from +> not sending UIDs in FETCH responses when QRESYNC has been enabled. Would +> it be reasonable for my client to always ignore FETCH updates which do +> not contain UID when QRESYNC is in effect? + +Yes. + +> (I can easily change my code +> to never issue a FETCH, always UID FETCH with QRESYNC.) + +Good idea. + +> +> My biggest concern is that my code perform potentially intrusive actions +> (like allocating complex structures for BODYSTRUCTURE and actually +> showing them to the user) upon seeing the FETCH responses for a given +> message for the first time. When I receive interleaved VANISHED and +> FETCH-without-UID responses, the result could be confusing to the user +> (and given that I already have an application where the messages are +> pushed into an external DB as soon as they arrive, I can imagine a use +> case where people would want to store only messages with a particular +> flag -- again, the code would get confused in the situation I described +> above.) + +It looks like your code should get smarter if you don't want to just ignore FETCH responses with no UIDs. + +> +> It seems to me that if the QRESYNC extension introduced new * ARRIVED +> response to replace EXISTS in a similar way that +> VANISHED replaces EXPUNGE, the window where client knows about new +> arrivals but doesn't know about the UIDs would cease to exist. Is there +> a particular reason why QRESYNC is not modeled in that way? + +The idea didn't' occur at the time of writing the QRESYNC spec :). +> +> Finally, my last question is why does QRESYNC require me to issue an +> ENABLE QRESYNC at all? I feel like the SELECT ... QRESYNC should be +> enough to tell the server that I'm really expecting the VANISHED +> responses. My biggest issue with ENABLE is that (at least according to +> the last errata by Alfred Hoenes from 2008-03-11 which is "held for +> document update") I'm supposed to wait for untagged ENABLED before +> issuing SELECT ... QRESYNC which introduces another roundtrip to the +> connection process. I'm ignoring this requirement for now, so I'll +> happily pipeline ENABLE QRESYNC with SELECT ... QRESYNC and hope that I +> won't get BAD in response from some pedantic server. I'd love to get +> some comments on this as well. + +ENABLE QRESYNC failing should be a rare event, so doing the optimization you do seems to be Ok, as long as you can handle the BAD response. + +Best Regards, +Alexey + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22729.mbox:2,S new file mode 100644 index 00000000..efbadb78 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22729.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From blong at google.com Wed May 2 16:47:03 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Gmail IMAP +In-Reply-To: <4FA1C32F.3030409@comaxis.com> +References: <4FA1C32F.3030409@comaxis.com> +Message-ID: + +If you can send me the account off list, I can take a look. + +Brandon +On May 2, 2012 4:29 PM, "Jeff McKay" wrote: + +> I wonder if any IMAP client developers have had problems using the SELECT +> statement against +> Google Gmail "folders" (labels). I thought this was working fine but +> today I was given access to +> a customer's account where some folders work and some do not. When they +> do not, the response +> from the SELECT command is "NO System error (Failure)". I don't see any +> difference between +> working and non-working folders. All the folders have messages and work +> fine using the web +> client. I get the folder names from the LIST command. An example of a +> failed SELECT would be: +> +> A101 SELECT "Clearwell" +> A101 NO System error (Failure) +> +> A working example would be: +> +> A101 SELECT "Intransa" +> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded +> $MDNSent) +> * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $Forwarded +> $MDNSent \*)] Flags permitted. +> * OK [UIDVALIDITY 1315401400] UIDs valid. +> * 11 EXISTS +> * 0 RECENT +> * OK [UIDNEXT 12] Predicted next UID. +> +> Anybody have an idea about this problem? +> +> +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095042.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095042.22732.mbox:2,S new file mode 100644 index 00000000..ee250af7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095042.22732.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From tss at iki.fi Tue Apr 3 17:18:29 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <4F7B8913.4060308@earthlink.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> +Message-ID: <721CF40F-AE46-4FB5-B248-90BD91DA3941@iki.fi> + +On 4.4.2012, at 2.34, Rick Sanders wrote: + +> I'm working with an IMAP server which gives errors in response to what seem to me to be valid FETCH commands. +> +> BODY[HEADER] works but if I try to select any header fields the IMAP says 'command argument error'. +> +> 1 fetch 1 (BODY[HEADER.FIELDS (MESSAGE-ID)]) +> 1 BAD Command Argument Error. 11 + +The server is broken, but you could try if using BODY.PEEK instead BODY makes any difference (you should most likely be using that in any case). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22595.mbox:2,S new file mode 100644 index 00000000..79d2513b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22595.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From imantc at gmail.com Tue Mar 10 09:29:19 2015 +To: imap-protocol@u.washington.edu +From: Imants Cekusins +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <0D667625-94F0-4204-AC5A-7B6493496D3C@getboxer.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> + + <0D667625-94F0-4204-AC5A-7B6493496D3C@getboxer.com> +Message-ID: + +so, to summarize majority opinion: + +IMAP & SMTP in their current state: +- are efficient +- lead to efficient hardware utilization +- are simple enough for implementation + +changes to the protocols are not justified + +current selection of email server software offers enough choice. there +is no real need for more alternatives + +? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22641.mbox:2,S new file mode 100644 index 00000000..9f75de2a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22641.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From jkt at flaska.net Wed Mar 19 08:43:18 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +Message-ID: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + +Hi, +given the recent discussion about striving for perfection vs. solving what +needs solving now, what are the list's thoughts about the draft I wrote +half a year ago? It's implemented in Trojita, of course, but I don't know +about any server-side implementation, unfortunately. + + https://tools.ietf.org/html/draft-kundrat-imap-submit-02 + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22648.mbox:2,S new file mode 100644 index 00000000..25549a8c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22648.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From blong at google.com Mon Jan 27 13:36:04 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: <42d20be6-d711-40ba-8377-bde440689f17@flaska.net> +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + + + <42d20be6-d711-40ba-8377-bde440689f17@flaska.net> +Message-ID: + +On Fri, Jan 24, 2014 at 3:40 PM, Jan Kundr?t wrote: + +> On Friday, 24 January 2014 20:16:52 CEST, Brandon Long wrote: +> +>> This was done due to the expensive nature of providing that feature with +>> the capabilities our backend had. We've been working on adding support +>> +> for +> +>> this for some time, but I'm not sure when/if it will ever launch. +>> +> +> I assume that your official Android application uses something else but +> IMAP. If that is the code, does it offer a way of being informed about +> changes in e.g. the read/unread status of a message? +> + +Yes, Android (and some other clients) use an internal API which is based on +a change log, but that logging didn't include IMAP specific information at +the time, and couldn't be used to implement this feature. More recently, +we've updated that log, and its used to support CONDSTORE, and work is +under-way to use it for this feature, but that work is not yet complete. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22665.mbox:2,S new file mode 100644 index 00000000..d146c6ad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22665.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From barryleiba at computer.org Wed Aug 21 09:10:15 2013 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <133DA207-C219-4676-9D97-9EC5167D41E7@iki.fi> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> + + <5214D7D7.8080100@isode.com> + <8A80BED6-24C0-45D1-AE80-DCB8C79FA4E8@lasselog.com> + <133DA207-C219-4676-9D97-9EC5167D41E7@iki.fi> +Message-ID: + +> I don't remember if that was really intentional though, since the main idea was to +> be able to send other commands during a long SEARCH, not really to be able to +> send another SEARCH. It requires adding extra code to prevent that. I think I'll +> probably add that, since although I'm not convinced the current way is violating +> RFC 3501, it's also not very helpful behavior for clients. But of course it'll take +> 10 years before most of the existing servers are upgraded.. + +I don't think any SEARCH pipelining is helpful to clients -- that's a +large part of the reason we did ESEARCH. Because the search results +come in untagged, unlabelled responses that can't be correlated with +the search criteria that match them, any client that tries to pipeline +SEARCH commands is misguided, and is asking for trouble. + +So I don't think you should spend your time on "fixing" this. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22682.mbox:2,S new file mode 100644 index 00000000..ef8c71f8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22682.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tss at iki.fi Tue Mar 26 14:52:27 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: +Message-ID: + +On 26.3.2013, at 23.26, Brandon Long wrote: + +> This was because of some unfortunate combination of factors. For one, we have a maximum message size on our server, with no real way to make that available to IMAP (maybe via GETQUOTA, but if no clients check it, that's not that useful). For two, we have an inbound bandwidth quota to protect against both broken clients and attempts to use Gmail IMAP as a storage system. +> +> So, if a user attempted to draft a message larger than our limit (35MB), + +Seems a bit small limit to me. + +> with LITERAL+, the client would just issue an APPEND with two large a message. Our options were to just eat the data and say NO afterwards (great waste of bandwidth) or drop the connection. Some clients would just keep retrying to do the APPEND until they exhausted the upload bandwidth quota, or just cost the user a lot of money if they happened to be on a line that charged. + +You can answer NO immediately and then eat away the data. I don't know if any clients will handle it though. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22685.mbox:2,S new file mode 100644 index 00000000..6b954455 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22685.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Sun Feb 17 23:11:17 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] QRESYNC & Long Command Lines +In-Reply-To: <20130218002432.Horde.oHbZYiST0vPMI_hKIDlLvg1@bigworm.curecanti.org> +References: <20130218002432.Horde.oHbZYiST0vPMI_hKIDlLvg1@bigworm.curecanti.org> +Message-ID: <8100D6D4-66F1-40C4-A9B2-6A03F8CCC175@iki.fi> + +On 18.2.2013, at 9.24, Michael M Slusarz wrote: + +> There seems to be a conflict between the recommendations in RFC 2683 [3.2.1.5] and the QRESYNC extension to the SELECT/EXAMINE command. +> +> A user recently reported an issue involving an overly long UID list passed to the FETCH command. Although not using caching themselves, while analyzing the issue I quickly realized that there could potentially be issues in passing a lengthy cached UID list to SELECT/EXAMINE. +> +> This particular user's mailbox contained 6-digit UIDs that were not sequential. In this hypothetical: +> +> - 1500 cached messages +> - non-sequential UIDs +> - All UIDs are 6 digits +> +> ...the UID string alone would be approximately 10500 characters (1500 UIDs * 6 characters + 1499 ',' characters). This doesn't factor in the rest of the command - or even the optional 4th sequence match parameter. Obviously, the 1000 character limit for outgoing client IMAP commands suggested in RFC 2683 has pretty much been obsoleted. + +I don't think the idea was to provide all the known UIDs. The first UID range is about giving FLAGS replies only those ones listed. I think it's basically always 1:. Or if you happen to be doing something more special where you're caching only a partial state of the mailbox, you could decide to create for example max. 1000 bytes of UID string and then start merging the UID ranges. You'll get a few bytes of more data but it shouldn't matter that much. + +For the known sequence ranges the idea is to provide some kind of small snapshots around the mailbox, again not everything. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22688.mbox:2,S new file mode 100644 index 00000000..9d2a43dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22688.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From brong at fastmail.fm Mon Jan 14 04:47:45 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + +Message-ID: <1358167665.5340.140661177321561.74A25E5D@webmail.messagingengine.com> + +On Mon, Jan 14, 2013, at 11:39 PM, Dave Cridland wrote: +> As a final note, while I've no particular objection to a model where the +> remote message store can also handle submission (X.400 does this via, erm, +> P7, and seems to work just fine), I'm more than a little wary of +> introducing such a radical change in model. I don't think I'm clever enough +> to spot all the things we may miss. + +The problem is that while we're all trying to be perfect, Exchange is eating +our lunch with "let's just fucking make something which works". + +I'd prefer to miss a few cases than not even try. I seriously find it hard +to believe we're still having this conversation more than 6 years after BURL +was made an RFC (and I assume it was in discussion for a while before then). + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22697.mbox:2,S new file mode 100644 index 00000000..a9b44e63 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22697.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From jkt at flaska.net Tue Dec 11 03:55:01 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: BINARY for broken MIME parts +In-Reply-To: +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + +Message-ID: + +On Tuesday, 11 December 2012 07:16:35 CEST, Brandon Long wrote: +> I would think [PARSE] would be more appropriate than +> UNKNOWN-CTE. Or just stick with [ALERT]. + +ALERT is reserved for situations which MUST be communicated to the user. If the IMAP server cannot decode a particular CTE, another response code shall be used -- this is a condition where the client shall make its decision on how to proceed, but definitely not by showing an ALERT to the user. + +Please, don't use ALERT for this. + +With kind regards, +Jan + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22701.mbox:2,S new file mode 100644 index 00000000..b6e4305c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22701.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From slusarz at curecanti.org Thu Nov 15 20:58:54 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Suspend/Restore feature proposal +Message-ID: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + +All, + +Moving this over from the Dovecot list, where this thread has been +off/on (http://markmail.org/thread/z7ctwle2go6zafas). + +Background: I am a disconnected client author (webmail). Several +years ago, I was in the process of adding extensions like QRESYNC and +LANGUAGE to the code. Staring at IMAP data over the course of several +months, I was depressed/alarmed at the amount of state re-creation +that needed to be done every time we connected to the server which, +for a non-persistent webmail backend, was pretty much for every +action. We needed to do a NAMESPACE, CAPABILITY, (since there was no +guarantee that we are connecting to the same backend IMAP server, it +was/is not possible to cache these values on the client side), ENABLE +QRESYNC, and LANGUAGE call on every user action. + +imapproxy (http://imapproxy.org/) has been around for awhile and +helped with the overhead dealing with establishing the connection +between web backend and IMAP server. However, what would be useful is +that if we could somehow be guaranteed that the imapproxy connection +was restored, rather than being newly created, then we could avoid +having to send all the initialization commands and could reliably +cache the NAMESPACE and CAPABILITY information. So I went and hacked +in the XIMAPPROXY code to imapproxy (see, e.g., +http://squirrelmail.svn.sourceforge.net/viewvc/squirrelmail/trunk/imap_proxy/README?revision=14250), performance increases were significant, and life was +ok. + +But this is far from an ideal solution. Some drawbacks: + - You are limited to a 1 -> 1 backend to imapproxy server mapping, +since there is no way to track which connection is being reused + - It requires a separate service to be maintained. + - It is specific to this proxy server. + +Earlier this year, Timo mentioned that (paraphrasing) imapproxy was +worthless since Dovecot was plenty fast in creating network +connections. While this eliminated one of the benefits of using an +imap proxy it doesn't eliminate the state-restoring optimizations it +hackishly provides. Discussion ensued. It was eventually determined +that some sort of standardized state storage method would be a useful +IMAP addition with the suggestion that maybe a more formalized draft +would be useful to provoke yet more discussion. + +I finally got off my rear and did just that. Below find a +proof-of-concept draft of a proposed SUSPEND extension, complete with +example use cases: + +https://raw.github.com/slusarz/horde-sandbox/master/imap-suspend-draft/draft-imap-suspend-00.txt + +A rough Dovecot server implementation for this kind of feature has +already been created +(http://dovecot.markmail.org/thread/qp45yod5ukqf3jfn). + +Comments/criticisms requested. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22707.mbox:2,S new file mode 100644 index 00000000..9bace487 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22707.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From daniel.keen at gmail.com Tue Oct 16 16:41:56 2012 +To: imap-protocol@u.washington.edu +From: Dan Keen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Apple Mail support for CONDSTORE +In-Reply-To: +References: + +Message-ID: <46533140-ABAD-4213-A83E-7266E12A6D6D@gmail.com> + +There were no hardware requirements in iOS 4. + +Sent from my iPhone + +On Oct 16, 2012, at 16:33, Ashley Clark wrote: + +> I don?t recall there being any specific hardware requirements for CONDSTORE support on iOS. There?s certainly not any with recent builds (5.0+). +> +> +> Ashley +> +> On Oct 16, 2012, at 3:58 PM, John Galton wrote: +> +>> Does anyone know the specifics about Apple Mail's support of the CONDSTORE extension, in iOS and OSX (e.g. version requirements, hardware, etc)? +>> +>> The iOS 4.0 release notes ( https://developer.apple.com/library/ios/#releasenotes/General/RN-iPhoneSDK-4_0/_index.html ) claim CONDSTORE support was added in iOS 4.0 but that doesn't appear to be happening from my 2nd gen iPod touch (which runs iOS 4.2.1). +>> +>> Thanks for your time, +>> John +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22719.mbox:2,S new file mode 100644 index 00000000..8c6de44c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22719.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Aug 16 21:51:59 2012 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> +References: <502DBEA4.2070204@verizon.net> + + <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> +Message-ID: + +On Fri, 17 Aug 2012, Timo Sirainen wrote: +> On 17.8.2012, at 7.17, Philip Guenther wrote: +> >> [Outlook, I'm pretty sure, but it doesn't implement ID]: +> >> BODY[TEXT]: The entire inner message +> >> BODY[1]: The entire inner message +> >> BODY[1.1]: NIL +> > +> > This violates this paragraph from RFC 3501, page 55: +> > A part of type MESSAGE/RFC822 also has nested part numbers, +> > referring to parts of the MESSAGE part's body. +> > +> > ...which when combined with the first quote above, means that "1.1" +> > should be a valid specifier for the inner message's content. +> +> Is it valid? 1.1 makes sense when it's a multipart, in which case it +> refers to the first MIME part, but is it valid when ther's no multipart? +> Looks like UW-IMAP allows it, but not 1.1.1, so maybe it was meant to be +> valid. I could add it to my tests.. + +Flip it around. Given a message, if you nest it inside another message as +a message/rfc822 part, the addressing of its parts are formed by +concatenating the addressing of the part it is nested as and the parts +inside it. + +Given this message +----- +Date: Fri, 01 Jan 2012 12:00 -0500 +To: y@y.y +From: x@x.x +Subject: Blast from the future +MIME-Version:1.0 +Content-Type: text/plain + +Do you know what to do when you see this message? + +----- + +it has a single part, which can be addressed with the specifier "1". So, +if you nest it + +----- +Date: Fri, 01 Jan 2010 12:00 -0500 +To: x@x.x +From: y@y.y +Subject: download on demand problem +MIME-Version: 1.0 +Content-Type: message/rfc822 + +Date: Fri, 01 Jan 2012 12:00 -0500 +To: y@y.y +From: x@x.x +Subject: Blast from the future +MIME-Version:1.0 +Content-Type: text/plain + +Do you know what to do when you see this message? + +----- + +The entire inner message is "1", so the text of the inner message is the +concatenation "1.1". + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22723.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22723.mbox:2,S new file mode 100644 index 00000000..3604b997 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22723.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Jul 17 10:55:35 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <50059CCA.6030404@flaska.net> +References: <4FD221F9.8090601@flaska.net> <50059CCA.6030404@flaska.net> +Message-ID: <5005A717.7050805@isode.com> + +Hi Jan, + +On 17/07/2012 18:11, Jan Kundr?t wrote: +> On 06/08/12 18:02, Jan Kundr?t wrote: +>> Finally, my last question is why does QRESYNC require me to issue an +>> ENABLE QRESYNC at all? I feel like the SELECT ... QRESYNC should be +>> enough to tell the server that I'm really expecting the VANISHED +>> responses. +> +> I think I have found an answer to this -- if the client doesn't have +> any cached state for a particular mailbox, it cannot really SELECT +> QRESYNC that. + +Right. + +> If it tried to use a HIGHESTMODSEQ = 1, it would risk an enormous +> amount of data being transferred in VANISHED EARLIER as the server +> would have to inform about each and every expunge which has happened +> in the mailbox since its creation. This is due to the known-uids ABNF +> item format which doesn't provide any way of sending "nope, I don't +> know about any UIDs" -- the list can either be missing, or contain at +> least one item. + +Yes. + +> If I understand everything correctly, ENABLE QRESYNC is therefore +> still required as long as one wants to receive VANISHED instead of +> EXPUNGE. + +Exactly. + +> My apologies for assuming that it's useless :). +> +> Also is probably means that a QRESYNC-capable clients have to use +> SELECT ... CONDSTORE when they open a mailbox for the first time. + +This can be an option. + +> I'd appreciate if someone could verify these assumptions -- they look +> plausible to me, but I didn't see any flaw in my previous reasoning, +> either :). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22726.mbox:2,S new file mode 100644 index 00000000..8e0e8f61 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22726.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From jkt at flaska.net Tue Jun 12 07:49:57 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: +References: <4FD221F9.8090601@flaska.net> <4FD4EB4B.7050000@flaska.net> + +Message-ID: <4FD75715.2040607@flaska.net> + +Hi Alexey, + +On 06/11/12 21:08, Alexey Melnikov wrote: +>> Shall I remove any messages upon receiving the VANISHED response? +>> Shall I send a UID SEARCH command to find out what new messages are +>> really there? That'd complicate my code quite a lot, +>> unfortunately. +> +> In most cases you don't need to do anything. For example if you only +> cached a part of the mailbox (e.g. N most recent messages), and UIDs +> listed in VANISHED are below any UID you know about, then you don't +> really care about removed messages. +> +> It might make a difference if you want to display the number of +> messages in the mailbox or use message numbers for some operations. +> If you cached the whole mailbox, then you know the whole msgno-to-UID +> map. If you only cached a part, then maybe doing something like "UID +> FETCH *" (or a similar SEARCH) would help. + +I always establish full seq -> UID mapping as the very first thing when +I open a mailbox. The API through which I make the data about a mailbox +accessible to the rest of the application really wants to know how many +messages are there in a mailbox at any time; showing a total number of +messages in a mailbox is one of the use cases, but not the only one. +That's why I react to an EXISTS either by: + +- doing nothing if the number is the same as my current idea of the +number of messages, +- throwing an error if the server tried to decrease the number of +messages against what I believe shall be there, +- asking for UIDs of the new arrivals immediately through UID FETCH +(FLAGS) immediately. + +As soon as my idea of the "total number of messages" begins to differ +from the server's idea, I have trouble. That's an assumption on which +I've built my client; it allows me to deal with EXPUNGEs properly, etc. +My client will essentially show just a "loading..." placeholder until +the UID for a message arrives. + +However, now QRESYNC seems to threaten this model because the server +reports increases in the amount of messages through EXISTS and their +removals through VANISHED. The issue is that there's a window where +VANISHED can refer to messages whose UID is unknown to the client and +that the protocol explicitly allows VANISHED to refer to UIDs which have +never existed in the mailbox -- at least according to my understanding. +I'd love to be proved wrong. + +Unless I'm mistaken, the only completely safe way out of that is to +issue UID SEARCH ALL (or the ESEARCH equivalent) when a VANISHED +referencing "unknown" UIDs arrives at the time the mailbox has messages +whose UID I don't know yet. + +Would you think that this will fly? + +Would a proposal for adding "* ARRIVED 64,65,66" to replace EXISTS have +any real-world chance of getting accepted? + +>> Even more entertaining would be an interaction where the server +>> occasionally sent a regular EXPUNGED instead of VANISHED (it's +>> allowed to do so per RFC 5162); that'd lead to an interesting mix +>> of unknowns about a mailbox' state... +> +> I hope no server does that (unless in different sessions, when +> QRESYNC is enabled in one and not another...). + +Agreed. It's just that now I've implemented the RFC in my client, I'm +afraid there are ways of getting it out-of-sync through "legal" +responses; I'd like to mitigate that. + +With kind regards, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22729.mbox:2,S new file mode 100644 index 00000000..6117bf36 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22729.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu May 3 03:47:13 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> +Message-ID: <19F04AF2-EFBB-4A85-9333-73DE0A6FF476@isode.com> + +Hi Timo, + +On 2 May 2012, at 22:28, Timo Sirainen wrote: + +> I don't think IMAP RFCs actually require any specific behavior for this, so this is more of a "any recommendations?" type of a question: +> +> Clients C1 and C2 send: +> +> C1: a FETCH 1 FLAGS +> S1: * 1 FETCH (FLAGS (\Seen \Answered)) +> S1: a OK +> +> C2: b STORE 1 +FLAGS (\Flagged) +> S2: * 1 FETCH (FLAGS (\Seen \Flagged)) +> S2: b OK +> +> At this point C1 still thinks that 1's flags are (\Seen), and being a little bit stupid it unsets the \Seen flag by sending: +> +> C1: c STORE 1 FLAGS (\Answered) +> +> Now, I think the possible replies are either of these: +> +> S1: * 1 FETCH (FLAGS (\Answered)) +> S1: * 1 FETCH (FLAGS (\Answered \Flagged)) +> +> Dovecot currently sends the first reply, but I've started thinking that perhaps I should change it to the second one. The question is really: Should STORE FLAGS be thought of as +> +> a) Reset all the flags that you have currently, whatever they are, and only set these flags. + +Yes. + +If you want to prevent conflicts above, you need to use CONDSTORE. +> +> or +> +> b) Atomically add these flags I've listed, and remove those that I used to see previously in this session but aren't listed here. +> +> In the case of actual IMAP clients doing this, this is probably almost irrelevant. But it becomes more relevant if you have two IMAP servers doing a 2-way mailbox synchronization after a possibly long disconnection, and the same message's flags are changed in both of them. + +Don't use STORE FLAGS when synchronizing servers ;). I don't. +> +> I haven't really looked at how many of the real world clients are using STORE FLAGS. For those I'd think b) is what they really intend to do. But are there perhaps some specialized clients + [...] + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22732.mbox:2,S new file mode 100644 index 00000000..db28aa26 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22732.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From rfs9999 at earthlink.net Tue Apr 3 18:19:43 2012 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <721CF40F-AE46-4FB5-B248-90BD91DA3941@iki.fi> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> + <721CF40F-AE46-4FB5-B248-90BD91DA3941@iki.fi> +Message-ID: <4F7BA1AF.6040600@earthlink.net> + +> you could try if using BODY.PEEK instead BODY + +Thanks, Timo. Unfortunately the server doesn't like BODY.PEEK either. :-) + +1 fetch 1 (BODY.PEEK[HEADER.FIELDS (DATE)]) +1 BAD Command Argument Error. 11 + +-Rick + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095043.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095043.22743.mbox:2,S new file mode 100644 index 00000000..c91d3722 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095043.22743.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From paul at nfg.nl Sun Mar 4 03:30:20 2012 +To: imap-protocol@u.washington.edu +From: Paul J Stevens +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] recent response in status command +Message-ID: <4F53524C.3000308@nfg.nl> + + +Hi all, + +I'm working on improving IMAP compliance in DBMail, using Timo's test-suite. + +One thing has me stumped in the 'append' test + +Comment in the test reads + +# Two connections have mailbox SELECTed, one doesn't. +# The \recent flags can be given to either one of the SELECTed +connections, + +# but never for the 3rd. We rely on mailbox state tracking to catch +duplicate +# \recent flags (which is why there are two FETCH FLAGS commands). + +I don't understand why a status command on a 3rd session should be able +to see the updated number of recent messages. The 3rd session selecting +the mailbox and fetching the flags *before* one of the selected sessions +fetch them seems perfectly valid to me. + +To me the test reads as if the recent status of all mailboxes should be +frozen at authentication, until a mailbox is selected or examined - but +that would defeat the purpose of the status command as I understand it. + +If someone could shed some light on this I would appreciate it. + +thanks. + + +-- +________________________________________________________________ +Paul J Stevens pjstevns @ gmail, twitter, skype, linkedin + + * Premium Hosting Services and Web Application Consultancy * + + www.nfg.nl/info@nfg.nl/+31.85.877.99.97 +________________________________________________________________ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22595.mbox:2,S new file mode 100644 index 00000000..248b1d94 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22595.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Tue Mar 10 10:17:24 2015 +To: imap-protocol@u.washington.edu +From: "Hoa V. Dinh" +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> + + <0D667625-94F0-4204-AC5A-7B6493496D3C@getboxer.com> + +Message-ID: + +Please stop feeding the troll. + +There are performance issues. I think your knowledge on emails protocols and standards are lacking a little bit to point out the accurate issues. Please do some homework before trying to come up with a solution. + +-- +Hoa V. Dinh + + +On Tuesday, March 10, 2015 at 9:29 AM, Imants Cekusins wrote: + +> so, to summarize majority opinion: +> +> IMAP & SMTP in their current state: +> - are efficient +> - lead to efficient hardware utilization +> - are simple enough for implementation +> +> changes to the protocols are not justified +> +> current selection of email server software offers enough choice. there +> is no real need for more alternatives +> +> ? +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu (mailto:Imap-protocol@u.washington.edu) +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22641.mbox:2,S new file mode 100644 index 00000000..d5a4ab5c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22641.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From slusarz at curecanti.org Wed Mar 19 11:59:19 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + +Message-ID: <20140319125919.Horde.lPfMlZ_d7yz2EYxcLrkFeQ3@bigworm.curecanti.org> + +Quoting Tony Finch : + +> Bron Gondwana wrote: +>> On Wed, Mar 19, 2014, at 08:25 AM, Michael M Slusarz wrote: +>> > +>> > STARTTLS deprecated the use of port 993, which isn't an official IMAP +>> > port FWIW. +> +> What do you mean by "official"? Have you seen RFC 6186? + +Nothing in there registering 993 to IMAP. RFC 6335 registry agrees +that it hasn't been "officially" reserved: + +http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=imaps + +But this is just arguing semantics. Real-world: 993 (& 995) have +universal knowledge as to their current use. + +michael +A + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22648.mbox:2,S new file mode 100644 index 00000000..0763dc55 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22648.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From mg at MIT.EDU Mon Jan 27 13:39:14 2014 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Gmail and IDLE flags changes +In-Reply-To: +References: + <5955E352-F7CD-4DBB-A191-F748CCD3932E@gmail.com> + <52E18829.40305@earthlink.net> + + + + <42d20be6-d711-40ba-8377-bde440689f17@flaska.net> + +Message-ID: + +Is there any way to make CONDSTORE faster? We've noticed it's super slow +for large mailboxes. + + +On Mon, Jan 27, 2014 at 4:36 PM, Brandon Long wrote: + +> +> +> +> On Fri, Jan 24, 2014 at 3:40 PM, Jan Kundr?t wrote: +> +>> On Friday, 24 January 2014 20:16:52 CEST, Brandon Long wrote: +>> +>>> This was done due to the expensive nature of providing that feature with +>>> the capabilities our backend had. We've been working on adding support +>>> +>> for +>> +>>> this for some time, but I'm not sure when/if it will ever launch. +>>> +>> +>> I assume that your official Android application uses something else but +>> IMAP. If that is the code, does it offer a way of being informed about +>> changes in e.g. the read/unread status of a message? +>> +> +> Yes, Android (and some other clients) use an internal API which is based +> on a change log, but that logging didn't include IMAP specific information +> at the time, and couldn't be used to implement this feature. More +> recently, we've updated that log, and its used to support CONDSTORE, and +> work is under-way to use it for this feature, but that work is not yet +> complete. +> +> Brandon +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22665.mbox:2,S new file mode 100644 index 00000000..83aeb57c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22665.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Aug 21 09:30:43 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> + + <5214D7D7.8080100@isode.com> + <8A80BED6-24C0-45D1-AE80-DCB8C79FA4E8@lasselog.com> + <133DA207-C219-4676-9D97-9EC5167D41E7@iki.fi> + +Message-ID: <5214EB33.8020105@isode.com> + +On 21/08/2013 17:10, Barry Leiba wrote: +>> I don't remember if that was really intentional though, since the main idea was to +>> be able to send other commands during a long SEARCH, not really to be able to +>> send another SEARCH. It requires adding extra code to prevent that. I think I'll +>> probably add that, since although I'm not convinced the current way is violating +>> RFC 3501, it's also not very helpful behavior for clients. But of course it'll take +>> 10 years before most of the existing servers are upgraded.. +> I don't think any SEARCH pipelining is helpful to clients -- that's a +> large part of the reason we did ESEARCH. Because the search results +> come in untagged, unlabelled responses that can't be correlated with +> the search criteria that match them, any client that tries to pipeline +> SEARCH commands is misguided, and is asking for trouble. +> +> So I don't think you should spend your time on "fixing" this. ++1. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22682.mbox:2,S new file mode 100644 index 00000000..162a6759 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22682.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From slusarz at curecanti.org Tue Mar 26 15:30:25 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + +Message-ID: <20130326163025.Horde.rCiAnaUmvPUaLmL5tkpnSA1@bigworm.curecanti.org> + +Quoting Timo Sirainen : + +> On 26.3.2013, at 23.26, Brandon Long wrote: +> +>> with LITERAL+, the client would just issue an APPEND with two large +>> a message. Our options were to just eat the data and say NO +>> afterwards (great waste of bandwidth) or drop the connection. Some +>> clients would just keep retrying to do the APPEND until they +>> exhausted the upload bandwidth quota, or just cost the user a lot +>> of money if they happened to be on a line that charged. +> +> You can answer NO immediately and then eat away the data. I don't +> know if any clients will handle it though. + +Probably not. Especially if the client is pipelining the data with +the LITERAL+ argument. + +Anyway, this is a known issue: +http://tools.ietf.org/html/rfc4549#section-4.2.2.3 We explicitly +disable LITERAL+ for our APPEND actions for precisely this reason - to +capture NO responses before we send potentially large data payloads +(although we compromise a bit and only disable LITERAL+ if the literal +data is greater than 0.5 MB. No magic about that number - just a guess +at the cost/benefit of wasted bandwidth vs. waiting for literal +confirmation). + +I think you've already laid out the only 2 sane choices: either take +the bandwidth hit to send the proper response or immediately drop the +connection, albeit at the expense of making people think your software +is "broken". For the former, you can issue a CLIENTBUG response code +in the hopes that maybe a client author will see it and fix their +APPEND usage. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22685.mbox:2,S new file mode 100644 index 00000000..69a9ef2d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22685.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From jkt at flaska.net Mon Feb 18 10:23:41 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: QRESYNC & Long Command Lines +In-Reply-To: <20130218002432.Horde.oHbZYiST0vPMI_hKIDlLvg1@bigworm.curecanti.org> +References: <20130218002432.Horde.oHbZYiST0vPMI_hKIDlLvg1@bigworm.curecanti.org> +Message-ID: <2deda4fd-081b-4b1c-9702-269c3b6bca25@flaska.net> + +On Monday, 18 February 2013 08:24:32 CEST, Michael M Slusarz wrote: +> The concern is that I know at least some IMAP servers have a +> hard ~8KB limit on any command. This limit would render +> QRESYNC useless on mailboxes over a certain size - or at least +> diminish the usefulness of the SELECT/EXAMINE QRESYNC +> parameters. + +My client doesn't use the known-uids argument (we always build and maintain the full seq-UID mapping), so I have not spent much time reasoning about that argument. However, Trojita sends a list of known seq-uid pairs. The list is built similarly to the example in RFC5162 by halving the intervals between the included UIDs, starting in the middle of the mailbox (i.e. if the mailbox contains 1000 messages, the first UID belongs to the message #500, the second one to #750, the third one to #875 etc). It's a rather crude heuristic assuming that the probability of an expunge lowers proportionally to how long the message has been present in the mailbox. + +I believe that clients should always send the fourth argument to prevent a pathologic case of QRESYNC where it is in fact less efficient than a session without QRESYNC, see the example on page 6 of the RFC. My guess (not based on any evidence) is that it's reasonable to assume that servers do not maintain a list of expunges indefinitely and that it's plausible that the client will every now and then sync using a HIGHESTMODSEQ which the server no longer remembers. If that is the case and the currently assigned UIDs are sparse, QRESYNC will have to return more data than a simple UID SEARCH ALL, so in my opinion it makes sense to send O(log2 n) extra numbers in each sync. Your expected usage pattern might be different, though. + +Now, about the third argument, the known-uids -- Timo's suggestion is a good one. What to do here depends on how you handle the FLAGS. If you cache them in a persistent location, it probably makes sense to always send a big enough range of UIDs so that the IMAP server can notify you upon sync time about any changes, eliminating the need to explicitly FETCH FLAGS later on (and to keep track of which messages have fresh flags and which are stale). If you, however, always show just a subset of messages to the user, it might be reasonable to get rid of this client-side caching and to not cache the UIDs for messages which are never going to be shown. + +CONDSTORE and QRESYNC are life savers for clients that maintain a fully synchronized view of the whole mailbox (speaking about FLAGS and UIDs now, *not* envelopes and other immutable data!) such as Trojita. If your client is +optimized towards a different goal, especially when you do not cache flags between sessions and your knowledge of the UID-seq mapping is sparse, it seems to me that these extensions do not provide much benefit over simply doing a sync with the facilities from baseline RFC3501. I might be wrong, as always, so please feel free to correct me. + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22688.mbox:2,S new file mode 100644 index 00000000..28cddfd7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22688.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Mon Jan 14 04:48:35 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> +Message-ID: <1358167715.10326.11.camel@innu> + +On Mon, 2013-01-14 at 22:32 +1100, Bron Gondwana wrote: +> I have ranted about this at length about the state of this. I don't +> think BURL is going to be a solution which gains wide adoption, though +> I'd love to see a convincing argument from anyone who's rolled it out +> to anything other than a corporate-style network where the clients, +> servers and intermediate networks are all controlled by a single +> organisation. + +What's wrong with BURL in non-corporate networks, except maybe stupid +firewalls that break the SMTP traffic? + +Currently the main problem that I see with BURL is that no open source +SMTP/submission servers support it without patching (but I expect that +to change soon). + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22697.mbox:2,S new file mode 100644 index 00000000..71a21769 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22697.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Dec 11 04:05:36 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: BINARY for broken MIME parts +In-Reply-To: +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + + +Message-ID: <50C72190.9040508@isode.com> + +On 11/12/2012 11:55, Jan Kundr?t wrote: +> On Tuesday, 11 December 2012 07:16:35 CEST, Brandon Long wrote: +>> I would think [PARSE] would be more appropriate than UNKNOWN-CTE. Or +>> just stick with [ALERT]. +> +> ALERT is reserved for situations which MUST be communicated to the +> user. If the IMAP server cannot decode a particular CTE, another +> response code shall be used -- this is a condition where the client +> shall make its decision on how to proceed, but definitely not by +> showing an ALERT to the user. +> +> Please, don't use ALERT for this. ++1. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22701.mbox:2,S new file mode 100644 index 00000000..a56464b8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22701.mbox:2,S @@ -0,0 +1,95 @@ +MBOX-Line: From blong at google.com Thu Nov 15 22:06:10 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Suspend/Restore feature proposal +In-Reply-To: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> +Message-ID: + +At the very least, I think you need to specify exactly what state is +maintained. + +I also think ideas like a server which supports suspend can't issue +capability at login is non-starter. Just because the server supports this +suspend, doesn't mean all the clients will, and it makes no sense to punish +the other clients for this. + +Also, wouldn't something like the RECONNECT proposal from lemonade make +more sense, actually connecting to the exact state? + +Can't we just pipeline all of this? + +And frankly, the amount of state needed to transfer on reconnect for actual +folder state can be high (though, not as bad with CONDSTORE/QRESYNC). + +Brandon + + +On Thu, Nov 15, 2012 at 8:58 PM, Michael M Slusarz wrote: + +> All, +> +> Moving this over from the Dovecot list, where this thread has been off/on ( +> http://markmail.org/thread/**z7ctwle2go6zafas +> ). +> +> Background: I am a disconnected client author (webmail). Several years +> ago, I was in the process of adding extensions like QRESYNC and LANGUAGE to +> the code. Staring at IMAP data over the course of several months, I was +> depressed/alarmed at the amount of state re-creation that needed to be done +> every time we connected to the server which, for a non-persistent webmail +> backend, was pretty much for every action. We needed to do a NAMESPACE, +> CAPABILITY, (since there was no guarantee that we are connecting to the +> same backend IMAP server, it was/is not possible to cache these values on +> the client side), ENABLE QRESYNC, and LANGUAGE call on every user action. +> +> imapproxy (http://imapproxy.org/) has been around for awhile and helped +> with the overhead dealing with establishing the connection between web +> backend and IMAP server. However, what would be useful is that if we could +> somehow be guaranteed that the imapproxy connection was restored, rather +> than being newly created, then we could avoid having to send all the +> initialization commands and could reliably cache the NAMESPACE and +> CAPABILITY information. So I went and hacked in the XIMAPPROXY code to +> imapproxy (see, e.g., http://squirrelmail.svn.**sourceforge.net/viewvc/** +> squirrelmail/trunk/imap_proxy/**README?revision=14250), +> performance increases were significant, and life was ok. +> +> But this is far from an ideal solution. Some drawbacks: +> - You are limited to a 1 -> 1 backend to imapproxy server mapping, since +> there is no way to track which connection is being reused +> - It requires a separate service to be maintained. +> - It is specific to this proxy server. +> +> Earlier this year, Timo mentioned that (paraphrasing) imapproxy was +> worthless since Dovecot was plenty fast in creating network connections. +> While this eliminated one of the benefits of using an imap proxy it +> doesn't eliminate the state-restoring optimizations it hackishly provides. +> Discussion ensued. It was eventually determined that some sort of +> standardized state storage method would be a useful IMAP addition with the +> suggestion that maybe a more formalized draft would be useful to provoke +> yet more discussion. +> +> I finally got off my rear and did just that. Below find a +> proof-of-concept draft of a proposed SUSPEND extension, complete with +> example use cases: +> +> https://raw.github.com/**slusarz/horde-sandbox/master/** +> imap-suspend-draft/draft-imap-**suspend-00.txt +> +> A rough Dovecot server implementation for this kind of feature has already +> been created (http://dovecot.markmail.org/**thread/qp45yod5ukqf3jfn +> ). +> +> Comments/criticisms requested. +> +> michael +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22707.mbox:2,S new file mode 100644 index 00000000..df51db26 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22707.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From thomas.dressler at 1und1.de Wed Oct 24 12:29:38 2012 +To: imap-protocol@u.washington.edu +From: Thomas Dressler +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] rfc-5258 LIST Command Extensions +Message-ID: <508841A2.4010602@1und1.de> + +Hi, + +i am a litle bit confused about some examples in rfc-5258 (page 17): +C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*" +S: * LIST () "/" "foo2" ("CHILDINFO" ("SUBSCRIBED")) +S: * LIST (\Subscribed) "/" "foo2/bar1" +S: * LIST (\Subscribed) "/" "foo2/bar2" +S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED")) +S: * LIST (\Subscribed) "/" "baz2/bar2" +S: * LIST (\Subscribed) "/" "baz2/bar22" +S: * LIST (\Subscribed) "/" "baz2/bar222" +S: * LIST (\Subscribed) "/" "eps2" ("CHILDINFO" ("SUBSCRIBED")) +S: * LIST (\Subscribed) "/" "eps2/mamba" +S: * LIST (\Subscribed) "/" "qux2/bar2" +S: D03 OK done + +baz2 is returned, and baz2 is not supscribed. +i miss the following response: +* LIST (\NonExistent) "/" qux2 ("CHILDINFO" ("SUBSCRIBED")) + +why is qux2 not returned? i don't undertsand the difference in the examples +between list-mailbox "*" and "*2". in "*2" example the responses for "baz2" +and "qux2" are disabled (because redundant information), "foo2" is +listed (because +it have an not matched chield). +in "*" example "baz2" is listed and "qux2" not. +the only difference is: "baz2" exists and "qux2" not. + +in wich situations should "LIST (RECURSIVEMATCH SUBSCRIBED)" return an +mailbox, +which is not subscribed? + +are there some rfc-conform implementations, for testing/orientating? + +bye +ThomasD + +PS: +the second example in rfc-5819 is an invalid commandline (there must be +an SP before mailbox): +C: A02 LIST (SUBSCRIBED RECURSIVEMATCH)"" % RETURN (STATUS (MESSAGES)) + + +-- +Thomas Dressler +Software-Entwickler + +1&1 Internet AG - Mail System Development +Brauerstrasse 48 DE-76135 Karlsruhe +Telefon: +49 721 91374-6790 +thomas.dressler@1und1.de + +Amtsgericht Montabaur / HRB 6484 +Vorstaende: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Thomas Gottschlich, Robert Hoffmann, Markus Huhn, Hans-Henning Kettler, Dr. Oliver Mauss, Jan Oetjen +Aufsichtsratsvorsitzender: Michael Scheeren + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22719.mbox:2,S new file mode 100644 index 00000000..4f4028b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22719.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Thu Aug 16 22:01:30 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: +References: <502DBEA4.2070204@verizon.net> + + <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> + +Message-ID: + +On 17.8.2012, at 7.51, Philip Guenther wrote: + +>>> This violates this paragraph from RFC 3501, page 55: +>>> A part of type MESSAGE/RFC822 also has nested part numbers, +>>> referring to parts of the MESSAGE part's body. +>>> +>>> ...which when combined with the first quote above, means that "1.1" +>>> should be a valid specifier for the inner message's content. +>> +>> Is it valid? 1.1 makes sense when it's a multipart, in which case it +>> refers to the first MIME part, but is it valid when ther's no multipart? +>> Looks like UW-IMAP allows it, but not 1.1.1, so maybe it was meant to be +>> valid. I could add it to my tests.. +> +> Flip it around. Given a message, if you nest it inside another message as +> a message/rfc822 part, the addressing of its parts are formed by +> concatenating the addressing of the part it is nested as and the parts +> inside it. + +Yes, after thinking about it for a while I agree. Added it to my tests. Anyway, [1.MIME] isn't a valid request in Joshua's test mail. I also changed Dovecot to return an empty string for it and for [1.1.1], maybe it'll help to avoid client developer confusion in future. :) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22726.mbox:2,S new file mode 100644 index 00000000..eaed2493 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22726.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Jun 12 10:35:32 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] QRESYNC and new arrivals which get deleted + immediately through VANISHED +In-Reply-To: <4FD75715.2040607@flaska.net> +References: <4FD221F9.8090601@flaska.net> <4FD4EB4B.7050000@flaska.net> + + <4FD75715.2040607@flaska.net> +Message-ID: <4FD77DE4.2080602@isode.com> + +On 12/06/2012 15:49, Jan Kundr?t wrote: +> Hi Alexey, + +Hi Jan, + +> On 06/11/12 21:08, Alexey Melnikov wrote: +>>> Shall I remove any messages upon receiving the VANISHED response? +>>> Shall I send a UID SEARCH command to find out what new messages are +>>> really there? That'd complicate my code quite a lot, +>>> unfortunately. +>> In most cases you don't need to do anything. For example if you only +>> cached a part of the mailbox (e.g. N most recent messages), and UIDs +>> listed in VANISHED are below any UID you know about, then you don't +>> really care about removed messages. +>> +>> It might make a difference if you want to display the number of +>> messages in the mailbox or use message numbers for some operations. +>> If you cached the whole mailbox, then you know the whole msgno-to-UID +>> map. If you only cached a part, then maybe doing something like "UID +>> FETCH *" (or a similar SEARCH) would help. +> I always establish full seq -> UID mapping as the very first thing when +> I open a mailbox. The API through which I make the data about a mailbox +> accessible to the rest of the application really wants to know how many +> messages are there in a mailbox at any time; showing a total number of +> messages in a mailbox is one of the use cases, but not the only one. +> That's why I react to an EXISTS either by: +> +> - doing nothing if the number is the same as my current idea of the +> number of messages, +> - throwing an error if the server tried to decrease the number of +> messages against what I believe shall be there, +> - asking for UIDs of the new arrivals immediately through UID FETCH +> (FLAGS) immediately. +> +> As soon as my idea of the "total number of messages" begins to differ +> from the server's idea, I have trouble. That's an assumption on which +> I've built my client; it allows me to deal with EXPUNGEs properly, etc. +> My client will essentially show just a "loading..." placeholder until +> the UID for a message arrives. +> +> However, now QRESYNC seems to threaten this model because the server +> reports increases in the amount of messages through EXISTS and their +> removals through VANISHED. The issue is that there's a window where +> VANISHED can refer to messages whose UID is unknown to the client and +> that the protocol explicitly allows VANISHED to refer to UIDs which have +> never existed in the mailbox -- at least according to my understanding. +> I'd love to be proved wrong. + +My server doesn't reference UIDs which never existed, but I would not be +surprised if other do. So you can't make this assumption. + +> Unless I'm mistaken, the only completely safe way out of that is to +> issue UID SEARCH ALL (or the ESEARCH equivalent) when a VANISHED +> referencing "unknown" UIDs arrives at the time the mailbox has messages +> whose UID I don't know yet. +I thought ignoring data for UIDs you don't know was an Ok idea. But if you really can't do that, that should work. Although I would change that to "UID SEARCH:*" instead. As this will generate less traffic (and the server needs to do less work). + + +> Would you think that this will fly? +> +> Would a proposal for adding "* ARRIVED 64,65,66" to replace EXISTS have +> any real-world chance of getting accepted? +Even if it would be, we can't just add "ARRIVED" to QRESYNC, because it +is an RFC and I believer there are multiple server implementations +already. We can reopen the document and define a new IMAP capability, +but in short to medium term your code would have to handle the current +situation anyway... + +>>> Even more entertaining would be an interaction where the server +>>> occasionally sent a regular EXPUNGED instead of VANISHED (it's +>>> allowed to do so per RFC 5162); that'd lead to an interesting mix +>>> of unknowns about a mailbox' state... +>> I hope no server does that (unless in different sessions, when +>> QRESYNC is enabled in one and not another...). +> Agreed. It's just that now I've implemented the RFC in my client, I'm +> afraid there are ways of getting it out-of-sync through "legal" +> responses; I'd like to mitigate that. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22729.mbox:2,S new file mode 100644 index 00000000..f0e938a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22729.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu May 3 04:48:48 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> +Message-ID: <4FA270A0.3040003@gulbrandsen.priv.no> + +Timo wrote: +> Clients C1 and C2 send: + +It can also be connections C1 and C2 by the same client. If it is, C1 is +perfectly aware of what you told C2, and Dovecot is right today and +would be broken by your suggested change. + +(IMO STORE FLAGS is a PITA.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22732.mbox:2,S new file mode 100644 index 00000000..1f73d7e9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22732.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From dkarp at zimbra.com Tue Apr 3 18:44:06 2012 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <4F7BA1AF.6040600@earthlink.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> + <721CF40F-AE46-4FB5-B248-90BD91DA3941@iki.fi> + <4F7BA1AF.6040600@earthlink.net> +Message-ID: <558673177.37525.1333503846416.JavaMail.root@zimbra.com> + +> Thanks, Timo. Unfortunately the server doesn't like BODY.PEEK +> either. :-) +> +> 1 fetch 1 (BODY.PEEK[HEADER.FIELDS (DATE)]) +> 1 BAD Command Argument Error. 11 + +(Note that this is a correct response if there are no messages +in the mailbox.) + +- Dan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22743.mbox:2,S new file mode 100644 index 00000000..2c1411e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22743.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Sun Mar 4 03:49:49 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] recent response in status command +In-Reply-To: <4F53524C.3000308@nfg.nl> +References: <4F53524C.3000308@nfg.nl> +Message-ID: + +On 4.3.2012, at 13.30, Paul J Stevens wrote: + +> One thing has me stumped in the 'append' test +> +> # Two connections have mailbox SELECTed, one doesn't. +> # The \recent flags can be given to either one of the SELECTed +> connections, +> +> # but never for the 3rd. We rely on mailbox state tracking to catch +> duplicate +> # \recent flags (which is why there are two FETCH FLAGS commands). +> +> I don't understand why a status command on a 3rd session should be able +> to see the updated number of recent messages. The 3rd session selecting +> the mailbox and fetching the flags *before* one of the selected sessions +> fetch them seems perfectly valid to me. + +I'm not entirely sure what you mean. Anyway, what the test is supposed to do is: + + - 1 and 2 connections have mailbox selected + - 1 connection APPENDs a new message + - most servers assign \recent flag to connection 1 before APPEND returns tagged OK + - just in case some server might have assigned it to 2nd connection, the 2nd connection does a NOOP + - now imaptest knows that the \recent must be in either connection 1 or connection 2 (both connections have informed the client with EXISTS that there are new messages, so the \recent flag must have been set) + - (if there had been yet another EXAMINEd mailbox, I guess it could also show the message as \recent, but imaptest doesn't create such a connection) + - any further connections that SELECT/EXAMINE/STATUS the mailbox won't see the message as \recent (by definition of how \recent works) + - so the 3rd connection's STATUS should see updated message/unseen count, but recent count must be 0 + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095044.22746.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095044.22746.mbox:2,S new file mode 100644 index 00000000..edcdf5e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095044.22746.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Feb 7 11:55:50 2012 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Matadata (5464) Implementation Limits +Message-ID: + +I'm curious to know what the implementation limits are on servers that support the Metadata extension. I would appreciate it if the server authors out there could take a minute to fill out this survey. + +I will send a summary to the list once the responses trickle off. (If you want your results to be anonymous, say so in the comments.) + +Thanks, + +--lyndon + +Implementation name and version: +Do you support /private?: +Do you support /private/vendor?: +Do you support unsolicited Metadata responses without values?: +Do you support unsolicited Metadata responses with values?: +Maximum number of annotations per mailbox: +Maximum size of an : +Maximum size of a : +Maximum depth supported in : +Other comments: diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22595.mbox:2,S new file mode 100644 index 00000000..66e05783 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22595.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tjs at psaux.com Tue Mar 10 09:53:45 2015 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> + + + <80feadb5-24d0-4be9-a6d9-7885f422ad07@flaska.net> + + <0D667625-94F0-4204-AC5A-7B6493496D3C@getboxer.com> + +Message-ID: + +> On Mar 10, 2015, at 9:29 AM, Imants Cekusins wrote: +> +> so, to summarize majority opinion: +> +> IMAP & SMTP in their current state: +> - are efficient +> - lead to efficient hardware utilization +> - are simple enough for implementation +> +> changes to the protocols are not justified +> +> current selection of email server software offers enough choice. there +> is no real need for more alternatives + +No, this is a poor summary. + +IMAP and SMTP are constants of the ecosystem. They are problematic but a replacement is far more difficult. + +The trade offs between binary and text protocols are complex, but unlikely to be the bottleneck for an I/O bound protocol. Parsing isn't what makes a mail server expensive. + +Writing the parser is perhaps the easiest part of writing an email server, although writing an IMAP parser is quite tedious. Binary helps a little here but not enough to justify starting over. + +Adding a new server to the set of IMAP, SMTP, and POP3 adds great expense since for the foreseeable future, we won't be able to stop using the old protocols. + +Setting up Postfix and Dovecote is easier than writing email systems from scratch. + +Tim diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22641.mbox:2,S new file mode 100644 index 00000000..b879ad03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22641.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From cloos at jhcloos.com Wed Mar 19 12:04:16 2014 +To: imap-protocol@u.washington.edu +From: James Cloos +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + (Bron Gondwana's message of "Wed, 19 Mar 2014 11:04:13 +1100") +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> +Message-ID: + +>>>>> "BG" == Bron Gondwana writes: + +BG> Your hypothetical MITM just strips the "LOGINDISABLED" capability +BG> response, and anything saying that the server supports TLS, and the +BG> client goes ahead and sends the credentials in cleartext. + +The ietf consensus was that having every protocol which wants to use tls +require a second port number was impractical; that some mechanism was +required to support unencrypted and encrypted connections on a single port. + +Clients can have OOB knowledge that tls must be used; many UIs have a +checkbox, config-file setting or the like to specify whether tls is +desired or required for a given server. Clients configured to expect +starttls will abort if it does not work. + +Servers also can require tls, even when using startls to initiate it, +for access to some or all resources. TLS-level client authentication +probably is required to prevent a MITM unless the clients are all +configured to demand tls for said server. + +Some servers (ipp servers are known to do this) also support recognizing +tls vs plaintext at the start of a session and doing the right thing. + +In the specific case of imap, I'd prefer to configure servers to demand +starttls before permitting any authentication, and to inform the users +to configure their clients always to demand startls. + +Perhaps with rfc 5054 support, where possible. + +-JimC +-- +James Cloos OpenPGP: 1024D/ED7DAEA6 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22648.mbox:2,S new file mode 100644 index 00000000..b5349f0e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22648.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From xims at xylon.de Wed Jan 29 05:57:41 2014 +To: imap-protocol@u.washington.edu +From: Xims +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] ABNF Question regarding parsing of BODYSTRUCTURE + FETCH responses +Message-ID: + +Dear all, + +I seem to be missing a crucial information or some fundamental +understanding. Probably the latter. :) + +I have a standard BODYSTRUCTURE response in the following form (I +removed the leading stuff): + +((("text" "plain" ("charset" "UTF-8") NIL NIL "quoted-printable" 5143 +177 NIL NIL NIL NIL)("text" "html" ("charset" "UTF-8") NIL NIL +"quoted-printable" 38975 930 NIL NIL NIL NIL) "alternative" ("boundary" +"----=_NextPart_001_0080_01CEC0E1.57D56320") NIL NIL NIL)("image" "jpeg" +("name" "image001.jpg") "" NIL "base64" +5634 NIL NIL NIL NIL) "related" ("boundary" +"----=_NextPart_000_007F_01CEC0E1.57D56320") NIL ("de") NIL) + + +Now if I follow the ABNF, I get from msg-att-static to body. So far so +good. But if I look at the body definition, it recursively calls body +from body-type-mpart (because of the parentheses). But that rule states: + + body-type-mpart = 1*body SP media-subtype [SP body-ext-mpart] + + +which to me seems as after every body a SP and media-subtype etc should +follow. So I parse the first body-type-1part correctly, but then my +parser expects a space afterwards. Where did I go wrong when following +the ABNF rules or what am I missing? + + +Thank you a lot in advance and best regards, +Florian + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22665.mbox:2,S new file mode 100644 index 00000000..b2edf68a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22665.mbox:2,S @@ -0,0 +1,11 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Aug 21 11:00:18 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> + +Message-ID: <466fa36a-1178-4cba-8cf1-a9111e5aac1a@email.android.com> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22682.mbox:2,S new file mode 100644 index 00000000..b6088e49 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22682.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From blong at google.com Tue Mar 26 16:03:03 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + +Message-ID: + +On Tue, Mar 26, 2013 at 2:52 PM, Timo Sirainen wrote: + +> On 26.3.2013, at 23.26, Brandon Long wrote: +> +> > This was because of some unfortunate combination of factors. For one, +> we have a maximum message size on our server, with no real way to make that +> available to IMAP (maybe via GETQUOTA, but if no clients check it, that's +> not that useful). For two, we have an inbound bandwidth quota to protect +> against both broken clients and attempts to use Gmail IMAP as a storage +> system. +> > +> > So, if a user attempted to draft a message larger than our limit (35MB), +> +> Seems a bit small limit to me. +> + +Heh, sure, we get that from some users from time to time, but almost every +part of our system requires loading the whole message into memory at some +point (or two copies), and that adds up quick. And its fairly typical from +the major webmail providers. And frankly, SMTP is a pretty poor file +transfer protocol, what with the base64 encoding and the lack of +checksumming or restartability and the duplicate delivery vagueness. + +And that limit is advertised via EHLO at SMTP time, but there's no +mechanism for doing that with IMAP. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22685.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22685.mbox:2,S new file mode 100644 index 00000000..c11f193c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22685.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dinh.viet.hoa at gmail.com Thu Feb 28 14:19:58 2013 +To: imap-protocol@u.washington.edu +From: =?utf-8?Q?Ho=C3=A0_V._Dinh?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] CONDSTORE RFC typo +Message-ID: + +Hi IMAPers, + +In the ABNF definition of CONDSTORE (RFC 4551), here what we can read for the extension of resp-text-code. + + resp-text-code =/ "HIGHESTMODSEQ" SP mod-sequence-value / + "NOMODSEQ" / + "MODIFIED" SP set + +I think we should we rather read the following: + + resp-text-code =/ "HIGHESTMODSEQ" SP mod-sequence-value / + "NOMODSEQ" / + "MODIFIED" SP sequence-set + + +RFC 1730 and RFC 2060 mentioned "set". It's been changed to sequence-set in RFC 3501. +Therefore, I think the same name should be applied in RFC 4551. + +-- +Ho? V. Dinh + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22688.mbox:2,S new file mode 100644 index 00000000..624fe7bd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22688.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From alexey.melnikov at isode.com Mon Jan 14 04:56:17 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <1358167715.10326.11.camel@innu> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + <1358167715.10326.11.camel@innu> +Message-ID: <50F40071.3080809@isode.com> + +On 14/01/2013 12:48, Timo Sirainen wrote: +> On Mon, 2013-01-14 at 22:32 +1100, Bron Gondwana wrote: +>> I have ranted about this at length about the state of this. I don't +>> think BURL is going to be a solution which gains wide adoption, though +>> I'd love to see a convincing argument from anyone who's rolled it out +>> to anything other than a corporate-style network where the clients, +>> servers and intermediate networks are all controlled by a single +>> organisation. +> What's wrong with BURL in non-corporate networks, except maybe stupid +> firewalls that break the SMTP traffic? +> +> Currently the main problem that I see with BURL is that no open source +> SMTP/submission servers support it without patching (but I expect that +> to change soon). +Exactly! Many IMAP servers supports URLAUTH. I haven't seen many SMTP +servers that support BURL. (Isode M-Switch does, yay! Buy Isode software +;-)). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22697.mbox:2,S new file mode 100644 index 00000000..0b0d9311 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22697.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From slusarz at curecanti.org Tue Dec 11 12:36:59 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + +Message-ID: <20121211133659.Horde.l5mdoRCy0RtyMMLrnOij-Q1@bigworm.curecanti.org> + +Quoting Brandon Long : + +> On Mon, Dec 10, 2012 at 9:56 PM, Timo Sirainen wrote: +> +>> a FETCH 1 BINARY[1] +>> * 1 FETCH (BINARY[1] NIL) +>> a OK [UNKNOWN-CTE] Invalid input? + +As a client author, I would rather see this return with a NO tagged +response. This indicates that there is something wrong with the part +and the user can be notified that the part is unavailable ("this part +is broken! have sender re-send the message(?)") or, alternatively, the +UI can hide the part. In the above example, our client would simply +disregard the UNKNOWN-CTE as irrelevant. + +>> I don't know how clients currently handle UNKNOWN-CTE. Maybe some would +>> think that if it's returned then the server can never decode that +>> content-transfer-encoding?.. +> +> I would think [PARSE] would be more appropriate than UNKNOWN-CTE. Or just +> stick with [ALERT]. + +Agree with others that ALERT doesn't make sense. My interpretation of +ALERT is that its contents are independent of command interaction, +especially since there is no temporal requirement that alerts are +displayed when they are received. + +Not sure if UNKNOWN-CTE is correct either since: in the example given, +it's a known CTE that the server can handle. It is bad message data +instead. + +Although for that matter, PARSE doesn't seem to work either since it +is defined as an inability to parse the (MIME) headers of a section. +In this example, the headers are fine - it's the body that is broken. + +I would throw out CORRUPTION as a possibility. + +> Also, what if there is more than one message requested? We usually just +> fail to return the broken message and respond NO to the whole fetch, but +> return all the non-broken messages. + +See above. I would agree that this is probably the best solution. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22701.mbox:2,S new file mode 100644 index 00000000..264405e0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22701.mbox:2,S @@ -0,0 +1,129 @@ +MBOX-Line: From slusarz at curecanti.org Fri Nov 16 13:31:37 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + +Message-ID: <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + +Quoting Brandon Long : + +> At the very least, I think you need to specify exactly what state is +> maintained. + +Point taken: this isn't explicitly defined in the draft. State as +intended by the draft means that if a connection is RESUMEd, it would +be impossible to tell the difference in the authenticated state from +when the SUSPEND command was issued. In other words, the server +connection state would be identical to what it was at the time the +SUSPEND command (that created the suspend token) was issued. + +Maybe a better way to describe is that SUSPEND/RESUME is intended to +allow a server to save the current IMAP configuration between sessions. + +> I also think ideas like a server which supports suspend can't issue +> capability at login is non-starter. Just because the server supports this +> suspend, doesn't mean all the clients will, and it makes no sense to punish +> the other clients for this. + +One of the decisions I made when creating the draft was when to +initiated resumption of the saved state. For some reason, I was +thinking that somehow being in the authenticated state, versus the not +authenticated state, made a difference when it came to security +concerns. Looking at this decision now, that is obviously not the case. + +If a client is going to use a non-secure authentication method, then +it doesn't really matter *when* the server token is sent to the server +- it's going to be insecure. So requiring the RESUME command to be +sent after authentication doesn't address that concern. + +The RESUME command SHOULD be sent before authentication occurs, if +possible. (We can't restrict the command to only the +not-authenticated state since PREAUTH connections are dumped directly +into the authenticated state, where they should be able to RESUME if +necessary.) Allowing RESUME to be sent before authentication would +have several advantages: + + - It addresses your concern. If a client passes a valid suspend +token before authentication, the server will know at the time of +recreating the state that the CAPABILITY command, or any other +untagged initialization response it wants to send, does not need to be +sent. Non-SUSPEND clients, and SUSPEND clients that have yet to +receive a token, would continue to received these untagged responses. + + - From a server implementer's POV this may be a more efficient way +to resume. Not familiar with how any particular server works, but it +seems that a server could leverage the fact that it is re-using +session state instead of having to create a new session and then +immediately toss this session out when a RESUME command is immediately +issued after authentication. + +> Also, wouldn't something like the RECONNECT proposal from lemonade make +> more sense, actually connecting to the exact state? + +I assume you would be talking about this: + +http://tools.ietf.org/html/draft-ietf-lemonade-reconnect-07 + +I don't claim to be an expert but I *think* this is what eventually +became QRESYNC. The reconnect draft was focused on reconnecting to a +server with the intention of grabbing all changes to a particular +mailbox from a previous connection. + +Conversely, The SUSPEND draft doesn't care at all about the state of +ANY mailbox. It only seeks to restore the configuration so that the +client doesn't unnecessarily spend time having to recreate these +commands (which have no bearing on information eventually presented to +the end-user) every time it connects. + +The IMAP landscape has changed immensely since that draft was first +proposed (2004). Back then there was no need to affirmatively enable +any IMAP features. Since then, the following commands have been +defined in extensions that require the client to proactively implement +before they can be used: + +COMPRESS=DEFLATE +ENABLE (CONDSTORE/QRESYNC) +LANGUAGE +COMPARATOR +CONVERSIONS +saved CONTEXTs +NOTIFY + +Use of these advanced features become prohibitively expensive to a +disconnected client if they have to be configured every time that +client reconnects. + +I tried to avoid listing the exact extensions that compromise server +configuration state in an attempt to keep the draft short and to allow +for future expandability. But such a discussion/list might be +necessary for clarity. + +> Can't we just pipeline all of this? + +You can't pipeline all necessary commands. For example, if the server +doesn't send CAPABILITY on authentication, that needs to be grabbed +before any other commands can be sent. + +And other commands may rely on pre-existing commands. LANGUAGE should +be sent first since human-readable messages should be shown in that +language immediately. If you pipeline that command with other +commands, there is no guarantee that the LANGAUGE command is handled +first. + +> And frankly, the amount of state needed to transfer on reconnect for actual +> folder state can be high (though, not as bad with CONDSTORE/QRESYNC). + +I don't understand why folder (i.e. mailbox) state needs to be saved? +As mentioned in the draft, the net result of a successful RESUME is +that the client is left in the authenticated state. A server does not +need to keep state information for mailboxes when in this mode. + +Thanks for the comments. I will update the draft to, at a minimum, +reflect the RESUME usage discussed above. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22707.mbox:2,S new file mode 100644 index 00000000..1ffb08a8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22707.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From jkt at flaska.net Sun Oct 28 15:30:15 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Decoding RFC2047-encoded data from ENVELOPE fields +Message-ID: <508DB1F7.5050409@flaska.net> + +Hi, +I'm writing some test cases for my RFC2047 decoder. It is used only for +decoding of data which come from IMAP's ENVELOPE fetch item, so it +doesn't deal with stuff like comments. + +What's the correct decoding of "Domen =?UTF-8?Q?Ko=C5=BEar?=" -- is the +space found after "Domen" in the input to be included in the decoded +output? This is a real example of what Evolution 2.30.2 produces (my +apologies to Domen for bringing the attention to his mail). Thunderbird +renders that as two words separated by space. + +I'm asking because an example in the RFC says that this: + "(=?ISO-8859-1?Q?a?= b)" +shall decode into "(ab)". There's no example for the other order of +elements. + +Cheers, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22719.mbox:2,S new file mode 100644 index 00000000..1eed59ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22719.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Aug 16 22:16:47 2012 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: +References: <502DBEA4.2070204@verizon.net> + + <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> + + +Message-ID: + +On Fri, 17 Aug 2012, Timo Sirainen wrote: +... +> Anyway, [1.MIME] isn't a valid request in Joshua's test mail. + +Chapter and verse, please? + +(There are specific restrictions on when HEADER and TEXT are valid, but no +such restrictions are specified for the MIME part specifier...) + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22726.mbox:2,S new file mode 100644 index 00000000..57899dcb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22726.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From tss at iki.fi Tue Jun 19 11:55:58 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + CATENATE +Message-ID: <1340132158.5967.46.camel@hurina> + +I don't think their interaction is specified anywhere? I think strictly +reading the RFCs it means that: + +Server is allowed to modify only the data in literal8 part. If CATENATE +first added a header using regular literal: + +Content-Type: application/msword +Content-Transfer-Encoding: binary + +and then attempted to send another part as literal8, the server would +have to fail with UNKNOWN-CTE, because it's not allowed to replace the +Content-Transfer-Encoding with base64 anymore since it wasn't in +literal8. Also it wouldn't be possible to use a CATENATE URL to add a +binary file, because a URL isn't a literal8. + +Another way of thinking would be that if literal8 was used for the +header, the rest of the message would be allowed to be binary even if +the parts aren't literal8. + +And the 3rd way of thinking would be that if a literal8 was used +anywhere in the literal at all, the server would be allowed to modify +the whole message. This would make it rather annoying to handle, because +the server wouldn't know if it needs to do any changes until it has +received and parsed the entire CATENATE command. + +I'm thinking that I'll make my server only do the conversion if the +CATENATE begins with a literal8. If it doesn't and a literal8 is later +seen, the APPEND would fail with UNKNOWN-CTE. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22729.mbox:2,S new file mode 100644 index 00000000..ff5e2053 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22729.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Thu May 3 07:07:15 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> +Message-ID: <7596.1336054035.886533@puncture> + +On Wed May 2 22:28:46 2012, Timo Sirainen wrote: +> C1: a FETCH 1 FLAGS +> S1: * 1 FETCH (FLAGS (\Seen \Answered)) +> S1: a OK +> +> C2: b STORE 1 +FLAGS (\Flagged) +> S2: * 1 FETCH (FLAGS (\Seen \Flagged)) +> S2: b OK +> +> +I think S2's response here is wrong - specifically, I can't see why +the server shouldn't respond including \Answered from the first +session. But I admit that very close concurrency might make that hard +- though really, I'd find that worrying - I expect flag changes to be +atomic. + +> At this point C1 still thinks that 1's flags are (\Seen), and being +> a little bit stupid it unsets the \Seen flag by sending: +> +> C1: c STORE 1 FLAGS (\Answered) + +That's very stupid. It's not said "Remove \Seen", it's said "Set the +flags to these". + +> S1: * 1 FETCH (FLAGS (\Answered)) +> S1: * 1 FETCH (FLAGS (\Answered \Flagged)) +> +> Dovecot currently sends the first reply, but I've started thinking +> that perhaps I should change it to the second one. The question is +> really: Should STORE FLAGS be thought of as +> +> a) Reset all the flags that you have currently, whatever they are, +> and only set these flags. + +Only ever this. Anything else strikes me as fundamentally wrong. + +If it responds with the second reply, I'd take that to mean that some +other client had set \Flagged, between the server acting on my set, +and before it responded. Surprising, but I'd cope. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22732.mbox:2,S new file mode 100644 index 00000000..e4ecfc68 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22732.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From rfs9999 at earthlink.net Tue Apr 3 19:03:16 2012 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <558673177.37525.1333503846416.JavaMail.root@zimbra.com> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> + <721CF40F-AE46-4FB5-B248-90BD91DA3941@iki.fi> + <4F7BA1AF.6040600@earthlink.net> + <558673177.37525.1333503846416.JavaMail.root@zimbra.com> +Message-ID: <4F7BABE4.3050503@earthlink.net> + + +> (Note that this is a correct response if there are no messages +> in the mailbox.) + +Good point. I should have mentioned that this happens even when there +are messages in the mailbox: + +1 select Big.Box +* 5 EXISTS +* 0 RECENT +* FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent) +* OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft +$MDNSent)] Permanent flags +* OK [UIDVALIDITY 17873] UIDVALIDITY value +* OK [UIDNEXT 9] The next unique identifier value +1 OK [READ-WRITE] SELECT completed. +1 fetch 1 (BODY[HEADER (DATE)]) +1 BAD Command Argument Error. 11 + +-Rick + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22743.mbox:2,S new file mode 100644 index 00000000..f7830bd1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22743.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From paul at nfg.nl Sun Mar 4 05:31:42 2012 +To: imap-protocol@u.washington.edu +From: Paul J Stevens +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] recent response in status command +In-Reply-To: +References: <4F53524C.3000308@nfg.nl> + +Message-ID: <4F536EBE.7080509@nfg.nl> + + +Timo, + +Thanks for your reply, + +On 03/04/2012 12:49 PM, Timo Sirainen wrote: +>> I don't understand why a status command on a 3rd session should be able +>> to see the updated number of recent messages. + +Ai, I meant: I don't understand why the 3rd session *can't* see the +updated number of recent messages. + +>> The 3rd session selecting +>> the mailbox and fetching the flags *before* one of the selected sessions +>> fetch them seems perfectly valid to me. +> +> I'm not entirely sure what you mean. Anyway, what the test is supposed to do is: +> +> - 1 and 2 connections have mailbox selected +> - 1 connection APPENDs a new message +> - most servers assign \recent flag to connection 1 before APPEND returns tagged OK + +That smells to me like an implementation dependent choice, not a +protocol dictated requirement. + +> - just in case some server might have assigned it to 2nd connection, the 2nd connection does a NOOP +> - now imaptest knows that the \recent must be in either connection 1 or connection 2 (both connections have informed the client with EXISTS that there are new messages, so the \recent flag must have been set) + +I'm here to learn, but I don't see this in the specs. + +Returning an updated EXISTS response in a session doesn't imply that +later on the client will actually request the message flags. + +I understand a \recent flag must never be returned more than once or in +more than one session. But as I (re)read rfc3501 a \recent flag is not +assigned to a session until a FETCH FLAGS response was returned. + +> - (if there had been yet another EXAMINEd mailbox, I guess it could also show the message as \recent, but imaptest doesn't create such a connection) +> - any further connections that SELECT/EXAMINE/STATUS the mailbox won't see the message as \recent (by definition of how \recent works) +> - so the 3rd connection's STATUS should see updated message/unseen count, but recent count must be 0 + +I get the feeling there are undocumented semantics in play here. Doing a +STATUS doesn't affect the mailbox, fine. So even when a STATUS response +returns a RECENT > 0, it seems perfectly valid to me if subsequence +SELECT/FETCH on the same mailbox with the same session don't return any +messages with the \recent flag. + +What the test seems to imply is that following transcript with two +sessions A and B is incorrect. + +A status mailbox (messages unseen recent) +* status mailbox (messages 1 unseen 1 recent 1) +A select mailbox +* 1 exists +* 1 recent +... +A ok [read-write] select completed + +B status mailbox (messages unseen recent) +* status mailbox (messages 1 unseen 1 recent 1) +B select mailbox +* 1 exists +* 1 recent +... +B ok [read-write] select completed +B fetch 1 flags +* 1 fetch (flags (\recent)) +B ok fetch completed + +A fetch 1 flags +* 1 fetch (flags ()) +A ok fetch completed + + +-- +________________________________________________________________ +Paul J Stevens pjstevns @ gmail, twitter, skype, linkedin + + * Premium Hosting Services and Web Application Consultancy * + + www.nfg.nl/info@nfg.nl/+31.85.877.99.97 +________________________________________________________________ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22746.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22746.mbox:2,S new file mode 100644 index 00000000..48d80e23 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22746.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From brong at fastmail.fm Wed Feb 8 12:15:26 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Designing a new replacement protocol for IMAP +Message-ID: <1328732126.32086.140661033971485@webmail.messagingengine.com> + +I've given up on the IMAP5 mailing list going endlessly around in circles, +though I'm definitely going to read through the backlogs and remind myself +again what everyone spoke about, because there was some excellent discussion. + +So - I will build something and prove that it's good by showing improved +user experiences. + +And I'm happy to keep talking here on these mailing lists too. + +I've started a wiki page: + +http://imapwiki.org/ReplacementProtocol + +and plan to blog about what I'm doing on our own (Opera's) blogging platform, +to practice using it: + +http://my.opera.com/brongondwana/blog/ + +I plan to make on a protocol which can replace IMAP in most of its current +uses. I want to get (at least) two working server implementations, and +two working clients. I have at least in-principle support from enough +project maintainers to do that. + +My strong philosophical ideals are: + +* Simple to build clients - morons welcome. If it's not clear the right way + to do something to someone just reading a protocol dump, we haven't done a + good enough job. We can't expect you to read 30 RFCs and resolve their + conflicts yourself before starting coding, and we won't insult you if you + didn't get it right. Where there is necessary complexity, the server + authors bear the brunt. + +* Server side data model compatible with IMAP4 + extensions; we need to + be able to co-exist. + +* Handle disconnection more gracefully - able to cheaply resync state (I + plan to reuse the QRESYNC/CONDSTORE logic here - the model is sane). + Getting reliable updates on mailbox state changes should not require a + continuous connection. + +* Easy to proxy - regular syntax (UTF-8 for all communications where + possible, but won't screw about trying to "fix" MIME - message file + format will remain unchanged) + +* NO MAGIC - everything is explicitly requested. No UNSELECT/CLOSE/ + SELECT another mailbox special behaviours, no implicit FETCH + SET \Seen, + no pre-calculated "UNSEEN X" that wasn't asked for. (This probably means + some way to compose actions and fetches, but it's better than being + complex and magical. Remember our friends the morons.) + +* COMPLETE TEST SUITE that exercises every constraint in the spec, both + positive and negative constraints. An implementation which passes the + tests is compliant. An implementation which doesn't is not. This is + much more likely to produce inter-operable implementations than a wordy + spec ... + + ... if the authors want inter-operability that is. Nothing can + protect against a deliberate embrace and extend - though negative + constraint tests (MUST NOT) should help. + + +I would love input. I spent most of the time at FOSDEM this year talking to +other people involved in email about these ideas. I quite like the mailbox +model behind IMAP, but I want to address the pain points I have seen so many +times over the years. + +Snide comments from those who don't agree with the goals are welcome too... +I just won't listen to you. These goals are very important to me. + +Regards, + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095045.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095045.22749.mbox:2,S new file mode 100644 index 00000000..35fb4d57 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095045.22749.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From janssen at parc.com Mon Jan 9 16:02:29 2012 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] "normalized message ID" in RFC 5256? +Message-ID: <67105.1326153749@parc.com> + +I'm re-implementing my threading code, and I had a question about the +language about "normalized message IDs" found in RFC 5256. That seems +to refer to section 3.6.4 of RFC 2822: the implication is that the +DQUOTEs in "no-fold-quote" and the "[" and "]" brackets in +"no-fold-literal" should be removed before comparing message-ids. + +Is that correct? Is this spelled out anywhere else? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22595.mbox:2,S new file mode 100644 index 00000000..c8fd9c95 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22595.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Tue Mar 10 14:22:40 2015 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: +References: <54FAEB94.4070508@lavabitllc.com>, + , + +Message-ID: <54FF60A0.5138.18BCFD72@David.Harris.pmail.gen.nz> + +I absolutely hate writing "me too" messages, and abhor top posting, but here I am +doing both... Just wanted to throw my 2c in and say that Tim is right on the money +with this post - agree with every sentiment, especially the rebuttal of the utterly +bizarre contention that it's easier to write a mail server than to set one up. + +The simple reality of things as they stand is that IMAP, SMTP and even (god forbid +- I can hear Mark spinning angrily as I say this) POP are so entrenched that +replacing them would be a herculean task that quite likely would not offer rewards +commensurate with its pain and misery. + +Don't get me wrong - there are things I absolutely *loathe* about IMAP (implied part +numbering in bodystructures being the biggest one), but it's what we've got: I for +one have negative enthusiasm for spending another ten years in bitter arguments +over some slightly "improved" replacement. + +Cheers! + +-- David -- + + +On 10 Mar 2015 at 9:53, Tim Showalter wrote: + +> > On Mar 10, 2015, at 9:29 AM, Imants Cekusins +> > wrote: +> > +> > so, to summarize majority opinion: +> > +> > IMAP & SMTP in their current state: +> > - are efficient +> > - lead to efficient hardware utilization +> > - are simple enough for implementation +> > +> > changes to the protocols are not justified +> > +> > current selection of email server software offers enough choice. +> > there is no real need for more alternatives +> +> No, this is a poor summary. +> +> IMAP and SMTP are constants of the ecosystem. They are problematic but +> a replacement is far more difficult. +> +> The trade offs between binary and text protocols are complex, but +> unlikely to be the bottleneck for an I/O bound protocol. Parsing isn't +> what makes a mail server expensive. +> +> Writing the parser is perhaps the easiest part of writing an email +> server, although writing an IMAP parser is quite tedious. Binary helps +> a little here but not enough to justify starting over. +> +> Adding a new server to the set of IMAP, SMTP, and POP3 adds great +> expense since for the foreseeable future, we won't be able to stop +> using the old protocols. +> +> Setting up Postfix and Dovecote is easier than writing email systems +> from scratch. +> +> Tim + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Real newspaper headlines from US Papers: + "Two soviet ships collide - one dies". + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22641.mbox:2,S new file mode 100644 index 00000000..45a7da82 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22641.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From slusarz at curecanti.org Wed Mar 19 12:21:59 2014 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <53608755-7559-4845-8023-d929dfb6e74c@gulbrandsen.priv.no> +References: <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + + + <53608755-7559-4845-8023-d929dfb6e74c@gulbrandsen.priv.no> +Message-ID: <20140319132159.Horde.CpARW7j5F6OgSt8te3iCaA1@bigworm.curecanti.org> + +Quoting Arnt Gulbrandsen : + +> On Wednesday, March 19, 2014 12:56:08 PM CEST, Jan Kundr?t wrote: +>> Oops. Thanks for an excellent suggestion, Arnt. It turns out that +>> Trojita silenty fails to establish encryption when the remote +>> server greets us with an initial PREAUTH. +> +> PREAUTH is a trouble magnet, IMNSHO. The protocol would have been +> better off without it. + +Agreed. And (unlikely scenario, but...) what can you do if you want +to auth as another user? You will never get the chance. Also the +fact you don't even know what user you are preauth'd as. + +Wondering if it makes sense for our library to reject PREAUTH by +default due to some of these issues. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22648.mbox:2,S new file mode 100644 index 00000000..bddff452 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22648.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jan 29 06:55:06 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] ABNF Question regarding parsing of BODYSTRUCTURE + FETCH responses +In-Reply-To: +References: +Message-ID: <5ceef93d-2727-462b-8ddb-fc02344c6a72@gulbrandsen.priv.no> + +On Wednesday, January 29, 2014 2:57:41 PM CEST, xims@xylon.de wrote: +> which to me seems as after every body a SP and media-subtype +> etc should follow. So I parse the first body-type-1part +> correctly, but then my parser expects a space afterwards. Where +> did I go wrong when following the ABNF rules or what am I +> missing? + +1*body means "one or more instances of body". The SP media-subtype matches +things like ' "alternative"' and ' "related"' in your example. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22665.mbox:2,S new file mode 100644 index 00000000..fd96d6a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22665.mbox:2,S @@ -0,0 +1,7 @@ +MBOX-Line: From hazy memory: In case of ambiguity, the server must process the commands in the order received? +To: imap-protocol@u.washington.edu + +Arnt +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22682.mbox:2,S new file mode 100644 index 00000000..c68f49bd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22682.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Mar 27 03:03:57 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + + +Message-ID: + +On 26 Mar 2013, at 23:03, Brandon Long wrote: + +> On Tue, Mar 26, 2013 at 2:52 PM, Timo Sirainen wrote: +> On 26.3.2013, at 23.26, Brandon Long wrote: +> +> > This was because of some unfortunate combination of factors. For one, we have a maximum message size on our server, with no real way to make that available to IMAP (maybe via GETQUOTA, but if no clients check it, that's not that useful). For two, we have an inbound bandwidth quota to protect against both broken clients and attempts to use Gmail IMAP as a storage system. +> > +> > So, if a user attempted to draft a message larger than our limit (35MB), +> +> Seems a bit small limit to me. +> +> Heh, sure, we get that from some users from time to time, but almost every part of our system requires loading the whole message into memory at some point (or two copies), and that adds up quick. And its fairly typical from the major webmail providers. And frankly, SMTP is a pretty poor file transfer protocol, what with the base64 encoding and the lack of checksumming or restartability and the duplicate delivery vagueness. +> +> And that limit is advertised via EHLO at SMTP time, but there's no mechanism for doing that with IMAP. + +Let's standardize a way to advertise such limit. I might have use for it as well. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22688.mbox:2,S new file mode 100644 index 00000000..c6c40f66 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22688.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From tss at iki.fi Mon Jan 14 04:56:48 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + +Message-ID: <1358168208.10326.16.camel@innu> + +On Mon, 2013-01-14 at 12:39 +0000, Dave Cridland wrote: +> +> The setup of BURL from an MUA's perspective is awkward, though, +> because the BURL capable submission server provides no hints as to +> which IMAP server is to be used, and vice-versa, making discovery a +> bit hit and miss. + +User (or automation) already has to configure IMAP and submission server +to MUA, so how does BURL make it any more difficult? I'd expect it to +work like: + +1. client APPENDs/CATENATEs message to IMAP server +2. client requests URLAUTH URL +3. client connects to submission server +4. client sends message with BURL + +If user has managed to configure someone else's submission server, then +either BURL isn't supported or BURL fails, and step 4 is replaced with +regular DATA command. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22697.mbox:2,S new file mode 100644 index 00000000..2bde4514 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22697.mbox:2,S @@ -0,0 +1,100 @@ +MBOX-Line: From blong at google.com Tue Dec 11 12:47:59 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: <20121211133659.Horde.l5mdoRCy0RtyMMLrnOij-Q1@bigworm.curecanti.org> +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + + <20121211133659.Horde.l5mdoRCy0RtyMMLrnOij-Q1@bigworm.curecanti.org> +Message-ID: + +I'm confused about the consensus against ALERT. + +This is an error condition that doesn't have a correct error code defined, +how is the client supposed to know what the error is to tell the user? The +server does know the exact error condition, however. + +In general, I haven't understood the new error responses as "replacements" +for ALERT, as they're not backward compatible. A client which gets an +error response is doesn't understand does what, nothing? So if I change an +ALERT to a CANNOT, I'm just having clients which don't know CANNOT drop +information instead of helping the user. + +I'm also not sure what the client is supposed to do in this situation +except display an error to the user. Do you expect the client to fall back +to a non-binary fetch and hope it has better luck with decoding than the +server did? And that's on top of the fact that the client doesn't even +know which message was broken. + +Anyways, CORRUPTION to me implies errors accumulated in transport or +storage, which the user might attribute to the server, which is hardly the +case if the message was broken when the server acquired it. + +Brandon + + +On Tue, Dec 11, 2012 at 12:36 PM, Michael M Slusarz +wrote: + +> Quoting Brandon Long : +> +> On Mon, Dec 10, 2012 at 9:56 PM, Timo Sirainen wrote: +>> +>> a FETCH 1 BINARY[1] +>>> * 1 FETCH (BINARY[1] NIL) +>>> a OK [UNKNOWN-CTE] Invalid input? +>>> +>> +> As a client author, I would rather see this return with a NO tagged +> response. This indicates that there is something wrong with the part and +> the user can be notified that the part is unavailable ("this part is +> broken! have sender re-send the message(?)") or, alternatively, the UI can +> hide the part. In the above example, our client would simply disregard the +> UNKNOWN-CTE as irrelevant. +> +> +> I don't know how clients currently handle UNKNOWN-CTE. Maybe some would +>>> think that if it's returned then the server can never decode that +>>> content-transfer-encoding?.. +>>> +>> +>> I would think [PARSE] would be more appropriate than UNKNOWN-CTE. Or just +>> stick with [ALERT]. +>> +> +> Agree with others that ALERT doesn't make sense. My interpretation of +> ALERT is that its contents are independent of command interaction, +> especially since there is no temporal requirement that alerts are displayed +> when they are received. +> +> Not sure if UNKNOWN-CTE is correct either since: in the example given, +> it's a known CTE that the server can handle. It is bad message data instead. +> +> Although for that matter, PARSE doesn't seem to work either since it is +> defined as an inability to parse the (MIME) headers of a section. In this +> example, the headers are fine - it's the body that is broken. +> +> I would throw out CORRUPTION as a possibility. +> +> +> Also, what if there is more than one message requested? We usually just +>> fail to return the broken message and respond NO to the whole fetch, but +>> return all the non-broken messages. +>> +> +> See above. I would agree that this is probably the best solution. +> +> michael +> +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22701.mbox:2,S new file mode 100644 index 00000000..54a3400c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22701.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From jkt at flaska.net Sat Nov 17 03:29:59 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> +Message-ID: + +Hi Michael, +I've read your draft, it's an interesting extension. However, it seems to me that the whole point here is to save a few roundtrips by skipping the process of activating/configuring various optional features. I'll discuss each extension separately. + +> COMPRESS=DEFLATE + +I was wondering if this one actually provides any benefit for a webmail client. But you're right that it indeed has an overhead and requires a full roundtrip to set up. However, please note that your extension also requires a full roundtrip, so you aren't any better here. + +> ENABLE (CONDSTORE/QRESYNC) +> LANGUAGE +> COMPARATOR + +It looks to me that you can easily pipeline all of these and that you do not risk anything by doing so. Yes, I'm aware of the wording of the ENABLE RFC which sounds like one really MUST check its return code, but a subsequent thread on this list indicated that this was not the desired outcome and that it is completely legal to pipeline ENABLE QRESYNC with SELECT ... QRESYNC. + +As of the LANGUAGE -- how often do you expect to hit an error condition which is not described by an appropriate response code? I don't think that blocking for its result would be a good design choice. + +And finally, what IMAP servers support the LANGUAGE extension? + +> CONVERSIONS +> saved CONTEXTs +> NOTIFY + +Are you actually aware of a single IMAP server supporting any of these (besides CONTEXT=SEARCH, which again can easily be pipelined without any race conditions, and is specific to a mailbox state anyway, which is outside of scope of your extensions)? + +In general, all of the items which you included as an example look like easily pipelineable items. Have you tried to use pipelining for these? What was the total time spent waiting for their completion in that case? What would be the best theoretical time which you could get by RESTORE? + +With kind regards, +Jan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22707.mbox:2,S new file mode 100644 index 00000000..7dfd1326 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22707.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From dkarp at zimbra.com Sun Oct 28 15:43:57 2012 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Decoding RFC2047-encoded data from ENVELOPE fields +In-Reply-To: <508DB1F7.5050409@flaska.net> +References: <508DB1F7.5050409@flaska.net> +Message-ID: <1025575261.320657.1351464237050.JavaMail.root@zimbra.com> + +> What's the correct decoding of "Domen =?UTF-8?Q?Ko=C5=BEar?=" -- is +> the space found after "Domen" in the input to be included in the +> decoded output? This is a real example of what Evolution 2.30.2 +> produces (my apologies to Domen for bringing the attention to his +> mail). Thunderbird renders that as two words separated by space. +> +> I'm asking because an example in the RFC says that this: +> "(=?ISO-8859-1?Q?a?= b)" +> shall decode into "(ab)". There's no example for the other order of +> elements. + +You've got a bad copy of RFC 2047. The example actually reads + + encoded form displayed as + --------------------------------------------------------------------- + (=?ISO-8859-1?Q?a?= b) (a b) + + Within a 'comment', white space MUST appear between an + 'encoded-word' and surrounding text. [Section 5, + paragraph (2)]. However, white space is not needed between + the initial "(" that begins the 'comment', and the + 'encoded-word'. + +- Dan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22719.mbox:2,S new file mode 100644 index 00000000..23c66072 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22719.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Thu Aug 16 22:29:22 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: +References: <502DBEA4.2070204@verizon.net> + + <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> + + + +Message-ID: <16C2B175-8815-42C5-B4BF-621EE86B8050@iki.fi> + +On 17.8.2012, at 8.16, Philip Guenther wrote: + +> On Fri, 17 Aug 2012, Timo Sirainen wrote: +> ... +>> Anyway, [1.MIME] isn't a valid request in Joshua's test mail. +> +> Chapter and verse, please? +> +> (There are specific restrictions on when HEADER and TEXT are valid, but no +> such restrictions are specified for the MIME part specifier...) + +Well, I'm not sure if it's really a BAD-type of invalid, but [x.MIME] refers to the part's MIME headers, and if the parent isn't a multipart, there are no MIME headers, so the proper result is empty. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22726.mbox:2,S new file mode 100644 index 00000000..0b71ad67 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22726.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From tss at iki.fi Tue Jun 19 17:24:14 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + NOTIFY +Message-ID: <1340151854.5967.57.camel@hurina> + +> If the server does not know how to decode the section's CTE, it +> MUST fail the request and issue a "NO" response that contains +> the "UNKNOWN-CTE" extended response code. + +Looking at Cyrus code it appears to abort the FETCH immediately if this +situation happens and [UNKNOWN-CTE] is returned as tagged reply. + +Now, what to do when NOTIFY's fetch-att list includes BINARY[part] and +it can't be decoded? Send an untagged NO [UNKNOWN-CTE] after the FETCH +reply? What if BINARY[part] is the only requested fetch-att and it can't +be fetched? The server can't send an empty FETCH reply. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22729.mbox:2,S new file mode 100644 index 00000000..28b85b8d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22729.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From tss at iki.fi Thu May 3 10:18:42 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: <19F04AF2-EFBB-4A85-9333-73DE0A6FF476@isode.com> +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> + <19F04AF2-EFBB-4A85-9333-73DE0A6FF476@isode.com> +Message-ID: + +On 3.5.2012, at 13.47, Alexey Melnikov wrote: + +> Hi Timo, +> +> On 2 May 2012, at 22:28, Timo Sirainen wrote: +> +>> I don't think IMAP RFCs actually require any specific behavior for this, so this is more of a "any recommendations?" type of a question: +>> +>> Clients C1 and C2 send: +>> +>> C1: a FETCH 1 FLAGS +>> S1: * 1 FETCH (FLAGS (\Seen \Answered)) +>> S1: a OK +>> +>> C2: b STORE 1 +FLAGS (\Flagged) +>> S2: * 1 FETCH (FLAGS (\Seen \Flagged)) +>> S2: b OK +>> +>> At this point C1 still thinks that 1's flags are (\Seen), and being a little bit stupid it unsets the \Seen flag by sending: +>> +>> C1: c STORE 1 FLAGS (\Answered) +>> +>> Now, I think the possible replies are either of these: +>> +>> S1: * 1 FETCH (FLAGS (\Answered)) +>> S1: * 1 FETCH (FLAGS (\Answered \Flagged)) +>> +>> Dovecot currently sends the first reply, but I've started thinking that perhaps I should change it to the second one. The question is really: Should STORE FLAGS be thought of as +>> +>> a) Reset all the flags that you have currently, whatever they are, and only set these flags. +> +> Yes. +> +> If you want to prevent conflicts above, you need to use CONDSTORE. + +Yes, but that's a client issue. And I think with STORE (UNCHANGEDSINCE) FLAGS it's clear that the client wants to do this b) : + +>> b) Atomically add these flags I've listed, and remove those that I used to see previously in this session but aren't listed here. + +while without CONDSTORE it's a bit more ambiguous what the client wants to do. + +>> In the case of actual IMAP clients doing this, this is probably almost irrelevant. But it becomes more relevant if you have two IMAP servers doing a 2-way mailbox synchronization after a possibly long disconnection, and the same message's flags are changed in both of them. +> +> Don't use STORE FLAGS when synchronizing servers ;). I don't. + +Not servers, but after client has issued such updates how would the servers sync them. For example I want this to at least work: + +Server 1 has seen +FLAGS \Seen +Server 2 has seen +FLAGS \Flagged + +When syncing the servers the result clearly should be (\Seen \Flagged). Similarly for -FLAGS. But FLAGS itself is less clear how to merge them. diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22732.mbox:2,S new file mode 100644 index 00000000..8a0e7182 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22732.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Tue Apr 3 19:48:56 2012 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <4F7BABE4.3050503@earthlink.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com>, + <558673177.37525.1333503846416.JavaMail.root@zimbra.com>, + <4F7BABE4.3050503@earthlink.net> +Message-ID: <4F7BB698.28289.3F46BCE4@David.Harris.pmail.gen.nz> + +On 3 Apr 2012 at 21:03, Rick Sanders wrote: + +> > (Note that this is a correct response if there are no messages +> > in the mailbox.) +> +> Good point. I should have mentioned that this happens even when there +> are messages in the mailbox: +> +> 1 select Big.Box +> * 5 EXISTS +> * 0 RECENT +> * FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent) +> * OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft +> $MDNSent)] Permanent flags +> * OK [UIDVALIDITY 17873] UIDVALIDITY value +> * OK [UIDNEXT 9] The next unique identifier value +> 1 OK [READ-WRITE] SELECT completed. +> 1 fetch 1 (BODY[HEADER (DATE)]) +> 1 BAD Command Argument Error. 11 + +Shouldn't that command be + + 1 fetch 1 (BODY[HEADER.FIELDS (DATE)]) + +? + +Since your earlier message appears to show the ".FIELDS" syntax, I +assume this is merely a typo, but thought I'd mention it just in case. + +Another thing... You're reusing the same command ID on each +command. Now IIRC, this isn't illegal per se, but I'd try using different +command IDs just to make sure that it's not part of the problem. Based +on past experience with some older servers, I'd also try using a mix of +alphabetics and digits in your command ID (I recall at least one server +many years ago that got confused on numeric-only command IDs). + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Schoolboy howler for the day: + "A census taker is the man who goes from home to home + increasing the population." + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22743.mbox:2,S new file mode 100644 index 00000000..2a80e8eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22743.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From tss at iki.fi Sun Mar 4 06:05:33 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] recent response in status command +In-Reply-To: <4F536EBE.7080509@nfg.nl> +References: <4F53524C.3000308@nfg.nl> + + <4F536EBE.7080509@nfg.nl> +Message-ID: <5F81467D-EBB4-49AE-9F0A-2FB96A26580C@iki.fi> + +On 4.3.2012, at 15.31, Paul J Stevens wrote: + +>>> The 3rd session selecting +>>> the mailbox and fetching the flags *before* one of the selected sessions +>>> fetch them seems perfectly valid to me. +>> +>> I'm not entirely sure what you mean. Anyway, what the test is supposed to do is: +>> +>> - 1 and 2 connections have mailbox selected +>> - 1 connection APPENDs a new message +>> - most servers assign \recent flag to connection 1 before APPEND returns tagged OK +> +> That smells to me like an implementation dependent choice, not a +> protocol dictated requirement. + +That is, yes, that's but: + +>> - just in case some server might have assigned it to 2nd connection, the 2nd connection does a NOOP + +These two combined is a requirement. + +>> - now imaptest knows that the \recent must be in either connection 1 or connection 2 (both connections have informed the client with EXISTS that there are new messages, so the \recent flag must have been set) +> +> I'm here to learn, but I don't see this in the specs. +> +> Returning an updated EXISTS response in a session doesn't imply that +> later on the client will actually request the message flags. +> +> I understand a \recent flag must never be returned more than once or in +> more than one session. But as I (re)read rfc3501 a \recent flag is not +> assigned to a session until a FETCH FLAGS response was returned. + +I don't understand how you can read it that way: + + Message is "recently" arrived in this mailbox. This session + is the first session to have been notified about this + message; if the session is read-write, subsequent sessions + will not see \Recent set for this message. + +The \recent flag is assigned immediately when any IMAP read-write (=SELECTed) session is notified about a new message. The untagged RECENT reply should also be sent after the EXISTS reply when the message is \recent for that session. + +> I get the feeling there are undocumented semantics in play here. Doing a +> STATUS doesn't affect the mailbox, fine. So even when a STATUS response +> returns a RECENT > 0, it seems perfectly valid to me if subsequence +> SELECT/FETCH on the same mailbox with the same session don't return any +> messages with the \recent flag. + +If this happens, then between the STATUS RECENT>0 and SELECT there was another session that had SELECTed the mailbox. + +> What the test seems to imply is that following transcript with two +> sessions A and B is incorrect. +> +> A status mailbox (messages unseen recent) +> * status mailbox (messages 1 unseen 1 recent 1) +> A select mailbox +> * 1 exists +> * 1 recent +> ... +> A ok [read-write] select completed +> +> B status mailbox (messages unseen recent) +> * status mailbox (messages 1 unseen 1 recent 1) + +If B STATUS was sent after A SELECT then yes, it's incorrect. + +> B select mailbox +> * 1 exists +> * 1 recent +> ... +> B ok [read-write] select completed +> B fetch 1 flags +> * 1 fetch (flags (\recent)) +> B ok fetch completed +> +> A fetch 1 flags +> * 1 fetch (flags ()) +> A ok fetch completed + +And this is definitely incorrect. The \recent flag exists only in session A. It's not visible in any other sessions. + +Dovecot implements \recent handling mostly in memory. The only thing that needs to be stored about recent messages is first_recent_uid, which gets updated to UID+1 whenever UID's \recent flag is removed in some session. diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22746.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22746.mbox:2,S new file mode 100644 index 00000000..9eebc829 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22746.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From brong at fastmail.fm Thu Feb 9 03:24:11 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Re: [imap5] Designing a new replacement protocol + for IMAP +In-Reply-To: <4F337E61.5040702@qbik.com> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> +Message-ID: <20120209112411.GB29734@launde.brong.net> + +On Thu, Feb 09, 2012 at 09:05:53PM +1300, Adrien de Croy wrote: +> +> Whilst HTTP could certainly be used to put together an email system, +> I don't think it would perform well enough to replace existing +> protocols on desktops. +> +> The main issues I see are: +> +> * updates. Would need to poll or use long polling to get real-time +> updates (e.g. notification of incoming mail). + +Yes - long polling or "out of band" notification systems. We have +an HTTP protocol defined kind of "on top of" IMAP plus our own +extensions here at FastMail/Opera (mail.opera.com if you want to +play with it) + +We are currently using EventSource to notify the client that +"there is something new", after which the client queries to +find what's updated. + +This is possible to be efficient because we use a single counter +for uidvalidity and a single counter for highestmodseq across the +entire user's folders - so any change to uidvalidity means the +folder list needs refreshing, and any change to highestmodseq +means the message view needs checking. + +Combined with efficient "what's changed in this view since my +previous modseq value" queries, it's very bandwidth efficient. + +> * slow. Gut feel based on 17 years writing http proxies is that it +> would be too slow + +Not really actually - so long as you can query multiple things in +a single "transaction" + +> * complex. In order to reduce round-trips, you'd have to do many +> things in a single transaction, which would create complexity issues +> in the server and client + +But here's the rub. Yes, complex. + +> * protocol bloat. if you think IMAP is bloated, try HTTP. +> * fundamentally an off-line style protocol for mail, which has +> strong incentives to be online (esp for in-office use). + +Mostly facebook's "live feed" is plenty fast enough. People are +doing all sorts of close-enough-to-real-time stuff on top of HTTP. +It doesn't mean it's the right choice, but I wouldn't dismiss it +out of hand either. + +> I think it would also be very problematic in the wild, since any +> http intermediary would feel entitled to mess with traffic. E.g. +> heuristic caching, intercepting proxies etc. + +That's a problem for sure. Mind you, proxyability is high on my +list of goals. Immutable stuff should be cachable. + +> It's almost too ubiquitous. Everyone and their dog thinks they know +> how http works. It's not strictly-enough defined, and has a LOT of +> optional features which aren't relevant for mail (e.g. content +> negotiation). Interop in http is already problematic, but start +> getting people writing mail servers in php etc, and see what starts +> to happen. I think it would be a nightmare. + +Like IMAP then, except only their dogs actually understand it ;) + +Good enough tests should, in theory, allow people to write their +servers in PHP if they want to. Why you would choose to write in +PHP, I'm not sure... but still. It takes all types. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22749.mbox:2,S new file mode 100644 index 00000000..529d278a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22749.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jan 9 16:31:57 2012 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] "normalized message ID" in RFC 5256? +In-Reply-To: <67105.1326153749@parc.com> +References: <67105.1326153749@parc.com> +Message-ID: + +On Mon, 9 Jan 2012, Bill Janssen wrote: +> I'm re-implementing my threading code, and I had a question about the +> language about "normalized message IDs" found in RFC 5256. That seems +> to refer to section 3.6.4 of RFC 2822: the implication is that the +> DQUOTEs in "no-fold-quote" and the "[" and "]" brackets in +> "no-fold-literal" should be removed before comparing message-ids. + +no-fold-quote does not exist in the current specification (RFC 5322). + +I don't know why you think that the brackets should be removed in +no-fold-literal. The brackets indicate that the contents are a literal IP +address as opposed to a domain. The fact that 10.20.30.40, as opposed to +[10.20.30.40], is parsed by some people as an IP address does not +necessarily mean that it is (I'll laugh when the first all-numeric TLD is +created!). Now, in the modern day of RFC 5322, this isn't a domain at all +but rather an id-right. + +People can flame at some length whether bloop@10.20.30.40 and +bloop@[10.20.30.40] are the same message-ID. My guess is "no". + +The bottom line here is whether that text about normalized message ID has +any particular meaning in the context of RFC 5322 as opposed to earlier +versions of header syntax that used local-part@domain for message-id. +IMHO (and I wrote that text!) I would treat it as advice on how to treat +warts from the past rather than how to move forward. + +That is, once upon a time, it was necessary to treat: + +Message-ID: <"bloop"@grok.this> + and +Message-ID: + +as the same thing. This was a protocol wart and I'm glad to see it +declared obsolete. I wouldn't flame anyone who decided that strcmp() is +the one and only way to compare Message-IDs. I daresay that's what most +implementations did anyway even when RFC 822 was king. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095046.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095046.22752.mbox:2,S new file mode 100644 index 00000000..64ddb44d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095046.22752.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Tue Dec 6 15:23:10 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] test suite? +In-Reply-To: <4FBEE821-B901-46CC-AB11-45715CD2018C@mac.com> +References: + <4FBEE821-B901-46CC-AB11-45715CD2018C@mac.com> +Message-ID: <1323213790.15365.20.camel@hurina> + +On Sun, 2011-11-27 at 12:34 +0100, Petite Abeille wrote: +> On Nov 27, 2011, at 11:57 AM, Petite Abeille wrote: +> +> > Is there some test suites out there to exercise various aspect of the protocol? +> +> I found some references to something called "ProtoVer Sample IMAP testsuite": +> +> http://www.securityfocus.com/archive/1/426580 + +It says it's only for non-authenticated state. And it was announced in +bugtraq list. So it's probably just a bunch of tests that try to break +the server. Like: + + * Try that {4294967295} and {2147483647} literals won't cause buffer +overflows (this bug was in many IMAP servers and clients) + * Try various sized usernames and passwords + * Try different kinds of characters in usernames and passwords, such as +<'> <"> <\> etc. + * Try various sized command tags, names and other parameters + +I guess such an automated tester would be nice. Also would be nice to +have a tester that generates "mails from hell" and sees how long server +takes to process them. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22595.mbox:2,S new file mode 100644 index 00000000..bfc8bc99 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22595.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From jguthrie at brokersys.com Tue Mar 10 15:33:42 2015 +To: imap-protocol@u.washington.edu +From: Jonathan Guthrie +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] An announcement +Message-ID: <54FF7146.9020202@brokersys.com> + +A long time ago, I wrote an IMAP server for my day job and when the +project was cancelled, I kept a copy of the source code. I thought it +had some really cool ideas in it, and I couldn't bear to just see it +deleted. Later on, I received permission to do with it what I will and +I've worked on it off and on since then. + +At the moment, it's not really ready for use. For example, STARTTLS +isn't implemented, and there's no locks for mbox format (and it +implements the wrong mbox format, besides.) Also, I pretty much just +punted on the Unicode support. There isn't enough time and it's been +just a hobby for more than a decade. + +Anyway, it's up on github, if anyone is interested. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22641.mbox:2,S new file mode 100644 index 00000000..e2dedbd9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22641.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From andris.reinman at gmail.com Wed Mar 19 12:46:49 2014 +To: imap-protocol@u.washington.edu +From: Andris Reinman +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> +Message-ID: <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + +Hi, + +The proposal seems a bit too complicated, especially the need to track $ flags. I understand that sometimes it might be better to be able to send an existing message (for example a draft message already stored on the server) but wouldn?t it be good enough for most cases to allow uploading the message with SUBMIT (so the command would behave more like APPEND and less like UID STORE) and the response for this command would indicate if the message was accepted for delivery or not (like currently SMTP MDA servers do)? + +For example something like this: + +x SUBMIT ?Sent Messages? (\Seen) (FROM sender@example.com RECIPIENT receiver@example.com) {123} +?123 bytes message literal +* SUBMIT (ACCEPTED receiver@example.com) +x OK Message queued for delivery + +In this case, if the message was accepted, it is appended to the selected mailbox, otherwise the message is ignored. It would be less efficient than dealing with already uploaded messages, especially when you need to re-send it but in most cases sending the message should not fail. This is how it works with SMTP - if the message is (temporarily) rejected by the MDA, you need to send it again. In most cases the message is not rejected and thus you need to send it only once. + +Best regards, +Andris Reinman + +On 19.03.2014, at 17:43, Jan Kundr?t wrote: + +> Hi, +> given the recent discussion about striving for perfection vs. solving what needs solving now, what are the list's thoughts about the draft I wrote half a year ago? It's implemented in Trojita, of course, but I don't know about any server-side implementation, unfortunately. +> +> https://tools.ietf.org/html/draft-kundrat-imap-submit-02 +> +> With kind regards, +> Jan +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22648.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22648.mbox:2,S new file mode 100644 index 00000000..18533a92 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22648.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From xims at xylon.de Wed Jan 29 07:02:45 2014 +To: imap-protocol@u.washington.edu +From: Xims +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] ABNF Question regarding parsing of + BODYSTRUCTURE FETCH responses +In-Reply-To: <5ceef93d-2727-462b-8ddb-fc02344c6a72@gulbrandsen.priv.no> +References: + <5ceef93d-2727-462b-8ddb-fc02344c6a72@gulbrandsen.priv.no> +Message-ID: <130e5b3a1f74f4ff0950ffba5694e5f4@xylon.de> + +Hi Arnt, + +> 1*body means "one or more instances of body". The SP media-subtype +> matches things like ' "alternative"' and ' "related"' in your +> example. + +Thanks a lot - that was easy, now it works like a charm. :) + + +Best regards, +Florian + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22665.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22665.mbox:2,S new file mode 100644 index 00000000..5e2a15f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22665.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From tss at iki.fi Wed Aug 21 11:55:54 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:51 2018 +Subject: [Imap-protocol] Multiple non-waiting UID SEARCH commands +In-Reply-To: <466fa36a-1178-4cba-8cf1-a9111e5aac1a@email.android.com> +References: <520A622E-1A91-4B04-AD6F-361896D439F5@lasselog.com> + <5214A27E.8030300@isode.com> + + <466fa36a-1178-4cba-8cf1-a9111e5aac1a@email.android.com> +Message-ID: + +On 21.8.2013, at 21.00, Arnt Gulbrandsen wrote: + +> From hazy memory: In case of ambiguity, the server must process the commands in the order received? + +I think this is the main point of it: + +> The exception is if an ambiguity would result because of a command that would affect the results of other commands. + +Running two SEARCH commands in reverse order don't affect the results of each others, just the order in which they're received by the client. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22682.mbox:2,S new file mode 100644 index 00000000..6bbd7ab3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22682.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Wed Mar 27 03:27:31 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + + + +Message-ID: <78AB33AC-4EFC-42AF-80F8-AD1FB3C26746@iki.fi> + +On 27.3.2013, at 12.03, Alexey Melnikov wrote: + +>> And that limit is advertised via EHLO at SMTP time, but there's no mechanism for doing that with IMAP. +> +> Let's standardize a way to advertise such limit. I might have use for it as well. + +I wonder if it should be per-mailbox limit.. Something like: + +a LOGIN foo bar +* OK [APPENDSIZE 10000000] Maximum size allowed by this server +a OK Logged in +b SELECT INBOX +.. +* OK [APPENDSIZE 10000] Maximum size allowed by this mailbox. +.. +c UNSELECT +c OK +d APPEND elsewhere {100000} +d NO [APPENDSIZE 1000] Too big message +d APPEND elsewhere {100000+} +d NO [APPENDSIZE 1000] Too big message + +Although using the same APPENDSIZE may confuse clients. Then again using different GLOBALAPPENDSIZE and MAILBOXAPPENDSIZE may cause clients to use only one of them. + +So .. maybe a per-mailbox limit isn't that useful. I was mainly thinking about different users having different limits, causing shared mailboxes to have different limits. Or maybe some other special mailboxes with special rules. + +BTW. Another related issue is that IMAP is now limited to 4 GB mails. This RFC might as well allow servers and clients to increase that to 64bit value. diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22688.mbox:2,S new file mode 100644 index 00000000..af9c43a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22688.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From dave at cridland.net Mon Jan 14 05:24:19 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <1358168208.10326.16.camel@innu> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + + <1358168208.10326.16.camel@innu> +Message-ID: + +On 14 Jan 2013 07:56, "Timo Sirainen" wrote: +> +> On Mon, 2013-01-14 at 12:39 +0000, Dave Cridland wrote: +> > +> > The setup of BURL from an MUA's perspective is awkward, though, +> > because the BURL capable submission server provides no hints as to +> > which IMAP server is to be used, and vice-versa, making discovery a +> > bit hit and miss. +> +> User (or automation) already has to configure IMAP and submission server +> to MUA, so how does BURL make it any more difficult? + +I was dealing with user-directed configuration rather than discovery; maybe +it's changed now. I'm merely relaying the experiences I've had. + +> 1. client APPENDs/CATENATEs message to IMAP server +> 2. client requests URLAUTH URL +> 3. client connects to submission server +> 4. client sends message with BURL + +Yeah, and that's close to what Polymer does, although it takes into account +POSTADDRESS and whether the message would be shorter via BURL, and connects +to the submission server first so it can proceed in the background, and so +on. + +The problem is that there's no way of knowing whether a particular URL will +be acceptable to BURL or not without simply trying it, and that makes me +feel all goose-bumpy inside. + +And in vague response to lack of BURL support in servers - yeah. This is +irritating, and very chickeny (and/or eggy) but sitting here and moaning +about it won't change much. + +My gut feeling is that if Brandon and Bron implemented BURL, you'd see +clients falling over themselves to implement. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22697.mbox:2,S new file mode 100644 index 00000000..4b835ecb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22697.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Dec 11 13:03:04 2012 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + + <20121211133659.Horde.l5mdoRCy0RtyMMLrnOij-Q1@bigworm.curecanti.org> + +Message-ID: <7A294188-31BB-4C43-8D13-6BE9B413E472@orthanc.ca> + + +On 2012-12-11, at 12:47 PM, Brandon Long wrote: + +> In general, I haven't understood the new error responses as "replacements" for ALERT, as they're not backward compatible. A client which gets an error response is doesn't understand does what, nothing? So if I change an ALERT to a CANNOT, I'm just having clients which don't know CANNOT drop information instead of helping the user. + +ALERT almost always generates a blocking popup in the UI containing the raw error text string from the server. This information is almost always useless to any end user, and just serves to annoy them. + +There are only two cases where I generate an ALERT: for an administrative server shutdown (e.g. a MOTD style 'server down for maintenance until 0630' message), or when the user's auth credentials are not useable (e.g. 'your password has expired'). + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22701.mbox:2,S new file mode 100644 index 00000000..c26e5c94 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22701.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From jeff.mckay at comaxis.com Sat Nov 17 15:23:07 2012 +To: imap-protocol@u.washington.edu +From: Jeff McKay +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Cannot authenticate plain with Cyrus server +Message-ID: <50A81C5B.3010109@comaxis.com> + +I have client software trying to do AUTHENTICATE PLAIN against a Cyrus +imap server version +2.2.12. I have a SSL connection. I am getting authentication failure +even though I'm pretty +sure I am doing this correctly. The original auth response I generate is +this: + +64 6F 67 67 79 00 63 6F 6D 70 75 67 65 6E 00 63 doggy.compugen.c +6F 6D 70 75 67 65 6E 00 00 00 00 00 00 00 00 00 ompugen......... + +where "doggy" is the user id and "compugen" is both the administrator +user and password. I base64 encode this string to: + +ZG9nZ3kAY29tcHVnZW4AY29tcHVnZW4= + +and send that in response to the server's '+' prompt, but get back +"NO authentication failure". I can do a normal login using +compugen/compugen and it works, and that gives me access to all user +folders. I am also certain that "doggy" is a valid user id, because +I have logged in with that as well. + +I have used this exact same software with many other servers to do +authenticate plain with no problem. Since I can do a normal login with +compugen, that suggests a work around I can use, but I would prefer to +know what is wrong with auth plain, or know for certain that there is a +problem on the server that is not my fault. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22707.mbox:2,S new file mode 100644 index 00000000..8561fe76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22707.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From jkt at flaska.net Sun Oct 28 15:51:13 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Decoding RFC2047-encoded data from ENVELOPE fields +In-Reply-To: <1025575261.320657.1351464237050.JavaMail.root@zimbra.com> +References: <508DB1F7.5050409@flaska.net> + <1025575261.320657.1351464237050.JavaMail.root@zimbra.com> +Message-ID: <508DB6E1.1030208@flaska.net> + +On 10/28/12 23:43, Dan Karp wrote: +> You've got a bad copy of RFC 2047 + +Er, well, you're right. It's too late here. Thanks for correcting me. + +With kind regards, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22719.mbox:2,S new file mode 100644 index 00000000..c3317494 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22719.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From jkt at flaska.net Fri Aug 17 08:30:55 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + multiparts +In-Reply-To: +References: <283BA59D-2B55-4E29-BD2F-D3C392D2E673@iki.fi> + +Message-ID: <502E63AF.60001@flaska.net> + +On 08/11/12 17:43, Lyndon Nerenberg wrote: +> But I would strongly advise +> client authors to restrict binary fetches to terminal body parts, as +> the behaviour of fetching non-terminals is going to be +> unpredictable. + +I have to admit that I've just discovered the errata process of the +IETF's RFCs and it's a new shiny toy for me, so take this suggestion +with a grain of salt, but as a client developer, I've missed this corner +case when implementing BINARY in Trojita. Could we therefore get an +errata containing this note? + +With kind regards, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22726.mbox:2,S new file mode 100644 index 00000000..c1a44320 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22726.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From jkt at flaska.net Wed Jun 20 08:49:17 2012 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Server support for RFC5267's CONTEXT=SORT +Message-ID: <4FE1F0FD.5050603@flaska.net> + +Hi, +is there an IMAP server implementation out there (preferably a free +software one or someone willing to provide demo account for +interoperability testing) which supports CONTEXT=SORT, ie. incremental +updates to a saved SORT command? + +I've looked at Dovecot, Cyrus, Isode, UW, Zimbra and Zarafa; none of +them appear to have that available according to their reported +capabilities after login. + +With kind regards +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22729.mbox:2,S new file mode 100644 index 00000000..a7bd4ada --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22729.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From tss at iki.fi Thu May 3 10:26:58 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: <7596.1336054035.886533@puncture> +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> + <7596.1336054035.886533@puncture> +Message-ID: + +On 3.5.2012, at 17.07, Dave Cridland wrote: + +> On Wed May 2 22:28:46 2012, Timo Sirainen wrote: +>> C1: a FETCH 1 FLAGS +>> S1: * 1 FETCH (FLAGS (\Seen \Answered)) +>> S1: a OK +>> C2: b STORE 1 +FLAGS (\Flagged) +>> S2: * 1 FETCH (FLAGS (\Seen \Flagged)) +>> S2: b OK +> I think S2's response here is wrong - specifically, I can't see why the server shouldn't respond including \Answered from the first session. But I admit that very close concurrency might make that hard - though really, I'd find that worrying - I expect flag changes to be atomic. + +Yes, that was unintentional. I added the \Answered later while editing my mail and forgot to add it to S2 reply. + +>> At this point C1 still thinks that 1's flags are (\Seen), and being a little bit stupid it unsets the \Seen flag by sending: +>> C1: c STORE 1 FLAGS (\Answered) +> +> That's very stupid. It's not said "Remove \Seen", it's said "Set the flags to these". +> +>> S1: * 1 FETCH (FLAGS (\Answered)) +>> S1: * 1 FETCH (FLAGS (\Answered \Flagged)) +>> Dovecot currently sends the first reply, but I've started thinking that perhaps I should change it to the second one. The question is really: Should STORE FLAGS be thought of as +>> a) Reset all the flags that you have currently, whatever they are, and only set these flags. +> +> Only ever this. Anything else strikes me as fundamentally wrong. + +Like Arnt mentioned, if C1 and C2 are the connections from the same client, then a) really should be used. I realized it only later while sending my mail. + +> If it responds with the second reply, I'd take that to mean that some other client had set \Flagged, between the server acting on my set, and before it responded. Surprising, but I'd cope. + +If C1 and C2 are different independent clients, then there's not much of a conceptual difference between this and my b) behavior. It's all about the timing then - C2 might have sent it before C1's second STORE or it might have sent it during it. If there's less than a 1 second difference, no one can really say what happens, so I don't think it would be wrong for server to decide to behave a bit differently in such case. diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22732.mbox:2,S new file mode 100644 index 00000000..ea6fa231 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22732.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Apr 3 23:34:32 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <4F7BA1AF.6040600@earthlink.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> + <721CF40F-AE46-4FB5-B248-90BD91DA3941@iki.fi> + <4F7BA1AF.6040600@earthlink.net> +Message-ID: <4F7BEB78.7030908@gulbrandsen.priv.no> + +On 04/04/2012 03:19 AM, Rick Sanders wrote: +>> you could try if using BODY.PEEK instead BODY +> +> Thanks, Timo. Unfortunately the server doesn't like BODY.PEEK either. :-) +> +> 1 fetch 1 (BODY.PEEK[HEADER.FIELDS (DATE)]) +> 1 BAD Command Argument Error. 11 + +Just a hunch... skip the outer parens? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22743.mbox:2,S new file mode 100644 index 00000000..50ac3e9c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22743.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From paul at nfg.nl Sun Mar 4 07:55:41 2012 +To: imap-protocol@u.washington.edu +From: Paul J Stevens +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] recent response in status command +In-Reply-To: <5F81467D-EBB4-49AE-9F0A-2FB96A26580C@iki.fi> +References: <4F53524C.3000308@nfg.nl> + + <4F536EBE.7080509@nfg.nl> + <5F81467D-EBB4-49AE-9F0A-2FB96A26580C@iki.fi> +Message-ID: <4F53907D.2080404@nfg.nl> + +On 03/04/2012 03:05 PM, Timo Sirainen wrote: + +>> I understand a \recent flag must never be returned more than once or in +>> more than one session. But as I (re)read rfc3501 a \recent flag is not +>> assigned to a session until a FETCH FLAGS response was returned. +> +> I don't understand how you can read it that way: +> +> Message is "recently" arrived in this mailbox. This session +> is the first session to have been notified about this +> message; if the session is read-write, subsequent sessions +> will not see \Recent set for this message. + +My bad. I (mis)understood above quote to apply to explicit flag +responses, i.e. the FETCH response. + +After studying dovecot's behaviour, I conclude that *any* response for a +read-write opened mailbox must 'flush' the \recent flag on all messages +involved in the response. + +I can live with that. At least it's consistent :-) + +thanks again. + + + +-- +________________________________________________________________ +Paul J Stevens pjstevns @ gmail, twitter, skype, linkedin + + * Premium Hosting Services and Web Application Consultancy * + + www.nfg.nl/info@nfg.nl/+31.85.877.99.97 +________________________________________________________________ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22746.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22746.mbox:2,S new file mode 100644 index 00000000..c6e6b52b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22746.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From brong at fastmail.fm Thu Feb 9 03:32:08 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Re: [imap5] Designing a new replacement protocol + for IMAP +In-Reply-To: <4F33AD2D.7050904@panozzo.it> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F33AD2D.7050904@panozzo.it> +Message-ID: <20120209113208.GA31355@launde.brong.net> + +On Thu, Feb 09, 2012 at 12:25:33PM +0100, Giovanni Panozzo wrote: +> PS: I think that crossposting in 3 ML is too much. Which one will be +> the official ML for this discussion ? + +(posting to all three for this...) + +Let's take the rest of the traffic to just imap5@ietf.org + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22749.mbox:2,S new file mode 100644 index 00000000..5c6c6b95 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22749.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tss at iki.fi Mon Jan 9 16:37:11 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] "normalized message ID" in RFC 5256? +In-Reply-To: <67105.1326153749@parc.com> +References: <67105.1326153749@parc.com> +Message-ID: + +On 10.1.2012, at 2.02, Bill Janssen wrote: + +> I'm re-implementing my threading code, and I had a question about the +> language about "normalized message IDs" found in RFC 5256. That seems +> to refer to section 3.6.4 of RFC 2822: the implication is that the +> DQUOTEs in "no-fold-quote" and the "[" and "]" brackets in +> "no-fold-literal" should be removed before comparing message-ids. + +The way I do it is parse it through the RFC (2)822 parser. So it strips out all comments and other extra whitespace and such, mostly because of obs-id-left / obs-id-right. I don't think you should be stripping out brackets. + +Hmm. Actually, looks like I'm not handling no-fold-quote at all.. Wonder why I forgot that, even though it's in the comments just above the code.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095047.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095047.22752.mbox:2,S new file mode 100644 index 00000000..d3807776 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095047.22752.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From petite_abeille at mac.com Wed Dec 7 01:27:52 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] notification of deleted/expunged messages? +Message-ID: + +Hello, + +What's the proper way to notify a client of deleted/expunged message by another agent? + +Went through RFC 2180 "IMAP4 Multi-Accessed Mailbox Practice", but I still have some doubts. + +Background: in this scenario, all the mailboxes and messages are managed server-side. The client can only select/fetch things in a read-only fashion. The server itself actively manages all the mailboxes and their content, including deletion of messages. + +Say one has an "inbox" which always shows the latest thousand messages. Messages flow constantly in the inbox, but only the latest 1,000 are shown in the inbox. + +How to properly notify the client when the message windows change? + +For example: + +c: abc select inbox +s: * 1000 exist +... +s: abc ok [read-only] select + +c: abc fetch 1:* +s: * 1 fetch (uid 82542) +... +s: * 1000 fetch (uid 83541) +s: abc ok fetch + +Now a new message arrives, shifting the content of the inbox by one from UID 82542-83541 to UID 82543-83542. + +How should the server notify the client? + +Would the following unilateral untagged notification be enough? + +s: * 1 expunge +s: * 1000 exists + +Thanks in advance. + +-- + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22595.mbox:2,S new file mode 100644 index 00000000..b172e108 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22595.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 10 19:23:48 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FAEB94.4070508@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> +Message-ID: <86FE3C0E-8F89-4721-B43F-C3126C7C211F@orthanc.ca> + + +On Mar 7, 2015, at 4:14 AM, Ladar Levison wrote: + +> I thought this might be a good list to ask a simple, but admittedly +> subjective question: If Mark Crispin was creating IMAP from scratch, in +> the world of today, would it still be a line based protocol like it was +> with RFC3501, or would he have gone with something more stateless, like +> a JSON-RPC paradigm, like JMAP? + +[ Coming in a bit late, I realize ... ] + +For MRC, state was king. And for a remote mailbox access service, he believed state was critical to building an efficient protocol. + +He would have scoffed at comments about 'line' vs 'streaming' and 'text' vs 'binary' as indicative of the spewer of such nonsense being beneath contempt ;-) What Mark got, and what so many other self-proclaimed experts in this discussion are blissfully oblivious to, is that it's the RTTs that kill an interactive protocol, and nothing else. He firmly believed that every IMAP client developer should be forced to work behind a 1200 bps (yes, 1200) network link. He rightly surmised that that was the only way to ensure an IMAP client would make the most efficient use of the protocol. And I agree completely, although I did try to convince him that 9600 bps was perhaps a reasonable compromise. + +Many times we talked about what the son-of-IMAP might look like. For quite a few years I have been bouncing around an idea for an MUA access protocol. Conceptually it is very different from IMAP, but it retains the philosophy in many ways. I had some wonderful nights having my skin blistered by his critiques. Fortunately there was a lot of beer at hand to quench the flames :-) The once thing we did - almost - come to agreement on was that a purely Sexpr-based protocol syntax was the right way to do it. He always got grumpy talking about what he considered the deficiencies and compromises in the IMAP syntax that were 'forced' on him by others. (How much of that was actually true I can't speak to. But I know there are people still likely reading this mailing list who mightily pissed him off over what he perceived to be political manipulation of the spec for corporate gain.) (I also can't believe that he didn't just tell them to "see figure one," but there you go.) + +What I took away from our conversations was this. He thought the explosion of IMAP extensions pointed to a fundamental flaw in the design of the protocol, one that needed fixing. He could not pin down, to his own satisfaction, what that flaw was (or flaws were); he had his own misgivings about some of the design, but he was never forthcoming to me about what he thought they were. (He didn't want to criticize anything until he knew he could shred it with 100% validity, and that included his own work.) But he also thought at least some of the extensions were due to pure laziness and ineptitude on the part of client writers. (He could peel paint with that topic of conversation!) + +I miss the cranky bastard, with his guns and politics and libertarian take on life :-) We were polar opposites on the first two of those three (maybe all of them), but he respected what you had to say, even as he let loose with how he thought you were a complete idiot and did not deserve to grace a keyboard with your fingers :-) + +As April approaches, I hope you will all join me in raising a glass of something uncomfortable in his memory, while you read one of his great works: http://www.ietf.org/rfc/rfc748.txt + +Especially the young turks recently gracing us with their presence. They might learn much. Or not. + +--lyndon + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22641.mbox:2,S new file mode 100644 index 00000000..3f74c372 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22641.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From jkt at flaska.net Wed Mar 19 13:01:48 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> +Message-ID: + +On Wednesday, 19 March 2014 20:46:49 CEST, Andris Reinman wrote: +> The proposal seems a bit too complicated, especially the need +> to track $ flags. + +Which gives you the required atomicity in case of network troubles. It's an +effective way of ensuring that if the client drops right after UID SUBMIT, +upon next reconnect it will know how the operation ended up, and therefore +whether you need to resend or not. In my book, this is important -- not +every user uses a dedicated "sent" mailbox, some clients might even share +the same one for INBOX/drafts/sent, so these flags really make sense, IMHO. + +Perhaps the draft could be improved to make it easier to read? Patches +welcome, source lives at [1]. + +The rest of the complications is a result of criticism that this cannot +ever possibly compete with submission over ESMTP because it cannot do $FOO. +I wanted to show that there's no problem replicating each and every ESMTP +extension which actually (to my understanding of ESMTP, anyway) makes sense +in the context of submission, and IIRC this claim was not contested last +time I brought this. + +If there's a consensus to make this impler, sure thing -- but I'm afraid +the proposal would be facing pushbacks from both sides :(. + +> I understand that sometimes it might be better +> to be able to send an existing message (for example a draft +> message already stored on the server) but wouldn?t it be good +> enough for most cases to allow uploading the message with SUBMIT +> (so the command would behave more like APPEND and less like UID +> STORE) and the response for this command would indicate if the +> message was accepted for delivery or not (like currently SMTP +> MDA servers do)? + +I definitely want CATENATE (critical for drafts & +forward-without-download), so this immediately translates to supporting all +the options which APPEND already has. Also, MULTIAPPEND enters the mix. It +seems to me that it's easier to just have an extra command which does +exactly one thing instead two of them. I also suspect that it would make +server implementations easier at no cost to the clients. + +I see that your proposal brings one less roundtrip to the table, though. +I'm not convinced it is worth the effort, though. + +Cheers, +Jan + +[1] +http://quickgit.kde.org/?p=trojita.git&a=blob&f=docs%2Fproposed-extensions%2Fdraft-kundrat-imap-submit.xml + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22682.mbox:2,S new file mode 100644 index 00000000..b895bd32 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22682.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From t-chiba at aj.jp.nec.com Wed Mar 27 05:19:50 2013 +To: imap-protocol@u.washington.edu +From: Takeshi Chiba +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: +Message-ID: <5152E3E6.40506@aj.jp.nec.com> + +It seems like not general problem but gmail :-) +(There are many special clients for gmail such as gmail filesystem) + +If I were gmail developper, eat the data *slowly*. + + C: tag APPEND INBOX {1000000+} + S: tag NO quota limit exceeded + C: From: foo@bar.baz.com + S: From: BAD unknown command + C: To: imap-protocol@u.washington.edu + S: To: BAD unknown command + C: Subject: i-node + (server detect bad client by several invalid command, so sleep 10 seconds) + S: Subject: BAD unknown command + C: Date: ... + (sleep 10 seconds) + S: Date: BAD unknown command + ... + +-- +Takeshi Chiba + +(2013/03/27 6:26), Brandon Long wrote: +> More than a year ago, we (Gmail) disabled LITERAL+ on our servers. +> +> This was because of some unfortunate combination of factors. For one, we have a maximum message size on our server, with no real way to make that available to +> IMAP (maybe via GETQUOTA, but if no clients check it, that's not that useful). For two, we have an inbound bandwidth quota to protect against both broken +> clients and attempts to use Gmail IMAP as a storage system. +> +> So, if a user attempted to draft a message larger than our limit (35MB), with LITERAL+, the client would just issue an APPEND with two large a message. Our +> options were to just eat the data and say NO afterwards (great waste of bandwidth) or drop the connection. Some clients would just keep retrying to do the +> APPEND until they exhausted the upload bandwidth quota, or just cost the user a lot of money if they happened to be on a line that charged. +> +> So, we disabled LITERAL+... but now I watch some UTF-8 SEARCH commands that have N literals in them, each requiring a server response, its just kind of evil. +> +> I guess we could have the server learn that a user is using a bad client and disable LITERAL+ automatically, anyone have any other ideas? +> +> Brandon +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22688.mbox:2,S new file mode 100644 index 00000000..2e4143d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22688.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jan 14 05:58:35 2013 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> +Message-ID: <50F40F0B.3020800@gulbrandsen.priv.no> + +There isn't a good way, but there's always head-on brute force. + +When you store a message in Sent, store the message-id into a little +database on the side. You don't have to take very good care if it, any +sort of crap db will do, even an ascii file in a cache directory. When +you look at Sent for other reasons, see if the message-ids in that db +are all duplicated in Sent, and if most of them are, stop writing to +Sent from then on. See? The solution isn't difficult at all, merely a +little nauseating ;) + +Have a nice day. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22697.mbox:2,S new file mode 100644 index 00000000..c6f73dc4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22697.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From slusarz at curecanti.org Tue Dec 11 13:21:10 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: <7A294188-31BB-4C43-8D13-6BE9B413E472@orthanc.ca> +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + + <20121211133659.Horde.l5mdoRCy0RtyMMLrnOij-Q1@bigworm.curecanti.org> + + <7A294188-31BB-4C43-8D13-6BE9B413E472@orthanc.ca> +Message-ID: <20121211142110.Horde.Cvwgt-RXhjDe7gZ6eiKrkw1@bigworm.curecanti.org> + +Quoting Lyndon Nerenberg : + +> There are only two cases where I generate an ALERT: for an +> administrative server shutdown (e.g. a MOTD style 'server down for +> maintenance until 0630' message), or when the user's auth +> credentials are not useable (e.g. 'your password has expired'). + +I've also seen ALERTs issued for over quota (or approaching quota) events. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22701.mbox:2,S new file mode 100644 index 00000000..6effce17 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22701.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dwhite at olp.net Sat Nov 17 23:44:35 2012 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Cannot authenticate plain with Cyrus server +In-Reply-To: <50A81C5B.3010109@comaxis.com> +References: <50A81C5B.3010109@comaxis.com> +Message-ID: <20121118074434.GA8424@dan.olp.net> + +On 11/17/12?15:23?-0800, Jeff McKay wrote: +>I have client software trying to do AUTHENTICATE PLAIN against a Cyrus +>imap server version 2.2.12. I have a SSL connection. I am getting +>authentication failure even though I'm pretty sure I am doing this +>correctly. The original auth response I generate is this: +> +>64 6F 67 67 79 00 63 6F 6D 70 75 67 65 6E 00 63 doggy.compugen.c +>6F 6D 70 75 67 65 6E 00 00 00 00 00 00 00 00 00 ompugen......... +> +>where "doggy" is the user id and "compugen" is both the administrator +>user and password. I base64 encode this string to: +> +>ZG9nZ3kAY29tcHVnZW4AY29tcHVnZW4= +> +>and send that in response to the server's '+' prompt, but get back "NO +>authentication failure". I can do a normal login using compugen/compugen +>and it works, and that gives me access to all user folders. I am also +>certain that "doggy" is a valid user id, because I have logged in with +>that as well. +> +>I have used this exact same software with many other servers to do +>authenticate plain with no problem. Since I can do a normal login with +>compugen, that suggests a work around I can use, but I would prefer to +>know what is wrong with auth plain, or know for certain that there is a +>problem on the server that is not my fault. + +By requesting separate authc and authz identities, you are asking Cyrus +IMAP to perform (what it calls) proxy authentication. Your 'admin' user +will need to either: + +be listed within the 'proxyservers' config option in /etc/imapd.conf + or +have 'a' acl rights on authz's mailbox (and have loginuseacl enabled) + +See the imapd.conf manpage for your version as my experience is based on a +newer version of cyrus. + +I believe that having a user listed within both 'admins' and 'proxyservers' +will fail proxy authentication for that user (by design). + +Also have a look at your syslog (auth facility for cyrus sasl output, and +mail facility for cyrus imap output). Configuring mail.* and auth.* may +provide more detail as to why your authentication attempts are failing. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22707.mbox:2,S new file mode 100644 index 00000000..40f4a7b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22707.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From bill.shannon at ymail.com Mon Oct 29 15:21:47 2012 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] significance of leading whitespace in RFC 2822 + unstructured headers +Message-ID: <508F017B.4000606@ymail.com> + +(Maybe there's an RFC 2822 experts list that would be more appropriate +for this question? If so, please point me in the right direction.) + +According to the RFC 2822 syntax, any whitespace after the colon in +an unstructured header is part of the value of that header. +This means that in the header + +Subject: test + +The value of the subject header is " test" with a leading space. + +I suspect the UW IMAP server is not alone in returning "test" as the +subject for such a message. + +Similarly for the Content-Description header. + +(A quick test shows that the UW IMAP server preserves trailing whitespace +but not leading whitespace in Subject and Content-Description headers.) + +Am I misinterpreting the RFC 2822 spec? I'd really like that leading whitespace +to be insignificant, and I suspect that's the way most people and software +treat it, but I can't see where the spec says that. + +This is an issue because an OASIS security spec says that all whitespace +in unstructured headers must be preserved, and factors into the digital +signature of the message. + +Thanks. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22719.mbox:2,S new file mode 100644 index 00000000..931adfba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22719.mbox:2,S @@ -0,0 +1,110 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Aug 17 17:13:53 2012 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: <16C2B175-8815-42C5-B4BF-621EE86B8050@iki.fi> +References: <502DBEA4.2070204@verizon.net> + + <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> + + + + <16C2B175-8815-42C5-B4BF-621EE86B8050@iki.fi> +Message-ID: + +On Fri, 17 Aug 2012, Timo Sirainen wrote: +> On 17.8.2012, at 8.16, Philip Guenther wrote: +> > On Fri, 17 Aug 2012, Timo Sirainen wrote: +> > ... +> >> Anyway, [1.MIME] isn't a valid request in Joshua's test mail. +> > +> > Chapter and verse, please? +> > +> > (There are specific restrictions on when HEADER and TEXT are valid, +> > but no such restrictions are specified for the MIME part specifier...) +> +> Well, I'm not sure if it's really a BAD-type of invalid, but [x.MIME] +> refers to the part's MIME headers, and if the parent isn't a multipart, +> there are no MIME headers, so the proper result is empty. + +Well, RFC 3501 says: + The MIME part specifier refers to the [MIME-IMB] header for + this part. + +[MIME-IMB] is a reference to RFC 2045. That RFC doesn't define "header" +itself, but does describe headers on not just body parts but entities: + +2.4. Entity +... + <...> Any sort of field may be present in the header of an entity, + but only those fields whose names begin with "content-" actually have + any MIME-related meaning. Note that this does NOT imply thay they + have no meaning at all -- an entity that is also a message has non- + MIME header fields whose meanings are defined by RFC 822. + +That implies to me that "header" doesn't necessarily mean "header on body +part". + +Also, RFC 3501 refers to [MIME-IMB] header fields in the description of +the BODYSTRUCTURE fetch item, wherein message/rfc822 parts do have their +header parsed to fill in the various fields. + + +So, I would argue that RFC 3501 does specify that .MIME work on all parts +and, in the particular case of message/rfc822 part, is equivalent to +asking for HEADER one level higher. + + +Philip Guenther + + +(In case that last "one level higher" doesn't make sense, here's a longer +example: + +------------------------------------------------------ +Date: Fri, 01 Jan 2010 12:00 -0500 +To: x@x.x +From: y@y.y +Subject: download on demand problem +MIME-Version: 1.0 +Content-Type: message/rfc822 + +Date: Fri, 01 Jan 2012 12:00 -0500 +To: y@y.y +From: x@x.x +Subject: Blast from the future +MIME-Version:1.0 +Content-Type: multipart/mixed; boundary=foo + +--foo + +Do you know what to do when you see this message? + +--foo +Content-Type: text/html + +Blah blah blah +--foo +Content-Type: multipart/digest; boundary=bar + +--bar + +Subject: blah +Foo: bar + +sdlfkj +sdlfkj +sdlfkj + +--bar-- + +--foo-- +------------------------------------------------------ + +In that, [1.3.1] is the digest message, starting at the "Subject: blah" +line and continuing through the three "sdlfkj" lines. [1.3.1.1] is just +the three "sdlfkj" lines. [1.3.1.1.MIME] is the same as [1.3.1.HEADER], +which is the header of the digest message, being "Subject: blah", "Foo: +bar", and the blank line after.) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22726.mbox:2,S new file mode 100644 index 00000000..7ece8cc4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22726.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Wed Jun 20 09:09:10 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Server support for RFC5267's CONTEXT=SORT +In-Reply-To: <4FE1F0FD.5050603@flaska.net> +References: <4FE1F0FD.5050603@flaska.net> +Message-ID: <71D36D9E-CCDB-4098-9CB1-C7D33A1033CC@iki.fi> + +On 20.6.2012, at 18.49, Jan Kundr?t wrote: + +> is there an IMAP server implementation out there (preferably a free +> software one or someone willing to provide demo account for +> interoperability testing) which supports CONTEXT=SORT, ie. incremental +> updates to a saved SORT command? + +The only server I see advertising CONTEXT=SORT capability is the Oracle/Sun CMES server. I don't know if Oracle still allows downloading it, but even if it does it's probably the most difficult piece of software I've ever set up. :) + +> I've looked at Dovecot, Cyrus, Isode, UW, Zimbra and Zarafa; none of +> them appear to have that available according to their reported +> capabilities after login. + +I'll probably look into implementing CONTEXT=SORT after I'm done with BINARY. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22729.mbox:2,S new file mode 100644 index 00000000..67fcadf5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22729.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From tss at iki.fi Thu May 3 11:00:35 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: <4FA270A0.3040003@gulbrandsen.priv.no> +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> + <4FA270A0.3040003@gulbrandsen.priv.no> +Message-ID: + +On 3.5.2012, at 14.48, Arnt Gulbrandsen wrote: + +> Timo wrote: +>> Clients C1 and C2 send: +> +> It can also be connections C1 and C2 by the same client. If it is, C1 is +> perfectly aware of what you told C2, and Dovecot is right today and +> would be broken by your suggested change. + +Right, so I won't change the normal client-visible behavior at least. I was only thinking about that while writing the mail, because I thought I'd try to make the question more generic. :) + +Another try at what I'm really after: + +You want to sync two IMAP servers periodically, but not continuously. For an extreme example lets say you have 1) your real always-connected IMAP server, which you sometimes use via webmail and 2) another IMAP server on your laptop, which you carry around and isn't always connected. It's possible that you do changes in both of these servers while they are unsynced. + +Or a similar issue could happen with a shared mailbox in a multi-master type of setup during a split brain. + +So you have clients that issue STORE commands to the same mail in both servers, and you need to sync them together. Both servers keep a log of what STORE commands the clients have sent, so they can intelligently merge the changes by reading the logs. + +So the obvious merges for a keyword called "k" are: + +S1: +FLAGS k +S2: +FLAGS k +result: k set + +S1: -FLAGS k +S2: -FLAGS k +result: k unset + +S1: +FLAGS k +S2: +result: k set + +S1: -FLAGS k +S2: +result: k unset + +Then there's a real conflict: + +S1: +FLAGS k +S2: -FLAGS k +result: use whichever server changed it later + +But the one that I'm not entirely sure about: + +S1: FLAGS k +S2: +FLAGS k2 + +If S1 is done before S2, result: k k2 +If S1 is done after S2, result: k? Or perhaps still "k k2", because S1 definitely didn't know that S2 had added a flag. + +Then there's of course what happens with CONDSTORE. If the order of operations is: + +S1: +FLAGS k +S2: +FLAGS k2 +S1: (UNCHANGEDSINCE ..) FLAGS (k3) + +Because the sync happens only after the conditional FLAGS has already succeeded and returned to client, I think the only reasonable result for this is "k2 k3". diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22732.mbox:2,S new file mode 100644 index 00000000..cdb04200 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22732.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From brong at fastmail.fm Wed Apr 4 01:06:26 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <4F7B8913.4060308@earthlink.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> +Message-ID: <20120404080626.GA5317@launde.brong.net> + +On Tue, Apr 03, 2012 at 06:34:43PM -0500, Rick Sanders wrote: +> I'm working with an IMAP server which gives errors in response to +> what seem to me to be valid FETCH commands. + +Totally not replying to you here, but here's a fine example of why +THREAD=REFERENCES is broken in the real world. You replied to an +existing message, changed the subject, didn't strip these headers: + +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> +In-Reply-To: <20120209112411.GB29734@launde.brong.net> + +And so you get threaded in a totally different discussion. Yay. + +User-Agent: Mozilla/5.0 (Windows NT 5.1; + rv:11.0) Gecko/20120327 Thunderbird/11.0.1 + +Not that it's Thunderbird's fault, necessarily. I might suggest to +them a "you changed the subject, are you sure this is actually a +reply" type of question be asked... + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22743.mbox:2,S new file mode 100644 index 00000000..ed896a02 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22743.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From petite_abeille at mac.com Mon Mar 19 13:02:38 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +Message-ID: + +Hello, + +Bellow is a preview of a diminutive IMAP server implemented in Lua [1]: + +imap://lua:lua@svr225.stepx.com:1143/inbox + +For these brave enough to give it a try, the user name and password is lua (plain login, no starttls, nor ssl). + +For example: + +$ telnet svr225.stepx.com 1143 +Trying 212.55.219.225... +Connected to svr225.stepx.com. +Escape character is '^]'. +* ok imap4rev1 +123 login lua lua +123 ok login +123 select inbox +* 1000 exists +* 0 recent +* flags (\answered \deleted \draft \flagged \seen) +* ok [permanentflags ()] done +* ok [uidnext 88836] done +* ok [uidvalidity 15986] done +123 ok [read-only] select +123 fetch * fast +* 1000 fetch (flags (\seen) internaldate "27-Feb-2012 01:31:18 +0000" rfc822.size 13981) +123 ok fetch +123 logout +* bye imap4rev1 +123 ok logout + +The demo server sports the content of the Lua mailing list since its inception until February 2012. About 88K messages. + +The server is read only and fronts an email archive stored in SQLite. + +The server side implementation details can be found bellow: + +http://dev.alt.textdrive.com/browser/Mail/IMAP.lua#L523 +http://dev.alt.textdrive.com/browser/Mail/IMAPFetch.lua#L747 +http://dev.alt.textdrive.com/browser/Mail/IMAPSearch.lua#L498 + +The server has been tested for interoperability with the following libraries: + +- uw-imap c-client +- JavaMail +- Perl Mail::IMAPClient +- Python imaplib +- Ruby Net::IMAP + +And the following email clients: + +- alpine +- Apple Mail Mac OS X +- Apple Mail iOS +- Mozilla Thunderbird +- Mulberry +- GyazMail +- Sparrow + +As the IMAP protocol is rather, hmm, "challenging", help with interoperability testing would be much appreciated :) + +If you manage to connect (or not) to the demo server, could you report back what client or library did or didn't work as expected? + +Thanks in advance. + +Cheers, + +-- + +[1] http://www.lua.org/about.html + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22746.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22746.mbox:2,S new file mode 100644 index 00000000..3c4b2f59 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22746.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From petite_abeille at mac.com Thu Feb 16 13:12:31 2012 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] bodystructure for multipart without parts? +Message-ID: <101F6702-6C66-4397-9A03-A7D130FF07B2@mac.com> + +Hello, + +Given a multipart message without any actual parts [sic], what would be a reasonable thing for bodystructure to do? + +E.g., given the following message: + +--8<-- +Message-ID: +From: "Ray Reagan" +Reply-To: "Ray Reagan" +To: lua-l@tecgraf.puc-rio.br +Date: Wed, 16 Jun 2004 23:30:30 -0500 +X-Mailer: +MIME-Version: 1.0 +Content-Type: multipart/alternative; + boundary="--3413593125195075" +Subject: (spam) + +The contents of this message was spam. +-->8-- + +What should bodystructure return for the non-existing parts? NIL? An empty list? Or? + +Thanks in advance. + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22749.mbox:2,S new file mode 100644 index 00000000..c7366347 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22749.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Jan 9 16:41:24 2012 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] "normalized message ID" in RFC 5256? +In-Reply-To: +References: <67105.1326153749@parc.com> + +Message-ID: <8308F0D4-F021-4C79-BD18-5BB8097A0B71@orthanc.ca> + + +On 2012-01-09, at 16:31 PM, Mark Crispin wrote: + +> Message-ID: <"bloop"@grok.this> +> and +> Message-ID: +> +> as the same thing. This was a protocol wart and I'm glad to see it +> declared obsolete. I wouldn't flame anyone who decided that strcmp() is +> the one and only way to compare Message-IDs. I daresay that's what most +> implementations did anyway even when RFC 822 was king. + +The attempt at RFC2195-bis called this out, and nobody complained (once educated with the Mallet of Understanding). If invented today, Message-ID would have been named UUID. The semantics are identical. + +--lyndon + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 858 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22752.mbox:2,S new file mode 100644 index 00000000..30f2249c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22752.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Wed Dec 7 01:55:24 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] notification of deleted/expunged messages? +In-Reply-To: +References: +Message-ID: <80779123-5707-46B5-80E9-F90412A013BD@iki.fi> + +On 7.12.2011, at 11.27, Petite Abeille wrote: + +> Now a new message arrives, shifting the content of the inbox by one from UID 82542-83541 to UID 82543-83542. +> +> How should the server notify the client? +> +> Would the following unilateral untagged notification be enough? +> +> s: * 1 expunge +> s: * 1000 exists + +This is correct, but there are restrictions when you can send EXPUNGE notifications: + +> An EXPUNGE response MUST NOT be sent when no command is in +> progress, nor while responding to a FETCH, STORE, or SEARCH +> command. This rule is necessary to prevent a loss of +> synchronization of message sequence numbers between client and +> server. A command is not "in progress" until the complete command +> has been received; in particular, a command is not "in progress" +> during the negotiation of command continuation. +> +> Note: UID FETCH, UID STORE, and UID SEARCH are different +> commands from FETCH, STORE, and SEARCH. An EXPUNGE +> response MAY be sent during a UID command. + +So in these situations either you can't send a new 1000 EXISTS, or you must temporarily allow more than 1000 messages to be accessible. diff --git a/demo/ermis-f/imap-protocol/cur/1600095048.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095048.22756.mbox:2,S new file mode 100644 index 00000000..644dbd2b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095048.22756.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From mrc+imap at panda.com Tue Nov 1 00:00:12 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + + +Message-ID: + +On Tue, 1 Nov 2011, Timo Sirainen wrote: +> A partial fetch +> from a non-zero offset requires some scanning to find out the +> LF-only-offset. But luckily all clients just fetch the blocks in +> increasing order from zero offset, so this isn't such an important +> problem. + +In legacy stores that use LF-only newlines, I convert a body part to be +fetched to its CRLF form prior to output, and keep it in a buffer that is +reused when the fetched body part changes. When a message is parsed, both +the physical offset/size on disk and the IMAP count is calculated and +preserved for the duration of the session. + +In the case of partial fetching, the conversion only happens once, since +as Timo notes all clients just fetch the blocks in increasing order from 0 +offset. Each subsequent block fetch notices that the buffer already has +the desired body part, and thus no new mail store read/conversion is +needed. + +Modern (post-1995) stores use CRLF newlines, or more accurately do no +newline conversion; they store the message exactly as it was transmitted +in SMTP; thus the physical size and IMAP count are the same. The CPU +saving in abolishing newline conversion is easily worth the storage cost. + +Even more modern stores store all parse state, including offsets and +counts, in metadata so that once calculated it is never calculated again +(another great CPU savings). + +Bad counts are a problem in partial fetching. The client needs correct +counts in order to form requests to fetch the right amount of data. +Otherwise, the client may fail to fetch the entire data (short count), or +get hung trying to fetch unavailable data (long count). + +The check in Alpine that you refer to reports a long count. There's no way +for any IMAP client to detect a short count; it will just fail to fetch +the entire segment. So by advocating removing the check, you are asserting +that Gmail only does long counts, never short counts; and that all other +broken servers will be the same. Thus, you imply that users should not be +warned about servers whose developers are lazy and incompetent. And, when +the body part is truncated, you claim "it must be a client bug". + +Most other server developers get it right. Why can't Google? + +Perhaps we need product liability for software vendors after all. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22595.mbox:2,S new file mode 100644 index 00000000..249e8c8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22595.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 10 21:41:17 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <86FE3C0E-8F89-4721-B43F-C3126C7C211F@orthanc.ca> +References: <54FAEB94.4070508@lavabitllc.com> + <86FE3C0E-8F89-4721-B43F-C3126C7C211F@orthanc.ca> +Message-ID: <1426048877.2620861.238715525.20928B48@webmail.messagingengine.com> + +On Wed, Mar 11, 2015, at 01:23 PM, Lyndon Nerenberg wrote: +> +> On Mar 7, 2015, at 4:14 AM, Ladar Levison wrote: +> +> > I thought this might be a good list to ask a simple, but admittedly +> > subjective question: If Mark Crispin was creating IMAP from scratch, in +> > the world of today, would it still be a line based protocol like it was +> > with RFC3501, or would he have gone with something more stateless, like +> > a JSON-RPC paradigm, like JMAP? +> +> [ Coming in a bit late, I realize ... ] +> +> For MRC, state was king. And for a remote mailbox access service, he believed state was critical to building an efficient protocol. +> +> He would have scoffed at comments about 'line' vs 'streaming' and 'text' vs 'binary' as indicative of the spewer of such nonsense being beneath contempt ;-) What Mark got, and what so many other self-proclaimed experts in this discussion are blissfully oblivious to, is that it's the RTTs that kill an interactive protocol, and nothing else. He firmly believed that every IMAP client developer should be forced to work behind a 1200 bps (yes, 1200) network link. He rightly surmised that that was the only way to ensure an IMAP client would make the most efficient use of the protocol. And I agree completely, although I did try to convince him that 9600 bps was perhaps a reasonable compromise. + +This has been really good for us designing JMAP, because we are in Australia and our servers in New York, so latency is a real consideration for us. Round trips are a big deal. + +> Many times we talked about what the son-of-IMAP might look like. For quite a few years I have been bouncing around an idea for an MUA access protocol. Conceptually it is very different from IMAP, but it retains the philosophy in many ways. I had some wonderful nights having my skin blistered by his critiques. Fortunately there was a lot of beer at hand to quench the flames :-) The once thing we did - almost - come to agreement on was that a purely Sexpr-based protocol syntax was the right way to do it. He always got grumpy talking about what he considered the deficiencies and compromises in the IMAP syntax that were 'forced' on him by others. (How much of that was actually true I can't speak to. But I know there are people still likely reading this mailing list who mightily pissed him off over what he perceived to be political manipulation of the spec for corporate gain.) (I also can't believe that he didn't just tell them to "see figure one," but there you go.) + +Have you had a look at jmap.io? I would have loved to see Mark's feedback on it. I suspect sitting down and talking over beers would have been more valuable than talking over email, because describing things over email is hard. + +JMAP is very much inspired by IMAP and built on the raw concepts. The one place where Mark and I disagreed a lot was on the one canonical ordering (last arrived) for the mailbox, and all the state being easy to use if you wanted that ordering, but impossible or very hard for everything else. Trying to get an efficient view on something OTHER than last arrived on a million message mailbox is crazy with IMAP. + +Which means copying in old messages from an archive mixes things up. Most clients seem to want to sort to either INTERNALDATE (received date) or the Date: header. + +So in JMAP we actually make the server keep more state so that we can provide efficient updates to whichever that the client wants, including sorts or searches (which allows things like a view of unread messages, or pinned messages on top as a mailbox view) + +> What I took away from our conversations was this. He thought the explosion of IMAP extensions pointed to a fundamental flaw in the design of the protocol, one that needed fixing. He could not pin down, to his own satisfaction, what that flaw was (or flaws were); he had his own misgivings about some of the design, but he was never forthcoming to me about what he thought they were. (He didn't want to criticize anything until he knew he could shred it with 100% validity, and that included his own work.) But he also thought at least some of the extensions were due to pure laziness and ineptitude on the part of client writers. (He could peel paint with that topic of conversation!) + +I'd say there's half and half here. The fact that you could only do windowing by message number, and everything else was full mailbox search/sort was a big issue for clients. And getting updates to everything you're interested in. + +> I miss the cranky bastard, with his guns and politics and libertarian take on life :-) We were polar opposites on the first two of those three (maybe all of them), but he respected what you had to say, even as he let loose with how he thought you were a complete idiot and did not deserve to grace a keyboard with your fingers :-) + +Yep, I remember those! + +> As April approaches, I hope you will all join me in raising a glass of something uncomfortable in his memory, while you read one of his great works: http://www.ietf.org/rfc/rfc748.txt +> +> Especially the young turks recently gracing us with their presence. They might learn much. Or not. + +I think a glass of something uncomfortable will work well with reading that one! I'll be on a boat between Melbourne and Tasmania on that night, and I'll definitely drink a glass of something horrible in his memory. + +Bron. + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22641.mbox:2,S new file mode 100644 index 00000000..86f207af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22641.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Mar 19 16:30:23 2014 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] STARTTLS after PREAUTH +In-Reply-To: <20140319125919.Horde.lPfMlZ_d7yz2EYxcLrkFeQ3@bigworm.curecanti.org> +References: <20140318141305.Horde.iyy0UP8Ostx9TojRZiFyjw1@bigworm.curecanti.org> + <059bac1f-35eb-4f87-bd5e-e986dfb46b83@flaska.net> + <20140318152549.Horde.0C2tXb4vwx_29xt0ZbwdEQ4@bigworm.curecanti.org> + <1395187453.9897.96141249.7BE88CD8@webmail.messagingengine.com> + + <20140319125919.Horde.lPfMlZ_d7yz2EYxcLrkFeQ3@bigworm.curecanti.org> +Message-ID: <72EE9E09-248C-4AE1-A80F-CD1A6A74B601@isode.com> + +Hi Michael, + +> On 19 Mar 2014, at 18:59, Michael M Slusarz wrote: +> +> Quoting Tony Finch : +> +>> Bron Gondwana wrote: +>>> On Wed, Mar 19, 2014, at 08:25 AM, Michael M Slusarz wrote: +>>> > +>>> > STARTTLS deprecated the use of port 993, which isn't an official IMAP +>>> > port FWIW. +>> +>> What do you mean by "official"? Have you seen RFC 6186? +> +> Nothing in there registering 993 to IMAP. RFC 6335 registry agrees that it hasn't been "officially" reserved: +> +> http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=imaps +> +> But this is just arguing semantics. Real-world: 993 (& 995) have universal knowledge as to their current use. + +I think IETF UTA WG is going to register them properly. + +> michael +> A +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22682.mbox:2,S new file mode 100644 index 00000000..dee4a0c1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22682.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Wed Mar 27 05:52:04 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <5152E3E6.40506@aj.jp.nec.com> +References: + <5152E3E6.40506@aj.jp.nec.com> +Message-ID: <1364388724.13923.97.camel@innu> + +On Wed, 2013-03-27 at 21:19 +0900, Takeshi Chiba wrote: +> It seems like not general problem but gmail :-) +> (There are many special clients for gmail such as gmail filesystem) +> +> If I were gmail developper, eat the data *slowly*. +> +> C: tag APPEND INBOX {1000000+} +> S: tag NO quota limit exceeded +> C: From: foo@bar.baz.com +> S: From: BAD unknown command + +That would be a broken server. The server has no choice but to eat away +the data. + +> (server detect bad client by several invalid command, so sleep 10 seconds) + +Now, the server could of course start sleeping a bit after sending the +NO reply. If some client were able to parse the NO reply it would +realize that it should disconnect instead of waste bandwidth by sending +the whole 1 MB of data. So if server sees a literal e.g. >= 1 MB, it +could sleep(10) + disconnect. But I don't know how helpful that is with +the current clients, probably not very. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22688.mbox:2,S new file mode 100644 index 00000000..6dc26f5e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22688.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From blong at google.com Mon Jan 14 13:15:13 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + + <1358168208.10326.16.camel@innu> + +Message-ID: + +On Mon, Jan 14, 2013 at 5:24 AM, Dave Cridland wrote: + +> +> On 14 Jan 2013 07:56, "Timo Sirainen" wrote: +> > +> > On Mon, 2013-01-14 at 12:39 +0000, Dave Cridland wrote: +> > > +> > > The setup of BURL from an MUA's perspective is awkward, though, +> > > because the BURL capable submission server provides no hints as to +> > > which IMAP server is to be used, and vice-versa, making discovery a +> > > bit hit and miss. +> > +> > User (or automation) already has to configure IMAP and submission server +> > to MUA, so how does BURL make it any more difficult? +> +> I was dealing with user-directed configuration rather than discovery; +> maybe it's changed now. I'm merely relaying the experiences I've had. +> +> > 1. client APPENDs/CATENATEs message to IMAP server +> > 2. client requests URLAUTH URL +> > 3. client connects to submission server +> > 4. client sends message with BURL +> +> Yeah, and that's close to what Polymer does, although it takes into +> account POSTADDRESS and whether the message would be shorter via BURL, and +> connects to the submission server first so it can proceed in the +> background, and so on. +> +> The problem is that there's no way of knowing whether a particular URL +> will be acceptable to BURL or not without simply trying it, and that makes +> me feel all goose-bumpy inside. +> +> And in vague response to lack of BURL support in servers - yeah. This is +> irritating, and very chickeny (and/or eggy) but sitting here and moaning +> about it won't change much. +> +> My gut feeling is that if Brandon and Bron implemented BURL, you'd see +> clients falling over themselves to implement. +> + +I realize its just my young naivete, but the complexity of BURL/URLAUTH +instead of what seems to me the much simpler concept of mail submission via +IMAP just boggles my mind. (if someone has a link to a thread or page that +opines on why, I'd be happy to try to understand, but last year's thread +seemed to come down to "we might not future-proof it against a new +must-have SMTP extension and we would never re-visit the IMAP extension to +also support that") + +We don't currently have plans to support BURL. There'd have to be a pretty +compelling reason, and given that we auto-BCC all msa messages anyways, it +already solves the two copy problem... admittedly, only for clients which +know to configure that way or users that manually configure based on our +support articles. Also, the user's shouldn't get two copies if our +duplicate detection is working, so it only makes sending slower in that +case. + +Frankly, we'd be more likely to support the submission via IMAP draft that +was circulated last year. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22697.mbox:2,S new file mode 100644 index 00000000..82ebb181 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22697.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From slusarz at curecanti.org Tue Dec 11 13:20:13 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + + <20121211133659.Horde.l5mdoRCy0RtyMMLrnOij-Q1@bigworm.curecanti.org> + +Message-ID: <20121211142013.Horde.lUthhYRhj6hdS9T-Igy3aA1@bigworm.curecanti.org> + +Quoting Brandon Long : + +> I'm confused about the consensus against ALERT. +> +> This is an error condition that doesn't have a correct error code defined, +> how is the client supposed to know what the error is to tell the user? The +> server does know the exact error condition, however. + +The problem with ALERT is that the contents must ALWAYS be shown to +the user. There are all sorts of IMAP commands where error responses +can (and should) be handled without the user knowing about it. + +Imagine that a user opens a mailbox and the client begins to download +messages in the background. When it reaches the message with bad +binary data, and the server throws an ALERT, this ALERT (e.g. "Bad +message data") will be displayed while the user is likely still in +mailbox-level view. It is sure to elicit a "WTF?" given that the +alert has no context to the activity the user is performing. + +> I'm also not sure what the client is supposed to do in this situation +> except display an error to the user. Do you expect the client to fall back +> to a non-binary fetch and hope it has better luck with decoding than the +> server did? + +I definitely agree that, when the bad part is attempted to be +displayed to the user, there should be some sort of error message +displayed. But the contents and timing of the error message should be +the client's responsibility. The server's job is to provide +sufficient error code information so that the client can accurately +and clearly explain to the user the problem. + +> And that's on top of the fact that the client doesn't even +> know which message was broken. + +We send body requests for each part separately for precisely this +reason. Slightly less efficient but necessary for correct error +handling. It's the same sort of error reporting vs. efficiency +tradeoff as not using LITERAL+ when doing a MULTIAPPEND. + +> Anyways, CORRUPTION to me implies errors accumulated in transport or +> storage, which the user might attribute to the server, which is hardly the +> case if the message was broken when the server acquired it. + +I'll agree that as written (especially in the example), CORRUPTION +seems to address the issue of something wrong from a server +metadata/infrastructure POV rather than an issue with the contents of +the message. In the absence of an explicit BROKEN response code, we +are probably trying to fit a square peg into a triangular hole. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22701.mbox:2,S new file mode 100644 index 00000000..e4e15244 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22701.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From brong at fastmail.fm Sun Nov 18 00:50:33 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Cannot authenticate plain with Cyrus server +In-Reply-To: <20121118074434.GA8424@dan.olp.net> +References: <50A81C5B.3010109@comaxis.com> <20121118074434.GA8424@dan.olp.net> +Message-ID: <1353228633.6102.140661155062177.4E98AC18@webmail.messagingengine.com> + +On Sun, Nov 18, 2012, at 08:44 AM, Dan White wrote: +> On 11/17/12?15:23?-0800, Jeff McKay wrote: +> >I have client software trying to do AUTHENTICATE PLAIN against a Cyrus +> >imap server version 2.2.12. I have a SSL connection. I am getting +> >authentication failure even though I'm pretty sure I am doing this +> >correctly. The original auth response I generate is this: +> > +> >64 6F 67 67 79 00 63 6F 6D 70 75 67 65 6E 00 63 doggy.compugen.c +> >6F 6D 70 75 67 65 6E 00 00 00 00 00 00 00 00 00 ompugen......... +> > +> >where "doggy" is the user id and "compugen" is both the administrator +> >user and password. I base64 encode this string to: +> > +> >ZG9nZ3kAY29tcHVnZW4AY29tcHVnZW4= +> > +> >and send that in response to the server's '+' prompt, but get back "NO +> >authentication failure". I can do a normal login using compugen/compugen +> >and it works, and that gives me access to all user folders. I am also +> >certain that "doggy" is a valid user id, because I have logged in with +> >that as well. +> > +> >I have used this exact same software with many other servers to do +> >authenticate plain with no problem. Since I can do a normal login with +> >compugen, that suggests a work around I can use, but I would prefer to +> >know what is wrong with auth plain, or know for certain that there is a +> >problem on the server that is not my fault. +> +> By requesting separate authc and authz identities, you are asking Cyrus +> IMAP to perform (what it calls) proxy authentication. Your 'admin' user +> will need to either: +> +> be listed within the 'proxyservers' config option in /etc/imapd.conf +> or +> have 'a' acl rights on authz's mailbox (and have loginuseacl enabled) +> +> See the imapd.conf manpage for your version as my experience is based on a +> newer version of cyrus. +> +> I believe that having a user listed within both 'admins' and 'proxyservers' +> will fail proxy authentication for that user (by design). +> +> Also have a look at your syslog (auth facility for cyrus sasl output, and +> mail facility for cyrus imap output). Configuring mail.* and auth.* may +> provide more detail as to why your authentication attempts are failing. + +What Dan said - plus you might be better off asking on +info-cyrus@lists.andrew.cmu.edu rather than here, since your +issue is Cyrus specific rather than IMAP protocol related. + +Regards, + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22707.mbox:2,S new file mode 100644 index 00000000..a5c9ed23 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22707.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From barryleiba at computer.org Mon Oct 29 17:41:19 2012 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] significance of leading whitespace in RFC 2822 + unstructured headers +In-Reply-To: <508F017B.4000606@ymail.com> +References: <508F017B.4000606@ymail.com> +Message-ID: + +> (Maybe there's an RFC 2822 experts list that would be more appropriate +> for this question? If so, please point me in the right direction.) + +Two things, to start with: + +1. The right list for this would be ietf-822@ietf.org + +2. RFC 5322 is the current spec; 2822 is obsolete. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22719.mbox:2,S new file mode 100644 index 00000000..e0fb2615 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22719.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From dkarp at zimbra.com Mon Aug 20 13:48:48 2012 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: +References: <502DBEA4.2070204@verizon.net> + +Message-ID: <938843794.54586.1345495728390.JavaMail.root@zimbra.com> + +> > [Zimbra, specifically 7.2.0_GA_2669]: +> > BODY[TEXT]: The entire inner message +> > BODY[1]: The entire inner message +> > BODY[1.1]: Do you know... +> > BODY[1.MIME]: Headers of the outer message +> > BODY[1.HEADER]: Headers of the outer message +> +> This violates this paragraph from RFC 3501, page 55: +> The HEADER, HEADER.FIELDS, and HEADER.FIELDS.NOT part +> specifiers refer to the [RFC-2822] header of the message or +> of an encapsulated [MIME-IMT] MESSAGE/RFC822 message. +> +> Since BODY[1] refers to the entire inner message, which is an +> encapsulated MESSAGE/RFC822 message, BODY[1.HEADER] should be the +> header of that inner message. + +Thanks for noticing this. We had a code mis-ordering in our part +numbering handler that was triggered in exactly this case. It +will be fixed in the 8.0.1 release. + + https://bugzilla.zimbra.com/show_bug.cgi?id=77048 + +- Dan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22726.mbox:2,S new file mode 100644 index 00000000..70fd341a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22726.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From tss at iki.fi Wed Jun 20 10:18:11 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Server support for RFC5267's CONTEXT=SORT +In-Reply-To: <71D36D9E-CCDB-4098-9CB1-C7D33A1033CC@iki.fi> +References: <4FE1F0FD.5050603@flaska.net> + <71D36D9E-CCDB-4098-9CB1-C7D33A1033CC@iki.fi> +Message-ID: <7D15D765-67D1-4396-AC93-346C5652DAC6@iki.fi> + +On 20.6.2012, at 19.09, Timo Sirainen wrote: + +> The only server I see advertising CONTEXT=SORT capability is the Oracle/Sun CMES server. I don't know if Oracle still allows downloading it, but even if it does it's probably the most difficult piece of software I've ever set up. :) + +I added the raw capability => server list to http://imapwiki.org/Specs/Raw. If anyone is interested feel free to add servers to the prettier format in http://imapwiki.org/Specs + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22729.mbox:2,S new file mode 100644 index 00000000..d30418f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22729.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From brong at fastmail.fm Thu May 3 14:02:30 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> + <4FA270A0.3040003@gulbrandsen.priv.no> + +Message-ID: <20120503210230.GD13234@launde.brong.net> + +On Thu, May 03, 2012 at 09:00:35PM +0300, Timo Sirainen wrote: +> Then there's a real conflict: +> +> S1: +FLAGS k +> S2: -FLAGS k +> result: use whichever server changed it later +> +> But the one that I'm not entirely sure about: +> +> S1: FLAGS k +> S2: +FLAGS k2 +> +> If S1 is done before S2, result: k k2 +> If S1 is done after S2, result: k? Or perhaps still "k k2", because S1 definitely didn't know that S2 had added a flag. + +I've been thinking about how to handle that case a bit too, and my +eventual position is "all keywords start unset, so in the event of +a conflict, the act of setting the keyword wins". I.e., the result +should be 'k k2' if you can't resolve timestamps to be certain what +what was intended. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22732.mbox:2,S new file mode 100644 index 00000000..5f4916b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22732.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From tss at iki.fi Wed Apr 4 01:16:14 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <20120404080626.GA5317@launde.brong.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> + <20120404080626.GA5317@launde.brong.net> +Message-ID: <531D9C22-57F9-4928-B5D9-E5773E0234C7@iki.fi> + +On 4.4.2012, at 11.06, Bron Gondwana wrote: + +> Totally not replying to you here, but here's a fine example of why +> THREAD=REFERENCES is broken in the real world. You replied to an +> existing message, changed the subject, didn't strip these headers: +> +> References: <1328732126.32086.140661033971485@webmail.messagingengine.com> +> <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> +> <20120209112411.GB29734@launde.brong.net> +> In-Reply-To: <20120209112411.GB29734@launde.brong.net> +> +> And so you get threaded in a totally different discussion. Yay. +> +> User-Agent: Mozilla/5.0 (Windows NT 5.1; +> rv:11.0) Gecko/20120327 Thunderbird/11.0.1 +> +> Not that it's Thunderbird's fault, necessarily. I might suggest to +> them a "you changed the subject, are you sure this is actually a +> reply" type of question be asked... + +Yeah.. But then again people do sometimes change the subject of an existing thread, and it should stay that way. Would be a useful feature for a mail client though to ask about it. Also Dovecot mailing list actually rejects these kinds of mails :) If this Perl script fails the post is rejected: + +my $hdr = 1; +my $is_reply = 0; +my $has_in_reply_to = 0; +while (<>) { + if ($hdr) { + $is_reply = 1 if (/^Subject: .*Re?:/i); + $is_reply = 1 if (/^Subject: .*[\[\(]was\b/i); + $has_in_reply_to = 1 if (/^In-Reply-To:.*|]/); + } +} + +if ($has_in_reply_to && !$is_reply) { + exit 1; +} diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22743.mbox:2,S new file mode 100644 index 00000000..1bf4e9f0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22743.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From brong at fastmail.fm Mon Mar 19 13:46:45 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: +Message-ID: <20120319204645.GA2859@launde.brong.net> + +On Mon, Mar 19, 2012 at 09:02:38PM +0100, PA wrote: +> The server has been tested for interoperability with the following libraries: +> +> - uw-imap c-client +> - JavaMail +> - Perl Mail::IMAPClient +> - Python imaplib +> - Ruby Net::IMAP +> +> And the following email clients: +> +> - alpine +> - Apple Mail Mac OS X +> - Apple Mail iOS +> - Mozilla Thunderbird +> - Mulberry +> - GyazMail +> - Sparrow +> +> As the IMAP protocol is rather, hmm, "challenging", help with interoperability testing would be much appreciated :) + +Have you looked at http://imapwiki.org/ImapTest ? + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22749.mbox:2,S new file mode 100644 index 00000000..0bf0d2a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22749.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From janssen at parc.com Mon Jan 9 17:42:16 2012 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] "normalized message ID" in RFC 5256? +In-Reply-To: <8308F0D4-F021-4C79-BD18-5BB8097A0B71@orthanc.ca> +References: <67105.1326153749@parc.com> + + <8308F0D4-F021-4C79-BD18-5BB8097A0B71@orthanc.ca> +Message-ID: <70177.1326159736@parc.com> + +Thanks all, that clears that up. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22752.mbox:2,S new file mode 100644 index 00000000..e8262c9c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22752.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From brong at fastmail.fm Wed Dec 7 04:01:26 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] notification of deleted/expunged messages? +In-Reply-To: <80779123-5707-46B5-80E9-F90412A013BD@iki.fi> +References: + <80779123-5707-46B5-80E9-F90412A013BD@iki.fi> +Message-ID: <1323259286.1981.140661008567313@webmail.messagingengine.com> + + + +On Wed, Dec 7, 2011, at 11:55 AM, Timo Sirainen wrote: +> On 7.12.2011, at 11.27, Petite Abeille wrote: +> +> > Now a new message arrives, shifting the content of the inbox by one from UID 82542-83541 to UID 82543-83542. +> > +> > How should the server notify the client? +> > +> > Would the following unilateral untagged notification be enough? +> > +> > s: * 1 expunge +> > s: * 1000 exists +> +> This is correct, but there are restrictions when you can send EXPUNGE notifications: +> +> > An EXPUNGE response MUST NOT be sent when no command is in +> > progress, nor while responding to a FETCH, STORE, or SEARCH +> > command. This rule is necessary to prevent a loss of +> > synchronization of message sequence numbers between client and +> > server. A command is not "in progress" until the complete command +> > has been received; in particular, a command is not "in progress" +> > during the negotiation of command continuation. +> > +> > Note: UID FETCH, UID STORE, and UID SEARCH are different +> > commands from FETCH, STORE, and SEARCH. An EXPUNGE +> > response MAY be sent during a UID command. +> +> So in these situations either you can't send a new 1000 EXISTS, or you must temporarily allow more than 1000 messages to be accessible. + + +Nothing stopping you returning an error if someone tries to access the earlier messages +of course - you just need to retain their "position" in the msgid list until the +protocol allows you to send notice of the expunge. + +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22756.mbox:2,S new file mode 100644 index 00000000..e2f7312f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22756.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 1 00:00:31 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <19901681-2C1A-410F-93EE-51F2AF707382@iki.fi> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + + + <20111101063140.GA5353@brong.net> + <19901681-2C1A-410F-93EE-51F2AF707382@iki.fi> +Message-ID: <20111101070031.GA6591@brong.net> + +On Tue, Nov 01, 2011 at 08:40:57AM +0200, Timo Sirainen wrote: +> On 1.11.2011, at 8.31, Bron Gondwana wrote: +> +> > On Tue, Nov 01, 2011 at 08:06:29AM +0200, Timo Sirainen wrote: +> >> Dovecot also stores messages with LFs and has no trouble exporting them as if they were CRLFs. I think the only actual (performance) problem with it is .. well, actually the topic of this thread :) A partial fetch from a non-zero offset requires some scanning to find out the LF-only-offset. But luckily all clients just fetch the blocks in increasing order from zero offset, so this isn't such an important problem. +> > +> > How do you handle a message with a mix of LF and CRLF in the original? +> +> "Correctly." :) + +Er - by which you mean that you always return the exact bytes you were given? + +> Basically everywhere there are message (part) sizes, I store the "physical size" (exactly as it is stored in disk, with or without CRs) and the "virtual size" (all LFs converted to CRLFs). If physical size equals to virtual size, I'll do some extra optimizations like being able to seek to wanted offset immediately or use sendfile() to send the message. + +Sounds to me like that's enough benefit to store it all CRLFs in itself. +1/65 of storage space vs seek and sendfile. + +> Although a mix of LFs and CRLFs in the same message shouldn't normally appear in mail files. + +Most often seen with headers, or between parts. The most ugly cases +being differences between the mime-headers of a part, and the content +of said part. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095049.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095049.22759.mbox:2,S new file mode 100644 index 00000000..639697f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095049.22759.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Oct 7 07:30:57 2011 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] FETCH (rfc822) response +In-Reply-To: +References: <4DEBB242.2090200@BusCom.net> + + <4E3382E3.3010509@earthlink.net> + + +Message-ID: <4E8F0D21.3040004@earthlink.net> + +I'm working with a server whose response to a FETCH (rfc822) is +different than I have seen before. + + >> 1 FETCH 1 (rfc822) +<< * 1 EXISTS +<< * 1 FETCH (RFC822[] {0} + +I'm used to seeing something like * 1 FETCH (RFC822 {1522}. In this +case I have to send a separate 1 FETCH 1 (rfc822.size) command to get +the message size: << 1 FETCH (rfc822.size 5149). + +Just curious, is this compliant? + +-Rick + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22595.mbox:2,S new file mode 100644 index 00000000..505831be --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tjs at psaux.com Wed Mar 11 01:39:32 2015 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <86FE3C0E-8F89-4721-B43F-C3126C7C211F@orthanc.ca> +References: <54FAEB94.4070508@lavabitllc.com> + <86FE3C0E-8F89-4721-B43F-C3126C7C211F@orthanc.ca> +Message-ID: <54FFFF44.6010108@psaux.com> + +On 3/10/15 7:23 PM, Lyndon Nerenberg wrote: + +> And I agree completely, although I did try to convince him that 9600 bps was perhaps a reasonable compromise. + +And I would bet you were unsuccessful in this, much to Mark's glee. + +Mark had some unusual opinions, but he had pretty good reasons for them. + Well, except using NIL in C programs, that's just weird. + +We are all worse off for the loss of him. + +Tim + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22641.mbox:2,S new file mode 100644 index 00000000..29e85273 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22641.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Mar 20 04:06:11 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + +Message-ID: <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + +Is that atomicity really required? And if it is, I don't think the +three-step submit process gives you atomicity. + +I like it in general, but I'd prefer a two- or even one-step process. +Two-step could be "upload to outbox; submit from outbox". You can do the +atomicity thing by saying that servers SHOULD lock a message in the outbox +while it's being submitted, and refuse to resubmit. + +Personally I don't think it's worth it. It's better to have simplicity, +even at the cost of the occasional duplicated message. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22682.mbox:2,S new file mode 100644 index 00000000..c7494cf9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22682.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From blong at google.com Wed Mar 27 11:32:01 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <1364388724.13923.97.camel@innu> +References: + <5152E3E6.40506@aj.jp.nec.com> <1364388724.13923.97.camel@innu> +Message-ID: + +We actually had that failure mode to begin with due to a bug, and then we'd +drop the connection after too many bad commands... but of course, they'd +just retry. + +I think this is partially an issue that IMAP doesn't have the concept of +temp vs perm failures... though, thinking about it, that's because it +probably doesn't believe in temp failures, so NO is a perm failure, but +client inevitably treat it as a temp failure. + +And I'm unclear how this is a Gmail only issue, all other IMAP servers +accept 4GB email messages? Or have no abuse limits? I have to imagine +that at least Yahoo and probably iCloud have the same issue, though perhaps +not the scale to have seen it yet... or maybe they're using something more +off the shelf and so aren't limiting APPENDs though they would never accept +such mail for SMTP. Heck, as someone pointed out, this potential issue is +in the RFC. + +Tarpitting accepting the data ... still broken behavior, takes longer for +the client to find it out... + +Hmm, or maybe we should implement RFC 5738 so clients can just use utf-8 +for regular commands instead of having to use literals. + +Brandon + + +On Wed, Mar 27, 2013 at 5:52 AM, Timo Sirainen wrote: + +> On Wed, 2013-03-27 at 21:19 +0900, Takeshi Chiba wrote: +> > It seems like not general problem but gmail :-) +> > (There are many special clients for gmail such as gmail filesystem) +> > +> > If I were gmail developper, eat the data *slowly*. +> > +> > C: tag APPEND INBOX {1000000+} +> > S: tag NO quota limit exceeded +> > C: From: foo@bar.baz.com +> > S: From: BAD unknown command +> +> That would be a broken server. The server has no choice but to eat away +> the data. +> +> > (server detect bad client by several invalid command, so sleep 10 +> seconds) +> +> Now, the server could of course start sleeping a bit after sending the +> NO reply. If some client were able to parse the NO reply it would +> realize that it should disconnect instead of waste bandwidth by sending +> the whole 1 MB of data. So if server sees a literal e.g. >= 1 MB, it +> could sleep(10) + disconnect. But I don't know how helpful that is with +> the current clients, probably not very. +> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22688.mbox:2,S new file mode 100644 index 00000000..cbfed5dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22688.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From brong at fastmail.fm Mon Jan 14 15:17:54 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: <50F40F0B.3020800@gulbrandsen.priv.no> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <50F40F0B.3020800@gulbrandsen.priv.no> +Message-ID: <1358205474.23679.140661177584041.36A2913A@webmail.messagingengine.com> + +How often do you re-test to make sure the server is still working the same way? If the Id response changes? + +Bron (more likely to be a user or admin changing server config... it does happen) + +On Tue, Jan 15, 2013, at 12:58 AM, Arnt Gulbrandsen wrote: +> There isn't a good way, but there's always head-on brute force. +> +> When you store a message in Sent, store the message-id into a little +> database on the side. You don't have to take very good care if it, any +> sort of crap db will do, even an ascii file in a cache directory. When +> you look at Sent for other reasons, see if the message-ids in that db +> are all duplicated in Sent, and if most of them are, stop writing to +> Sent from then on. See? The solution isn't difficult at all, merely a +> little nauseating ;) +> +> Have a nice day. +> +> Arnt +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22697.mbox:2,S new file mode 100644 index 00000000..8897d3d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22697.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From tss at iki.fi Wed Dec 12 03:13:35 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] SPECIAL-USE and default mailbox names in various + IMAP clients +Message-ID: <433AB734-4205-4E4C-99B5-90538B0D811D@iki.fi> + +I added a wiki page where it would be nice to get a list of IMAP clients that support SPECIAL-USE and what their default mailbox names are. Please fill out. :) + +http://imapwiki.org/SpecialUse + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22701.mbox:2,S new file mode 100644 index 00000000..cb5eb38a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22701.mbox:2,S @@ -0,0 +1,278 @@ +MBOX-Line: From slusarz at curecanti.org Wed Nov 21 14:54:17 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + +Message-ID: <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + +Jan, + +Thanks for the input. My responses are below. + +Quoting Jan Kundr?t : + +> Hi Michael, +> I've read your draft, it's an interesting extension. However, it +> seems to me that the whole point here is to save a few roundtrips by +> skipping the process of activating/configuring various optional +> features. I'll discuss each extension separately. + +I would strongly disagree with this statement. As written, the draft +is only minimally concerned with saving on network round-trips. + +E.g. a webmail implementation: for any even reasonably sized setup, +interaction between the webmail backend and the IMAP server will +almost certainly be done through a private network. Such a setup has +the added benefit that the IMAP connection does not need any sort of +security [TLS] overhead. I have assumed in the draft that the +client/server round-trip is negligible or, in the very least, not the +bottleneck in the IMAP interaction. + +However, client/server round-trip *is* most likely an issue for a +whole category of disconnected-like clients: those running on mobile +hardware. Pipelining in this environment in no way guarantees that a +server can or will return the response in the same network packet. In +other words, this draft becomes *more* important the more that +client/server round-trip time becomes the bottleneck/limiting factor, +whether pipelined or not. + +Sidebar: I'm not a huge fan in general of pipelining as a performance +since it is not always a feasible option for clients. For example, a +client may use an OO-library to connect to the IMAP server. This +library may not provide a reasonable (or any) way of allowing multiple +commands to be sent at once via the API. For example, to start +compression, enable QRESYNC, and set the language, it is more than +reasonable to expect this kind of pseudocode: + +$result = $imap->useCompression(true); +// Check for success +$imap->useQresync(true); +// Check for success +$imap->setLanguage([LANGUAGE]); +// Check for success + +In any OO IMAP interface the order of IMAP commands to allow for +efficient pipelining, or the fact that pipelining even exists, should +obviously not be a part of the API. Thus pipelining is fairly useless +in the real world as a way to guarantee an increase in performance. + +There are other, more important reasons why a mechanism to restore +configuration is useful: + +- It prevents the need to re-parse the CAPABILITY list. Note that +parsing the CAPABILITY list involves *MUCH* more than just the actual +string tokenization of the list, although this alone may not be a +trivial task (see below). + +A client may, depending on the capabilities returned, need to perform +various internal initialization tasks. For example - if +CONDSTORE/QRESYNC is listed, a client may have to then parse a +separate configuration file to grab the details of the local cache +where it is storing this information, and then connect to this cache, +etc. Or if language is listed, a client might have to parse a local +list of language availability to determine if it can/should change the +language. + +And CAPABILITY parsing is more than just determining what capabilities +are listed. It is also determining which capabilities SHOULD not be +listed. Just today, Cyrus was fixed due to a bug that our code was +triggering: APPENDing binary data via a literal8 caused Cyrus to +immediately terminate the connection with a BYE response. Our code is +smart enough to catch this broken behavior by removing BINARY +appending from the list of available capabilities. But without a way +to ensure that every subsequent connection is a continuation of the +current session, we have to do this detection EVERY SINGLE TIME. This +is potentially a huge performance hit, since we may be appending MBs +of data to the server before the BYE response can be returned (e.g. +appending a sent-mail message containing attachments). + +- As mentioned above, sending an initialization command to the server +may take quite a bit of work on the client side to prepare. It's not +as easy as hardcoding 'ENABLE QRESYNC' in client code - it may take +quite a bit of CPU cycles to get to that point in a given client. + +Another example: a client keeps all of its imap initialization code in +a separate dynamically-loadable module. If the session is +successfully resumed, this module does not need to be +loaded/interpreted/run. + +- From the server side, it may be much more expensive to initiate an +IMAP session as compared with resuming one. This draft allows the +server to optimize if possible. I believe Timo's post indicates that +resuming in Dovecot is more efficient than creating a new session. + +- Even when pipelining commands, they still need to be sent, the +incoming command needs to be tokenized (server), the command is +performed (server), the response sent back, any untagged responses are +tokenized (client), the untagged responses are interpreted (client), +the tagged response is tokenized (client), and the tagged response is +processed (client). None of this is "free". Pipelining eliminates +none of this. + +>> COMPRESS=DEFLATE +> +> I was wondering if this one actually provides any benefit for a +> webmail client. But you're right that it indeed has an overhead and +> requires a full roundtrip to set up. However, please note that your +> extension also requires a full roundtrip, so you aren't any better +> here. + +First a point of clarification: the draft is not specific to webmail +clients. It is intended for any disconnected client that may have +need to initiate multiple IMAP connections during the client's lifetime. + +Granted, it is extremely useful for webmail clients due to extreme +disconnected nature of the connections, but it would also be highly +useful for clients on any device that does not have a constant (or +reliable) network connection to the server. e.g. smartmobile clients; +ActiveSync polling. + +Whether or not COMPRESS is beneficial to a webmail implementation is +beyond the scope of this discussion. + +Second, you are partially right. A successful restoration of the +configuration state does require a round-trip to the server. But a +RESUME command sent before initialization is an example of a command +that CAN be easily pipelined with an authentication command. And the +full round-trip is offset somewhat by the fact that upon a successful +RESUME, the CAPABILITY string will not be sent-back to the client if +the server normally does this automatically on authentication. And if +the server doesn't normally return CAPABILITY information, then this +is a complete win (RESUME/tagged OK vs. CAPABILITY command/CAPABILITY +untagged response/tagged OK). + +>> ENABLE (CONDSTORE/QRESYNC) +>> LANGUAGE +>> COMPARATOR +> +> It looks to me that you can easily pipeline all of these and that +> you do not risk anything by doing so. Yes, I'm aware of the wording +> of the ENABLE RFC which sounds like one really MUST check its return +> code, but a subsequent thread on this list indicated that this was +> not the desired outcome and that it is completely legal to pipeline +> ENABLE QRESYNC with SELECT ... QRESYNC. + +I would argue that the language of the RFC still controls despite what +an e-mail on this list says. A client shouldn't be punished for +interpreting it that way either. + +> As of the LANGUAGE -- how often do you expect to hit an error +> condition which is not described by an appropriate response code? I +> don't think that blocking for its result would be a good design +> choice. + +That could be your decision as a client author. I would vehemently disagree. + +> And finally, what IMAP servers support the LANGUAGE extension? + +Why does this matter? RFC 5255 is a Standards Track extension. A +year from now, every IMAP server and 200 new ones may support it. + +>> CONVERSIONS +>> saved CONTEXTs +>> NOTIFY +> +> Are you actually aware of a single IMAP server supporting any of +> these (besides CONTEXT=SEARCH, which again can easily be pipelined +> without any race conditions, and is specific to a mailbox state +> anyway, which is outside of scope of your extensions)? + +Again, why does this matter? All of these are Standards Track +extensions (your argument might hold a bit more water if these were +Experimental documents). + +And what about future extensions? Those obviously aren't supported by +ANY server yet. + +A given client may not support any of these extensions. This client +could make the decision that SUSPEND/RESUME is pointless. That +doesn't mean the SUSPEND feature is pointless since another client may +support ALL of these extensions. + +> In general, all of the items which you included as an example look +> like easily pipelineable items. Have you tried to use pipelining for +> these? What was the total time spent waiting for their completion in +> that case? What would be the best theoretical time which you could +> get by RESTORE? + +It would be impossible to determine benchmarks since there is no +defined protocol yet. And, as mentioned above, any given +client/server interaction may provide different results based on their +own internal optimizations and extension support. + +About the only thing you could do is look at network traffic savings. +The following is an example of the possible savings giving a moderate +use of IMAP configuration state (this is a more real-world example of +Examples 1 & 2 in the draft): + +Initial session: + +[User authenticated] +A1 CAPABILITY +* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE +SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT +MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED +I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN +CONTEXT=SEARCH LIST-STATUS SPECIAL-USE ACL RIGHTS=texk +[This is the CAPABILITY list from Dovecot 2.1.10] +A1 OK Capability completed. +A2 ENABLE QRESYNC +* ENABLED QRESYNC +A2 OK Enabled. +A3 LANGUAGE DE +* LANGUAGE (DE) +* NAMESPACE (("" "/")) (("Other Users/" "/" "TRANSLATION" ("Andere +Ben&APw-tzer/"))) (("Public Folders/" "/" "TRANSLATION" ("Gemeinsame +Postf&AM8-cher/"))) +A3 Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt +[...] +A20 SUSPEND +* SUSPEND c3RhdGUgdG9rZW4= +* BYE Server logging out. +A20 OK Logout completed. + +Additional network data required by SUSPEND commands: 29 bytes (LOGOUT +vs. SUSPEND; SUSPEND untagged response) +[However, this command will only normally be run the FIRST time the +session is accessed, so this is a one-time only hit] +Additional round-trips required: 0 + +Subsequent sessions: + +A1 RESUME c3RhdGUgdG9rZW4= +A1 OK +A2 LOGIN joe passwd +A2 OK [RESUME c3RhdGUgdG9rZW4=] LOGIN completed and configuration restored. +[...] + +Additional network data required by RESUME commands: 61 bytes (RESUME +command, RESUME response code) +Additional round-trips required: 1 +Network data saved by RESUME: ~650 bytes +Round-trips saved: 3 +Server parsed commands saved: 3 +Client issued commands saved: 3 +Untagged responses that do not need to be re-parsed: 4 + + +In this example, the one-time addition of 29 bytes of network traffic +(1 additional untagged response parse) results in the savings of 2 +round-trips, ~600 bytes of network traffic, and 3 additional commands +that need to be parsed on the client/server side. And remember this +doesn't factor in any initialization code that needs to be run within +the server/client to perform these commands. + +To me, that is substantial savings, especially when the connection may +be re-established every 10 seconds. + +Hope this response identifies the reason and necessity of the +proposal. Thanks again for the constructive input. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22707.mbox:2,S new file mode 100644 index 00000000..1f1c6fda --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22707.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From bill.shannon at ymail.com Mon Oct 29 20:07:50 2012 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] significance of leading whitespace in RFC 2822 + unstructured headers +In-Reply-To: +References: <508F017B.4000606@ymail.com> + +Message-ID: <508F4486.8060405@ymail.com> + +Barry Leiba wrote on 10/29/2012 05:41 PM: +>> (Maybe there's an RFC 2822 experts list that would be more appropriate +>> for this question? If so, please point me in the right direction.) +> +> Two things, to start with: +> +> 1. The right list for this would be ietf-822@ietf.org + +Thanks for the pointer. I'll ask there if no answer appears here. + +One of the reasons I asked here is because of the interaction between +the syntax of these header fields and what an IMAP server should do +when parsing the header and returning the parsed value. The syntax +would imply that all whitespace after the colon is part of the value +of the header, but that's not what most/all IMAP servers do, and not +what the examples show. Is there something in the IMAP spec that +says leading whitespace should be removed from these header values? + +> 2. RFC 5322 is the current spec; 2822 is obsolete. + +A quick scan didn't turn up anything that would resolve my issue +differently. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22719.mbox:2,S new file mode 100644 index 00000000..8ef138c8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22719.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Mon Aug 20 14:10:34 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: <938843794.54586.1345495728390.JavaMail.root@zimbra.com> +References: <502DBEA4.2070204@verizon.net> + + <938843794.54586.1345495728390.JavaMail.root@zimbra.com> +Message-ID: <3F590CAC-0A89-4B05-B24F-C5714DFADDBE@iki.fi> + +On 20.8.2012, at 23.48, Dan Karp wrote: + +>>> [Zimbra, specifically 7.2.0_GA_2669]: +>>> BODY[TEXT]: The entire inner message +>>> BODY[1]: The entire inner message +>>> BODY[1.1]: Do you know... +>>> BODY[1.MIME]: Headers of the outer message +>>> BODY[1.HEADER]: Headers of the outer message +>> +>> This violates this paragraph from RFC 3501, page 55: +>> The HEADER, HEADER.FIELDS, and HEADER.FIELDS.NOT part +>> specifiers refer to the [RFC-2822] header of the message or +>> of an encapsulated [MIME-IMT] MESSAGE/RFC822 message. +>> +>> Since BODY[1] refers to the entire inner message, which is an +>> encapsulated MESSAGE/RFC822 message, BODY[1.HEADER] should be the +>> header of that inner message. +> +> Thanks for noticing this. We had a code mis-ordering in our part +> numbering handler that was triggered in exactly this case. It +> will be fixed in the 8.0.1 release. + +BTW. This and various other related tests are now tested by my imaptest tool. I wanted to add such tests a long time ago, but the parser didn't support multi-line replies and it took me a while to add such feature.. I haven't ran the tests against other servers than mine yet, except GMail (which seems to have at least a few non-good reasons for failing, and I didn't look carefully at the search* failures which are the majority of them). + +It would be nice if when people noticed a bug in any IMAP server that my tests didn't catch they'd tell me about it and I could add a test case for it. It would help everyone.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22726.mbox:2,S new file mode 100644 index 00000000..46d9dc09 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22726.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From brong at fastmail.fm Wed Jun 20 12:32:46 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Server support for RFC5267's CONTEXT=SORT +In-Reply-To: <7D15D765-67D1-4396-AC93-346C5652DAC6@iki.fi> +References: <4FE1F0FD.5050603@flaska.net> + <71D36D9E-CCDB-4098-9CB1-C7D33A1033CC@iki.fi> + <7D15D765-67D1-4396-AC93-346C5652DAC6@iki.fi> +Message-ID: <1340220766.12301.140661091854769.7C041140@webmail.messagingengine.com> + + + +On Wed, Jun 20, 2012, at 08:18 PM, Timo Sirainen wrote: +> On 20.6.2012, at 19.09, Timo Sirainen wrote: +> +> > The only server I see advertising CONTEXT=SORT capability is the Oracle/Sun CMES server. I don't know if Oracle still allows downloading it, but even if it does it's probably the most difficult piece of software I've ever set up. :) +> +> I added the raw capability => server list to http://imapwiki.org/Specs/Raw. If anyone is interested feel free to add servers to the prettier format in http://imapwiki.org/Specs + +Cyrus 2.4 also has the "suppress_capabilities" option which you can set on your frontends if you have backends which can't support some of the newer things - so you might see any random set :) + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22729.mbox:2,S new file mode 100644 index 00000000..0666be29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22729.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Thu May 3 14:17:02 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Concurrent flag changes +In-Reply-To: <20120503210230.GD13234@launde.brong.net> +References: <14DB8F84-E3D5-426A-BBF6-5B4746B6E3DF@iki.fi> + <4FA270A0.3040003@gulbrandsen.priv.no> + + <20120503210230.GD13234@launde.brong.net> +Message-ID: <85A97EA6-F79F-438B-92C6-B59F2F25F1E0@iki.fi> + +On 4.5.2012, at 0.02, Bron Gondwana wrote: + +> On Thu, May 03, 2012 at 09:00:35PM +0300, Timo Sirainen wrote: +>> Then there's a real conflict: +>> +>> S1: +FLAGS k +>> S2: -FLAGS k +>> result: use whichever server changed it later +>> +>> But the one that I'm not entirely sure about: +>> +>> S1: FLAGS k +>> S2: +FLAGS k2 +>> +>> If S1 is done before S2, result: k k2 +>> If S1 is done after S2, result: k? Or perhaps still "k k2", because S1 definitely didn't know that S2 had added a flag. +> +> I've been thinking about how to handle that case a bit too, and my +> eventual position is "all keywords start unset, so in the event of +> a conflict, the act of setting the keyword wins". I.e., the result +> should be 'k k2' if you can't resolve timestamps to be certain what +> what was intended. + +For the first +FLAGS vs. -FLAGS I think that's good. I'm actually going to use modseqs since adding timestamps just for this is a bit too much of a waste of space (unless there's some other reason in future that I want to add real timestamps). + +But for the latter FLAGS vs. +FLAGS I'm not sure if timestamps matter at all. Assuming S1 didn't already have k2 keyword set, the "FLAGS k" change didn't explicitly tell server to remove k2. The client most likely didn't have any idea that another client had already set k2 elsewhere. So even if the syncing knows that "+FLAGS k2" was done before "FLAGS k", I'm thinking it shouldn't remove k2. So in my internal logs I'd change "FLAGS" to "-FLAGS " followed by "+FLAGS ". So in the "FLAGS k" case it might get translated to e.g. "-FLAGS k3 k6" and "+FLAGS k", which wouldn't affect "k2" at all. diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22732.mbox:2,S new file mode 100644 index 00000000..8a757b13 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22732.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From rfs9999 at earthlink.net Thu Apr 5 11:07:39 2012 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <4F7BABE4.3050503@earthlink.net> +References: <1328732126.32086.140661033971485@webmail.messagingengine.com> + <201202090820.28260.thomas@koch.ro> <4F337E61.5040702@qbik.com> + <20120209112411.GB29734@launde.brong.net> + <4F7B8913.4060308@earthlink.net> + <721CF40F-AE46-4FB5-B248-90BD91DA3941@iki.fi> + <4F7BA1AF.6040600@earthlink.net> + <558673177.37525.1333503846416.JavaMail.root@zimbra.com> + <4F7BABE4.3050503@earthlink.net> +Message-ID: <4F7DDF6B.5030609@earthlink.net> + +Just to close out this thread I did not find a solution or workaround to +the problem the Exchange 2007 IMAP server has with FETCH commands like this: + +> 1 fetch 1 (BODY[HEADER (DATE)]) +> 1 BAD Command Argument Error. 11 + +I wound up by issuing a BODY[HEADER] command and grabbing the items I +need from the response. + +-Rick + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22743.mbox:2,S new file mode 100644 index 00000000..0c0d21a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22743.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From petite_abeille at mac.com Mon Mar 19 14:29:08 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <20120319204645.GA2859@launde.brong.net> +References: + <20120319204645.GA2859@launde.brong.net> +Message-ID: + + +On Mar 19, 2012, at 9:46 PM, Bron Gondwana wrote: + +> Have you looked at http://imapwiki.org/ImapTest ? + +Yes, I have looked at ImapTest. Didn't quite manage to use it, even though looking at the test case themselves was instructive. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22749.mbox:2,S new file mode 100644 index 00000000..8a38bc18 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22749.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jan 13 07:44:13 2012 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] which IMAP servers support support SASL + authorization vs. authentication ID? +Message-ID: + +I have been tasked to identify which IMAP servers support the SASL concept +of authorization vs. authentication ID and if it is suitable to allow +impersonation; that is to proxy to various user accounts. + +I have the following data: + +Panda IMAP: Yes + ;; Authenticated userids in system group "mailadm" may authorize + ;; to any other userid. + +UW IMAP: Yes, in newer versions + ;; Same as Panda + + +Probably yes, but not sure and need details: + +Cyrus: +Dovecot: +Communigate Pro: +Sendmail: +Zimbra: + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22752.mbox:2,S new file mode 100644 index 00000000..05e1b888 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22752.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From mrc+imap at panda.com Wed Dec 7 09:13:01 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] notification of deleted/expunged messages? +In-Reply-To: <1323259286.1981.140661008567313@webmail.messagingengine.com> +References: + <80779123-5707-46B5-80E9-F90412A013BD@iki.fi> + <1323259286.1981.140661008567313@webmail.messagingengine.com> +Message-ID: + +On Wed, 7 Dec 2011, Bron Gondwana wrote: +> Nothing stopping you returning an error if someone tries to access the earlier messages +> of course - you just need to retain their "position" in the msgid list until the +> protocol allows you to send notice of the expunge. + +Although a server is permitted to do that by the specification, it should +not. + +Clients don't expect such errors. + +It is MUCH better if the server keeps the message data accessible in the +session until such time as an EXPUNGE can be sent. My implementation calls +these "ghost messages", because their only existance is as ephemerons in +that session (new sessions do not see them) and only until that session +sends an EXPUNGE or is terminated. + +Think of how horrible it would be if, while you had a file open, suddenly +read() were to fail because someone did an unlink() on the file. + +This should not be a substantial burden on the server, although it may +require a bit more effort on the part of the server author to get it +right. + +The convenience of a server author, to be able to do something quick and +dirty, should take second place to the need of a client author to have +reliable server behavior. + +Also, in case you worry about ephemeral messages constipating your server: + +No client should keep a server on the lurch with ephemerons for more than +a short period of time. A client may do several consecutive commands in a +pipeline without giving the server an EXPUNGE opportunity, but it should +NEVER go idle on the command stream before doing so. + +In my opinion, it is alright for a server to protect itself from abusive +client behavior by disconnecting, etc. if it's stuck with ephemerons for +more than a reasonable amount of time. Given that IDLE explicitly disposes +of these, it's only an issue with a NOOP-polling client. + +Most NOOP-polling clients do so every 1-3 minutes, and IMAP's maximum +inactivity period is 30 minutes. Certainly a client that wakes up at +minute 29, but does not allow an EXPUNGE opportunity, is abusive and +deserves to lose its session. 15 minutes as the maximum "let me get rid of +my ephemerons or I disconnect you" time is probably quite good enough. + +Remember that this isn't an issue with IDLE; it's only for polling +clients. Most polling clients will not go idle that long since that would +be likely to provoke a NAT into disconnecting. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22756.mbox:2,S new file mode 100644 index 00000000..fb008e79 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22756.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From tss at iki.fi Tue Nov 1 00:26:30 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <20111101070031.GA6591@brong.net> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + + + <20111101063140.GA5353@brong.net> + <19901681-2C1A-410F-93EE-51F2AF707382@iki.fi> + <20111101070031.GA6591@brong.net> +Message-ID: <6F93E5CD-2792-4D05-BEEF-F1682CA88C89@iki.fi> + +On 1.11.2011, at 9.00, Bron Gondwana wrote: + +> On Tue, Nov 01, 2011 at 08:40:57AM +0200, Timo Sirainen wrote: +>> On 1.11.2011, at 8.31, Bron Gondwana wrote: +>> +>>> On Tue, Nov 01, 2011 at 08:06:29AM +0200, Timo Sirainen wrote: +>>>> Dovecot also stores messages with LFs and has no trouble exporting them as if they were CRLFs. I think the only actual (performance) problem with it is .. well, actually the topic of this thread :) A partial fetch from a non-zero offset requires some scanning to find out the LF-only-offset. But luckily all clients just fetch the blocks in increasing order from zero offset, so this isn't such an important problem. +>>> +>>> How do you handle a message with a mix of LF and CRLF in the original? +>> +>> "Correctly." :) +> +> Er - by which you mean that you always return the exact bytes you were given? + +I don't think LF vs. CRLF have any special meaning in email data, they're both simply newlines. So Dovecot doesn't try to preserve them. They're both converted to newlines anyway (LFs or CRLFs depending on context). Although I did initially wonder about supporting binary message bodies, but never bothered with it. + +>> Basically everywhere there are message (part) sizes, I store the "physical size" (exactly as it is stored in disk, with or without CRs) and the "virtual size" (all LFs converted to CRLFs). If physical size equals to virtual size, I'll do some extra optimizations like being able to seek to wanted offset immediately or use sendfile() to send the message. +> +> Sounds to me like that's enough benefit to store it all CRLFs in itself. +> 1/65 of storage space vs seek and sendfile. + +Well, that's why it's an option :) But typically I've noticed that I/O is the problem, not CPU, so sendfile isn't all that useful. The seeking is more of a theoretical problem. Normally when clients fetch partial data they start from offset 0, so no seeking needed. The next block starts from where the previous block ended, which Dovecot remembers and continues again without seeking. And so on. So even if LFs save only a little disk space and disk I/O, I figured it's better than nothing. + +>> Although a mix of LFs and CRLFs in the same message shouldn't normally appear in mail files. +> +> Most often seen with headers, or between parts. The most ugly cases +> being differences between the mime-headers of a part, and the content +> of said part. + +Coming from where? SMTP? IMAP APPENDs? I've never noticed, because Dovecot handles them silently. diff --git a/demo/ermis-f/imap-protocol/cur/1600095050.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095050.22759.mbox:2,S new file mode 100644 index 00000000..a84f9a7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095050.22759.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From dave at cridland.net Fri Oct 7 07:36:31 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] FETCH (rfc822) response +In-Reply-To: <4E8F0D21.3040004@earthlink.net> +References: <4DEBB242.2090200@BusCom.net> + + <4E3382E3.3010509@earthlink.net> + + + <4E8F0D21.3040004@earthlink.net> +Message-ID: <8189.1317998191.572045@puncture> + +On Fri Oct 7 15:30:57 2011, Rick Sanders wrote: +> I'm working with a server whose response to a FETCH (rfc822) is +> different than I have seen before. +> +> >> 1 FETCH 1 (rfc822) +> << * 1 EXISTS +> << * 1 FETCH (RFC822[] {0} +> +> +Yeah, that's wrong... + + +> I'm used to seeing something like * 1 FETCH (RFC822 {1522}. In +> this case I have to send a separate 1 FETCH 1 (rfc822.size) command +> to get the message size: << 1 FETCH (rfc822.size 5149). +> +> Just curious, is this compliant? + +I don't think so. Try asking for BODY[] instead, though - it's the +same thing as RFC822, but more modern syntax, so it might work better +against that server. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22595.mbox:2,S new file mode 100644 index 00000000..01ef02ed --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22595.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 11 02:34:32 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <54FF60A0.5138.18BCFD72@David.Harris.pmail.gen.nz> +References: <54FAEB94.4070508@lavabitllc.com> + + + <54FF60A0.5138.18BCFD72@David.Harris.pmail.gen.nz> +Message-ID: <9251e104-e2f9-47af-a009-f5652605142f@gulbrandsen.priv.no> + +David Harris writes: +> Don't get me wrong - there are things I absolutely *loathe* +> about IMAP (implied part +> numbering in bodystructures being the biggest one), but it's +> what we've got: I for +> one have negative enthusiasm for spending another ten years in +> bitter arguments +> over some slightly "improved" replacement. + +We're going to get it, though. There have been a few high-profile +gmail-only IMAP client launches in the past few years, and now Gmail has a +JSON-based prototocol that'll be simpler to use than IMAP for many people. + +Quite agree about the implied part numbering. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22641.mbox:2,S new file mode 100644 index 00000000..12886f0c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22641.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From iana at apple.com Thu Mar 20 11:32:30 2014 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for flag + changes +Message-ID: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + +I?m finding it dismayingly common that servers don?t give flag changes (i.e. an untagged FETCH response with FLAGS) on a NOOP. Some of them don?t support IDLE, or don?t give flag changes on IDLE either. At least some of the servers do support CONDSTORE though. + +So I was hoping to mitigate the whole mess by polling for HIGHESTMODSEQ changes on CONDSTORE servers and then doing a FETCH CHANGEDSINCE for mailboxes with new highest modification sequences. For mailboxes that I?m not SELECTed on, it?s an easy STATUS HIGHESTMODSEQ command. I can also do it on SELECTed mailboxes too, though RFC 3501 says I "SHOULD NOT? do that and RFC 4551 doesn?t update that recommendation. + +What?s the conventional wisdom on solving this problem from the client side in a generic fashion? My inclination is to just replace my NOOP polling with STATUS on servers that support CONDSTORE. + +Ian diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22682.mbox:2,S new file mode 100644 index 00000000..5cb3bb8e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22682.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dave at cridland.net Wed Mar 27 11:47:17 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + <5152E3E6.40506@aj.jp.nec.com> <1364388724.13923.97.camel@innu> + +Message-ID: + +On 27 Mar 2013 18:36, "Brandon Long" wrote: +> +> We actually had that failure mode to begin with due to a bug, and then +we'd drop the connection after too many bad commands... but of course, +they'd just retry. + +I'm hesitant to suggest it, but is it worth sending BYE and dropping the +connection? It's sailing just within the lines of the specification, I +think. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22688.mbox:2,S new file mode 100644 index 00000000..19285ef5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22688.mbox:2,S @@ -0,0 +1,95 @@ +MBOX-Line: From brong at fastmail.fm Mon Jan 14 19:08:37 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + + <1358168208.10326.16.camel@innu> + + +Message-ID: <1358219317.28560.140661177648789.4B8BC9F9@webmail.messagingengine.com> + +On Tue, Jan 15, 2013, at 08:15 AM, Brandon Long wrote: +> On Mon, Jan 14, 2013 at 5:24 AM, Dave Cridland wrote: +> > My gut feeling is that if Brandon and Bron implemented BURL, you'd see +> > clients falling over themselves to implement. +> +> I realize its just my young naivete, but the complexity of BURL/URLAUTH +> instead of what seems to me the much simpler concept of mail submission via +> IMAP just boggles my mind. (if someone has a link to a thread or page that +> opines on why, I'd be happy to try to understand, but last year's thread +> seemed to come down to "we might not future-proof it against a new +> must-have SMTP extension and we would never re-visit the IMAP extension to +> also support that") + +That was pretty much what I got out of it. Along with a huge amount of concern +for the complex cases of corporate networks with controlled IT requirements and +weird mail routing. + +I'm much more concerned for the 99% of users who don't need anything complex, +don't send through multiple servers or have multiple mail stores, and need to +have the simplest possible system with the least number of things which can go +wrong. Everything which can go wrong is something which increases the support +load, the documentation (which nobody reads but you have to have anyway) and +the operations workload. + +> We don't currently have plans to support BURL. There'd have to be a pretty +> compelling reason, and given that we auto-BCC all msa messages anyways, it +> already solves the two copy problem... admittedly, only for clients which +> know to configure that way or users that manually configure based on our +> support articles. Also, the user's shouldn't get two copies if our +> duplicate detection is working, so it only makes sending slower in that +> case. + +It would be nice to avoid that case of course! + +GMail is big and different enough that a lot of clients already implement +special cases for you. FastMail, not so much. It's good though, because +things get some real-world testing through you that the standardisation +process really doesn't provide on the same scale. + +Certainly with the converstaions stuff we're doing, for all that it would +be good to write it up as a standard (and we're working on that), it's also +really nice to be the only implementation, so we can fix things that we got +wrong. That's a major reason we're holding off, because we want the ability +to test different ways more quickly. + +> Frankly, we'd be more likely to support the submission via IMAP draft that +> was circulated last year. + +The only thing I think I would like to see added is the ability to set a flag +on successful submit, and not submit again if that flag is already set. + +This allows for nice idempotent usage - two concurrent connections both asking +for a submit works locklessly, because one performs the submit and the other +sees the flag and skips it - and retry on failure can just repeat the command +with no risk of sending the same message twice unless there was a lower level +transient failure - and that case is already the same with SMTP when the send +succeeds but the success response is lost. + +How about we just do that? I'm on leave this week, but I'm back at work next +week and I'd love to put together a test implementation. I've already got a +Cyrus branch which does a lot of what is needed (just forking and execing a +specified binary which implements the sendmail command line, then writing an +iovec with buffer containing some extra headers and the mmaped spool file). + +It's pretty un-tested though, and it's against about a 6 month old git master, +so it might need some work to port to our current HEAD. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22697.mbox:2,S new file mode 100644 index 00000000..8060089e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22697.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu Dec 13 04:32:57 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] BINARY for broken MIME parts +In-Reply-To: +References: + <50C0A8F4.4070405@isode.com> + <809DCB83-1507-4F6B-8B70-D86042569C46@iki.fi> + +Message-ID: <50C9CAF9.7040205@isode.com> + +On 11/12/2012 06:16, Brandon Long wrote: +> +> On Mon, Dec 10, 2012 at 9:56 PM, Timo Sirainen > wrote: +> +> On 6.12.2012, at 16.17, Alexey Melnikov wrote: +> +> > On 04/12/2012 11:12, Timo Sirainen wrote: +> >> Another BINARY issue not specified by the current BINARY RFC: +> How to handle fetching BINARY[x] or BINARY.SIZE[x] when the MIME +> part exists but contains invalid base64/quoted-printable data? The +> possibilities I think would be: +> >> +> >> a) Just ignore the invalid data and reply as best as you can. +> I'm not sure if this is actually useful in any case since the +> result will be invalid, and it might even cause security problems +> in case viruses try to exploit it at some point when virus scanner +> and IMAP server do the decoding differently. I remember reading a +> few years ago a lot of reports about this issue. +> >> +> >> b) Reply NIL to BINARY[x] and 0 to BINARY.SIZE[x] and overall +> reply OK to the FETCH. +> >> +> >> c) Abort and return NO to the FETCH, similarly to as for +> [UNKNOWNCTE] handling, except without that resp-code. +> > +> > I think both b) and c) would be Ok. But b) is probably less +> likely to surprise client authors. +> > +> >> I implemented b) today for Dovecot, thinking that it would +> probably cause less client confusion than c) and would be more +> secure then a). +> > +> > Maybe it is worth to do b) but also return "UNKNOWNCTE"? +> +> So: +> +> a FETCH 1 BINARY[1] +> * 1 FETCH (BINARY[1] NIL) +> a OK [UNKNOWN-CTE] Invalid input? +> +> I don't know how clients currently handle UNKNOWN-CTE. Maybe some +> would think that if it's returned then the server can never decode +> that content-transfer-encoding?.. +> +> +> I would think [PARSE] + +PARSE seems to be Ok for this. It doesn't quite match the definition in +RFC 3501, but it if fairly close. + +> would be more appropriate than UNKNOWN-CTE. + +After reviewing its definition, I tend to agree. + +CORRUPTION also seems wrong: I think it is typically about mailbox +storage, i.e. something a mail server administrator might be able to fix. + +> Or just stick with [ALERT]. + +As per other responses, I think this one is wrong. + +> Also, what if there is more than one message requested? We usually +> just fail to return the broken message and respond NO to the whole +> fetch, but return all the non-broken messages. +> +> Also, I wouldn't use "Invalid input", maybe its just my thinking, but +> I would think the "input" is the IMAP command, but its an invalid +> message data. +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22701.mbox:2,S new file mode 100644 index 00000000..4a0568ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22701.mbox:2,S @@ -0,0 +1,363 @@ +MBOX-Line: From blong at google.com Wed Nov 21 15:31:02 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> +Message-ID: + +On Wed, Nov 21, 2012 at 2:54 PM, Michael M Slusarz wrote: + +> Jan, +> +> Thanks for the input. My responses are below. +> +> +> Quoting Jan Kundr?t : +> +> Hi Michael, +>> I've read your draft, it's an interesting extension. However, it seems to +>> me that the whole point here is to save a few roundtrips by skipping the +>> process of activating/configuring various optional features. I'll discuss +>> each extension separately. +>> +> +> I would strongly disagree with this statement. As written, the draft is +> only minimally concerned with saving on network round-trips. +> + +Yet, that and bytes are what you quote from your example. + + +> E.g. a webmail implementation: for any even reasonably sized setup, +> interaction between the webmail backend and the IMAP server will almost +> certainly be done through a private network. Such a setup has the added +> benefit that the IMAP connection does not need any sort of security [TLS] +> overhead. I have assumed in the draft that the client/server round-trip is +> negligible or, in the very least, not the bottleneck in the IMAP +> interaction. +> +> However, client/server round-trip *is* most likely an issue for a whole +> category of disconnected-like clients: those running on mobile hardware. +> Pipelining in this environment in no way guarantees that a server can or +> will return the response in the same network packet. In other words, this +> draft becomes *more* important the more that client/server round-trip time +> becomes the bottleneck/limiting factor, whether pipelined or not. +> +> Sidebar: I'm not a huge fan in general of pipelining as a performance +> since it is not always a feasible option for clients. For example, a +> client may use an OO-library to connect to the IMAP server. This library +> may not provide a reasonable (or any) way of allowing multiple commands to +> be sent at once via the API. For example, to start compression, enable +> QRESYNC, and set the language, it is more than reasonable to expect this +> kind of pseudocode: +> +> $result = $imap->useCompression(true); +> // Check for success +> $imap->useQresync(true); +> // Check for success +> $imap->setLanguage([LANGUAGE])**; +> // Check for success +> +> In any OO IMAP interface the order of IMAP commands to allow for efficient +> pipelining, or the fact that pipelining even exists, should obviously not +> be a part of the API. Thus pipelining is fairly useless in the real world +> as a way to guarantee an increase in performance. +> + +Thats not a true statement. Its useless if you're forced to use a bad +client API that you aren't willing to work around? Is that bad client API +going to support adding a new command? + + +> There are other, more important reasons why a mechanism to restore +> configuration is useful: +> +> - It prevents the need to re-parse the CAPABILITY list. Note that parsing +> the CAPABILITY list involves *MUCH* more than just the actual string +> tokenization of the list, although this alone may not be a trivial task +> (see below). +> +> A client may, depending on the capabilities returned, need to perform +> various internal initialization tasks. For example - if CONDSTORE/QRESYNC +> is listed, a client may have to then parse a separate configuration file to +> grab the details of the local cache where it is storing this information, +> and then connect to this cache, etc. Or if language is listed, a client +> might have to parse a local list of language availability to determine if +> it can/should change the language. +> + +And... it would have had to do that anyways. If its resuming the +connection, it has to either do that initialization or it has to cache that +initialization, both of which it can do just as easily on non-resume if +we're talking about a new connection every 10s. + +Parse a local list of language availability? So, you want to avoid reading +a local config file ... on the hope that the client doesn't need to know +that language information anyways just to display stuff to the user which +doesn't come from the server? + + +> And CAPABILITY parsing is more than just determining what capabilities are +> listed. It is also determining which capabilities SHOULD not be listed. +> Just today, Cyrus was fixed due to a bug that our code was triggering: +> APPENDing binary data via a literal8 caused Cyrus to immediately terminate +> the connection with a BYE response. Our code is smart enough to catch this +> broken behavior by removing BINARY appending from the list of available +> capabilities. But without a way to ensure that every subsequent connection +> is a continuation of the current session, we have to do this detection +> EVERY SINGLE TIME. This is potentially a huge performance hit, since we +> may be appending MBs of data to the server before the BYE response can be +> returned (e.g. appending a sent-mail message containing attachments). +> + +So, you worked around the cyrus bug by determining the connection exhibits +the bug and then never using it for that server again? Or, you could just +not use BINARY ever, or issue an ID command to know if the remote server +has the bug. You could even pipeline it! Or you could store the known bad +server information somewhere in your app server. + + +> - As mentioned above, sending an initialization command to the server may +> take quite a bit of work on the client side to prepare. It's not as easy +> as hardcoding 'ENABLE QRESYNC' in client code - it may take quite a bit of +> CPU cycles to get to that point in a given client. +> + +But this doesn't change anything about the having to do that. Regardless +of whether you're resuming a session or not, you still have to do that work. + + +> Another example: a client keeps all of its imap initialization code in a +> separate dynamically-loadable module. If the session is successfully +> resumed, this module does not need to be loaded/interpreted/run. +> + +What kind of clients are we talking about? I'm just completely failing to +think this is an issue. + + +> - From the server side, it may be much more expensive to initiate an IMAP +> session as compared with resuming one. This draft allows the server to +> optimize if possible. I believe Timo's post indicates that resuming in +> Dovecot is more efficient than creating a new session. +> + +Resuming into the middle of a selected folder seems cheap. Resuming the +status of N commands seems optimizing in the small. I would think it +would cost more in terms of either caching the data in memory or stashing +the data to disk/reading it back than the overhead of parsing a couple +commands and maybe allocating a data structure. + + +> - Even when pipelining commands, they still need to be sent, the incoming +> command needs to be tokenized (server), the command is performed (server), +> the response sent back, any untagged responses are tokenized (client), the +> untagged responses are interpreted (client), the tagged response is +> tokenized (client), and the tagged response is processed (client). None of +> this is "free". Pipelining eliminates none of this. + + +Tokenization is what clients and servers do, and this takes a trivial +amount of time and cpu in reasonable languages. + + +> COMPRESS=DEFLATE +>>> +>> +>> I was wondering if this one actually provides any benefit for a webmail +>> client. But you're right that it indeed has an overhead and requires a full +>> roundtrip to set up. However, please note that your extension also requires +>> a full roundtrip, so you aren't any better here. +>> +> +> First a point of clarification: the draft is not specific to webmail +> clients. It is intended for any disconnected client that may have need to +> initiate multiple IMAP connections during the client's lifetime. +> +> Granted, it is extremely useful for webmail clients due to extreme +> disconnected nature of the connections, but it would also be highly useful +> for clients on any device that does not have a constant (or reliable) +> network connection to the server. e.g. smartmobile clients; ActiveSync +> polling. +> +> Whether or not COMPRESS is beneficial to a webmail implementation is +> beyond the scope of this discussion. +> +> Second, you are partially right. A successful restoration of the +> configuration state does require a round-trip to the server. But a RESUME +> command sent before initialization is an example of a command that CAN be +> easily pipelined with an authentication command. And the full round-trip +> is offset somewhat by the fact that upon a successful RESUME, the +> CAPABILITY string will not be sent-back to the client if the server +> normally does this automatically on authentication. And if the server +> doesn't normally return CAPABILITY information, then this is a complete win +> (RESUME/tagged OK vs. CAPABILITY command/CAPABILITY untagged +> response/tagged OK). + + +And what does "resuming" a COMPRESS=DEFLATE do? I assume we're not talking +about trying to keep the old dictionary or anything like that, right? + We're actually talking about just the equivalent of starting it again. + + +> ENABLE (CONDSTORE/QRESYNC) +>>> LANGUAGE +>>> COMPARATOR +>>> +>> +>> It looks to me that you can easily pipeline all of these and that you do +>> not risk anything by doing so. Yes, I'm aware of the wording of the ENABLE +>> RFC which sounds like one really MUST check its return code, but a +>> subsequent thread on this list indicated that this was not the desired +>> outcome and that it is completely legal to pipeline ENABLE QRESYNC with +>> SELECT ... QRESYNC. +>> +> +> I would argue that the language of the RFC still controls despite what an +> e-mail on this list says. A client shouldn't be punished for interpreting +> it that way either. +> +> +> As of the LANGUAGE -- how often do you expect to hit an error condition +>> which is not described by an appropriate response code? I don't think that +>> blocking for its result would be a good design choice. +>> +> +> That could be your decision as a client author. I would vehemently +> disagree. + + +Or just re-issue the command to get the response translated. + + And finally, what IMAP servers support the LANGUAGE extension? +>> +> +> Why does this matter? RFC 5255 is a Standards Track extension. A year +> from now, every IMAP server and 200 new ones may support it. + + +True. But that also goes to my point that you need to specify which +extensions and what information would need to be resumed, you can't just +say "any which apply", what if the server author doesn't think the way you +do and one of these doesn't get resumed? + + CONVERSIONS +>>> saved CONTEXTs +>>> NOTIFY +>>> +>> +>> Are you actually aware of a single IMAP server supporting any of these +>> (besides CONTEXT=SEARCH, which again can easily be pipelined without any +>> race conditions, and is specific to a mailbox state anyway, which is +>> outside of scope of your extensions)? +>> +> +> Again, why does this matter? All of these are Standards Track extensions +> (your argument might hold a bit more water if these were Experimental +> documents). +> +> And what about future extensions? Those obviously aren't supported by ANY +> server yet. +> +> A given client may not support any of these extensions. This client could +> make the decision that SUSPEND/RESUME is pointless. That doesn't mean the +> SUSPEND feature is pointless since another client may support ALL of these +> extensions. +> +> +> In general, all of the items which you included as an example look like +>> easily pipelineable items. Have you tried to use pipelining for these? What +>> was the total time spent waiting for their completion in that case? What +>> would be the best theoretical time which you could get by RESTORE? +>> +> +> It would be impossible to determine benchmarks since there is no defined +> protocol yet. And, as mentioned above, any given client/server interaction +> may provide different results based on their own internal optimizations and +> extension support. +> + +But without an actual proof that this is useful for some combination of +client/server, why would we adopt yet another extension that no one will +implement? + + +> About the only thing you could do is look at network traffic savings. The +> following is an example of the possible savings giving a moderate use of +> IMAP configuration state (this is a more real-world example of Examples 1 & +> 2 in the draft): +> +> Initial session: +> +> [User authenticated] +> A1 CAPABILITY +> * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE +> SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT +> MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 +> CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS +> SPECIAL-USE ACL RIGHTS=texk +> [This is the CAPABILITY list from Dovecot 2.1.10] +> A1 OK Capability completed. +> A2 ENABLE QRESYNC +> * ENABLED QRESYNC +> A2 OK Enabled. +> A3 LANGUAGE DE +> * LANGUAGE (DE) +> * NAMESPACE (("" "/")) (("Other Users/" "/" "TRANSLATION" ("Andere +> Ben&APw-tzer/"))) (("Public Folders/" "/" "TRANSLATION" ("Gemeinsame +> Postf&AM8-cher/"))) +> A3 Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt +> [...] +> A20 SUSPEND +> * SUSPEND c3RhdGUgdG9rZW4= +> * BYE Server logging out. +> A20 OK Logout completed. +> +> Additional network data required by SUSPEND commands: 29 bytes (LOGOUT vs. +> SUSPEND; SUSPEND untagged response) +> [However, this command will only normally be run the FIRST time the +> session is accessed, so this is a one-time only hit] +> Additional round-trips required: 0 +> +> Subsequent sessions: +> +> A1 RESUME c3RhdGUgdG9rZW4= +> A1 OK +> A2 LOGIN joe passwd +> A2 OK [RESUME c3RhdGUgdG9rZW4=] LOGIN completed and configuration restored. +> [...] +> +> Additional network data required by RESUME commands: 61 bytes (RESUME +> command, RESUME response code) +> Additional round-trips required: 1 +> Network data saved by RESUME: ~650 bytes +> Round-trips saved: 3 +> Server parsed commands saved: 3 +> Client issued commands saved: 3 +> Untagged responses that do not need to be re-parsed: 4 +> +> +> In this example, the one-time addition of 29 bytes of network traffic (1 +> additional untagged response parse) results in the savings of 2 +> round-trips, ~600 bytes of network traffic, and 3 additional commands that +> need to be parsed on the client/server side. And remember this doesn't +> factor in any initialization code that needs to be run within the +> server/client to perform these commands. +> +> To me, that is substantial savings, especially when the connection may be +> re-established every 10 seconds. +> + +Have you considered not re-establishing a connection every 10s? This is a +connected protocol, not http. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22707.mbox:2,S new file mode 100644 index 00000000..52d97978 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22707.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From joseph.pallas at oracle.com Tue Oct 30 10:09:32 2012 +To: imap-protocol@u.washington.edu +From: Joe Pallas +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] significance of leading whitespace in RFC 2822 + unstructured headers +In-Reply-To: <508F4486.8060405@ymail.com> +References: <508F017B.4000606@ymail.com> + + <508F4486.8060405@ymail.com> +Message-ID: + + +On Oct 29, 2012, at 8:07 PM, Bill Shannon wrote: + +> One of the reasons I asked here is because of the interaction between +> the syntax of these header fields and what an IMAP server should do +> when parsing the header and returning the parsed value. + +I would say that you are probably right that servers are not actually obeying the spec but it?s hard to see that it matters. If I ask an IMAP server to fetch ?BODY[HEADER.FIELDS (Subject)]? I don?t get back a parsed value, I get back the entire subject line, including any white space between the colon and the first non-WS character. + +The two occasions I can think of where skipping white space in an unstructured header might matter are: +1) ENVELOPE, which contains the subject string, and +2) SEARCH of the subject string + +It appears that many servers will elide leading spaces from the subject in the returned ENVELOPE structure. It also appears that some servers will ignore leading spaces in search strings. At least one server does the former but not the latter. + +I can?t imagine relying on the server?s parsing for something like a digital signature. Unless the server is actually modifying the message headers returned by a non-ENVELOPE fetch, though, I don?t think this should be a concern. + +joe + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22719.mbox:2,S new file mode 100644 index 00000000..b4a72ef4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22719.mbox:2,S @@ -0,0 +1,123 @@ +MBOX-Line: From tss at iki.fi Mon Aug 20 14:20:18 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: +References: <502DBEA4.2070204@verizon.net> + + <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> + + + + <16C2B175-8815-42C5-B4BF-621EE86B8050@iki.fi> + +Message-ID: <4E784913-605F-4401-BCE5-268E79F9F41D@iki.fi> + +I think this is somewhat ambiguous.. Servers probably should do what you suggest (I changed mine to do it it again, only a few days of not doing it), but then again clients shouldn't rely on it, since some servers are known not to allow it (UW-IMAP at least). + +Somewhat related to this, I've been wondering about adding optional levels of testing to imaptest, where by default it tests only how all the servers should really behave, and with more options it could test some more strict features that maybe aren't really so relevant anymore (e.g. substring searches). + +On 18.8.2012, at 3.13, Philip Guenther wrote: + +> On Fri, 17 Aug 2012, Timo Sirainen wrote: +>> On 17.8.2012, at 8.16, Philip Guenther wrote: +>>> On Fri, 17 Aug 2012, Timo Sirainen wrote: +>>> ... +>>>> Anyway, [1.MIME] isn't a valid request in Joshua's test mail. +>>> +>>> Chapter and verse, please? +>>> +>>> (There are specific restrictions on when HEADER and TEXT are valid, +>>> but no such restrictions are specified for the MIME part specifier...) +>> +>> Well, I'm not sure if it's really a BAD-type of invalid, but [x.MIME] +>> refers to the part's MIME headers, and if the parent isn't a multipart, +>> there are no MIME headers, so the proper result is empty. +> +> Well, RFC 3501 says: +> The MIME part specifier refers to the [MIME-IMB] header for +> this part. +> +> [MIME-IMB] is a reference to RFC 2045. That RFC doesn't define "header" +> itself, but does describe headers on not just body parts but entities: +> +> 2.4. Entity +> ... +> <...> Any sort of field may be present in the header of an entity, +> but only those fields whose names begin with "content-" actually have +> any MIME-related meaning. Note that this does NOT imply thay they +> have no meaning at all -- an entity that is also a message has non- +> MIME header fields whose meanings are defined by RFC 822. +> +> That implies to me that "header" doesn't necessarily mean "header on body +> part". +> +> Also, RFC 3501 refers to [MIME-IMB] header fields in the description of +> the BODYSTRUCTURE fetch item, wherein message/rfc822 parts do have their +> header parsed to fill in the various fields. +> +> +> So, I would argue that RFC 3501 does specify that .MIME work on all parts +> and, in the particular case of message/rfc822 part, is equivalent to +> asking for HEADER one level higher. +> +> +> Philip Guenther +> +> +> (In case that last "one level higher" doesn't make sense, here's a longer +> example: +> +> ------------------------------------------------------ +> Date: Fri, 01 Jan 2010 12:00 -0500 +> To: x@x.x +> From: y@y.y +> Subject: download on demand problem +> MIME-Version: 1.0 +> Content-Type: message/rfc822 +> +> Date: Fri, 01 Jan 2012 12:00 -0500 +> To: y@y.y +> From: x@x.x +> Subject: Blast from the future +> MIME-Version:1.0 +> Content-Type: multipart/mixed; boundary=foo +> +> --foo +> +> Do you know what to do when you see this message? +> +> --foo +> Content-Type: text/html +> +> Blah blah blah +> --foo +> Content-Type: multipart/digest; boundary=bar +> +> --bar +> +> Subject: blah +> Foo: bar +> +> sdlfkj +> sdlfkj +> sdlfkj +> +> --bar-- +> +> --foo-- +> ------------------------------------------------------ +> +> In that, [1.3.1] is the digest message, starting at the "Subject: blah" +> line and continuing through the three "sdlfkj" lines. [1.3.1.1] is just +> the three "sdlfkj" lines. [1.3.1.1.MIME] is the same as [1.3.1.HEADER], +> which is the header of the digest message, being "Subject: blah", "Foo: +> bar", and the blank line after.) +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22726.mbox:2,S new file mode 100644 index 00000000..c860406c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22726.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Jun 22 04:20:07 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + NOTIFY +In-Reply-To: <1340151854.5967.57.camel@hurina> +References: <1340151854.5967.57.camel@hurina> +Message-ID: <4FE454E7.4080001@isode.com> + +On 20/06/2012 01:24, Timo Sirainen wrote: +>> If the server does not know how to decode the section's CTE, it +>> MUST fail the request and issue a "NO" response that contains +>> the "UNKNOWN-CTE" extended response code. +> Looking at Cyrus code it appears to abort the FETCH immediately if this +> situation happens and [UNKNOWN-CTE] is returned as tagged reply. +> +> Now, what to do when NOTIFY's fetch-att list includes BINARY[part] and +> it can't be decoded? Send an untagged NO [UNKNOWN-CTE] after the FETCH +> reply? What if BINARY[part] is the only requested fetch-att and it can't +> be fetched? The server can't send an empty FETCH reply. + +Can you avoid sending the FETCH reply in such cases? + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22729.mbox:2,S new file mode 100644 index 00000000..c7ded9aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22729.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From bill.shannon at ymail.com Sat May 12 00:21:35 2012 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] partial fetch of BODY data +Message-ID: <4FAE0F7F.9000709@ymail.com> + +Just to make sure I'm interpreting the spec correctly... + + +The spec says of a FETCH BODY request: + + Any partial fetch that attempts to read beyond the end of the + text is truncated as appropriate. A partial fetch that starts + at octet 0 is returned as a partial fetch, even if this + truncation happened. + +The spec says of a FETCH BODY response: + + If the origin octet is specified, this string is a substring of + the entire body contents, starting at that origin octet. This + means that BODY[]<0> MAY be truncated, but BODY[] is NEVER + truncated. + +It's not clear whether the truncation being talked about is the same in +both cases. If it were only allowed to truncate the response at the end +of the data, "BODY[]" would be allowed to be truncated as well, so it +seems that it must be talking about truncation for some other reason. + +If I do "FETCH 2 (BODY[]<0.16384>)" and the server responds +"2 FETCH (BODY[]<0> {2817}", can I assume that that's the end +of the data or not? + + +What if I request "FETCH 2 (BODY[]<16384.16384>)" and the response is +"2 FETCH (BODY[]<16384> {2817}"? Is that a different case than above, +since the request doesn't start at octet 0? + + +If I do "FETCH 2 (BODY[]<2817.16384>)" and the server responds +"2 FETCH (BODY[]<2817> {0}" I know I'm at the end of the data. Is +"2 FETCH (BODY[]<2817> NIL)" semantically equivalent? The spec says: + + ... If the starting octet is beyond + the end of the text, an empty string is returned. + +Is "NIL" equivalent to an empty string in this case? It would appear not, +according to this part of the spec: + + The special form "NIL" represents the non-existence of a particular + data item that is represented as a string or parenthesized list, as + distinct from the empty string "" or the empty parenthesized list (). + +Even though the syntax specifies "nstring", is "NIL" a valid response +in this case? + + +Thanks. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22732.mbox:2,S new file mode 100644 index 00000000..df2f2732 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22732.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From brendan at kublai.com Thu Apr 5 11:35:35 2012 +To: imap-protocol@u.washington.edu +From: Brendan Cully +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <4F7DDF6B.5030609@earthlink.net> +References: <4F7DDF6B.5030609@earthlink.net> +Message-ID: <20120405183535.GA13832@paraiba> + +On Thursday, 05 April 2012 at 13:07, Rick Sanders wrote: +> Just to close out this thread I did not find a solution or workaround +> to the problem the Exchange 2007 IMAP server has with FETCH commands +> like this: +> +> >1 fetch 1 (BODY[HEADER (DATE)]) +> >1 BAD Command Argument Error. 11 +> +> I wound up by issuing a BODY[HEADER] command and grabbing the items I +> need from the response. + +I think you could also try falling back to IMAP4 mode: +1 FETCH 1 (RFC822.HEADER.LINES (DATE)) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22743.mbox:2,S new file mode 100644 index 00000000..e6395e5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22743.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From dave at cridland.net Mon Mar 19 15:17:07 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + +Message-ID: <17068.1332195427.057549@puncture> + +On Mon Mar 19 21:29:08 2012, PA wrote: +> +> On Mar 19, 2012, at 9:46 PM, Bron Gondwana wrote: +> +> > Have you looked at http://imapwiki.org/ImapTest ? +> +> Yes, I have looked at ImapTest. Didn't quite manage to use it, +> even though looking at the test case themselves was instructive. + +It works against Polymer. I can read all the mailboxes, and they seem +reasonable. + +I'm not sure that it's a very sensible idea to list all email +addresses of people who have ever posted as the output of: + +. LIST "" "names/%" + +Might want to change that. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22749.mbox:2,S new file mode 100644 index 00000000..f705c5bd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22749.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Jan 13 07:59:32 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] which IMAP servers support support SASL + authorization vs. authentication ID? +In-Reply-To: +References: +Message-ID: <4F1054E4.1030803@isode.com> + +Hi Mark, + +On 13/01/2012 15:44, Mark Crispin wrote: +> I have been tasked to identify which IMAP servers support the SASL +> concept +> of authorization vs. authentication ID and if it is suitable to allow +> impersonation; that is to proxy to various user accounts. +> +> I have the following data: +> +> Panda IMAP: Yes +> ;; Authenticated userids in system group "mailadm" may authorize +> ;; to any other userid. +> +> UW IMAP: Yes, in newer versions +> ;; Same as Panda + +Isode M-Box supports that as well. A user configured in the "admin_user" +option in ms.conf (configuration file) can act as any other user. This +feature can be disabled by not providing the "admin_user" option value. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22752.mbox:2,S new file mode 100644 index 00000000..46222f27 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22752.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From petite_abeille at mac.com Thu Dec 8 12:25:37 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] notification of deleted/expunged messages? +In-Reply-To: +References: + <80779123-5707-46B5-80E9-F90412A013BD@iki.fi> + <1323259286.1981.140661008567313@webmail.messagingengine.com> + +Message-ID: <8A9E65D1-7495-41F8-9067-4E07D89C3192@mac.com> + + +On Dec 7, 2011, at 6:13 PM, Mark Crispin wrote: + +> The convenience of a server author, to be able to do something quick and +> dirty, should take second place to the need of a client author to have +> reliable server behavior. + +Thanks for all the answers. + +In my specific scenario, there are always, say, 1,000 sequences in the mailbox. It's just that what messages they represent varies over time. No messages are deleted per se. They just fail out of the "recent messages" window. + +In any case, perhaps a simple setup is to freeze the message window upon mailbox selection, until a noop request comes along, at which point the appropriate expunge notification is communicated to the client and the new messages are published. That should guaranty fetch consistency until the server is in a position to communicate the message changes to the client, no? + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22756.mbox:2,S new file mode 100644 index 00000000..defb9795 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22756.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 1 00:56:16 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <6F93E5CD-2792-4D05-BEEF-F1682CA88C89@iki.fi> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + + + <20111101063140.GA5353@brong.net> + <19901681-2C1A-410F-93EE-51F2AF707382@iki.fi> + <20111101070031.GA6591@brong.net> + <6F93E5CD-2792-4D05-BEEF-F1682CA88C89@iki.fi> +Message-ID: <1320134176.22414.140660993072841@webmail.messagingengine.com> + + + +On Tuesday, November 01, 2011 9:26 AM, "Timo Sirainen" wrote: +> On 1.11.2011, at 9.00, Bron Gondwana wrote: +> +> > On Tue, Nov 01, 2011 at 08:40:57AM +0200, Timo Sirainen wrote: +> >> On 1.11.2011, at 8.31, Bron Gondwana wrote: +> >> +> >>> On Tue, Nov 01, 2011 at 08:06:29AM +0200, Timo Sirainen wrote: +> >>>> Dovecot also stores messages with LFs and has no trouble exporting them as if they were CRLFs. I think the only actual (performance) problem with it is .. well, actually the topic of this thread :) A partial fetch from a non-zero offset requires some scanning to find out the LF-only-offset. But luckily all clients just fetch the blocks in increasing order from zero offset, so this isn't such an important problem. +> >>> +> >>> How do you handle a message with a mix of LF and CRLF in the original? +> >> +> >> "Correctly." :) +> > +> > Er - by which you mean that you always return the exact bytes you were given? +> +> I don't think LF vs. CRLF have any special meaning in email data, they're both simply newlines. So Dovecot doesn't try to preserve them. They're both converted to newlines anyway (LFs or CRLFs depending on context). Although I did initially wonder about supporting binary message bodies, but never bothered with it. + +The real issue is things which do checksums on the email contents. +Digital signatures mainly. Luckily mostly the clients that +actually bother with digital signatures also bother with getting +the other parts right. + +> >> Basically everywhere there are message (part) sizes, I store the "physical size" (exactly as it is stored in disk, with or without CRs) and the "virtual size" (all LFs converted to CRLFs). If physical size equals to virtual size, I'll do some extra optimizations like being able to seek to wanted offset immediately or use sendfile() to send the message. +> > +> > Sounds to me like that's enough benefit to store it all CRLFs in itself. +> > 1/65 of storage space vs seek and sendfile. +> +> Well, that's why it's an option :) But typically I've noticed that I/O is the problem, not CPU, so sendfile isn't all that useful. The seeking is more of a theoretical problem. Normally when clients fetch partial data they start from offset 0, so no seeking needed. The next block starts from where the previous block ended, which Dovecot remembers and continues again without seeking. And so on. So even if LFs save only a little disk space and disk I/O, I figured it's better than nothing. + +Agree - IO is our biggest issue by far. Of course, we're not google. We throw dual CPUs +in our IMAP boxes just because you need two CPUs to drive 48Gb of RAM happily, and that's +our current sweet spot US$13k machines with two SSDs, 12 2Tb SATA hard disks and 48Gb +RAM with a pair of low-end CPUs. Along with battery backed RAID controllers to take the +edge off the slow disks, it works pretty well. + +Certainly anything which only hits the index files is blindingly fast! But if I was going +to store somehow cleverly to save disk space, it would be zlib with a dose of pre-optimised +dictionary. We already do that for our backups - they're tar.gz files. I wrote a talk a +little while back about how we use a pure-perl library which can repack tar files in a +single streaming read/write to get good compression over time. + +> >> Although a mix of LFs and CRLFs in the same message shouldn't normally appear in mail files. +> > +> > Most often seen with headers, or between parts. The most ugly cases +> > being differences between the mime-headers of a part, and the content +> > of said part. +> +> Coming from where? SMTP? IMAP APPENDs? I've never noticed, because Dovecot handles them silently. + +Most rubbish comes in via SMTP - we handle it with a bunch of cleanups in our LMTP proxy +before Cyrus sees it - but it's amazing what IMAP clients will try to give you too! + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22759.mbox:2,S new file mode 100644 index 00000000..f7acb3a3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22759.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Fri Oct 7 07:39:58 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] FETCH (rfc822) response +In-Reply-To: <4E8F0D21.3040004@earthlink.net> +References: <4DEBB242.2090200@BusCom.net> + + <4E3382E3.3010509@earthlink.net> + + + <4E8F0D21.3040004@earthlink.net> +Message-ID: <1317998399.21919.63.camel@hurina> + +On Fri, 2011-10-07 at 09:30 -0500, Rick Sanders wrote: +> I'm working with a server whose response to a FETCH (rfc822) is +> different than I have seen before. +> +> >> 1 FETCH 1 (rfc822) +> << * 1 EXISTS +> << * 1 FETCH (RFC822[] {0} +> +> I'm used to seeing something like * 1 FETCH (RFC822 {1522}. In this +> case I have to send a separate 1 FETCH 1 (rfc822.size) command to get +> the message size: << 1 FETCH (rfc822.size 5149). +> +> Just curious, is this compliant? + +No, the server is broken. But you could try to work around it with +fetching BODY.PEEK[] instead. + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095051.22762.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095051.22762.mbox:2,S new file mode 100644 index 00000000..8668a2f7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095051.22762.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tjs at psaux.com Mon Aug 8 17:36:07 2011 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Are clients pinging servers at the same time? +Message-ID: <4E4080F7.4060005@psaux.com> + +We've been doing some tuning on our IMAP servers, and I'm noticing +spikes on the hour and quarter-hours. I haven't dug into the data too +much, but what I'm seeing suggests client requests hitting us at :00, +:15, :30, and :45, every hour. + +Are there clients out there that are timing polls, updates, whatever, to +be on the quarter-hours? It seems to be worse on the hour, but we get +little echos on the 15s. + +Every 15 minutes would be fine, just not so many at the same time. + +I'm looking for both clients that have this behavior, and longer-term, a +fix. This is sub-optimal behavior from a user perspective, as the +clients would get better service if they randomized and hit us at +different times. + +Speaking only for myself, +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22595.mbox:2,S new file mode 100644 index 00000000..e2d07388 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22595.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From dave at cridland.net Wed Mar 11 05:18:07 2015 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] An announcement +In-Reply-To: <54FF7146.9020202@brokersys.com> +References: <54FF7146.9020202@brokersys.com> +Message-ID: + +For those struggling, I think it's this one: +https://github.com/JonathanGuthrie/wodin + +On 10 March 2015 at 22:33, Jonathan Guthrie wrote: + +> A long time ago, I wrote an IMAP server for my day job and when the +> project was cancelled, I kept a copy of the source code. I thought it had +> some really cool ideas in it, and I couldn't bear to just see it deleted. +> Later on, I received permission to do with it what I will and I've worked +> on it off and on since then. +> +> At the moment, it's not really ready for use. For example, STARTTLS isn't +> implemented, and there's no locks for mbox format (and it implements the +> wrong mbox format, besides.) Also, I pretty much just punted on the +> Unicode support. There isn't enough time and it's been just a hobby for +> more than a decade. +> +> Anyway, it's up on github, if anyone is interested. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22641.mbox:2,S new file mode 100644 index 00000000..a040fbef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22641.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From jkt at flaska.net Thu Mar 20 11:36:14 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> +Message-ID: <67558e67-dd91-419f-9c42-d327db5b2f10@flaska.net> + +On Thursday, 20 March 2014 07:06:11 EDT, Arnt Gulbrandsen wrote: +> Is that atomicity really required? + +What I think is needed is letting the client know how the operation ended +up, which could be done by the usual tagged OK/NO. Another thing which I +believe almost any client will do is marking the message as sent. + +Given that the set of flags is standardized (both $SubmitPending and +$Submitted as well as their combined meaning), I think that it's an obvious +thing which builds on the (good parts of) LEMONADE to reuse them. Now, +doing this on the server means that the clients save one round trip, and +that you got the benefits of being able to detect what happens after a +reconnect in the process. These two things make it beneficial in my book. + +That said, if this flag manipulation would stand between the draft and the +standardization process, I'm OK with removing that. However, please note +that APPEND also carries a requirement on flag manipulation, so there's a +precedent already. + +> And if it is, I don't think +> the three-step submit process gives you atomicity. + +AFAIK "atomicity" is given as long as "atomicity" means "you'll know what +happened unless the server went on fire". Do you see a possible race in +there? + +> I like it in general, but I'd prefer a two- or even one-step +> process. Two-step could be "upload to outbox; submit from +> outbox". You can do the atomicity thing by saying that servers +> SHOULD lock a message in the outbox while it's being submitted, +> and refuse to resubmit. +> +> Personally I don't think it's worth it. It's better to have +> simplicity, even at the cost of the occasional duplicated +> message. + +I smell a misunderstanding here. All that the draft mandates is setting up +message flags on each state transition, and refusing to send a message +which already has a certain flag set. Does the current wording of the draft +perhaps convey some other meaning? I'll be happy to reword it. + +To clarify, I'm absolutely OK with a server which would contain a race +condition between checking the flags and proceeding further. The automatic +flag manipulation was not meant to guard against a deliberate attempt at +sending a message twice, but to: + +- mimick what was the LEMONADE way of working, +- give the client a tool to check the state upon a possible network +failure, +- do automatically what a client would do itself anyway, +- cut the troundtrips. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22682.mbox:2,S new file mode 100644 index 00000000..7794acd4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22682.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From blong at google.com Wed Mar 27 12:51:59 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + <5152E3E6.40506@aj.jp.nec.com> <1364388724.13923.97.camel@innu> + + +Message-ID: + +On Wed, Mar 27, 2013 at 11:47 AM, Dave Cridland wrote: + +> +> On 27 Mar 2013 18:36, "Brandon Long" wrote: +> > +> > We actually had that failure mode to begin with due to a bug, and then +> we'd drop the connection after too many bad commands... but of course, +> they'd just retry. +> +> I'm hesitant to suggest it, but is it worth sending BYE and dropping the +> connection? It's sailing just within the lines of the specification, I +> think. +> +I guess its hard to know what the client will do. Its possible this will +just prevent any messages from being sent, never getting to the point of +showing an error to the user. + +In my perfect world, I guess I'd want literal+ to be limited to say 50k, +and you have to use literal for anything larger. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22688.mbox:2,S new file mode 100644 index 00000000..2b9f902a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22688.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From jkt at flaska.net Tue Jan 15 02:29:10 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Is there some way to detect servers which + =?iso-8859-1?Q?automatically_add_sent_messages_to_the_Sent_mailbox=3F?= +In-Reply-To: <1358219317.28560.140661177648789.4B8BC9F9@webmail.messagingengine.com> +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + + <1358168208.10326.16.camel@innu> + + + <1358219317.28560.140661177648789.4B8BC9F9@webmail.messagingengine.com> +Message-ID: + +On Tuesday, 15 January 2013 04:08:37 CEST, Bron Gondwana wrote: +> The only thing I think I would like to see added is the ability +> to set a flag +> on successful submit, and not submit again if that flag is already set. + +This is in the current proposal [1]. I've just re-read it and while the wording shall definitely be improved to make it less ambiguous, the procedure involves updates to the $SubmitPending and $Submitted flags in a manner which is intended to deal with these situations. + +I've spotted quite a few inconsistencies throughout the text, I'll prepare an updated version in a few days/weeks. + +With kind regards, +Jan + +[1] http://tools.ietf.org/html/draft-kundrat-imap-submit-00#page-4 + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22697.mbox:2,S new file mode 100644 index 00000000..56812f5e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22697.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From jkt at flaska.net Fri Dec 28 08:08:57 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +Message-ID: + +Hi, +I've received a report that Courier 4.5.0 sometimes doesn't return UIDNEXT when syncing a mailbox, violating RFC 3501. Trojita used to hit an assert in such case which was clearly my bug. This has now been fixed. + +My code has always treated missing EXISTS, UIDNEXT or UIDVALIDITY (either in what was currently received from a mailbox or what we have in a persistent cache since the last time) as a reason to throw away anything in the cache and fall back to a full sync, similar to what happens when UIDVALIDITY changes. I wonder if this is really required -- on one hand, the IMAP server clearly violates the spec, but on the other hand, it might be tempting to work around this situation by at least preserving the cached message parts data so that users don't have to download everything again. The UID-seq mapping will have to be reconstructed anyway, but that's unavoidable. + +Is it really required or recommended to discard the cached immutable data for messages in a mailbox when the server doesn't send UIDNEXT? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22701.mbox:2,S new file mode 100644 index 00000000..1f84d386 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22701.mbox:2,S @@ -0,0 +1,331 @@ +MBOX-Line: From slusarz at curecanti.org Wed Nov 21 17:36:06 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + +Message-ID: <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + +Quoting Brandon Long : + +> On Wed, Nov 21, 2012 at 2:54 PM, Michael M Slusarz +> wrote: +> +>> Quoting Jan Kundr?t : +>> +>> Hi Michael, +>>> I've read your draft, it's an interesting extension. However, it seems to +>>> me that the whole point here is to save a few roundtrips by skipping the +>>> process of activating/configuring various optional features. I'll discuss +>>> each extension separately. +>>> +>> +>> I would strongly disagree with this statement. As written, the draft is +>> only minimally concerned with saving on network round-trips. +>> +> +> Yet, that and bytes are what you quote from your example. + +That would be a selective reading of my example. I spent the entire +previous paragraph before introducing the example stating that other +methods of benchmarking would be desirable, but impractical/impossible +at this time. + +I agree that byte counting isn't particularly useful as a benchmark, +although it does provide some context (for example: a protocol +addition that ADDED net additional bytes on-the-wire would tend to +indicate the design/theory is flawed). + +And I also explicitly indicated the net amount of +commands/round-trips/additional IMAP protocol items that were saved, +which is a more useful benchmark. + +>> Sidebar: I'm not a huge fan in general of pipelining as a performance +>> since it is not always a feasible option for clients. For example, a +>> client may use an OO-library to connect to the IMAP server. This library +>> may not provide a reasonable (or any) way of allowing multiple commands to +>> be sent at once via the API. For example, to start compression, enable +>> QRESYNC, and set the language, it is more than reasonable to expect this +>> kind of pseudocode: +>> +>> $result = $imap->useCompression(true); +>> // Check for success +>> $imap->useQresync(true); +>> // Check for success +>> $imap->setLanguage([LANGUAGE])**; +>> // Check for success +>> +>> In any OO IMAP interface the order of IMAP commands to allow for efficient +>> pipelining, or the fact that pipelining even exists, should obviously not +>> be a part of the API. Thus pipelining is fairly useless in the real world +>> as a way to guarantee an increase in performance. +>> +> Thats not a true statement. Its useless if you're forced to use a bad +> client API that you aren't willing to work around? Is that bad client API +> going to support adding a new command? + +How do you suggest writing an IMAP client library API in which the +user of the API doesn't need to know ANYTHING about IMAP? Any API +that requires the client author to know about pipelining or other IMAP +protocol details is worthless. In fact, I'd go so far to say that a +useful mail client library API should allow interaction with both an +IMAP and POP server using the same commands, albeit with the +expectation that some of the more advanced commands - e.g. ACLs - +would necessarily need to be null actions when using a POP3 backend. + +SUSPEND is a general solution and easy to implement (IMHO) and would +allow performance gains without understanding the more esoteric +details of pipelining. The simple fact that we are discussing which +commands would be appropriate for pipelining highlights the latter. + +>> There are other, more important reasons why a mechanism to restore +>> configuration is useful: +>> +>> - It prevents the need to re-parse the CAPABILITY list. Note that parsing +>> the CAPABILITY list involves *MUCH* more than just the actual string +>> tokenization of the list, although this alone may not be a trivial task +>> (see below). +>> +>> A client may, depending on the capabilities returned, need to perform +>> various internal initialization tasks. For example - if CONDSTORE/QRESYNC +>> is listed, a client may have to then parse a separate configuration file to +>> grab the details of the local cache where it is storing this information, +>> and then connect to this cache, etc. Or if language is listed, a client +>> might have to parse a local list of language availability to determine if +>> it can/should change the language. +>> +> +> And... it would have had to do that anyways. If its resuming the +> connection, it has to either do that initialization or it has to cache that +> initialization, both of which it can do just as easily on non-resume if +> we're talking about a new connection every 10s. + +You've proven my point exactly. For you, this kind of initialization +may be trivial. For another client, this isn't. You can't make +assumptions (incorrectly, in your case) about how a client does work +or should work depending on how you do/would do things. + +> Parse a local list of language availability? So, you want to avoid reading +> a local config file ... on the hope that the client doesn't need to know +> that language information anyways just to display stuff to the user which +> doesn't come from the server? + +More assumptions about client behavior. I'll agree that my initial +example may not be a tremendously useful/practical example, but it is +a useful analogy for other initialization tasks that may occur. + +>> And CAPABILITY parsing is more than just determining what capabilities are +>> listed. It is also determining which capabilities SHOULD not be listed. +>> Just today, Cyrus was fixed due to a bug that our code was triggering: +>> APPENDing binary data via a literal8 caused Cyrus to immediately terminate +>> the connection with a BYE response. Our code is smart enough to catch this +>> broken behavior by removing BINARY appending from the list of available +>> capabilities. But without a way to ensure that every subsequent connection +>> is a continuation of the current session, we have to do this detection +>> EVERY SINGLE TIME. This is potentially a huge performance hit, since we +>> may be appending MBs of data to the server before the BYE response can be +>> returned (e.g. appending a sent-mail message containing attachments). +>> +> +> So, you worked around the cyrus bug by determining the connection exhibits +> the bug and then never using it for that server again? Or, you could just +> not use BINARY ever, or issue an ID command to know if the remote server +> has the bug. You could even pipeline it! Or you could store the +> known bad server +> information somewhere in your app server. + +* Without a way of determining if the IMAP server we connect to is the +same IMAP server we previously connected to when we determined BINARY +literal8's were broken, there's nothing we can do except try all over +again. You obviously can't assume that the IMAP server is the same. +Several of my clients use IMAP load-balancing, and all backend IMAP +servers may not be running the same IMAP software/version. + +* Ack! You didn't just say to use the ID command did you? RFC 2971 [3]: + + Implementations MUST NOT make operational changes based on the data + sent as part of the ID command or response. The ID command is for + human consumption only, and is not to be used in improving the + performance of clients or servers. + + This includes, but is not limited to, the following: + + [...] Clients MUST NOT attempt to work + around server bugs based on the ID response. + +* The Cyrus break apparently only happened recently. Hypothetically: +even if using ID information (BAD!), how does that help all of the +admins that have installed previous versions of our software where the +ID sniff does not catch the issue? + +* Not use BINARY ever? How do you send null characters? And because +*1* version of *1* server is broken, EVERY other server that has ever, +or will ever, support BINARY has to be ignored? That's a bummer. + +* (Getting a bit off topic...) If a server supports BINARY - or at +least if it claims to support BINARY - it is a big time win to just +send all literals as literal8's. That way you don't have to scan the +data stream for nulls, which is potentially an expensive operation +when the APPENDed data is 10's of MBs in size (users love sending 10 +camera pics in outgoing e-mails for some reason...). So sending +literal8's is a significant performance improvement. If a server +reports that it supports BINARY, who are we to argue? + +* For the record, Cyrus is not the only one that has a broken BINARY +literal8 implementation (that I know of). For fun, try this on a +UW-IMAP BINARY capable server: + +A1 APPEND INBOX ~{1} +A1 BAD Missing literal in APPEND + +>> - As mentioned above, sending an initialization command to the server may +>> take quite a bit of work on the client side to prepare. It's not as easy +>> as hardcoding 'ENABLE QRESYNC' in client code - it may take quite a bit of +>> CPU cycles to get to that point in a given client. +>> +> +> But this doesn't change anything about the having to do that. Regardless +> of whether you're resuming a session or not, you still have to do that work. + +Back to a client assumption. It is *much* cheaper for us to resume +our session than to reinitialize. It may not be true with your +implementation but that's irrelevant. + +>> Another example: a client keeps all of its imap initialization code in a +>> separate dynamically-loadable module. If the session is successfully +>> resumed, this module does not need to be loaded/interpreted/run. +>> +> +> What kind of clients are we talking about? I'm just completely failing to +> think this is an issue. + +Ours. We keep initialization code in a completely separate class +(PHP). That class is never loaded if we don't need to re-initialize +(this currently happens when using the current XIMAPPROXY feature +discussed in the original thread e-mail). + +>> - From the server side, it may be much more expensive to initiate an IMAP +>> session as compared with resuming one. This draft allows the server to +>> optimize if possible. I believe Timo's post indicates that resuming in +>> Dovecot is more efficient than creating a new session. +>> +> +> Resuming into the middle of a selected folder seems cheap. Resuming the +> status of N commands seems optimizing in the small. I would think it +> would cost more in terms of either caching the data in memory or stashing +> the data to disk/reading it back than the overhead of parsing a couple +> commands and maybe allocating a data structure. + +I am not a server author so I can't speak to this - one of the reasons +I started this thread was to get feedback on just this issue. + +However, I believe Timo has indicated that it is potentially a +performance win (although he is discussing in a slightly different +context): + +http://markmail.org/message/qp45yod5ukqf3jfn + +>> - Even when pipelining commands, they still need to be sent, the incoming +>> command needs to be tokenized (server), the command is performed (server), +>> the response sent back, any untagged responses are tokenized (client), the +>> untagged responses are interpreted (client), the tagged response is +>> tokenized (client), and the tagged response is processed (client). None of +>> this is "free". Pipelining eliminates none of this. +> +> +> Tokenization is what clients and servers do, and this takes a trivial +> amount of time and cpu in reasonable languages. + +Yes and no. The higher-level language you get, the less of a chance +you get to optimize this. PHP, which I am stuck with, will not be as +efficient as C at doing these kind of actions so I can only do so much +to improve tokenization speed. I'm not claiming that this is vastly +going to improve performance, but you also can't argue that it can't +hurt. + +Not to mention that I have seen many poorly-written tokenizers doing +things like using regexps to parse IMAP responses. For these clients, +any reduction in the number of commands processed is a much bigger win. + +So for well-written IMAP clients containing highly tuned tokenizers, I +would agree this advantage is of dubious value. But well-written IMAP +clients are probably in the minority. + +>> COMPRESS=DEFLATE +> +> And what does "resuming" a COMPRESS=DEFLATE do? I assume we're not talking +> about trying to keep the old dictionary or anything like that, right? +> We're actually talking about just the equivalent of starting it again. + +I would suggest the proper behavior would be to re-start the +compression behavior after the tagged command containing the resume +response code. Whether the dictionary should be retained from a +previous section would be a decision entirely up to the implementer. + +> And finally, what IMAP servers support the LANGUAGE extension? +>>> +>> +>> Why does this matter? RFC 5255 is a Standards Track extension. A year +>> from now, every IMAP server and 200 new ones may support it. +> +> +> True. But that also goes to my point that you need to specify which +> extensions and what information would need to be resumed, you can't just +> say "any which apply", what if the server author doesn't think the way you +> do and one of these doesn't get resumed? + +You may have missed this in a previous e-mail response of mine to +another commenter: I now agree that this appears to be an unfortunate +necessity. + +I was trying to keep the draft as lean as possible. But discussion of +how this command affects current extensions - see, e.g., Section 4 in +the draft MOVE extension - is necessary to avoid ambiguities. + +> But without an actual proof that this is useful for some combination of +> client/server, why would we adopt yet another extension that no one will +> implement? + +Whatever I come up with here will be implemented by me in the +imapproxy server, whether standardized or not. Timo has indicated an +interest to explore the idea further for implementation in Dovecot +since he may be implementing something like this internally for other +reasons. + +Obviously our project would implement client side. I would assume the +other large PHP-based open source webmail options would be interested. + +As opposed to some other hella complicated extensions (I'm looking at +you CONVERT), this proposal only adds two commands (one is really a +simple extension of LOGOUT) and a response code. Thus, this should be +something that could be added without having to go in and modify too +much existing code (It was an explicit design decision to not add the +RESUME information to the authentication command; this would save a +round-trip, but add significant complexity and implementation concerns.) + +> Have you considered not re-establishing a connection every 10s? This is a +> connected protocol, not http. + + From a webmail perspective: if you could tell me how to maintain a +consistent IMAP connection using nothing more than current IMAP +commands and an out-of-the box HTTP server, I would be ecstatic. +That's what users demand our software works with, so that's what we +need to code for. + +I don't have the UI information in front of me right now, but a user +initiating an action every 10 seconds, at least when managing messages +in a mailbox (loading a message to read, deleting, copying/moving, +reporting as spam), seems like a reasonable estimate for discussion +purposes. That's where I got the 10 second value from. + +Thanks again for the additional input and review. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22707.mbox:2,S new file mode 100644 index 00000000..6418f212 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22707.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Tue Oct 30 10:30:40 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] significance of leading whitespace in RFC 2822 + unstructured headers +In-Reply-To: <508F4486.8060405@ymail.com> +References: <508F017B.4000606@ymail.com> + + <508F4486.8060405@ymail.com> +Message-ID: + +On 30.10.2012, at 5.07, Bill Shannon wrote: + +> One of the reasons I asked here is because of the interaction between +> the syntax of these header fields and what an IMAP server should do +> when parsing the header and returning the parsed value. The syntax +> would imply that all whitespace after the colon is part of the value +> of the header, but that's not what most/all IMAP servers do, and not +> what the examples show. Is there something in the IMAP spec that +> says leading whitespace should be removed from these header values? + + +http://marc.info/?t=105363818800005&r=1&w=4 + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22719.mbox:2,S new file mode 100644 index 00000000..d5c0593e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22719.mbox:2,S @@ -0,0 +1,148 @@ +MBOX-Line: From imap at maclean.com Wed Aug 22 07:41:37 2012 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +In-Reply-To: <4E784913-605F-4401-BCE5-268E79F9F41D@iki.fi> +References: <502DBEA4.2070204@verizon.net> + + <060A31A9-066E-43F0-97AF-4B68522832B1@iki.fi> + + + + <16C2B175-8815-42C5-B4BF-621EE86B8050@iki.fi> + + <4E784913-605F-4401-BCE5-268E79F9F41D@iki.fi> +Message-ID: + +In a communication on this mailing list of 24-Jan-2011, Mark Crispin +wrote: "For all body parts that are not children of a MULTIPART, the +'MIME' specifier returns the empty string (not NIL)." At the time, I +fixed my server to comply with this. I think it would be no bad +thing if "MIME" meant get the MIME headers (and only MIME headers) +for any old part but that seems clearly not the intention (and not +the way that most servers have it implemented) so I am inclined to +stick with this rule. + +Pete Maclean + +At 05:20 PM 8/20/2012, Timo Sirainen wrote: +>I think this is somewhat ambiguous.. Servers probably should do what +>you suggest (I changed mine to do it it again, only a few days of +>not doing it), but then again clients shouldn't rely on it, since +>some servers are known not to allow it (UW-IMAP at least). +> +>Somewhat related to this, I've been wondering about adding optional +>levels of testing to imaptest, where by default it tests only how +>all the servers should really behave, and with more options it could +>test some more strict features that maybe aren't really so relevant +>anymore (e.g. substring searches). +> +>On 18.8.2012, at 3.13, Philip Guenther wrote: +> +> > On Fri, 17 Aug 2012, Timo Sirainen wrote: +> >> On 17.8.2012, at 8.16, Philip Guenther wrote: +> >>> On Fri, 17 Aug 2012, Timo Sirainen wrote: +> >>> ... +> >>>> Anyway, [1.MIME] isn't a valid request in Joshua's test mail. +> >>> +> >>> Chapter and verse, please? +> >>> +> >>> (There are specific restrictions on when HEADER and TEXT are valid, +> >>> but no such restrictions are specified for the MIME part specifier...) +> >> +> >> Well, I'm not sure if it's really a BAD-type of invalid, but [x.MIME] +> >> refers to the part's MIME headers, and if the parent isn't a multipart, +> >> there are no MIME headers, so the proper result is empty. +> > +> > Well, RFC 3501 says: +> > The MIME part specifier refers to the [MIME-IMB] header for +> > this part. +> > +> > [MIME-IMB] is a reference to RFC 2045. That RFC doesn't define "header" +> > itself, but does describe headers on not just body parts but entities: +> > +> > 2.4. Entity +> > ... +> > <...> Any sort of field may be present in the header of an entity, +> > but only those fields whose names begin with "content-" actually have +> > any MIME-related meaning. Note that this does NOT imply thay they +> > have no meaning at all -- an entity that is also a message has non- +> > MIME header fields whose meanings are defined by RFC 822. +> > +> > That implies to me that "header" doesn't necessarily mean "header on body +> > part". +> > +> > Also, RFC 3501 refers to [MIME-IMB] header fields in the description of +> > the BODYSTRUCTURE fetch item, wherein message/rfc822 parts do have their +> > header parsed to fill in the various fields. +> > +> > +> > So, I would argue that RFC 3501 does specify that .MIME work on all parts +> > and, in the particular case of message/rfc822 part, is equivalent to +> > asking for HEADER one level higher. +> > +> > +> > Philip Guenther +> > +> > +> > (In case that last "one level higher" doesn't make sense, here's a longer +> > example: +> > +> > ------------------------------------------------------ +> > Date: Fri, 01 Jan 2010 12:00 -0500 +> > To: x@x.x +> > From: y@y.y +> > Subject: download on demand problem +> > MIME-Version: 1.0 +> > Content-Type: message/rfc822 +> > +> > Date: Fri, 01 Jan 2012 12:00 -0500 +> > To: y@y.y +> > From: x@x.x +> > Subject: Blast from the future +> > MIME-Version:1.0 +> > Content-Type: multipart/mixed; boundary=foo +> > +> > --foo +> > +> > Do you know what to do when you see this message? +> > +> > --foo +> > Content-Type: text/html +> > +> > Blah blah blah +> > --foo +> > Content-Type: multipart/digest; boundary=bar +> > +> > --bar +> > +> > Subject: blah +> > Foo: bar +> > +> > sdlfkj +> > sdlfkj +> > sdlfkj +> > +> > --bar-- +> > +> > --foo-- +> > ------------------------------------------------------ +> > +> > In that, [1.3.1] is the digest message, starting at the "Subject: blah" +> > line and continuing through the three "sdlfkj" lines. [1.3.1.1] is just +> > the three "sdlfkj" lines. [1.3.1.1.MIME] is the same as [1.3.1.HEADER], +> > which is the header of the digest message, being "Subject: blah", "Foo: +> > bar", and the blank line after.) +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> > +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22726.mbox:2,S new file mode 100644 index 00000000..024977ad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22726.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Fri Jun 22 10:57:25 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + NOTIFY +In-Reply-To: <4FE454E7.4080001@isode.com> +References: <1340151854.5967.57.camel@hurina> <4FE454E7.4080001@isode.com> +Message-ID: <06330C04-8714-43B6-B693-0493315B63B9@iki.fi> + +On 22.6.2012, at 14.20, Alexey Melnikov wrote: + +> On 20/06/2012 01:24, Timo Sirainen wrote: +>>> If the server does not know how to decode the section's CTE, it +>>> MUST fail the request and issue a "NO" response that contains +>>> the "UNKNOWN-CTE" extended response code. +>> Looking at Cyrus code it appears to abort the FETCH immediately if this +>> situation happens and [UNKNOWN-CTE] is returned as tagged reply. +>> +>> Now, what to do when NOTIFY's fetch-att list includes BINARY[part] and +>> it can't be decoded? Send an untagged NO [UNKNOWN-CTE] after the FETCH +>> reply? What if BINARY[part] is the only requested fetch-att and it can't +>> be fetched? The server can't send an empty FETCH reply. +> +> Can you avoid sending the FETCH reply in such cases? + +Yes, but would I still send * NO [UNKNOWN-CTE] ? :) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22729.mbox:2,S new file mode 100644 index 00000000..1ff4e5d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22729.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From tss at iki.fi Sat May 12 01:42:41 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] partial fetch of BODY data +In-Reply-To: <4FAE0F7F.9000709@ymail.com> +References: <4FAE0F7F.9000709@ymail.com> +Message-ID: <2A0907F0-BF62-4E83-B3BE-0957A736A820@iki.fi> + +On 12.5.2012, at 10.21, Bill Shannon wrote: + +> The spec says of a FETCH BODY request: +> +> Any partial fetch that attempts to read beyond the end of the +> text is truncated as appropriate. A partial fetch that starts +> at octet 0 is returned as a partial fetch, even if this +> truncation happened. + +This is mainly about how the server is supposed to reply to it, i.e. it should still give BODY[]<0> reply instead of BODY[]. All partial replies may be truncated, this just tries to clarify that offset=0 shouldn't be treated as a special case. + +> The spec says of a FETCH BODY response: +> +> If the origin octet is specified, this string is a substring of +> the entire body contents, starting at that origin octet. This +> means that BODY[]<0> MAY be truncated, but BODY[] is NEVER +> truncated. + +This is an instruction for client implementors about what they may assume about the replies. + +> It's not clear whether the truncation being talked about is the same in +> both cases. If it were only allowed to truncate the response at the end +> of the data, "BODY[]" would be allowed to be truncated as well, so it +> seems that it must be talking about truncation for some other reason. + +Truncation means that a partial fetch ended before the requested number of bytes. BODY[] always requests all bytes. + +> If I do "FETCH 2 (BODY[]<0.16384>)" and the server responds +> "2 FETCH (BODY[]<0> {2817}", can I assume that that's the end +> of the data or not? + +If the client remembers that it fetched 16384 bytes (or anything more than 2817 bytes) it can assume it's at end of data. + +> What if I request "FETCH 2 (BODY[]<16384.16384>)" and the response is +> "2 FETCH (BODY[]<16384> {2817}"? Is that a different case than above, +> since the request doesn't start at octet 0? + +If this was the same mail as above then the server's reply would be an empty string. But assuming a different mail then the message's size can be assumed to be 19201 bytes. + +> If I do "FETCH 2 (BODY[]<2817.16384>)" and the server responds +> "2 FETCH (BODY[]<2817> {0}" I know I'm at the end of the data. + +Yes. The reply may also be "" instead of {0}. + +> Is +> "2 FETCH (BODY[]<2817> NIL)" semantically equivalent? The spec says: +> +> ... If the starting octet is beyond +> the end of the text, an empty string is returned. +> +> Is "NIL" equivalent to an empty string in this case? + +No. + +> It would appear not, +> according to this part of the spec: +> +> The special form "NIL" represents the non-existence of a particular +> data item that is represented as a string or parenthesized list, as +> distinct from the empty string "" or the empty parenthesized list (). +> +> Even though the syntax specifies "nstring", is "NIL" a valid response +> in this case? + +A well behaving server should never return NIL to any replies. But many servers do if the fetched message has already been expunged by another session. diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22732.mbox:2,S new file mode 100644 index 00000000..396e70f8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22732.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From rfs9999 at earthlink.net Thu Apr 5 12:35:35 2012 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Question about FETCH command +In-Reply-To: <20120405183535.GA13832@paraiba> +References: <4F7DDF6B.5030609@earthlink.net> <20120405183535.GA13832@paraiba> +Message-ID: <4F7DF407.8060604@earthlink.net> + + +> I think you could also try falling back to IMAP4 mode: +> 1 FETCH 1 (RFC822.HEADER.LINES (DATE)) + +Same error: + +1 FETCH 1 (RFC822.HEADER.LINES (DATE)) +1 BAD Command Argument Error. 11 + +Thanks, +Rick + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22743.mbox:2,S new file mode 100644 index 00000000..bfc364ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22743.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From petite_abeille at mac.com Mon Mar 19 15:27:23 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <17068.1332195427.057549@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195427.057549@puncture> +Message-ID: <47A9743C-D168-408A-ADBB-7E0B6B562B90@mac.com> + + +On Mar 19, 2012, at 11:17 PM, Dave Cridland wrote: + +> It works against Polymer. I can read all the mailboxes, and they seem reasonable. + +Excellent. Thanks for giving it a try. + +> I'm not sure that it's a very sensible idea to list all email addresses of people who have ever posted as the output of: +> . LIST "" "names/%" +> +> Might want to change that. + +The folders are build automatically out of the mail corpus: + +http://dev.alt.textdrive.com/browser/Mail/IMAPStore.ddl#L29 + +It lists names with more than one hundred messages. + +What do you see as being problematic with that approach? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22749.mbox:2,S new file mode 100644 index 00000000..3f156afd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22749.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From dwhite at olp.net Fri Jan 13 08:09:44 2012 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Re: which IMAP servers support support SASL + authorization vs. authentication ID? +In-Reply-To: +References: +Message-ID: <20120113160943.GB4601@dan.olp.net> + +On 01/13/12?07:44?-0800, Mark Crispin wrote: +>I have been tasked to identify which IMAP servers support the SASL concept +>of authorization vs. authentication ID and if it is suitable to allow +>impersonation; that is to proxy to various user accounts. +> +>I have the following data: +> +>Panda IMAP: Yes +> ;; Authenticated userids in system group "mailadm" may authorize +> ;; to any other userid. +> +>UW IMAP: Yes, in newer versions +> ;; Same as Panda +> +> +>Probably yes, but not sure and need details: +> +>Cyrus: +>Dovecot: +>Communigate Pro: +>Sendmail: +>Zimbra: + +Cyrus supports this function using the 'proxyservers' configuration option. +See: + +http://www.cyrusimap.org/docs/cyrus-imapd/2.4.13/man/imapd.conf.5.php +http://www.cyrusimap.org/docs/cyrus-imapd/2.4.13/install-murder.php + +Fine grained control can be accomplished by delegating 'a' ACL rights for +a user's INBOX and then enabling the 'loginuseacl' config option: + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22752.mbox:2,S new file mode 100644 index 00000000..fac3e902 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22752.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From mrc+imap at panda.com Thu Dec 8 12:52:41 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] notification of deleted/expunged messages? +In-Reply-To: <8A9E65D1-7495-41F8-9067-4E07D89C3192@mac.com> +References: + <80779123-5707-46B5-80E9-F90412A013BD@iki.fi> + <1323259286.1981.140661008567313@webmail.messagingengine.com> + + <8A9E65D1-7495-41F8-9067-4E07D89C3192@mac.com> +Message-ID: + +On Thu, 8 Dec 2011, Petite Abeille wrote: +> In my specific scenario, there are always, say, 1,000 sequences in the +> mailbox. It's just that what messages they represent varies over time. +> No messages are deleted per se. They just fail out of the "recent +> messages" window. + +I assume that this is something in an IMAP server? That is, the server +always shows 1000 messages, but from time to time messages vanish in the +existing sequence space, and new messages take their place at the top of +the space? + +> In any case, perhaps a simple setup is to freeze the message window upon +> mailbox selection, until a noop request comes along, at which point the +> appropriate expunge notification is communicated to the client and the +> new messages are published. That should guaranty fetch consistency until +> the server is in a position to communicate the message changes to the +> client, no? + +If I understand what you are doing correctly, yes. + +So, if the bottommost three messages vanish, and are replaced by three new +messages, the server sequence on the EXPUNGE-valid point will be: + * 1 EXPUNGE + * 1 EXPUNGE + * 1 EXPUNGE + * 1000 EXISTS + +Remember that the EXPUNGE response has immediate effect on the sequence +space. If your server transmits: + * 1 EXPUNGE + * 2 EXPUNGE + * 3 EXPUNGE +that would remove original messages 1,3,5, not 1:3. + +However, note that: + * 3 EXPUNGE + * 2 EXPUNGE + * 1 EXPUNGE +is exactly equivalent to: + * 1 EXPUNGE + * 1 EXPUNGE + * 1 EXPUNGE + +If you understand why this is the case, then you can be confident that you +understand how sequence numbers work. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22756.mbox:2,S new file mode 100644 index 00000000..52a06357 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22756.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 1 01:19:05 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <1320102709.31835.140660992941501@webmail.messagingengine.com> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org><75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> + <1320102709.31835.140660992941501@webmail.messagingengine.com> +Message-ID: <1320135545.26476.140660993079121@webmail.messagingengine.com> + + + +On Tuesday, November 01, 2011 12:11 AM, "Bron Gondwana" wrote: +> and I suspect Brendan does too, +> within the constraints he's working with. + +Apologies Brandon - I meant to double check that I'd remember the name +correctly before I sent the email - then I forgot to go back. + +I'll try not to mess it up again! + +Bron ( besides, I don't want open season on MY name ;) +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22759.mbox:2,S new file mode 100644 index 00000000..b186816d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22759.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Oct 7 07:53:56 2011 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] FETCH (rfc822) response +In-Reply-To: <8189.1317998191.572045@puncture> +References: <4DEBB242.2090200@BusCom.net> + + <4E3382E3.3010509@earthlink.net> + + + <4E8F0D21.3040004@earthlink.net> <8189.1317998191.572045@puncture> +Message-ID: <4E8F1284.8000400@earthlink.net> + + +> Try asking for BODY[] instead, though - it's the same +> thing as RFC822, but more modern syntax, so it might work better against +> that server. + +Yep, that works much better. + +1 fetch 1 body[] +* 1 FETCH (BODY[] {5149} + +Thanks, Dave! + +-Rick + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22762.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22762.mbox:2,S new file mode 100644 index 00000000..bd33f529 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22762.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Aug 8 17:47:27 2011 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Are clients pinging servers at the same time? +In-Reply-To: <4E4080F7.4060005@psaux.com> +Message-ID: <2615d8a5461062fd95f3683dea44ff7b@orthanc.ca> + +> We've been doing some tuning on our IMAP servers, and I'm noticing +> spikes on the hour and quarter-hours. I haven't dug into the data too +> much, but what I'm seeing suggests client requests hitting us at :00, +> :15, :30, and :45, every hour. + +I expect this is cron running fetchmail. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095052.22765.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095052.22765.mbox:2,S new file mode 100644 index 00000000..75b7ada8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095052.22765.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From gnb at fastmail.fm Sun Jul 24 23:28:14 2011 +To: imap-protocol@u.washington.edu +From: Greg Banks +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] GETMETADATA responses when no value +Message-ID: <4E2D0CFE.4050202@fastmail.fm> + +G'day, + +I'm trying to write a test for a server's implementation of the +GETMETADATA command (RFC5464) when used with the /private/specialuse +entry (RFC6154), and I can't quite figure out from either RFC what is +the correct behaviour of the server when given a GETMETADATA command for +such an entry whose current value is NIL. I can see three possibilities: + +a) error + +C: t1 GETMETADATA "FolderName" /private/specialuse +S: t1 NO metadata for you sonny + + +b) OK, but no METADATA responses + +C: t1 GETMETADATA "FolderName" /private/specialuse +S: t1 OK done + + +c) OK, and a METADATA response with an explicit NIL + +C: t1 GETMETADATA "FolderName" /private/specialuse +S: * METADATA "FolderName" (/private/specialuse NIL) +S: t1 OK done + + +Can I get some clarification? + +-- +Greg. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22595.mbox:2,S new file mode 100644 index 00000000..f94f7395 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22595.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From ladar at lavabitllc.com Wed Mar 11 07:36:41 2015 +To: imap-protocol@u.washington.edu +From: Ladar Levison +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <25599.1425793832@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> + + <54FB22EB.7090707@lavabitllc.com> <8701.1425748438@parc.com> + <54FB3E1F.3020909@lavabitllc.com> <25599.1425793832@parc.com> +Message-ID: <550052F9.5030406@lavabitllc.com> + + + +On 3/7/2015 11:50 PM, Bill Janssen wrote: +> CCN is a peer-to-peer broadcast content-caching protocol, so there's no +> "RPC call" from a client to a specific server which then sends a +> response. The difference is somewhat like point-to-point versus +> packet-switched CDN; instead of encrypting the channel the messages flow +> on, the messages themselves are encrypted and attached to a unique +> handle, and then just "handed out to passing strangers" for them to copy +> and pass on to others (this is exactly what's happening in the +> implementation of an SSL-encrypted TCP connection, of course). At some +> point the receiver issues a call for that particular handle (which can +> be different for each message), and anyone who has a copy sends it on. +> +> But what I'm doing is an MTA-to-MTA protocol; what you're looking at is +> an MUA-MTA protocol, like IMAP. On the other hand, in my design the MUA +> *is* the MTA, so perhaps there's no difference. + +Sounds an awful lot like how bitmessage works. + +L~ +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22641.mbox:2,S new file mode 100644 index 00000000..f37f6c20 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22641.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From mgrinich at gmail.com Thu Mar 20 11:44:51 2014 +To: imap-protocol@u.washington.edu +From: Michael Grinich +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +Message-ID: + +We just poll STATUS for HIGHESTMODSEQ changes and then use FETCH +CHANGEDSINCE. + +It works, but on large mailboxes that STATUS call can take a while (ie: +minutes). + + + +On Thu, Mar 20, 2014 at 11:32 AM, Ian Anderson wrote: + +> I'm finding it dismayingly common that servers don't give flag changes +> (i.e. an untagged FETCH response with FLAGS) on a NOOP. Some of them don't +> support IDLE, or don't give flag changes on IDLE either. At least some of +> the servers do support CONDSTORE though. +> +> So I was hoping to mitigate the whole mess by polling for HIGHESTMODSEQ +> changes on CONDSTORE servers and then doing a FETCH CHANGEDSINCE for +> mailboxes with new highest modification sequences. For mailboxes that I'm +> not SELECTed on, it's an easy STATUS HIGHESTMODSEQ command. I can also do +> it on SELECTed mailboxes too, though RFC 3501 says I "SHOULD NOT" do that +> and RFC 4551 doesn't update that recommendation. +> +> What's the conventional wisdom on solving this problem from the client +> side in a generic fashion? My inclination is to just replace my NOOP +> polling with STATUS on servers that support CONDSTORE. +> +> Ian +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22682.mbox:2,S new file mode 100644 index 00000000..136ba3ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22682.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From slusarz at curecanti.org Wed Mar 27 13:04:05 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + + + +Message-ID: <20130327140405.Horde.xVBCOb0icPn4imuUgPQweQ2@bigworm.curecanti.org> + +Quoting Alexey Melnikov : + +> On 26 Mar 2013, at 23:03, Brandon Long wrote: +> +>> And that limit is advertised via EHLO at SMTP time, but there's no +>> mechanism for doing that with IMAP. +> +> Let's standardize a way to advertise such limit. I might have use +> for it as well. + +Throwing out another idea: What about updating LITERAL+ and explicitly +excluding its usage with APPEND. IMAP already has a mechanism for +rejecting overly large appends - NO response to APPEND command +continuation request - so would be nice to leverage this feature +instead of adding a new one. + +Regardless... it probably makes sense for any server to return the +LIMIT response code in this situation since this is a textbook example +of an "operation [that] ran up against an implementation limit of some +kind". + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22688.mbox:2,S new file mode 100644 index 00000000..116c0000 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22688.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From dave at cridland.net Tue Jan 15 04:42:39 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Is there some way to detect servers which + automatically add sent messages to the Sent mailbox? +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + + <1358168208.10326.16.camel@innu> + + + <1358219317.28560.140661177648789.4B8BC9F9@webmail.messagingengine.com> + +Message-ID: + +Here's my problem with IMAP based submission. + +I do not want a two-tier internet. + +I do not want to have one set of protocols for simple home clients and one +set for enterprise, military and other more involved cases. Aside from +anything else, the number of complaints that the IETF protocol suite does +not do "X" that Exchange etc do cannot possibly go down as a result, and +that's not good for those of us in the open standards camp. + +Equally, as a client author, I just don't see a problem with opening +another socket and speaking ESMTP to a submission server. It's just not a +problem for me. The hardest thing about it is discovery, and that's a +problem that's really easy to solve. + +As I say, grab a time machine and make this proposal back in 1980, by all +means - that was the time to do it. Now? Too late to close the stable door +- the horse has not only bolted, it's taken a train which has left the +station. + +I appreciate that if you're only interested in the simplest cases, an IMAP +SUBMIT command looks like a simple win. But you're winning what? Saving a +connection, making client config a little simpler. In practise, I think +clients will submit over a distinct connection, so it's not clear that a +connection is actually saved - clients could equally maintain a submission +connection too, mind, and we could make that easier. + +As for configuration, that needs solving by discovery, and we're basically +there with the SRV record spec. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22697.mbox:2,S new file mode 100644 index 00000000..ef8822e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22697.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From slusarz at curecanti.org Fri Dec 28 10:27:25 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +In-Reply-To: +References: +Message-ID: <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + +Quoting Jan Kundr?t : + +> Hi, +> I've received a report that Courier 4.5.0 sometimes doesn't return +> UIDNEXT when syncing a mailbox, violating RFC 3501. Trojita used to +> hit an assert in such case which was clearly my bug. This has now +> been fixed. + +Courier definitely does this, and it is not against spec. From RFC 3501: + + OK [UIDNEXT ] + The next unique identifier value. Refer to section + 2.3.1.1 for more information. If this is missing, + the client can not make any assumptions about the + next unique identifier value. + +For cache purposes, you can workaround a missing UIDNEXT response by +doing a 'UID FETCH * (UID)' in the mailbox. For empty mailboxes, use +the returned UID value (which is defined as the UIDNEXT value). +Otherwise, you can add 1 to the returned value and use this as the +UIDNEXT-ish value. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22701.mbox:2,S new file mode 100644 index 00000000..9a783f4c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22701.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Wed Nov 21 17:59:57 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> +Message-ID: + +On 22.11.2012, at 3.36, Michael M Slusarz wrote: + +> However, I believe Timo has indicated that it is potentially a performance win (although he is discussing in a slightly different context): + +It is useful for Dovecot internally, so I'll implement the core functionality in any case. Whether it's useful to expose to IMAP clients, I haven't spent much time on wondering about yet. You said pipelining isn't an issue, so what's really the difference between: + +C: a suspend +S: a OK [resume blah] + +vs. + +C: a cmd1 +C: b cmd2 +C: c cmd3 +S: a ok 1 +S: b ok 2 +S: c ok 3 + +In both cases you send data to server, and you receive data from server. In pretty much all cases those replies will be exactly the same. You don't need to even parse it. Just remember the original replies and their byte count, and see if the same reply is received the next time you send the same commands. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22707.mbox:2,S new file mode 100644 index 00000000..91330052 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22707.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Tue Oct 30 10:37:53 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] rfc-5258 LIST Command Extensions +In-Reply-To: <508841A2.4010602@1und1.de> +References: <508841A2.4010602@1und1.de> +Message-ID: <26B31F64-2066-43C7-B228-977ABE9AB695@iki.fi> + +On 24.10.2012, at 22.29, Thomas Dressler wrote: + +> i am a litle bit confused about some examples in rfc-5258 (page 17): +> C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*" +> S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED")) +.. +> S: D03 OK done +> +> baz2 is returned, and baz2 is not supscribed. + +I don't think it should have been included. It's not entirely wrong for the server to do it, but it's unnecessary when listing a "*". When listing "%" it would have been necessary, otherwise the client wouldn't have known of its children. + +> i miss the following response: +> * LIST (\NonExistent) "/" qux2 ("CHILDINFO" ("SUBSCRIBED")) + +This would also need to be returned for %, but for * it's optional (and better if not returned). + +> in wich situations should "LIST (RECURSIVEMATCH SUBSCRIBED)" return an mailbox, +> which is not subscribed? + +When the pattern matches an unsubscribed mailbox, which has subscribed children that don't match the pattern. That's the optimal case. Servers can somewhat easily optimize the % and * cases, but for others it would pretty much require to save the results in a tree structure and based on that figure out which nodes to return to client. If that's too much work, I think it's okay for the server to just return more than necessary (Dovecot does that with some settings). + +> are there some rfc-conform implementations, for testing/orientating? + +I think Dovecot v2.1 returns everything optimally with Maildir backend. See also imaptest's listext test: http://hg.dovecot.org/imaptest/file/62ac822588f0/src/tests/listext + +> the second example in rfc-5819 is an invalid commandline (there must be an SP before mailbox): +> C: A02 LIST (SUBSCRIBED RECURSIVEMATCH)"" % RETURN (STATUS (MESSAGES)) + +You could report this as RFC errata, and maybe the example change also. diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22719.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22719.mbox:2,S new file mode 100644 index 00000000..c5b1de0f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22719.mbox:2,S @@ -0,0 +1,138 @@ +MBOX-Line: From imap at maclean.com Wed Aug 22 07:44:30 2012 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IMAP part numbering corner case +Message-ID: + +In a communication on this mailing list of 24-Jan-2011, Mark Crispin +wrote: "For all body parts that are not children of a MULTIPART, the +'MIME' specifier returns the empty string (not NIL)." At the time, I +fixed my server to comply with this. I think it would be no bad +thing if "MIME" meant get the MIME headers (and only MIME headers) +for any old part but that seems clearly not the intention (and not +the way that most servers have it implemented) so I am inclined to +stick with this rule. + +Pete Maclean + +At 05:20 PM 8/20/2012, Timo Sirainen wrote: +>I think this is somewhat ambiguous.. Servers probably should do what +>you suggest (I changed mine to do it it again, only a few days of +>not doing it), but then again clients shouldn't rely on it, since +>some servers are known not to allow it (UW-IMAP at least). +> +>Somewhat related to this, I've been wondering about adding optional +>levels of testing to imaptest, where by default it tests only how +>all the servers should really behave, and with more options it could +>test some more strict features that maybe aren't really so relevant +>anymore (e.g. substring searches). +> +>On 18.8.2012, at 3.13, Philip Guenther wrote: +> +> > On Fri, 17 Aug 2012, Timo Sirainen wrote: +> >> On 17.8.2012, at 8.16, Philip Guenther wrote: +> >>> On Fri, 17 Aug 2012, Timo Sirainen wrote: +> >>> ... +> >>>> Anyway, [1.MIME] isn't a valid request in Joshua's test mail. +> >>> +> >>> Chapter and verse, please? +> >>> +> >>> (There are specific restrictions on when HEADER and TEXT are valid, +> >>> but no such restrictions are specified for the MIME part specifier...) +> >> +> >> Well, I'm not sure if it's really a BAD-type of invalid, but [x.MIME] +> >> refers to the part's MIME headers, and if the parent isn't a multipart, +> >> there are no MIME headers, so the proper result is empty. +> > +> > Well, RFC 3501 says: +> > The MIME part specifier refers to the [MIME-IMB] header for +> > this part. +> > +> > [MIME-IMB] is a reference to RFC 2045. That RFC doesn't define "header" +> > itself, but does describe headers on not just body parts but entities: +> > +> > 2.4. Entity +> > ... +> > <...> Any sort of field may be present in the header of an entity, +> > but only those fields whose names begin with "content-" actually have +> > any MIME-related meaning. Note that this does NOT imply thay they +> > have no meaning at all -- an entity that is also a message has non- +> > MIME header fields whose meanings are defined by RFC 822. +> > +> > That implies to me that "header" doesn't necessarily mean "header on body +> > part". +> > +> > Also, RFC 3501 refers to [MIME-IMB] header fields in the description of +> > the BODYSTRUCTURE fetch item, wherein message/rfc822 parts do have their +> > header parsed to fill in the various fields. +> > +> > +> > So, I would argue that RFC 3501 does specify that .MIME work on all parts +> > and, in the particular case of message/rfc822 part, is equivalent to +> > asking for HEADER one level higher. +> > +> > +> > Philip Guenther +> > +> > +> > (In case that last "one level higher" doesn't make sense, here's a longer +> > example: +> > +> > ------------------------------------------------------ +> > Date: Fri, 01 Jan 2010 12:00 -0500 +> > To: x@x.x +> > From: y@y.y +> > Subject: download on demand problem +> > MIME-Version: 1.0 +> > Content-Type: message/rfc822 +> > +> > Date: Fri, 01 Jan 2012 12:00 -0500 +> > To: y@y.y +> > From: x@x.x +> > Subject: Blast from the future +> > MIME-Version:1.0 +> > Content-Type: multipart/mixed; boundary=foo +> > +> > --foo +> > +> > Do you know what to do when you see this message? +> > +> > --foo +> > Content-Type: text/html +> > +> > Blah blah blah +> > --foo +> > Content-Type: multipart/digest; boundary=bar +> > +> > --bar +> > +> > Subject: blah +> > Foo: bar +> > +> > sdlfkj +> > sdlfkj +> > sdlfkj +> > +> > --bar-- +> > +> > --foo-- +> > ------------------------------------------------------ +> > +> > In that, [1.3.1] is the digest message, starting at the "Subject: blah" +> > line and continuing through the three "sdlfkj" lines. [1.3.1.1] is just +> > the three "sdlfkj" lines. [1.3.1.1.MIME] is the same as [1.3.1.HEADER], +> > which is the header of the digest message, being "Subject: blah", "Foo: +> > bar", and the blank line after.) +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> > +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22726.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22726.mbox:2,S new file mode 100644 index 00000000..3e5b1a79 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22726.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Jun 22 12:08:15 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BINARY + NOTIFY +In-Reply-To: <06330C04-8714-43B6-B693-0493315B63B9@iki.fi> +References: <1340151854.5967.57.camel@hurina> <4FE454E7.4080001@isode.com> + <06330C04-8714-43B6-B693-0493315B63B9@iki.fi> +Message-ID: <4FE4C29F.7090200@isode.com> + +On 22/06/2012 18:57, Timo Sirainen wrote: +> On 22.6.2012, at 14.20, Alexey Melnikov wrote: +> +>> On 20/06/2012 01:24, Timo Sirainen wrote: +>>>> If the server does not know how to decode the section's CTE, it +>>>> MUST fail the request and issue a "NO" response that contains +>>>> the "UNKNOWN-CTE" extended response code. +>>> Looking at Cyrus code it appears to abort the FETCH immediately if this +>>> situation happens and [UNKNOWN-CTE] is returned as tagged reply. +>>> +>>> Now, what to do when NOTIFY's fetch-att list includes BINARY[part] and +>>> it can't be decoded? Send an untagged NO [UNKNOWN-CTE] after the FETCH +>>> reply? What if BINARY[part] is the only requested fetch-att and it can't +>>> be fetched? The server can't send an empty FETCH reply. +>> Can you avoid sending the FETCH reply in such cases? +> Yes, but would I still send * NO [UNKNOWN-CTE] ? :) + +Sure, why not? (Although too bad it doesn't tell which messages caused +UNKNOWN-CTE...) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22729.mbox:2,S new file mode 100644 index 00000000..dc2a0714 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22729.mbox:2,S @@ -0,0 +1,85 @@ +MBOX-Line: From bill.shannon at ymail.com Sat May 12 11:18:16 2012 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Re: partial fetch of BODY data +In-Reply-To: <2A0907F0-BF62-4E83-B3BE-0957A736A820@iki.fi> +References: <4FAE0F7F.9000709@ymail.com> + <2A0907F0-BF62-4E83-B3BE-0957A736A820@iki.fi> +Message-ID: <4FAEA968.4000203@ymail.com> + +Thanks for the clarifications. Much of that wasn't clear from the spec. + +And just to confirm, a server should never return "NIL" for a BODY +content, even if I attempt to read way past the end of the content, +correct? At least, as long as the message exists. It might return +NIL if the message has been expunged, right? + +Timo Sirainen wrote on 05/12/2012 01:42 AM: +> On 12.5.2012, at 10.21, Bill Shannon wrote: +> +>> The spec says of a FETCH BODY request: +>> +>> Any partial fetch that attempts to read beyond the end of the +>> text is truncated as appropriate. A partial fetch that starts +>> at octet 0 is returned as a partial fetch, even if this +>> truncation happened. +> +> This is mainly about how the server is supposed to reply to it, i.e. it should still give BODY[]<0> reply instead of BODY[]. All partial replies may be truncated, this just tries to clarify that offset=0 shouldn't be treated as a special case. +> +>> The spec says of a FETCH BODY response: +>> +>> If the origin octet is specified, this string is a substring of +>> the entire body contents, starting at that origin octet. This +>> means that BODY[]<0> MAY be truncated, but BODY[] is NEVER +>> truncated. +> +> This is an instruction for client implementors about what they may assume about the replies. +> +>> It's not clear whether the truncation being talked about is the same in +>> both cases. If it were only allowed to truncate the response at the end +>> of the data, "BODY[]" would be allowed to be truncated as well, so it +>> seems that it must be talking about truncation for some other reason. +> +> Truncation means that a partial fetch ended before the requested number of bytes. BODY[] always requests all bytes. +> +>> If I do "FETCH 2 (BODY[]<0.16384>)" and the server responds +>> "2 FETCH (BODY[]<0> {2817}", can I assume that that's the end +>> of the data or not? +> +> If the client remembers that it fetched 16384 bytes (or anything more than 2817 bytes) it can assume it's at end of data. +> +>> What if I request "FETCH 2 (BODY[]<16384.16384>)" and the response is +>> "2 FETCH (BODY[]<16384> {2817}"? Is that a different case than above, +>> since the request doesn't start at octet 0? +> +> If this was the same mail as above then the server's reply would be an empty string. But assuming a different mail then the message's size can be assumed to be 19201 bytes. +> +>> If I do "FETCH 2 (BODY[]<2817.16384>)" and the server responds +>> "2 FETCH (BODY[]<2817> {0}" I know I'm at the end of the data. +> +> Yes. The reply may also be "" instead of {0}. +> +>> Is +>> "2 FETCH (BODY[]<2817> NIL)" semantically equivalent? The spec says: +>> +>> ... If the starting octet is beyond +>> the end of the text, an empty string is returned. +>> +>> Is "NIL" equivalent to an empty string in this case? +> +> No. +> +>> It would appear not, +>> according to this part of the spec: +>> +>> The special form "NIL" represents the non-existence of a particular +>> data item that is represented as a string or parenthesized list, as +>> distinct from the empty string "" or the empty parenthesized list (). +>> +>> Even though the syntax specifies "nstring", is "NIL" a valid response +>> in this case? +> +> A well behaving server should never return NIL to any replies. But many servers do if the fetched message has already been expunged by another session. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22732.mbox:2,S new file mode 100644 index 00000000..c29f25e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22732.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From tonio at ngyn.org Sun Apr 15 00:40:46 2012 +To: imap-protocol@u.washington.edu +From: Antoine Nguyen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Unseen messages question +Message-ID: <4F8A7B7E.9080709@ngyn.org> + +Hi list, + +I'm trying to understand what is the more efficient way to maintain the +number of unseen messages of the currently selected mailbox. RFC3501 says a +client must not issue a STATUS command to a selected mailbox and that +information sent by a SELECT is enough. + +My current idea follows these steps : +* Issue a STATUS before the mailbox is selected => I know how many unseen +messages it contains +* SELECT the mailbox => I got the eventual first unseen message in this +mailbox but I don't understand how this info can be useful +* Maintain the unseen counter (on client side) according to what the user do +* Send a NOOP command every X minutes and look at the RECENT response to +see if there are new messages + +I think it works pretty well when the mailbox is opened only once. Let's +imagine this mailbox is opened twice, by different clients. If one client +marks a message as \Seen, how can the second client know about this change? + +Thanks for your help, + +Antoine Nguyen +http://modoboa.org/ + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22743.mbox:2,S new file mode 100644 index 00000000..a72b36c0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22743.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From dave at cridland.net Mon Mar 19 15:52:38 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <47A9743C-D168-408A-ADBB-7E0B6B562B90@mac.com> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195427.057549@puncture> + <47A9743C-D168-408A-ADBB-7E0B6B562B90@mac.com> +Message-ID: <17068.1332197558.187335@puncture> + +On Mon Mar 19 22:27:23 2012, PA wrote: +> It lists names with more than one hundred messages. +> +> What do you see as being problematic with that approach? + +Just not entirely sure you want to make these people's email +addresses that easily visible - but I don't suppose that spammers are +likely to write IMAP parser to get at it. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22749.mbox:2,S new file mode 100644 index 00000000..899fb1ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22749.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From derek.diget+imap-protocol at wmich.edu Fri Jan 13 08:36:12 2012 +To: imap-protocol@u.washington.edu +From: Derek Diget +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] which IMAP servers support support SASL + authorization vs. authentication ID? +In-Reply-To: +References: +Message-ID: + + +On Jan 13, 2012 at 07:44 -0800, Mark Crispin wrote: +=>I have been tasked to identify which IMAP servers support the SASL concept +=>of authorization vs. authentication ID and if it is suitable to allow +=>impersonation; that is to proxy to various user accounts. +=> +=>I have the following data: +=> +=>Panda IMAP: Yes +=> ;; Authenticated userids in system group "mailadm" may authorize +=> ;; to any other userid. +=> +=>UW IMAP: Yes, in newer versions +=> ;; Same as Panda +=> +=> +=>Probably yes, but not sure and need details: +=> +=>Cyrus: +=>Dovecot: +=>Communigate Pro: +=>Sendmail: +=>Zimbra: + +Non-Authoritative answer as I am just a admin/user, but + +Sun's Communication Suite, now know as Oracle Communications Messaging +Exchange Server seems to per + + + + +(We use the non-standard PROXYAUTH command with the imapsync perl script +for mailbox migrations, etc.) + +-- +*********************************************************************** +Derek Diget Office of Information Technology +Western Michigan University - Kalamazoo Michigan USA - www.wmich.edu/ +*********************************************************************** + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22752.mbox:2,S new file mode 100644 index 00000000..1f947f67 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22752.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From petite_abeille at mac.com Thu Dec 8 13:09:21 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] notification of deleted/expunged messages? +In-Reply-To: +References: + <80779123-5707-46B5-80E9-F90412A013BD@iki.fi> + <1323259286.1981.140661008567313@webmail.messagingengine.com> + + <8A9E65D1-7495-41F8-9067-4E07D89C3192@mac.com> + +Message-ID: + + +On Dec 8, 2011, at 9:52 PM, Mark Crispin wrote: + +> I assume that this is something in an IMAP server? That is, the server +> always shows 1000 messages, but from time to time messages vanish in the +> existing sequence space, and new messages take their place at the top of +> the space? + +Exactly. + +> So, if the bottommost three messages vanish, and are replaced by three new +> messages, the server sequence on the EXPUNGE-valid point will be: +> * 1 EXPUNGE +> * 1 EXPUNGE +> * 1 EXPUNGE +> * 1000 EXISTS +> +> Remember that the EXPUNGE response has immediate effect on the sequence +> space. If your server transmits: +> * 1 EXPUNGE +> * 2 EXPUNGE +> * 3 EXPUNGE +> that would remove original messages 1,3,5, not 1:3. +> +> However, note that: +> * 3 EXPUNGE +> * 2 EXPUNGE +> * 1 EXPUNGE +> is exactly equivalent to: +> * 1 EXPUNGE +> * 1 EXPUNGE +> * 1 EXPUNGE + +Good point. So exactly as, say, array/list manipulation: either remove the first element and shift the rest one position down, or remove it from the top. + +> If you understand why this is the case, then you can be confident that you +> understand how sequence numbers work. + +I think I got the gist of it. Thanks for the explanation. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22756.mbox:2,S new file mode 100644 index 00000000..8c603240 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22756.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 1 04:50:00 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Cyrus and RFC5255 +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org><75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> + <1320102709.31835.140660992941501@webmail.messagingengine.com> + +Message-ID: <1320148200.20407.140660993144221@webmail.messagingengine.com> + + + +On Monday, October 31, 2011 4:37 PM, "Mark Crispin" wrote: +> On Tue, 1 Nov 2011, Bron Gondwana wrote: +> >> FWIW, I always considered the implementation of string searching to be +> >> implementation dependent. The only requirement was that simple +> >> case-independent substring is recognized as compliant. I never intended +> >> that a server be forbidden from implementing a smarter search (e.g., +> >> fuzzy) that returns more matching messages. +> > Interesting. That makes me feel a bit more comfortable about ignoring the +> > full RFC 5051 i;unicode-casemap on searches, and only using it for sort. +> +> You can not do that and claim compliance with RFC 5255. + +I'll probably make it a skanky toggle then. + +> RFC 5255 explicitly requires that you apply i;unicode-casemap in searches +> as part of level 1 compliance. + +The response when I mentioned it to our project manager was "it's often nice +not to worry about a vs ? when searching - and have it find both". + +But that's fuzzy-matching for you. Next thing it will be soundex searches, +and then we wind up with google style "magic". + +> If you do not claim RFC 5255 compliance then there is no particular reason +> to implement i;unicode-casemap at all. +> +> However, as far as I know, however, Cyrus always implemented a variant of +> it from its inception; so you would actually be removing an aspect of it +> that was in there from the onset. That is probably not a good idea. + +I'd rather not break our users' expectations too fast. People don't like +change much. Hence the toggle. Probably with the bogus default too. Maybe +"rfc5255_strict_search: no" or something. If you don't turn it on, then an +extra dicritical stripping pass and lowercasing pass gets run on the final +rfc5255 compatible data before searching it. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22759.mbox:2,S new file mode 100644 index 00000000..f6431073 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22759.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mark-clist at npsl.co.uk Thu Oct 13 07:49:55 2011 +To: imap-protocol@u.washington.edu +From: Mark Weaver +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Outlook Express issue +Message-ID: <4E96FA93.9000902@npsl.co.uk> + +I've had an issue reported against an IMAP server that I've written +where OE thinks it has a deleted message that's not actually deleted. +I've got a log file from the client, the relevant bits are: + +IMAP: 15:01:29 [tx] domn UID FETCH 1:356478 (UID FLAGS) +... +IMAP: 15:01:35 [rx] * 4504 FETCH (UID 356256 FLAGS ()) +... +IMAP: 15:01:42 [tx] h7mh UID STORE 356256 -FLAGS.SILENT (\Deleted) +IMAP: 15:01:43 [rx] h7mh OK STORE completed + +i.e. it's trying to remove a \Deleted flag that isn't set on the +message, which I guess means that locally it thinks that it's deleted +and it hasn't picked up the flags from the fetch response. + +I can't see anything wrong with the server responses, so it looks to me +like OE is incapable of synchronising flags properly. Is this known +about/something that can be worked around, or have I just got something +in the output format? + +Thanks, + +Mark + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22762.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22762.mbox:2,S new file mode 100644 index 00000000..6d948e29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22762.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From zoltans at geograph.co.za Tue Aug 23 00:16:17 2011 +To: imap-protocol@u.washington.edu +From: Zoltan Szecsei +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] IMAP 4 extensions for Addressbook +Message-ID: <4E5353C1.1020008@geograph.co.za> + +Hi All, +New to this list, and have had a brief read of Mark Crispin's "where to +start", plus tried a few searches on "address book", "contacts" etc, but +have not, to my surprise, come up with any past discussions on my thoughts. +It must be a 'keyword' error on my part, but I'm sure a few of you will +correct me, as I really cannot believe that the idea of storing address +books or contact lists on an IMAP server, has not yet been addressed. + +So, +Can anyone tell me how to (or why to not ask) go about getting +extensions to IMAP, so that address/contacts lists (and maybe even +calendars/diaries/appointments), can be uniformly stored on an IMAP +server, so that all the email clients can write extensions for +themselves to be able to use this central storage. There could be a +server wide one, plus personal ones per client. + +I am driven mad by the fact that Thunderbird keeps my address book local +on my PC. +I have set up an IMAP server in our office, and access my emails from +various PCs in the office, plus from home and other places, and still +also from my iPhone. +Yep, where is my address book? + +I cannot be alone in this frustration. + +Once IMAP has set out specifications for this mechanism, email clients +can then, at their own choice and pace, choose to use it. +It makes far more sense to me to solve the problem at the common point +of entry, than to have a million different email clients inventing this +wheel individually. + +I'd be grateful for pointers on past discussions, or better still, some +support for getting this off the ground. + +Kind regards, +Zoltan + + +-- + +=========================================== +Zoltan Szecsei PrGISc [PGP0031] +Geograph (Pty) Ltd. +P.O. Box 7, Muizenberg 7950, South Africa. + +65 Main Road, Muizenberg 7945 +Western Cape, South Africa. + +34? 6'16.35"S 18?28'5.62"E + +Tel: +27-21-7884897 Mobile: +27-83-6004028 +Fax: +27-86-6115323 www.geograph.co.za +=========================================== + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22765.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22765.mbox:2,S new file mode 100644 index 00000000..6a6b1dda --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22765.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From rfs9999 at earthlink.net Fri Jul 29 21:04:51 2011 +To: imap-protocol@u.washington.edu +From: Rick Sanders +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Determining the mailbox hierarchy prefix when + NAMESPACE is not supported +In-Reply-To: +References: <4DEBB242.2090200@BusCom.net> + +Message-ID: <4E3382E3.3010509@earthlink.net> + + +Is there a way to reliably figure out the mailbox hierarchy prefix when +an IMAP server does not support the NAMESPACE command? + +Thanks, +Rick + diff --git a/demo/ermis-f/imap-protocol/cur/1600095053.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095053.22768.mbox:2,S new file mode 100644 index 00000000..d23dc71c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095053.22768.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From Lynn at BusCom.net Sun Jun 5 09:43:46 2011 +To: imap-protocol@u.washington.edu +From: "Lynn W. Taylor" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +Message-ID: <4DEBB242.2090200@BusCom.net> + +I need to implement IMAP as part of an existing project, and I need a +tiny bit of practical guidance. + +Simply adopting existing code isn't really an option, so I'll be +implementing from scratch. + +IMAP has a lot of features. Which features should I implement first, +and at what point do I have something to start testing? + +Thanks in advance for any insight. + +-- Lynn + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22595.mbox:2,S new file mode 100644 index 00000000..ca7490bf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22595.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From ladar at lavabitllc.com Wed Mar 11 08:00:06 2015 +To: imap-protocol@u.washington.edu +From: Ladar Levison +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <6506.1425915329@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> + <54FBF289.3010202@psaux.com> <7164.1425831184@parc.com> <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> +Message-ID: <55005876.4070406@lavabitllc.com> + + + +On 3/9/2015 10:35 AM, Bill Janssen wrote: +> I'm guessing that's why Oracle has a sync protocol instead of a remote +> DB protocol. The mobile client works against an on-phone copy of the +> DB, using a variant of Oracle's full SQL -- the documentation says it +> is SQLite compatible -- and then there's a minimal sync protocol which +> keeps that in step with the full DB back on the server. Interesting +> question as to whether the on-phone copy is a subset or not. + + +On 3/8/2015 11:13 AM, Bill Janssen wrote: +> And let the DB guys solve the intermittent connection problems :-). +> Oracle, for instance, has a "Mobile Server" product that synchonizes a +> local cache on a mobile device with a remote Oracle DB, including SSL +> encryption on the sync connection, and data compression. +> + +Bill, how much is Larry paying you? + +It might be fun to submit an RFC draft that "mandates" the use of +something like the Oracle Mobile Server. Or heck, requires everyone +install Panagon on their machine to access their email - just to hear +the groans. If carrier pidgeons can make it past the rfc-editor then why +not? + +:) + +On a slightly more serious note, Dovecot has a protocol for syncing +message stores, but I haven't studied it closely yet. + +L~ + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 836 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22641.mbox:2,S new file mode 100644 index 00000000..11b3b897 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22641.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From brong at fastmail.fm Thu Mar 20 11:48:51 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> +Message-ID: <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> + +On Thu, Mar 20, 2014, at 10:06 PM, Arnt Gulbrandsen wrote: +> Is that atomicity really required? And if it is, I don't think the +> three-step submit process gives you atomicity. +> +> I like it in general, but I'd prefer a two- or even one-step process. +> Two-step could be "upload to outbox; submit from outbox". You can do the +> atomicity thing by saying that servers SHOULD lock a message in the outbox +> while it's being submitted, and refuse to resubmit. + +I think requiring the server to set a flag (system flag \Sent would be +ideal, but I'm not sure that we can ever create a new one without breaking +clients...) + +I agree that two step is probably enough - one for upload, and one for +"send existing message". + +> Personally I don't think it's worth it. It's better to have simplicity, +> even at the cost of the occasional duplicated message. + +I think there's a "simplicity vs clarity" issue here. It's much more simple +for a client to be able to know that a message was sent without having to +set a flag itself. We definitely need the interlock to err on the side of +sending twice than not at all, but having a flag that says "this message +has been sent" is valuable - and having the server set is is actually MORE +simple than having the client need to set it after getting send confirmation +from the server. + +IMAP hasn't had anything which makes a change to the status of a message +silently before - because the only editable parts have been flags, +annotations and of course messages themselves, which can only follow one +real state transition series (now with a single branch) + +NONEXISTENT => CREATED (with F/UVAD/U triplet) => EXPUNGED + +And now that MOVE exists, there's a "MOVED" path between CREATED and EXPUNGED, +though you can still just model that as two separate messages having +concatenated lifetimes. Also between CREATED and EXPUNGED there is the +possibility of setting or clearing flags (including \Deleted) and also +in a modern enough server setting, altering or clearing message annotations. + +That's it. + +But now we're proposing a state transition from "UNSENT" to "SENT" - and I +strongly believe that rates a readable change on the server, either a flag +or a standard annotation name. All I think it needs is a transition from +"no flag present" to "\Sent" flag present, or $Sent if \Sent is considered +too impossible to add at this stage of the game. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22682.mbox:2,S new file mode 100644 index 00000000..48893a12 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22682.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From blong at google.com Wed Mar 27 13:33:12 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <20130327140405.Horde.xVBCOb0icPn4imuUgPQweQ2@bigworm.curecanti.org> +References: + + + + <20130327140405.Horde.xVBCOb0icPn4imuUgPQweQ2@bigworm.curecanti.org> +Message-ID: + +a append inbox {60000000} +a BAD [ALERT] Message too large. +http://support.google.com/mail/bin/answer.py?answer=8770 + +Which goes to that other issue between the updated responses codes not +being backward compatible with ALERT... which I guess I can just ignore +since most clients ignore ALERT anyways. + +Brandon + + +On Wed, Mar 27, 2013 at 1:04 PM, Michael M Slusarz wrote: + +> Quoting Alexey Melnikov : +> +> On 26 Mar 2013, at 23:03, Brandon Long wrote: +>> +>> And that limit is advertised via EHLO at SMTP time, but there's no +>>> mechanism for doing that with IMAP. +>>> +>> +>> Let's standardize a way to advertise such limit. I might have use for it +>> as well. +>> +> +> Throwing out another idea: What about updating LITERAL+ and explicitly +> excluding its usage with APPEND. IMAP already has a mechanism for +> rejecting overly large appends - NO response to APPEND command continuation +> request - so would be nice to leverage this feature instead of adding a new +> one. +> +> Regardless... it probably makes sense for any server to return the LIMIT +> response code in this situation since this is a textbook example of an +> "operation [that] ran up against an implementation limit of some kind". +> +> michael +> +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22688.mbox:2,S new file mode 100644 index 00000000..afe42511 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22688.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From jkt at flaska.net Tue Jan 15 08:32:05 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Is there some way to detect servers which + =?iso-8859-1?Q?automatically_add_sent_messages_to_the_Sent_mailbox=3F?= +In-Reply-To: +References: <647C20F7-BB5D-47DD-BC89-3B0D903D2900@apple.com> + <7B9C4CD5-75ED-46F7-8AE4-C3415918E905@apple.com> + <83A6F18656334E6CA23106F9DB1C8EC1@gmail.com> + + <1358152426.27730.105.camel@innu> + <29D96F78-FC57-4AF5-8177-C71638D5DEB4@apple.com> + + <887FDCAF-16E0-4030-A4A3-1BA58554F038@apple.com> + <1358163144.24711.140661177295453.76384B37@webmail.messagingengine.com> + + <1358168208.10326.16.camel@innu> + + + <1358219317.28560.140661177648789.4B8BC9F9@webmail.messagingengine.com> + + +Message-ID: <466e43ea-d3ce-46c2-8b72-b246fd4cca94@flaska.net> + +On Tuesday, 15 January 2013 13:42:39 CEST, Dave Cridland wrote: +> I do not want to have one set of protocols for simple home clients and one +> set for enterprise, military and other more involved cases. + +This makes sense -- which is why I made sure that the submission draft has the same supported features as the submission over ESMTP and that it includes provisions for future extensions. If the submission-over-IMAP gets adapted, I don't see why it shall be any second-grade citizen compared to the submission over ESMTP. + +Yes, making sure that it stays up-to-date will require porting of the future ESMTP extensions -- but as someone who has done that for all of the existing ones, I don't envision that this will take much effort. + +So, in short -- ESMTP has certain features which are important for its use case. What I claim is that only a subset of these are relevant for submission, and that this subset have been integrated into the proposal. I don't see a problem in continuing doing that in future. + +Do you still see a problem in there? + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22697.mbox:2,S new file mode 100644 index 00000000..33b102a8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22697.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From brong at fastmail.fm Fri Dec 28 11:33:10 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +In-Reply-To: <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> +Message-ID: <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> + +On Fri, Dec 28, 2012, at 07:27 PM, Michael M Slusarz wrote: +> Quoting Jan Kundr?t : +> +> > Hi, +> > I've received a report that Courier 4.5.0 sometimes doesn't return +> > UIDNEXT when syncing a mailbox, violating RFC 3501. Trojita used to +> > hit an assert in such case which was clearly my bug. This has now +> > been fixed. +> +> Courier definitely does this, and it is not against spec. From RFC 3501: +> +> OK [UIDNEXT ] +> The next unique identifier value. Refer to section +> 2.3.1.1 for more information. If this is missing, +> the client can not make any assumptions about the +> next unique identifier value. + +And yet: + +B. Changes from RFC 2060 + + 34) Clarify UNSEEN, PERMANENTFLAGS, UIDVALIDITY, and UIDNEXT + responses in SELECT and EXAMINE. They are required now, but weren't + in older versions. + +Sounds like it's supposed to be there in 3501. Also listed with REQUIRED. + +> For cache purposes, you can workaround a missing UIDNEXT response by +> doing a 'UID FETCH * (UID)' in the mailbox. + +Ouch. + +> For empty mailboxes, use +> the returned UID value (which is defined as the UIDNEXT value). +> Otherwise, you can add 1 to the returned value and use this as the +> UIDNEXT-ish value. + +The more interesting question is: what do you need to know it for anyway? + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22701.mbox:2,S new file mode 100644 index 00000000..6a101df8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22701.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From blong at google.com Thu Nov 22 01:08:01 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> +Message-ID: + +On Wed, Nov 21, 2012 at 5:36 PM, Michael M Slusarz wrote: + +> Quoting Brandon Long : +> +> Have you considered not re-establishing a connection every 10s? This is a +>> connected protocol, not http. +>> +> +> From a webmail perspective: if you could tell me how to maintain a +> consistent IMAP connection using nothing more than current IMAP commands +> and an out-of-the box HTTP server, I would be ecstatic. That's what users +> demand our software works with, so that's what we need to code for. +> +> I don't have the UI information in front of me right now, but a user +> initiating an action every 10 seconds, at least when managing messages in a +> mailbox (loading a message to read, deleting, copying/moving, reporting as +> spam), seems like a reasonable estimate for discussion purposes. That's +> where I got the 10 second value from. +> + +And this seems to imply, to me, that you'd be better off with the +resume/disconnected session stuff from p-imap/lemonade that I pointed to +before. + +After all, you are likely to need to do at least a select of the same +folder for most of those new connections. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22707.mbox:2,S new file mode 100644 index 00000000..a407dfda --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22707.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From bill.shannon at ymail.com Tue Oct 30 15:43:49 2012 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: significance of leading whitespace in RFC 2822 + unstructured headers +In-Reply-To: +References: <508F017B.4000606@ymail.com> + + <508F4486.8060405@ymail.com> + +Message-ID: <50905825.3000709@ymail.com> + +Joe Pallas wrote on 10/30/12 10:09: +> +> On Oct 29, 2012, at 8:07 PM, Bill Shannon wrote: +> +>> One of the reasons I asked here is because of the interaction between +>> the syntax of these header fields and what an IMAP server should do +>> when parsing the header and returning the parsed value. +> +> I would say that you are probably right that servers are not actually obeying the spec but it?s hard to see that it matters. If I ask an IMAP server to fetch ?BODY[HEADER.FIELDS (Subject)]? I don?t get back a parsed value, I get back the entire subject line, including any white space between the colon and the first non-WS character. +> +> The two occasions I can think of where skipping white space in an unstructured header might matter are: +> 1) ENVELOPE, which contains the subject string, and +> 2) SEARCH of the subject string +> +> It appears that many servers will elide leading spaces from the subject in the returned ENVELOPE structure. It also appears that some servers will ignore leading spaces in search strings. At least one server does the former but not the latter. +> +> I can?t imagine relying on the server?s parsing for something like a digital signature. Unless the server is actually modifying the message headers returned by a non-ENVELOPE fetch, though, I don?t think this should be a concern. + +Yes, you can always ask for the raw header line and parse it yourself if the +difference matters to you. I think the mistake was writing a digital +signature spec that depended on the difference, rather than canonicalizing +the data first. We could argue whether such canonicalization should include +just stripping leading and trailing whitespace, or should also include +converting any sequences of whitespace to a single space character. + +It would also be nice if the IMAP spec indicated that these fields are +canonicalized in some (perhaps undefined) way, although without agreeing +on the canonicalization algorithm you still couldn't rely on the data when +computing a digital signature. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22729.mbox:2,S new file mode 100644 index 00000000..c3aaf2f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22729.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From tss at iki.fi Sat May 12 11:22:10 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Re: partial fetch of BODY data +In-Reply-To: <4FAEA968.4000203@ymail.com> +References: <4FAE0F7F.9000709@ymail.com> + <2A0907F0-BF62-4E83-B3BE-0957A736A820@iki.fi> + <4FAEA968.4000203@ymail.com> +Message-ID: <1B388801-696C-4877-B3D3-52C433D6A2D0@iki.fi> + +On 12.5.2012, at 21.18, Bill Shannon wrote: + +> Thanks for the clarifications. Much of that wasn't clear from the spec. +> +> And just to confirm, a server should never return "NIL" for a BODY +> content, even if I attempt to read way past the end of the content, +> correct? + +Correct. + +> At least, as long as the message exists. It might return +> NIL if the message has been expunged, right? + +Right. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22732.mbox:2,S new file mode 100644 index 00000000..c05b8cde --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22732.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From barryleiba at computer.org Sun Apr 15 06:12:47 2012 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Unseen messages question +In-Reply-To: <4F8A7B7E.9080709@ngyn.org> +References: <4F8A7B7E.9080709@ngyn.org> +Message-ID: + +> I'm trying to understand what is the more efficient way to maintain the +> number of unseen messages of the currently selected mailbox. +... +> My current idea follows these steps : +> * Issue a STATUS before the mailbox is selected => ?I know how many unseen +> messages it contains +> * SELECT the mailbox => ?I got the eventual first unseen message in this +> mailbox but I don't understand how this info can be useful +> * Maintain the unseen counter (on client side) according to what the user do +> * Send a NOOP command every X minutes and look at the RECENT response to +> see if there are new messages + +You realize that there's a race condition in that plan, right? If a +new message arrives between the STATUS and SELECT commands, you won't +have it in your unseen count. You could mitigate that by also +considering UIDNEXT, but that still leaves the second-client issue (if +another client makes an existing message seen or unseen between the +commands, you'll still be wrong). + +The usefulness of the "first unseen" number is to allow you to limit +FETCH or SEARCH commands to that. The right way to handle this is to +SELECT the mailbox and use the first-unseen value as bounds for a +FETCH FLAGS command or a SEARCH UNSEEN command. Those will give you +more than just the count -- they'll also give you the message numbers +of all the unseen messages, along with any other information you +choose to collect if you do FETCH (you might also want UIDs, or +whatever). + +Once you have that information, any changes made by new messages or +other clients should come in unsolicited FETCH responses (for flag +changes) and EXISTS responses (for new messages). + +But you might really reconsider the whole client caching model you're +using. If you think that the unseen count alone is sufficiently +useful, maybe your client isn't doing all it could do to take +advantage of what IMAP has to offer. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22743.mbox:2,S new file mode 100644 index 00000000..e49e2610 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22743.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From blong at google.com Mon Mar 19 15:53:08 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <47A9743C-D168-408A-ADBB-7E0B6B562B90@mac.com> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195427.057549@puncture> + <47A9743C-D168-408A-ADBB-7E0B6B562B90@mac.com> +Message-ID: + +On Mon, Mar 19, 2012 at 3:27 PM, PA wrote: + +> +> On Mar 19, 2012, at 11:17 PM, Dave Cridland wrote: +> +> > It works against Polymer. I can read all the mailboxes, and they seem +> reasonable. +> +> Excellent. Thanks for giving it a try. +> +> > I'm not sure that it's a very sensible idea to list all email addresses +> of people who have ever posted as the output of: +> > . LIST "" "names/%" +> > +> > Might want to change that. +> +> The folders are build automatically out of the mail corpus: +> +> http://dev.alt.textdrive.com/browser/Mail/IMAPStore.ddl#L29 +> +> It lists names with more than one hundred messages. +> +> What do you see as being problematic with that approach? + + +Sounds cool, but may have some implications on some clients. There are +some clients which don't support unsubscribing from folders, for instance, +and will happily download all of the mail in those folders, which is +presumably duplicated. That's probably only an issue if this is a general +purpose server to be used for larger installations, though. + +Email addresses are probably good for uniqueness, but may be challenging in +terms of understand-ability, may be challenging for some people to remember +who each address is. + +It might also be good to filter based on things like precedence bulk, or +maybe require at least one message sent to that address as well to. + +Brandon +-- + Brandon Long + Staff Engineer + Gmail Delivery TLM +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22749.mbox:2,S new file mode 100644 index 00000000..e16d9823 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22749.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From dkarp at zimbra.com Fri Jan 13 09:07:15 2012 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] which IMAP servers support support SASL + authorization vs. authentication ID? +In-Reply-To: +References: +Message-ID: <154341216.56862.1326474435819.JavaMail.root@dogfood.zimbra.com> + +> I have been tasked to identify which IMAP servers support the SASL +> concept of authorization vs. authentication ID and if it is suitable +> to allow impersonation; that is to proxy to various user accounts. + +Zimbra supports this. (I won't get into the details of the rules that +govern when a given authzid/authcid pair will work unless you really +care. It can get complicated.) + +- Dan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22752.mbox:2,S new file mode 100644 index 00000000..cb097fa8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22752.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From tss at iki.fi Fri Dec 9 20:46:47 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] LIST reply with trailing separator, once more +Message-ID: <1323492410.15365.102.camel@hurina> + +I'm again cleaning up my LIST handling code and started wondering. Lets +say I have a mailbox: + +a list "" s* +* LIST (\HasNoChildren) "/" "select" +a OK List completed. + +Now, is it correct to reply with b) or with c)? + +b list "" select/* +* LIST (\HasNoChildren) "/" "select/" +b OK List completed. + +c list "" select/* +* LIST (\Noselect \HasNoChildren) "/" "select/" +c OK List completed. + +I'm leaning towards c), because while "select" is a selectable mailbox, +"select/" isn't. + +(Then again, I remember some clients having had some trouble with this +reply, so maybe I'll need to return b) anyway.) + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22756.mbox:2,S new file mode 100644 index 00000000..d98c75a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22756.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From mrc+imap at panda.com Tue Nov 1 09:33:40 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Cyrus and RFC5255 +In-Reply-To: <1320148200.20407.140660993144221@webmail.messagingengine.com> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org><75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> + <1320102709.31835.140660992941501@webmail.messagingengine.com> + + <1320148200.20407.140660993144221@webmail.messagingengine.com> +Message-ID: + +On Tue, 1 Nov 2011, Bron Gondwana wrote: +>> RFC 5255 explicitly requires that you apply i;unicode-casemap in searches +>> as part of level 1 compliance. +> The response when I mentioned it to our project manager was "it's often nice +> not to worry about a vs ? when searching - and have it find both". + +Careful. + +i;unicode-casemap is designed to be a simple collator/comparator that even +a baby programmer can implement correctly. It is not intended to be +something that people can fork off all sorts of random non-interoperable +variants. + +It also formalized, and moderately amended, what Cyrus has done from its +inception in searching Unicode strings. + +You will probably need to define a different comparator for that purpose +(e.g., i;unicode-casemap-ignore-diacriticals). Beyond that, you will +quickly find yourself in a swamp filled with alligators (or crocodiles if +you prefer). Even the modest step of an "ignore-diacriticals" comparator +will get you wet above the knee. + +If you want to get into the type of matching you are talking about, you +will wind up needing to do a full-fledged implementation of i18n collation +and comparison, which more likely that not includes locale sensitivity. +This is not something to be half-assed or hackish on. There are standards +and rules; and in some cases these are enforced in national laws. + +I strongly urge you, BEFORE embarking upon such a project, to get involved +with the various groups involved with i18n collation and comparison and +seek their advice. + +I did not do i;unicode-casemap in a vacuum; I sought their advice and +after their screams of anguished horror, these guys gave good advice which +I took serious and acted upon. One of the things that was important to +them was that, while (reluctantly) accepting the "we need something that +even a baby programmer can implement", they wanted to draw the line and +say "do this, or do it right." + +With this said, I don't particularly object to ignore-diacriticals +searching; but I also note that the concept is locale-dependent. In some +languages, the diacritical form indicates accent or sound; in others it is +a completely unrelated character (and the latter group already is +infuritated by i;unicode-casemap). + +CJK is another part of the swamp. For example, U+5FB0 ? and U+5FB7 ? +are fundamentally the same character; they have the same meaning and +differ only by an added stroke in the Chinese/Korean form that the +Japanese form lacks. Yet at least one Chinese character set has both +forms. Adult CJK native speakers would say that the two should match in +search; and many would have to have that one stroke difference pointed out +to them before they'd notice it. + +But that's just a simple case. CJK is full of these, and most are far more +complicated. There are lots of cases where the equivalency is one way; +that is, A is equivalent to B, but B is NOT equivalent to A (or worse is +SOMETIMES equivalent to A). At this point, the swamp reptiles are over +your head. + +The bottom line is that, whatever you do, seek the advice of the language +folks. Your implementation will have to be tempered by realism; but at +least you can avoid a mistake. Undoing a mistake is far more costly. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22759.mbox:2,S new file mode 100644 index 00000000..6ac73896 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22759.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From slusarz at curecanti.org Thu Oct 13 10:03:47 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Outlook Express issue +In-Reply-To: <4E96FA93.9000902@npsl.co.uk> +References: <4E96FA93.9000902@npsl.co.uk> +Message-ID: <20111013110347.Horde.VIQ5OoF5lbhOlxnz7RbVmaA@bigworm.curecanti.org> + +Quoting Mark Weaver : + +> IMAP: 15:01:29 [tx] domn UID FETCH 1:356478 (UID FLAGS) +> ... +> IMAP: 15:01:35 [rx] * 4504 FETCH (UID 356256 FLAGS ()) +> ... +> IMAP: 15:01:42 [tx] h7mh UID STORE 356256 -FLAGS.SILENT (\Deleted) +> IMAP: 15:01:43 [rx] h7mh OK STORE completed +> +> i.e. it's trying to remove a \Deleted flag that isn't set on the +> message, which I guess means that locally it thinks that it's +> deleted and it hasn't picked up the flags from the fetch response. +> +> I can't see anything wrong with the server responses, so it looks to +> me like OE is incapable of synchronising flags properly. Is this +> known about/something that can be worked around, or have I just got +> something in the output format? + +It doesn't necessarily mean OE is not synchronising properly, +especially without further context of the STORE command. Is it just +randomly sending a STORE request? Or is that STORE request wedged in +between other requests (e.g. a selective EXPUNGE on a message without +the aid of UIDPLUS). + +Or maybe OE's UI is not very refined and the user is allowed to +undelete a message no matter the current flags set for that message. +Or maybe OE is working around bugs found in past IMAP servers +involving inconsistent flag state, resulting in seemingly spurious +commands. Or maybe OE is simply, at best, inefficient or, at worst, +broken. + +Point is, it is impossible to try to determine the logic without +benefit of looking at the MUA's source code. Not sure why you are +concerned though: that command may be inefficient and redundant, but +it is perfectly valid IMAP. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22762.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22762.mbox:2,S new file mode 100644 index 00000000..9a69c83f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22762.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From helga.mayer at uni-hohenheim.de Tue Aug 23 02:20:15 2011 +To: imap-protocol@u.washington.edu +From: Helga Mayer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] IMAP 4 extensions for Addressbook +In-Reply-To: <4E5353C1.1020008@geograph.co.za> +References: <4E5353C1.1020008@geograph.co.za> +Message-ID: <20110823112015.176047jadao2tej3@webmail.uni-hohenheim.de> + +Quoting Zoltan Szecsei : + +> Hi All, +> New to this list, and have had a brief read of Mark Crispin's "where +> to start", plus tried a few searches on "address book", "contacts" +> etc, but have not, to my surprise, come up with any past discussions +> on my thoughts. +> It must be a 'keyword' error on my part, but I'm sure a few of you +> will correct me, as I really cannot believe that the idea of storing +> address books or contact lists on an IMAP server, has not yet been +> addressed. +> +> So, +> Can anyone tell me how to (or why to not ask) go about getting +> extensions to IMAP, so that address/contacts lists (and maybe even +> calendars/diaries/appointments), can be uniformly stored on an IMAP +> server, so that all the email clients can write extensions for +> themselves to be able to use this central storage. There could be a +> server wide one, plus personal ones per client. +> +> I am driven mad by the fact that Thunderbird keeps my address book +> local on my PC. +> I have set up an IMAP server in our office, and access my emails +> from various PCs in the office, plus from home and other places, and +> still also from my iPhone. +> Yep, where is my address book? +> +> I cannot be alone in this frustration. +> +> Once IMAP has set out specifications for this mechanism, email +> clients can then, at their own choice and pace, choose to use it. +> It makes far more sense to me to solve the problem at the common +> point of entry, than to have a million different email clients +> inventing this wheel individually. + +Maybe you are looking for this one: + +http://tools.ietf.org/html/rfc5464 +As far as I know cyrus is the only imap server using these features. +There are attempts however to implement it in dovecot. + +http://www.dovecot.org/list/dovecot/2011-June/059747.html + +Regards +Helga + + + + + +Helga Mayer +Universit?t Hohenheim +Kommunikations-, Informations- und Medienzentrum (630) +IT-Dienste | Mail + +Schloss-Westhof-S?d | 70599 Stuttgart +Tel.: +49 711 459-22838 | Fax: +49 711 459-23449 +https://kim.uni-hohenheim.de + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22765.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22765.mbox:2,S new file mode 100644 index 00000000..a4b336dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22765.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Jul 29 21:29:31 2011 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Determining the mailbox hierarchy prefix when + NAMESPACE is not supported +In-Reply-To: <4E3382E3.3010509@earthlink.net> +References: <4DEBB242.2090200@BusCom.net> + + <4E3382E3.3010509@earthlink.net> +Message-ID: + +On Fri, 29 Jul 2011, Rick Sanders wrote: +> Is there a way to reliably figure out the mailbox hierarchy prefix when an +> IMAP server does not support the NAMESPACE command? + +RFC 3501, section 6.3.8, paragraph 4: + + An empty ("" string) mailbox name argument is a special request to + return the hierarchy delimiter and the root name of the name given + in the reference. The value returned as the root MAY be the empty + string if the reference is non-rooted or is an empty string. In + all cases, a hierarchy delimiter (or NIL if there is no hierarchy) + is returned. This permits a client to get the hierarchy delimiter + (or find out that the mailbox names are flat) even when no + mailboxes by that name currently exist. + + +Note: +1) That quote is the only place in the spec where "root" is used in + reference to mailbox names, so it's not clear what requirements are + placed on the name that is returned other than those implied in + general by the historical context of roots in hierarchical namespaces. + Those that don't believe standards exist in a historical context would + say that a server can return whatever it wants there and that it has + no meaning. Those who believe otherwise think the former are nihilists + that need to be kept away from computers. + +2) There's no guarantee that there's only one "mailbox hierarchy prefix" + as you call it on the server. You asked for *the* prefix; what if + there are many? + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22768.mbox:2,S new file mode 100644 index 00000000..5179302e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22768.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dkonigsberg at logicprobe.org Sun Jun 5 09:57:49 2011 +To: imap-protocol@u.washington.edu +From: Derek Konigsberg +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBB242.2090200@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> +Message-ID: <4DEBB58D.3090101@logicprobe.org> + +On 6/5/2011 9:43 AM, Lynn W. Taylor wrote: +> I need to implement IMAP as part of an existing project, and I need a +> tiny bit of practical guidance. +> +> Simply adopting existing code isn't really an option, so I'll be +> implementing from scratch. +> +> IMAP has a lot of features. Which features should I implement first, +> and at what point do I have something to start testing? +> +> Thanks in advance for any insight. +It might first be a good idea to clarify whether you're implementing a +client or a server. + +-- +---------------------------- + Derek Konigsberg + dkonigsberg@logicprobe.org +---------------------------- + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095054.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095054.22772.mbox:2,S new file mode 100644 index 00000000..6a3753b2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095054.22772.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From bsmcconnell at gmail.com Mon May 2 14:42:31 2011 +To: imap-protocol@u.washington.edu +From: Brian McConnell +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Looking for help implementing an IMAP-to-HTTP + gateway for web app developers +Message-ID: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> + +Hello, + +I am working on an interesting project, and am looking for people who are knowledgeable about IMAP server implementations to join us. + +I wrote an article, which you can find at http://imap2http.wordpress.com (to be published on one of the tech sites in the near future). The article describes a way to use IMAP as a delivery mechanism for mobile applications that provide continually updated information or feeds to users. + +The idea is quite simple, to make a web service look like an IMAP server that a mobile email client can subscribe to. The IMAP-HTTP gateway presents an IMAP interface to the email client, which thinks it is talking to a mail server, and converts IMAP requests into RESTful HTTP queries to the upstream web service. + +This will be a simple way for web app developers to create mobile versions of their service, by using IMAP to deliver information to the mobile device. The logic is that IMAP clients are baked into most devices, run in the background as a core service, and have been thoroughly tested. It is a bit of a hack, but it makes use of something that is already there. + +The only missing piece is a reliable IMAP-HTTP utility. This need not be an especially complex program, since it just speaks IMAP to the client, and translates IMAP commands (e.g. a request to fetch a list of folders) into HTTP requests that are submitted to an upstream service, which replies with a formatted response (e.g. a JSON recordset) that, in turn, is converted back into IMAP form. + +I wanted to inquire and see if someone has already built this, or if not, if someone out there would be interested in collaborating on this as an open source project to be made available to web and mobile developers. + +Thanks for your time. + +Brian McConnell diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22595.mbox:2,S new file mode 100644 index 00000000..9c1eb230 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22595.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From janssen at parc.com Wed Mar 11 09:24:45 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <55005876.4070406@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> <55005876.4070406@lavabitllc.com> +Message-ID: <18002.1426091085@parc.com> + +Ladar Levison wrote: + +> On 3/8/2015 11:13 AM, Bill Janssen wrote: +> > And let the DB guys solve the intermittent connection problems :-). +> > Oracle, for instance, has a "Mobile Server" product that synchonizes a +> > local cache on a mobile device with a remote Oracle DB, including SSL +> > encryption on the sync connection, and data compression. +> > +> +> Bill, how much is Larry paying you? +> +> It might be fun to submit an RFC draft that "mandates" the use of +> something like the Oracle Mobile Server. Or heck, requires everyone +> install Panagon on their machine to access their email - just to hear +> the groans. If carrier pidgeons can make it past the rfc-editor then why +> not? +> +> :) + +I did say, "for instance". A number of different database systems +support replication, but replication for mobile is a harder problem. + +I should admit: we're experimenting with new email MUA. I wrote the +MDA to support it, and designed a custom (non-IMAP) MUA/MDA protocol to +support unique features of the MUA -- and it doesn't use database +replication. + +Bill + +> +> On a slightly more serious note, Dovecot has a protocol for syncing +> message stores, but I haven't studied it closely yet. +> +> L~ +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22641.mbox:2,S new file mode 100644 index 00000000..8232c393 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22641.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From jkt at flaska.net Thu Mar 20 12:07:29 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?Detecting_HIGHESTMODSEQ_changes/po?= + =?iso-8859-1?q?lling_for_flag_changes?= +In-Reply-To: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +Message-ID: <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> + +On Thursday, 20 March 2014 14:32:30 EDT, Ian Anderson wrote: +> I?m finding it dismayingly common that servers don?t give flag +> changes (i.e. an untagged FETCH response with FLAGS) on a NOOP. +> Some of them don?t support IDLE, or don?t give flag changes on +> IDLE either. At least some of the servers do support CONDSTORE +> though. + +I'm willing to argue that these servers are broken, and yes, I'm well aware +that GMail is among them, and yes, this is despite the fact that RFC2177 +does not mention FLAGS explicitly. See [1] (and the rest of that thread) +for details. + +Seriously, letting one know about new messages, deleted messages *and* +changes of messages' status is the whole point of IDLE. Randomly picking +just a subset of these events and not notifying on the rest of them means +that we're back to polling. If we're polling, we could very well get rid of +the whole IDLE in the first place. + +Anyway, Google's position on the issue is also documented in that thread, +so there isn't much point in rehashing it again, I guess. The fact is that +compared to the API which is available to their own client, the interface +made available via IMAP is seriously limited. Take your own conclusions +from that. + +Cheers, +Jan + +[1] http://marc.info/?l=imap&m=139057889631068&w=2 + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22682.mbox:2,S new file mode 100644 index 00000000..1c2bd2dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22682.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Wed Mar 27 13:47:21 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + + + + <20130327140405.Horde.xVBCOb0icPn4imuUgPQweQ2@bigworm.curecanti.org> + +Message-ID: <32457081-EE35-4B27-892D-A059757A1B77@iki.fi> + +On 27.3.2013, at 22.33, Brandon Long wrote: + +> a append inbox {60000000} +> a BAD [ALERT] Message too large. http://support.google.com/mail/bin/answer.py?answer=8770 + +NO, not BAD. Client didn't do anything syntactically wrong. + +> Which goes to that other issue between the updated responses codes not being backward compatible with ALERT... which I guess I can just ignore since most clients ignore ALERT anyways. + +* NO [ALERT] Message too large. http://... +a NO [MAXSIZE 123456] Too large. + +Or vice versa. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22688.mbox:2,S new file mode 100644 index 00000000..a3f85386 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22688.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From gmail-imap at google.com Fri Jan 18 11:51:40 2013 +To: imap-protocol@u.washington.edu +From: Eric +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Gmail IMAP CONDSTORE + Beta Testers +Message-ID: + +If you want to be an early adopter of CONDSTORE and other new Gmail +IMAP features we develop--and you have a detailed knowledge of +IMAP--then we'd love your help! + +Note that you will be given access to features that are still *beta*. +They will have passed our QA and we are using them for our own IMAP +accounts. If you need a feature disabled, email us and we'll disable +it promptly during US/Pacific business hours. + +To sign up, send an email to gmail-imap@google.com indicating your +interest and your Gmail/Google Apps account(s). If you have a +particular client/server you develop/test/maintain/use please include +that (and your involvement) as well. Once you accept the Google +Trusted Tester invitation, we'll email you when the new feature is +enabled for your account. + +Thanks, +Eric + +-- + +FAQ: + +== What is Google Trusted Tester? +It is a standard Google program to allow outside users to try out new +features early. Once you've emailed us and accepted the Trusted +Tester invite you'll get new IMAP features enabled on your account +before others. You can leave the program at any time. + +== I have an issue/bug to report. +Email it to gmail-imap@google.com + +== When will CONDSTORE be enabled for everyone? +Hopefully soon, depends on how the internal QA and external beta turn out. + +== Do you support QRESYNC also? +Not yet, but it's on our roadmap. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22697.mbox:2,S new file mode 100644 index 00000000..3dd46857 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22697.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From slusarz at curecanti.org Fri Dec 28 12:01:29 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +In-Reply-To: <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> +Message-ID: <20121228130129.Horde.VTgbGtjlIvg0wUwlkp5dDg6@bigworm.curecanti.org> + +Quoting Bron Gondwana : + +> And yet: +> +> B. Changes from RFC 2060 +> +> 34) Clarify UNSEEN, PERMANENTFLAGS, UIDVALIDITY, and UIDNEXT +> responses in SELECT and EXAMINE. They are required now, but weren't +> in older versions. +> +> Sounds like it's supposed to be there in 3501. Also listed with REQUIRED. + +Agreed that some (most) of the text indicates that this should be +required. But the text I quoted previously explicitly indicates that +UIDNEXT might not be available. So there is, at worst, an ambiguity. + + From a practical perspective: at least one (somewhat widely used) +IMAP server fails to issue the response, so a competent client should +be able to work around its absence regardless of whether it is +semantically incorrect. + +>> For cache purposes, you can workaround a missing UIDNEXT response by +>> doing a 'UID FETCH * (UID)' in the mailbox. +> +> Ouch. + +I assume this means this is a slow operation server-side (at least in +Cyrus). I personally don't care since it is a viable way of working +around a possible RFC violation. Performance isn't an issue here. + +>> For empty mailboxes, use +>> the returned UID value (which is defined as the UIDNEXT value). +>> Otherwise, you can add 1 to the returned value and use this as the +>> UIDNEXT-ish value. +> +> The more interesting question is: what do you need to know it for anyway? + +To determine if the mailbox has changed to prevent an issuance of an +unneeded FETCH/SORT command. Flag changes are irrelevant (if +CONDSTORE isn't available), since clients can be designed to not care +about these changes + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22701.mbox:2,S new file mode 100644 index 00000000..0eab9248 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22701.mbox:2,S @@ -0,0 +1,132 @@ +MBOX-Line: From jkt at flaska.net Thu Nov 22 07:29:42 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> +Message-ID: <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + +Michael, +I've read your response a few times and I have to admit that most of the points you raise sounds very, very alien to me. I realize that you're comming from a different background than me (different programming language, environment, users and use cases), so I'll be happy to be proven wrong -- I like learning and challenging my own views. + +On Wednesday, 21 November 2012 23:54:17 CEST, Michael M Slusarz wrote: +> I would strongly disagree with this statement. As written, the +> draft is only minimally concerned with saving on network +> round-trips. + +That's quite different from what I've understood from your draft -- I'd suggest making the motivation clearer, then. But point understood, and I've now purged the "let's save roundtrips" from my understanding of the draft :). OK. + +> $result = $imap->useCompression(true); +> // Check for success +> $imap->useQresync(true); +> // Check for success +> $imap->setLanguage([LANGUAGE]); +> // Check for success + +It is pretty obvious that if you use synchronous primitives for enabling individual sub-features in a serialized fashion, your performance will be limited by the round trip times. To put it more bluntly, you cannot have code like the one shown above and expect a good performace. + +Coming from that background, I see that it is tempting to replace this endless row of synchronous calls, each enabling a single optional feature, with a quick way to side-step this process by quickly jumping into a pre-negotiated state where everything which was enabled before is enabled now as well. However, my point is that clients already exist proving that the same efficiency can be achieved with the existing facilities. You're right that this requires abolishing the serial, synchronized code, but IMAP is not particularly friendly with synchronous APIs. + +> In any OO IMAP interface the order of IMAP commands to allow +> for efficient pipelining, or the fact that pipelining even +> exists, should obviously not be a part of the API. Thus +> pipelining is fairly useless in the real world as a way to +> guarantee an increase in performance. + +Wrong. I have a client (written in an object-oriented language using object-oriented paradigms) which uses pipelining, and uses it succesfully, I'd say. The trick was to have the library implemented in an asynchronous way. For example, in my client the API between the IMAP-specific parts and the GUI is built on the model-view-controller design pattern; appropriate callbacks are in place to update the attached views when the requested data arrive from the network. It works beautifully in the (native application, not HTML) GUI, and another party uses this IMAP library with the exactly same asynchronous API underneath in a batch tool for stuffing incoming messages into a CRM/ERP database. Yes, the programming is different than if the library provided synchronous calls. + +> A client may, depending on the capabilities returned, need to +> perform various internal initialization tasks. For example - +> if CONDSTORE/QRESYNC is listed, a client may have to then parse +> a separate configuration file to grab the details of the local +> cache where it is storing this information, and then connect to +> this cache, etc. + +So you want to keep the cache information (among other things) inside some serialized client-side state storage. What prevents you from simply checking the capabilities against the previously recorded state and restoring the state when the capabilities match exactly? You can do that now, without waiting for this extension. Yes, it's ugly, but if your initialization is expensive... + +> - Even when pipelining commands, they still need to be sent, +> the incoming command needs to be tokenized (server), the +> command is performed (server), the response sent back, any +> untagged responses are tokenized (client), the untagged +> responses are interpreted (client), the tagged response is +> tokenized (client), and the tagged response is processed +> (client). None of this is "free". Pipelining eliminates none +> of this. + +Using the numbers you posted later on, we're speaking about parsing roughly 600 bytes of a well-structured text. For me, it's hard to believe that this has any measurable impact. + +> I would argue that the language of the RFC still controls +> despite what an e-mail on this list says. A client shouldn't +> be punished for interpreting it that way either. + +The RFC is a specification crafted by humans. It has errors, and all subsequent revisions will still have errors. (See the errata for a list of those which are known already.) If you choose to block and not pipeline ENABLE QRESYNC and SELECT ... QRESYNC, you hurt your users. (Also note that the clarification given on this list was by the original authors of the RFC.) + +>> As of the LANGUAGE -- how often do you expect to hit an error +>> condition which is not described by an appropriate response +>> code? I don't think that blocking for its result would be a +>> good design choice. +> +> That could be your decision as a client author. I would +> vehemently disagree. +> +>> And finally, what IMAP servers support the LANGUAGE extension? +> +> Why does this matter? RFC 5255 is a Standards Track extension. +> A year from now, every IMAP server and 200 new ones may +> support it. + +I stand by my reasoning. In order for the block to be actually usefull, you'll have to talk to a server which: + +1) actually implements LANGUAGE, +2) executes all commands in parallel OR has the LANGUAGE command implemented in such a slow way that it enables parallel processing for it, +3) returns a failure for one of the first commands which you send *and* does not return an appropriate response code. + +But it's your client, do whatever you want to do :). I'm merely saying that adding an extension driven by the desire to eliminate issues like this is not something I support. + +> It would be impossible to determine benchmarks since there is +> no defined protocol yet. And, as mentioned above, any given +> client/server interaction may provide different results based on +> their own internal optimizations and extension support. + +Right. Well, based on how my client works, I don't expect any significant performance gains obtained through this proposal. + +I'm not the standards commitee, but having decent numbers saying "see, this RESUME extensions cuts 40% out of the 1300ms required to establish an IMAP session" is something which moves the discussion from the current, very vague stage of "this is good -- nope, this is worthless" into a stage where we can actually discuss what merits it really brings. As you're proposing the extension, you should IMHO provide these numbers. + +> Additional network data required by RESUME commands: 61 bytes +> (RESUME command, RESUME response code) +> Additional round-trips required: 1 +> Network data saved by RESUME: ~650 bytes +> Round-trips saved: 3 +> Server parsed commands saved: 3 +> Client issued commands saved: 3 +> Untagged responses that do not need to be re-parsed: 4 +> +> In this example, the one-time addition of 29 bytes of network +> traffic (1 additional untagged response parse) results in the +> savings of 2 round-trips, ~600 bytes of network traffic, and 3 +> additional commands that need to be parsed on the client/server +> side. And remember this doesn't factor in any initialization +> code that needs to be run within the server/client to perform +> these commands. +> +> To me, that is substantial savings, especially when the +> connection may be re-established every 10 seconds. + +I disagree with your analysis for the following reasons: + +1) You don't take the initial CAPABILITY into account, but you re-request CAPABILITY after login. (You need the initial capability to see whether the server supports RESUME at all.) This will change the numbers quite a lot. +2) The sample token which Timo showed on the other list was way longer than base64("state token") you use. Just saying. +3) Saving 600 bytes of transmitted data per connection is noise compared to what an actual session typically transfers. +4) You could save even more bytes by converting IMAP to a binary protocol. That possibility in itself is, however, no reason to do so. +5) You're taking an advantage of eliminating NAMESPACE, but so far have ignored LIST and STATUS, even though a typicall client will need them as well. When the LIST responses come into account, savings of 600 bytes starts looking more and more like noise -- not mentioning the mailbox synchronization or data transfers. + +As usual, I'd love to be shown where my reasoning has flaws. + +With kind regards, +Jan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22707.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22707.mbox:2,S new file mode 100644 index 00000000..4a8e9a5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22707.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From thomas.dressler at 1und1.de Wed Oct 31 03:27:45 2012 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?Thomas_Dre=DFler?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] rfc-5258 LIST Command Extensions +In-Reply-To: <26B31F64-2066-43C7-B228-977ABE9AB695@iki.fi> +References: <508841A2.4010602@1und1.de> + <26B31F64-2066-43C7-B228-977ABE9AB695@iki.fi> +Message-ID: <5090FD21.5040506@1und1.de> + +i have added all examples from rfc-5258 to unit tests + +Test9.3. (see also page 16): +C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*2" + +Test9.4 (see also page 17): +C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*" + +if i use an implementation, for wich Test9.3 runs succesfull, +then Test9.4 fails because the same implementation hide +replies for baz2, foo2 with the same reason like in Test9.3 + +summary: +- Test9.3 is ok. +- Test9.4 is also ok, if the server don't reply baz2 / foo2. + +are i'am correct? + +PS: +the example (Test9.4) is strange, because the server +reply baz2 and foo2 and not qux2. + + +On 30.10.2012 18:37, Timo Sirainen wrote: +> On 24.10.2012, at 22.29, Thomas Dressler wrote: +> +>> i am a litle bit confused about some examples in rfc-5258 (page 17): +>> C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*" +>> S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED")) +> .. +>> S: D03 OK done +>> +>> baz2 is returned, and baz2 is not supscribed. +> I don't think it should have been included. It's not entirely wrong for the server to do it, but it's unnecessary when listing a "*". When listing "%" it would have been necessary, otherwise the client wouldn't have known of its children. +> +>> i miss the following response: +>> * LIST (\NonExistent) "/" qux2 ("CHILDINFO" ("SUBSCRIBED")) +> This would also need to be returned for %, but for * it's optional (and better if not returned). +> +>> in wich situations should "LIST (RECURSIVEMATCH SUBSCRIBED)" return an mailbox, +>> which is not subscribed? +> When the pattern matches an unsubscribed mailbox, which has subscribed children that don't match the pattern. That's the optimal case. Servers can somewhat easily optimize the % and * cases, but for others it would pretty much require to save the results in a tree structure and based on that figure out which nodes to return to client. If that's too much work, I think it's okay for the server to just return more than necessary (Dovecot does that with some settings). +> +>> are there some rfc-conform implementations, for testing/orientating? +> I think Dovecot v2.1 returns everything optimally with Maildir backend. See also imaptest's listext test: http://hg.dovecot.org/imaptest/file/62ac822588f0/src/tests/listext +> +>> the second example in rfc-5819 is an invalid commandline (there must be an SP before mailbox): +>> C: A02 LIST (SUBSCRIBED RECURSIVEMATCH)"" % RETURN (STATUS (MESSAGES)) +> You could report this as RFC errata, and maybe the example change also. + + +-- +Thomas Dressler +Software-Entwickler + +1&1 Internet AG - Mail System Development +Brauerstrasse 48 DE-76135 Karlsruhe +Telefon: +49 721 91374-6790 +thomas.dressler@1und1.de + +Amtsgericht Montabaur / HRB 6484 +Vorstaende: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Thomas Gottschlich, Robert Hoffmann, Markus Huhn, Hans-Henning Kettler, Dr. Oliver Mauss, Jan Oetjen +Aufsichtsratsvorsitzender: Michael Scheeren + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22729.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22729.mbox:2,S new file mode 100644 index 00000000..072b9f94 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22729.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From guenther+imap at sendmail.com Sat May 12 13:35:48 2012 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Re: partial fetch of BODY data +In-Reply-To: <4FAEA968.4000203@ymail.com> +References: <4FAE0F7F.9000709@ymail.com> + <2A0907F0-BF62-4E83-B3BE-0957A736A820@iki.fi> + <4FAEA968.4000203@ymail.com> +Message-ID: + +On Sat, 12 May 2012, Bill Shannon wrote: +> And just to confirm, a server should never return "NIL" for a BODY +> content, even if I attempt to read way past the end of the content, +> correct? At least, as long as the message exists. It might return +> NIL if the message has been expunged, right? + +If the part specifier is invalid for the message, then the server may +return NIL. + +So, for example, given a message whose MIME structure is + + multipart/alternative + text/plain + text/html + +then a request for BODY[1.TEXT] or BODY[1.HEADER] can get you a NIL. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22732.mbox:2,S new file mode 100644 index 00000000..f8f97919 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22732.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From tonio at ngyn.org Sun Apr 15 08:45:11 2012 +To: imap-protocol@u.washington.edu +From: Antoine Nguyen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] Unseen messages question +In-Reply-To: +References: <4F8A7B7E.9080709@ngyn.org> + +Message-ID: <4F8AED07.5070808@ngyn.org> + +Le 15/04/2012 15:12, Barry Leiba a ?crit : +> +> You realize that there's a race condition in that plan, right? If a +> new message arrives between the STATUS and SELECT commands, you won't +> have it in your unseen count. You could mitigate that by also +> considering UIDNEXT, but that still leaves the second-client issue (if +> another client makes an existing message seen or unseen between the +> commands, you'll still be wrong). +Now that you mention it, I do :-) +As I said, it was just an *idea* about how I could achieve that... +> +> The usefulness of the "first unseen" number is to allow you to limit +> FETCH or SEARCH commands to that. The right way to handle this is to +> SELECT the mailbox and use the first-unseen value as bounds for a +> FETCH FLAGS command or a SEARCH UNSEEN command. Those will give you +> more than just the count -- they'll also give you the message numbers +> of all the unseen messages, along with any other information you +> choose to collect if you do FETCH (you might also want UIDs, or +> whatever). +> +> Once you have that information, any changes made by new messages or +> other clients should come in unsolicited FETCH responses (for flag +> changes) and EXISTS responses (for new messages). +> +> But you might really reconsider the whole client caching model you're +> using. If you think that the unseen count alone is sufficiently +> useful, maybe your client isn't doing all it could do to take +> advantage of what IMAP has to offer. +> +Ok, I understand. + +Indeed, my client doesn't take advantage at all of what IMAP offers. +Reading your answer, I think I have a better view of the logic behind +the procotol and it clearly appears that I can't create an efficient +client without a proper caching mechanism. + +Anyway, thanks for your explanation. + +Antoine + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22743.mbox:2,S new file mode 100644 index 00000000..563b54dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22743.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From petite_abeille at mac.com Mon Mar 19 16:11:46 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195427.057549@puncture> + <47A9743C-D168-408A-ADBB-7E0B6B562B90@mac.com> + +Message-ID: <9DD34687-2CF0-4912-900E-61039DBEC323@mac.com> + + +On Mar 19, 2012, at 11:53 PM, Brandon Long wrote: + +> Sounds cool, but may have some implications on some clients. There are +> some clients which don't support unsubscribing from folders, for instance, +> and will happily download all of the mail in those folders, which is +> presumably duplicated. + +Yes, there is only one mail corpus per user account. A given message could show up under various (virtual) mailboxes. + +> That's probably only an issue if this is a general +> purpose server to be used for larger installations, though. + +This is meant as a front end to a mail archiver of sort. + +> Email addresses are probably good for uniqueness, but may be challenging in +> terms of understand-ability, may be challenging for some people to remember +> who each address is. + +Yes, these name folders are meant to show the person name at some point. Just didn't get around implementing an UTF7 encoder yet. + +> It might also be good to filter based on things like precedence bulk, or +> maybe require at least one message sent to that address as well to. + +Yes, there are a couple of additional folders in the pipeline such as mailing lists, keywords, etc. + +In short, the mail store is meant to automatically organize the messages to a certain extend. + +Thanks for the feedbacks. + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22749.mbox:2,S new file mode 100644 index 00000000..4169636c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22749.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From tss at iki.fi Fri Jan 13 09:31:58 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] which IMAP servers support support SASL + authorization vs. authentication ID? +In-Reply-To: +References: +Message-ID: + +On 13.1.2012, at 17.44, Mark Crispin wrote: + +> I have been tasked to identify which IMAP servers support the SASL concept +> of authorization vs. authentication ID and if it is suitable to allow +> impersonation; that is to proxy to various user accounts. + +Yes, Dovecot supports as well. It can be configured to work pretty much any way you want. + +Actually this week there was an interesting use case for it, kind of the reverse of what is normally done: Shared mailboxes are accessed via one shared user account, but each user logs in with their own authentication ID so they get different access to the mailboxes because they have different ACLs. (All of this is actually hidden from the user, they don't configure this in their clients.) diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22752.mbox:2,S new file mode 100644 index 00000000..6a6e411d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22752.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From mrc+imap at panda.com Fri Dec 9 21:25:45 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] LIST reply with trailing separator, once more +In-Reply-To: <1323492410.15365.102.camel@hurina> +References: <1323492410.15365.102.camel@hurina> +Message-ID: + +You can solve the conundrum by making "select/" be selectable. + +Just sayin'. + +On Sat, 10 Dec 2011, Timo Sirainen wrote: +> I'm again cleaning up my LIST handling code and started wondering. Lets +> say I have a mailbox: +> +> a list "" s* +> * LIST (\HasNoChildren) "/" "select" +> a OK List completed. +> +> Now, is it correct to reply with b) or with c)? +> +> b list "" select/* +> * LIST (\HasNoChildren) "/" "select/" +> b OK List completed. +> +> c list "" select/* +> * LIST (\Noselect \HasNoChildren) "/" "select/" +> c OK List completed. +> +> I'm leaning towards c), because while "select" is a selectable mailbox, +> "select/" isn't. +> +> (Then again, I remember some clients having had some trouble with this +> reply, so maybe I'll need to return b) anyway.) + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22756.mbox:2,S new file mode 100644 index 00000000..dc3eacb4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22756.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 1 09:51:59 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Cyrus and RFC5255 +In-Reply-To: +References: + + + + <75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> + + <1320102709.31835.140660992941501@webmail.messagingengine.com> + + <1320148200.20407.140660993144221@webmail.messagingengine.com> + +Message-ID: <20111101165159.GA22321@brong.net> + +On Tue, Nov 01, 2011 at 09:33:40AM -0700, Mark Crispin wrote: +> On Tue, 1 Nov 2011, Bron Gondwana wrote: +> >>RFC 5255 explicitly requires that you apply i;unicode-casemap in searches +> >>as part of level 1 compliance. +> >The response when I mentioned it to our project manager was "it's often nice +> >not to worry about a vs ? when searching - and have it find both". +> +> Careful. + +yeah, whatever. Basically, this is a "implement something that behaves +the same as what was there before". I'll throw a bunch of test cases at +the two sets of code and make sure they work the same. + +> It also formalized, and moderately amended, what Cyrus has done from its +> inception in searching Unicode strings. + +No - Cyrus had this: + +https://github.com/brong/cyrus-imapd/commit/d988fd9f1fc9a3ca4a0f453e188f2821e050af33#diff-1 + +(still does actually, that's my rfc5051 branch, which isn't integrated +to mainline) + +That's what I'm trying to maintain compatibility with, so users don't +see any difference on existing installs. + +> If you want to get into the type of matching you are talking about, you +> will wind up needing to do a full-fledged implementation of i18n collation +> and comparison, which more likely that not includes locale sensitivity. +> This is not something to be half-assed or hackish on. There are standards +> and rules; and in some cases these are enforced in national laws. + +I would love to do that - but one thing at a time. + +> I strongly urge you, BEFORE embarking upon such a project, to get involved +> with the various groups involved with i18n collation and comparison and +> seek their advice. + +Definitely. It might not even be me doing this. I just want to make +sure that the design leaves the possibility open. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22759.mbox:2,S new file mode 100644 index 00000000..25ea5937 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22759.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From shivdas.tomar at oracle.com Thu Oct 13 12:05:38 2011 +To: imap-protocol@u.washington.edu +From: "shivdas.tomar@oracle.com" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Auto Reply: Imap-protocol Digest, Vol 70, Issue 2 +Message-ID: <1e4e50bf-cc0d-4a5a-913d-9842f3e812cc@default> + +Hi,I will be on leave from [14th to 28th Oct] ,limited or no email access, for any urgent issue, please contact following persons: + +NZD-> DB Prep etc. issues: kevin.hudson@oracle.com +Workflow issues: vijayakumar.shanmugam@oracle.com + +For any other issues, please contact my manager rajesh.ghosh@oracle.com + +Thanks +Shiv + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22762.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22762.mbox:2,S new file mode 100644 index 00000000..70f15275 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22762.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From tss at iki.fi Tue Aug 23 08:24:08 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] IMAP 4 extensions for Addressbook +In-Reply-To: <20110823112015.176047jadao2tej3@webmail.uni-hohenheim.de> +References: <4E5353C1.1020008@geograph.co.za> + <20110823112015.176047jadao2tej3@webmail.uni-hohenheim.de> +Message-ID: + +On 23.8.2011, at 12.20, Helga Mayer wrote: + +> Quoting Zoltan Szecsei : +> +>> Hi All, +>> New to this list, and have had a brief read of Mark Crispin's "where to start", plus tried a few searches on "address book", "contacts" etc, but have not, to my surprise, come up with any past discussions on my thoughts. +>> It must be a 'keyword' error on my part, but I'm sure a few of you will correct me, as I really cannot believe that the idea of storing address books or contact lists on an IMAP server, has not yet been addressed. + +I'm sure it has been discussed in several mailing lists before. There are also other IMAP mailing lists: imapext, morg, lemonade and imap5. The only discussion I remember was a very recent one in imap5 list: http://www.ietf.org/mail-archive/web/imap5/current/maillist.html starting from last July. + +> Maybe you are looking for this one: +> +> http://tools.ietf.org/html/rfc5464 + +I'm not sure how helpful METADATA is with implementing an address book.. In any case it's still not a standard for an address book, just an arbitrary key=value database. + +I guess CardDAV would be the preferred solution. diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22765.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22765.mbox:2,S new file mode 100644 index 00000000..eff696c8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22765.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tony at att.com Fri Jul 29 21:36:04 2011 +To: imap-protocol@u.washington.edu +From: Tony Hansen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> +References: <4DEBB242.2090200@BusCom.net>, + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu>, + <4DEBDFF5.9000301@BusCom.net> + <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> +Message-ID: <4E338A34.8000400@att.com> + +On 6/5/2011 8:17 PM, David Harris wrote: +> The absolute golden rule of IMAP is "read the BNF". It can be tortuous, +> but in over a decade of working with IMAP (and I do not consider +> myself in any way an expert or a model for others), I have never found +> a case where spending the time working my way through the BNF +> maze did not answer a syntactic question, however thorny it might +> have seemed. + +The corollary to this statement is: "look at the examples, but only +consider them to be approximations to what the BNF describes". When in +doubt, see rule #1: the BNF is king. Until you learn these two rules, +expect to have weird problems plague your existence when you test under +a variety of clients. + + Tony Hansen + tony@att.com + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22768.mbox:2,S new file mode 100644 index 00000000..5ab96551 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22768.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From Lynn at BusCom.net Sun Jun 5 10:19:47 2011 +To: imap-protocol@u.washington.edu +From: "Lynn W. Taylor" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBB58D.3090101@logicprobe.org> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> +Message-ID: <4DEBBAB3.2030301@BusCom.net> + +On 6/5/2011 9:57 AM, Derek Konigsberg wrote: +> On 6/5/2011 9:43 AM, Lynn W. Taylor wrote: +>> I need to implement IMAP as part of an existing project, and I need a +>> tiny bit of practical guidance. +>> +>> Simply adopting existing code isn't really an option, so I'll be +>> implementing from scratch. +>> +>> IMAP has a lot of features. Which features should I implement first, +>> and at what point do I have something to start testing? +>> +>> Thanks in advance for any insight. +> It might first be a good idea to clarify whether you're implementing a +> client or a server. +> +Sorry. Server. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095055.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095055.22772.mbox:2,S new file mode 100644 index 00000000..6e11af09 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095055.22772.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From mrc+imap at panda.com Mon May 2 15:36:41 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Looking for help implementing an IMAP-to-HTTP + gateway for web app developers +In-Reply-To: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +References: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +Message-ID: + +Hi Brian - + +There is a fundamental problem in your design: IMAP is stateful whereas +HTTP is stateless. It is therefore quite difficult to layer IMAP on top +of HTTP. + +The opposite (HTTP on top of IMAP) is quite a bit easier; but in general +will perform rather poorly unless you have some sort of state-keeper at +the HTTP/IMAP boundary so that you don't re-establish IMAP state per HTTP +operation. + +Here's the problem: + +Once IMAP has announced something about a mailbox, that something may not +change on the server unless an update is announced via IMAP. This +specifically refers to: messages being added to the mailbox, messages +being removed from the mailbox, and the state of flags of any message in +the mailbox. + +Somehow, you must keep all the state that IMAP needs, and ensure that the +proper state updates are passed at the IMAP-HTTP gateway to IMAP. + +This is not an impossible task; it is just a quite difficult one. The +first part of it will make your programmer bang his head relentlessly +against a wall and tell you that he hates you. + +We have layered IMAP on top of a (different) stateless protocol. The only +practical solution was a secret command argument in the stateless protocol +that makes it stateful; that is, the protocol is stateless to everybody +except for IMAP. The secret argument makes the TCP/IP connection immortal +and binds the thread and underlying stream to that connection. +Fortunately, we are also the only consumers of that protocol, thus we +don't have to worry about the secret being abused. + +That solution won't work too well with HTTP, especially as you probably +don't have the HTTP server under your control. But, you have to make +essentially the same thing happen at your IMAP-HTTP gateway. That will be +the head-against-wall banger, since the HTTP server will see no reason to +tell the HTTP consumer (your IMAP-HTTP gateway) of changes that must be +transmitted in IMAP state. So your IMAP-HTTP gateway not only has to keep +state, it has to pull the necessary updates from the HTTP server. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22595.mbox:2,S new file mode 100644 index 00000000..aa46c934 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22595.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From schaefer at brasslantern.com Wed Mar 11 09:27:02 2015 +To: imap-protocol@u.washington.edu +From: Bart Schaefer +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <86FE3C0E-8F89-4721-B43F-C3126C7C211F@orthanc.ca> +References: <54FAEB94.4070508@lavabitllc.com> + <86FE3C0E-8F89-4721-B43F-C3126C7C211F@orthanc.ca> +Message-ID: <150311092702.ZM14829@torch.brasslantern.com> + +On Mar 10, 7:23pm, Lyndon Nerenberg wrote: +} +} I miss the cranky bastard, with his guns and politics and libertarian +} take on life :-) We were polar opposites on the first two of those +} three (maybe all of them), but he respected what you had to say, even +} as he let loose with how he thought you were a complete idiot and did +} not deserve to grace a keyboard with your fingers :-) + +Back when I was still writing email client software, my colleagues and I +all had business cards printed up with "job titles" based on something +Mark had said to us on the mailing list. I felt strangely honored to +have been referred to as a "Serious Threat" (to the integrity of the +IMAP protocol) just for some comment I made; I don't even recall what. +One of my colleagues was "Pedantic Crank" for pointing out something +inconsistent in the IMAP4 grammar. + +Ah, those were the days. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22641.mbox:2,S new file mode 100644 index 00000000..222a8acb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22641.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From blong at google.com Thu Mar 20 12:17:12 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> +Message-ID: + +Our support for unsolicited FETCH responses is in testing. Anyone who +would like to test it is welcome to ping me, and I can enable it for the +accounts you specify. + +Brandon + + +On Thu, Mar 20, 2014 at 12:07 PM, Jan Kundr?t wrote: + +> On Thursday, 20 March 2014 14:32:30 EDT, Ian Anderson wrote: +> +>> I?m finding it dismayingly common that servers don?t give flag changes +>> (i.e. an untagged FETCH response with FLAGS) on a NOOP. Some of them don?t +>> support IDLE, or don?t give flag changes on IDLE either. At least some of +>> the servers do support CONDSTORE though. +>> +> +> I'm willing to argue that these servers are broken, and yes, I'm well +> aware that GMail is among them, and yes, this is despite the fact that +> RFC2177 does not mention FLAGS explicitly. See [1] (and the rest of that +> thread) for details. +> +> Seriously, letting one know about new messages, deleted messages *and* +> changes of messages' status is the whole point of IDLE. Randomly picking +> just a subset of these events and not notifying on the rest of them means +> that we're back to polling. If we're polling, we could very well get rid of +> the whole IDLE in the first place. +> +> Anyway, Google's position on the issue is also documented in that thread, +> so there isn't much point in rehashing it again, I guess. The fact is that +> compared to the API which is available to their own client, the interface +> made available via IMAP is seriously limited. Take your own conclusions +> from that. +> +> Cheers, +> Jan +> +> [1] http://marc.info/?l=imap&m=139057889631068&w=2 +> +> -- +> Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22682.mbox:2,S new file mode 100644 index 00000000..1f62313f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22682.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From slusarz at curecanti.org Wed Mar 27 14:07:03 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <32457081-EE35-4B27-892D-A059757A1B77@iki.fi> +References: + + + + <20130327140405.Horde.xVBCOb0icPn4imuUgPQweQ2@bigworm.curecanti.org> + + <32457081-EE35-4B27-892D-A059757A1B77@iki.fi> +Message-ID: <20130327150703.Horde.pQwnqjTHsljVrQcznTh2Rw6@bigworm.curecanti.org> + +Quoting Timo Sirainen : + +> On 27.3.2013, at 22.33, Brandon Long wrote: +> +>> a append inbox {60000000} +>> a BAD [ALERT] Message too large. +>> http://support.google.com/mail/bin/answer.py?answer=8770 +> +> NO, not BAD. Client didn't do anything syntactically wrong. +> +>> Which goes to that other issue between the updated responses codes +>> not being backward compatible with ALERT... which I guess I can +>> just ignore since most clients ignore ALERT anyways. +> +> * NO [ALERT] Message too large. http://... +> a NO [MAXSIZE 123456] Too large. +> +> Or vice versa. + +Isn't MAXSIZE a METADATA specific response? (Maybe you were just using +as a placeholder example...) + +Also... I believe this has come up before but ALERTs aren't useful for +providing directed feedback about an action. Alerts only need to be +displayed to the user - but there is no requirement how/when this +would happen. In the above example, there is no indication that the +ALERT is somehow tied to the actual APPEND action. So when a client +eventually displays the alert to the user, it could be completely out +of context to the activity of sending a message and might confuse the +heck out of the end user. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22688.mbox:2,S new file mode 100644 index 00000000..645c33f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22688.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From slusarz at curecanti.org Mon Jan 21 13:48:22 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +Message-ID: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + +A user recently reported this behavior on a Courier server: + +A 1 UID FETCH 9 (BODY[HEADER]) +* 1 FETCH (UID 9 BODY[HEADER] {1409} +[...headers...] +) +* 1 FETCH (FLAGS (\Seen)) +A OK FETCH completed. + +Is this response broken? Seems to me it MUST be either: + +* 1 FETCH (UID 9 BODY[HEADER] {1409} +[...headers...] +) FLAGS (\Seen)) + +--or (less optimal)-- + +* 1 FETCH (UID 9 BODY[HEADER] {1409} +[...headers...] +) +* 1 FETCH (UID 9 FLAGS (\Seen)) + +...because all responses occur within an active UID command. RFC 3501 +[6.4.8]: + + However, server implementations MUST implicitly + include the UID message data item as part of any FETCH response + caused by a UID command, regardless of whether a UID was specified + as a message data item to the FETCH. + +OR... is the fact that this is a FLAGS response unattached to the +given UID query mean that this is OK? In other words... since FLAGS +wasn't explicitly requested by the FETCH command, is this untagged +response legal as a unilateral flag change response sent by the +server, regardless of the fact that it appears during an active UID +command? This doesn't seem correct, and it can be argued that the +BODY[HEADER] access itself "caused" the FLAGS FETCH response anyway. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22697.mbox:2,S new file mode 100644 index 00000000..a6c2aed3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22697.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From brong at fastmail.fm Fri Dec 28 14:13:07 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +In-Reply-To: <20121228130129.Horde.VTgbGtjlIvg0wUwlkp5dDg6@bigworm.curecanti.org> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> + <20121228130129.Horde.VTgbGtjlIvg0wUwlkp5dDg6@bigworm.curecanti.org> +Message-ID: <1356732787.18647.140661171122177.5EB821AB@webmail.messagingengine.com> + +On Fri, Dec 28, 2012, at 09:01 PM, Michael M Slusarz wrote: +> Quoting Bron Gondwana : +> >> For cache purposes, you can workaround a missing UIDNEXT response by +> >> doing a 'UID FETCH * (UID)' in the mailbox. +> > +> > Ouch. +> +> I assume this means this is a slow operation server-side (at least in +> Cyrus). I personally don't care since it is a viable way of working +> around a possible RFC violation. Performance isn't an issue here. + +No, actually - it should be pretty quick. I don't think it even needs to +do a search of the address space, it should just read the last item if +* matches uid_last. Otherwise it will do a binary search of the index +map. + +But of course Cyrus always returns UIDNEXT anyway. + +> > The more interesting question is: what do you need to know it for anyway? +> +> To determine if the mailbox has changed to prevent an issuance of an +> unneeded FETCH/SORT command. Flag changes are irrelevant (if +> CONDSTORE isn't available), since clients can be designed to not care +> about these changes + +Fair enough I guess, if you really don't need the data from those intermediate +records. Otherwise you may as well just do fetch $olduid+1:* (stuff you need), +which will be the same number of round trips as your solution in the trivial +case, and one fewer in the case where there is new data to know. + +Let's play make believe for a second with Cyrus though: + +. select inbox +* 2 EXISTS +* 2 RECENT +* FLAGS (\Answered \Flagged \Draft \Deleted \Seen) +* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Ok +* OK [UNSEEN 1] Ok +* OK [UIDVALIDITY 1356732706] Ok +* OK [UIDNEXT 3] Ok +* OK [HIGHESTMODSEQ 5] Ok +* OK [URLMECH INTERNAL] Ok +* OK [ANNOTATIONS 65536] Ok +. OK [READ-WRITE] Completed +. fetch 1:* (uid) +* 1 FETCH (UID 1) +* 2 FETCH (UID 2) +. OK Completed (0.000 sec) +. fetch * (uid) +* 2 FETCH (UID 2) +. OK Completed (0.000 sec +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22701.mbox:2,S new file mode 100644 index 00000000..67c397cd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22701.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From slusarz at curecanti.org Mon Nov 26 14:20:05 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + +Message-ID: <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + +Quoting Brandon Long : + +> On Wed, Nov 21, 2012 at 5:36 PM, Michael M Slusarz +> wrote: +> +>> Quoting Brandon Long : +>> +>> Have you considered not re-establishing a connection every 10s? This is a +>>> connected protocol, not http. +>>> +>> +>> From a webmail perspective: if you could tell me how to maintain a +>> consistent IMAP connection using nothing more than current IMAP commands +>> and an out-of-the box HTTP server, I would be ecstatic. That's what users +>> demand our software works with, so that's what we need to code for. +>> +>> I don't have the UI information in front of me right now, but a user +>> initiating an action every 10 seconds, at least when managing messages in a +>> mailbox (loading a message to read, deleting, copying/moving, reporting as +>> spam), seems like a reasonable estimate for discussion purposes. That's +>> where I got the 10 second value from. +>> +> +> And this seems to imply, to me, that you'd be better off with the +> resume/disconnected session stuff from p-imap/lemonade that I pointed to +> before. +> +> After all, you are likely to need to do at least a select of the same +> folder for most of those new connections. + +This is probably getting too client implementation specific... but in +our dynamic client a large number of browser requests (XMLHttpRequest) +are polling requests. No need to select a mailbox. So any solution +that REQUIREs a selection of mailbox on resuming is worthless in a +practical sense. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22732.mbox:2,S new file mode 100644 index 00000000..a7fa8a6e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22732.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From aclark at ghoti.org Wed Apr 18 17:32:45 2012 +To: imap-protocol@u.washington.edu +From: Ashley Clark +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BODY.PEEK[HEADER] response +Message-ID: <0F7D3273-B2F6-4EC8-BAE5-F08B39A94CBB@ghoti.org> + +I think I may be dealing with a buggy server but I wanted to verify my assumptions first. + +upon making this request to a particular server, I'm seeing this kind of response: + +C: 3 fetch 1 body.peek[header] +S: * 1 FETCH (BODY[HEADER] {2006} +S: +S: +S: +S: +S: ) +S: 3 OK FETCH complete + +this seems like one newline too many in the response, but I can't find anything specific that dictates how many newlines are acceptable at the end of a BODY[HEADER] request. + +when doing the same request against a Dovecot server I see only one trailing newline pair: + +C: 3 fetch 1 body.peek[header] +S: * 1 FETCH (BODY[HEADER] {2004} +S: +S: +S: +S: ) +S: 3 OK FETCH complete + + +but is that just convention or is this server breaking some part of the spec? if so, which part? + + +Ashley +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 4798 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22743.mbox:2,S new file mode 100644 index 00000000..7eaef8f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22743.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From dave at cridland.net Tue Mar 20 02:27:13 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <17068.1332195426.345309@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> +Message-ID: <17068.1332235633.171765@puncture> + +On Mon Mar 19 22:17:06 2012, Dave Cridland wrote: +> On Mon Mar 19 21:29:08 2012, PA wrote: +>> +>> On Mar 19, 2012, at 9:46 PM, Bron Gondwana wrote: +>> +>> > Have you looked at http://imapwiki.org/ImapTest ? +>> +>> Yes, I have looked at ImapTest. Didn't quite manage to use it, +>> even though looking at the test case themselves was instructive. +> +> It works against Polymer. I can read all the mailboxes, and they +> seem reasonable. + +TRACE: imap://lua@svr225.stepx.com:1143/ 159.693 '9>>> CB NOOP\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 159.767 '9<<< * 312 +exists\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 159.819 '9<<< CB ok noop\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 219.818 '9>>> DB NOOP\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 219.891 '9<<< * 312 +exists\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 219.937 '9<<< DB ok noop\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 279.860 '9>>> EB NOOP\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 279.934 '9<<< * 312 +exists\r\n' +TRACE: imap://lua@svr225.stepx.com:1143/ 279.980 '9<<< EB ok noop\r\n' + +No, NOOP is a command that does nothing; an EXISTS response is not +automatically generated - it can be generated during any command (or, +for extra bonus points, not during any command), but only when there +are new messages. + + From ?7.3.1: + + The EXISTS response reports the number of messages in the +mailbox. + This response occurs as a result of a SELECT or EXAMINE command, + and if the size of the mailbox changes (e.g., new messages). + +Polymer (and probably other clients) doesn't care, but technically +they could behave oddly in this case. + +Incidentally, there are two commands that do nothing in IMAP, and +both are typically used for checking for new mail. NOOP returns +instantly, whereas IDLE returns only after the client sends DONE. +They're allowed to do whatever you want to make this happen behind +the scenes in your server, of course, they just don't affect the +state of the mailbox from the client's point of view. + +But a client *could* check the mailbox by repeatedly polling with a +SEARCH command, too. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22749.mbox:2,S new file mode 100644 index 00000000..270755e5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22749.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Jan 13 11:48:15 2012 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] which IMAP servers support support SASL + authorization vs. authentication ID? +In-Reply-To: +References: +Message-ID: + +On Fri, 13 Jan 2012, Mark Crispin wrote: +> I have been tasked to identify which IMAP servers support the SASL concept +> of authorization vs. authentication ID and if it is suitable to allow +> impersonation; that is to proxy to various user accounts. + +Sendmail: yes + ;; proxy authorization can be permitted based on LDAP attributes + ;; marking accounts as delegatees + + +Philip + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22752.mbox:2,S new file mode 100644 index 00000000..06013d5b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22752.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Fri Dec 9 21:40:42 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] LIST reply with trailing separator, once more +In-Reply-To: +References: <1323492410.15365.102.camel@hurina> + +Message-ID: <1323495642.15365.123.camel@hurina> + +On Fri, 2011-12-09 at 21:25 -0800, Mark Crispin wrote: + +> You can solve the conundrum by making "select/" be selectable. + +I worry about potential security and other problems if that is done. For +example if there's an ACL for "select", it would also have to match +"select/". And with SPECIAL-USE if there's a \Trash attribute for +"Trash", it would probably also have to be returned for "Trash/". And +probably all kinds of other little things that aren't immediately +obvious. + +Maybe most of the problems could be avoided by translating "select/" +into "select" in the IMAP layer (and back when needed), but that's quite +a lot of extra code just for handling something that I don't think +clients should be doing anyway. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22756.mbox:2,S new file mode 100644 index 00000000..dec95200 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22756.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From jeff.mckay at comaxis.com Tue Nov 1 21:08:33 2011 +To: imap-protocol@u.washington.edu +From: Jeff Mckay +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Character encoding question +Message-ID: <4EB0C241.6060900@comaxis.com> + +I am dealing with a Sun Java imap server that seems a little screwy in +regards to +encoding certain non-English character strings - hopefully this is my +problem but +I'm not sure what is going on. Here are a couple examples of folder names +from this server: + +visible in client: test/A hegyek h?val bor?tott +encoded by imap: "test/A hegyek h&APM-val bor&AO0-tott\" + +visible in client: Temp/New?? +encoded by imap: "Temp/New&bUuL1Q-" + +In the first case, it is necessary to take the &- part and base64 +decode it, +then treat the result as modified UTF7. In the second case, the base64 +decode +step is unnecessary, it is already in UTF7 format. Both of these folder +encodings +came from the folder listing of one mailbox in a single session. So my +question is, +when do I do a base64 decode and when not? Is there something in this +encoding +that is supposed to tell me? Any help appreciated. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22759.mbox:2,S new file mode 100644 index 00000000..f4f29e39 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22759.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From mrc+imap at panda.com Thu Oct 13 19:05:41 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Outlook Express issue +In-Reply-To: <4E96FA93.9000902@npsl.co.uk> +References: <4E96FA93.9000902@npsl.co.uk> +Message-ID: + +Your IMAP transcript looks reasonable. Lacking any additional evidence, +I'm inclined to say that this is YAOEBWWNBF (Yet Another Outlook Express +Bug Which Will Never Be Fixed). + +On Thu, 13 Oct 2011, Mark Weaver wrote: +> I've had an issue reported against an IMAP server that I've written +> where OE thinks it has a deleted message that's not actually deleted. +> I've got a log file from the client, the relevant bits are: +> +> IMAP: 15:01:29 [tx] domn UID FETCH 1:356478 (UID FLAGS) +> ... +> IMAP: 15:01:35 [rx] * 4504 FETCH (UID 356256 FLAGS ()) +> ... +> IMAP: 15:01:42 [tx] h7mh UID STORE 356256 -FLAGS.SILENT (\Deleted) +> IMAP: 15:01:43 [rx] h7mh OK STORE completed +> +> i.e. it's trying to remove a \Deleted flag that isn't set on the +> message, which I guess means that locally it thinks that it's deleted +> and it hasn't picked up the flags from the fetch response. +> +> I can't see anything wrong with the server responses, so it looks to me +> like OE is incapable of synchronising flags properly. Is this known +> about/something that can be worked around, or have I just got something +> in the output format? +> +> Thanks, +> +> Mark +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22762.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22762.mbox:2,S new file mode 100644 index 00000000..c6cf1025 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22762.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From mrc+imap at panda.com Tue Aug 23 09:26:12 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] IMAP 4 extensions for Addressbook +In-Reply-To: +References: <4E5353C1.1020008@geograph.co.za> + <20110823112015.176047jadao2tej3@webmail.uni-hohenheim.de> + +Message-ID: + +On Tue, 23 Aug 2011, Timo Sirainen wrote: +> I guess CardDAV would be the preferred solution. + +Indeed. + +Email, contacts management, calendars, tasks, and configuration are all +difficult problems. They are even more difficult when it is required to +synchronize these across multiple agents and consumers. + +Each of these have very different environment and requirement sets. You +can not assume that techniques suitable for one are equally good (or even +usable) for another. This was a hard-earned lesson of the 1990s: file +sharing is not the way to distribute email. + +The inevitable result of shoehorning all of these into a single +agent/protocol are bloated dinosaurs that don't do anything particularly +well. After all the years I spent hearing people rant about the wonders +of Groupwise and Exchange, I have now spent three years dealing with the +true horrors of both. + +Very bright people work on CalDAV, CardDAV, etc. It is slow going because +these problems are very hard. It is the height of arrogance, not to +mention folly, to believe "oh, just make an extension to IMAP and the +problem is solved." + +Now, with that said, some agents have implemented baby forms of remote +address book within the framework of IMAP and have done so without +extension. + +For example, Pine and Alpine have long supported remote address book and +configuration by writing the data as messages to a mailbox (e.g., +ADDRBOOK) on the IMAP server. This is very simple-minded; the entire +address book is a single message in ASCII; and thus address book updates +are simply appending a new message (and, presently, deleting/expunging the +old message). + +This isn't as bad as it sounds: my complete contacts list in VCF form is +only 68K. My Alpine address book, which only contains what Alpine needs, +is more like 3K. + +This isn't fancy-schmany. There's no synchronization or off-line access. +When Alpine starts, it merely provisions itself from the remote address +book. It'll notice when the address book changes, but all changes are a +complete replacement. + +And, of course, global address book needs are done separately by LDAP. + +Configuration is done similarly. + +This really is a baby implementation, but it works well enough to deal +with the immediate pressure. I've even heard that other MUAs are capable +of reading Alpine's address books, at least to the point of importing the +data into its own address book. + +Most importantly, every IMAP server in the world supports it, NOW, because +it requires no extension or change to IMAP. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22765.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22765.mbox:2,S new file mode 100644 index 00000000..4ecce99b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22765.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jul 29 22:42:29 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4E338A34.8000400@att.com> +References: <4DEBB242.2090200@BusCom.net>, + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu>, + <4DEBDFF5.9000301@BusCom.net> + <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> + <4E338A34.8000400@att.com> +Message-ID: + +I would go even further, and say that there is no excuse in this modern +day and age for anyone to write an IMAP syntax parser/generator from +scratch. There are excellent tools to create syntax parsers and +generators from BNF. Use them. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22768.mbox:2,S new file mode 100644 index 00000000..f8d25b13 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22768.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From Lynn at BusCom.net Sun Jun 5 10:37:05 2011 +To: imap-protocol@u.washington.edu +From: "Lynn W. Taylor" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBBAB3.2030301@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net> +Message-ID: <4DEBBEC1.3080600@BusCom.net> + + + +On 6/5/2011 10:19 AM, Lynn W. Taylor wrote: +> On 6/5/2011 9:57 AM, Derek Konigsberg wrote: +>> On 6/5/2011 9:43 AM, Lynn W. Taylor wrote: +>>> I need to implement IMAP as part of an existing project, and I need a +>>> tiny bit of practical guidance. +>>> +>>> Simply adopting existing code isn't really an option, so I'll be +>>> implementing from scratch. +>>> +>>> IMAP has a lot of features. Which features should I implement first, +>>> and at what point do I have something to start testing? +>>> +>>> Thanks in advance for any insight. +>> It might first be a good idea to clarify whether you're implementing a +>> client or a server. +>> +> Sorry. Server. +> +P.S. I'm not looking for a complete roadmap, I can fill in most of the +detail. + +Tags and UIDs are not a big deal. + +What I want to do is get enough IMAP working that I can start testing +with a client, even if the server isn't 100% practical, instead of +implementing some critical command last, and finding out that I made +some critical mistake very early in the process. + +Thanks in advance for any advice. + +-- Lynn + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22772.mbox:2,S new file mode 100644 index 00000000..7e5cce86 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22772.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From janssen at parc.com Mon May 2 15:45:39 2011 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Looking for help implementing an IMAP-to-HTTP + gateway for web app developers +In-Reply-To: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +References: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +Message-ID: <33073.1304376339@parc.com> + +Brian McConnell wrote: + +> The only missing piece is a reliable IMAP-HTTP utility. This need not +> be an especially complex program, since it just speaks IMAP to the +> client, + +LOL. "just" + +> and translates IMAP commands (e.g. a request to fetch a list of +> folders) into HTTP requests that are submitted to an upstream service, +> which replies with a formatted response (e.g. a JSON recordset) that, +> in turn, is converted back into IMAP form. + +Seems like you'd need a transducer spec first. + +Take a look at my IMAP server in UpLib, http://uplib.parc.com/. It maps +documents in a document archive into email messages, and support using +an IMAP client to manipulate a document repository. Open-source Python +implementation. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095056.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095056.22777.mbox:2,S new file mode 100644 index 00000000..fc7e3c34 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095056.22777.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From norman at apache.org Sun Apr 10 23:10:57 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Ignoring "non permanent" flags while STORE +Message-ID: + +Hi there, + +I'm currently working on our JAVA bases IMAPServer (james.apache.org) +and try to get it 100% rfc3501 conform. For testing purposes I use +dovecots ImapTest (http://www.imapwiki.org/ImapTest). One of the tests +that are fails is not what I would expect, so maybe someone can tell +me if I understood the RFC wrong. + +When someone try to store a "non permanent" flag implementations are +free to ignore this. As the RFC state: + + + PERMANENTFLAGS + + Followed by a parenthesized list of flags, indicates which of + the known flags the client can change permanently. Any flags + that are in the FLAGS untagged response, but not the + PERMANENTFLAGS list, can not be set permanently. If the client + attempts to STORE a flag that is not in the PERMANENTFLAGS + list, the server will either ignore the change or store the + state change for the remainder of the current session only. + The PERMANENTFLAGS list can also include the special flag \*, + which indicates that it is possible to create new keywords by + attempting to store those flags in the mailbox. + +The TestKit seems to expect that even if the flag is "ignored" in +STORE to see a response which includes the flag. Is this correct ? I +would have expected that the response would not include this flag and +just return the other "permanent" flags. So is the TestKit wrong or my +understanding ;) ? + +Some related question... If I would support "session flags", getting +these reset when the mailbox is unselected or only when the session is +closed ? And get the session flags shared with other session which +have the same mailbox selected ? + +Thanks for your help, +Norman + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22595.mbox:2,S new file mode 100644 index 00000000..58571535 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22595.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From ladar at lavabitllc.com Wed Mar 11 09:39:00 2015 +To: imap-protocol@u.washington.edu +From: Ladar Levison +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <18002.1426091085@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> <55005876.4070406@lavabitllc.com> + <18002.1426091085@parc.com> +Message-ID: <55006FA4.3090800@lavabitllc.com> + +On 3/11/2015 11:24 AM, Bill Janssen wrote: +> I did say, "for instance". A number of different database systems +> support replication, but replication for mobile is a harder problem. + +Very true. As I recall Microsoft also has a DB replication/sync +framework that is supposed to work well over unreliable/slow network +links. I've never put their claims to the test though. + +https://msdn.microsoft.com/en-us/sync/bb736753.aspx + +> I should admit: we're experimenting with new email MUA. I wrote the +> MDA to support it, and designed a custom (non-IMAP) MUA/MDA protocol to +> support unique features of the MUA -- and it doesn't use database +> replication. + +Link? Or you keeping this piece of brilliance all to yourself? + +I'm still looking for inspiration on my protocol design effort. I know +how to handle most of the functionality, but I'm still wrestling with +how to sync an encrypted binary file back to the server in a way that is +safe, and not overly complex... So when I hear "replication" I start to +think you may have the answer I'm looking for. + +Of course before I worry about that problem I still need to decide which +scheme I'm going with. Lately I've been leaning towards sticking with a +line based protocol, aka, IMAP, but having it to send/receive JSON +objects... + + + + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 836 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22641.mbox:2,S new file mode 100644 index 00000000..e157f191 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22641.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From jkt at flaska.net Thu Mar 20 12:23:50 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] + =?iso-8859-1?q?Detecting_HIGHESTMODSEQ_changes/po?= + =?iso-8859-1?q?lling_for_flag_changes?= +In-Reply-To: +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> + +Message-ID: + +On Thursday, 20 March 2014 15:17:12 EDT, Brandon Long wrote: +> Our support for unsolicited FETCH responses is in testing. Anyone who +> would like to test it is welcome to ping me, and I can enable it for the +> accounts you specify. + +That's great news! Congratulations for that. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22682.mbox:2,S new file mode 100644 index 00000000..826669d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22682.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Mar 27 19:30:25 2013 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <78AB33AC-4EFC-42AF-80F8-AD1FB3C26746@iki.fi> +References: + + + + <78AB33AC-4EFC-42AF-80F8-AD1FB3C26746@iki.fi> +Message-ID: <5A6676FF-E967-48F1-839C-56149288A402@orthanc.ca> + + +On 2013-03-27, at 3:27 AM, Timo Sirainen wrote: + +> So .. maybe a per-mailbox limit isn't that useful. I was mainly thinking about different users having different limits, causing shared mailboxes to have different limits. Or maybe some other special mailboxes with special rules. + +Why not require the server to issue a [LITERALPLUSSIZE nnn] whenever the server's state changes the value it's prepared to deal with. That makes it agnostic to any existing and future extensions. + +You could then set limits by user, by folder, by user+folder, etc. Lots of flexibility, and it never has to be updated for follow-on capabilities. (I run in fear of the 64-bit proposal.) + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22688.mbox:2,S new file mode 100644 index 00000000..e9e1e0ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22688.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dave at cridland.net Mon Jan 21 14:20:11 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +In-Reply-To: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> +Message-ID: + +On 21 Jan 2013 21:50, "Michael M Slusarz" wrote: +> OR... is the fact that this is a FLAGS response unattached to the given +UID query mean that this is OK? In other words... since FLAGS wasn't +explicitly requested by the FETCH command, is this untagged response legal +as a unilateral flag change response sent by the server, regardless of the +fact that it appears during an active UID command? This doesn't seem +correct, and it can be argued that the BODY[HEADER] access itself "caused" +the FLAGS FETCH response anyway. + +Right, this is indeed a unilaterally sent FETCH, and it wasn't really +caused by the other FETCH - it's just been batched until a command was in +progress. Or maybe it just happens to have been sent at the same time. + +In practise, it's likely that the IMAP server explicitly checked flag +changes when it received the FETCH, but that's an implementation detail. + +In any case, I don't think this is a bug. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22697.mbox:2,S new file mode 100644 index 00000000..12533487 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22697.mbox:2,S @@ -0,0 +1,108 @@ +MBOX-Line: From brong at fastmail.fm Fri Dec 28 14:17:38 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +In-Reply-To: <1356732787.18647.140661171122177.5EB821AB@webmail.messagingengine.com> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> + <20121228130129.Horde.VTgbGtjlIvg0wUwlkp5dDg6@bigworm.curecanti.org> + <1356732787.18647.140661171122177.5EB821AB@webmail.messagingengine.com> +Message-ID: <1356733058.19335.140661171123477.7DDFF57D@webmail.messagingengine.com> + +On Fri, Dec 28, 2012, at 11:13 PM, Bron Gondwana wrote: +> On Fri, Dec 28, 2012, at 09:01 PM, Michael M Slusarz wrote: +> > Quoting Bron Gondwana : +> > >> For cache purposes, you can workaround a missing UIDNEXT response by +> > >> doing a 'UID FETCH * (UID)' in the mailbox. +> > > +> > > Ouch. +> > +> > I assume this means this is a slow operation server-side (at least in +> > Cyrus). I personally don't care since it is a viable way of working +> > around a possible RFC violation. Performance isn't an issue here. +> +> No, actually - it should be pretty quick. I don't think it even needs to +> do a search of the address space, it should just read the last item if +> * matches uid_last. Otherwise it will do a binary search of the index +> map. +> +> But of course Cyrus always returns UIDNEXT anyway. +> +> > > The more interesting question is: what do you need to know it for anyway? +> > +> > To determine if the mailbox has changed to prevent an issuance of an +> > unneeded FETCH/SORT command. Flag changes are irrelevant (if +> > CONDSTORE isn't available), since clients can be designed to not care +> > about these changes +> +> Fair enough I guess, if you really don't need the data from those intermediate +> records. Otherwise you may as well just do fetch $olduid+1:* (stuff you need), +> which will be the same number of round trips as your solution in the trivial +> case, and one fewer in the case where there is new data to know. +> +> Let's play make believe for a second with Cyrus though: +> +> . select inbox +> * 2 EXISTS +> * 2 RECENT +> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) +> * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Ok +> * OK [UNSEEN 1] Ok +> * OK [UIDVALIDITY 1356732706] Ok +> * OK [UIDNEXT 3] Ok +> * OK [HIGHESTMODSEQ 5] Ok +> * OK [URLMECH INTERNAL] Ok +> * OK [ANNOTATIONS 65536] Ok +> . OK [READ-WRITE] Completed +> . fetch 1:* (uid) +> * 1 FETCH (UID 1) +> * 2 FETCH (UID 2) +> . OK Completed (0.000 sec) +> . fetch * (uid) +> * 2 FETCH (UID 2) +> . OK Completed (0.000 sec + +Sorry - cat on keyboard failure. + +) +. store 2 +flags \Deleted +* 2 FETCH (FLAGS (\Recent \Deleted)) +. OK Completed +. expunge +* 2 EXPUNGE +. OK [HIGHESTMODSEQ 7] Completed +. fetch * (uid) +* 1 FETCH (UID 1) +. OK Completed (0.000 sec) + +That definitely doesn't work! + +. uid fetch * (uid) +. OK Completed (0.000 sec) + +And that contains nothing. You can't know from that if stuff got added and +expunged since your last request though. + +Consider: + +UIDs 1 3 4 5 7 +EXISTS 5 +UIDNEXT 10 + +APPEND 11 12 +EXPUNGE 4 12 + +UIDs 1 3 5 7 11 +EXISTS 5 +UIDNEXT 13 + +Your query couldn't tell the difference between state A and state B. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22701.mbox:2,S new file mode 100644 index 00000000..6e9780f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22701.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From blong at google.com Mon Nov 26 14:29:38 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> +Message-ID: + +By polling, I assume you mean for calling STATUS? + +And my point would be that it wouldn't cost anything on the server. + +Imagine, instead of a "special case" resume, that we're instead treating +this as a client that often re-connects. You'd treat IMAP the same way a +normal "connected" client would, and the server would just keep your +connection in the same connection state, possibly holding any results it +would send you. You would just "reconnect/resume" and then issue the next +command. You'd be immediately back in the selected state, but there +wouldn't be any cost associated with it (from the client side) except +perhaps having to update client state if the server gives you updates, but +that just results in faster updates of server state. + +You could even mimic Outlook by having a separate "virtual connection" that +handles STATUS calls, and one "virtual connection" for actual folder +actions. + +This is essentially trying to turn IMAP into a more HTTP like protocol. + +It is more expensive for a server to offer this, though as long as the +client has to "request" a session, it would actually be cheaper for the +server to maintain that state than re-loading it between connections. + +Brandon + + +On Mon, Nov 26, 2012 at 2:20 PM, Michael M Slusarz wrote: + +> Quoting Brandon Long : +> +> On Wed, Nov 21, 2012 at 5:36 PM, Michael M Slusarz > >wrote: +>> +>> Quoting Brandon Long : +>>> +>>> Have you considered not re-establishing a connection every 10s? This +>>> is a +>>> +>>>> connected protocol, not http. +>>>> +>>>> +>>> From a webmail perspective: if you could tell me how to maintain a +>>> consistent IMAP connection using nothing more than current IMAP commands +>>> and an out-of-the box HTTP server, I would be ecstatic. That's what +>>> users +>>> demand our software works with, so that's what we need to code for. +>>> +>>> I don't have the UI information in front of me right now, but a user +>>> initiating an action every 10 seconds, at least when managing messages +>>> in a +>>> mailbox (loading a message to read, deleting, copying/moving, reporting +>>> as +>>> spam), seems like a reasonable estimate for discussion purposes. That's +>>> where I got the 10 second value from. +>>> +>>> +>> And this seems to imply, to me, that you'd be better off with the +>> resume/disconnected session stuff from p-imap/lemonade that I pointed to +>> before. +>> +>> After all, you are likely to need to do at least a select of the same +>> folder for most of those new connections. +>> +> +> This is probably getting too client implementation specific... but in our +> dynamic client a large number of browser requests (XMLHttpRequest) are +> polling requests. No need to select a mailbox. So any solution that +> REQUIREs a selection of mailbox on resuming is worthless in a practical +> sense. +> +> michael +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22732.mbox:2,S new file mode 100644 index 00000000..629a8b5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22732.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Fri Apr 20 13:12:07 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BODY.PEEK[HEADER] response +In-Reply-To: <0F7D3273-B2F6-4EC8-BAE5-F08B39A94CBB@ghoti.org> +References: <0F7D3273-B2F6-4EC8-BAE5-F08B39A94CBB@ghoti.org> +Message-ID: <264FEBCB-168D-4E62-83C2-FF017E51906D@iki.fi> + +On 19.4.2012, at 3.32, Ashley Clark wrote: + +> I think I may be dealing with a buggy server but I wanted to verify my assumptions first. + +Yes, I'd say so. + +> upon making this request to a particular server, I'm seeing this kind of response: +> +> C: 3 fetch 1 body.peek[header] +> S: * 1 FETCH (BODY[HEADER] {2006} +> S: +> S: +> S: +> S: +> S: ) +> S: 3 OK FETCH complete +> +> this seems like one newline too many in the response, but I can't find anything specific that dictates how many newlines are acceptable at the end of a BODY[HEADER] request. + +BODY[HEADER] sends the message header. The RFC 822 header ends with an empty line. The next newline belongs to message body, so it can't be part of the header. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22743.mbox:2,S new file mode 100644 index 00000000..4b67d4ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22743.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From johngalton217 at gmail.com Tue Mar 20 11:34:17 2012 +To: imap-protocol@u.washington.edu +From: John Galton +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +Message-ID: + +Hello, + +From RFC4551 Introduction: "The server MUST guarantee that each STORE +command performed on the same mailbox ... will get a different mod-sequence +value." + +Can someone explain why the uniqueness requirement is necessary for the +modification sequence? If two metadata items/messages are modified +transactionally and share the same mod-sequence I don't really see any way +that will break any of the proposed IMAP protocol changes for CONDSTORE (as +long as they are updated atomically and a client can't sync between when a +first item gets a mod-sequence and a second item gets the same +mod-sequence). + +Thanks for your time, +John +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22749.mbox:2,S new file mode 100644 index 00000000..98a975c9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22749.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From imap at maclean.com Tue Jan 24 07:39:30 2012 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] FETCH n BODY[1.MIME] for a single-part message +Message-ID: + +I have just come across an IMAP client, ibisMail, that sends + + FETCH n BODY[1.MIME] + +commands for single-part messages. If memory serves, this is the +first time I have seen such behavior and I find myself unclear as to +how a server should handle it. + +It seems especially unclear because, according to RFC 3501, "MIME" in +a FETCH BODY is disallowed without a part specifier but, in this +case, it seems that a BODY[1.MIME] would be equivalent to BODY[MIME] +were that allowed. One could read this as indicating that +BODY[1.MIME] in this context is not considered a proper use of the +protocol. And, while I do not recall, that may be how I interpreted +matters when I wrote my server because it responds with NIL. But +that, evidently, is not what this client expects. + +Considering the case when the MIME part is anything bar a message, it +seems reasonable either to send the full header section of the +message (as I observe the Cyrus server does) or to send just the MIME +headers extracted from the lot. But if the latter is appropriate +then, if I extract all "MIME-Version:" and "Content-:" +headers, is that guaranteed to be inclusive enough? + +And what about the case when the single part is, say, of type +"message/rfc822"? There I am completely lost! + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22752.mbox:2,S new file mode 100644 index 00000000..52af62a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22752.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From janssen at parc.com Thu Dec 15 16:29:01 2011 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] test data set for threading? +Message-ID: <53999.1323995341@parc.com> + +I'm re-implementing my existing threading per RFC 5256, and I'm looking +for some test data sets to test the threading on. That is, collections +of messages along with the correct thread structure for both +ORDEREDSUBJECT and REFERENCES. Anyone know of such a thing? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22756.mbox:2,S new file mode 100644 index 00000000..326bb719 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22756.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From slusarz at curecanti.org Tue Nov 1 22:02:40 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Character encoding question +In-Reply-To: <4EB0C241.6060900@comaxis.com> +References: <4EB0C241.6060900@comaxis.com> +Message-ID: <20111101230240.Horde.I0QRQoF5lbhOsM7wX2WU_SA@bigworm.curecanti.org> + +Quoting Jeff Mckay : + +> I am dealing with a Sun Java imap server that seems a little screwy +> in regards to +> encoding certain non-English character strings - hopefully this is +> my problem but +> I'm not sure what is going on. Here are a couple examples of folder names +> from this server: +> +> visible in client: test/A hegyek h?val bor?tott +> encoded by imap: "test/A hegyek h&APM-val bor&AO0-tott\" +> +> visible in client: Temp/New?? +> encoded by imap: "Temp/New&bUuL1Q-" + +Both of those mailbox names look fine. + +> In the first case, it is necessary to take the &- part and base64 +> decode it, +> then treat the result as modified UTF7. + +I am assuming that you are intending to convert the IMAP server stored +mailbox name to a displayable representation on the client side. If +so, your description is incorrect. The mailbox name on the server +**is** modified UTF-7. Once you base64 decode (and remove the & and - +delimiters), the resulting mailbox string is now in the charset of the +MUA (e.g. UTF-8). + +> In the second case, the base64 decode +> step is unnecessary, it is already in UTF7 format. + +Mailbox names on the IMAP server are ALWAYS modified UTF-7. So not +sure what you mean by "unnecessary". + +> So my question is, when do I do a base64 decode and when not? + +Generally, IMHO, it will be easiest to work with mailbox names in the +native charset on the MUA side. So you only need to convert to/from +modified UTF-7 when either sending or parsing an IMAP command. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22759.mbox:2,S new file mode 100644 index 00000000..2e73a0ed --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22759.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From mrc+imap at panda.com Sat Oct 22 12:20:36 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +Message-ID: + +There is yet another broken IMAP server inflicted upon the world. The +iCloud/.me IMAP server (a.k.a. iSCREAM, st11p00mmm-iscream--5.me.com) +advertises AUTH=PLAIN but doesn't accept it: + 2 authenticate plain + 2 BAD parse error + +Apparently, Apple thinks think that by advertising SASL-IR, a client is +compelled to implement it. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22762.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22762.mbox:2,S new file mode 100644 index 00000000..dcfda3cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22762.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From robm at fastmail.fm Tue Aug 23 19:54:08 2011 +To: imap-protocol@u.washington.edu +From: Robert Mueller +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] IMAP 4 extensions for Addressbook +In-Reply-To: <4E5353C1.1020008@geograph.co.za> +References: <4E5353C1.1020008@geograph.co.za> +Message-ID: <1314154448.23283.140258133035185@webmail.messagingengine.com> + + +> Can anyone tell me how to (or why to not ask) go about getting +> extensions to IMAP, so that address/contacts lists (and maybe even +> calendars/diaries/appointments), can be uniformly stored on an IMAP +> server, so that all the email clients can write extensions for +> themselves to be able to use this central storage. There could be a +> server wide one, plus personal ones per client. + +One option that's been around for a while but never quite caught on as +much as I'd hoped... + +http://wiki.kolab.org/Kolab_Format_Intro +http://wiki.kolab.org/Clients_for_Kolab2 + +I like that in the IMAP model the server is authoritative and +emails/UIDs unchangeable which reduces some of the syncing/caching +problem. However it introduces it's own issues, in that syncing changes +to an item from two different sources a mess if it's not done online, +but that's less and less of an issue these days. + +Rob + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22765.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22765.mbox:2,S new file mode 100644 index 00000000..c3ef9880 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22765.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jul 29 23:00:39 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Determining the mailbox hierarchy prefix when + NAMESPACE is not supported +In-Reply-To: +References: <4DEBB242.2090200@BusCom.net> + + <4E3382E3.3010509@earthlink.net> + +Message-ID: + +On Fri, 29 Jul 2011, Philip Guenther wrote: +> Those that don't believe standards exist in a historical context would +> say that a server can return whatever it wants there and that it has +> no meaning. Those who believe otherwise think the former are nihilists +> that need to be kept away from computers. + +Amen. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22768.mbox:2,S new file mode 100644 index 00000000..ebfa2878 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22768.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From shivdas.tomar at oracle.com Sun Jun 5 12:03:45 2011 +To: imap-protocol@u.washington.edu +From: "shivdas.tomar@oracle.com" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Auto Reply: Imap-protocol Digest, Vol 67, Issue 1 +Message-ID: <2d433cf4-90c7-4d88-8620-a86da102689b@default> + +Hi, +I will be out of office from [5th to 10th] Jun, for any urgent issue, please contact my manager rajesh.ghosh@oracle.com / veshaal.singh@oracle.com. + +Thanks +Shiv + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22772.mbox:2,S new file mode 100644 index 00000000..1a0af900 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22772.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From mrc+imap at panda.com Mon May 2 15:55:08 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Looking for help implementing an IMAP-to-HTTP + gateway for web app developers +In-Reply-To: <33073.1304376339@parc.com> +References: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> + <33073.1304376339@parc.com> +Message-ID: + +On Mon, 2 May 2011, Bill Janssen wrote: +>> The only missing piece is a reliable IMAP-HTTP utility. This need not +>> be an especially complex program, since it just speaks IMAP to the +>> client, +> LOL. "just" + +ROTFL! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22777.mbox:2,S new file mode 100644 index 00000000..184484fe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22777.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From mrc+imap at panda.com Sun Apr 10 23:46:14 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Ignoring "non permanent" flags while STORE +In-Reply-To: +References: +Message-ID: + +You should implement all flags as permanent flags. By doing that, you +won't have the issue at all. + +If, for some reason, your mail store is deficient and can not support all +flags as permanent flags (an example being netnews with .newsrc which only +has a single flag), then the issue comes up. In that case, you should +implement session flags since otherwise there is an inferior user +experience. For example, if \Seen is not a permanent flag, then failure +to implement session flags will cause user-unexpected behavior with FETCH +BODY vs. FETCH BODY.PEEK. + +The "ignore the change" wording was to provide an out for implementations +that did not implement session flags. Such servers always caused bad user +experiences. + +A "session" in IMAP starts at SELECT time and ends when the mailbox is +unselected (subsequent LOGOUT, SELECT, CLOSE, and/or UNSELECT command). +The term "connection" is used for what some people call a "TCP/IP +session". As a single IMAP connection can have multiple sessions with +different mailboxes, the distinction is important. + +There is no expectation that session flag state would be shared with any +other session. + +On Mon, 11 Apr 2011, Norman Maurer wrote: +> Hi there, +> +> I'm currently working on our JAVA bases IMAPServer (james.apache.org) +> and try to get it 100% rfc3501 conform. For testing purposes I use +> dovecots ImapTest (http://www.imapwiki.org/ImapTest). One of the tests +> that are fails is not what I would expect, so maybe someone can tell +> me if I understood the RFC wrong. +> +> When someone try to store a "non permanent" flag implementations are +> free to ignore this. As the RFC state: +> +> +> PERMANENTFLAGS +> +> Followed by a parenthesized list of flags, indicates which of +> the known flags the client can change permanently. Any flags +> that are in the FLAGS untagged response, but not the +> PERMANENTFLAGS list, can not be set permanently. If the client +> attempts to STORE a flag that is not in the PERMANENTFLAGS +> list, the server will either ignore the change or store the +> state change for the remainder of the current session only. +> The PERMANENTFLAGS list can also include the special flag \*, +> which indicates that it is possible to create new keywords by +> attempting to store those flags in the mailbox. +> +> The TestKit seems to expect that even if the flag is "ignored" in +> STORE to see a response which includes the flag. Is this correct ? I +> would have expected that the response would not include this flag and +> just return the other "permanent" flags. So is the TestKit wrong or my +> understanding ;) ? +> +> Some related question... If I would support "session flags", getting +> these reset when the mailbox is unselected or only when the session is +> closed ? And get the session flags shared with other session which +> have the same mailbox selected ? +> +> Thanks for your help, +> Norman +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095057.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095057.22780.mbox:2,S new file mode 100644 index 00000000..656c600f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095057.22780.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From murch at andrew.cmu.edu Tue Mar 8 12:25:18 2011 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Pipelined commands before completion of STARTTLS +Message-ID: <4D7690AE.8020003@andrew.cmu.edu> + +Pursuant to http://www.kb.cert.org/vuls/id/555316 + +I was wondering what the proper server behavior should be if a client +sends commands between STARTTLS and the server response. RFC 3501 +states that this is a client MUST NOT but doesn't discuss how the server +should handle it. + +I can see two possibilities (maybe there are others): + +1. Send a BAD response if a command is pipelined after STARTTLS. Should +BAD be sent in response to STARTTLS or the following command? + +2. Ignore the pipelined cleartext commands. + + +Questions: + +- Should this be done regardless of whether TLS is negotiated successfully? + +- Can/Should the connection be immediately terminated? + +- Should the behavior be any different for POP3, NNTP, SMTP/LMTP? + +-- +Kenneth Murchison +Principle Systems Software Engineer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22595.mbox:2,S new file mode 100644 index 00000000..f15edc6f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22595.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From janssen at parc.com Wed Mar 11 10:30:23 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <55006FA4.3090800@lavabitllc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> <55005876.4070406@lavabitllc.com> + <18002.1426091085@parc.com> <55006FA4.3090800@lavabitllc.com> +Message-ID: <20041.1426095023@parc.com> + +Ladar Levison wrote: + +> > I should admit: we're experimenting with new email MUA. I wrote the +> > MDA to support it, and designed a custom (non-IMAP) MUA/MDA protocol to +> > support unique features of the MUA -- and it doesn't use database +> > replication. +> +> Link? Or you keeping this piece of brilliance all to yourself? + +Sorry; Xerox proprietary for the moment. And I wouldn't call it +brilliant; I try to focus on doing simple things efficiently instead of +clever things incorrectly. But the concept is that the MUA/MDA split is +not necessarily where things should be divided; this system is more like +the split client you see in so many Web apps, where part of it runs in +the back-end and part in the front-end. So the protocol is about +supporting the app, rather than about email per se. + +> I'm still looking for inspiration on my protocol design effort. I know +> how to handle most of the functionality, but I'm still wrestling with +> how to sync an encrypted binary file back to the server in a way that is +> safe, and not overly complex... So when I hear "replication" I start to +> think you may have the answer I'm looking for. + +There's always MH on top of AFS (http://www.openafs.org/)? Has nmh +been ported to Android/iOS? + +> Of course before I worry about that problem I still need to decide which +> scheme I'm going with. Lately I've been leaning towards sticking with a +> line based protocol, aka, IMAP, but having it to send/receive JSON +> objects... + +Good luck! + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22641.mbox:2,S new file mode 100644 index 00000000..62cf6a3a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22641.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Mar 20 12:28:51 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> +Message-ID: <2bd1c873-e62e-42ec-b583-196bb619de04@gulbrandsen.priv.no> + +On Thursday, March 20, 2014 7:48:51 PM CEST, Bron Gondwana wrote: +> I agree that two step is probably enough - one for upload, and one for +> "send existing message". + +I too like two steps better than either one or three. But I haven't a +strong argument why two is better than one. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22682.mbox:2,S new file mode 100644 index 00000000..80ec7dd1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22682.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Mar 27 19:35:39 2013 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + <5152E3E6.40506@aj.jp.nec.com> <1364388724.13923.97.camel@innu> + + +Message-ID: <4F401469-14A2-48FA-A6F7-B667A52E46C4@orthanc.ca> + + +On 2013-03-27, at 11:47 AM, Dave Cridland wrote: + +> I'm hesitant to suggest it, but is it worth sending BYE and dropping the connection? It's sailing just within the lines of the specification, I think. + +I think this is perfectly valid behaviour, and well within the spec. A smart server might choose whether the eat-and-continue vs. bye-and-punt based on the size of the proposed literal+, but punting is entirely valid. + +And while the "nibble at the data slowly" idea is eeevily enticing, it's going to wreak havoc with the battery on my mobile, which is almost guaranteed to be running the most brain-dead IMAP client on the planet. (Servers factoring in aggregate data link speed in their eat-vs-bye calculations will score many karma points in my book.) + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22688.mbox:2,S new file mode 100644 index 00000000..d21c0f3e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22688.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Tue Jan 22 01:20:28 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +In-Reply-To: +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + +Message-ID: <1358846428.12608.2.camel@hurina> + +On Mon, 2013-01-21 at 22:20 +0000, Dave Cridland wrote: +> +> On 21 Jan 2013 21:50, "Michael M Slusarz" +> wrote: +> > OR... is the fact that this is a FLAGS response unattached to the +> given UID query mean that this is OK? In other words... since FLAGS +> wasn't explicitly requested by the FETCH command, is this untagged +> response legal as a unilateral flag change response sent by the +> server, regardless of the fact that it appears during an active UID +> command? This doesn't seem correct, and it can be argued that the +> BODY[HEADER] access itself "caused" the FLAGS FETCH response anyway. +> +> Right, this is indeed a unilaterally sent FETCH, and it wasn't really +> caused by the other FETCH - it's just been batched until a command was +> in progress. Or maybe it just happens to have been sent at the same +> time. +> +> In practise, it's likely that the IMAP server explicitly checked flag +> changes when it received the FETCH, but that's an implementation +> detail. +> +> In any case, I don't think this is a bug. + +Assuming it was unilaterally sent FETCH and not a normal reply for +setting the \Seen flag by UID FETCH BODY[], I agree. Especially when +NOTIFY is enabled this won't even be possible to avoid. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22697.mbox:2,S new file mode 100644 index 00000000..fb66990d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22697.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From jkt at flaska.net Fri Dec 28 23:51:18 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Missing UIDNEXT during mailbox synchronization +In-Reply-To: <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> +Message-ID: + +On Friday, 28 December 2012 20:33:10 CEST, Bron Gondwana wrote: +> The more interesting question is: what do you need to know it for anyway? + +It's needed for an old heuristic -- if UIDVALIDITY is the same and (exists - old_exists) == (uidnext - old_uidnext), then the mailbox has only seen new arrivals since the last time, so the client doesn't have to fetch the whole UID-seq mapping once again, just the new arrivals. (If the first difference is higher, then the server is broken or the local cache was corrupted, so a revert to a dumb sync.) + +Which is also the reason why my code checks for missing UIDNEXT -- when it's not available, this heuristic cannot work and we have to go back to full UID syncing. + +Cheers, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22701.mbox:2,S new file mode 100644 index 00000000..005c1e44 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22701.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From slusarz at curecanti.org Mon Nov 26 14:57:21 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + +Message-ID: <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> + +Quoting Brandon Long : + +> By polling, I assume you mean for calling STATUS? + +Well hopefully LIST-STATUS exists on the server, because that makes a +huge performance difference. (For some reason, a larger number of +users will whine and complain incessantly unless the ability to poll +all mailboxes is enabled. Why anybody wants to poll mailboxes other +than those in which messages are being delivered are beyond me. But +this is a feature that users demand, so we have to support it +unfortunately.) + +> Imagine, instead of a "special case" resume, that we're instead treating +> this as a client that often re-connects. You'd treat IMAP the same way a +> normal "connected" client would, and the server would just keep your +> connection in the same connection state, possibly holding any results it +> would send you. You would just "reconnect/resume" and then issue the next +> command. You'd be immediately back in the selected state, but there +> wouldn't be any cost associated with it (from the client side) except +> perhaps having to update client state if the server gives you updates, but +> that just results in faster updates of server state. + +This would be great. But implementation of this would be orders of +magnitude more difficult than the more simple SUSPEND case and, at +least in part, would be duplicating behavior of QRESYNC. + +> You could even mimic Outlook by having a separate "virtual connection" that +> handles STATUS calls, and one "virtual connection" for actual folder +> actions. + +This doesn't help for disconnected clients though. + +> This is essentially trying to turn IMAP into a more HTTP like protocol. + +Not necessarily a bad thing. It would be fantastic if there was an +option to send "quick" commands that look like: + +AUTHENTICATE user password FETCH + +But such a drastic change is no longer IMAP 4. So not really worth +discussing on this list. + +> It is more expensive for a server to offer this, though as long as the +> client has to "request" a session, it would actually be cheaper for the +> server to maintain that state than re-loading it between connections. + +What I get out of this is that you think QRESYNC was the result of an +incorrect design decision and, instead, the proposal you previously +linked to in this thread should have won out. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22732.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22732.mbox:2,S new file mode 100644 index 00000000..02cec10f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22732.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From aclark at ghoti.org Fri Apr 20 13:46:17 2012 +To: imap-protocol@u.washington.edu +From: Ashley Clark +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] BODY.PEEK[HEADER] response +In-Reply-To: <264FEBCB-168D-4E62-83C2-FF017E51906D@iki.fi> +References: <0F7D3273-B2F6-4EC8-BAE5-F08B39A94CBB@ghoti.org> + <264FEBCB-168D-4E62-83C2-FF017E51906D@iki.fi> +Message-ID: <07E57B47-FD3F-4904-8FCE-73F5DA4702CB@ghoti.org> + +On Apr 20, 2012, at 1:12 PM, Timo Sirainen wrote: + +> On 19.4.2012, at 3.32, Ashley Clark wrote: +> +>> I think I may be dealing with a buggy server but I wanted to verify my assumptions first. +> +> Yes, I'd say so. +> +>> upon making this request to a particular server, I'm seeing this kind of response: +>> +>> C: 3 fetch 1 body.peek[header] +>> S: * 1 FETCH (BODY[HEADER] {2006} +>> S: +>> S: +>> S: +>> S: +>> S: ) +>> S: 3 OK FETCH complete +>> +>> this seems like one newline too many in the response, but I can't find anything specific that dictates how many newlines are acceptable at the end of a BODY[HEADER] request. +> +> BODY[HEADER] sends the message header. The RFC 822 header ends with an empty line. The next newline belongs to message body, so it can't be part of the header. + + + +That's the same conclusion I came to, but I wanted to make sure I wasn't overlooking some detail in the specs elsewhere. + + +Thanks. +Ashley + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22743.mbox:2,S new file mode 100644 index 00000000..f51389ed --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22743.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dkarp at zimbra.com Tue Mar 20 13:42:17 2012 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +In-Reply-To: +Message-ID: <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> + +> From RFC4551 Introduction: "The server MUST guarantee that each STORE +> command performed on the same mailbox ... will get a different +> mod-sequence value." +> +> Can someone explain why the uniqueness requirement is necessary for +> the modification sequence? If two metadata items/messages are +> modified transactionally and share the same mod-sequence I don't +> really see any way that will break any of the proposed IMAP protocol +> changes for CONDSTORE (as long as they are updated atomically and a +> client can't sync between when a first item gets a mod-sequence and +> a second item gets the same mod-sequence). + +I *think* that you're incorrectly interpreting "each STORE command" as +"each message affected by a STORE command". The following command is +one STORE command, not ten: + + A001 STORE 1:10 +FLAGS (\Deleted) + +Your single transactional modification of those ten messages is allowed +to use the same mod-sequence value. + +- Dan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22749.mbox:2,S new file mode 100644 index 00000000..be268641 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22749.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jan 24 09:05:05 2012 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] FETCH n BODY[1.MIME] for a single-part message +In-Reply-To: <201201241544.q0OFi3S2028880@mxout13.cac.washington.edu> +References: <201201241544.q0OFi3S2028880@mxout13.cac.washington.edu> +Message-ID: + +On Tue, 24 Jan 2012, Pete Maclean wrote: +> I have just come across an IMAP client, ibisMail, that sends +> FETCH n BODY[1.MIME] +> commands for single-part messages. If memory serves, this is the +> first time I have seen such behavior and I find myself unclear as to +> how a server should handle it. + +Simple answer: for all body parts that are not children of a MULTIPART, +the "MIME" specifier returns the empty string (not NIL). + +> Considering the case when the MIME part is anything bar a message, it +> seems reasonable either to send the full header section of the +> message (as I observe the Cyrus server does) or to send just the MIME +> headers extracted from the lot. + +Both of these behaviors are incorrect. MIME returns only the mini-headers +of a MIME encapsulated part (under the "--boundary") and does not parse +or extract from any message header. + +> And what about the case when the single part is, say, of type +> "message/rfc822"? There I am completely lost! + +Return the empty string. To reiterate: + +MIME returns only the mini-headers of a MIME encapsulated part (under the +"--boundary") and does not parse or extract from any message header. + +Only a child of a MULTIPART has a .MIME part. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22752.mbox:2,S new file mode 100644 index 00000000..040e22d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22752.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From tss at iki.fi Fri Dec 16 00:27:31 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] test data set for threading? +In-Reply-To: <53999.1323995341@parc.com> +References: <53999.1323995341@parc.com> +Message-ID: <795F5BFE-F09A-4327-B649-169945800B27@iki.fi> + +On 16.12.2011, at 2.29, Bill Janssen wrote: + +> I'm re-implementing my existing threading per RFC 5256, and I'm looking +> for some test data sets to test the threading on. That is, collections +> of messages along with the correct thread structure for both +> ORDEREDSUBJECT and REFERENCES. Anyone know of such a thing? + +imaptest has some tests for REFERENCES: http://hg.dovecot.org/imaptest/file/tip/src/tests + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22756.mbox:2,S new file mode 100644 index 00000000..6f7ba9ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22756.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From jeff.mckay at comaxis.com Wed Nov 2 10:53:21 2011 +To: imap-protocol@u.washington.edu +From: Jeff Mckay +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Character encoding question +In-Reply-To: <20111101230240.Horde.I0QRQoF5lbhOsM7wX2WU_SA@bigworm.curecanti.org> +References: <4EB0C241.6060900@comaxis.com> + <20111101230240.Horde.I0QRQoF5lbhOsM7wX2WU_SA@bigworm.curecanti.org> +Message-ID: <4EB18391.4040202@comaxis.com> + +Thanks for your comments. I'm still a bit confused. Let me clarify +what I am seeing in +these two examples. In the first, one of the characters in question is +"lower case o with +acute" which is supposed to be xF3 in ISO-8859-2 and xC3 xB3 in UTF-8. +The imap +server represents this as ampersand followed by AMP followed by a dash +(I am writing +out the description so it does not get interpreted incorrectly +somewhere). If I take the +AMP and run it through a base64 decoder, I get xF3. So far so good. + +In the second example, we have the letters Temp/New followed by a couple +Chinese +characters that I don't know the names of. The two Chinese characters +are represented +in imap by ampersand followed by bUuL1Q and the closing dash. When I base64 +decode this I end up with x6D x4B x8B xD5. This appears to be big-endian +UTF-16. I have to byte-reverse each 2 byte sequence, but then I can convert +it to UTF8 (my target) and see the Chinese characters. I could also take +the original data and stick a + in front of it (ending up with +bUuL1Q) and +convert this from UTF7 to UTF8 and end up with valid characters. This +last part I really don't understand - if it is base64 encoded, how is +that valid +UTF7? Anyway, I don't seem to have an algorithm that will work on both +of these examples, and no way to detect which one I should use. Obviously +I am totally confused about what I am doing, but any further insight would +be appreciated. + +Michael M Slusarz wrote: +> Quoting Jeff Mckay : +> +>> I am dealing with a Sun Java imap server that seems a little screwy +>> in regards to +>> encoding certain non-English character strings - hopefully this is my +>> problem but +>> I'm not sure what is going on. Here are a couple examples of folder +>> names +>> from this server: +>> +>> visible in client: test/A hegyek h?val bor?tott +>> encoded by imap: "test/A hegyek h&APM-val bor&AO0-tott\" +>> +>> visible in client: Temp/New?? +>> encoded by imap: "Temp/New&bUuL1Q-" +> +> Both of those mailbox names look fine. +> +>> In the first case, it is necessary to take the &- part and base64 +>> decode it, +>> then treat the result as modified UTF7. +> +> I am assuming that you are intending to convert the IMAP server stored +> mailbox name to a displayable representation on the client side. If +> so, your description is incorrect. The mailbox name on the server +> **is** modified UTF-7. Once you base64 decode (and remove the & and - +> delimiters), the resulting mailbox string is now in the charset of the +> MUA (e.g. UTF-8). +> +>> In the second case, the base64 decode +>> step is unnecessary, it is already in UTF7 format. +> +> Mailbox names on the IMAP server are ALWAYS modified UTF-7. So not +> sure what you mean by "unnecessary". +> +>> So my question is, when do I do a base64 decode and when not? +> +> Generally, IMHO, it will be easiest to work with mailbox names in the +> native charset on the MUA side. So you only need to convert to/from +> modified UTF-7 when either sending or parsing an IMAP command. +> +> michael +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22759.mbox:2,S new file mode 100644 index 00000000..7808dcbd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22759.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From tss at iki.fi Sat Oct 22 12:39:35 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: +References: +Message-ID: <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi> + +Related: I added http://imapwiki.org/ServerBugs page a while ago and there are now two servers listed there. The idea is to have a page that lists major bugs that are unlikely to get fixed in servers (i.e. big commercial ones that don't really care). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22768.mbox:2,S new file mode 100644 index 00000000..7a0c7315 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22768.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From imap at maclean.com Sun Jun 5 12:24:13 2011 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBBEC1.3080600@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net> <4DEBBEC1.3080600@BusCom.net> +Message-ID: + +At 01:37 PM 6/5/2011, Lynn W. Taylor wrote: +>P.S. I'm not looking for a complete roadmap, I can fill in most of the detail. +> +>Tags and UIDs are not a big deal. +> +>What I want to do is get enough IMAP working that I can start +>testing with a client, even if the server isn't 100% practical, +>instead of implementing some critical command last, and finding out +>that I made some critical mistake very early in the process. + +Here are 10 tips based on my own experience. From what you say, some +of these may not be relevant to your case but I will be inclusive. I +am also assuming both that you are not starting out intimately +familiar with the protocol and that messages are stored in +RFC2822-MIME format. A general guideline is that, while books may +help you get a feeling for IMAP -- they did for me, when actually +implementing it is vital to pay full attention to the relevant RFCs. + +1). You will need a fairly sophisticated message parser, notably for +extracting MIME parts and generating BODYSTRUCTURE information. If +you do not start out with such a parser ready-made then you might +well choose to begin by building one. + +2). If your mailstore does not have UIDs (or something that can be +suitably mapped into UIDs) then decide how you will create and store +UIDs. Incidentally IMAP specs refer to a UID command; I find it +easier to view this as a command qualifier. + +3). Decide what permanents flags to support and how. Decide what +hierarchy delimiter to use; I believe that most servers use slash, +backslash or dot but I have not seen a problem using even a +non-graphic character such as Rubout (ASCII 127). By the way, I +think that RFC 3501 does not make this clear but the hierarchy +delimiter must be a 7-bit ASCII character. + +4). Decide what data to keep in memory for each message in an open +mailbox. (By "open", I mean one for which a session is in progress, +that is opened as the result of a SELECT or EXAMINE command.) A +likely minimum would be UID, IMAP message flags, message size and, of +course, a reference to the message itself. I am assuming that this +information is indexed by message number and hence that that is not +explicitly stored. You may find reason to add more data such as a +flag indicating if the message is matched in a current SEARCH. + +5). I don't recall if I did this when I wrote my server, but I would +probably start now by implementing the LIST command. This involves a +number of elements including modified UTF-7 encoding and +understanding the distinction between the two arguments of the +command. I wrote unit test programs for my backend LIST code (and +that of several other commands) and I highly recommend doing the +same. These were simple console programs each of which took a set of +IMAP command arguments as input and emitted the results as +output. In the early stages, testing with actual IMAP connections +(be they from a client or a test program) is unnecessarily +awkward. (I am assuming here that there are other means, outside of +the IMAP server, to create mailboxes; if this does not hold then you +may want to implement CREATE first.) + +6). Next I would implement SELECT and EXAMINE. There are intricacies +here such as checking what rights the user in question has to the +mailbox and ensuring coordination among threads (and, if relevant, +with other programs) that are simultaneously accessing the mailbox. + +7). Next I would implement FETCH. This is a biggie because of the +range of data items, macros, dealing with literals, and so on. + +8). Perhaps at about this point, I would work on the command +processor (recognising commands, checking mode, parsing arguments, +etc.) and, unless I had a ready-made one, the listener. This allows +one to start testing online. I suggest implementing the command +processor at a fairly late stage because, for some commands, +argument-parsing is tricky and you will likely find it easier once +you have implemented the commands themselves and have a good +understanding of how they work -- although the critical thing to do +here is to follow the RFC's grammar very closely. AUTHENTICATION can +be done at any stage since you can fake it until such point as you +choose to made it real. + +9). Next I would take care of the "minor" commands: CREATE, LSUB, +NOOP, CLOSE, STORE, CAPABILITY, APPEND, etc. But do not think of +COPY as minor -- it can be a substantial job because of the required atomicity. + +10). I would leave SEARCH for last. When I wrote my server, I left +it to last because I feared it would be the most difficult to do. I +was wrong; it proved much easier than I had expected but it is, +nevertheless, a hefty amount of work. It may also be fair to say +that it is the least critical command but, all the same, it has to be +done and done completely (unless of course your client is intended to +work with a strictly limited set of clients that do not use it.) And +testing SEARCH can be hard because few clients implement it well; +indeed, some do not offer it at all. Of course, if your mailstore +manager already has search capabilities then you may be able to +leverage those and make the job a snap. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22772.mbox:2,S new file mode 100644 index 00000000..a4a50f54 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22772.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dave at cridland.net Tue May 3 01:27:17 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Looking for help implementing an IMAP-to-HTTP + gateway for web app developers +In-Reply-To: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +References: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +Message-ID: <2869.1304411237.632298@puncture> + +The most successful parallel I've seen has been the dployment of XMPP +on HTTP services. There, no attempt was made to translate between +XMPP and "Web" paradigms, instead XMPP was wrapped into BOSH +(XEP-0124), which basically provides the state and stream semantics +that XMPP (and IMAP) needs. + +This basically sidesteps the issues that Mark (rightly) raises, plus +it means your problem becomes writing an IMAP client in Javascript. + +XMPP/BOSH "connection managers" have been built independent of XMPP +servers, so it should be reasonably possible to do the same for an +IMAP/BOSH. + +It'd allow for some very interesting webmail code. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22777.mbox:2,S new file mode 100644 index 00000000..12f20d41 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22777.mbox:2,S @@ -0,0 +1,103 @@ +MBOX-Line: From norman at apache.org Mon Apr 11 01:55:06 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Ignoring "non permanent" flags while STORE +In-Reply-To: +References: + +Message-ID: + +Hi Mark, + +thanks your quick response. I want to support at least the fallback to +session flags if the storage is not able to handle permant flags, as +we have an api which allow to easily plugin other storages written by +devs. + +Anyway your response answer all my questions and is exactly what I'm +looking for ;) + +Thanks, +Norman + + + +2011/4/11 Mark Crispin : +> You should implement all flags as permanent flags. ?By doing that, you +> won't have the issue at all. +> +> If, for some reason, your mail store is deficient and can not support all +> flags as permanent flags (an example being netnews with .newsrc which only +> has a single flag), then the issue comes up. ?In that case, you should +> implement session flags since otherwise there is an inferior user +> experience. ?For example, if \Seen is not a permanent flag, then failure +> to implement session flags will cause user-unexpected behavior with FETCH +> BODY vs. FETCH BODY.PEEK. +> +> The "ignore the change" wording was to provide an out for implementations +> that did not implement session flags. ?Such servers always caused bad user +> experiences. +> +> A "session" in IMAP starts at SELECT time and ends when the mailbox is +> unselected (subsequent LOGOUT, SELECT, CLOSE, and/or UNSELECT command). +> The term "connection" is used for what some people call a "TCP/IP +> session". ?As a single IMAP connection can have multiple sessions with +> different mailboxes, the distinction is important. +> +> There is no expectation that session flag state would be shared with any +> other session. +> +> On Mon, 11 Apr 2011, Norman Maurer wrote: +>> +>> Hi there, +>> +>> I'm currently working on our JAVA bases IMAPServer (james.apache.org) +>> and try to get it 100% rfc3501 conform. For testing purposes I use +>> dovecots ImapTest (http://www.imapwiki.org/ImapTest). One of the tests +>> that are fails is not what I would expect, so maybe someone can tell +>> me if I understood the RFC wrong. +>> +>> When someone try to store a "non permanent" flag implementations are +>> free to ignore this. As the RFC state: +>> +>> +>> ? ? PERMANENTFLAGS +>> +>> ? ? ? ?Followed by a parenthesized list of flags, indicates which of +>> ? ? ? ?the known flags the client can change permanently. ?Any flags +>> ? ? ? ?that are in the FLAGS untagged response, but not the +>> ? ? ? ?PERMANENTFLAGS list, can not be set permanently. ?If the client +>> ? ? ? ?attempts to STORE a flag that is not in the PERMANENTFLAGS +>> ? ? ? ?list, the server will either ignore the change or store the +>> ? ? ? ?state change for the remainder of the current session only. +>> ? ? ? ?The PERMANENTFLAGS list can also include the special flag \*, +>> ? ? ? ?which indicates that it is possible to create new keywords by +>> ? ? ? ?attempting to store those flags in the mailbox. +>> +>> The TestKit seems to expect that even if the flag is "ignored" in +>> STORE to see a response which includes the flag. Is this correct ? I +>> would have expected that the response would not include this flag and +>> just return the other "permanent" flags. So is the TestKit wrong or my +>> understanding ;) ? +>> +>> Some related question... If I would support "session flags", getting +>> these reset when the mailbox is unselected or only when the session is +>> closed ? And get the session flags shared with other session which +>> have the same mailbox selected ? +>> +>> Thanks for your help, +>> Norman +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095058.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095058.22780.mbox:2,S new file mode 100644 index 00000000..7e22d44b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095058.22780.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From guenther+imap at sendmail.com Tue Mar 8 13:58:18 2011 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Pipelined commands before completion of STARTTLS +In-Reply-To: <4D7690AE.8020003@andrew.cmu.edu> +References: <4D7690AE.8020003@andrew.cmu.edu> +Message-ID: + +On Tue, 8 Mar 2011, Ken Murchison wrote: +> Pursuant to http://www.kb.cert.org/vuls/id/555316 +> +> I was wondering what the proper server behavior should be if a client +> sends commands between STARTTLS and the server response. RFC 3501 +> states that this is a client MUST NOT but doesn't discuss how the server +> should handle it. +> +> I can see two possibilities (maybe there are others): +> +> 1. Send a BAD response if a command is pipelined after STARTTLS. +> Should BAD be sent in response to STARTTLS or the following command? +> +> 2. Ignore the pipelined cleartext commands. + +3. immediately close the connection + +4. Treat data after the CRLF as data for the TLS handshake (i.e., to shave + an RTT off in the success case). I seem to recall a proposal for an + SMTP extension to indicate that the server would guarantee that + STARTTLS would succeed and that it could handle having the client's + handshake message pipelined with the STARTTLS request. (QTLS was it?) + +The standard places no requirements on the server's behavior if the client +violates that MUST NOT. Common sense says "don't be insecure", but since +it's a non-obvious problem it probably should be called out if/when the +standard is revised. + +However, I don't think the standard should _require_ behavior (1), (2), or +(3), as behavior (4) should be permitted going forward. + + +> Questions: +> +> - Should this be done regardless of whether TLS is negotiated successfully? +> - Can/Should the connection be immediately terminated? +> - Should the behavior be any different for POP3, NNTP, SMTP/LMTP? + +I would say: + - don't care, as long as it doesn't use insecure data + - behavior (3) seems legal to me (client violated a MUST NOT, so even + nasal daemons may be summoned), so "can", but I don't think that's + the best way to handle it + - I see no particular reason for the protocols to differ, but neither + do I think a common behavior is required + + +Philip Guenther +guenther@sendmail.com + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22595.mbox:2,S new file mode 100644 index 00000000..03791a6d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22595.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From jguthrie at brokersys.com Wed Mar 11 11:22:42 2015 +To: imap-protocol@u.washington.edu +From: Jonathan Guthrie +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] An announcement +In-Reply-To: +References: <54FF7146.9020202@brokersys.com> + +Message-ID: <550087F2.4070705@brokersys.com> + +That is correct. + +It's based on this Internet server library that I created called clotho. + +Since clotho does the socket manipulation, the bulk of the work of +supporting STARTTLS goes in there, and I just added that over my winter +break, so adding it to the imapd is mostly a matter of adding the +appropriate call in the right place. + +On 3/11/2015 7:18 AM, Dave Cridland wrote: +> For those struggling, I think it's this one: +> https://github.com/JonathanGuthrie/wodin +> +> On 10 March 2015 at 22:33, Jonathan Guthrie > wrote: +> +> A long time ago, I wrote an IMAP server for my day job and when +> the project was cancelled, I kept a copy of the source code. I +> thought it had some really cool ideas in it, and I couldn't bear +> to just see it deleted. Later on, I received permission to do +> with it what I will and I've worked on it off and on since then. +> +> At the moment, it's not really ready for use. For example, +> STARTTLS isn't implemented, and there's no locks for mbox format +> (and it implements the wrong mbox format, besides.) Also, I pretty +> much just punted on the Unicode support. There isn't enough time +> and it's been just a hobby for more than a decade. +> +> Anyway, it's up on github, if anyone is interested. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22641.mbox:2,S new file mode 100644 index 00000000..4725abdc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22641.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Mar 20 12:30:09 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> +Message-ID: + +On Thursday, March 20, 2014 8:07:29 PM CEST, Jan Kundr?t wrote: +> The fact is that compared to the API which is available to +> their own client, the interface made available via IMAP is +> seriously limited. Take your own conclusions from that. + +Slack must be cut ;) + +Their own client is maintained by people who have lunch with the server +developers every other day. You're a client developer, but you don't have +lunch with the server people. + +Brandon will tell you that he wants to treat you exactly as well as he +treats their own client developers, and I think he honestly does want to do +that. I even think their official policy matches Brandon's opinion, if they +have an official policy. But you don't eat lunch with Brandon's team, and +having lunch beats both official policies and preferences. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22682.mbox:2,S new file mode 100644 index 00000000..bad60c84 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22682.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From imap at maclean.com Wed Mar 27 19:56:26 2013 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <5A6676FF-E967-48F1-839C-56149288A402@orthanc.ca> +References: + + + + <78AB33AC-4EFC-42AF-80F8-AD1FB3C26746@iki.fi> + <5A6676FF-E967-48F1-839C-56149288A402@orthanc.ca> +Message-ID: + +If we have to submit to per-mailbox limits then another idea would be +to add a MAXAPPENDSIZE item to the STATUS command. This could +perhaps be a 64-bit value like HIGHESTMODSEQ. And it could be set to +zero to indicate that the mailbox cannot accept APPENDs at all. + +Pete Maclean + +At 10:30 PM 3/27/2013, Lyndon Nerenberg wrote: + +>On 2013-03-27, at 3:27 AM, Timo Sirainen wrote: +> +> > So .. maybe a per-mailbox limit isn't that useful. I was mainly +> thinking about different users having different limits, causing +> shared mailboxes to have different limits. Or maybe some other +> special mailboxes with special rules. +> +>Why not require the server to issue a [LITERALPLUSSIZE nnn] whenever +>the server's state changes the value it's prepared to deal +>with. That makes it agnostic to any existing and future extensions. +> +>You could then set limits by user, by folder, by user+folder, +>etc. Lots of flexibility, and it never has to be updated for +>follow-on capabilities. (I run in fear of the 64-bit proposal.) +> +>--lyndon +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22688.mbox:2,S new file mode 100644 index 00000000..373a8ed8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22688.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From slusarz at curecanti.org Wed Jan 23 20:20:37 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +In-Reply-To: <1358846428.12608.2.camel@hurina> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> +Message-ID: <20130123212037.Horde._IahQM6IYatHLw2AFgUPnw1@bigworm.curecanti.org> + +Quoting Timo Sirainen : + +> On Mon, 2013-01-21 at 22:20 +0000, Dave Cridland wrote: +>> +>> On 21 Jan 2013 21:50, "Michael M Slusarz" +>> wrote: +>> > OR... is the fact that this is a FLAGS response unattached to the +>> given UID query mean that this is OK? In other words... since FLAGS +>> wasn't explicitly requested by the FETCH command, is this untagged +>> response legal as a unilateral flag change response sent by the +>> server, regardless of the fact that it appears during an active UID +>> command? This doesn't seem correct, and it can be argued that the +>> BODY[HEADER] access itself "caused" the FLAGS FETCH response anyway. +>> +>> Right, this is indeed a unilaterally sent FETCH, and it wasn't really +>> caused by the other FETCH - it's just been batched until a command was +>> in progress. Or maybe it just happens to have been sent at the same +>> time. +>> +>> In practise, it's likely that the IMAP server explicitly checked flag +>> changes when it received the FETCH, but that's an implementation +>> detail. +>> +>> In any case, I don't think this is a bug. +> +> Assuming it was unilaterally sent FETCH and not a normal reply for +> setting the \Seen flag by UID FETCH BODY[], I agree. Especially when +> NOTIFY is enabled this won't even be possible to avoid. + +Well... the \Seen flag response *is* caused by the UID FETCH BODY[]. +But it could be from some other previous operation as well. From a +client point of view there is no way of knowing what caused the flag, +so this is not determinative as to whether the behavior is correct. + +For the example I provided previously, I can safely ignore that +non-UID FLAGS response because we aren't caching flag data for +non-CONDSTORE servers. But what about this: + +a ENABLE QRESYNC +* ENABLED QRESYNC +a OK ENABLE completed. +b SELECT INBOX +[...] +* OK [HIGHESTMODSEQ 5] Highest +b OK [READ-WRITE] SELECT completed. +c UID FETCH 9 (BODY[HEADER]) +* 1 FETCH (UID 9 BODY[HEADER] {1409} +[...headers...] +) +* 1 FETCH (MODSEQ (6) FLAGS (\Seen)) +c OK FETCH completed. + +Are we accepting that this is allowable? Even if it is the +BODY[HEADER] FETCH that is causing the \Seen flag to be set? Looking +at the QRESYNC docs - it appears that ONLY the FETCH untagged +responses to the SELECT/EXAMINE are required to contain both UID & +MODSEQ information. All other FLAGS responses require MODSEQ but not +UID. This is a subtlety that I don't think I've thought about before. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22697.mbox:2,S new file mode 100644 index 00000000..02ad367e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22697.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From jkt at flaska.net Sat Dec 29 00:00:54 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Missing UIDNEXT during mailbox synchronization +In-Reply-To: <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> +Message-ID: + +On Friday, 28 December 2012 19:27:25 CEST, Michael M Slusarz wrote: +> Courier definitely does this, and it is not against spec. + +Looks like that part of 3501 was not updated from 2060, then -- the UIDNEXT is listed as REQUIRED in the description of the SELECT command, as Bron pointed out. + +The safest thing to assume is probably that one is talking to a 2060-compliant server when UIDNEXT is missing. The text you quote indicates that UIDVALIDITY was not required in 2060, either; my code will work in such case, but the cache will be invalidated on next reconnect. + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22701.mbox:2,S new file mode 100644 index 00000000..3bf363d6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22701.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Mon Nov 26 15:10:43 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + + <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> +Message-ID: <56138D73-A10B-4D88-A641-4F97DEA6B340@iki.fi> + +On 27.11.2012, at 0.57, Michael M Slusarz wrote: + +>> By polling, I assume you mean for calling STATUS? +> +> Well hopefully LIST-STATUS exists on the server, because that makes a huge performance difference. (For some reason, a larger number of users will whine and complain incessantly unless the ability to poll all mailboxes is enabled. Why anybody wants to poll mailboxes other than those in which messages are being delivered are beyond me. But this is a feature that users demand, so we have to support it unfortunately.) + +If server supports both NOTIFY and SUSPEND, you wouldn't need to do such polling. Server just sends the updates when restoring. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22743.mbox:2,S new file mode 100644 index 00000000..801d6b3e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22743.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From johngalton217 at gmail.com Tue Mar 20 14:00:36 2012 +To: imap-protocol@u.washington.edu +From: John Galton +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +In-Reply-To: <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> +References: + <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> +Message-ID: + +On Tue, Mar 20, 2012 at 1:42 PM, Dan Karp wrote: + +> > From RFC4551 Introduction: "The server MUST guarantee that each STORE +> > command performed on the same mailbox ... will get a different +> > mod-sequence value." +> > +> > Can someone explain why the uniqueness requirement is necessary for +> > the modification sequence? If two metadata items/messages are +> > modified transactionally and share the same mod-sequence I don't +> > really see any way that will break any of the proposed IMAP protocol +> > changes for CONDSTORE (as long as they are updated atomically and a +> > client can't sync between when a first item gets a mod-sequence and +> > a second item gets the same mod-sequence). +> +> I *think* that you're incorrectly interpreting "each STORE command" as +> "each message affected by a STORE command". The following command is +> one STORE command, not ten: +> +> A001 STORE 1:10 +FLAGS (\Deleted) +> +> Your single transactional modification of those ten messages is allowed +> to use the same mod-sequence value. +> + +Ok that's fine for STORE but what about other actions that may modify +multiple messages at once (say inserting/deleting mails from the mailbox +OOB with IMAP). Sounds like what really the RFC is getting at is that each +MODSEQ value must be a transactional state, that clients will always see +all changes for a given MODSEQ (i.e. multiple FETCH MODSEQ should always +return the same results, nothing new). + +For example, conversely, if that single "STORE 1:10 +FLAGS (\Deleted)" used +the same MODSEQ for all 10 messages and the client could "FETCH MODSEQ" +multiple times while the modification was executing and see new results on +subsequent attempts, that should be disallowed. + +Thanks. + + +> +> - Dan +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22749.mbox:2,S new file mode 100644 index 00000000..b159b232 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22749.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From tss at iki.fi Wed Jan 25 05:26:45 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] FETCH n BODY[1.MIME] for a single-part message +In-Reply-To: +References: <201201241544.q0OFi3S2028880@mxout13.cac.washington.edu> + +Message-ID: <2607DEC0-FA3A-4D7D-885E-ECA7B2CF9EA8@iki.fi> + +On 24.1.2012, at 19.05, Mark Crispin wrote: + +> On Tue, 24 Jan 2012, Pete Maclean wrote: +>> I have just come across an IMAP client, ibisMail, that sends +>> FETCH n BODY[1.MIME] +>> commands for single-part messages. If memory serves, this is the +>> first time I have seen such behavior and I find myself unclear as to +>> how a server should handle it. +> +> Simple answer: for all body parts that are not children of a MULTIPART, +> the "MIME" specifier returns the empty string (not NIL). +.. +> Only a child of a MULTIPART has a .MIME part. + +I would think it is incorrect for the client to even ask for that, so it's more of a GIGO issue.. It looks like Dovecot returns the header, but I didn't intentionally make it do that, it just happens for some reason. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22752.mbox:2,S new file mode 100644 index 00000000..fdc587f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22752.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From janssen at parc.com Fri Dec 16 09:22:56 2011 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] test data set for threading? +In-Reply-To: <795F5BFE-F09A-4327-B649-169945800B27@iki.fi> +References: <53999.1323995341@parc.com> + <795F5BFE-F09A-4327-B649-169945800B27@iki.fi> +Message-ID: <63494.1324056176@parc.com> + +Timo Sirainen wrote: + +> On 16.12.2011, at 2.29, Bill Janssen wrote: +> +> > I'm re-implementing my existing threading per RFC 5256, and I'm looking +> > for some test data sets to test the threading on. That is, collections +> > of messages along with the correct thread structure for both +> > ORDEREDSUBJECT and REFERENCES. Anyone know of such a thing? +> +> imaptest has some tests for REFERENCES: http://hg.dovecot.org/imaptest/file/tip/src/tests + +Thanks, those look useful. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22756.mbox:2,S new file mode 100644 index 00000000..03b82399 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22756.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From guenther+imap at sendmail.com Wed Nov 2 12:16:35 2011 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Character encoding question +In-Reply-To: <4EB18391.4040202@comaxis.com> +References: <4EB0C241.6060900@comaxis.com> + <20111101230240.Horde.I0QRQoF5lbhOsM7wX2WU_SA@bigworm.curecanti.org> + <4EB18391.4040202@comaxis.com> +Message-ID: + +On Wed, 2 Nov 2011, Jeff Mckay wrote: +> Thanks for your comments. I'm still a bit confused. Let me clarify what +> I am seeing in these two examples. In the first, one of the characters +> in question is "lower case o with acute" which is supposed to be xF3 in +> ISO-8859-2 and xC3 xB3 in UTF-8. The imap server represents this as +> ampersand followed by AMP followed by a dash (I am writing out the +> description so it does not get interpreted incorrectly somewhere). If I +> take the AMP and run it through a base64 decoder, I get xF3. + +No, when you run APM (not AMP) through a base64 decoder you get *two* +character, in hex as 00 F3. This is the big-endian UTF-16 representation +of "lower case o with acute". + + +> In the second example, we have the letters Temp/New followed by a couple +> Chinese characters that I don't know the names of. The two Chinese +> characters are represented in imap by ampersand followed by bUuL1Q and +> the closing dash. When I base64 decode this I end up with x6D x4B x8B +> xD5. This appears to be big-endian UTF-16. + +Yep. This is *exactly* what is specified by RFC 2152 ("UTF-7"), as +modified by RFC 3501. + + +> I have to byte-reverse each 2 byte sequence, but then I can convert it +> to UTF8 (my target) and see the Chinese characters. + +Uh, I think you mean you do a conversion from the UTF-16BE to the UTF-8 +that your display routines expect, right? + + +> I could also take the original data and stick a + in front of it (ending +> up with +bUuL1Q) and convert this from UTF7 to UTF8 and end up with +> valid characters. This last part I really don't understand - if it is +> base64 encoded, how is that valid UTF7? + +Please go read RFC 2152 again. base64 encoding is a step in generating +UTF-7 encoded text. + + +> Anyway, I don't seem to have an algorithm that will work on both of +> these examples, and no way to detect which one I should use. Obviously +> I am totally confused about what I am doing, but any further insight +> would be appreciated. + +I think you lost track of the NUL byte in the first example, and from that +ended up thinking a different conversion was necessary. The rules are +consistent. For a given &.....- chunk: + strip & - delimiters + base64 decode the ..... part + convert that from UTF-16BE to whatever encoding you want to use + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22759.mbox:2,S new file mode 100644 index 00000000..1360aa4b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22759.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From mrc+imap at panda.com Sat Oct 22 12:44:43 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: +References: +Message-ID: + +Oh, this is a beauty. + +Apparently Apple also has a server on iCloud that they bought from Oracle +which does comply with IMAP. It's this separate thing called iSCREAM that +doesn't accept "AUTHENTICATE PLAIN" without the separate SASL-IR argument. + +You would think that with all the dough that they get from overcharging +millions of fanboys for their shiny toys, they could afford to hire +competent software developers that are capable of following RFCs that were +published 15 years ago. It isn't as if they have just heard of IMAP for +the first time either. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22768.mbox:2,S new file mode 100644 index 00000000..91606c2e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22768.mbox:2,S @@ -0,0 +1,152 @@ +MBOX-Line: From Lynn at BusCom.net Sun Jun 5 12:58:45 2011 +To: imap-protocol@u.washington.edu +From: "Lynn W. Taylor" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> +References: <4DEBB242.2090200@BusCom.net> + <4DEBB58D.3090101@logicprobe.org> <4DEBBAB3.2030301@BusCom.net> + <4DEBBEC1.3080600@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> +Message-ID: <4DEBDFF5.9000301@BusCom.net> + +Pete, + +Thank you very much. + +I'm not starting with a deep understanding of IMAP. I do know how to +spell it. This also isn't my first time at the rodeo. + +The mailstore is in RFC-2822 format. There is a UID, and it's cast in +jello -- it can be changed so that the POP3 server uses an IMAP +compatible UIDL. I think I can keep the UIDs unique and ascending as +required in the RFC. + +Don't have the parser, so #1 is very useful. + +On #3, I'm not sure how the flags are used, so it's hard to make an +intelligent decision (other than to try and design something pretty +open). Something in my head keeps telling me that they should be stored +as a set of booleans and translated to ASCII when/as needed. The other +thing in my head keep saying that I don't understand it enough to know that. + +On #4, I have memory constraints, especially if I need a lot of folders +open at once. + +I have a good command parser, the listener is fairly trivial, and I +think most of the authentication code is done or nearly so in other +parts of the system. + +On #9, in my environment making COPY atomic isn't a big deal, but the +fact that it needs to be fully atomic is pretty useful. + +Search (#10) is the one that worries the most. Some of that is the same +reason that COPY doesn't bother me. Glad it can be left to last, and +wish it could be left out. + +I'm not in a position to specify clients. I'll likely do my initial +testing with Thunderbird unless someone warns me that it's a poor choice. + +-- Lynn + +On 6/5/2011 12:24 PM, Pete Maclean wrote: +> At 01:37 PM 6/5/2011, Lynn W. Taylor wrote: +>> P.S. I'm not looking for a complete roadmap, I can fill in most of +>> the detail. +>> +>> Tags and UIDs are not a big deal. +>> +>> What I want to do is get enough IMAP working that I can start testing +>> with a client, even if the server isn't 100% practical, instead of +>> implementing some critical command last, and finding out that I made +>> some critical mistake very early in the process. +> +> Here are 10 tips based on my own experience. From what you say, some +> of these may not be relevant to your case but I will be inclusive. I +> am also assuming both that you are not starting out intimately +> familiar with the protocol and that messages are stored in +> RFC2822-MIME format. A general guideline is that, while books may +> help you get a feeling for IMAP -- they did for me, when actually +> implementing it is vital to pay full attention to the relevant RFCs. +> +> 1). You will need a fairly sophisticated message parser, notably for +> extracting MIME parts and generating BODYSTRUCTURE information. If +> you do not start out with such a parser ready-made then you might well +> choose to begin by building one. +> +> 2). If your mailstore does not have UIDs (or something that can be +> suitably mapped into UIDs) then decide how you will create and store +> UIDs. Incidentally IMAP specs refer to a UID command; I find it +> easier to view this as a command qualifier. +> +> 3). Decide what permanents flags to support and how. Decide what +> hierarchy delimiter to use; I believe that most servers use slash, +> backslash or dot but I have not seen a problem using even a +> non-graphic character such as Rubout (ASCII 127). By the way, I think +> that RFC 3501 does not make this clear but the hierarchy delimiter +> must be a 7-bit ASCII character. +> +> 4). Decide what data to keep in memory for each message in an open +> mailbox. (By "open", I mean one for which a session is in progress, +> that is opened as the result of a SELECT or EXAMINE command.) A +> likely minimum would be UID, IMAP message flags, message size and, of +> course, a reference to the message itself. I am assuming that this +> information is indexed by message number and hence that that is not +> explicitly stored. You may find reason to add more data such as a +> flag indicating if the message is matched in a current SEARCH. +> +> 5). I don't recall if I did this when I wrote my server, but I would +> probably start now by implementing the LIST command. This involves a +> number of elements including modified UTF-7 encoding and understanding +> the distinction between the two arguments of the command. I wrote +> unit test programs for my backend LIST code (and that of several other +> commands) and I highly recommend doing the same. These were simple +> console programs each of which took a set of IMAP command arguments as +> input and emitted the results as output. In the early stages, testing +> with actual IMAP connections (be they from a client or a test program) +> is unnecessarily awkward. (I am assuming here that there are other +> means, outside of the IMAP server, to create mailboxes; if this does +> not hold then you may want to implement CREATE first.) +> +> 6). Next I would implement SELECT and EXAMINE. There are intricacies +> here such as checking what rights the user in question has to the +> mailbox and ensuring coordination among threads (and, if relevant, +> with other programs) that are simultaneously accessing the mailbox. +> +> 7). Next I would implement FETCH. This is a biggie because of the +> range of data items, macros, dealing with literals, and so on. +> +> 8). Perhaps at about this point, I would work on the command processor +> (recognising commands, checking mode, parsing arguments, etc.) and, +> unless I had a ready-made one, the listener. This allows one to start +> testing online. I suggest implementing the command processor at a +> fairly late stage because, for some commands, argument-parsing is +> tricky and you will likely find it easier once you have implemented +> the commands themselves and have a good understanding of how they work +> -- although the critical thing to do here is to follow the RFC's +> grammar very closely. AUTHENTICATION can be done at any stage since +> you can fake it until such point as you choose to made it real. +> +> 9). Next I would take care of the "minor" commands: CREATE, LSUB, +> NOOP, CLOSE, STORE, CAPABILITY, APPEND, etc. But do not think of COPY +> as minor -- it can be a substantial job because of the required +> atomicity. +> +> 10). I would leave SEARCH for last. When I wrote my server, I left it +> to last because I feared it would be the most difficult to do. I was +> wrong; it proved much easier than I had expected but it is, +> nevertheless, a hefty amount of work. It may also be fair to say that +> it is the least critical command but, all the same, it has to be done +> and done completely (unless of course your client is intended to work +> with a strictly limited set of clients that do not use it.) And +> testing SEARCH can be hard because few clients implement it well; +> indeed, some do not offer it at all. Of course, if your mailstore +> manager already has search capabilities then you may be able to +> leverage those and make the job a snap. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22772.mbox:2,S new file mode 100644 index 00000000..7ff3533b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22772.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From tss at iki.fi Tue May 3 02:32:26 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Looking for help implementing an IMAP-to-HTTP + gateway for web app developers +In-Reply-To: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +References: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +Message-ID: + +Like Mark said, there needs to be some state kept. I didn't really understand how complex solution you wanted, but if you basically just want to map some specific HTTP URLs to IMAP UIDs, one possibility would be to keep a map of IMAP UID = ( URL, HASH(URL content) ). If the content changes, you need to give it a new IMAP UID. The IMAP server can then locally preserve other state, like message flags. + +It's also not an easy task to write any kind of a standards compliant IMAP server, so you really should build it on top of something that already exists. I will of course recommend Dovecot. :) You can easily add all kinds of mail backends as plugins to it. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22777.mbox:2,S new file mode 100644 index 00000000..7e50df6c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22777.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From robm at fastmail.fm Mon Apr 11 23:59:36 2011 +To: imap-protocol@u.washington.edu +From: Robert Mueller +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] RFC 5464 METADATA Extension examples vs BNF + inconsistency +Message-ID: <1302591576.8511.1440130785@webmail.messagingengine.com> + +The BNF says options come first, the 4.2. GETMETADATA command section +and examples show mailbox coming first. + +Rob + + +http://www.faqs.org/rfcs/rfc5464.html + +4.2. GETMETADATA Command + +... + + Arguments: mailbox-name + options + entry-specifier + +... + + Example: + + C: a GETMETADATA "INBOX" (DEPTH 1) + (/private/filters/values) + +... + + getmetadata = "GETMETADATA" [SP getmetadata-options] + SP mailbox SP entries +Rob Mueller +robm@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22780.mbox:2,S new file mode 100644 index 00000000..540006e5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22780.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From mrc+imap at panda.com Tue Mar 8 15:00:28 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Pipelined commands before completion of STARTTLS +In-Reply-To: +References: <4D7690AE.8020003@andrew.cmu.edu> + +Message-ID: + +On Tue, 8 Mar 2011, Philip Guenther wrote: +>> 1. Send a BAD response if a command is pipelined after STARTTLS. +>> +>> 2. Ignore the pipelined cleartext commands. +> +> 3. immediately close the connection +> +> 4. Treat data after the CRLF as data for the TLS handshake (i.e., to shave +> an RTT off in the success case). + +My observation of all of this: + +Behavior 1 is difficult to do consistently, especially if the TLS +handshake starts with client data (no initial server data). + +Behavior 2 is the expected implementation today. + +Behavior 3 is a natural and expected consequence of the TLS handshake +being invalid. However, behavior 3 may have the effect of making an MITM +attack become a DOS. + +Behavior 4 can not be deployed in a reliable way without some negotiated +capability, due to behavior 2. + + +My recommendations follow. + +Clients: + MUST NOT pipeline or otherwise transmit anything after STARTTLS + until such time as it is permitted to transmit a TLS handshake. + + MUST NOT assume any behavior on the part of the server, until + such time as there is a negotiated extension for behavior 4. + +Servers: + MUST NOT implement behavior 1. + + MUST implement behavior 2 or 4, at the server's option. Note + that, due to timing, behavior 2 is actually a special case of + behavior 4. + + MUST NOT implement behavior 3, except as a consequence of an + invalid TLS handshake in a behavior 4 implementation. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095059.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095059.22784.mbox:2,S new file mode 100644 index 00000000..30119fbf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095059.22784.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From norman at apache.org Sun Feb 6 22:31:38 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Max literal line length +Message-ID: + +Hi there, + +we are currently implementing a NIO-bases IMAP-Server. We use a +line-delimiter for break down the "buffers" and push them down to the +processors. This works fine so far but we are a bit concerned about +how to limit the max buffer size in a case of a very-very long line. +We saw there is a rfc which refer to something about 8000 octets per +command-line. + +RFC 2683 section 3.2.1 (imap4 implementation +recommendations): + +"For its part, a server should allow for a command line of at least + 8000 octets. This provides plenty of leeway for accepting reasonable + length commands from clients. The server should send a BAD response + to a command that does not end within the server's maximum accepted + command length." + +But I think this only is true for commands lines without the literal +usage. So at the moment we limit a line to be max of 64kb to guard +against a DOS but I'm not sure its really the way to go. Anyone has +some expirience with such needs ? + +Thx, +Norman + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22595.mbox:2,S new file mode 100644 index 00000000..35e8cb49 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22595.mbox:2,S @@ -0,0 +1,285 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 11 14:13:20 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <20041.1426095023@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> <55005876.4070406@lavabitllc.com> + <18002.1426091085@parc.com> <55006FA4.3090800@lavabitllc.com> + <20041.1426095023@parc.com> +Message-ID: <1426108400.3306698.239091445.5A1246FF@webmail.messagingengine.com> + +I have a server to server replication protocol for IMAP servers mostly specced out. +It's based on the current Cyrus server to server replication protocol to a large degree. + +Sadly I was in the middle of moving back from Norway to Australia when I wrote this: + +http://lists.andrew.cmu.edu/pipermail/cyrus-devel/2012-December/002703.html + +And got dragged down other paths. I'm still working on generalising what is in Cyrus +though. The most tricky bit is agreeing on the format for the checksum over the +entire mailbox contents which is used as a double-check for consistency after +applying changes. Without that, it's still pretty good - but there are some issues +that can go undetected in the case of a split brain. + +I also have notes from an email I put together after visiting David Carter (author of +the original replication support in Cyrus) which I'm just going to paste in at the end +of this message, because I don't appear to have sent them to a public list... + +I have done some work since then on moving all the extended items into +namespaced per-message annotations on the wire, so that any server which +supports annotations (yeah, right - I think there are about 3) can keep information +with full fidelity even if they don't support a feature themselves. + +Bron. + + +Sync Protocol: wire format + +I spent the afternoon with David Carter and Tony Finch in Cambridge +looking over how Cyrus currently stores index records and per-mailbox +data and classifying the fields. + +Glossary: + +C Set at create time, immutable after +D Derived from RFC822 message, immutable +M Mutable +I Internal to Cyrus, irrelevant to sync because not exposed + +cyrus.index records (per message): + +C UID +C INTERNALDATE +D SENTDATE +D SIZE +D HEADERSIZE +D GMTIME +I CACHEOFFSET +I LAST_UPDATED +M SYSTEM_FLAGS +M USER_FLAGS +D CONTENT_LINES +I CACHE_VERSION +C GUID +M MODSEQ +I CACHE_CRC +I RECORD_CRC + +Also per-message: + +M ANNOTATIONS +C RFC822 message content + +We talked a lot about GUID. The conclusion was that for a vendor-neutral +protocol, you want GUID to be an opaque blob of somewhat arbitrary size +(perhaps the 70 bytes that POP3 UIDL gives - RFC1939). + +It should not be necessary to have a GUID at all, or even MODSEQs, to use +this protocol. Just without these things you lose abilities like incremental +updates and implicit cross-referencing. + +There are two necessary formats for a record. One is a wire format to +succinctly describe either a CREATE or UPDATE on a message, and the other +is a canonical serialisation format to calculate the SYNC_CRC. + +The ordering of fields is chosen as follows: + +UID +MODSEQ +FLAGS +INTERNALDATE +GUID +ANNOTATIONS +CRC32 + +The CRC32 buffer format is specified with upper case exact string keys, +as follows: + +UID +MODSEQ +FLAGS (sorted: , ...) +INTERNALDATE +GUID +ANNOTATIONS (sorted: (/name user value user value), ...) +CRC32 + +NOTE: the buffer format has a single space rather than endline between each +key. + +The sort for FLAGS is purely ASCII byte values. The sort for ANNOTATIONS is +sorted by name, and within the values by user, with NIL (for shared) sorting +first. + +If there is no MODSEQ, then the MODSEQ item is entirely omitted. + +If there is no GUID, then the GUID item is entirely omitted. + +The FLAGS () and ANNOTATIONS () items are not included in the CRC32 format if +they are an empty list. + +So the most trivial case is: + +UID INTERNALDATE CRC32 + +Extended values (like the CID for FastMail's conversations patch) can either +be added by extending the format, or by creating a synthetic vendor ANNOTATION +field. + +CREATES: +======== + +The create format is precisely like the CRC32 format, except that it may +contain either a key RFC822 with the entire message, a key XREF with a +triple (mailboxname uidvalidity uid) or just the GUID and rely on automatic +linkage to other messages with the same GUID. + +GUID is defined as being unique to a particular RFC822 message text. It is +the server's reponsibility to come up with something unique. + +So CREATE is just the CRC32 format with an additional either RFC822 or XREF +field to specify the message body. In the sync protocol, it's sender's +responsibility to ensure that the server already has the XREF'ed message. + +In the incremental backup case, it's the backup server's responsibility to +check that the XREF'ed message already exists in the previous backup. + +UPDATES: +======== + +To update an existing record, a record with the same UID is created. If +it contains any CREATION ONLY field, then it's required to match exactly +(e.g. INTERNALDATE, CRC32 or GUID). If it doesn't, then UID promotion logic +takes over. It also needs to have a higher MODSEQ value than the previous +record of course. + +Otherwise, the format is the same as CREATE. + +E.g. + +UID 5 MODSEQ 100 FLAGS (\Seen $foo) + +If any field is absent, it is unchanged. If the FLAGS () or ANNOTATIONS () +lists are present, then they are a SET - changing the replica to contain +exactly what is in them, removing anything not mentioned. + +VANISHED: +========= + +To deal with cases where the server has forgotten precisely which UIDs were +removed since the previous MODSEQ value, there needs to be a way to say +"everything in these ranges of UIDs is was removed". + +It also needs to be as if it happened at the last known MODSEQ (DELETEDMODSEQ +in Cyrus terms). + +The format is + +VANISHED (AT UIDS ) + +e.g. + +VANISHED (AT 5001 UIDS 1:20,23:25,27:201) + +This will cause the receiver to expunge any messages matching that UID range, +and to do so at a MODSEQ of 5001. NOTE: it only makes sense for this modseq +to be in the future for the receiver, otherwise you would not be sending the +vanished range, because the receiver would already have seen those changes. + +--------------- + +That's enough to cover all the interesting cases for messages - now on to +mailboxes: + +cyrus.index header + +I GENERATION +I FORMAT +I MINOR_VERSION +I START_OFFSET +I RECORD_SIZE +I NUM_RECORDS +I LAST_APPENDDATE +M LAST_UID +I QUOTA_USED +M POP3_LAST_LOGIN => metadata +C UIDVALIDITY +I DELETED +I ANSWERED +I FLAGGED +M OPTIONS => metadata +I LEAKED_CACHE +M HIGHESTMODSEQ +I DELETEDMODSEQ +D EXISTS +I FIRST_EXPUNGED +I LAST_REPACK_TIME +I HEADER_FILE_CRC +D SYNC_CRC +M RECENT_UID +I RECENT_TIME + +mailboxes.db: + +M ACL +M SPECIAL-USE => metadata + +cyrus.header: + +C UNIQUEID +M QUOTAROOT () +M FLAGS () + +annotations.db: + +M METADATA + +CREATE format (== CRC32 format - perhaps just XOR with the messages CRC): + +NAME +UIDVALIDITY +HIGHESTMODSEQ +LAST_UID +ACL (name value name value) +QUOTAROOT (root, ...) +FLAGS (flag, ...) +METADATA (...) + +ACLs are sorted by name and normalised by removing cd which got removed in RFC x + +QUOTAROOTs are sorted by ASCII bytes + +FLAGS are sorted by ASCII bytes + +METADATA are sorted and stored just like ANNOTATION: + + C: a SETMETADATA INBOX (/private/comment "My new comment" + /shared/comment "This one is for you!") + S: a OK SETMETADATA complete + +Becomes: + +METADATA (/comment (NIL "This one is for you!" brong "My new comment")) + +Being a shared comment and a private comment for brong. + +TODO: +===== + +* list RFCs next to each item +* Sieve / Subs / etc - user level stuff +* Server level annotations +* Quotaroots +* define conflict resolution protocols (uid promotion, value resolution, + rename handling) +* dates: nail down format YYYY-MM-DDThh:mm:ssZ +* Conversations extended format + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22641.mbox:2,S new file mode 100644 index 00000000..fe388821 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22641.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From blong at google.com Thu Mar 20 12:52:23 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> + +Message-ID: + +On Thu, Mar 20, 2014 at 12:30 PM, Arnt Gulbrandsen wrote: + +> On Thursday, March 20, 2014 8:07:29 PM CEST, Jan Kundr?t wrote: +> +>> The fact is that compared to the API which is available to their own +>> client, the interface made available via IMAP is seriously limited. Take +>> your own conclusions from that. +>> +> +> Slack must be cut ;) +> +> Their own client is maintained by people who have lunch with the server +> developers every other day. You're a client developer, but you don't have +> lunch with the server people. +> +> Brandon will tell you that he wants to treat you exactly as well as he +> treats their own client developers, and I think he honestly does want to do +> that. I even think their official policy matches Brandon's opinion, if they +> have an official policy. But you don't eat lunch with Brandon's team, and +> having lunch beats both official policies and preferences. + + +I'm not sure how much lunch is eaten with these people. IMAP was developed +while we were all in MTV together, but now my team is in SF, and the iOS +team is in Waterloo. Android is in MTV, though until recently in another +building not that close by... but a good amount of the frontend team is in +Zurich, and I think some of the backend is in Tel Aviv... what can I say, +we're a big company. + +Anyhoo, as with anything else, its a matter of cost/benefits. Most clients +that use our IMAP implementation don't sit on the connection for long +periods of time, so they haven't had much issue with getting re-synced +every time they poll. I also know some clients which use STATUS to work +around our issues, there's nothing in our server which prevents STATUS from +working while a folder is SELECTed. + +Brandon +The Sun never sets on the Gmail team +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22682.mbox:2,S new file mode 100644 index 00000000..563a669f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22682.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From brong at fastmail.fm Thu Mar 28 03:50:34 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: + + +Message-ID: <1364467834.17420.140661210248337.6886ED3E@webmail.messagingengine.com> + +On Wed, Mar 27, 2013, at 10:03 AM, Brandon Long wrote: + + + + +On Tue, Mar 26, 2013 at 2:52 PM, Timo Sirainen <[1]tss@iki.fi> wrote: + +On 26.3.2013, at 23.26, Brandon Long <[2]blong@google.com> wrote: + + + +> This was because of some unfortunate combination of factors. For +one, we have a maximum message size on our server, with no real way to +make that available to IMAP (maybe via GETQUOTA, but if no clients +check it, that's not that useful). For two, we have an inbound +bandwidth quota to protect against both broken clients and attempts to +use Gmail IMAP as a storage system. + +> + +> So, if a user attempted to draft a message larger than our limit +(35MB), + + + +Seems a bit small limit to me. + + +Heh, sure, we get that from some users from time to time, but almost +every part of our system requires loading the whole message into memory +at some point (or two copies), and that adds up quick. And its fairly +typical from the major webmail providers. And frankly, SMTP is a +pretty poor file transfer protocol, what with the base64 encoding and +the lack of checksumming or restartability and the duplicate delivery +vagueness. + + + +We very carefully DON'T ever load the entire message into memory at +once. It gets streamed to a temporary file and mmaped, but not +actually loaded into memory - allowing the OS to decide how much to +keep around as we parse through it. + + + +As for your (later) question about what other sites do? At FastMail we +allow users to store any size message so long as it's within their +quota. We know (indeed, there are tools for usenet from way back) that +rar files or zip files can be split up into separate parts and stored +in separate messages if someone is going to be abusive. + + + +SMTP sucks for sending big messages, but it doesn't stop people wanting +to do just that - for all the usual reasons that email is better than +$INSERT_OTHER_SERVICE_HERE. + + + +(my short list is: own copy, persistent, immutable - hmm, I should +stick it in blog format. Here: +[3]http://whatwouldazen.wordpress.com/2013/03/28/email-is-still-relevan +t/ - of course, it's soundbyte sized, but I think it hits the important +points) + + + +Bron. + + + +-- +Bron Gondwana +brong@fastmail.fm + +References + +1. mailto:tss@iki.fi +2. mailto:blong@google.com +3. http://whatwouldazen.wordpress.com/2013/03/28/email-is-still-relevant/ +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22688.mbox:2,S new file mode 100644 index 00000000..754c65c3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22688.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From brong at fastmail.fm Wed Jan 23 20:28:44 2013 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +In-Reply-To: <20130123212037.Horde._IahQM6IYatHLw2AFgUPnw1@bigworm.curecanti.org> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + <20130123212037.Horde._IahQM6IYatHLw2AFgUPnw1@bigworm.curecanti.org> +Message-ID: <1359001724.15093.140661181638845.41179852@webmail.messagingengine.com> + +On Thu, Jan 24, 2013, at 03:20 PM, Michael M Slusarz wrote: +> a ENABLE QRESYNC +> * ENABLED QRESYNC +> a OK ENABLE completed. +> b SELECT INBOX +> [...] +> * OK [HIGHESTMODSEQ 5] Highest +> b OK [READ-WRITE] SELECT completed. +> c UID FETCH 9 (BODY[HEADER]) +> * 1 FETCH (UID 9 BODY[HEADER] {1409} +> [...headers...] +> ) +> * 1 FETCH (MODSEQ (6) FLAGS (\Seen)) +> c OK FETCH completed. +> +> Are we accepting that this is allowable? Even if it is the +> BODY[HEADER] FETCH that is causing the \Seen flag to be set? Looking +> at the QRESYNC docs - it appears that ONLY the FETCH untagged +> responses to the SELECT/EXAMINE are required to contain both UID & +> MODSEQ information. All other FLAGS responses require MODSEQ but not +> UID. This is a subtlety that I don't think I've thought about before. + +I always send UID for QRESYNC, and I even have a handy comment about it: + + /* http://www.rfc-editor.org/errata_search.php?rfc=5162 + * Errata ID: 1807 - MUST send UID and MODSEQ to all + * untagged FETCH unsolicited responses */ + if (usinguid || state->qresync) + prot_printf(state->out, " UID %u", im->record.uid); + if (printmodseq || state->qresync) + prot_printf(state->out, " MODSEQ (" MODSEQ_FMT ")", im->record.modseq); + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22697.mbox:2,S new file mode 100644 index 00000000..487e25a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22697.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From slusarz at curecanti.org Mon Dec 31 12:31:18 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +In-Reply-To: <1356733058.19335.140661171123477.7DDFF57D@webmail.messagingengine.com> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> + <20121228130129.Horde.VTgbGtjlIvg0wUwlkp5dDg6@bigworm.curecanti.org> + <1356732787.18647.140661171122177.5EB821AB@webmail.messagingengine.com> + <1356733058.19335.140661171123477.7DDFF57D@webmail.messagingengine.com> +Message-ID: <20121231133118.Horde.U5PPDhJmrIJk-ldhlJw3KQ1@bigworm.curecanti.org> + +Quoting Bron Gondwana : + +>> > > The more interesting question is: what do you need to know it +>> for anyway? +>> > +>> > To determine if the mailbox has changed to prevent an issuance of an +>> > unneeded FETCH/SORT command. Flag changes are irrelevant (if +>> > CONDSTORE isn't available), since clients can be designed to not care +>> > about these changes +>> +>> Fair enough I guess, if you really don't need the data from those +>> intermediate +>> records. Otherwise you may as well just do fetch $olduid+1:* +>> (stuff you need), +>> which will be the same number of round trips as your solution in the trivial +>> case, and one fewer in the case where there is new data to know. + +If UIDNEXT doesn't change, why would you be doing a fetch? + +>> Let's play make believe for a second with Cyrus though: +>> +>> . select inbox +>> * 2 EXISTS +>> * 2 RECENT +>> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) +>> * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Ok +>> * OK [UNSEEN 1] Ok +>> * OK [UIDVALIDITY 1356732706] Ok +>> * OK [UIDNEXT 3] Ok +>> * OK [HIGHESTMODSEQ 5] Ok +>> * OK [URLMECH INTERNAL] Ok +>> * OK [ANNOTATIONS 65536] Ok +>> . OK [READ-WRITE] Completed +>> . fetch 1:* (uid) +>> * 1 FETCH (UID 1) +>> * 2 FETCH (UID 2) +>> . OK Completed (0.000 sec) +>> . fetch * (uid) +>> * 2 FETCH (UID 2) +>> . OK Completed (0.000 sec +> +> Sorry - cat on keyboard failure. + +I have a dog, so I tend to not have these kind of issues :). + +> ) +> . store 2 +flags \Deleted +> * 2 FETCH (FLAGS (\Recent \Deleted)) +> . OK Completed +> . expunge +> * 2 EXPUNGE +> . OK [HIGHESTMODSEQ 7] Completed +> . fetch * (uid) +> * 1 FETCH (UID 1) +> . OK Completed (0.000 sec) +> +> That definitely doesn't work! + +Why not? The stored UIDNEXT != the cached UIDNEXT. So something is +up and the client should issue FETCH's to retrieve further +information. UIDNEXT's have nothing to do with the actual next +assigned UID, so I don't care if it is incrementing or decrementing. +It only matters if it is different. + +> . uid fetch * (uid) +> . OK Completed (0.000 sec) + +I may have mis-typed before. A UID FETCH * is not useful - it should +be a FETCH * (UID) used instead to determine the last UID in the +mailbox. And if the mailbox is empty, I agree that the actual UIDNEXT +value can't be determined. In our client, we clear the UIDNEXT and +cache so the next time a message is seen the cache is restart/rebuilt. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22701.mbox:2,S new file mode 100644 index 00000000..9fc36cd3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22701.mbox:2,S @@ -0,0 +1,101 @@ +MBOX-Line: From blong at google.com Mon Nov 26 15:30:00 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + + <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> +Message-ID: + +On Mon, Nov 26, 2012 at 2:57 PM, Michael M Slusarz wrote: + +> Quoting Brandon Long : +> +> By polling, I assume you mean for calling STATUS? +>> +> +> Well hopefully LIST-STATUS exists on the server, because that makes a huge +> performance difference. (For some reason, a larger number of users will +> whine and complain incessantly unless the ability to poll all mailboxes is +> enabled. Why anybody wants to poll mailboxes other than those in which +> messages are being delivered are beyond me. But this is a feature that +> users demand, so we have to support it unfortunately.) + + +sure. + + +> Imagine, instead of a "special case" resume, that we're instead treating +>> this as a client that often re-connects. You'd treat IMAP the same way a +>> normal "connected" client would, and the server would just keep your +>> connection in the same connection state, possibly holding any results it +>> would send you. You would just "reconnect/resume" and then issue the next +>> command. You'd be immediately back in the selected state, but there +>> wouldn't be any cost associated with it (from the client side) except +>> perhaps having to update client state if the server gives you updates, but +>> that just results in faster updates of server state. +>> +> +> This would be great. But implementation of this would be orders of +> magnitude more difficult than the more simple SUSPEND case and, at least in +> part, would be duplicating behavior of QRESYNC. + + +More difficult then you SUSPEND, sure. Easier than QRESYNC. I don't +really see the duplication, however. + + It is more expensive for a server to offer this, though as long as the +>> client has to "request" a session, it would actually be cheaper for the +>> server to maintain that state than re-loading it between connections. +>> +> +> What I get out of this is that you think QRESYNC was the result of an +> incorrect design decision and, instead, the proposal you previously linked +> to in this thread should have won out. + + +I wasn't on the list at that time, so I have no idea what the debate looked +like. I view them as different, however. QRESYNC requires little extra +storage and can be persisted for any length of time. I find it odd that it +mentions "mobile, frequently disconnected" as its still a fairly extensive +negotiation between client and server. Its certainly a win for any client +when re-connecting, regardless of how long ago that was, and fills a hole +in the CONDSTORE case. So no, I don't think QRESYNC is an incorrect design +decision. Its possible a "not imap" protocol could conceive of a better +way, in syntax or otherwise, of passing the needed information to re-sync +the client and server, but QRESYNC has to fit the task given it. + +Also, for the mobile case, its probably more of a case of "uncontrolled" +connection closing, which isn't as useful a case, because you don't know +which commands "finished" executing on the server and which didn't make it. + +I view the advanced suspend/resume as more of a "client always +disconnects". Mobile clients might be able to use it by frequently +disconnecting, depending on the exact nature of the disruptions that occur, +I'm not a mobile expert to know. + +I'd view this as more useful in the "likely to re-connect in ~1 minute" +case, the server probably wouldn't hold onto the data longer. It would be +implemented by separating the connection data out of the connection so that +it can be kept longer than the connection and re-connected to, and then a +task to remove old ones after some timeout. + +I can't speak to which one would be more likely to be adopted, both seem +rather specific to a certain use case. For instance, your entire use case +would be avoided if you had a persistent server to maintain your +connections for you, instead of being a CGI. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22743.mbox:2,S new file mode 100644 index 00000000..abb3c148 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22743.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From petite_abeille at mac.com Tue Mar 20 14:33:37 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <17068.1332235633.171765@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> +Message-ID: + + +On Mar 20, 2012, at 10:27 AM, Dave Cridland wrote: + +> No, NOOP is a command that does nothing; an EXISTS response is not automatically generated - it can be generated during any command (or, for extra bonus points, not during any command), but only when there are new messages. + +Sure. Does it hurt though? If one send an EXISTS response even though the message count hasn't changed? + +> Polymer (and probably other clients) doesn't care, but technically they could behave oddly in this case. + +Fair enough. + +> Incidentally, there are two commands that do nothing in IMAP, and both are typically used for checking for new mail. NOOP returns instantly, whereas IDLE returns only after the client sends DONE. + +IDLE is an extension, no? + +> They're allowed to do whatever you want to make this happen behind the scenes in your server, of course, they just don't affect the state of the mailbox from the client's point of view. +> +> But a client *could* check the mailbox by repeatedly polling with a SEARCH command, too. + +I thought EXPUNGE responses are not welcome during a FETCH, STORE, or SEARCH, no? So a SEARCH would not cut it to trigger a status update, wouldn't it? + +In any case, for my humble purpose the set of messages is frozen upon a SELECT and is only ever updated upon a NOOP request. + +"NOOP, not CHECK, SHOULD be used for new message polling" +-- 6.4.1. CHECK Command + +Thanks for the feedback though as I have to confess that sometime both the letter and the spirit of the protocol escapes me. Talking it through helps :) + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22749.mbox:2,S new file mode 100644 index 00000000..ebc76868 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22749.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc+imap at panda.com Wed Jan 25 07:37:54 2012 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] FETCH n BODY[1.MIME] for a single-part message +In-Reply-To: <2607DEC0-FA3A-4D7D-885E-ECA7B2CF9EA8@iki.fi> +References: <201201241544.q0OFi3S2028880@mxout13.cac.washington.edu> + + <2607DEC0-FA3A-4D7D-885E-ECA7B2CF9EA8@iki.fi> +Message-ID: + +On Wed, 25 Jan 2012, Timo Sirainen wrote: +> I would think it is incorrect for the client to even ask for that, so +> it's more of a GIGO issue.. It looks like Dovecot returns the header, +> but I didn't intentionally make it do that, it just happens for some +> reason. + +You are correct; a client should not ever ask for that. As far as IMAP is +concerned, there is no such part. The correct server response in IMAP to a +request for a non-existent body part is to return the empty string. + +There are complicated, and to some extent historical, reasons why the +empty string (as opposed to an error) is the correct return. Suffice it to +say that a client that never asks for any body part without first +verifying that it exists via BODYSTRUCTURE will never encounter that +behavior; but there are reasons why a client might do otherwise. + +Hint: "BODY[1]<1:128>". + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22752.mbox:2,S new file mode 100644 index 00000000..dba8603c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22752.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From petite_abeille at mac.com Wed Dec 21 04:05:23 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] body[n.header] vs. body[n.mime]? +Message-ID: <7A5C9702-B74C-4AA7-9075-449D07B0435B@mac.com> + +Hello, + +What's body[n.mime] suppose to return, and when? + +Given the following message: + +http://pastebin.com/raw.php?i=M2tTnLEm + +With the following parts (as reported by reformime [1]): + +1 multipart/mixed +1.1 text/plain +1.2 message/rfc822 +1.2.1 multipart/report +1.2.1.1 text/plain +1.2.1.2 message/delivery-status +1.2.1.3 message/rfc822 +1.2.1.3.1 text/plain + +When does body[n.mime] apply, and what is it suppose to return? + +For example, what should one return when asked for body[1.2.mime] vs. body[1.2.header]? + +Also, is the part numbering as performed by reformime in line with what IMAP part specifiers expects? + +Thanks in advance. + + +[1] http://www.courier-mta.org/reformime.html + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22756.mbox:2,S new file mode 100644 index 00000000..206ec571 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22756.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From jeff.mckay at comaxis.com Wed Nov 2 14:45:00 2011 +To: imap-protocol@u.washington.edu +From: Jeff Mckay +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Character encoding question +In-Reply-To: +References: <4EB0C241.6060900@comaxis.com> + <20111101230240.Horde.I0QRQoF5lbhOsM7wX2WU_SA@bigworm.curecanti.org> + <4EB18391.4040202@comaxis.com> + +Message-ID: <4EB1B9DC.9080408@comaxis.com> + +You're right - I understand now and have my code working. Thanks for +your help. + +Philip Guenther wrote: +> On Wed, 2 Nov 2011, Jeff Mckay wrote: +> +>> Thanks for your comments. I'm still a bit confused. Let me clarify what +>> I am seeing in these two examples. In the first, one of the characters +>> in question is "lower case o with acute" which is supposed to be xF3 in +>> ISO-8859-2 and xC3 xB3 in UTF-8. The imap server represents this as +>> ampersand followed by AMP followed by a dash (I am writing out the +>> description so it does not get interpreted incorrectly somewhere). If I +>> take the AMP and run it through a base64 decoder, I get xF3. +>> +> +> No, when you run APM (not AMP) through a base64 decoder you get *two* +> character, in hex as 00 F3. This is the big-endian UTF-16 representation +> of "lower case o with acute". +> +> +> +>> In the second example, we have the letters Temp/New followed by a couple +>> Chinese characters that I don't know the names of. The two Chinese +>> characters are represented in imap by ampersand followed by bUuL1Q and +>> the closing dash. When I base64 decode this I end up with x6D x4B x8B +>> xD5. This appears to be big-endian UTF-16. +>> +> +> Yep. This is *exactly* what is specified by RFC 2152 ("UTF-7"), as +> modified by RFC 3501. +> +> +> +>> I have to byte-reverse each 2 byte sequence, but then I can convert it +>> to UTF8 (my target) and see the Chinese characters. +>> +> +> Uh, I think you mean you do a conversion from the UTF-16BE to the UTF-8 +> that your display routines expect, right? +> +> +> +>> I could also take the original data and stick a + in front of it (ending +>> up with +bUuL1Q) and convert this from UTF7 to UTF8 and end up with +>> valid characters. This last part I really don't understand - if it is +>> base64 encoded, how is that valid UTF7? +>> +> +> Please go read RFC 2152 again. base64 encoding is a step in generating +> UTF-7 encoded text. +> +> +> +>> Anyway, I don't seem to have an algorithm that will work on both of +>> these examples, and no way to detect which one I should use. Obviously +>> I am totally confused about what I am doing, but any further insight +>> would be appreciated. +>> +> +> I think you lost track of the NUL byte in the first example, and from that +> ended up thinking a different conversion was necessary. The rules are +> consistent. For a given &.....- chunk: +> strip & - delimiters +> base64 decode the ..... part +> convert that from UTF-16BE to whatever encoding you want to use +> +> +> Philip Guenther +> +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22759.mbox:2,S new file mode 100644 index 00000000..864acb91 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22759.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From colin at swaveit.com Sat Oct 22 13:01:24 2011 +To: imap-protocol@u.washington.edu +From: "Colin E. McDonald" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: +References: +Message-ID: <4E34BD88-1325-4F9A-AD45-E3B7E17C5790@swaveit.com> + +iScream. Hahaha! + +Colin E. McDonald +SquareWave Technologies +335 East 54th Street +Savannah, GA 31405 +(912) 313-2525 +colin@swaveit.com +www.swaveit.com + +On Oct 22, 2011, at 3:30 PM, "Mark Crispin" wrote: + +> There is yet another broken IMAP server inflicted upon the world. The +> iCloud/.me IMAP server (a.k.a. iSCREAM, st11p00mmm-iscream--5.me.com) +> advertises AUTH=PLAIN but doesn't accept it: +> 2 authenticate plain +> 2 BAD parse error +> +> Apparently, Apple thinks think that by advertising SASL-IR, a client is +> compelled to implement it. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22768.mbox:2,S new file mode 100644 index 00000000..6ecc2623 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22768.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From Pidgeot18 at verizon.net Sun Jun 5 13:59:56 2011 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBDFF5.9000301@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net> <4DEBBEC1.3080600@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> +Message-ID: <4DEBEE4C.40802@verizon.net> + +On 6/5/2011 12:58 PM, Lynn W. Taylor wrote: +> I'm not in a position to specify clients. I'll likely do my initial +> testing with Thunderbird unless someone warns me that it's a poor choice. +My recommendation, having done this before (I wrote the initial test +IMAP server for Thunderbird), is start by using telnet as your client +for the protocol. You're going to need to get a fair amount working +before a client will know how to handle your server: command parsing (I +think I did this first), capabilities, login, list, lsub, fetch, uid, +etc. Starting by typing everything manually lets you control the order +in which things work. + +Oh, and be sure to test that command parser thoroughly. UTF-7 is that +annoying. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22772.mbox:2,S new file mode 100644 index 00000000..7024128f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22772.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dwhite at olp.net Tue May 3 06:45:41 2011 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Re: Looking for help implementing an + IMAP-to-HTTP gateway for web app developers +In-Reply-To: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +References: <7D2A9AA5-CC8F-4C8A-A917-4E242E7BCE12@gmail.com> +Message-ID: <20110503134541.GB6295@dan.olp.net> + +On 02/05/11?14:42?-0700, Brian McConnell wrote: +>The idea is quite simple, to make a web service look like an IMAP server +>that a mobile email client can subscribe to. The IMAP-HTTP gateway +>presents an IMAP interface to the email client, which thinks it is talking +>to a mail server, and converts IMAP requests into RESTful HTTP queries to +>the upstream web service. +> +>This will be a simple way for web app developers to create mobile versions +>of their service, by using IMAP to deliver information to the mobile +>device. The logic is that IMAP clients are baked into most devices, run in +>the background as a core service, and have been thoroughly tested. It is a +>bit of a hack, but it makes use of something that is already there. +> +>The only missing piece is a reliable IMAP-HTTP utility. This need not be +>an especially complex program, since it just speaks IMAP to the client, +>and translates IMAP commands (e.g. a request to fetch a list of folders) +>into HTTP requests that are submitted to an upstream service, which +>replies with a formatted response (e.g. a JSON recordset) that, in turn, +>is converted back into IMAP form. + +Brian, + +A much simpler approach would be to inject your RSS feeds (or other HTTP +content) into an IMAP server via traditional email delivery semantics. + +You could probably prototype such a setup in a matter of days by piecing +together existing procmail/sieve, and http/lmtp/smtp/imap libraries for +your preferred scripting language. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22777.mbox:2,S new file mode 100644 index 00000000..419a7984 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22777.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From catphive at catphive.net Thu Apr 14 17:52:48 2011 +To: imap-protocol@u.washington.edu +From: Brendan Miller +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] cancel or limit results from imap search +Message-ID: + +Is there a way in the imap protocol to limit the number of results +from a search command? Would the only way to do this be to disconnect +the tcp stream after having received the number of results you want? + +As a follow up question, in the c-client, is there a means of safely +disconnecting a mailstream in the mm_searched callback? The +documentation seemed to indicate that calling back into the c-client, +say to do a mail_close, is not safe within mm_* callbacks. + +Thanks, +Brendan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22780.mbox:2,S new file mode 100644 index 00000000..a8d8827b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22780.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From dave at cridland.net Tue Mar 8 15:08:07 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Pipelined commands before completion of STARTTLS +In-Reply-To: +References: <4D7690AE.8020003@andrew.cmu.edu> + +Message-ID: <20334.1299625687.587275@puncture> + +On Tue Mar 8 21:58:18 2011, Philip Guenther wrote: +> On Tue, 8 Mar 2011, Ken Murchison wrote: +> > Pursuant to http://www.kb.cert.org/vuls/id/555316 +> > +> > I was wondering what the proper server behavior should be if a +> client +> > sends commands between STARTTLS and the server response. RFC 3501 +> > states that this is a client MUST NOT but doesn't discuss how the +> server +> > should handle it. +> > +> > I can see two possibilities (maybe there are others): +> > +> > 1. Send a BAD response if a command is pipelined after STARTTLS. +> > Should BAD be sent in response to STARTTLS or the following +> command? +> > +> > 2. Ignore the pipelined cleartext commands. +> +> 3. immediately close the connection +> +> 4. Treat data after the CRLF as data for the TLS handshake (i.e., +> to shave +> an RTT off in the success case). I seem to recall a proposal +> for an +> SMTP extension to indicate that the server would guarantee that +> STARTTLS would succeed and that it could handle having the +> client's +> handshake message pipelined with the STARTTLS request. (QTLS +> was it?) + +Yes, I like (4). + +Does the panel think there's a similar vulnerability lurking in SASL +negotiation? I'm thinking that for SASL negotiations carried out in +the clear, intended to negotiate a security layer, there's a similar +injection window on the final response sent by the client - ie, the +attacker would inject into that packet after the response, in the +hope that buffering would "execute" the command after the client has +completed authenticating, conceptually "within" the security layer. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22784.mbox:2,S new file mode 100644 index 00000000..1b3eb172 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22784.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From mrc+imap at panda.com Sun Feb 6 23:21:19 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Max literal line length +In-Reply-To: +References: +Message-ID: + +With the exception of the APPEND command, most literals that are likely to +appear in an IMAP command are relatively small. UW and Panda IMAP have a +limit of 10,000 octets which is far more than what anything is ever likely +to use. + +APPEND (and APPEND-class exceptions such as CATENATE) is the exception. +Those literals can be as large as an email message (so potentially +hundreds of megabytes). + +Many servers handle APPEND as a special case command. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095060.22788.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095060.22788.mbox:2,S new file mode 100644 index 00000000..7d15305d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095060.22788.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From jkt at gentoo.org Thu Jan 20 07:54:29 2011 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] UIDNEXT updates upon new message arrival +Message-ID: <4D385AB5.90208@gentoo.org> + +Hi, +when I'm SELECTing a mailbox and have some local state to work with +(cached UIDs and message parts etc), I'm currently using the UIDNEXT as +a hint for finding out what happened to the mailbox since the last +disconnect. My behavior is inspired by a certain document I've read a +few years ago (and unfortunately I can't find it right now), it goes +like this: + +if sync_state_not_usable || old.uidValidity != new.uidValidity: + full_sync() +else: + if new.uidNext == old.uidNext: + // certainly no new arrivals + if new.exists == old.exists: + // no deletions, either + sync_just_flags() + else: + sync_only_deletions() + else: + // Some messages were delivered since the last time, + // and there's no guarantee that they're still there + if new.uidNext - old.uidNext == new.exists - old.exists: + // only new arrivals + sync_only_additions() + else: + sync_generic() + +The goal here is to get a list of all UIDs in a mailbox and find out +which messages got deleted (so that I can purge them from the local +cache) and which arrived (so that I can initiate a prefetch for them, +and because I use UID FETCH exclusively, to actually fetch them at all). +I also sync FLAGS to be able to show updated "X new messages" while +messages arrive or are deleted from asynced mailbox. + +full_sync() forgets everything from the last time (wiping the cache +completely) and then synces UIDs and FLAGS. + +sync_just_flags() fetches all flags. + +sync_only_additions() performs "UID SEARCH UID old.uidNext:*" followed +by flags sync. + +sync_only_deletions() calls "UID SEARCH ALL" and then synces flags; this +could be optimized to use an algorithm similar to binary search to try +to locate the range where the deletions happened, but that would have +the drawback of increased latency, so I don't do that. + +sync_generic() performs in the same way as sync_only_deletions() at this +time (and couldn't be optimized in that manner). + +There's a problem with this approach, though, because IMAP servers won't +send UIDNEXT updates when sending EXISTS that informs about new +arrivals. Therefore, when I see the EXISTS which increments the message +count, I walk all the messages I have in my cache at that point, +starting at the message with the highest sequence number and going +backwards to message #1, and stop at the "first" (counting backwards) +message for which I already know the UID. Then I issue a "UID FETCH +highest-known-uid+1:* (FLAGS)" and when processing the untagged FETCH +responses, whenever I store a UID for a message which is higher or equal +than the UIDNEXT I have for the current mailbox, I also set the UIDNEXT +to the UID+1. I'm also listening for ordinary * OK UIDNEXT responses, so +servers which choose to send these updates are handled, too. + +I've read various posts to this list about reliability of the UIDNEXT, +but am reasonably sure that this is actually the safe way of using this +value -- the worst thing which could happen is wasting time with +excessively long response to the UID SEARCH command, AFAIK. + +I do not support QRESYNC yet. + +I'd appreciate if someone could check that the above makes sense and is +actually correct, or advise me about how to change that. + +With kind regards, +Jan + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22595.mbox:2,S new file mode 100644 index 00000000..254e38e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22595.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Mar 11 21:19:40 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <20041.1426095023@parc.com> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> <55005876.4070406@lavabitllc.com> + <18002.1426091085@parc.com> <55006FA4.3090800@lavabitllc.com> + <20041.1426095023@parc.com> +Message-ID: <46B7DE92-D504-4A31-894E-A5D6794A9C49@orthanc.ca> + + +On Mar 11, 2015, at 10:30 AM, Bill Janssen wrote: + +> Has nmh +> been ported to Android/iOS? + +Oh gawd. Really? You would read and type into a command line interface on a phone for your email? + +If you want to offer up Android and iOS buildbot slaves, I will add then to the build cluster. But I ain't porting the code! (I mean, eeew!) + +--lyndon + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22641.mbox:2,S new file mode 100644 index 00000000..65336926 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22641.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Mar 20 13:09:21 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: <> +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> + +Message-ID: + +Well, it was a nice explanation until Brandon ruined it with all those +facts. In the words of the wise old journalist: Too much fact checking +spoils a good story. ;) + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22682.mbox:2,S new file mode 100644 index 00000000..55fec079 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22682.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tjs at psaux.com Thu Mar 28 11:49:05 2013 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <4F401469-14A2-48FA-A6F7-B667A52E46C4@orthanc.ca> +References: + <5152E3E6.40506@aj.jp.nec.com> <1364388724.13923.97.camel@innu> + + + <4F401469-14A2-48FA-A6F7-B667A52E46C4@orthanc.ca> +Message-ID: <515490A1.3070301@psaux.com> + +On 3/27/13 7:35 PM, Lyndon Nerenberg wrote: + +>> I'm hesitant to suggest it, but is it worth sending BYE and dropping the connection? It's sailing just within the lines of the specification, I think. +> +> I think this is perfectly valid behaviour, and well within the spec. A smart server might choose whether the eat-and-continue vs. bye-and-punt based on the size of the proposed literal+, but punting is entirely valid. + +I would recommend against this, or at least advise caution. A lot of +clients, particularly mobile phone clients of a couple years ago, are +both stupid and single-minded. Hanging up is going to be treated as an +obvious temporary failure and they will retry. + +We (my former employer) had somebody with like 80k messages in their +"Sent" folder at one point because our SEARCH was broken, couldn't find +the Message-ID, and the client really, really, really wanted to make +sure it had been added. + +That said, BYE is compliant in my opinion; I just don't expect it to help. + +> And while the "nibble at the data slowly" idea is eeevily enticing, it's going to wreak havoc with the battery on my mobile, which is almost guaranteed to be running the most brain-dead IMAP client on the planet. (Servers factoring in aggregate data link speed in their eat-vs-bye calculations will score many karma points in my book.) + +The cleverness of this is appealing but it can't be worth the debugging +cost. + +I'm all in favor of advertising the limit, and recommending that +LITERAL+ be used exclusively to replace quoted-strings for short uses. +I don't think there's a good workaround otherwise. + +Tim + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22688.mbox:2,S new file mode 100644 index 00000000..e76d732f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22688.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From barryleiba at computer.org Thu Jan 24 07:51:57 2013 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +In-Reply-To: <1358846428.12608.2.camel@hurina> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> +Message-ID: + +> Assuming it was unilaterally sent FETCH and not a normal reply for +> setting the \Seen flag by UID FETCH BODY[], I agree. + +I contend that it doesn't matter *why* the server sent the flags +response. The flag change was caused by the FETCH BODY, but the fact +is that your UID FETCH command did not *ask* for FLAGS, so there's +*no* requirement that the server send the flags as part of that +response. And once you detach it that way, the server can do what it +wants. + +If, as a client, you want to head off this situation, the way to do it +is to ask for FLAGS in addition to BODY. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22697.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22697.mbox:2,S new file mode 100644 index 00000000..081a1549 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22697.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From dave at cridland.net Mon Dec 31 16:45:27 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Missing UIDNEXT during mailbox synchronization +In-Reply-To: <20121231133118.Horde.U5PPDhJmrIJk-ldhlJw3KQ1@bigworm.curecanti.org> +References: + <20121228112725.Horde.cM7EjLQoqQDix9dQMs5KcA1@bigworm.curecanti.org> + <1356723190.15576.140661171078629.69B791C0@webmail.messagingengine.com> + <20121228130129.Horde.VTgbGtjlIvg0wUwlkp5dDg6@bigworm.curecanti.org> + <1356732787.18647.140661171122177.5EB821AB@webmail.messagingengine.com> + <1356733058.19335.140661171123477.7DDFF57D@webmail.messagingengine.com> + <20121231133118.Horde.U5PPDhJmrIJk-ldhlJw3KQ1@bigworm.curecanti.org> +Message-ID: + +On 31 Dec 2012 20:32, "Michael M Slusarz" wrote: +> Why not? The stored UIDNEXT != the cached UIDNEXT. So something is up +and the client should issue FETCH's to retrieve further information. + UIDNEXT's have nothing to do with the actual next assigned UID, so I don't +care if it is incrementing or decrementing. It only matters if it is +different. +> + +Kind of. If size less cached size equals uidnext less cached uidnext, there +have been no expunges. + +>> . uid fetch * (uid) +>> . OK Completed (0.000 sec) +> +> +> I may have mis-typed before. A UID FETCH * is not useful - it should be +a FETCH * (UID) used instead to determine the last UID in the mailbox. And +if the mailbox is empty, I agree that the actual UIDNEXT value can't be +determined. In our client, we clear the UIDNEXT and cache so the next time +a message is seen the cache is restart/rebuilt. + +Uid fetch * (uid) is the same as Fetch * (uid). + +For updating a msgno/uid mapping, you want uid search. Ideally with return +(all), though in practise, I doubt there are any servers that don't do +qresync but still do esearch. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22701.mbox:2,S new file mode 100644 index 00000000..e8abcb5d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22701.mbox:2,S @@ -0,0 +1,349 @@ +MBOX-Line: From slusarz at curecanti.org Mon Nov 26 16:32:24 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> +Message-ID: <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + +Quoting Jan Kundr?t : + +> On Wednesday, 21 November 2012 23:54:17 CEST, Michael M Slusarz wrote: +>> I would strongly disagree with this statement. As written, the +>> draft is only minimally concerned with saving on network +>> round-trips. +> +> That's quite different from what I've understood from your draft -- +> I'd suggest making the motivation clearer, then. But point +> understood, and I've now purged the "let's save roundtrips" from my +> understanding of the draft :). OK. + +No need to purge the understanding - saving roundtrips remains a +useful goal. It's just not the primary motivating factor behind the +proposal. + +>> $result = $imap->useCompression(true); +>> // Check for success +>> $imap->useQresync(true); +>> // Check for success +>> $imap->setLanguage([LANGUAGE]); +>> // Check for success +> +> It is pretty obvious that if you use synchronous primitives for +> enabling individual sub-features in a serialized fashion, your +> performance will be limited by the round trip times. To put it more +> bluntly, you cannot have code like the one shown above and expect a +> good performace. +> +> Coming from that background, I see that it is tempting to replace +> this endless row of synchronous calls, each enabling a single +> optional feature, with a quick way to side-step this process by +> quickly jumping into a pre-negotiated state where everything which +> was enabled before is enabled now as well. However, my point is that +> clients already exist proving that the same efficiency can be +> achieved with the existing facilities. You're right that this +> requires abolishing the serial, synchronized code, but IMAP is not +> particularly friendly with synchronous APIs. + +I realize that the API argument is not my strongest one. It becomes +less strong considering that, yes: you could do all this configuration +in a single API call - i.e., when creating the IMAP interaction +object, you configure everything in there. + +I still maintain that writing an API that requires advanced knowledge +of IMAP is not that useful. Things like QRESYNC and LIST-STATUS can +be entirely abstracted so a client coder does not need to know +anything about them to take advantage of. + +>> A client may, depending on the capabilities returned, need to +>> perform various internal initialization tasks. For example - if +>> CONDSTORE/QRESYNC is listed, a client may have to then parse a +>> separate configuration file to grab the details of the local cache +>> where it is storing this information, and then connect to this +>> cache, etc. +> +> So you want to keep the cache information (among other things) +> inside some serialized client-side state storage. What prevents you +> from simply checking the capabilities against the previously +> recorded state and restoring the state when the capabilities match +> exactly? You can do that now, without waiting for this extension. +> Yes, it's ugly, but if your initialization is expensive... + +Because there's still no guarantee it's the same server/connection: +that is the key to all of this. A server can "look" the same but that +doesn't proves anything. + +What happens when the server is upgraded and UTF-8 searching now +works? The CAPABILITY string is exactly the same. But UTF-8 has been +marked as a bad charset so it will still not be available. And what +about those commands that have been determined to be broken previously +in the session? It is reasonable to expect the CAPABILITY string to +be the same between point releases of an IMAP server, but the server +may have fixed the bug that was causing bad command behavior. + +>> - Even when pipelining commands, they still need to be sent, the +>> incoming command needs to be tokenized (server), the command is +>> performed (server), the response sent back, any untagged responses +>> are tokenized (client), the untagged responses are interpreted +>> (client), the tagged response is tokenized (client), and the +>> tagged response is processed (client). None of this is "free". +>> Pipelining eliminates none of this. +> +> Using the numbers you posted later on, we're speaking about parsing +> roughly 600 bytes of a well-structured text. For me, it's hard to +> believe that this has any measurable impact. + +You are incorrect. + +I went ahead and setup some rough/quick benchmarking using current +imapproxy behavior as a proxy for the SUSPEND behavior. In this +benchmark, the server and client are on the same machine so network +latency is assumed to be non-existent. The load on this machine is +also non-existent (this test is the only active IMAP process; disk I/O +is negligible). + +Login without resuming session (connecting to a Dovecot 2.1 server) + +C: 1 LOGIN [login credentials] +S: 1 OK User logged in +C: 2 CAPABILITY +S: * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE +IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS +THREAD=ORDEREDSUBJECT MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS +LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES +WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE ACL RIGHTS=texk +S: 2 OK Capability completed. +C: 3 ENABLE QRESYNC +S: * ENABLED QRESYNC +S: 3 OK Enabled. + +Average elapsed time: 0.087 seconds + +Login with resuming session: + +C: 1 LOGIN [login credentials] +S: * OK [XPROXYREUSE] IMAP connection reused by squirrelmail-imap_proxy +S: 1 OK User logged in + +Average elapsed time: 0.039 seconds + +Difference: 0.048 seconds (~120% improvement) + +120% improvement in a very common example. And a reminder that this +is WITHOUT any network latency; latency would only increase the actual +real-time difference between the benchmarks. + +Caveats: +* imapproxy doesn't require you to provide the token before the auth +command, so that is admittedly not accounted for here. +* However, this RESUME could be easily pipelined with the +authentication command, so you are not adding a round-trip. +* Additionally. RESUME shouldn't result in much additional server +load/proccessing since it is doing nothing more than storing the token +in the server's memory - the server isn't going to process that token +until the authentication is complete. +* The above example is being routed through an additional proxy server +so there are small performance penalties there. +* Someone will probably say my code sucks, and that parsing shouldn't +take that long. That could very well be true. But I will note that I +am running this example on a totally unloaded IMAP server with a +single user. The reality is that most IMAP servers are not running on +a box that has 0.00 load. + +So the gains for this very simple example are significant - initial +login is twice as fast. A potential savings of 0.10 seconds on a +given connection could easily be possible: there would easily be this +much time savings given network latency from a mobile device, for +example. Given the old Amazon 100ms = 1% study, the theory behind +SUSPEND needs to at least be discussed. + +For fun, I also took a look at the performance gains between a +COPY/STORE/EXPUNGE vs. MOVE command. Here I saw ~30% improvement +(0.13 seconds vs. 0.10 seconds). Granted, MOVE is being implemented +to allow for atomicity of the move action, but it is a good comparison. + +>> I would argue that the language of the RFC still controls despite +>> what an e-mail on this list says. A client shouldn't be punished +>> for interpreting it that way either. +> +> The RFC is a specification crafted by humans. It has errors, and all +> subsequent revisions will still have errors. (See the errata for a +> list of those which are known already.) If you choose to block and +> not pipeline ENABLE QRESYNC and SELECT ... QRESYNC, you hurt your +> users. (Also note that the clarification given on this list was by +> the original authors of the RFC.) + +Yes, but you cited to an e-mail message that said this should be the +case. I hardly feel an IMAP implementer is going to take someone's +opinion in an email as canon. + +If this shows up as an errata to RFC 5161, I would tend to agree with +you. But it doesn't at this point. + +>>> As of the LANGUAGE -- how often do you expect to hit an error +>>> condition which is not described by an appropriate response code? +>>> I don't think that blocking for its result would be a good design +>>> choice. +>> +>> That could be your decision as a client author. I would vehemently +>> disagree. +>> +>>> And finally, what IMAP servers support the LANGUAGE extension? +>> +>> Why does this matter? RFC 5255 is a Standards Track extension. A +>> year from now, every IMAP server and 200 new ones may support it. +> +> I stand by my reasoning. In order for the block to be actually +> usefull, you'll have to talk to a server which: +> +> 1) actually implements LANGUAGE, +> 2) executes all commands in parallel OR has the LANGUAGE command +> implemented in such a slow way that it enables parallel processing +> for it, +> 3) returns a failure for one of the first commands which you send +> *and* does not return an appropriate response code. +> +> But it's your client, do whatever you want to do :). I'm merely +> saying that adding an extension driven by the desire to eliminate +> issues like this is not something I support. + +See benchmarks above. LANGUAGE response is a more complex response +than for ENABLE, so the floor of performance increase is 120%. + +>> It would be impossible to determine benchmarks since there is no +>> defined protocol yet. And, as mentioned above, any given +>> client/server interaction may provide different results based on +>> their own internal optimizations and extension support. +> +> Right. Well, based on how my client works, I don't expect any +> significant performance gains obtained through this proposal. + +Sure - just like IDLE is completely useless for disconnected clients. +That doesn't make SUSPEND not very useful for at least some clients. + +> I'm not the standards commitee, but having decent numbers saying +> "see, this RESUME extensions cuts 40% out of the 1300ms required to +> establish an IMAP session" is something which moves the discussion +> from the current, very vague stage of "this is good -- nope, this is +> worthless" into a stage where we can actually discuss what merits it +> really brings. As you're proposing the extension, you should IMHO +> provide these numbers. + +A MOVE saves 30% performance off equivalent commands. SUSPEND, at +least for a simple example, saves 120%. (And see below re: NOTIFY +about something that CAN'T practically be done with current +disconnected clients). + +> 1) You don't take the initial CAPABILITY into account, but you +> re-request CAPABILITY after login. (You need the initial capability +> to see whether the server supports RESUME at all.) This will change +> the numbers quite a lot. + +What's the point of including benchmarking of the initial CAPABILITY? +Both clients need to do this, so there is no difference - it is no +more expensive for a SUSPEND client than a non-SUSPEND client. + +And one of the reasons that I designed the RESUME command as I did is +precisely to address the second part of your comment: the need to +potentially send CAPABILITY pre-login. From an client implementer's +standpoint, it is quite likely that you DON'T need this CAPABILITY so +that is an additional advantage. + +Let's assume that your client program has previously connected to a +given IMAP server and executed a successful SUSPEND command. The next +time it connects to the same IMAP server, it has no way of knowing +whether that server is identical pre-authentication. However: + +1. Since the previously connected server supports the SUSPEND command, +and it is very likely (although not guaranteed) that the server hasn't +changed in the time since the client last connected, it can be assumed +to a high degree of probability that the server supports SUSPEND. +2. A client using SUSPEND information will know which authentication +method was successful the first time it connected to the server. +Following the logic in #1, it can be assume that the server continues +supports this authentication method. +3. RESUME command doesn't output any response that needs to be parsed +before authentication can occur. + +If #1 happens to not be true, this is irrelevant - a client will just +do normal initialization when resuming (the RESUME command would +generate a BAD tagged response, but a client SHOULD ignore this). + +If #2 is not true, a client would have sent 2 unnecessary commands but +otherwise, no harm done. + +#1 or #2 is an incorrect assumption in, say, 1 out of 100 connections +(which is probably a tremendously conservative example. In a large +webmail installation, with 10,000+ concurrent users, you are getting +millions of connections a day on software that isn't being touched for +several months). Even at this rate, it still makes far more sense to +make these assumptions than 1% of the time sending an additional 2 +round-trips. + +So a client supporting RESUME will likely save ANOTHER entire +round-trip, so the 100%+ gain listed above is again shown to be a +conservative estimate. + +> 2) The sample token which Timo showed on the other list was way +> longer than base64("state token") you use. Just saying. + +Sure. But as long as suspend tokens are not approaching 1000+ bytes, +they should comfortably fit into an IP packet so this is irrelevant. + +> 3) Saving 600 bytes of transmitted data per connection is noise +> compared to what an actual session typically transfers. + +A 50-100ms reduction in connection time is not noise. Maybe it is for +a single client connecting to a single server. But it most certainly +is not for large, distributed systems. This kind of savings can be +the difference between needing to add an additional server to the +backend farm, which may cost a significant amount of money in +hardware/installation/maintenance costs. + +> 4) You could save even more bytes by converting IMAP to a binary +> protocol. That possibility in itself is, however, no reason to do so. + +I'm not looking to write IMAP 5. I'm looking at a relatively +uncomplicated way to improve performance in IMAP 4. + +> 5) You're taking an advantage of eliminating NAMESPACE, but so far +> have ignored LIST and STATUS, even though a typicall client will +> need them as well. When the LIST responses come into account, +> savings of 600 bytes starts looking more and more like noise -- not +> mentioning the mailbox synchronization or data transfers. + +Mailbox listing is a very touchy spot for disconnected clients. +Historically, a disconnected client is pretty much stuck with listing +the mailboxes once with the understanding that if another client +changes the mailbox structure there's not much we can do about it +without allowing a user to manually refresh the mailbox list (or +possibly doing something like polling the mailbox list at a given time +interval). + +However, as Timo noted, SUSPEND potentially allows disconnected +clients to take advantage of NOTIFY. Which would be a gigantic gain. +With the combination of the two, disconnected clients could +potentially have the equivalent of QRESYNC for mailbox lists, which is +a feature that doesn't currently exist. No amount of pipelining is +going to fix this. + +Additionally, this behavior makes SUSPEND useful for connected clients +if such client locally caches mailbox lists: a desktop client that +opens a second or two faster due to the fact that LIST's don't need to +be sent is a substantial UI improvement. + +In other words, SUSPEND brings real-world performance improvements and +provides multiple features that are not possible with current IMAP +protocol/extensions. + +Once again, thanks for the comments. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22743.mbox:2,S new file mode 100644 index 00000000..6dad7c94 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22743.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From blong at google.com Tue Mar 20 15:06:24 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> + <17068.1332235633.171765@puncture> + +Message-ID: + +On Tue, Mar 20, 2012 at 2:33 PM, PA wrote: + +> +> On Mar 20, 2012, at 10:27 AM, Dave Cridland wrote: +> +> > No, NOOP is a command that does nothing; an EXISTS response is not +> automatically generated - it can be generated during any command (or, for +> extra bonus points, not during any command), but only when there are new +> messages. +> +> Sure. Does it hurt though? If one send an EXISTS response even though the +> message count hasn't changed? +> + +We've seen some clients which will always request information about the +last message in the folder if you give the same EXISTS. We issue duplicate +EXISTS every N minutes on IDLE as a keepalive for the connection (to keep +various NATs from closing the connection), but we only have to deal with +the small number of extra FETCHes every N minutes. (we tried to use an +untagged * XKEEPALIVE response, but some clients hang-up when they get an +untagged response they don't understand). + +Brandon +-- + Brandon Long + Staff Engineer + Gmail Delivery TLM +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22749.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22749.mbox:2,S new file mode 100644 index 00000000..f358de7c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22749.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From imap at maclean.com Wed Jan 25 09:15:26 2012 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] FETCH n BODY[1.MIME] for a single-part + message +In-Reply-To: +References: <201201241544.q0OFi3S2028880@mxout13.cac.washington.edu> + + <2607DEC0-FA3A-4D7D-885E-ECA7B2CF9EA8@iki.fi> + +Message-ID: + +I have corrected my server to send "" and sent a message to ibis, the +vendor of the client in question, drawing their attention to this issue. + +Pete + +At 10:37 AM 1/25/2012, Mark Crispin wrote: +>On Wed, 25 Jan 2012, Timo Sirainen wrote: +>>I would think it is incorrect for the client to even ask for that, so +>>it's more of a GIGO issue.. It looks like Dovecot returns the header, +>>but I didn't intentionally make it do that, it just happens for some +>>reason. +> +>You are correct; a client should not ever ask for that. As far as IMAP is +>concerned, there is no such part. The correct server response in IMAP to a +>request for a non-existent body part is to return the empty string. +> +>There are complicated, and to some extent historical, reasons why the +>empty string (as opposed to an error) is the correct return. Suffice it to +>say that a client that never asks for any body part without first +>verifying that it exists via BODYSTRUCTURE will never encounter that +>behavior; but there are reasons why a client might do otherwise. +> +>Hint: "BODY[1]<1:128>". +> +>-- Mark -- +> +>http://panda.com/mrc +>Democracy is two wolves and a sheep deciding what to eat for lunch. +>Liberty is a well-armed sheep contesting the vote. +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22752.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22752.mbox:2,S new file mode 100644 index 00000000..4232c808 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22752.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From dave at cridland.net Wed Dec 21 04:20:57 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] body[n.header] vs. body[n.mime]? +In-Reply-To: <7A5C9702-B74C-4AA7-9075-449D07B0435B@mac.com> +References: <7A5C9702-B74C-4AA7-9075-449D07B0435B@mac.com> +Message-ID: <3461.1324470057.646971@puncture> + +On Wed Dec 21 12:05:23 2011, Petite Abeille wrote: +> For example, what should one return when asked for body[1.2.mime] +> vs. body[1.2.header]? + +In this message, I've attached your original message, and this will +be BODY[2]. + +I'd expect BODY[2.MIME] to be + +"Content-Type: message/rfc822\r\nContent-Disposition: +inline\r\nContent-Description: [Imap-protocol] [noob] body[n.header] +vs.\r\n body[n.mime]?\r\n\r\n" + +On the other hand, BODY[2.HEADER] will be your message's header (as +it exists as BODY[HEADER] in the original message I forwarded from my +INBOX). + +For reference's sake, BODY[2.1] is your original message text, +whereas this text is BODY[1]. + +And to complete the example, a FETCH of UID, MODSEQ, ENVELOPE, and +BODYSTRUCTURE from a draft of this message (ie, the text size of this +section will have changed) reads: + +* 55 FETCH (FLAGS (\\Recent \\Draft \\Seen $MDNSent) UID 55 MODSEQ +(33) ENVELOPE ("Wed, 21 Dec 2011 12:12:30 +0000" "Re: [Imap-protocol] +[noob] body[n.header] vs. body[n.mime]?" (("Dave Cridland" NIL "dave" +"cridland.net")) (("Dave Cridland" NIL "dave" "cridland.net")) +(("Dave Cridland" NIL "dave" "cridland.net")) (("Petite Abeille" NIL +"petite_abeille" "mac.com")("IMAP Protocol Interest List" NIL +"IMAP-Protocol" "u.washington.edu")) NIL NIL +"<7A5C9702-B74C-4AA7-9075-449D07B0435B@mac.com>" +"<3461.1324469550.264077@puncture>") BODYSTRUCTURE (("TEXT" "PLAIN" +("DELSP" "yes" "CHARSET" "us-ascii" "FORMAT" "flowed") NIL NIL "7BIT" +530 15 NIL NIL NIL)("MESSAGE" "RFC822" NIL NIL "[Imap-protocol] +[noob] body[n.header] vs. body[n.mime]?" "7BIT" 6661 ("Wed, 21 Dec +2011 13:05:23 +0100" "[Imap-protocol] [noob] body[n.header] vs. +body[n.mime]?" (("Petite Abeille" NIL "petite_abeille" "mac.com")) +((NIL NIL "imap-protocol-bounces" "mailman2.u.washington.edu")) +(("Petite Abeille" NIL "petite_abeille" "mac.com")) (("IMAP Protocol +Interest List" NIL "IMAP-Protocol" "u.washington.edu")) NIL NIL NIL +"<7A5C9702-B74C-4AA7-9075-449D07B0435B@mac.com>") ("TEXT" "PLAIN" +("CHARSET" "US-ASCII") NIL NIL "7BIT" 885 33 NIL NIL NIL) 119 NIL +("INLINE" NIL) NIL) "MIXED" ("BOUNDARY" +"3461.1324469550.264010@puncture") NIL NIL))\r\n' + +Does that help clarify? + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade +-------------- next part -------------- +An embedded message was scrubbed... +From: Petite Abeille +Subject: [Imap-protocol] [noob] body[n.header] vs. body[n.mime]? +Date: Wed, 21 Dec 2011 13:05:23 +0100 +Size: 6589 +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22756.mbox:2,S new file mode 100644 index 00000000..8d5ce81d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22756.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From shivdas.tomar at oracle.com Thu Nov 3 12:05:34 2011 +To: imap-protocol@u.washington.edu +From: "shivdas.tomar@oracle.com" +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Auto Reply: Imap-protocol Digest, Vol 71, Issue 4 +Message-ID: <60faa660-043b-43e0-b482-8ad10b6a5788@default> + +Hi,due to family emergency, I will be out of office for a few days, please contact following persons: + +NZD-> DB Prep etc. issues: kevin.hudson@oracle.com +Workflow issues: vijayakumar.shanmugam@oracle.com + +For any other issues, please contact my manager rajesh.ghosh@oracle.com + +Thanks +Shiv + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22759.mbox:2,S new file mode 100644 index 00000000..f5fc603f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22759.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From brong at fastmail.fm Sat Oct 22 13:01:53 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi> +References: + <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi> +Message-ID: <20111022200153.GA3907@brong.net> + +On Sat, Oct 22, 2011 at 10:39:35PM +0300, Timo Sirainen wrote: +> Related: I added http://imapwiki.org/ServerBugs page a while ago and there are now two servers listed there. The idea is to have a page that lists major bugs that are unlikely to get fixed in servers (i.e. big commercial ones that don't really care). + +No Gmail yet? + +I'm hoping to have Cyrus fully complient with I18NLEVEL=1 soon - and +passing all the LIST-EXT tests too. + +I still feel overall that IMAP isn't really a perfect fit for how it's +being used by most servers and most clients these days. Too many options, +too much state. Too complex. But I don't know what the alternative +would look like or how to get there... so I keep on implementing IMAP. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22768.mbox:2,S new file mode 100644 index 00000000..2dc76976 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22768.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Sun Jun 5 17:17:23 2011 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBDFF5.9000301@BusCom.net> +References: <4DEBB242.2090200@BusCom.net>, + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu>, + <4DEBDFF5.9000301@BusCom.net> +Message-ID: <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> + +On 5 Jun 2011 at 12:58, Lynn W. Taylor wrote: + +> Search (#10) is the one that worries the most. Some of that is the same +> reason that COPY doesn't bother me. Glad it can be left to last, and +> wish it could be left out. + +Lynn, first off, good luck with this. I admire your confidence and +enthusiasm, but I suspect you will find the job quite a bit bigger than +you expect. + +To me, IMAP seems as much a matter of mindset as it is of code - you +*must* think in much the same the way the people who have written +the IMAP RFCs over the years have thought, or you will inevitably fall +afoul of details that might not at first glance be obvious - a good +example, for instance, is that spaces are syntactically crucial +throughout much of the IMAP command structure (especially in +BODYSTRUCTURE): for many programmers accustomed to other +environments, spaces are not much more than decoration, but you +can't think this way in IMAP. + +The absolute golden rule of IMAP is "read the BNF". It can be tortuous, +but in over a decade of working with IMAP (and I do not consider +myself in any way an expert or a model for others), I have never found +a case where spending the time working my way through the BNF +maze did not answer a syntactic question, however thorny it might +have seemed. + +Pete's list was a very, very good one - I found myself nodding in +memory and agreement as I read through it. I won't labour the point by +repeating things he has said, but I would make three observations: + +1: He's absolutely right about the parser. If you don't have a robust, +high-quality RFC2822 and RFC2045 (MIME) parser, you're shot before +you start. + +2: FETCH is full of traps, even if they don't appear to be traps at first +glance: the part that gave me the most trouble was partial fetches of +arbitrary data: many clients will use this as a "chunking" mechanism, +but it creates a serious state problem of what you keep between +commands on the server side (imagine that you have a 20MB +message and the client wants to retrieve a MIME sub-part from the +middle of it 1K at a time: if you re-parse and re-extract the sub-part on +each chunk, you'll absolutely kill your server's performance - you need +to find some way of caching the sub-part so you can easily return +subsequent requests for the next chunk). + +3: Overall, IMAP part numbering was far and away the hardest thing I +had to do with the protocol. In my case, I had well-established parsing +and message management and I had to shoe-horn IMAP's slightly +idiosyncratic part numbering (I'm sure I'll get a lecture for that +statement, but I'm allowed my opinions) into it. Because the part +numbering is implied, not explicit, it's absolutely crucial that you +understand how it works, and how your parsing engine is going to +cope with it. + +> I'm not in a position to specify clients. I'll likely do my initial +> testing with Thunderbird unless someone warns me that it's a poor choice. + +From quietly reading this list for many years, I suspect the consensus +you will get will probably be something along the lines of "all clients are +poor choices", although I personally think that's a bit harsh. I'd test +against the clients most likely to be used with your server and be ready +to accommodate them as required (some accommodation is almost +inevitable, unfortunately). + +Good luck! + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Seen on the menu of a Swiss Restaurant: + "Our wines leave you nothing to hope for." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22772.mbox:2,S new file mode 100644 index 00000000..c1a16a9d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22772.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue May 3 08:34:18 2011 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Re: Looking for help implementing an + IMAP-to-HTTP gateway for web app developers +Message-ID: + +Feed2imap should do well. + +-- +Viele Gr??e +Arnt Gulbrandsen + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22777.mbox:2,S new file mode 100644 index 00000000..ebd86172 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22777.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From mrc+imap at panda.com Thu Apr 14 19:04:28 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] cancel or limit results from imap search +In-Reply-To: +References: +Message-ID: + +On Thu, 14 Apr 2011, Brendan Miller wrote: +> Is there a way in the imap protocol to limit the number of results +> from a search command? + +You can compose your search criteria to limit the range of messages that +are searched by either message sequence number or UID, and by doing so put +a cap on the number of messages returned. + +There is an extension that returns "first n results"; but that extension +is not widely implemented. + +> Would the only way to do this be to disconnect +> the tcp stream after having received the number of results you want? + +Since search results come back in a single response, it is pointless to do +that. + +> As a follow up question, in the c-client, is there a means of safely +> disconnecting a mailstream in the mm_searched callback? The +> documentation seemed to indicate that calling back into the c-client, +> say to do a mail_close, is not safe within mm_* callbacks. + +The simple answer is "no". + +IMAP is not HTTP. IMAP is a stateful protocol. Disconnecting is +antihetical to state architectures. + +Please use IMAP properly. The market is saturated with poorly designed +and poor performing IMAP client implementations. Don't add to them. + +If you enjoy banging your head against a wall repeatedly in frustration +as your application never works work a damn, then ignore my advice. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22780.mbox:2,S new file mode 100644 index 00000000..a62fef63 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22780.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc+imap at panda.com Tue Mar 8 15:18:16 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Pipelined commands before completion of STARTTLS +In-Reply-To: <20334.1299625687.587275@puncture> +References: <4D7690AE.8020003@andrew.cmu.edu> + + <20334.1299625687.587275@puncture> +Message-ID: + +On Tue, 8 Mar 2011, Dave Cridland wrote: +> Yes, I like (4). + +But (2) is going to happen, so clients should not be surprised. + +> Does the panel think there's a similar vulnerability lurking in SASL +> negotiation? I'm thinking that for SASL negotiations carried out in +> the clear, intended to negotiate a security layer, there's a similar +> injection window on the final response sent by the client - ie, the +> attacker would inject into that packet after the response, in the +> hope that buffering would "execute" the command after the client has +> completed authenticating, conceptually "within" the security layer. + +How widespread are security layer implementations in SASL? + +I guess that some percentage (but less than 100%) of the dozen or so sites +in the world that use Kerberos have it. But I suspect that this train +left the station long ago, back when the STARTTLS command was added rather +than made part of SASL. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22784.mbox:2,S new file mode 100644 index 00000000..42ea05ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22784.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From bruno.soares at digitro.com.br Tue Feb 8 08:48:48 2011 +To: imap-protocol@u.washington.edu +From: "Bruno M. Soares" +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +Message-ID: <4D5173F0.7030405@digitro.com.br> + +I opened pcap file and there it is: + +* OK IMAP4 ready^M +1 capability^M +* CAPABILITY IMAP4 IMAP4rev1 LITERAL+ COMPRESS=DEFLATE ACL RIGHTS=kxte +QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT +CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT +THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE LIST-EXTENDED WITHIN +QRESYNC SCAN XLIST DIGEST=SHA1 IDLE URLAUTH SASL-IR AUTH=PLAIN STARTTLS^M +1 OK completed^M +2 authenticate plain^M ++ ^M +AHRlc3Rlc3NlQGZtZ2lybC5jb20AVGVzdGUxMjM=^M +2 OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxte QUOTA +MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN +MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SORT SORT=MODSEQ +THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE LIST-EXTENDED +WITHIN QRESYNC SCAN XLIST DIGEST=SHA1 URLAUTH URLAUTH=BINARY +LOGINDISABLED COMPRESS=DEFLATE IDLE] User logged in +SESSIONID=^M +3 namespace^M +* NAMESPACE (("INBOX." ".")) (("user." ".")) (("" "."))^M +3 OK Completed^M +4 COMPRESS DEFLATE^M +4 OK DEFLATE active^M +2U???,.QPRRPRU??^B^@^@^@???R<88>??^L^NQ?<88>?H,v???I)J?S<88>??K???TP?SR??s?<8f>??2U??Vp??-?I-IMQ?0?300P(NM.V0QHN??)???^B^@^@^@??2C??<81>D^@^@^@^@???B6?/^_a<9e>KQbZI1<92><81>z^P^Q^.<9c>Z<82>S?J +^Z<94> :@^B +<9e>%???Jx?<85>^T%^Vg +[^D^V??2#??^@^@^@^@??2W?).M^B^Kx?9?G?i^A^E^A^@^@^@???R? +^NuR???Ps?^F^X?^M^@^@^@^@???@^H<96>^V?^V<81>?^@^@^@^@?????^H( +^@^@^@???D<88><81>?^@^@^@^@???g?%1?^C^@^@^@??24P<80><9b>^D?^H^T^C^@^@^@??^B^Z<80>^QW(<91>dh@<8c>/^A^@^@^@??24D^S?^K)J,?^@?^@^@^@^@??B6^F^QtX???^P?qFp?^@^@^@^@??24RH.JM,IE<97>^@^@^@^@??24R??W?M??^A?^Y<85>?<9c>???<94>J<85>?<8a>?b<90>?^@^@^@^@??24?4^F^@^@^@??"?fcb?^L^@^@^@?? + + +But I can't decompress de deflate part of file. + +Can anyone give me a little help? + +Thanks! + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22788.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22788.mbox:2,S new file mode 100644 index 00000000..973391cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22788.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From dave at cridland.net Thu Jan 20 15:52:09 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] UIDNEXT updates upon new message arrival +In-Reply-To: <4D385AB5.90208@gentoo.org> +References: <4D385AB5.90208@gentoo.org> +Message-ID: <28835.1295567529.285091@puncture> + +On Thu Jan 20 15:54:29 2011, Jan Kundr?t wrote: +> when I'm SELECTing a mailbox and have some local state to work with +> (cached UIDs and message parts etc), I'm currently using the +> UIDNEXT as +> a hint for finding out what happened to the mailbox since the last +> disconnect. My behavior is inspired by a certain document I've read +> a +> few years ago (and unfortunately I can't find it right now), it +> goes +> like this: +> +> +You're describing (a slightly broken version of) Polymer's sync +algorithm. + +See https://github.com/dwd/Polymer/blob/master/infotrope/imap.py +around line 3611, and also line 3800. + +> There's a problem with this approach, though, because IMAP servers +> won't +> send UIDNEXT updates when sending EXISTS that informs about new +> arrivals. + + +No, but that's okay. If N messages arrive, UIDNEXT must increase by a +minimum of N. In fact, if N messages arrive, UIDNEXT will in all +likelyhood increase by precisely N. I can conceive of edge cases +where it increases by more than N in a reasonable implementation, but +they're unlikely. So just add one for each new message that you're +told about during a session. (ie, each time you're told about an +increase to EXISTS, add the difference to your UIDNEXT). + +This is probably easier than your current approach, although that +looks valid. (Just complicated). + +> I do not support QRESYNC yet. + +You should do - it's effectively the same sync algorithm, but changed +to take advantage of the server's knowledge instead - so the +complicated selection is done by the server. + +Polymer doesn't do a binary search, by the way - it fetches chunks of +1000 UIDs at once, and has an amusing algorithm to decide how many +chunks to fetch, depending on whether ESEARCH is used (which'll help +you hugely) and how sparse the UID mapping is. For finding a UID in +the mapping, it actually does a successive approximation technique, +on the assumption that the map is uniformly sparse, which works +pretty well - usually it find the right chunk in its first guess. + +For resync purposes, if there have been expunges, it discards and +refetches just the last block - because generally expunges will +happen in the recent portion of the mailbox - and if the beginning of +the newly fetched UID block matches the beginning of the one it's +replacing, the UID map is now synchronized. + +Otherwise, it starts hunting backward through the blocks, several at +a time, looking for the first unseen expunge, but this is really rare. + +Most of this algorithm dates from a time when there was a real +emphasis on reducing the actual octet count - I don't think that's +the case so much anymore, so it's probably overkill. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095061.22792.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095061.22792.mbox:2,S new file mode 100644 index 00000000..431d4fb7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095061.22792.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Mon Nov 22 11:51:59 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "l" right in IMAP ACLs +Message-ID: <1290455519.5119.63.camel@kurkku.sapo.corppt.com> + +Anyone else think that these aren't quite right? + +> SUBSCRIBE - "l" right is required only if the server checks for +> mailbox existence when performing SUBSCRIBE. + +If user has other rights than "l" to a mailbox that makes it visible +(e.g. "r" or "i"), why should SUBSCRIBE not be allowed? It would even +make sense to me that if user has +r-l that subscribing to it would make +it easier to access via clients. + +> LSUB - "l" right is required only if the server checks for mailbox +> existence when performing SUBSCRIBE. However, unlike other +> commands (e.g., SELECT) the server MUST NOT return a NO response +> if it can't list a subscribed mailbox. + +LSUB command lists whatever subscriptions user has set. If a mailbox is +deleted, its subscription isn't deleted. Why would it be different with +ACLs? Does this RFC really intend that if "l" right is removed from a +mailbox, its subscription should be hidden (and if "l" right is given +back, it would appear back)? + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22595.mbox:2,S new file mode 100644 index 00000000..90acd04c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22595.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From jguthrie at brokersys.com Thu Mar 12 07:30:41 2015 +To: imap-protocol@u.washington.edu +From: Jonathan Guthrie +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <46B7DE92-D504-4A31-894E-A5D6794A9C49@orthanc.ca> +References: <54FAEB94.4070508@lavabitllc.com> + <54FBF289.3010202@psaux.com> <7164.1425831184@parc.com> <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> <6506.1425915329@parc.com> + <55005876.4070406@lavabitllc.com> <18002.1426091085@parc.com> + <55006FA4.3090800@lavabitllc.com> <20041.1426095023@parc.com> + <46B7DE92-D504-4A31-894E-A5D6794A9C49@orthanc.ca> +Message-ID: <5501A311.4040704@brokersys.com> + +On 3/11/2015 11:19 PM, Lyndon Nerenberg wrote: +> On Mar 11, 2015, at 10:30 AM, Bill Janssen wrote: +> +>> Has nmh +>> been ported to Android/iOS? +> Oh gawd. Really? You would read and type into a command line interface on a phone for your email? + +I routinely ssh from my phone to my mail server to read mail in mutt. I +don't usually send mail that way, but I do read and type into a CLI on a +phone. Often. + +I'm a dinosaur and I admit it. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22641.mbox:2,S new file mode 100644 index 00000000..12871e1a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22641.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From iana at apple.com Thu Mar 20 13:37:55 2014 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling + for flag changes +In-Reply-To: +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + <38fb5091-dd83-484e-9b95-49ed42899485@flaska.net> + +Message-ID: <40D41F4E-344D-4B60-95DC-8ECC8565CFA6@apple.com> + +That?s all well and good for Gmail (and thanks for making that change!), but they aren?t the only ones by far. (Although they are certainly a significant big one.) Does doing STATUS on a SELECTed connection would seem reasonable on first glance as a more general solution? Or is that just not done? Trying to wait out all of the perfectly-legal-but-somewhat-unfortunate servers seems like an exercise in futility? + +Ian + +On Mar 20, 2014, at 12:17 PM, Brandon Long wrote: + +> Our support for unsolicited FETCH responses is in testing. Anyone who would like to test it is welcome to ping me, and I can enable it for the accounts you specify. +> +> Brandon +> +> +> On Thu, Mar 20, 2014 at 12:07 PM, Jan Kundr?t wrote: +> On Thursday, 20 March 2014 14:32:30 EDT, Ian Anderson wrote: +> I?m finding it dismayingly common that servers don?t give flag changes (i.e. an untagged FETCH response with FLAGS) on a NOOP. Some of them don?t support IDLE, or don?t give flag changes on IDLE either. At least some of the servers do support CONDSTORE though. +> +> I'm willing to argue that these servers are broken, and yes, I'm well aware that GMail is among them, and yes, this is despite the fact that RFC2177 does not mention FLAGS explicitly. See [1] (and the rest of that thread) for details. +> +> Seriously, letting one know about new messages, deleted messages *and* changes of messages' status is the whole point of IDLE. Randomly picking just a subset of these events and not notifying on the rest of them means that we're back to polling. If we're polling, we could very well get rid of the whole IDLE in the first place. +> +> Anyway, Google's position on the issue is also documented in that thread, so there isn't much point in rehashing it again, I guess. The fact is that compared to the API which is available to their own client, the interface made available via IMAP is seriously limited. Take your own conclusions from that. +> +> Cheers, +> Jan +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22682.mbox:2,S new file mode 100644 index 00000000..9312a41f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22682.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From blong at google.com Thu Mar 28 12:23:36 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <515490A1.3070301@psaux.com> +References: + <5152E3E6.40506@aj.jp.nec.com> <1364388724.13923.97.camel@innu> + + + <4F401469-14A2-48FA-A6F7-B667A52E46C4@orthanc.ca> + <515490A1.3070301@psaux.com> +Message-ID: + +I could see advertising LITERAL+=10000 for example, a max limit for +LITERAL+. + +or LITERAL=35000000 for max size of literals period. + +The folder level limit, while may be useful, is undiscoverable unless the +client issues a STATUS or its returned in LIST-EXTENDED. + +Brandon + + +On Thu, Mar 28, 2013 at 11:49 AM, Tim Showalter wrote: + +> On 3/27/13 7:35 PM, Lyndon Nerenberg wrote: +> +> I'm hesitant to suggest it, but is it worth sending BYE and dropping the +>>> connection? It's sailing just within the lines of the specification, I +>>> think. +>>> +>> +>> I think this is perfectly valid behaviour, and well within the spec. A +>> smart server might choose whether the eat-and-continue vs. bye-and-punt +>> based on the size of the proposed literal+, but punting is entirely valid. +>> +> +> I would recommend against this, or at least advise caution. A lot of +> clients, particularly mobile phone clients of a couple years ago, are both +> stupid and single-minded. Hanging up is going to be treated as an obvious +> temporary failure and they will retry. +> +> We (my former employer) had somebody with like 80k messages in their +> "Sent" folder at one point because our SEARCH was broken, couldn't find the +> Message-ID, and the client really, really, really wanted to make sure it +> had been added. +> +> That said, BYE is compliant in my opinion; I just don't expect it to help. +> +> +> And while the "nibble at the data slowly" idea is eeevily enticing, it's +>> going to wreak havoc with the battery on my mobile, which is almost +>> guaranteed to be running the most brain-dead IMAP client on the planet. +>> (Servers factoring in aggregate data link speed in their eat-vs-bye +>> calculations will score many karma points in my book.) +>> +> +> The cleverness of this is appealing but it can't be worth the debugging +> cost. +> +> I'm all in favor of advertising the limit, and recommending that LITERAL+ +> be used exclusively to replace quoted-strings for short uses. I don't think +> there's a good workaround otherwise. +> +> Tim +> +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22688.mbox:2,S new file mode 100644 index 00000000..f38e0d02 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22688.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu Jan 24 08:21:33 2013 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +In-Reply-To: +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + +Message-ID: <51015F8D.8020300@isode.com> + +On 24/01/2013 15:51, Barry Leiba wrote: +>> Assuming it was unilaterally sent FETCH and not a normal reply for +>> setting the \Seen flag by UID FETCH BODY[], I agree. +> I contend that it doesn't matter *why* the server sent the flags +> response. + +Indeed. + +> The flag change was caused by the FETCH BODY, but the fact +> is that your UID FETCH command did not *ask* for FLAGS, so there's +> *no* requirement that the server send the flags as part of that +> response. And once you detach it that way, the server can do what it +> wants. +> +> If, as a client, you want to head off this situation, the way to do it +> is to ask for FLAGS in addition to BODY. + +An alternative is to keep message numbers for the duration of a UID +FETCH and correlate multiple FETCH responses that way. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22701.mbox:2,S new file mode 100644 index 00000000..672104b0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22701.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From blong at google.com Mon Nov 26 16:41:34 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> +Message-ID: + +On Mon, Nov 26, 2012 at 4:32 PM, Michael M Slusarz wrote: +> +> +> Because there's still no guarantee it's the same server/connection: that +> is the key to all of this. A server can "look" the same but that doesn't +> proves anything. +> +> What happens when the server is upgraded and UTF-8 searching now works? +> The CAPABILITY string is exactly the same. But UTF-8 has been marked as a +> bad charset so it will still not be available. And what about those +> commands that have been determined to be broken previously in the session? +> It is reasonable to expect the CAPABILITY string to be the same between +> point releases of an IMAP server, but the server may have fixed the bug +> that was causing bad command behavior. + + +So, you deduce bugs in the server and then remember them... and this is +better than violating the ID spec? + +Your adherence is commendable. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22743.mbox:2,S new file mode 100644 index 00000000..bf469220 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22743.mbox:2,S @@ -0,0 +1,85 @@ +MBOX-Line: From dave at cridland.net Tue Mar 20 15:20:25 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + +Message-ID: <20897.1332282025.074478@puncture> + +On Tue Mar 20 21:33:37 2012, PA wrote: +> Sure. Does it hurt though? If one send an EXISTS response even +> though the message count hasn't changed? +> +> +It'd be reasonable behaviour to do a new-message ding whenever EXISTS +is seen outside the context of a SELECT, as an example. Perhaps it'd +be na?ve to do so without checking the number of messages has +actually increased, but it's reasonable to assume it only indicates +new messages. + +> > Incidentally, there are two commands that do nothing in IMAP, and +> both are typically used for checking for new mail. NOOP returns +> instantly, whereas IDLE returns only after the client sends DONE. +> +> IDLE is an extension, no? + +Yes, but - if your server is at all sane - it ought to be quite +simple to do. If your server is really clever, the only thing IDLE +will do is send push notifications of EXPUNGEs. + +> > They're allowed to do whatever you want to make this happen +> behind the scenes in your server, of course, they just don't affect +> the state of the mailbox from the client's point of view. +> > +> > But a client *could* check the mailbox by repeatedly polling with +> a SEARCH command, too. +> +> I thought EXPUNGE responses are not welcome during a FETCH, STORE, +> or SEARCH, no? So a SEARCH would not cut it to trigger a status +> update, wouldn't it? +> +> +Ooops. Yes, sorry. Subsitute UID SEARCH. + +(Polymer won't care if you do send an EXPUNGE during SEARCH, mind, as +it's treated identically to UID SEARCH, which needed appropriate +juggling to handle. Actually I think it'll handle an EXPUNGE sent +during any command, but I wouldn't swear to it). + + +> In any case, for my humble purpose the set of messages is frozen +> upon a SELECT and is only ever updated upon a NOOP request. +> +> +That's definitely wrong. + + +> "NOOP, not CHECK, SHOULD be used for new message polling" +> -- 6.4.1. CHECK Command +> +> +Right, but that's saying something different: NOOP is useful as a +general prod command, whereas CHECK is not. But if a client is +relatively chatty with other commands, there's no requirement for it +to do a periodic NOOP to check for new mail - any message at all can +(and should) cause an EXISTS response if needed. + +Note that ?5.2 says *nothing* about NOOP, but it does say: + +"A server MUST send mailbox size + updates automatically if a mailbox size change is observed during +the + processing of a command." + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22756.mbox:2,S new file mode 100644 index 00000000..5c160ed6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22756.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 6 12:15:34 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +Message-ID: + +Hello, + +Given a mailbox containing only \Seen messages, what kind of UNSEEN response is SELECT supposed to return? + +Looking at, say, dovecot implementation, it doesn't return any UNSEEN data if all messages are \Seen: + + if (status.first_unseen_seq != 0) { + client_send_line(client, + t_strdup_printf("* OK [UNSEEN %u] First unseen.", + status.first_unseen_seq)); + } + +On the other hand, the spec for SELECT seems to mandate returning all the data: "the server MUST send the following untagged data". + +What gives? + +Thanks in advance. + +Cheers, + +-- + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22759.mbox:2,S new file mode 100644 index 00000000..3d083456 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22759.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From blong at google.com Sat Oct 22 13:56:55 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: <20111022200153.GA3907@brong.net> +References: + <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi> + <20111022200153.GA3907@brong.net> +Message-ID: + +On Oct 22, 2011 1:02 PM, "Bron Gondwana" wrote: +> +> On Sat, Oct 22, 2011 at 10:39:35PM +0300, Timo Sirainen wrote: +> > Related: I added http://imapwiki.org/ServerBugs page a while ago and +there are now two servers listed there. The idea is to have a page that +lists major bugs that are unlikely to get fixed in servers (i.e. big +commercial ones that don't really care). +> +> No Gmail yet? + +I think we have only one deliberate break from the spec, and that's that we +don't do substring searches. + +I know there are other issues, like we sometimes don't get the size quite +right (comes of storing the message with just LF line endings and having to +convert to CRLF), but mostly we tend to bend the spec but not break them... +matching the IMAP mailbox model with the gmail one is tough. + +I tried running Timo's tests against gmail, but its pretty hard to debug +failures, and the set of tests isn't quite wide or separable. Its somewhere +on the todo list to work that again. + +I would say that our biggest issue with IMAP is that the amount of resources +required for some of the commands is really high, which is hard to optimize +for or to fairly share resources. + +Brandon + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22768.mbox:2,S new file mode 100644 index 00000000..e84a388b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22768.mbox:2,S @@ -0,0 +1,140 @@ +MBOX-Line: From mrc+imap at panda.com Sun Jun 5 16:58:40 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBB242.2090200@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> +Message-ID: + +Most of what others have posted here is good advice. I will not duplicate +what they said. + +If you enjoy beating your head against a wall incessantly, then by all +means ignore what I am about to say. Over the years, I have learned that +there are individuals who delight in beating their heads against the wall, +and that it is useless for me to attempt to deprive them of their fun. + +If you don't enjoy an aching head, then listen up. + +First and foremost, the Formal Syntax section of RFC 3501 should be your +holy book. If any part of RFC 3501 distracts you from the Formal Syntax, +ignore it in favor of the Formal Syntax. + +Your jaw will drop when you first see the Formal Syntax. Your eyes will +glaze over. You will start saying "no, no, no." Just work through that +stage. It's a steep hill to climb, but once you make it to the top you +will see everything with crystal clarity. + +IMAP is a very subtle protocol in places, and only the Formal Syntax +relates the full subtlty. When a space is required, then exactly ONE +space (not ZERO, not TWO) MUST be there; and when a space is not required +then it is FORBIDDEN. + +Whatever you do, DO NOT ATTEMPT TO IMPLEMENT ANY COMMAND OR RESPONSE BY +LOOKING AT THE EXAMPLES! You are guarantee to screw up if you use the +examples as a model (that means YOU, Microsoft!). Use only the Formal +Syntax. The result should indeed look like the examples; and if it +doesn't then study the Formal Syntax to understand why. + +Do I still have your attention? Good. You apparently don't want to bang +your head against the wall. I just saved you for one of the major causes +of head-banging. + +Second, mind the transition between literal and non-literal modes. You +are either outputting a line, which is set of octets terminated by CRLF; +or you are outputting a literal, which is a precisely counted number of +octets with no termination. However, in all cases in IMAP, there is a +line after a literal (even if it is just a CRLF to end the command or +response). + +There are some deep insights in the previous paragraph that will be of +great use to you if you implement your server in a network I/O +infrastructure in which you are doing either "line" or "buffered" mode. +Go ahead. Ask me how I know... :) + +Some commands may have multiple literals. So, if a command has two +arguments, both of which come in as literals, you must: read line, read +sized buffer, read line, read sized buffer, read line. The SEARCH command +can have quite a few literals. Or it may have none. Be prepared. + +Third, you are best off parsing commands into a struct, following the +Formal Syntax. Think about extensibility. You'll be glad you did if you +ever implement the MULTIAPPEND extension. + +Something else is important: there is ABSOLUTELY NOTHING that a command +can do, as part of the parsing of the command, that changes anything in +the mailbox or the server session. If a command responds with either NO +or BAD, then the command is guaranteed to have done nothing. Thus, +commands are in three phases: parse, action, response; and there is an +action if and only if the response is OK. + +Fourth, implement responses by a struct, again following the Formal +Syntax. You'll have lots of enums for types to identify which union to +follow. But it's possible to define all of IMAP response in terms of a +single struct (truly the Struct From Hell...but once you get it it will be +a delight). Now you just need an engine to poot it out. Guess what. I +just saved you a HUGE amount of time in writing the IMAP response +generator. + +Writing response routines is obsolete technology. I know because I have +done it both ways. It is so much faster to have a single response engine +that poots out a response struct tree. + +Fifth, keep in mind that pretty much all of RFC 3501 is mandatory to +implement. You CAN save yourself some time by not implementing non-INBOX +mailboxes (thus the LIST command only poots a \NoInferiors mailbox called +INBOX, and CREATE/DELETE/RENAME all respond with NO). But you'll probably +need the non-INBOX mailboxes sooner rather than later. + +When you do implement other mailboxes, don't try to be magic about +subscriptions. Just treat it like server-based bookmarks. + +Modified UTF-7 is a royal pain; and I had hoped that it would have been +extinct by now. But you can defer doing anything about it until you +implement non-INBOX mailboxes. + +Sixth, you probably will want a vector of messages in the selected +mailbox, indexed by message sequence number. In this vector you will +want, at a minimum, the internal date, size, flags, and UID. You'll +probably want some pointers to message contents, and perhaps preparsed +ENVELOPE and BODYSTRUCTURE. Do UID lookup via binary search through this +vector (not linear search). + +Seventh, this reminds me about something else. Those BODYSTRUCTURE things +have lots of size counts. These, and the RFC822.SIZE, must all be EXACT +(do you hear me, Novell? Microsoft?). Clients that do partial fetching +depend upon those counts being exact. No, it is not OK to guess. These +are NOT advisory. + +Eighth, flags being booleans is a common implementation and that's quite +alright. However, you'll need some way to record keyword names. Unless +you are providing access to a non-owned mailbox, all flags should be +permanent. + +Ninth, slash should be the One And Only True Hierarchy Delimiter. Almost +everybody agrees that it was a mistake to allow others. + +Tenth, OK, I lied. I will repeat something that someone else said. Mind +that COPY requires atomicity. So does the MULTIAPPEND extension, if you +ever implement that. If you turn out to be talented enough to implement +MULTIAPPEND, you can claim that you truly grok IMAP. + +Eleventh, a server session only needs one mailbox open at a time. If you +have a multithreaded server that supports multiple sessions, consider a +design that allows you to spawn off additional server processes when the +current process fills up. A 32-bit address space simply is not enough for +a modern multi-session server. + +Finally, pat yourself on the back. You decided to ask for advice before +you started implementing, instead of diving in, making all the newbie +mistakes, and only then ask questions. You're already ahead of the game. + +Regards, + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22772.mbox:2,S new file mode 100644 index 00000000..830ebc67 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22772.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From gnb at fastmail.fm Mon May 9 02:02:38 2011 +To: imap-protocol@u.washington.edu +From: Greg Banks +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] RFC4551 text issues +Message-ID: <4DC7ADAE.3050807@fastmail.fm> + +G'day, + +I've been reading RFC4551 and noticed the following issues. + +1. The modifier UNCHANGEDSINCE is misspelt UNCHANGESINCE (note the +missing 'D') four times in section 3.2. + +2. The abnf says + + resp-text-code =/ "HIGHESTMODSEQ" SP mod-sequence-value / + "NOMODSEQ" / + "MODIFIED" SP set + +There is no abnf rule for "set" in either RFC3501 or RFC4551. However +the rule "sequence-set" in RFC3501 seems to match the examples given +earlier in RFC4551 and the apparent intent. + +-- +Greg. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22777.mbox:2,S new file mode 100644 index 00000000..9062b6dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22777.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From norman at apache.org Fri Apr 15 02:34:43 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] FETCH Response +Message-ID: + +Hi there, + +while reading the rfc3501 and think about FETCH Response one question +come in my mind. The rfc says: + +BODY[
]<> +... +... + The HEADER, HEADER.FIELDS, and HEADER.FIELDS.NOT part + specifiers refer to the [RFC-2822] header of the message or of + an encapsulated [MIME-IMT] MESSAGE/RFC822 message. + HEADER.FIELDS and HEADER.FIELDS.NOT are followed by a list of + field-name (as defined in [RFC-2822]) names, and return a + + subset of the header. The subset returned by HEADER.FIELDS + contains only those header fields with a field-name that + matches one of the names in the list; similarly, the subset + returned by HEADER.FIELDS.NOT contains only the header fields + with a non-matching field-name. The field-matching is + case-insensitive but otherwise exact. Subsetting does not + exclude the [RFC-2822] delimiting blank line between the header + and the body; the blank line is included in all header fetches, + except in the case of a message which has no body and no blank + line. + +So if I have a multipart message which has a body but no "BODY TEXT" +should the single newline get written when ask for headers nor not ? + +C: A16 FETCH 1 (BODY[3]) +S: \* 1 FETCH \(BODY\[3\] \{1124\} +S: PGh0bWw\+PGhlYWQ\+PHRpdGxlPjwvdGl0bGU\+PC9oZWFkPgo8Ym9keT4KPGJsb2NrcXVvdGUgY2l0 +S: ZT0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaWxsaWFtX1NoYWtlc3BlYXJlJz48cHJl +S: PgpUaG9zZSBwYXJ0cyBvZiB0aGVlIHRoYXQgdGhlIHdvcmxkJ3MgZXllIGRvdGggdmlldwpXYW50 +S: IG5vdGhpbmcgdGhhdCB0aGUgdGhvdWdodCBvZiBoZWFydHMgY2FuIG1lbmQ7CkFsbCB0b25ndWVz +S: LS10aGUgdm9pY2Ugb2Ygc291bHMtLWdpdmUgdGhlZSB0aGF0IGR1ZSwKVXR0ZXJpbmcgYmFyZSB0 +S: cnV0aCwgZXZlbiBzbyBhcyBmb2VzIGNvbW1lbmQuClRoeSBvdXR3YXJkIHRodXMgd2l0aCBvdXR3 +S: YXJkIHByYWlzZSBpcyBjcm93bidkOwpCdXQgdGhvc2Ugc2FtZSB0b25ndWVzLCB0aGF0IGdpdmUg +S: dGhlZSBzbyB0aGluZSBvd24sCkluIG90aGVyIGFjY2VudHMgZG8gdGhpcyBwcmFpc2UgY29uZm91 +S: bmQKQnkgc2VlaW5nIGZhcnRoZXIgdGhhbiB0aGUgZXllIGhhdGggc2hvd24uClRoZXkgbG9vayBp +S: bnRvIHRoZSBiZWF1dHkgb2YgdGh5IG1pbmQsCkFuZCB0aGF0IGluIGd1ZXNzIHRoZXkgbWVhc3Vy +S: ZSBieSB0aHkgZGVlZHM7ClRoZW4tLWNodXJscy0tdGhlaXIgdGhvdWdodHMsIGFsdGhvdWdoIHRo +S: ZWlyIGV5ZXMgd2VyZSBraW5kLApUbyB0aHkgZmFpciBmbG93ZXIgYWRkIHRoZSByYW5rIHNtZWxs +S: IG9mIHdlZWRzOiAKICBCdXQgd2h5IHRoeSBvZG91ciBtYXRjaGV0aCBub3QgdGh5IHNob3csCiAg +S: VGhlIHNvaWwgaXMgdGhpcywgdGhhdCB0aG91IGRvc3QgY29tbW9uIGdyb3cuCjwvcHJlPjwvYmxv +S: Y2txdW90ZT4KPC9ib2R5PjwvaHRtbD4K\) +S: A16 OK FETCH completed\. +C: A18 FETCH 1 (BODY[3.TEXT]) +S: \* 1 FETCH \(BODY\[3\.TEXT\] \{0\} +S: \) +S: A17 OK FETCH completed\. +C: A17 FETCH 1 (BODY[3.HEADER]) +S: \* 1 FETCH \(BODY\[3\.HEADER\] \{0\} +S: \) +S: A17 OK FETCH completed\. + +Or should it be: + +C: A17 FETCH 1 (BODY[3.HEADER]) +S: \* 1 FETCH \(BODY\[3\.HEADER\] \{2\} +S: +S: \) + +Thanks, +Norman + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22780.mbox:2,S new file mode 100644 index 00000000..4e77587f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22780.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 9 05:06:08 2011 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Pipelined commands before completion of STARTTLS +In-Reply-To: <20334.1299625687.587275@puncture> +References: <4D7690AE.8020003@andrew.cmu.edu> + + <20334.1299625687.587275@puncture> +Message-ID: <4D777B40.7000008@gulbrandsen.priv.no> + +On 03/09/2011 12:08 AM, Dave Cridland wrote: +> Yes, I like (4). + +4) fits naturally. + +There are a couple of other sequences where the next command shouldn't +even be parsed until the current command handler says that's OK. I +remember one, but I think there it wasn't the only one: + + C: a select foo + ... + C: b select bar + C: c store 1 +flags \deleted + +If the parser turns MSNs into UIDs, the parsing of c depends on b. + +Holding up parsing when 3501 5.5 says not to execute neatly solves this +kind of problem, including starttls. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22784.mbox:2,S new file mode 100644 index 00000000..cbe509c8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22784.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dave at cridland.net Tue Feb 8 09:11:30 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +In-Reply-To: <4D5173F0.7030405@digitro.com.br> +References: <4D5173F0.7030405@digitro.com.br> +Message-ID: <2609.1297185090.628987@Sputnik> + +On Tue Feb 8 16:48:48 2011, Bruno M. Soares wrote: +> I opened pcap file and there it is: + +(This appears to be Cyrus IMAP) + + +> But I can't decompress de deflate part of file. +> +> Can anyone give me a little help? + +It's raw deflate blocks, so not either zlib or gzip - you need to +write a small program using zlib directly, without the headers or +checksums used by zlib. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22788.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22788.mbox:2,S new file mode 100644 index 00000000..e4a4ba71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22788.mbox:2,S @@ -0,0 +1,121 @@ +MBOX-Line: From dave at cridland.net Fri Jan 21 00:46:45 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] UIDNEXT updates upon new message arrival +In-Reply-To: <4D38DE97.6060509@gentoo.org> +References: <4D385AB5.90208@gentoo.org> <28835.1295567529.285091@puncture> + <4D38DE97.6060509@gentoo.org> +Message-ID: <28835.1295599605.789384@puncture> + +On Fri Jan 21 01:17:11 2011, Jan Kundr?t wrote: +> On 01/21/11 00:52, Dave Cridland wrote: +> > You're describing (a slightly broken version of) Polymer's sync +> algorithm. +> > +> > See https://github.com/dwd/Polymer/blob/master/infotrope/imap.py +> around +> > line 3611, and also line 3800. +> +> Thank you, I've read various docs at your web a few years ago. It's +> possible that the EXISTS/UIDNEXT thing was there back then. I wasn't +> able to find it today, but I'm sure I've read various things which +> aren't there anymore. +> +> Could you please mention what is broken in what I described, +> though? It +> isn't obvious from a quick glance at your source code. (I've already +> found that you sort the response to the UID SEARCH command locally, +> but +> that isn't related to this question. Fixed now, thanks.) +> +> +Your technique might not be broken, but it's not clear to me that it +isn't. + + +> > No, but that's okay. If N messages arrive, UIDNEXT must increase +> by a +> > minimum of N. In fact, if N messages arrive, UIDNEXT will in all +> > likelyhood increase by precisely N. I can conceive of edge cases +> where +> > it increases by more than N in a reasonable implementation, but +> they're +> > unlikely. So just add one for each new message that you're told +> about +> > during a session. (ie, each time you're told about an increase to +> > EXISTS, add the difference to your UIDNEXT). +> +> Yes, but reading threads about people adding a fake EXISTS/EXPUNGE +> pair +> to the IDLE, just to make Outlook happy, scares me. I can't think +> of a +> situation where this extra increment would break anything, but +> maybe I'm +> just missing something -- that's why I'm asking. +> +> +In the case where an EXISTS/EXPUNGE pair is done such that no UIDNEXT +increment occurs, the server is broken. Still, the algorithm works - +you just find that the UIDNEXT isn't where you expected it to be. + + +> >> I do not support QRESYNC yet. +> > +> > You should do - it's effectively the same sync algorithm, but +> changed to +> > take advantage of the server's knowledge instead - so the +> complicated +> > selection is done by the server. +> +> Yes, it's just a matter of making sure that I have the basic +> functionality well-tested and covered by test cases before I build a +> more complicated setup on top of it. +> +> +Oh, sure. Just build your code with QRESYNC in mind. Or, alternately, +build QRESYNC with your code in mind, which is what I did. + + +> > Polymer doesn't do a binary search, by the way - it fetches +> chunks of +> > 1000 UIDs at once, and has an amusing algorithm to decide how many +> > chunks to fetch, depending on whether ESEARCH is used (which'll +> help you +> > hugely) and how sparse the UID mapping is. For finding a UID in +> the +> > mapping, it actually does a successive approximation technique, +> on the +> > assumption that the map is uniformly sparse, which works pretty +> well - +> > usually it find the right chunk in its first guess. +> > +> > For resync purposes, if there have been expunges, it discards and +> > refetches just the last block - because generally expunges will +> happen +> > in the recent portion of the mailbox - and if the beginning of +> the newly +> > fetched UID block matches the beginning of the one it's +> replacing, the +> > UID map is now synchronized. +> +> I'm assuming that these chunks are always 1000 items in length (ie. +> they +> cover 1000 messages, or 1000 sequence numbers), and therefore your +> blocks start at message #1, #1001, #2001 etc, is that right? That +> indeed +> looks like a nice optimization, albeit with a similar latency +> tradeoff. + +Yeah, it leans toward saving bandwidth, more than round-trips, but +ESEARCH means it's fetching multiple blocks at once (typically the +entire mailbox, since it figures out how many holes are likely to +exist, and bigger mailboxes have fewer expunges, I find). + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22792.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22792.mbox:2,S new file mode 100644 index 00000000..0ededf15 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22792.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc+imap at panda.com Mon Nov 22 13:20:14 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "l" right in IMAP ACLs +In-Reply-To: <1290455519.5119.63.camel@kurkku.sapo.corppt.com> +References: <1290455519.5119.63.camel@kurkku.sapo.corppt.com> +Message-ID: + +On Mon, 22 Nov 2010, Timo Sirainen wrote: +> Anyone else think that these aren't quite right? + +I think that ACL itself is completely broken. + +I actually implemented ACL in the new MA server. It's even worse than I +thought. I knew that ACL is unfeasible to map to filesystem protections +(if you believe otherwise, think carefully what UNIX mode 707 means), but +I was stunned to see what problems exist in an implementation where the +entire space is defined by ACL with no need to map to another space. + +Even with no mapping, there are lovely ambiguities in the ACL +specification that could only be resolved by not implementating anything +that the ACL specification made optional (e.g., negative rights). Then +there is the "k" right. + +The best thing to do with ACL is to discard it in its entirety and start +over. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095062.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095062.22796.mbox:2,S new file mode 100644 index 00000000..6f18e291 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095062.22796.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mail at sabahattin-gucukoglu.com Mon Oct 4 10:18:22 2010 +To: imap-protocol@u.washington.edu +From: Sabahattin Gucukoglu +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +Message-ID: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + +Maybe my hubris got the better of me, but I didn't bargain for a complete surprise. Well, anyway, we know now why Apple does not implement IMAP IDLE in iOS. I've clearly been spending too much time around the IETF, to find Mr. Job's explanation to be completely incomprehensible. :-) + +(Please let me know if the Message/RFC822 part didn't come through right - thanks.) + +I want to ask anybody who feels strongly to the contrary to please not attack the sender (and the messenger either if you can help it :-) ). I guess I'm stuck waiting 15 minutes for new mail notifications, and running my battery down. I'm not forwarding my mail anywhere or running Exchange (or a clone). The latter, in particular, is a power-hungry option ... + +Cheers, +Sabahattin +-------------- next part -------------- +An embedded message was scrubbed... +From: Steve Jobs +Subject: Re: iOS IMAP IDLE (Standard "Push Email") Deficiency, Explanation? +Date: Mon, 04 Oct 2010 07:58:15 -0700 +Size: 2611 +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22595.mbox:2,S new file mode 100644 index 00000000..b5e08a0b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22595.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From janssen at parc.com Thu Mar 12 07:47:26 2015 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] If Crispin were creating IMAP today how would + it be different? +In-Reply-To: <46B7DE92-D504-4A31-894E-A5D6794A9C49@orthanc.ca> +References: <54FAEB94.4070508@lavabitllc.com> <54FBF289.3010202@psaux.com> + <7164.1425831184@parc.com> + <1425907661.1215497.237833469.1EDA571D@webmail.messagingengine.com> + <6506.1425915329@parc.com> <55005876.4070406@lavabitllc.com> + <18002.1426091085@parc.com> <55006FA4.3090800@lavabitllc.com> + <20041.1426095023@parc.com> + <46B7DE92-D504-4A31-894E-A5D6794A9C49@orthanc.ca> +Message-ID: <21558.1426171646@parc.com> + +Lyndon Nerenberg wrote: + +> +> On Mar 11, 2015, at 10:30 AM, Bill Janssen wrote: +> +> > Has nmh +> > been ported to Android/iOS? +> +> Oh gawd. Really? You would read and type into a command line interface on a phone for your email? + +Well, no. I'd use MH-e on top of nmh on the phone. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22641.mbox:2,S new file mode 100644 index 00000000..5c8dc8d7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22641.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From iana at apple.com Thu Mar 20 13:40:19 2014 +To: imap-protocol@u.washington.edu +From: Ian Anderson +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> + +Message-ID: <97FD74F7-D332-4439-BC01-A2A2849463F8@apple.com> + +OK cool, sounds like there?s at least a little precedent for this then. Thanks. + +Ian + +On Mar 20, 2014, at 11:44 AM, Michael Grinich wrote: + +> We just poll STATUS for HIGHESTMODSEQ changes and then use FETCH CHANGEDSINCE. +> +> It works, but on large mailboxes that STATUS call can take a while (ie: minutes). +> +> +> +> On Thu, Mar 20, 2014 at 11:32 AM, Ian Anderson wrote: +> I?m finding it dismayingly common that servers don?t give flag changes (i.e. an untagged FETCH response with FLAGS) on a NOOP. Some of them don?t support IDLE, or don?t give flag changes on IDLE either. At least some of the servers do support CONDSTORE though. +> +> So I was hoping to mitigate the whole mess by polling for HIGHESTMODSEQ changes on CONDSTORE servers and then doing a FETCH CHANGEDSINCE for mailboxes with new highest modification sequences. For mailboxes that I?m not SELECTed on, it?s an easy STATUS HIGHESTMODSEQ command. I can also do it on SELECTed mailboxes too, though RFC 3501 says I "SHOULD NOT? do that and RFC 4551 doesn?t update that recommendation. +> +> What?s the conventional wisdom on solving this problem from the client side in a generic fashion? My inclination is to just replace my NOOP polling with STATUS on servers that support CONDSTORE. +> +> Ian +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22682.mbox:2,S new file mode 100644 index 00000000..10242b90 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22682.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From dave at cridland.net Fri Mar 29 01:58:40 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <515490A1.3070301@psaux.com> +References: + <5152E3E6.40506@aj.jp.nec.com> <1364388724.13923.97.camel@innu> + + + <4F401469-14A2-48FA-A6F7-B667A52E46C4@orthanc.ca> + <515490A1.3070301@psaux.com> +Message-ID: + +On 28 Mar 2013 18:52, "Tim Showalter" wrote: +> +> On 3/27/13 7:35 PM, Lyndon Nerenberg wrote: +> +>>> I'm hesitant to suggest it, but is it worth sending BYE and dropping +the connection? It's sailing just within the lines of the specification, I +think. +>> +>> +>> I think this is perfectly valid behaviour, and well within the spec. A +smart server might choose whether the eat-and-continue vs. bye-and-punt +based on the size of the proposed literal+, but punting is entirely valid. +> +> +> I would recommend against this, or at least advise caution. A lot of +clients, particularly mobile phone clients of a couple years ago, are both +stupid and single-minded. Hanging up is going to be treated as an obvious +temporary failure and they will retry. +> + +Right, but to no damage. I think the best pattern is: + +1) Send an tagged(?) NO, with an ALERT, explaining to the user what's +happening. + +2) Send an untagged BYE, with the same message. + +3) Terminate the connection. I suspect a partial shutdown might help get +the message through in some cases, but I'm not sure it's worth the pain. + +Finally, you want to trigger this behaviour only for abusive cases - +multi-megabyte messages you'd have to reject anyway, not over 50k, however +desirable that might be. + +By all that's holy - that is, RFC 3501 - the error will get to the user +and/or developer. At the least the constant failure will cause some users +to contact the developer. The weight of the Google Gorilla should be +sufficient to get the client fixed. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22688.mbox:2,S new file mode 100644 index 00000000..2b630d52 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22688.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From slusarz at curecanti.org Thu Jan 24 08:34:56 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Courier bug(?) +In-Reply-To: <1359001724.15093.140661181638845.41179852@webmail.messagingengine.com> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + <20130123212037.Horde._IahQM6IYatHLw2AFgUPnw1@bigworm.curecanti.org> + <1359001724.15093.140661181638845.41179852@webmail.messagingengine.com> +Message-ID: <20130124093456.Horde.GumxJDEby0tpe4DRTMul6g1@bigworm.curecanti.org> + +Quoting Bron Gondwana : + +> I always send UID for QRESYNC, and I even have a handy comment about it: +> +> /* http://www.rfc-editor.org/errata_search.php?rfc=5162 +> * Errata ID: 1807 - MUST send UID and MODSEQ to all +> * untagged FETCH unsolicited responses */ +> if (usinguid || state->qresync) +> prot_printf(state->out, " UID %u", im->record.uid); +> if (printmodseq || state->qresync) +> prot_printf(state->out, " MODSEQ (" MODSEQ_FMT ")", +> im->record.modseq); + +Ugh. I *knew* I previously read somewhere that UID was required for +all FLAGS responses after QRESYNC was activated. I was going to check +the errata before sending out my original message, but got distracted. + +And there is still a gap in coverage when only CONDSTORE is available +(or a server implementation of QRESYNC that doesn't follow the errata) +- you can still receive untagged FLAGS responses that contain MODSEQ +but not UID data: + +a SELECT INBOX (CONDSTORE) +[...] +* 3 EXISTS +* OK [HIGHESTMODSEQ 5] Highest +a OK [READ-WRITE] SELECT completed. +b UID FETCH 5 (UID) +* 1 FETCH (UID 5) +* 2 FETCH (FLAGS (\Seen) MODSEQ (6)) +* 3 FETCH (FLAGS (\Seen) MODSEQ (6) UID 15) +b OK FETCH completed. + +Granted, this isn't likely from a practical standpoint, but it is a +possibility. And one I probably haven't considered in my code. Arrgh. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22701.mbox:2,S new file mode 100644 index 00000000..d8a505c7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22701.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From slusarz at curecanti.org Mon Nov 26 17:48:14 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + +Message-ID: <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> + +Quoting Brandon Long : + +> On Mon, Nov 26, 2012 at 4:32 PM, Michael M Slusarz +> wrote: +>> +>> +>> Because there's still no guarantee it's the same server/connection: that +>> is the key to all of this. A server can "look" the same but that doesn't +>> proves anything. +>> +>> What happens when the server is upgraded and UTF-8 searching now works? +>> The CAPABILITY string is exactly the same. But UTF-8 has been marked as a +>> bad charset so it will still not be available. And what about those +>> commands that have been determined to be broken previously in the session? +>> It is reasonable to expect the CAPABILITY string to be the same between +>> point releases of an IMAP server, but the server may have fixed the bug +>> that was causing bad command behavior. +> +> So, you deduce bugs in the server and then remember them... and this is +> better than violating the ID spec? + +Yes. In fact we are quite proud of this. 100% foolproof and works on +every server past, present, and future. + +Not sure how you are supposed to do this on IMAP servers that don't +support ID. Or don't send version information: Dovecot, for one, +doesn't by default. Or for installations that use a version of your +software released before a particular IMAP server even breaks (full +disclosure: the recent Cyrus break is weird because it sent a BYE and +terminated instead of a failed command, so that wasn't previously +scanned for so we weren't catching this until recently. so we're not +perfect either.). + +IMAP command sniffing = javascript browser sniffing. The days of +parsing a browser's User-Agent field are so 1999. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22743.mbox:2,S new file mode 100644 index 00000000..db0e67f3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22743.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From dave at cridland.net Tue Mar 20 15:22:44 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + +Message-ID: <20897.1332282164.343400@puncture> + +On Tue Mar 20 21:33:37 2012, PA wrote: +> Thanks for the feedback though as I have to confess that sometime +> both the letter and the spirit of the protocol escapes me. Talking +> it through helps :) + +Also, read the original IMAP RFCs. They're much more vague than the +newer ones, but they do give a much better insight into what the +protocol is trying to do. Unfortunately, the later RFCs concentrate +more on the mechanics and less on the model. + +Loosely, a client selects a mailbox, and then you send it arbitrary +data about the mailbox whenever you feel like. The client uses this +information to update and fill its cache. + +Certain things, though, you must tell the client about - particularly +mailbox size changes, although as you've noted, expunges can only be +sent when the client won't get confused. + +A client may ask for specific data (via FETCH), and the server +responds (with a tagged OK) once this has been sent. I seem to recall +that (very) early servers were allowed to simply respond with OK if +the data had already been sent - that is, not send data twice even if +asked explicitly. + +The modern protocol requires that if you're asked for data (via +FETCH), you must then send it, even if the client really ought to +know the data already. This makes the protocol less confusing, +particular for those of us trying to test things on telnet, but it +makes the protocol look like a request/response protocol, which it +isn't - conceptually, the FETCH command and its response, and the +data that the server sends via untagged FETCH responses, are +unrelated - with the single exception that the server has been +requested to send them. + +It might be better to imagine that untagged traffic is sent through a +different connection - you'd then see the model more clearly, perhaps. + +But I'm waffling... + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22756.mbox:2,S new file mode 100644 index 00000000..c1a2e142 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22756.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From brong at fastmail.fm Sun Nov 6 13:31:24 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: +Message-ID: <20111106213124.GA27889@brong.net> + +On Sun, Nov 06, 2011 at 09:15:34PM +0100, Petite Abeille wrote: +> Given a mailbox containing only \Seen messages, what kind of UNSEEN response is SELECT supposed to return? +> +> Looking at, say, dovecot implementation, it doesn't return any UNSEEN data if all messages are \Seen: +> +> if (status.first_unseen_seq != 0) { +> client_send_line(client, +> t_strdup_printf("* OK [UNSEEN %u] First unseen.", +> status.first_unseen_seq)); +> } + +Cyrus does the same: + + if (state->firstnotseen) + prot_printf(state->out, "* OK [UNSEEN %u] Ok\r\n", + state->firstnotseen); + +> On the other hand, the spec for SELECT seems to mandate returning all the data: "the server MUST send the following untagged data". +> +> What gives? + +rfc3501: + + OK [UNSEEN ] + The message sequence number of the first unseen + message in the mailbox. If this is missing, the + client can not make any assumptions about the first + unseen message in the mailbox, and needs to issue a + SEARCH command if it wants to find it. + +Indeed. Well, that's bloody useless. + + 34) Clarify UNSEEN, PERMANENTFLAGS, UIDVALIDITY, and UIDNEXT + responses in SELECT and EXAMINE. They are required now, but + weren't in older versions. + + 76) Clarify the mandatory nature of the SELECT data responses. + +Ok - I think I've deciphered it. You MUST NOT select mailboxes +unless they have unseen messages in them. Problem solved. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22759.mbox:2,S new file mode 100644 index 00000000..6ac8984e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22759.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From petite_abeille at mac.com Sat Oct 22 14:26:54 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: +References: + +Message-ID: + + +On Oct 22, 2011, at 9:44 PM, Mark Crispin wrote: + +> they could afford to hire +> competent software developers that are capable of following RFCs that were +> published 15 years ago + +Always thought the IMAP spec was just an elaborate hoax to drive developers insane :)) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22768.mbox:2,S new file mode 100644 index 00000000..5a878bb8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22768.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From robm at fastmail.fm Sun Jun 5 17:20:59 2011 +To: imap-protocol@u.washington.edu +From: Robert Mueller +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBDFF5.9000301@BusCom.net> +References: <4DEBB242.2090200@BusCom.net><4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net><4DEBBEC1.3080600@BusCom.net><201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> +Message-ID: <1307319659.7961.1459831005@webmail.messagingengine.com> + +> > 4). Decide what data to keep in memory for each message in an open +> > mailbox. (By "open", I mean one for which a session is in +> > progress, that is opened as the result of a SELECT or EXAMINE +> > command.) A likely minimum would be UID, IMAP message flags, +> > message size and, of course, a reference to the message itself. I +> > am assuming that this information is indexed by message number and +> > hence that that is not explicitly stored. You may find reason to +> > add more data such as a flag indicating if the message is matched +> > in a current SEARCH. + +One thing that can be tricky if you don't design it in up front is the +way you end up with multiple message list views if you have multiple +clients connected. + +--- +5.5. Multiple Commands in Progress +... + A non-obvious ambiguity occurs with commands that permit an untagged + EXPUNGE response (commands other than FETCH, STORE, and SEARCH), + since an untagged EXPUNGE response can invalidate sequence numbers in + a subsequent command. This is not a problem for FETCH, STORE, or + SEARCH commands because servers are prohibited from sending EXPUNGE + responses while any of those commands are in progress. +--- + +So one client might delete + expunge a message, but another connection +won't see that expunge until they do a command that allows it to be +seen. This can significantly affect how you design your internal state +management, namely that when you expunge a message, you probably just +want to mark it as expunged on disk and actually cleanup later, rather +than removing it immediately from your mailbox state. This is useful +longer term for things like QRESYNC as well. + +I'm sure Bron (cc'd) can make some comments on this as well, given the +significant changes he made to cyrus to make this work correctly. + +Rob + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22772.mbox:2,S new file mode 100644 index 00000000..2ba4a69b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22772.mbox:2,S @@ -0,0 +1,117 @@ +MBOX-Line: From slusarz at curecanti.org Wed May 18 00:16:45 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +Message-ID: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + +Hi all, + +First time poster. Quick background: I am the primary author of IMP +(http://www.horde.org/imp/) and the related Horde IMAP client library. + Had a discussion a few weeks back with Timo on the dovecot list +about some keyword issues, and he suggested I raise the topics on this +list. + +That topic is handling of keywords. More specifically, it can be +broken down into several parts (apologizes if I make the following +discussion too basic - just want to make sure I am on the same page): + +1. Allowing non-ASCII characters in keywords +2. Creating a method of sharing keyword->MUA (or user) defined labels +between user agents + +Starting with topic #1: We are limited by 3501 to atoms for keywords. +Thus, no non-ASCII characters, or even spaces, which limits the +practical usage of keywords as labels in and of themselves. For +example, a user may want to use a keyword to label messages in a +folder as important for tax purposes and wants to use the label "Tax +Forms (2011)". Obviously, that label won't work [contains SP, (, and +) as invalid atom characters]. + +MUA's can handle this issue in a variety of ways. A "dumb" MUA must +just tell the user they can't use that label. A slightly smarter MUA +might instead strip out all non-allowable atoms which generates the +TaxForms2011 keyword. While this works, it is not the most desirable +response. However, for the latter sort of MUAs, this sort of behavior +falls apart when the label contains some sort of non-ASCII character +(say "Quarant?ne"). Further, other MUAs may simply ignore the keyword +if they don't know what it is. + +A smart MUA would instead pick an arbitrary keyword, use this keyword +on the server, and keep a copy of the user's preferred label locally +to do the necessary translation. This approach works well - as long +as a user is only accessing that IMAP mail store with that MUA. If +using multiple MUA's, this approach breaks down because the other MUAs +don't know the keyword -> label associations. (The MUA's arbitrary +keyword might be something very similar to the desired label - e.g. +TaxForms2011 - to make things somewhat usable on other MUAs. But +again, not the most desirable situation). + +Further, a smart MUA is faced with the problem that the keyword picked +in one mailbox may not be available in all other mailboxes. Although +rare, it is entirely conceivable that collisions could occur across +mailboxes. E.g. MUA #1 creates a 'Label1' keyword in INBOX - the user +associates this keyword with 'Foo'. MUA #2 creates a 'Label1' keyword +in 'OtherMailbox' - the user associates this keyword with 'Bar'. +However, once MUA #2 accesses INBOX, it can no longer universally use +'Label1' across all mailboxes. It instead will need to do some +excessive processing (e.g. scanning mailboxes accessed for the first +time for all known local keywords, and keeping a potentially +complicated lookup table locally) to make sure these keywords don't +conflict. + +That defines the problem. Possible solutions? + +1. Implement UTF7-IMAP (or similar) storage of keywords. +Pros: Would allow keyword & label information to be kept in a single +location; all MUAs should be able to easily adapt since they should +already have code necessary to do UTF7-IMAP conversions +Cons: Haven't thought about it fully, but doesn't seem like it could +be made to be backward compatible with RFC 3501 keywords. Doesn't +solve problem of having one keyword meaning the same thing across all +mailboxes. + +2. Define a server METADATA entry (RFC 5464) to store keyword->label mapping +Pros: Works with old RFC 3501 servers. Leverages an existing IMAP extension +Cons: Doesn't solve problem of having one keyword meaning the same +thing across all mailboxes. Doesn't really seem to be the kind of +thing that should necessarily be a metadata entry - flags/keywords are +a core part of the IMAP spec, so to me it just "feels" like something +else should be used instead (really useful description, I know). + +3. New commands/response codes +Pros: Works with old RFC 3501 servers. Would be able to handle issue +of one keyword meaning the same thing across all mailboxes. +Cons: As with all extensions, adds complexity and more commands to +implement on the client side. + +4. Combo of #2 and #3 +Leverage #2 to store label lookup information, with #3 to define +system-wide keywords. +Pros: See #3. Only adds commands necessary that can't be done through +other means. +Cons: Requires client/server to support METADATA, even though it would +probably not be that much more work just to add the needed lookup bits +to a new extension. + + +Hopefully I have provided a coherent explanation of my perceived +limitations with the current specs. Coming from a webmail developer, +this is an important issue to me since it is quite common to be +dealing with IMAP servers that are being accessed by other MUAs. +Synchronization of keywords would go a long way towards making +cross-usage of MUAs smoother. + +As a last little bit, just to get it out there, I will mention that +Timo also briefly mentioned that he has thought about commands to +manage PERMANENTFLAGS +(http://dovecot.org/list/dovecot/2011-May/058894.html) Figured I +would throw it out there while on the topic of flags/keywords in order +to ensure all topics are covered. Hope you don't mind Timo :) + +Looking forward to hearing responses/comments/criticism. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22777.mbox:2,S new file mode 100644 index 00000000..3a5caf16 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22777.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From mrc+imap at panda.com Fri Apr 15 11:14:24 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] FETCH Response +In-Reply-To: +References: +Message-ID: + +It took me a while to figure out what you were asking in your example, as +you omitted some important information: specifically, the BODYSTRUCTURE +that identified the type/subtype/encoding of message part 3. Also, +where did those spurious \ in the server responses come from? + +Anyway, I think that your answer is as follows: + +The BODY section specifiers HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and +TEXT only apply to message parts of type MESSAGE/RFC822. Implicitly, the +entire message (the top level) is typed MESSAGE/RFC822. + +Your example presumably shows a TEXT/HTML message part with encoding +BASE64. At least, the BODY[3] contents appeared to be BASE64, and when +put through a BASE64 decoder came up with a short HTML document. + +In other words, HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and TEXT are all +meaningless for BODY[3] in this example. The appropriate server behavior +is: + +C: A18 FETCH 1 BODY[3.HEADER] +S: * 1 FETCH (BODY[3.HEADER] "") +S: A18 OK that was a silly thing for you to do! +C: A19 FETCH 1 BODY[3.TEXT] +S: * 1 FETCH (BODY[3.TEXT] "") +S: A19 OK that was a silly thing for you to do! + +As a matter of good design, you should always use an zero-length quoted +string, rather than a zero-length literal, to represent the empty string. +Of course, implementations MUST accept either form. + +The reason why you don't have a blank line in the 3.HEADER fetch is that +there is no "message" (it is a TEXT/HTML, not a MESSAGE/RFC822) and thus +if you are substituting an empty string the "message which has no body and +no blank line" rule applies. + +If I were to do things over today, I would have required: + +C: A18 FETCH 1 BODY[3.HEADER] +S: A18 BAD meaningless to fetch header for type TEXT/HTML +C: A19 FETCH 1 BODY[3.TEXT] +S: A19 BAD meaningless to fetch header for type TEXT/HTML + +It's historical as to why meaningless text fetches return the empty string +rather than a BAD; there were good reasons once upon a time but those +reasons have long since been rendered moot. A related history is why +BODY[1] and BODY[TEXT] are equivalent for a non-MIME message. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22780.mbox:2,S new file mode 100644 index 00000000..57b4289b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22780.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dot at dotat.at Wed Mar 9 06:11:11 2011 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Pipelined commands before completion of STARTTLS +In-Reply-To: +References: <4D7690AE.8020003@andrew.cmu.edu> + +Message-ID: + +On Tue, 8 Mar 2011, Philip Guenther wrote: +> +> 4. Treat data after the CRLF as data for the TLS handshake (i.e., to shave +> an RTT off in the success case). I seem to recall a proposal for an +> SMTP extension to indicate that the server would guarantee that +> STARTTLS would succeed and that it could handle having the client's +> handshake message pipelined with the STARTTLS request. (QTLS was it?) + +http://www-uxsup.csx.cam.ac.uk/~fanf2/hermes/doc/qsmtp/draft-fanf-smtp-quickstart-a-00.html + +This vulnerability reminds me of the king of buffering snafus that led to +the PIPELINING SMTP extension. + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +Forties, Cromarty, Forth, Tyne, Dogger: West or southwest 6 to gale 8, +occasionally severe gale 9, perhaps storm 10 later except in Tyne. Rough or +very rough, occasionally moderate in Cromarty, Forth and Tyne. Occasional rain +or squally showers. Good, occasionally poor. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22784.mbox:2,S new file mode 100644 index 00000000..64f48b01 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22784.mbox:2,S @@ -0,0 +1,9 @@ +MBOX-Line: From bruno.soares at digitro.com.br Tue Feb 8 09:07:31 2011 +To: imap-protocol@u.washington.edu +From: "Bruno M. Soares" +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +Message-ID: <4D517853.6000707@digitro.com.br> + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22788.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22788.mbox:2,S new file mode 100644 index 00000000..0c97c63d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22788.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jan 21 01:08:25 2011 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] UIDNEXT updates upon new message arrival +In-Reply-To: <28835.1295567529.285091@puncture> +References: <4D385AB5.90208@gentoo.org> <28835.1295567529.285091@puncture> +Message-ID: <4D394D09.50406@gulbrandsen.priv.no> + +On 01/21/2011 12:52 AM, Dave Cridland wrote: +> Most of this algorithm dates from a time when there was a real emphasis +> on reducing the actual octet count - I don't think that's the case so +> much anymore, so it's probably overkill. + +I have a feeling that it's based on a description I wrote of a handheld +client I also wrote, ten years ago. At the time handhelds had negligible +RAM and less bandwidth. + +Last year I started porting that to Android (I have a Galaxy S and hate +both of the MUAs there) and dropped this algorithm. Instead I ask for +VANISHED if available, and if it isn't available. handle EXPUNGES in a +somewhat Texan manner... when EXPUNGE arrives, I issue "UID SEARCH UID +x,y,z" for the entire set of messages I have in cache, and use the +search result to clean the cache. Primitive, simple, good enough. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22796.mbox:2,S new file mode 100644 index 00000000..943daa1e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22796.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From imap-protocol at lists.grepular.com Mon Oct 4 10:31:08 2010 +To: imap-protocol@u.washington.edu +From: Mike Cardwell +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push + Email") Deficiency, Explanation? +In-Reply-To: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> +Message-ID: <4CAA0F5C.7030009@lists.grepular.com> + +On 04/10/2010 18:18, Sabahattin Gucukoglu wrote: + +> Maybe my hubris got the better of me, but I didn't bargain for a complete surprise. Well, anyway, we know now why Apple does not implement IMAP IDLE in iOS. I've clearly been spending too much time around the IETF, to find Mr. Job's explanation to be completely incomprehensible. :-) +> +> (Please let me know if the Message/RFC822 part didn't come through right - thanks.) +> +> I want to ask anybody who feels strongly to the contrary to please not attack the sender (and the messenger either if you can help it :-) ). I guess I'm stuck waiting 15 minutes for new mail notifications, and running my battery down. I'm not forwarding my mail anywhere or running Exchange (or a clone). The latter, in particular, is a power-hungry option ... + +This makes complete sense. In order to use IMAP Idle on a phone, it +would have to keep a TCP connection open, and therefore a 3G connection +open. There's a reason why phone makers advertise separate stand by, and +call times for battery usage. If IMAP idle were being used, the phone +would never enter stand by mode, and would eat the battery within a few +hours. + +I considered building a system for Android that works the same way that +push mail on the iPhone works. When an email comes in, an SMS would be +sent to the phone. That SMS would be hidden from the user, but would +advise the phone to wake up and poll for new email. The only problem is, +it costs money to send SMS's. + +-- +Mike Cardwell - Perl/Java/Web developer, Linux admin, Email admin +Read my tech Blog - https://secure.grepular.com/ +Follow me on Twitter - http://twitter.com/mickeyc +Hire me - http://cardwellit.com/ http://uk.linkedin.com/in/mikecardwell + diff --git a/demo/ermis-f/imap-protocol/cur/1600095063.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095063.22801.mbox:2,S new file mode 100644 index 00000000..9f9a729e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095063.22801.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From imap-protocol at lists.grepular.com Sun Aug 29 02:39:02 2010 +To: imap-protocol@u.washington.edu +From: Mike Cardwell +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life support + and ambiguity questions +Message-ID: <4C7A2AB6.6070405@lists.grepular.com> + +I'm currently implementing an IMAP4rev1 server and am a little stuck on +section 5.5 of rfc3501: + +http://tools.ietf.org/html/rfc3501#section-5.5 + +I understand that the client can send additional commands before +receiving the command completion result, and that the server can process +and respond to those commands in any order (subject to ambiguity +considerations) + +In reality, do any servers actually do that though, or do they all tend +to run the commands synchronously and in order? Also, do any clients +take advantage of this ability or do they tend to use multiple +connections instead if they want to run multiple commands asynchronously? + +I'm trying to gauge whether or not it would be worth the extra work and +complexity to make the server run multiple commands at the same time on +a single connection. Also, are there any clients that are known to break +when receiving server responses "out of order" ? + +Also, is there an exhaustive set of ambiguity rules listed anywhere +which need to be looked out for when executing multiple commands at the +same time? The RFC suggests there are lots of cases, then provides only +a few examples. I find it confusing how the examples are written as +well. Eg, the following is apparently "invalid" : + +FETCH + NOOP + STORE + +What does that mean in human readable terms? If the examples consisted +of two commands, then I would assume that meant command 2 has to wait +for command 1 to finish before starting, but most of the examples +consist of 3 or more commands..? + +-- +Mike Cardwell - Perl/Java/Web developer, Linux admin, Email admin +Read my tech Blog - https://secure.grepular.com/ +Follow me on Twitter - http://twitter.com/mickeyc +Hire me - http://cardwellit.com/ http://uk.linkedin.com/in/mikecardwell + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22595.mbox:2,S new file mode 100644 index 00000000..3860ec71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22595.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Mar 13 03:41:49 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +Message-ID: <42facde4-e794-4661-a729-9b4795e064ec@gulbrandsen.priv.no> + +JFYI, for those who sign outgoing mail or check incoming signatures: + +This list breaks DKIM signatures. The normal mode of operations is to +remove a signature if one e.g. adds a footer that would break the +signature, but this list leaves the signature there to fail the check. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22641.mbox:2,S new file mode 100644 index 00000000..0fa85bd4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22641.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From brong at fastmail.fm Thu Mar 20 16:22:03 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +Message-ID: <1395357723.32672.97023393.3031B858@webmail.messagingengine.com> + +On Fri, Mar 21, 2014, at 05:32 AM, Ian Anderson wrote: +> I?m finding it dismayingly common that servers don?t give flag changes +> (i.e. an untagged FETCH response with FLAGS) on a NOOP. Some of them +> don?t support IDLE, or don?t give flag changes on IDLE either. At +> least some of the servers do support CONDSTORE though. + +This is pretty much the major reason that IMAP5 would be a good idea if +we can get enough consensus. "IMAP" is such a large collection of +partially implemented standards now that it's very hard for client +authors to use any of the more advanced features, because they need to +write fallback support anyway - and then you either have two different +codepaths with different bugs and subtleties, or you throw your hands up +in the air and just support the most generic. At least that works +everywhere. + +> So I was hoping to mitigate the whole mess by polling for +> HIGHESTMODSEQ changes on CONDSTORE servers and then doing a FETCH +> CHANGEDSINCE for mailboxes with new highest modification sequences. +> For mailboxes that I?m not SELECTed on, it?s an easy STATUS +> HIGHESTMODSEQ command. I can also do it on SELECTed mailboxes too, +> though RFC 3501 says I "SHOULD NOT? do that and RFC 4551 doesn?t +> update that recommendation. + +Since we control both our server and client, we use rfc5819 to get status +and mailbox listing information for all mailboxes in a single backend +request. It's pretty fast because we have an on-server statuscache +database which stores the status information for every mailbox, and gets +either updated or invalidated by anything which writes to the mailbox. + +It seems that pretty much everyone ignores the "SHOULD NOT". It's a +wart. It's pretty clear what STATUS is asking for. + +I'm not sure what Timo's ImapTest does if you return an error for STATUS +on the selected mailbox, but it certainly complains if you return +inconsistent data (which is good). + +STATUS on a selected folder would have been trivial in Cyrus except that +you can ask for RECENT in STATUS, and RECENT is bloody session specific, +so you can't just read from the statuscache or the mailbox files on +disk, you need to special case and introspect the index structure. + +RECENT is a particularly nasty wart. + +> What?s the conventional wisdom on solving this problem from the client +> side in a generic fashion? My inclination is to just replace my NOOP +> polling with STATUS on servers that support CONDSTORE. + +Anyway, all the major open source servers (by which I particularly claim +Dovecot and Cyrus - they seem to be the bulk of sites these days) and +Gmail are very happy with STATUS on the selected mailbox. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22682.mbox:2,S new file mode 100644 index 00000000..4ed0ae14 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22682.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From tss at iki.fi Sat Mar 30 14:01:16 2013 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: +References: +Message-ID: <465A2A40-E7B0-421E-9140-D2672F0F682D@iki.fi> + +On 26.3.2013, at 23.26, Brandon Long wrote: + +> So, if a user attempted to draft a message larger than our limit (35MB), with LITERAL+, the client would just issue an APPEND with two large a message. Our options were to just eat the data and say NO afterwards (great waste of bandwidth) or drop the connection. Some clients would just keep retrying to do the APPEND until they exhausted the upload bandwidth quota, or just cost the user a lot of money if they happened to be on a line that charged. + +Did you consider blocking the client's IP for n minutes and sending the user an email explaining the issue and asking to reset the client? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22688.mbox:2,S new file mode 100644 index 00000000..8077ae6f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22688.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From jkt at flaska.net Thu Jan 24 10:11:01 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Courier =?iso-8859-1?Q?bug(=3F)?= +In-Reply-To: <51015F8D.8020300@isode.com> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + + <51015F8D.8020300@isode.com> +Message-ID: <9ade1aaa-6d67-443b-8fa3-43f00486d4cb@flaska.net> + +On Thursday, 24 January 2013 17:21:33 CEST, Alexey Melnikov wrote: +>> If, as a client, you want to head off this situation, the way to do it +>> is to ask for FLAGS in addition to BODY. +> +> An alternative is to keep message numbers for the duration of a +> UID FETCH and correlate multiple FETCH responses that way. + +As far as I understand all of the RFCs, there is unfortunately nothing but the 5162's errata which would guarantee that unsolicited FETCH responses will have UIDs in them. Based on that observation, I claim that a client which wants to keep track of updates to messages' flags will have to keep a full mapping of the seq->UID for the relevant message ranges at all times. Remember, servers are free to send the data at any time, not just when fetching body parts. + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22701.mbox:2,S new file mode 100644 index 00000000..22a12f1e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22701.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 27 02:02:51 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + + <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> +Message-ID: <1354010571.12520.140661158658949.22643EF6@webmail.messagingengine.com> + +On Tue, Nov 27, 2012, at 02:48 AM, Michael M Slusarz wrote: +> Quoting Brandon Long : +> Not sure how you are supposed to do this on IMAP servers that don't +> support ID. Or don't send version information: Dovecot, for one, +> doesn't by default. Or for installations that use a version of your +> software released before a particular IMAP server even breaks (full +> disclosure: the recent Cyrus break is weird because it sent a BYE and +> terminated instead of a failed command, so that wasn't previously +> scanned for so we weren't catching this until recently. so we're not +> perfect either.). + +I'm kinda embarassed about this one! I forgot to put the GUID calculation +call in the APPEND BINARY path, because nothing ever tested it and it +appeared nobody was using it, because we didn't have a single complaint or +failure with it until just a few weeks ago. + +> IMAP command sniffing = javascript browser sniffing. The days of +> parsing a browser's User-Agent field are so 1999. + +Version 9.x (like something) (like somethingelse) ... + +Yeah, sniffing is fun. + +The Cyrus XFER command now does version sniffing to work out which version +of cyrus.index the remote end supports, so it can downgrade the files before +transfer. Kinda messy, but a whole lot better than not working at all! + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22743.mbox:2,S new file mode 100644 index 00000000..e0daf68c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22743.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From dave at cridland.net Tue Mar 20 15:22:32 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + +Message-ID: <20897.1332282152.697464@puncture> + +On Tue Mar 20 22:06:24 2012, Brandon Long wrote: +> On Tue, Mar 20, 2012 at 2:33 PM, PA wrote: +> +> > +> > On Mar 20, 2012, at 10:27 AM, Dave Cridland wrote: +> > +> > > No, NOOP is a command that does nothing; an EXISTS response is +> not +> > automatically generated - it can be generated during any command +> (or, for +> > extra bonus points, not during any command), but only when there +> are new +> > messages. +> > +> > Sure. Does it hurt though? If one send an EXISTS response even +> though the +> > message count hasn't changed? +> > +> +> We've seen some clients which will always request information about +> the +> last message in the folder if you give the same EXISTS. We issue +> duplicate +> EXISTS every N minutes on IDLE as a keepalive for the connection +> (to keep +> various NATs from closing the connection), but we only have to deal +> with +> the small number of extra FETCHes every N minutes. (we tried to +> use an +> untagged * XKEEPALIVE response, but some clients hang-up when they +> get an +> untagged response they don't understand). + +You could also resend the flags of some message, which might have +fewer collateral semantics, as it were. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22756.mbox:2,S new file mode 100644 index 00000000..fe44ed5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22756.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 6 13:51:16 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: <20111106213124.GA27889@brong.net> +References: + <20111106213124.GA27889@brong.net> +Message-ID: + + +On Nov 6, 2011, at 10:31 PM, Bron Gondwana wrote: + +> On Sun, Nov 06, 2011 at 09:15:34PM +0100, Petite Abeille wrote: +>> Given a mailbox containing only \Seen messages, what kind of UNSEEN response is SELECT supposed to return? +>> +>> Looking at, say, dovecot implementation, it doesn't return any UNSEEN data if all messages are \Seen: +>> +>> if (status.first_unseen_seq != 0) { +>> client_send_line(client, +>> t_strdup_printf("* OK [UNSEEN %u] First unseen.", +>> status.first_unseen_seq)); +>> } +> +> Cyrus does the same: +> +> if (state->firstnotseen) +> prot_printf(state->out, "* OK [UNSEEN %u] Ok\r\n", +> state->firstnotseen); + +Ok, that settles it I guess :) + +> Ok - I think I've deciphered it. You MUST NOT select mailboxes +> unless they have unseen messages in them. Problem solved. + +That's one way to look at it :P + +One more minor clarification... + +In the example above, both dovecot and cyrus suffix the response with a bit of free form text: + +* OK [UNSEEN 123] First unseen. <- "First unseen." +* OK [UNSEEN 123] Ok <- "Ok" + +From the spec: + +* OK [UNSEEN 12] Message 12 is first unseen <- "Message 12 is first unseen" + +Is that trailing text mandatory? It doesn't seem to add much of anything functional to the response. Can the response dispense with it? + +* OK [UNSEEN 123] + +Thanks. + + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22759.mbox:2,S new file mode 100644 index 00000000..6311a16b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22759.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Sat Oct 22 16:23:16 2011 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: +References: +Message-ID: <4EA35064.5552.33AE28E3@David.Harris.pmail.gen.nz> + +On 22 Oct 2011 at 12:20, Mark Crispin wrote: + +> There is yet another broken IMAP server inflicted upon the world. The +> iCloud/.me IMAP server (a.k.a. iSCREAM, st11p00mmm-iscream--5.me.com) +> advertises AUTH=PLAIN but doesn't accept it: +> 2 authenticate plain +> 2 BAD parse error +> +> Apparently, Apple thinks think that by advertising SASL-IR, a client is +> compelled to implement it. + +Apple has always seemed to believe that they are in the business of +making standards, not following them. They're the new IBM in that +regard. + +As someone who's had to deal with the output from infinitely-accursed +AppleMail in its various incarnations over the years, nothing Apple do +could surprise me any more. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: +David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Sign seen in a Rome laundry: + "Ladies, leave your clothes here and spend the afternoon + having a good time." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22768.mbox:2,S new file mode 100644 index 00000000..be3e250a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22768.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From mrc+imap at panda.com Sun Jun 5 18:24:50 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> +References: <4DEBB242.2090200@BusCom.net>, + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu>, + <4DEBDFF5.9000301@BusCom.net> + <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> +Message-ID: + +On Mon, 6 Jun 2011, David Harris wrote: +> the part that gave me the most trouble was partial fetches of +> arbitrary data: many clients will use this as a "chunking" mechanism, +> but it creates a serious state problem of what you keep between +> commands on the server side (imagine that you have a 20MB +> message and the client wants to retrieve a MIME sub-part from the +> middle of it 1K at a time: if you re-parse and re-extract the sub-part on +> each chunk, you'll absolutely kill your server's performance - you need +> to find some way of caching the sub-part so you can easily return +> subsequent requests for the next chunk). + +Good point. My server implementations (note the plural) keep offsets in +the internal representation of the BODYSTRUCTURE for each body part, even +though these are not reported to the client, for the specific purpose of +avoiding this problem. + +> 3: Overall, IMAP part numbering was far and away the hardest thing I +> had to do with the protocol. + +Are you prohibited from looking at existing code? There is a really cute +recursive algorithm in my mtest testbed program that demonstrates the +proper way to do IMAP part numbering. + +It's worth spending the time to understand IMAP part numbering. It seems +ideosyncratic (as David says), but if you think through the issues you'll +see that it makes a great deal of sense. + +It's not what you'd come up with at first to descend a MIME structure +tree. But once you grasp it, you'll realize that it's cleaner and more +concise than the obvious one. + +It does take a while though. It took me a while, with several false +starts, to come up with it. + +> From quietly reading this list for many years, I suspect the consensus +> you will get will probably be something along the lines of "all clients are +> poor choices", although I personally think that's a bit harsh. I'd test +> against the clients most likely to be used with your server and be ready +> to accommodate them as required (some accommodation is almost +> inevitable, unfortunately). + +The client that is the best test of all is [al]pine. It uses all of IMAP, +and if you have something wrong in how you do IMAP it will become obvious +pretty quickly. + +It would be a very obscure server bug indeed which is not caught by +[al]pine yet caught by some other client. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22772.mbox:2,S new file mode 100644 index 00000000..8457b324 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22772.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From brong at fastmail.fm Wed May 18 01:08:07 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> +Message-ID: <20110518100807.29d4b72c@arbre.eng.oslo.osa> + +On Wed, 18 May 2011 01:16:45 -0600 +Michael M Slusarz wrote: + +(Terminology: keyword, label, flag - joy) + +> 1. Implement UTF7-IMAP (or similar) storage of keywords. +> Pros: Would allow keyword & label information to be kept in a single +> location; all MUAs should be able to easily adapt since they should +> already have code necessary to do UTF7-IMAP conversions +> Cons: Haven't thought about it fully, but doesn't seem like it could +> be made to be backward compatible with RFC 3501 keywords. Doesn't +> solve problem of having one keyword meaning the same thing across all +> mailboxes. + +Lack of backwards compatibility kills this one out the gate. You can't +break existing clients and servers. + +> 2. Define a server METADATA entry (RFC 5464) to store keyword->label mapping +> Pros: Works with old RFC 3501 servers. Leverages an existing IMAP extension +> Cons: Doesn't solve problem of having one keyword meaning the same +> thing across all mailboxes. Doesn't really seem to be the kind of +> thing that should necessarily be a metadata entry - flags/keywords are +> a core part of the IMAP spec, so to me it just "feels" like something +> else should be used instead (really useful description, I know). + +IMAP is a twisty little maze of hacks on top of the original spec already. + +> 3. New commands/response codes +> Pros: Works with old RFC 3501 servers. Would be able to handle issue +> of one keyword meaning the same thing across all mailboxes. +> Cons: As with all extensions, adds complexity and more commands to +> implement on the client side. + +And on the server side too - unless you only want to support a couple of +servers. Cyrus would add it, and Dovecot. But selling it to everyone else +might be tricky. And actually, storage in Cyrus would be slightly tricky +too, but I can figure that one out. + +> 4. Combo of #2 and #3 +> Leverage #2 to store label lookup information, with #3 to define +> system-wide keywords. +> Pros: See #3. Only adds commands necessary that can't be done through +> other means. +> Cons: Requires client/server to support METADATA, even though it would +> probably not be that much more work just to add the needed lookup bits +> to a new extension. + +I think once you're requiring the client and server to support a brand new +command anyway, requiring METADATA isn't a big stretch. I believe you can +actually store a server-level METADATA item, as well as per-mailbox ones. +Makes sense to use that. It does mean that the admin needs to add new +keywords to the system though... mapping to basic flag names underneath. + +> Hopefully I have provided a coherent explanation of my perceived +> limitations with the current specs. Coming from a webmail developer, +> this is an important issue to me since it is quite common to be +> dealing with IMAP servers that are being accessed by other MUAs. +> Synchronization of keywords would go a long way towards making +> cross-usage of MUAs smoother. + +Absolutely. While you're at it, can you look into standardising +$NotSpam $NonSpam NotSpam NonSpam Spam Junk NotJunk, etc - all the +various magic flags used by different clients to label UBE. + +This boat may well have sailed... + +> As a last little bit, just to get it out there, I will mention that +> Timo also briefly mentioned that he has thought about commands to +> manage PERMANENTFLAGS +> (http://dovecot.org/list/dovecot/2011-May/058894.html) Figured I +> would throw it out there while on the topic of flags/keywords in order +> to ensure all topics are covered. Hope you don't mind Timo :) + +I've been thinking about that for Cyrus. We run a "repack" on the mailbox +every so often - and we could count up the usage of flags during that, and +remove any named user flags from PERMANENTFLAGS that had no message currently +using them after a repack. + +FYI: Cyrus has a hard limit of 128 user flags due to the fixed-width binary +nature of the cyrus.index format. This makes removing stale flags slightly +more pressing for Cyrus than for other servers which don't have this limit... + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22777.mbox:2,S new file mode 100644 index 00000000..44a574fd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22777.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From norman at apache.org Fri Apr 15 11:17:20 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] FETCH Response +In-Reply-To: +References: + +Message-ID: + +Hi Mark, + +this was exactly what I was refer to, and the answer I needed. Sorry +the \ where there by mistake.. + +Thanks again for your help :) + +Bye, +Norman + + +2011/4/15 Mark Crispin : +> It took me a while to figure out what you were asking in your example, as +> you omitted some important information: specifically, the BODYSTRUCTURE +> that identified the type/subtype/encoding of message part 3. ?Also, +> where did those spurious \ in the server responses come from? +> +> Anyway, I think that your answer is as follows: +> +> The BODY section specifiers HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and +> TEXT only apply to message parts of type MESSAGE/RFC822. ?Implicitly, the +> entire message (the top level) is typed MESSAGE/RFC822. +> +> Your example presumably shows a TEXT/HTML message part with encoding +> BASE64. ?At least, the BODY[3] contents appeared to be BASE64, and when +> put through a BASE64 decoder came up with a short HTML document. +> +> In other words, HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and TEXT are all +> meaningless for BODY[3] in this example. ?The appropriate server behavior +> is: +> +> C: A18 FETCH 1 BODY[3.HEADER] +> S: * 1 FETCH (BODY[3.HEADER] "") +> S: A18 OK that was a silly thing for you to do! +> C: A19 FETCH 1 BODY[3.TEXT] +> S: * 1 FETCH (BODY[3.TEXT] "") +> S: A19 OK that was a silly thing for you to do! +> +> As a matter of good design, you should always use an zero-length quoted +> string, rather than a zero-length literal, to represent the empty string. +> Of course, implementations MUST accept either form. +> +> The reason why you don't have a blank line in the 3.HEADER fetch is that +> there is no "message" (it is a TEXT/HTML, not a MESSAGE/RFC822) and thus +> if you are substituting an empty string the "message which has no body and +> no blank line" rule applies. +> +> If I were to do things over today, I would have required: +> +> C: A18 FETCH 1 BODY[3.HEADER] +> S: A18 BAD meaningless to fetch header for type TEXT/HTML +> C: A19 FETCH 1 BODY[3.TEXT] +> S: A19 BAD meaningless to fetch header for type TEXT/HTML +> +> It's historical as to why meaningless text fetches return the empty string +> rather than a BAD; there were good reasons once upon a time but those +> reasons have long since been rendered moot. ?A related history is why +> BODY[1] and BODY[TEXT] are equivalent for a non-MIME message. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22780.mbox:2,S new file mode 100644 index 00000000..7ce7dbf8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22780.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From blong at google.com Fri Mar 11 14:55:46 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Re: RFC 2971 (ID) mandatory in Android phones? +Message-ID: + +> I have just received a frightening report that says that the mail client +> in Android phones sends an ID command to an IMAP server that does not +> advertise the ID extension, and disconnects the session when the IMAP +> server returns BAD as the response. +> +> I can NOT duplicate this problem on my Android phone, an old T-Mobile +> myTouch 3G. However, as its OS is 2 or so years old, it's possible that +> this is a bug in newer versions. +> +> The client reported to do this sends the following ID command: +> +> 2 ID ("name" "com.android.email" "os" "android" "os-version" "2.2; FROYO" "vendor" "samsung" "x-android-device-model" "GT-P1000" "x-android-mobile-net-operator" "Vodafone CZ" "AGUID" "F26+FjerfVzQ1lSlxFmbV/Yw0ak=") +> +> Is this true? + +The Android Email client is part of the open source release. +GT-P1000 appears to the GSM version of the Galaxy Tab. This is not +running stock Android, but Samsung's own interface, which may be using +a modified version of the Email client or something entirely written +in-house. + +The source code is published here: +http://android.git.kernel.org/?p=platform/packages/apps/Email.git;a=summary + +Ahh, apparently the answer is yes: + +http://android.git.kernel.org/?p=platform/packages/apps/Email.git;a=commit;h=275b89d96949de6544c7bca999e241f659cf18b3 + +fixes the bug. I'm not sure if there was a release while it did it +before it stopped doing it. I'm not seeing any of the requests in our +logs, but could be missing it, or people are more likely to use the +gmail app for gmail than the email app. + +Brandon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22784.mbox:2,S new file mode 100644 index 00000000..e2ae30d6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22784.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Tue Feb 8 10:05:35 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +In-Reply-To: <2609.1297185090.628987@Sputnik> +References: <4D5173F0.7030405@digitro.com.br> <2609.1297185090.628987@Sputnik> +Message-ID: <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> + +On 8.2.2011, at 19.11, Dave Cridland wrote: + +> On Tue Feb 8 16:48:48 2011, Bruno M. Soares wrote: +>> I opened pcap file and there it is: +> +> (This appears to be Cyrus IMAP) +> +>> But I can't decompress de deflate part of file. +>> Can anyone give me a little help? +> +> It's raw deflate blocks, so not either zlib or gzip - you need to write a small program using zlib directly, without the headers or checksums used by zlib. + +If you want something ready-made, you can use doveadm utility from Dovecot v2.0. Since you of course don't want to mess up your existing installation, you can do e.g.: + +./configure --prefix=/tmp/dovecot --with-zlib +make && make install +/tmp/dovecot/bin/doveadm -O -o mail_plugins=zlib dump -t imapzlib ~/imap-traffic.log + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22788.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22788.mbox:2,S new file mode 100644 index 00000000..09e56c5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22788.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From jkt at gentoo.org Thu Jan 20 17:17:11 2011 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] UIDNEXT updates upon new message arrival +In-Reply-To: <28835.1295567529.285091@puncture> +References: <4D385AB5.90208@gentoo.org> <28835.1295567529.285091@puncture> +Message-ID: <4D38DE97.6060509@gentoo.org> + +On 01/21/11 00:52, Dave Cridland wrote: +> You're describing (a slightly broken version of) Polymer's sync algorithm. +> +> See https://github.com/dwd/Polymer/blob/master/infotrope/imap.py around +> line 3611, and also line 3800. + +Thank you, I've read various docs at your web a few years ago. It's +possible that the EXISTS/UIDNEXT thing was there back then. I wasn't +able to find it today, but I'm sure I've read various things which +aren't there anymore. + +Could you please mention what is broken in what I described, though? It +isn't obvious from a quick glance at your source code. (I've already +found that you sort the response to the UID SEARCH command locally, but +that isn't related to this question. Fixed now, thanks.) + +> No, but that's okay. If N messages arrive, UIDNEXT must increase by a +> minimum of N. In fact, if N messages arrive, UIDNEXT will in all +> likelyhood increase by precisely N. I can conceive of edge cases where +> it increases by more than N in a reasonable implementation, but they're +> unlikely. So just add one for each new message that you're told about +> during a session. (ie, each time you're told about an increase to +> EXISTS, add the difference to your UIDNEXT). + +Yes, but reading threads about people adding a fake EXISTS/EXPUNGE pair +to the IDLE, just to make Outlook happy, scares me. I can't think of a +situation where this extra increment would break anything, but maybe I'm +just missing something -- that's why I'm asking. + +>> I do not support QRESYNC yet. +> +> You should do - it's effectively the same sync algorithm, but changed to +> take advantage of the server's knowledge instead - so the complicated +> selection is done by the server. + +Yes, it's just a matter of making sure that I have the basic +functionality well-tested and covered by test cases before I build a +more complicated setup on top of it. + +> Polymer doesn't do a binary search, by the way - it fetches chunks of +> 1000 UIDs at once, and has an amusing algorithm to decide how many +> chunks to fetch, depending on whether ESEARCH is used (which'll help you +> hugely) and how sparse the UID mapping is. For finding a UID in the +> mapping, it actually does a successive approximation technique, on the +> assumption that the map is uniformly sparse, which works pretty well - +> usually it find the right chunk in its first guess. +> +> For resync purposes, if there have been expunges, it discards and +> refetches just the last block - because generally expunges will happen +> in the recent portion of the mailbox - and if the beginning of the newly +> fetched UID block matches the beginning of the one it's replacing, the +> UID map is now synchronized. + +I'm assuming that these chunks are always 1000 items in length (ie. they +cover 1000 messages, or 1000 sequence numbers), and therefore your +blocks start at message #1, #1001, #2001 etc, is that right? That indeed +looks like a nice optimization, albeit with a similar latency tradeoff. + +Cheers, +Jan + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22796.mbox:2,S new file mode 100644 index 00000000..786e9091 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22796.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 10:31:32 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> +Message-ID: + +The answer is Android. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095064.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095064.22801.mbox:2,S new file mode 100644 index 00000000..7dc79180 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095064.22801.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From mrc+imap at panda.com Sun Aug 29 11:31:58 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life support + and ambiguity questions +In-Reply-To: <4C7A2AB6.6070405@lists.grepular.com> +References: <4C7A2AB6.6070405@lists.grepular.com> +Message-ID: + +Few, if any, IMAP servers will execute commands out of order. + +Nor has there ever been much of a use case for executing commands out of +order. The claimed use case ~25 years ago was that SEARCH may take a +while because it may require the operator to mount a 9-track archive tape +to get the data on large archives. + +That claim was demonstrable nonsense even back then. But, even back then, +the silly "IMAP will die unless it has this feature I want" argument (it's +like calling a political opponent "bigot" or "mean-spirited") was babbled +just as much as it is today. + +The valid use case for multiple commands in progress was, and remains, +command pipelining in order to save RTTs. Pipelining is particularly +important in SMTP, but there are some cases where IMAP clients can benefit +from it. In pipelining, commands are executed in the order in the +pipeline. + +There is no particular requirement for an IMAP server to do anything to +support pipelining other than it MUST NOT clear its command input buffer +between commands. [SMTP, on the other hand, has a PIPELINING extension; +and a server which does not have that extension MAY do such clearing. +Some SMTP servers do that as an anti-spam measure, as most spamware SMTP +blasters assume a pipelining server and do not check the extension.] + +An IMAP client, on the other hand, MUST follow certain rules if it decides +to pipeline (many clients do not, and thus need not worry about these +rules). These rules boil down to: "don't do anything whose operation may +differ depending upon the operation of a previous command." + +For example, the "FETCH + NOOP + STORE" example that you mentioned is +non-pipelineable because an EXPUNGE event can happen during the NOOP, thus +altering the interpretation of the message sequence in the STORE. + +Most pipelining rules involve the possibility of an EXPUNGE event. A +command that allows an EXPUNGE event must be the last command in any +pipeline that involves message sequences in any command. + +Even if a server implemented execute pipelined commands out of order (a +possibility that IMHO was stillborn 20+ years ago), it must nonetheless +result "as if" they were executed in order. This quickly makes the entire +exercise pointless once you work out the few pipelined cases that can be +done out of order with "as if" results and see that there is no benefit to +doing those cases out of order. + +Similarly, command tagging should properly be seen as a way of ensuring +synchronization in pipelined response processing (as opposed to just +counting responses ala SMTP) and NOT as a way to execute commands out of +order. + +Although some clients open multiple sessions to the same mailbox on the +same server to do multiple commands at once, there is no benefit to this +practice. If something causes an IMAP command to bottleneck, that same +something will affect a simultaneous IMAP session from that client to that +same server+mailbox. + +Bottom line: + +As a server implementor, you can disregard section 5.5 entirely, with the +exception that you MUST NOT clear the command input buffer after reading a +command (because there may be a pipelined command following the current +command). Section 5.5 should be considered to be solely implementation +advice for clients that wish to pipeline. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22595.mbox:2,S new file mode 100644 index 00000000..f928458d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From johnl-imap at iecc.com Fri Mar 13 09:48:48 2015 +To: imap-protocol@u.washington.edu +From: John Levine +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: <42facde4-e794-4661-a729-9b4795e064ec@gulbrandsen.priv.no> +Message-ID: <20150313164848.24608.qmail@ary.lan> + +>This list breaks DKIM signatures. + +Right. That's not a bug. + +> The normal mode of operations is to +>remove a signature if one e.g. adds a footer that would break the +>signature, but this list leaves the signature there to fail the check. + +Many people imagine that an invalid DKIM signature says something bad +about a message. They are mistaken, no matter how often they repeat +that misconception. There is nothing in DKIM that says anyone should +remove signatures from incoming mail for any reason. If a signature +doesn't validate, the correct thing to do is to ignore it. + +R's, +John + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22641.mbox:2,S new file mode 100644 index 00000000..13cf192c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22641.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From brong at fastmail.fm Thu Mar 20 16:31:30 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Detecting HIGHESTMODSEQ changes/polling for + flag changes +In-Reply-To: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +References: <4E9EBB0E-ADFB-4F79-A27B-51ADC8395D71@apple.com> +Message-ID: <1395358290.2758.97026017.3C51C295@webmail.messagingengine.com> + +On Fri, Mar 21, 2014, at 05:32 AM, Ian Anderson wrote: +> I?m finding it dismayingly common that servers don?t give flag changes (i.e. an untagged FETCH response with FLAGS) on a NOOP. Some of them don?t support IDLE, or don?t give flag changes on IDLE either. At least some of the servers do support CONDSTORE though. + +I should also probably detail what we do for FastMail's web interface here, +which uses EventSource to get notification of updates. + +Our backend Cyrus servers have rfc5423 MessageEvents support, thanks to +ATOS WorldLine for adding the feature to Cyrus. We've instrumented them +with tons of custom stuff for ourselves like pushing the envelope details +for new deliveries for nice little popup messages - but the main use is +that they tell the new highestmodseq for every folder. + +In our case, we also use a single 'highestmodseq' counter per user, so that +you can quickly work out which folders changed, while only transferring a +single synchronisation status number. + +The MessageEvents feed to a daemon on each IMAP server which also takes +registrations from the frontends when a web browser sets up a new +eventsource channel. The channel is informed of the new highestmodseq, +and the browser makes an XMLHttpRequest to ask what actually changed in +the views it's interested in since the previous modseq. + +(most of the XMLHttpRequest is documented at http://jmap.io/) + +This allows a single number to represent that something has changed on +the server. We never actually push the new state, just that there's +something to resynchronise - minimising the number of codepaths and +the opportunity for things to get out of sync. + +Obviously, we'd love to integrate this with platform-specific notification +channels as well over time. For now it's all purely within the browser. + +Sadly, IDLE doesn't really do what anyone needs, because clients want to +know about changes to other folders - leading to every client having to +implement some form of what you're doing - either running STATUS on each +folder, or even just SELECTing each folder to check for changes. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22682.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22682.mbox:2,S new file mode 100644 index 00000000..4b11c7c2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22682.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From blong at google.com Sun Mar 31 22:42:26 2013 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Working around the evils of LITERAL+ +In-Reply-To: <465A2A40-E7B0-421E-9140-D2672F0F682D@iki.fi> +References: + <465A2A40-E7B0-421E-9140-D2672F0F682D@iki.fi> +Message-ID: + +On Sat, Mar 30, 2013 at 2:01 PM, Timo Sirainen wrote: + +> On 26.3.2013, at 23.26, Brandon Long wrote: +> +> > So, if a user attempted to draft a message larger than our limit (35MB), +> with LITERAL+, the client would just issue an APPEND with two large a +> message. Our options were to just eat the data and say NO afterwards +> (great waste of bandwidth) or drop the connection. Some clients would just +> keep retrying to do the APPEND until they exhausted the upload bandwidth +> quota, or just cost the user a lot of money if they happened to be on a +> line that charged. +> +> Did you consider blocking the client's IP for n minutes and sending the +> user an email explaining the issue and asking to reset the client? +> +> +If we block the IP, they won't get the email either... but there may be +something there that could work. + +I'm more thinking that implementing the UTF8 rfc (or at least parts of it) +would eliminate most of the need to use literals in commands, giving us the +near equivalent to "only allow literal+ except for append". + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22688.mbox:2,S new file mode 100644 index 00000000..c1b042f5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22688.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From slusarz at curecanti.org Mon Jan 28 13:58:43 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Courier bug(?) +In-Reply-To: <9ade1aaa-6d67-443b-8fa3-43f00486d4cb@flaska.net> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + + <51015F8D.8020300@isode.com> + <9ade1aaa-6d67-443b-8fa3-43f00486d4cb@flaska.net> +Message-ID: <20130128145843.Horde._nr6MiWpMYirI_cZr53iQQ8@bigworm.curecanti.org> + +Quoting Jan Kundr?t : + +> As far as I understand all of the RFCs, there is unfortunately +> nothing but the 5162's errata which would guarantee that unsolicited +> FETCH responses will have UIDs in them. Based on that observation, I +> claim that a client which wants to keep track of updates to +> messages' flags will have to keep a full mapping of the seq->UID for +> the relevant message ranges at all times. Remember, servers are free +> to send the data at any time, not just when fetching body parts. + +I agree with the former part of your statement. But I think the +latter part of your statement is overstating the issue. + +While there is nothing in the specs that guarantees that FETCH +responses will have UIDs, the actual reality, at least as it stands +right now, is that any decent IMAP server *DOES* return this UID +information. E.g. both Cyrus and Dovecot are guaranteed to return +UIDs with unsolicited FETCH responses if CONDSTORE/QRESYNC is active. +Hopefully the Gmail folks are doing the same thing with their +CONDSTORE/QRESYNC implementation. + +IMHO, a more sensible approach for a disconnected client, rather than +trying to keep a sequence->UID map (ugh), is to assume that these +unsolicited FETCH responses *will* always have UID information +associated with it, which in current practice will happen almost 100% +of the time. A client can then have code to check for the following +occurrence during a command: + +1. At least 1 FLAGS item was returned. +2. The item in #1 cannot be correlated with a UID with the other FETCH +data returned during the current command. +3. The highest MODSEQ value increased. + +Only if these 3 items occur does a client need some other way of +linking the flag changes with an UID. Since this event should occur +only extremely rarely, if at all, one appropriate way of correctly +syncing the local cache would be to: + +1. Ignore the returned FETCH information for local caching purposes. +2. Immediately reopen the mailbox. (The client's existing +CONDSTORE/QRESYNC will ensure that the mailbox is correctly sync'd). + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22701.mbox:2,S new file mode 100644 index 00000000..e1d46da6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22701.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 27 02:09:12 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + + <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> + +Message-ID: <1354010952.13681.140661158661065.2086C60B@webmail.messagingengine.com> + +On Tue, Nov 27, 2012, at 12:30 AM, Brandon Long wrote: +> On Mon, Nov 26, 2012 at 2:57 PM, Michael M Slusarz wrote: +> > What I get out of this is that you think QRESYNC was the result of an +> > incorrect design decision and, instead, the proposal you previously linked +> > to in this thread should have won out. +> +> I wasn't on the list at that time, so I have no idea what the debate looked +> like. I view them as different, however. QRESYNC requires little extra +> storage and can be persisted for any length of time. I find it odd that it +> mentions "mobile, frequently disconnected" as its still a fairly extensive +> negotiation between client and server. Its certainly a win for any client +> when re-connecting, regardless of how long ago that was, and fills a hole +> in the CONDSTORE case. So no, I don't think QRESYNC is an incorrect design +> decision. Its possible a "not imap" protocol could conceive of a better +> way, in syntax or otherwise, of passing the needed information to re-sync +> the client and server, but QRESYNC has to fit the task given it. + +The interesting part for QRESYNC is remembering "tombstones" for EXPUNGED +messages for a while to keep it cheap. + +I like QRESYNC a lot more now that I've implemented the Cyrus 2.4+ replication +protocol on top of it. It basically uses the same logic, but with full +information required to replicate the exact mailbox state at the far end. It +means fast and cheap resync. + +I'm really tempted to try to write it up as a more general protocol for +synchronising IMAP message stores from any vendor. There's some capabilities +you need which can't be expressed over regular IMAP - for example appending +with a specific new UID rather than the next available. + +I also wrote up a long thing to the Cyrus mailing list many years ago about +"UID Promotion" - basically if the two ends had ever had different messages +with the same UID, you need to give new UIDs to BOTH messages which are +higher than any ever seen by any client - generating an EXPUNGE and two +APPEND events at each end - to come entirely back into sync. + +If anyone else is interested, I can write up something about how Cyrus +implements QRESYNC now, such that it can clean up old records, yet still +be efficient for clients most of the time. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22743.mbox:2,S new file mode 100644 index 00000000..0dc8118a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22743.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From petite_abeille at mac.com Tue Mar 20 15:35:52 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <20897.1332282025.074478@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> +Message-ID: + + +On Mar 20, 2012, at 11:20 PM, Dave Cridland wrote: + +>> In any case, for my humble purpose the set of messages is frozen upon a SELECT and is only ever updated upon a NOOP request. +> That's definitely wrong. + +Wrong in what sense? + +As I see it, IMAP seems to imply a frozen set of messages, until either an EXISTS or EXPUNGE is observed. In my case, as timing is not critical, NOOP is the place where that observation happens as this seems to be the less troublesome spot to do so. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22756.mbox:2,S new file mode 100644 index 00000000..79652adf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22756.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From lyndon at orthanc.ca Sun Nov 6 13:54:44 2011 +To: imap-protocol@u.washington.edu +From: VE6BBM/VE7TFX ) +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: <20111106213124.GA27889@brong.net> +Message-ID: <22fcfce12af997c6eb7178882ba14cd0@orthanc.ca> + +> Ok - I think I've deciphered it. You MUST NOT select mailboxes +> unless they have unseen messages in them. Problem solved. + +It's pretty obviously an error in the specification. + +How about submitting an errata. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22759.mbox:2,S new file mode 100644 index 00000000..35055103 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22759.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From brong at fastmail.fm Sun Oct 23 00:49:12 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: <4EA35064.5552.33AE28E3@David.Harris.pmail.gen.nz> +References: + <4EA35064.5552.33AE28E3@David.Harris.pmail.gen.nz> +Message-ID: <20111023074912.GA13089@brong.net> + +On Sun, Oct 23, 2011 at 12:23:16PM +1300, David Harris wrote: +> On 22 Oct 2011 at 12:20, Mark Crispin wrote: +> +> > There is yet another broken IMAP server inflicted upon the world. The +> > iCloud/.me IMAP server (a.k.a. iSCREAM, st11p00mmm-iscream--5.me.com) +> > advertises AUTH=PLAIN but doesn't accept it: +> > 2 authenticate plain +> > 2 BAD parse error +> > +> > Apparently, Apple thinks think that by advertising SASL-IR, a client is +> > compelled to implement it. +> +> Apple has always seemed to believe that they are in the business of +> making standards, not following them. They're the new IBM in that +> regard. +> +> As someone who's had to deal with the output from infinitely-accursed +> AppleMail in its various incarnations over the years, nothing Apple do +> could surprise me any more. + +INBOX.INBOX.INBOX.INBOX.INBOX.Inbox.Apple Mail To Do and friends? It made +me put a lot of work into accurate handling of our "maximum mailbox size" +rules across renames and deletes. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22768.mbox:2,S new file mode 100644 index 00000000..ad5f91f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22768.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From mrc+imap at panda.com Sun Jun 5 18:25:58 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <1307319659.7961.1459831005@webmail.messagingengine.com> +References: <4DEBB242.2090200@BusCom.net><4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net><4DEBBEC1.3080600@BusCom.net><201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> + <1307319659.7961.1459831005@webmail.messagingengine.com> +Message-ID: + +On Mon, 6 Jun 2011, Robert Mueller wrote: +> So one client might delete + expunge a message, but another connection +> won't see that expunge until they do a command that allows it to be +> seen. This can significantly affect how you design your internal state +> management, namely that when you expunge a message, you probably just +> want to mark it as expunged on disk and actually cleanup later, rather +> than removing it immediately from your mailbox state. + +Another excellent point. Doing this right greatly affect the user +experience. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22772.mbox:2,S new file mode 100644 index 00000000..29445df1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22772.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From benny at diku.dk Wed May 18 01:33:11 2011 +To: imap-protocol@u.washington.edu +From: Benny =?utf-8?q?Kj=C3=A6r?= Nielsen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110518100807.29d4b72c@arbre.eng.oslo.osa> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + <20110518100807.29d4b72c@arbre.eng.oslo.osa> +Message-ID: <36617A6D-5182-4F9D-A2D3-5DD3D11F45FD@diku.dk> + +On 18 May 2011, at 10:08, Bron Gondwana wrote: + +> Absolutely. While you're at it, can you look into standardising +> $NotSpam $NonSpam NotSpam NonSpam Spam Junk NotJunk, etc - all the +> various magic flags used by different clients to label UBE. +> +> This boat may well have sailed... + +The boat may have sailed, but these flags have "recently" been +standardised by Alexey Melnikov: + + http://www.iana.org/assignments/imap-keywords/imap-keywords.xml + http://www.ietf.org/mail-archive/web/morg/current/msg00441.html + +For the record, I would (as an email client developer) also welcome +improvements of IMAP keywords. + +Kind regards, + +Benny Kj?r Nielsen + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22777.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22777.mbox:2,S new file mode 100644 index 00000000..d34b16ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22777.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From tss at iki.fi Wed Apr 20 11:10:26 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] RFC 5464 METADATA Extension examples vs BNF + inconsistency +In-Reply-To: <1302591576.8511.1440130785@webmail.messagingengine.com> +References: <1302591576.8511.1440130785@webmail.messagingengine.com> +Message-ID: <45F5143C-BA17-4974-B74D-27C4CAF758CE@iki.fi> + +On 12.4.2011, at 9.59, Robert Mueller wrote: + +> The BNF says options come first, the 4.2. GETMETADATA command section +> and examples show mailbox coming first. + +ABNF should always be trusted over examples. I reported this as errata: http://www.rfc-editor.org/errata_search.php?rfc=5464 + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22780.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22780.mbox:2,S new file mode 100644 index 00000000..e76f30f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22780.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From mrc+imap at panda.com Fri Mar 11 21:54:13 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Re: RFC 2971 (ID) mandatory in Android phones? +In-Reply-To: +References: +Message-ID: + +Thank you for confirming that this problem is fixed. + +Further investigation determined that the disconnection session was by the +server. That particular server considers any invalid command prior to +authentication to be part of a possible fuzzing attack, and always +disconnects. Since it wasn't known how long it would be before this +problem is fixed in Android, the server was subsequently changed to allow +some number of invalid pre-authentication commands before disconnecting. + +On Fri, 11 Mar 2011, Brandon Long wrote: +>> I have just received a frightening report that says that the mail client +>> in Android phones sends an ID command to an IMAP server that does not +>> advertise the ID extension, and disconnects the session when the IMAP +>> server returns BAD as the response. +>> +>> I can NOT duplicate this problem on my Android phone, an old T-Mobile +>> myTouch 3G. However, as its OS is 2 or so years old, it's possible that +>> this is a bug in newer versions. +>> +>> The client reported to do this sends the following ID command: +>> +>> 2 ID ("name" "com.android.email" "os" "android" "os-version" "2.2; FROYO" "vendor" "samsung" "x-android-device-model" "GT-P1000" "x-android-mobile-net-operator" "Vodafone CZ" "AGUID" "F26+FjerfVzQ1lSlxFmbV/Yw0ak=") +>> +>> Is this true? +> +> The Android Email client is part of the open source release. +> GT-P1000 appears to the GSM version of the Galaxy Tab. This is not +> running stock Android, but Samsung's own interface, which may be using +> a modified version of the Email client or something entirely written +> in-house. +> +> The source code is published here: +> http://android.git.kernel.org/?p=platform/packages/apps/Email.git;a=summary +> +> Ahh, apparently the answer is yes: +> +> http://android.git.kernel.org/?p=platform/packages/apps/Email.git;a=commit;h=275b89d96949de6544c7bca999e241f659cf18b3 +> +> fixes the bug. I'm not sure if there was a release while it did it +> before it stopped doing it. I'm not seeing any of the requests in our +> logs, but could be missing it, or people are more likely to use the +> gmail app for gmail than the email app. +> +> Brandon +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22784.mbox:2,S new file mode 100644 index 00000000..35393ad5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22784.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From bruno.soares at digitro.com.br Wed Feb 9 02:39:19 2011 +To: imap-protocol@u.washington.edu +From: "Bruno M. Soares" +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +In-Reply-To: <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> +References: <4D5173F0.7030405@digitro.com.br> <2609.1297185090.628987@Sputnik> + <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> +Message-ID: <4D526ED7.7010501@digitro.com.br> + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22796.mbox:2,S new file mode 100644 index 00000000..f3f5a64f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22796.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From snowjn at aol.com Mon Oct 4 10:52:29 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard + "Push Email") Deficiency, Explanation? +In-Reply-To: <4CAA0F5C.7030009@lists.grepular.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> +Message-ID: <4CAA145D.1090101@aol.com> + +Mike Cardwell wrote: +> On 04/10/2010 18:18, Sabahattin Gucukoglu wrote: +> +> +>> Maybe my hubris got the better of me, but I didn't bargain for a complete surprise. Well, anyway, we know now why Apple does not implement IMAP IDLE in iOS. I've clearly been spending too much time around the IETF, to find Mr. Job's explanation to be completely incomprehensible. :-) +>> +>> (Please let me know if the Message/RFC822 part didn't come through right - thanks.) +>> +>> I want to ask anybody who feels strongly to the contrary to please not attack the sender (and the messenger either if you can help it :-) ). I guess I'm stuck waiting 15 minutes for new mail notifications, and running my battery down. I'm not forwarding my mail anywhere or running Exchange (or a clone). The latter, in particular, is a power-hungry option ... +>> +> +> This makes complete sense. In order to use IMAP Idle on a phone, it +> would have to keep a TCP connection open, and therefore a 3G connection +> open. There's a reason why phone makers advertise separate stand by, and +> call times for battery usage. If IMAP idle were being used, the phone +> would never enter stand by mode, and would eat the battery within a few +> hours. +> +I'm using the K9 client on my Sprint EVO. AFAIK, K9 is the only android +client that supports IDLE. I have 3 accounts on my phone. All have a +constant IDLE connection. I get easily 12-14 hours of battery life. I +plug it in when I get home, so that's plenty. + +(off topic) Using the GPS is what kills my battery. With constant GPS +usage, I can kill a battery in 3 hours. +> I considered building a system for Android that works the same way that +> push mail on the iPhone works. When an email comes in, an SMS would be +> sent to the phone. That SMS would be hidden from the user, but would +> advise the phone to wake up and poll for new email. The only problem is, +> it costs money to send SMS's. +> +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22801.mbox:2,S new file mode 100644 index 00000000..588fc39c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22801.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From imap-protocol at lists.grepular.com Sun Aug 29 12:04:01 2010 +To: imap-protocol@u.washington.edu +From: Mike Cardwell +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life support + and ambiguity questions +In-Reply-To: +References: <4C7A2AB6.6070405@lists.grepular.com> + +Message-ID: <4C7AAF21.5040702@lists.grepular.com> + +On 29/08/2010 19:31, Mark Crispin wrote: + +> Bottom line: +> +> As a server implementor, you can disregard section 5.5 entirely, with the +> exception that you MUST NOT clear the command input buffer after reading a +> command (because there may be a pipelined command following the current +> command). Section 5.5 should be considered to be solely implementation +> advice for clients that wish to pipeline. + +Excellent. You just gave me the exact answer I was hoping for. Thanks. + +-- +Mike Cardwell - Perl/Java/Web developer, Linux admin, Email admin +Read my tech Blog - https://secure.grepular.com/ +Follow me on Twitter - http://twitter.com/mickeyc +Hire me - http://cardwellit.com/ http://uk.linkedin.com/in/mikecardwell + diff --git a/demo/ermis-f/imap-protocol/cur/1600095065.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095065.22804.mbox:2,S new file mode 100644 index 00000000..0ae50171 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095065.22804.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From bill.shannon at sun.com Fri Jul 9 18:06:09 2010 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +Message-ID: <4C37C781.5060700@sun.com> + +I sent this once a few days ago, but it's not showing up in the archives, so... + +Just to make sure I'm interpreting it correctly... + +The spec says: + + ENVELOPE + A parenthesized list that describes the envelope structure of a + message. This is computed by the server by parsing the + [RFC-2822] header into the component parts, defaulting various + fields as necessary. + + The fields of the envelope structure are in the following + order: date, subject, from, sender, reply-to, to, cc, bcc, + in-reply-to, and message-id. The date, subject, in-reply-to, + and message-id fields are strings. + +The subject field may include MIME encoded words (because the IMAP protocol +is ASCII) and may contain CRLF as a result of line folding in the original +MIME header (because the subject field may be a literal that may contain +CRLF), correct? + +The phrase "parsing the header into component parts" isn't meant to suggest +that the server must remove any of these artifacts from the subject, right? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22595.mbox:2,S new file mode 100644 index 00000000..49606ff6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22595.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From echappa at gmx.com Fri Mar 13 12:28:39 2015 +To: imap-protocol@u.washington.edu +From: Eduardo Chappa +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: <20150313164848.24608.qmail@ary.lan> +References: <20150313164848.24608.qmail@ary.lan> +Message-ID: + +On Fri, 13 Mar 2015, John Levine wrote: + +> Many people imagine that an invalid DKIM signature says something bad +> about a message. They are mistaken, no matter how often they repeat +> that misconception. There is nothing in DKIM that says anyone should +> remove signatures from incoming mail for any reason. If a signature +> doesn't validate, the correct thing to do is to ignore it. + +The point of a signature is to have a way of verification of the message +as sent and received. If "you" received a message from your boss saying "I +approve that you spend ten thousand dollars in the company party" and the +signature of such message would not validate, that would certainly not be +a situation where "you" would say "the correct thing to do is to ignore +it." Let me put it this way. There is a purpose in the signature, and if +it does not validate, that is serious matter. When it is broken by +software (even if the intentions of that software are good) that is not +good either. I know IMAP servers can break S/MIME signatures in messages +with attachments by adding a trailing CRLF to messages, or some mailing +list processors can fold lines and break S/MIME signed messages. Alpine +(my MUA) goes to greater lengths to validate signatures than any other MUA +that I know of. + +The original message is correct. The mailing list manager modifies +messages sent to this list. As a general point, that is not good; in +some/many particular situations, it is probably irrelevant, but certainly +not to be always brushed off as "the correct thing to do is to ignore it." +There is a point as to why that standard was invented. That should be +considered too, even if it is not important for your particular case. + +-- +Eduardo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22641.mbox:2,S new file mode 100644 index 00000000..2948cdab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22641.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From brong at fastmail.fm Thu Mar 20 16:35:22 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <2bd1c873-e62e-42ec-b583-196bb619de04@gulbrandsen.priv.no> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> + <2bd1c873-e62e-42ec-b583-196bb619de04@gulbrandsen.priv.no> +Message-ID: <1395358522.3266.97028905.61DC5FED@webmail.messagingengine.com> + +On Fri, Mar 21, 2014, at 06:28 AM, Arnt Gulbrandsen wrote: +> On Thursday, March 20, 2014 7:48:51 PM CEST, Bron Gondwana wrote: +> > I agree that two step is probably enough - one for upload, and one for +> > "send existing message". +> +> I too like two steps better than either one or three. But I haven't a +> strong argument why two is better than one. + +I don't have a particularly strong argument, but... + +It feels better to be able to save an intermediate message that you don't +intend to send in exactly the same way that you save one that you DO intend +to send. I means we don't have to re-implement all of APPEND. Just create +a message on the server using whatever method you want to use, and then +send the SUBMIT command to send it. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22688.mbox:2,S new file mode 100644 index 00000000..e15eddcc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22688.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From dave at cridland.net Mon Jan 28 14:38:22 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Courier bug(?) +In-Reply-To: <20130128145843.Horde._nr6MiWpMYirI_cZr53iQQ8@bigworm.curecanti.org> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + + <51015F8D.8020300@isode.com> + <9ade1aaa-6d67-443b-8fa3-43f00486d4cb@flaska.net> + <20130128145843.Horde._nr6MiWpMYirI_cZr53iQQ8@bigworm.curecanti.org> +Message-ID: + +On 28 Jan 2013 22:00, "Michael M Slusarz" wrote: +> IMHO, a more sensible approach for a disconnected client, rather than +trying to keep a sequence->UID map (ugh) + +No, really, this is a sensible thing to be doing for a number of reasons. + +Firstly, it'll help if you don't get a UID, and secondly there's all sorts +of interesting tricks you can do if you know the UID/seq mapping. + +Not least QRESYNC more or less requires you to, if you want it to be +efficient in telling you what's been expunged. + +> Only if these 3 items occur does a client need some other way of linking +the flag changes with an UID. Since this event should occur only extremely +rarely, if at all, one appropriate way of correctly syncing the local cache +would be to: +> +> 1. Ignore the returned FETCH information for local caching purposes. +> 2. Immediately reopen the mailbox. (The client's existing +CONDSTORE/QRESYNC will ensure that the mailbox is correctly sync'd). + +Yikes. + +Well, that'll work, of course, but it's pretty inefficient. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22701.mbox:2,S new file mode 100644 index 00000000..36330cb6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22701.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From tss at iki.fi Tue Nov 27 02:38:30 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <1354010952.13681.140661158661065.2086C60B@webmail.messagingengine.com> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + + <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> + + <1354010952.13681.140661158661065.2086C60B@webmail.messagingengine.com> +Message-ID: + +On 27.11.2012, at 12.09, Bron Gondwana wrote: + +> I like QRESYNC a lot more now that I've implemented the Cyrus 2.4+ replication +> protocol on top of it. It basically uses the same logic, but with full +> information required to replicate the exact mailbox state at the far end. It +> means fast and cheap resync. + +Dovecot is using the same underlying qresync features as well, although not qresync itself. + +> I'm really tempted to try to write it up as a more general protocol for +> synchronising IMAP message stores from any vendor. There's some capabilities +> you need which can't be expressed over regular IMAP - for example appending +> with a specific new UID rather than the next available. + +I think that's the only one that is pretty much required, for both APPEND and COPY. Although exposing this to regular users could become troublesome. I know Dovecot doesn't handle it very nicely when you run out of UIDs. (I used to try to handle it a long time ago by giving new UIDs to messages, but I haven't tested it for ages now. And that wouldn't really work with the newer mailbox formats. So I guess simply failing to add any new messages until mailbox is deleted would work too. But then I'd need to support deleting INBOX..) + +I'm also planning on adding support for syncing from regular IMAP server to Dovecot, mainly for migration purposes. It would still need to be at least partially two-way sync. I've been wondering if I should try to sync the UIDs on the IMAP server side as well. It could be done with enough COPY+EXPUNGE commands for a single message. :) + +> I also wrote up a long thing to the Cyrus mailing list many years ago about +> "UID Promotion" - basically if the two ends had ever had different messages +> with the same UID, you need to give new UIDs to BOTH messages which are +> higher than any ever seen by any client - generating an EXPUNGE and two +> APPEND events at each end - to come entirely back into sync. + +I implemented this with "COPY " + "EXPUNGE ". Much simpler than my original plan to implement "CHANGEUID " :) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22743.mbox:2,S new file mode 100644 index 00000000..059b3b7a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22743.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Tue Mar 20 16:07:09 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> + <17068.1332235633.171765@puncture> + + +Message-ID: <5EC476DF-A92A-424F-97D9-0A3905F35B80@iki.fi> + +On 21.3.2012, at 0.06, Brandon Long wrote: + +> We've seen some clients which will always request information about the last message in the folder if you give the same EXISTS. We issue duplicate EXISTS every N minutes on IDLE as a keepalive for the connection (to keep various NATs from closing the connection), but we only have to deal with the small number of extra FETCHes every N minutes. (we tried to use an untagged * XKEEPALIVE response, but some clients hang-up when they get an untagged response they don't understand). + +Dovecot sends: + +* OK Still here.. + +I've never heard of any complaints with it (other than some mobile users wanting to disable it to save battery life). I think UW-IMAP sends the same. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22756.mbox:2,S new file mode 100644 index 00000000..93dbac24 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22756.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From guenther+imap at sendmail.com Sun Nov 6 14:02:57 2011 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: + <20111106213124.GA27889@brong.net> + +Message-ID: + +On Sun, 6 Nov 2011, Petite Abeille wrote: +... +> One more minor clarification... +> +> In the example above, both dovecot and cyrus suffix the response with a +> bit of free form text: +> +> * OK [UNSEEN 123] First unseen. <- "First unseen." +> * OK [UNSEEN 123] Ok <- "Ok" +... +> Is that trailing text mandatory? It doesn't seem to add much of anything +> functional to the response. Can the response dispense with it? +> +> * OK [UNSEEN 123] + +Live by the ABNF: + +response-data = "*" SP (resp-cond-state / resp-cond-bye / + mailbox-data / message-data / capability-data) CRLF +resp-cond-state = ("OK" / "NO" / "BAD") SP resp-text +resp-text = ["[" resp-text-code "]" SP] text +text = 1*TEXT-CHAR + +Ergo, the close bracket must be followed by a space and at least one other +character before the CRLF. If it fails to do that, then it's not actually +a response code! + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22759.mbox:2,S new file mode 100644 index 00000000..f1126507 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22759.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From brong at fastmail.fm Sun Oct 23 01:04:49 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: +References: + <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi> + <20111022200153.GA3907@brong.net> + +Message-ID: <20111023080449.GA10954@brong.net> + +On Sat, Oct 22, 2011 at 01:56:55PM -0700, Brandon Long wrote: +> I think we have only one deliberate break from the spec, and that's that we +> don't do substring searches. + +I believe your envelopes are bogus too, and we had another issue which I +should see if I can dig up... + +Oh, yeah: + +====================== +The bug is with gmail. + +http://tools.ietf.org/html/rfc3501#section-4.3.1 + + 8-bit textual and binary mail is supported through the use of a + [MIME-IMB] content transfer encoding. IMAP4rev1 implementations MAY + transmit 8-bit or multi-octet characters in literals, but SHOULD do + so only when the [CHARSET] is identified. + +Basically, they can transfer that as utf-8, but only if they send it as +a literal. Just quoting the string is bogus. +====================== + +You send 8bit stuff inside quotes. + +> I know there are other issues, like we sometimes don't get the size quite +> right (comes of storing the message with just LF line endings and having to +> convert to CRLF), but mostly we tend to bend the spec but not break them... +> matching the IMAP mailbox model with the gmail one is tough. + +Yeah, that's a bit messy. Any particular reason, other than saving a +few bytes? + +> I tried running Timo's tests against gmail, but its pretty hard to debug +> failures, and the set of tests isn't quite wide or separable. Its somewhere +> on the todo list to work that again. + +Improving the tests would be nice too. We have our own thing, cassandane, +which does a whole test harness for running multiple Cyrus instances and +testing things like replication and our "murder" clustering thing too. + +> I would say that our biggest issue with IMAP is that the amount of resources +> required for some of the commands is really high, which is hard to optimize +> for or to fairly share resources. + +body search is the real killer for us, everything else is pretty lightweight. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22768.mbox:2,S new file mode 100644 index 00000000..53d6b164 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22768.mbox:2,S @@ -0,0 +1,108 @@ +MBOX-Line: From Lynn at BusCom.net Sun Jun 5 21:51:16 2011 +To: imap-protocol@u.washington.edu +From: "Lynn W. Taylor" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> +References: <4DEBB242.2090200@BusCom.net>, + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu>, + <4DEBDFF5.9000301@BusCom.net> + <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> +Message-ID: <4DEC5CC4.5010507@BusCom.net> + +I think you read me saying "this isn't my first time at the rodeo" and +think that I actually enjoyed the rodeo. + +I expect it to be slow, and grueling, and difficult, and worth doing. + +I firmly believe the rule that states "everything takes longer than you +expect, especially when you take this rule into account." + +... and I very much appreciate things like your comment about spaces. +That kind of shared pain is worth its' weight in gold. + +On 6/5/2011 5:17 PM, David Harris wrote: +> On 5 Jun 2011 at 12:58, Lynn W. Taylor wrote: +> +>> Search (#10) is the one that worries the most. Some of that is the same +>> reason that COPY doesn't bother me. Glad it can be left to last, and +>> wish it could be left out. +> Lynn, first off, good luck with this. I admire your confidence and +> enthusiasm, but I suspect you will find the job quite a bit bigger than +> you expect. +> +> To me, IMAP seems as much a matter of mindset as it is of code - you +> *must* think in much the same the way the people who have written +> the IMAP RFCs over the years have thought, or you will inevitably fall +> afoul of details that might not at first glance be obvious - a good +> example, for instance, is that spaces are syntactically crucial +> throughout much of the IMAP command structure (especially in +> BODYSTRUCTURE): for many programmers accustomed to other +> environments, spaces are not much more than decoration, but you +> can't think this way in IMAP. +> +> The absolute golden rule of IMAP is "read the BNF". It can be tortuous, +> but in over a decade of working with IMAP (and I do not consider +> myself in any way an expert or a model for others), I have never found +> a case where spending the time working my way through the BNF +> maze did not answer a syntactic question, however thorny it might +> have seemed. +> +> Pete's list was a very, very good one - I found myself nodding in +> memory and agreement as I read through it. I won't labour the point by +> repeating things he has said, but I would make three observations: +> +> 1: He's absolutely right about the parser. If you don't have a robust, +> high-quality RFC2822 and RFC2045 (MIME) parser, you're shot before +> you start. +> +> 2: FETCH is full of traps, even if they don't appear to be traps at first +> glance: the part that gave me the most trouble was partial fetches of +> arbitrary data: many clients will use this as a "chunking" mechanism, +> but it creates a serious state problem of what you keep between +> commands on the server side (imagine that you have a 20MB +> message and the client wants to retrieve a MIME sub-part from the +> middle of it 1K at a time: if you re-parse and re-extract the sub-part on +> each chunk, you'll absolutely kill your server's performance - you need +> to find some way of caching the sub-part so you can easily return +> subsequent requests for the next chunk). +> +> 3: Overall, IMAP part numbering was far and away the hardest thing I +> had to do with the protocol. In my case, I had well-established parsing +> and message management and I had to shoe-horn IMAP's slightly +> idiosyncratic part numbering (I'm sure I'll get a lecture for that +> statement, but I'm allowed my opinions) into it. Because the part +> numbering is implied, not explicit, it's absolutely crucial that you +> understand how it works, and how your parsing engine is going to +> cope with it. +> +>> I'm not in a position to specify clients. I'll likely do my initial +>> testing with Thunderbird unless someone warns me that it's a poor choice. +> > From quietly reading this list for many years, I suspect the consensus +> you will get will probably be something along the lines of "all clients are +> poor choices", although I personally think that's a bit harsh. I'd test +> against the clients most likely to be used with your server and be ready +> to accommodate them as required (some accommodation is almost +> inevitable, unfortunately). +> +> Good luck! +> +> Cheers! +> +> -- David -- +> +> ------------------ David Harris -+- Pegasus Mail ---------------------- +> Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz +> Phone: +64 3 453-6880 | Fax: +64 3 453-6612 +> +> Seen on the menu of a Swiss Restaurant: +> "Our wines leave you nothing to hope for." +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22772.mbox:2,S new file mode 100644 index 00000000..f6ac9b1f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22772.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From tss at iki.fi Wed May 18 01:52:27 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110518100807.29d4b72c@arbre.eng.oslo.osa> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + <20110518100807.29d4b72c@arbre.eng.oslo.osa> +Message-ID: + +On 18.5.2011, at 11.08, Bron Gondwana wrote: + +> On Wed, 18 May 2011 01:16:45 -0600 +> Michael M Slusarz wrote: +> +> (Terminology: keyword, label, flag - joy) +> +>> 1. Implement UTF7-IMAP (or similar) storage of keywords. +>> Pros: Would allow keyword & label information to be kept in a single +>> location; all MUAs should be able to easily adapt since they should +>> already have code necessary to do UTF7-IMAP conversions +>> Cons: Haven't thought about it fully, but doesn't seem like it could +>> be made to be backward compatible with RFC 3501 keywords. Doesn't +>> solve problem of having one keyword meaning the same thing across all +>> mailboxes. +> +> Lack of backwards compatibility kills this one out the gate. You can't +> break existing clients and servers. + +I think this is the only way to make it completely backwards compatible with both clients and servers. mUTF7 wouldn't work because keywords are case-insensitive, but something else would, as long as servers allow long enough keywords. The encoded keywords could begin with some yet another prefix character, such as #. And it could be required that it's used only when non-atom-chars are in the name. So it would be possible to set, for example: + + - $Spam + - Spam + - Work + - #121h5jh125jh12fjs2 + +Or possibly assume that # (or something else) is so rarely used, that the whole keyword wouldn't have to be encoded: + + - Tax#20Forms#20#282011#29 + +That would still be readable with old clients that show keywords as-is, and wouldn't require anything special from server side. diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22784.mbox:2,S new file mode 100644 index 00000000..f0dbdf85 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22784.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From dave at cridland.net Wed Feb 9 03:00:40 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +References: <4D5173F0.7030405@digitro.com.br> <2609.1297185090.628987@Sputnik> + <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> + <4D526ED7.7010501@digitro.com.br> +Message-ID: <9734454602.981716440@cridland.net> + +------- Original message ------- +> From: Bruno M. Soares +> To: tss@iki.fi +> Cc: imap-protocol@u.washington.edu +> Sent: 9/2/'11, 10:39 +> +> I'm using inflateInit2 with windowBits -15, but the result is a little confuse: +> +> *? (C \Dea ^M +> 5 4)t ha5nFETYR +> (k^M + +Looks to me like the backrefs are broken, so just to check, you're calling inflateinit2 once, then just inflate? + +Dave. diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22796.mbox:2,S new file mode 100644 index 00000000..8231c70d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22796.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 10:56:08 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAA0F5C.7030009@lists.grepular.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> +Message-ID: + +On Mon, 4 Oct 2010, Mike Cardwell wrote: +> This makes complete sense. In order to use IMAP Idle on a phone, it +> would have to keep a TCP connection open, and therefore a 3G connection +> open. + +Say what? + +Is that a UMTS requirement? It certainly is not a TCP requirement. TCP +is built on IP which is completely datagram. I have built on-demand +networks which shut down until signaled back on, and then happily resumed +all the active TCP sessions even though the "network connection" had been +powered off for days. The same signaling mechanism that is used for SMS +can be used to restart the mobile device radio. + +That is how push works on BlackBerry. + +The real problem with IDLE is that it is NAT-unfriendly. Most NAT boxes +drop the mapping after a period of client inactivity, and send a TCP RST +to the server if the server resumes activity before the client. Most +users don't see this, since if the client resumes activity first the same +mapping is created and no RST is sent. + +No desktop client should ever use IDLE; it's unnecessary unless you using +radio. Unfortunately, most desktop clients do implement IDLE, and then +any user who uses that client behind NAT complains about losing their +connection to the server. A certain client that shall go unnamed (but for +which you should look out) just stops announcing new mail and shows a very +inconspicuous icon that indicates that there isn't a connection to the +server. + +That, in turn, leads either to removing IDLE from the server or doing a +workaround in IDLE that makes IDLE pointless. + +Notwithstanding any of the above, I stand by my previous statement. It's +a waste of time and effort to worry overmuch about iOS4. Android is the +way forward. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22801.mbox:2,S new file mode 100644 index 00000000..9d3bce99 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22801.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Mon Aug 30 01:22:49 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life + support and ambiguity questions +In-Reply-To: +References: <4C7A2AB6.6070405@lists.grepular.com> + +Message-ID: <2721.1283156569.612563@puncture> + +On Sun Aug 29 19:31:58 2010, Mark Crispin wrote: +> Few, if any, IMAP servers will execute commands out of order. +> +> +I don't know of any for certain, but if anyone's implementation does, +it'll be Arnt/AMS's. + +> As a server implementor, you can disregard section 5.5 entirely, +> with the +> exception that you MUST NOT clear the command input buffer after +> reading a +> command (because there may be a pipelined command following the +> current +> command). Section 5.5 should be considered to be solely +> implementation +> advice for clients that wish to pipeline. + +FWIW, my client can cope with out-of-order execution. My ACAP server +does ACAP commands out of order (where the protocol support is +simpler). + +The only case where it would be useful is SEARCH - searches can take +time on larger mailboxes, and being able to execute a simple FETCH of +a bodypart during the search would be beneficial. To allow for this, +Polymer assumes that searches as a whole are executed concurrently, +in the absence of ESEARCH - ESEARCH includes a tag in the results, +effectively mimicking ACAP's tagged intermediate responses. Polymer +uses SEARCH quite extensively, especially if filtered views are in +heavy use, and one of the reasons I never put in multiple views of a +single mailbox is that the SEARCHes in one view would simply stall +the other view. + +(I imagine this also applies to THREAD and SORT). + +As Mark says, in most implementations the bottleneck would be such +that servers are unlikely to be able to do much, but I suspect that +there are some cases where it would be possible, in some servers. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22804.mbox:2,S new file mode 100644 index 00000000..5985a774 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22804.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Fri Jul 9 18:18:15 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: <4C37C781.5060700@sun.com> +References: <4C37C781.5060700@sun.com> +Message-ID: + +On 10.7.2010, at 2.06, Bill Shannon wrote: + +> ENVELOPE +.. +> The subject field may include MIME encoded words (because the IMAP protocol +> is ASCII) + +Yes. + +> and may contain CRLF as a result of line folding in the original +> MIME header (because the subject field may be a literal that may contain +> CRLF), correct? + +Yes, but my server (and many others) are converting all whitespace to a single space (tabs, folds, multiple spaces, etc). I can't exactly remember why, though. Maybe I implemented it only because others did that too.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095066.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095066.22807.mbox:2,S new file mode 100644 index 00000000..8ae83854 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095066.22807.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Tue Jun 1 15:38:42 2010 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Persistence of UIDs across moves +Message-ID: <4C058BF2.22215.5F102940@David.Harris.pmail.gen.nz> + +Hi all, + +I think the answer to this is reasonably obious, but there's a slight +ambiguity in RFC3501 that makes me want to check for sure. + +Here's the scenario: + +* User moves a message from inbox to another mailbox. + +* User moves the same message from the other mailbox back to the + inbox. + +The question is, does IMAP expect that the message will have the +same UID after being moved back into the inbox? + +To me, the answer to this question looks like it MUST be "no": there +are too many scenarios where it becomes difficult or impossible, most +notably if the UIDVALIDITY on inbox changes between the moves. +There's also the fact that you'd have to have some kind of means of +keeping a list of all the UIDs the message ever had in all the +mailboxes it resided in at any time. In my view, when the message +moves back to the inbox, it is effectively a different message. + +The "ambiguity" I'm referring to in RFC3501 is in section 2.3.1.1, note +4: + +-------------------------- Cut here ---------------------------- + 4) The combination of mailbox name, UIDVALIDITY, and UID + must refer to a single immutable message on that server + forever. +-------------------------- Cut here ---------------------------- + +It is possible to read this as meaning that once any specific message +has been assigned a UID in a folder, it should always have that UID +any time it is replaced in that folder, until such time as UIDVALIDITY +changes. + +I'd appreciate guidance on this. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Real newspaper headlines from US Papers: + "Milk drinkers are turning to powder". + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22595.mbox:2,S new file mode 100644 index 00000000..a78d18f0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22595.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From dave at cridland.net Fri Mar 13 13:32:48 2015 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: +References: <20150313164848.24608.qmail@ary.lan> + +Message-ID: + +On 13 March 2015 at 19:28, Eduardo Chappa wrote: + +> On Fri, 13 Mar 2015, John Levine wrote: +> +> Many people imagine that an invalid DKIM signature says something bad +>> about a message. They are mistaken, no matter how often they repeat that +>> misconception. There is nothing in DKIM that says anyone should remove +>> signatures from incoming mail for any reason. If a signature doesn't +>> validate, the correct thing to do is to ignore it. +>> +> +> The point of a signature is to have a way of verification of the message +> as sent and received. If "you" received a message from your boss saying "I +> approve that you spend ten thousand dollars in the company party" and the +> signature of such message would not validate, that would certainly not be a +> situation where "you" would say "the correct thing to do is to ignore it." +> Let me put it this way. There is a purpose in the signature, and if it does +> not validate, that is serious matter. When it is broken by software (even +> if the intentions of that software are good) that is not good either. I +> know IMAP servers can break S/MIME signatures in messages with attachments +> by adding a trailing CRLF to messages, or some mailing list processors can +> fold lines and break S/MIME signed messages. Alpine (my MUA) goes to +> greater lengths to validate signatures than any other MUA that I know of. +> +> +John's point was, as I read it, that given the choices are either that the +mailing list strips the DKIM signature, or else the MUA ignores an invalid +DKIM signature (and treats it as unsigned), they are equivalent and it's +not worth worrying about. + +That's to say, I didn't read his message as saying you ignore the fact it +doesn't validate, or that you ignore the message, or any number of other +obviously wrong things. + +Just treat is as unsigned, with all that this implies. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22641.mbox:2,S new file mode 100644 index 00000000..309105ca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22641.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From jkt at flaska.net Thu Mar 20 18:11:03 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> +Message-ID: <39b431a9-93a6-42b1-9cbe-5788d5958f43@flaska.net> + +On Thursday, 20 March 2014 19:48:51 CEST, Bron Gondwana wrote: +> But now we're proposing a state transition from "UNSENT" to "SENT" - and +I +> strongly believe that rates a readable change on the server, either a +flag +> or a standard annotation name. All I think it needs is a transition from +> "no flag present" to "\Sent" flag present, or $Sent if \Sent is +considered +> too impossible to add at this stage of the game. + +Any particular reason why sticking with $Submitted [1] is not OK? + +[1] http://tools.ietf.org/html/rfc5550#section-5.10 + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22688.mbox:2,S new file mode 100644 index 00000000..367585cd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22688.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From jkt at flaska.net Mon Jan 28 16:07:59 2013 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Courier =?iso-8859-1?Q?bug(=3F)?= +In-Reply-To: <20130128145843.Horde._nr6MiWpMYirI_cZr53iQQ8@bigworm.curecanti.org> +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + + <51015F8D.8020300@isode.com> + <9ade1aaa-6d67-443b-8fa3-43f00486d4cb@flaska.net> + <20130128145843.Horde._nr6MiWpMYirI_cZr53iQQ8@bigworm.curecanti.org> +Message-ID: + +On Monday, 28 January 2013 22:58:43 CEST, Michael M Slusarz wrote: +> rather than trying to keep a sequence->UID map (ugh) + +If you maintain any sort of persistent cache, you want to remove obsolete items from there. Prior to QRESYNC, the only way a server could tell you about expunges was via, well, the EXPUNGE response which uses sequence numbers. This means that you either don't have message data cached locally, or you absolutely have to have uid->seq mapping for the full range of messages which you have in your cache. If you don't have that, you don't know whether the expunge the server has just told you refers to something you have or whether it can be ignored. + +You can certainly make optimizations like speculating that expunges will likely happen at the end of the UID range. The question is whether it is worth the effort in presence of ESEARCH and QRESYNC. There are other reasons which speak heavily in favor of maintaining the full mapping at all times; for example in Trojita, supporting the THREAD command without that would be rather complex (you want to work with UIDs to cache that infromation across reconnects etc etc etc). + +And just for completeness, what I spoke about was *maintenance* of the full seq->UID mapping, not fetching it all the time. There are ways of updating the mapping since the last time with only minimal traffic in most common situations -- and as I tried to show in the other thread, UIDNEXT is vital for them. + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22701.mbox:2,S new file mode 100644 index 00000000..6fa805a2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22701.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From jkt at flaska.net Tue Nov 27 06:39:59 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + + <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> +Message-ID: + +On Monday, 26 November 2012 23:57:21 CEST, Michael M Slusarz wrote: +>> This is essentially trying to turn IMAP into a more HTTP like protocol. +> +> Not necessarily a bad thing. It would be fantastic if there was +> an option to send "quick" commands that look like: +> +> AUTHENTICATE user password FETCH + +Just saying -- you could pipeline LOGIN/AUTHENTICATE, SELECT and FETCH already. The only downside is that you have wrong data in your socket's read queue iff the UIDVALIDITY has changed. And yes, the overhead of the initial capability checking, TLS negotiation and connection establishment is still there, of course. + +Cheers, +Jan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22743.mbox:2,S new file mode 100644 index 00000000..a18b67ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22743.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From barryleiba at computer.org Tue Mar 20 18:06:08 2012 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> + <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + +Message-ID: + +>>> In any case, for my humble purpose the set of messages is frozen upon a SELECT and +>>> is only ever updated upon a NOOP request. +>> +>> That's definitely wrong. +> +> Wrong in what sense? + +Wrong in that clients are never required to send NOOP commands, and +they expect to get updates at other times. The protocol actually +requires you to send these sorts of updates when ANY command is +received, modulo the specific situation with EXPUNGE. + +> As I see it, IMAP seems to imply a frozen set of messages, until either an EXISTS or +> EXPUNGE is observed. In my case, as timing is not critical, NOOP is the place where that +> observation happens as this seems to be the less troublesome spot to do so. + +IMAP implies no such thing at all. +That most clients send a lot of NOOP commands basically speaks to most +clients being inefficient users of IMAP. With a well written client +and an active user, you might never see NOOPs, and it's seriously +broken server behaviour to only update the message list when you see a +NOOP. + +Suppose, for example, that I were using a client that wants to poll +for new mail every 2 minutes, and only sends a NOOP when there's been +nothing else sent to the server for 2 minutes. My client uses UID +FETCH, so the EXPUNGE issue isn't a problem. Now, suppose I'm busy +sifting through and cleaning up old mail, so I'm constantly opening +messages and deciding whether to keep them in this mailbox, delete +them, or move/copy them elsewhere. So the client is sending a lot of +FETCH, STORE, and COPY commands, and sees no reason to send a NOOP. + +Suppose I'm doing this for something like an hour and a half, and +imagine my surprise when I stop to take a break for a few minutes, and +suddenly get notified of 90 minutes' worth of new mail. + +Please fix your server. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22756.mbox:2,S new file mode 100644 index 00000000..d2b89bc5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22756.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From lyndon at orthanc.ca Sun Nov 6 14:03:45 2011 +To: imap-protocol@u.washington.edu +From: VE6BBM/VE7TFX ) +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +Message-ID: + +> Is that trailing text mandatory? It doesn't seem to add much of anything functional to the response. Can the response dispense with it? + +The answer to this is in the grammar, and it's probably not quite the +answer you would expect. I encourage you to take the time to comb +through that grammar. It's the authoritative source for answers to +these sort of questions. (And the answer you want is in there.) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22759.mbox:2,S new file mode 100644 index 00000000..014b3ca6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22759.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From mrc+imap at panda.com Sun Oct 23 12:02:55 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] if anyone else wants to mock Apple's iSCREAM + server... +Message-ID: + +Try p03-imap.mail.me.com port 993 (SSL). + +Here is what I got: + +S: * OK iSCREAM ready to rumble (r1F3601+:25722) +C: . capability +S: * CAPABILITY nk11p03mm-iscream002.mac.com r1F3601+ XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN +S: . OK !! +C: . authenticate plain +S: . BAD Parse Error +S: BAD Parse Error + +I especially liked that final server reply; completely unsolicited and +with no tag. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22768.mbox:2,S new file mode 100644 index 00000000..2d01a541 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22768.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From brong at fastmail.fm Sun Jun 5 21:57:06 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <1307319659.7961.1459831005@webmail.messagingengine.com> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net> <4DEBBEC1.3080600@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> + <1307319659.7961.1459831005@webmail.messagingengine.com> +Message-ID: <20110606045706.GA6121@brong.net> + +On Mon, Jun 06, 2011 at 10:20:59AM +1000, Robert Mueller wrote: +> So one client might delete + expunge a message, but another connection +> won't see that expunge until they do a command that allows it to be +> seen. This can significantly affect how you design your internal state +> management, namely that when you expunge a message, you probably just +> want to mark it as expunged on disk and actually cleanup later, rather +> than removing it immediately from your mailbox state. This is useful +> longer term for things like QRESYNC as well. +> +> I'm sure Bron (cc'd) can make some comments on this as well, given the +> significant changes he made to cyrus to make this work correctly. + +Yes indeed. Cyrus was keeping an mmaped previous file (now unlinked) +around after every expunge - which was all well and good, but it meant +that flags got stale and modseqs were totally broken and things got +significantly odd. + +One comment I would definitely make, + +http://www.imapwiki.org/ImapTest + +Use it. There's nothing better than a test suite that can be used +to automatically test your implementation. If you find any tests +missing, write them yourself and push them back to Timo. We have +started a separate test suite called 'Cassandane' for testing Cyrus, +which is available at: + +http://git.cyrusimap.org/cassandane/ + +(git repository only) + +This is designed to test things that ImapTest realistically can't, by +running up instances of Cyrus (possibly multiple in replication or +murder (aggregation) configurations) - and then running tests and making +sure things are correct across all instances. + +Testing by hand with clients is great too, but if you have to do a test +by hand it won't catch regressions as easily, because you can't run every +test by hand for every change you make, or you'll never get anywhere. + +Finally - best of luck! I did consider writing my own IMAP server at one +point, but sanity prevailed and I decided to fix up Cyrus to do what we +needed instead. + +Regards, + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22772.mbox:2,S new file mode 100644 index 00000000..6cab7492 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22772.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From brong at fastmail.fm Wed May 18 02:15:37 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + <20110518100807.29d4b72c@arbre.eng.oslo.osa> + +Message-ID: <20110518111537.4d466dde@arbre.eng.oslo.osa> + +On Wed, 18 May 2011 11:52:27 +0300 +Timo Sirainen wrote: + +> I think this is the only way to make it completely backwards compatible with both clients and servers. mUTF7 wouldn't work because keywords are case-insensitive, but something else would, as long as servers allow long enough keywords. The encoded keywords could begin with some yet another prefix character, such as #. And it could be required that it's used only when non-atom-chars are in the name. So it would be possible to set, for example: +> +> - $Spam +> - Spam +> - Work +> - #121h5jh125jh12fjs2 +> +> Or possibly assume that # (or something else) is so rarely used, that the whole keyword wouldn't have to be encoded: +> +> - Tax#20Forms#20#282011#29 +> +> That would still be readable with old clients that show keywords as-is, and wouldn't require anything special from server side. + +Hmm... here's what we're setting for "the name of the folder the message +was deleted from" in our new web interface to allow "undelete" to work: + +xof-KRZGC43I xof-IFZGG2DJOZSQ xof-KNSW45BAJF2GK3LT + +MIME::Base32::encode($FlagFolderName); + +http://www.ietf.org/rfc/rfc3548.txt + +Base32 is case-insensitivity-safe, but better packing than base16. + +I think it's better to just base32 the entire string rather than trying +for partial encoding - you're still going to get case folding otherwise. + +So something like "if it starts with a # it's a base32 encoded UTF8 keyword" +would be fully flexible, and backwards compatible. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22784.mbox:2,S new file mode 100644 index 00000000..5a7dc8a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22784.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From bruno.soares at digitro.com.br Wed Feb 9 03:14:10 2011 +To: imap-protocol@u.washington.edu +From: "Bruno M. Soares" +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +In-Reply-To: <9734454602.981716440@cridland.net> +References: <4D5173F0.7030405@digitro.com.br> <2609.1297185090.628987@Sputnik> + <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> + <4D526ED7.7010501@digitro.com.br> + <9734454602.981716440@cridland.net> +Message-ID: <4D527702.3050302@digitro.com.br> + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22796.mbox:2,S new file mode 100644 index 00000000..2ce97cbc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22796.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 11:00:28 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAA145D.1090101@aol.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> <4CAA145D.1090101@aol.com> +Message-ID: + +On Mon, 4 Oct 2010, John Snow wrote: +> I'm using the K9 client on my Sprint EVO. AFAIK, K9 is the only android +> client that supports IDLE. I have 3 accounts on my phone. All have a +> constant IDLE connection. I get easily 12-14 hours of battery life. I +> plug it in when I get home, so that's plenty. + +Of course, SPRINT would be using EV-DO or WiMax, not UMTS. + +> (off topic) Using the GPS is what kills my battery. With constant GPS +> usage, I can kill a battery in 3 hours. + +I wonder if it's the GPS usage or the map updating? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22801.mbox:2,S new file mode 100644 index 00000000..ceb8a702 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22801.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From imap-protocol at lists.grepular.com Mon Aug 30 15:16:17 2010 +To: imap-protocol@u.washington.edu +From: Mike Cardwell +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life support + and ambiguity questions +In-Reply-To: <2721.1283156569.612563@puncture> +References: <4C7A2AB6.6070405@lists.grepular.com> + + <2721.1283156569.612563@puncture> +Message-ID: <4C7C2DB1.6020107@lists.grepular.com> + +On 30/08/2010 09:22, Dave Cridland wrote: + +> FWIW, my client can cope with out-of-order execution. My ACAP server +> does ACAP commands out of order (where the protocol support is simpler). + +I'd never heared of ACAP until you mentioned it in this email; even +though I've been running a CommuniGate Pro server for 4 years which +supports it... JOOI, what client implementations are there for ACAP? +Wondering if it's worth adding to my desirable feature list... + +-- +Mike Cardwell - Perl/Java/Web developer, Linux admin, Email admin +Read my tech Blog - https://secure.grepular.com/ +Follow me on Twitter - http://twitter.com/mickeyc +Hire me - http://cardwellit.com/ http://uk.linkedin.com/in/mikecardwell + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22804.mbox:2,S new file mode 100644 index 00000000..8578132a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22804.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Jul 9 18:32:52 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: +References: <4C37C781.5060700@sun.com> + +Message-ID: + +> Yes, but my server (and many others) are converting all whitespace to a +> single space (tabs, folds, multiple spaces, etc). I can't exactly +> remember why, though. Maybe I implemented it only because others did +> that too.. + +The '822 grammar production. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095067.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095067.22807.mbox:2,S new file mode 100644 index 00000000..52f1a9ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095067.22807.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 1 15:58:25 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Persistence of UIDs across moves +In-Reply-To: <4C058BF2.22215.5F102940@David.Harris.pmail.gen.nz> +References: <4C058BF2.22215.5F102940@David.Harris.pmail.gen.nz> +Message-ID: + +On Wed, 2 Jun 2010, David Harris wrote: +> * User moves a message from inbox to another mailbox. +> * User moves the same message from the other mailbox back to the +> inbox. +> The question is, does IMAP expect that the message will have the +> same UID after being moved back into the inbox? + +No. + +Once a message is expunged from a mailbox its UID is gone forever (at +least as long as the UIDVALIDITY last). + +Now, if the "move" was implemented as copy+delete WITHOUT expunging the +message in the source mailbox, then that message could be undeleted and +thus retain the same UID. But in this case, it wasn't "moved back" +(except perhaps in a users GUI); it was never expunged. + +However, that kind of "move" and "move back" would be a client-side +implementation. A server has no latitude to make that kind of decision. + +> It is possible to read this as meaning that once any specific message +> has been assigned a UID in a folder, it should always have that UID +> any time it is replaced in that folder, until such time as UIDVALIDITY +> changes. + +Fortunately, that reading is incorrect. + +Perhaps the text should have said "single immutable instance of a message" +instead of "single immutable message". + +The incorrect reading would make sense in a world with global UIDs. IMAP +does not have global UIDs. If it did, it would require the invalidation +of either the property of strict ascendency of UIDs or the property that +new messages always are appended to the mailbox sequence space (instead of +inserted). + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22595.mbox:2,S new file mode 100644 index 00000000..eb968885 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22595.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From johnl-imap at iecc.com Fri Mar 13 14:16:00 2015 +To: imap-protocol@u.washington.edu +From: John Levine +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: +Message-ID: <20150313211600.25485.qmail@ary.lan> + +>> The point of a signature is to have a way of verification of the message +>> as sent and received. If "you" received a message from your boss saying "I +>> approve that you spend ten thousand dollars in the company party" and the +>> signature of such message would not validate, that would certainly not be a +>> situation where "you" would say "the correct thing to do is to ignore it." + +RFC 6376 is quite clear about what you do with an invalid DKIM +signature -- you ignore it, as though the signature wasn't there at +all. We deliberately wrote it that way. + +It's fine to treat mail with valid signatures differently from mail +without valid signatures, but it's not fine to treat mail with an +invalid signature differently from mail with no signature. That's why +you shouldn't depend on lists to strip the signatures they break. + +I would have hoped that people interested enough in mail software to +be on this list would go to the effort to read and understand the +specs they implement. + +R's, +John + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22641.mbox:2,S new file mode 100644 index 00000000..4e67b59b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22641.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From brong at fastmail.fm Thu Mar 20 19:30:35 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <39b431a9-93a6-42b1-9cbe-5788d5958f43@flaska.net> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> + <39b431a9-93a6-42b1-9cbe-5788d5958f43@flaska.net> +Message-ID: <1395369035.8071.97071749.6F2A6445@webmail.messagingengine.com> + +On Fri, Mar 21, 2014, at 12:11 PM, Jan Kundr?t wrote: +> On Thursday, 20 March 2014 19:48:51 CEST, Bron Gondwana wrote: +> > But now we're proposing a state transition from "UNSENT" to "SENT" - and +> I +> > strongly believe that rates a readable change on the server, either a +> flag +> > or a standard annotation name. All I think it needs is a transition from +> > "no flag present" to "\Sent" flag present, or $Sent if \Sent is +> considered +> > too impossible to add at this stage of the game. +> +> Any particular reason why sticking with $Submitted [1] is not OK? +> +> [1] http://tools.ietf.org/html/rfc5550#section-5.10 + +No, you're right. Apart from the whole \ vs non \ flags issue [1]. + +Let's not confuse things with more flags. So define SUBMIT to: + +a) fail if $Submitted is set on the message +b) fail if $SubmitPending is NOT set on the message (you can append + with $SubmitPending set, so there's no round-trip cost) +c) add $Submitted on success +d) clear $SubmitPending on success + +(in that order I think, if you can't do it atomically - it's easier to + know that you need to clear $SubmitPending later than to know that + you ever planned to submit the message if there are no flags on it) + +Bron ( and yes, maybe I should actually re-read your draft, which + probably says exactly these things ) + + + +[1] personally, I wish there was no such thing as \ in flags, because + it means that SOME flag names aren't an atom, but there you go. + + + + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22688.mbox:2,S new file mode 100644 index 00000000..07cb283a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22688.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From slusarz at curecanti.org Wed Jan 30 10:12:51 2013 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] Re: Courier bug(?) +In-Reply-To: +References: <20130121144822.Horde.kbr5Y8IKwMlD1fH1Qun9hQ1@bigworm.curecanti.org> + + <1358846428.12608.2.camel@hurina> + + <51015F8D.8020300@isode.com> + <9ade1aaa-6d67-443b-8fa3-43f00486d4cb@flaska.net> + <20130128145843.Horde._nr6MiWpMYirI_cZr53iQQ8@bigworm.curecanti.org> + +Message-ID: <20130130111251.Horde.qK1Vnj9NDTc5P1ZhVgIUAA9@bigworm.curecanti.org> + +Quoting Dave Cridland : + +> On 28 Jan 2013 22:00, "Michael M Slusarz" wrote: +>> IMHO, a more sensible approach for a disconnected client, rather than +> trying to keep a sequence->UID map (ugh) +> +> No, really, this is a sensible thing to be doing for a number of reasons. +> +> Firstly, it'll help if you don't get a UID, and secondly there's all sorts +> of interesting tricks you can do if you know the UID/seq mapping. + +I'm sure that some clients see some benefit from these tricks, but +that certainly doesn't mean that all clients will. + +> Not least QRESYNC more or less requires you to, if you want it to be +> efficient in telling you what's been expunged. + +In practical usage, this is not true. We actually wrote all the code +to handle seq/UID mappings and use this information to populate the +4th argument to QRESYNC. And we discovered it was all a giant waste +of time. The effort in maintaining the mapping and producing the 4th +argument every time a mailbox was opened *far* outweighed any benefit +from obtaining more compact VANISHED responses. Mainly because any +user only has at most several hundred cached entries in any given +mailbox (even if that mailbox contains hundreds of thousands of +messages). So that code was ripped out almost immediately. + +With connected clients it might make sense since they have a full (or +mostly full) copy of the mailbox in the local cache. But with a +disconnected client and/or a client that implements a view/window +based interface to a mailbox, the number of cached entries will be +much closer to the size of the window rather than the size of the +mailbox (,as the mailbox size increases). YMMV. + +>> Only if these 3 items occur does a client need some other way of linking +> the flag changes with an UID. Since this event should occur only extremely +> rarely, if at all, one appropriate way of correctly syncing the local cache +> would be to: +>> +>> 1. Ignore the returned FETCH information for local caching purposes. +>> 2. Immediately reopen the mailbox. (The client's existing +> CONDSTORE/QRESYNC will ensure that the mailbox is correctly sync'd). +> +> Yikes. +> +> Well, that'll work, of course, but it's pretty inefficient. + +The inefficiency of this code is irrelevant since it is *NEVER* run. +I've yet to see a real-world example of an existing CONDSTORE/QRESYNC +server that even triggers this code. So the code is there to ensure +the spec is followed, but the optimization is to real-world usage, not +the black letter of the RFC. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22701.mbox:2,S new file mode 100644 index 00000000..5b11ab1d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22701.mbox:2,S @@ -0,0 +1,214 @@ +MBOX-Line: From jkt at flaska.net Tue Nov 27 07:50:57 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> +Message-ID: <441db95f-2452-4d0a-9688-ccb3df28fb3c@flaska.net> + +On Tuesday, 27 November 2012 01:32:24 CEST, Michael M Slusarz wrote: +> I still maintain that writing an API that requires advanced +> knowledge of IMAP is not that useful. Things like QRESYNC and +> LIST-STATUS can be entirely abstracted so a client coder does +> not need to know anything about them to take advantage of. + +Depends on who your "client coder" is. Yes, you can easily get your users a view of the mailbox and handle the whole IMAP complexity yourself, in your IMAP library -- I've done that and it works great. But it is important to realize that the user of your API is no longer an "IMAP client implementor" -- you are one, and you will have to deal with all of QRESYNC and LIST-STATUS inside your library which provides that nice IMAP-agnostic API to your users. + +Clearly, a layer of abstraction is a good thing here. + +> What happens when the server is upgraded and UTF-8 searching +> now works? The CAPABILITY string is exactly the same. But +> UTF-8 has been marked as a bad charset so it will still not be +> available. And what about those commands that have been +> determined to be broken previously in the session? It is +> reasonable to expect the CAPABILITY string to be the same +> between point releases of an IMAP server, but the server may +> have fixed the bug that was causing bad command behavior. + +If I were in your situation, I would probably create a simple script which will test the functionality of your IMAP server and instruct your administrators to run it whenever they update their IMAP servers, or even make an infrastructure to execute the tests "once in a while". That way, you would not have to wait for servers to adopt RESUME. + +With regards to the situation of talking to different server versions (thus exhibiting different bugs) behind the same DNS alias -- how often do you expect that to happen? Is that a configuration you have to support, and support efficiently, i.e. not falling back to the lowest common denominator among the servers' features? + +> I went ahead and setup some rough/quick benchmarking using +> current imapproxy behavior as a proxy for the SUSPEND behavior. +> In this benchmark, the server and client are on the same +> machine so network latency is assumed to be non-existent. The +> load on this machine is also non-existent (this test is the +> only active IMAP process; disk I/O is negligible). +> +> Login without resuming session (connecting to a Dovecot 2.1 server) +> +> C: 1 LOGIN [login credentials] +> S: 1 OK User logged in +> C: 2 CAPABILITY +> S: * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID +> ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS +> THREAD=ORDEREDSUBJECT MULTIAPPEND UNSELECT CHILDREN NAMESPACE +> UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH +> ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE +> ACL RIGHTS=texk +> S: 2 OK Capability completed. +> C: 3 ENABLE QRESYNC +> S: * ENABLED QRESYNC +> S: 3 OK Enabled. +> +> Average elapsed time: 0.087 seconds +> +> Login with resuming session: +> +> C: 1 LOGIN [login credentials] +> S: * OK [XPROXYREUSE] IMAP connection reused by squirrelmail-imap_proxy +> S: 1 OK User logged in +> +> Average elapsed time: 0.039 seconds +> +> Difference: 0.048 seconds (~120% improvement) + +Thanks for posting numbers. Now let's focus on possible issues with that. What are you measuring, exactly? Is that the total time your PHP script takes from the time it opens the TCP connection till parsing the last tagged OK? How much time is spent in your client's code which performs tokenization of the CAPABILITY response, i.e. one thing which you've already identified as a performance bottleneck? Can you make your CAPABILITY parsing faster? What about detailed traces showing *when* is the time really spent? + +What happens when you put the imapproxy outside of the measurement setup and talk directly to your IMAP daemon? + +I've done my own crude benchamrk on my laptop with Dovecot 2.1.9 (Gentoo) using PAM (backed by /etc/shadow with some "pretty recent" hash) and the difference between running the following two commands: + +a) time echo -en "2 LOGIN user password\r\n" | socat - TCP:localhost:imap + +b) time echo -en "1 CAPABILITY\r\n2 LOGIN user password\r\n3 CAPABILITY\r\n4 ENABLE QRESYNC\r\n5 NAMESPACE\r\n" | socat - TCP:localhost:imap + +...is indeed in the noise area -- for the first command which performs less work, bash's `time` builtin reports the following durations, in milliseconds: + +a) [25, 82, 56, 78, 53, 74, 66, 52, 59, 53, 82, 74, 63, 61] + +while for the other one, I get the following raw data: + +b) [66, 62, 64, 59, 63, 63, 74, 65, 54, 37, 32, 40, 32, 53, 57, 33] + +Which means that a's average is 62.7 ms with standard deviation of 14.7, while in b's case, the average runtime was 53.4 ms with standard deviation 13.5. It's a long time since my stats class, but it looks like neither Dovecot nor actual I/O performed over TCP are bottleneck here. + +Based on the above, I claim that when the following conditions are met: + +1) one uses pipelining, +2) the client-side parser takes negligible time, + +then the proposed extension will not save any measurable time. + +Now, 1) is possible -- these commands can be pipelined. What about #2? I took the liberty to add this particular benchmark to my client's test suite [2], the parsing takes 0.13ms (not 0.13s, but 130ns) when run on my laptop. The parser is a pretty high-level C++ code using Qt's QByteArray with no optimizaiton whatsoever aimed at reducing excess copying and what not. I'm sure that it can be optimized to take a fraction of that time, it's just that I cannot be bothered to optimize something which is not an issue. The actual data I'm parsing are visible in the test suite and represent a real-world output from Dovecot here. + +> Yes, but you cited to an e-mail message that said this should +> be the case. I hardly feel an IMAP implementer is going to +> take someone's opinion in an email as canon. +> +> If this shows up as an errata to RFC 5161, I would tend to +> agree with you. But it doesn't at this point. + +Errata #1365 [1], "held for document update", submitted in March 2008. I have a new draft version of RFC5162-bis in my INBOX and I'll make sure this gets in if it isn't there already. + +>> Right. Well, based on how my client works, I don't expect any +>> significant performance gains obtained through this proposal. +> +> Sure - just like IDLE is completely useless for disconnected +> clients. That doesn't make SUSPEND not very useful for at +> least some clients. + +(To clarify, a client which does not keep its connection active is not usually called a "disconnected client", AFAIK. That is usually meant to identify clients which often work without the network connection, but will happily use it when it's available.) + +What I'm saying here is that I suspect that your expectation of performance savings is based on your particular client's implementation details which make it inefficient when talking to current IMAP servers. As an example, let's take the CAPABILITY parsing/handling. + +Your first option is to suggest a replacement which elliminates it more or less altogether. My first option is to make your CAPABILITY handling fast enough so that RESUME is not needed. + +> A MOVE saves 30% performance off equivalent commands. SUSPEND, +> at least for a simple example, saves 120%. (And see below re: +> NOTIFY about something that CAN'T practically be done with +> current disconnected clients). + +I have two problems with this: + +1) The motivation behind MOVE was not to save performance. In addition, your 30% quote in your mail does not come with any measurement results, doesn't clarify whether you used pipelining or not, and does not mention where was that time actually spent. + +2) While I would welcome an extension of NOTIFY to notify me about events which have happened while I was offline, please note that there's nothing in your RESUME draft *and* the NOTIFY RFC actually mandating the server to remember the events since the last time. Remember, "will send updates as configured previously" is very different from "will do the same and also send updates on what has happened since that time". + +>> 1) You don't take the initial CAPABILITY into account, but you +>> re-request CAPABILITY after login. (You need the initial +>> capability to see whether the server supports RESUME at all.) +>> This will change the numbers quite a lot. +> +> What's the point of including benchmarking of the initial +> CAPABILITY? Both clients need to do this, so there is no +> difference - it is no more expensive for a SUSPEND client than +> a non-SUSPEND client. + +If you are citing "improvement in speed by 30%", you have to base this 30% on something. The usual approach is to base it on the total duration. + +> And one of the reasons that I designed the RESUME command as I +> did is precisely to address the second part of your comment: +> the need to potentially send CAPABILITY pre-login. From an +> client implementer's standpoint, it is quite likely that you +> DON'T need this CAPABILITY so that is an additional advantage. + +If you want to be strict, you need to parse CAPABILITY at least once per connection to now that you can actually send RESUME. + +> Let's assume that your client program has previously connected +> to a given IMAP server and executed a successful SUSPEND +> command. The next time it connects to the same IMAP server, it +> has no way of knowing whether that server is identical +> pre-authentication. However: +> +> 1. Since the previously connected server supports the SUSPEND +> command, and it is very likely (although not guaranteed) that +> the server hasn't changed in the time since the client last +> connected, it can be assumed to a high degree of probability +> that the server supports SUSPEND. + +Following that reasoning, you can easily "blindly" send ENABLE QRESYNC and LANGUAGE as well. Please be consistent -- either you allow that for none of (RESUME, ENABLE ..., LANGUAGE), or you allow that for all these. + +[...] + +> So a client supporting RESUME will likely save ANOTHER entire +> round-trip, so the 100%+ gain listed above is again shown to be +> a conservative estimate. + +If you're blindly sending RESUME, you can do the same with any other command shown so far (and including AUTHENTICATE). The risks are always the same (except what, maybe a kilobyte of wasted bandwidth in situations where "something has changed"? Who cares?) + +>> 3) Saving 600 bytes of transmitted data per connection is +>> noise compared to what an actual session typically transfers. +> +> A 50-100ms reduction in connection time is not noise. + +We have not established yet that these 50-100ms cannot be addressed by improving your client's code. + +> Mailbox listing is a very touchy spot for disconnected clients. +> Historically, a disconnected client is pretty much stuck with +> listing the mailboxes once with the understanding that if +> another client changes the mailbox structure there's not much +> we can do about it without allowing a user to manually refresh +> the mailbox list (or possibly doing something like polling the +> mailbox list at a given time interval). +> +> However, as Timo noted, SUSPEND potentially allows disconnected +> clients to take advantage of NOTIFY. + +I've mentioned it above -- there's nothing in the provided draft which makes it possible to use NOTIFY across sessions. Yep, I agree that it would be cool if it was possible *and* if someone actually implemented NOTIFY. But that's orthogonal to SUSPEND/RESUME. + +> Additionally, this behavior makes SUSPEND useful for connected +> clients if such client locally caches mailbox lists: a desktop +> client that opens a second or two faster due to the fact that +> LIST's don't need to be sent is a substantial UI improvement. +> +> In other words, SUSPEND brings real-world performance +> improvements and provides multiple features that are not +> possible with current IMAP protocol/extensions. + +You've lost me here -- surely this benefit depends on yet unwritten extension to NOTIFY which makes it work across sessions, right? + +With kind regards, +Jan + +[1] http://www.rfc-editor.org/errata_search.php?eid=1365 +[2] http://commits.kde.org/trojita/92ae247ab69121fc3e8c886fe8c0e2da3e1740f7 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22743.mbox:2,S new file mode 100644 index 00000000..011c0c8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22743.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 21 01:36:25 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + +Message-ID: <4F699309.1030300@gulbrandsen.priv.no> + +Barry answers Petite Abeille: +>> As I see it, IMAP seems to imply a frozen set of messages, until either an EXISTS or +>> EXPUNGE is observed. +.. +> IMAP implies no such thing at all. + +Uhm. The MSN foobar sort of does. Sort of. + +Of course, most servers and clients try to suppress the thought of MSNs, +so in the real world interoperability is aided by thinking more about +UIDs and less about MSNs. + +> That most clients send a lot of NOOP commands basically speaks to most +> clients being inefficient users of IMAP. With a well written client +> and an active user, you might never see NOOPs, and it's seriously +> broken server behaviour to only update the message list when you see a +> NOOP. + +I've seen many session traces without a single NOOP or CHECK. In fact, I +think the three clients I personally use all are NOOP-less. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22756.mbox:2,S new file mode 100644 index 00000000..fc4a3dfb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22756.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 6 14:06:23 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: + <20111106213124.GA27889@brong.net> + + +Message-ID: + + +On Nov 6, 2011, at 11:02 PM, Philip Guenther wrote: + +> Live by the ABNF: +> +> response-data = "*" SP (resp-cond-state / resp-cond-bye / +> mailbox-data / message-data / capability-data) CRLF +> resp-cond-state = ("OK" / "NO" / "BAD") SP resp-text +> resp-text = ["[" resp-text-code "]" SP] text +> text = 1*TEXT-CHAR + +Yes, I have been starring at this section and scratching my head... :) + +> Ergo, the close bracket must be followed by a space and at least one other +> character before the CRLF. If it fails to do that, then it's not actually +> a response code! + +Fair enough. Out of curiosity, what's the intended purpose of that trailing text? Does any actual IMAP clients care? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22759.mbox:2,S new file mode 100644 index 00000000..77519a2b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22759.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From aclark at ghoti.org Sun Oct 30 18:07:13 2011 +To: imap-protocol@u.washington.edu +From: Ashley Clark +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +Message-ID: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + +For a message with this body structure: + +3 uid fetch 1304 bodystructure +* 23 FETCH (UID 1304 BODYSTRUCTURE (("TEXT" "PLAIN" ("CHARSET" "UTF-8") NIL NIL "QUOTED-PRINTABLE" 1527 42 NIL NIL NIL)("TEXT" "HTML" ("CHARSET" "UTF-8") NIL NIL "QUOTED-PRINTABLE" 5510 85 NIL NIL NIL) "ALTERNATIVE" ("BOUNDARY" "372894113577999") NIL NIL)) +3 OK UID FETCH Completed + + +One server returns this for a UID FETCH BODY.PEEK[]<> + +4 uid fetch 1304 body.peek[2]<0.128> +* 23 FETCH (UID 1304 BODY[2]<3456> {128} + + +4 OK UID FETCH Completed + + +Note, the requested origin was 0, yet the returned origin was 3456 (which is the origin of the part in the whole message). + + +This same message when requested from another server implementation returns this: + +4 uid fetch 13281 body.peek[2]<0.128> +* 693 FETCH (UID 13281 BODY[2]<0> {128} + + +4 OK Fetch completed. + + +Here the origin in the server response matches the client's request. + + +Are one, none or both of these server implementations correct? + + +Thanks, +Ashley + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22768.mbox:2,S new file mode 100644 index 00000000..c1273e8e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22768.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From Lynn at BusCom.net Sun Jun 5 22:18:31 2011 +To: imap-protocol@u.washington.edu +From: "Lynn W. Taylor" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: +References: <4DEBB242.2090200@BusCom.net> + +Message-ID: <4DEC6327.60309@BusCom.net> + +My first bit of code ran successfully in 1969. It was on cards. + +I've learned a few important lessons since: + +"There are no stupid questions" except the ones that aren't asked, of +course. + +Whenever possible, ask someone whose been there. The good guys will share. + +Don't ignore "shared pain" -- always pay attention. + +I'm reading all of comments carefully and trying to figure out how best +to implement them. + +I've read through the RFC more than once, and it's hard to find a place +to start. + +-- Lynn + +On 6/5/2011 4:58 PM, Mark Crispin wrote: +> Finally, pat yourself on the back. You decided to ask for advice before +> you started implementing, instead of diving in, making all the newbie +> mistakes, and only then ask questions. You're already ahead of the game. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22772.mbox:2,S new file mode 100644 index 00000000..92cc44af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22772.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From blong at google.com Wed May 18 10:42:56 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> +Message-ID: + +On Wed, May 18, 2011 at 12:16 AM, Michael M Slusarz + wrote: +> Hi all, +> +> First time poster. ?Quick background: I am the primary author of IMP +> (http://www.horde.org/imp/) and the related Horde IMAP client library. ?Had +> a discussion a few weeks back with Timo on the dovecot list about some +> keyword issues, and he suggested I raise the topics on this list. +> +> That topic is handling of keywords. ?More specifically, it can be broken +> down into several parts (apologizes if I make the following discussion too +> basic - just want to make sure I am on the same page): +> +> 1. Allowing non-ASCII characters in keywords + +Note this is one of the main reasons we didn't map our labels to +keywords in the Gmail IMAP implementation. That, and the majority of +clients don't really expose keywords to the user in any real fashion. + +We do store keywords as labels which aren't visible in our web +interface, mostly because IMAP clients rarely used keywords to store +anything particularly user visible. + + + +> 3. New commands/response codes +> Pros: Works with old RFC 3501 servers. ?Would be able to handle issue of one +> keyword meaning the same thing across all mailboxes. +> Cons: As with all extensions, adds complexity and more commands to implement +> on the client side. + +And this was our eventual solution. We don't expect clients to +implement our extensions for this, but since IMAP has become the +defacto Gmail API, it became necessary to expose some Gmail specific +data over IMAP for non-traditional applications. + +http://code.google.com/apis/gmail/imap/#x-gm-labels + +So, we added X-GM-LABELS which is analogous to FLAGS and can be used +in SEARCH/FETCH/STORE in a similar way, and uses UTF7 ASTRINGs as +arguments. + +Obviously, this isn't backward compatible at all, but I may argue that +if the end-goal is to have real user-visible labels, then the current +keywords namespace is probably too cluttered to be able to actually +share keywords across clients. That could be solved by yet another +prefix, though. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22784.mbox:2,S new file mode 100644 index 00000000..515e7b71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22784.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From dave at cridland.net Wed Feb 9 03:26:29 2011 +To: imap-protocol@u.washington.edu +From: "Dave Cridland" +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +References: <4D5173F0.7030405@digitro.com.br> <2609.1297185090.628987@Sputnik> + <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> + <4D526ED7.7010501@digitro.com.br> + <9734454602.981716440@cridland.net> + <4D527702.3050302@digitro.com.br> +Message-ID: <6138318213.981717989@cridland.net> + +------- Original message ------- +> From: Bruno M. Soares +> To: dave@cridland.net +> Cc: tss@iki.fi, imap-protocol@u.washington.edu +> Sent: 9/2/'11, 11:14 +> +> Yes Dave, calling? "inflateInit2(&strm, -15);" once and later "inflate(&strm, Z_SYNC_FLUSH);" while(strm.avail_out == 0). + +The loop is a bit more complicated than that. When avail-out is 0, there's usually more data to be written. You need to wait for avail-in to be zero, and avail-oit to be non-zero. diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22796.mbox:2,S new file mode 100644 index 00000000..5487ff8e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22796.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From snowjn at aol.com Mon Oct 4 11:21:02 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> <4CAA145D.1090101@aol.com> + +Message-ID: <4CAA1B0E.3090203@aol.com> + +Mark Crispin wrote: +> On Mon, 4 Oct 2010, John Snow wrote: +>> I'm using the K9 client on my Sprint EVO. AFAIK, K9 is the only android +>> client that supports IDLE. I have 3 accounts on my phone. All have a +>> constant IDLE connection. I get easily 12-14 hours of battery life. I +>> plug it in when I get home, so that's plenty. +> +> Of course, SPRINT would be using EV-DO or WiMax, not UMTS. +In my case, it's all EV-DO. I'm not in range of any WiMax towers. +> +>> (off topic) Using the GPS is what kills my battery. With constant GPS +>> usage, I can kill a battery in 3 hours. +> +> I wonder if it's the GPS usage or the map updating? +I'm pretty sure it's the GPS chip. The software was using map data stored +on the phone. I guess it could just be processing of map data. I'll +have to +run a test of on phone vs on the net map data. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22801.mbox:2,S new file mode 100644 index 00000000..8b3e70f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22801.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From yiorgos.adamopoulos at gmail.com Mon Aug 30 15:20:01 2010 +To: imap-protocol@u.washington.edu +From: Yiorgos Adamopoulos +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life support + and ambiguity questions +In-Reply-To: <4C7C2DB1.6020107@lists.grepular.com> +References: <4C7A2AB6.6070405@lists.grepular.com> + + <2721.1283156569.612563@puncture> + <4C7C2DB1.6020107@lists.grepular.com> +Message-ID: + +On Tue, Aug 31, 2010 at 1:16 AM, Mike Cardwell + wrote: +> supports it... JOOI, what client implementations are there for ACAP? + +http://dave.cridland.net/acap/polymer.html + +though I've never used it. +-- +http://gr.linkedin.com/in/yiorgos + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22804.mbox:2,S new file mode 100644 index 00000000..8883aeff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22804.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jul 9 20:00:01 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: +References: <4C37C781.5060700@sun.com> + + +Message-ID: + +On Fri, 9 Jul 2010, Lyndon Nerenberg wrote: +>> Yes, but my server (and many others) are converting all whitespace to a +>> single space (tabs, folds, multiple spaces, etc). I can't exactly +>> remember why, though. Maybe I implemented it only because others did +>> that too.. +> The '822 grammar production. + +Correct. You interpret the fields as per RFC 822 (etc.). + +Line folding is an RFC 822 (etc.) concept and is not part of the field +data (e.g., Subject). Header fields are logically a single line, even if +they are multiple lines in the header. + +If you think about it and how protocol layering works, it makes sense. +You are looking at a message and its fields, not how RFC 822 (etc.) +encodes it. + +Arguably, a future version of IMAP should decode MIME encoded-words into +UTF-8. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22807.mbox:2,S new file mode 100644 index 00000000..f939f905 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22807.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Thu Jun 10 23:54:37 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +Message-ID: <201006110854.37969.witold.krecicki@firma.o2.pl> + +Hello +I've wrote a draft of a draft of an IMAP protocol extension providing one +basic (at least to me) feature that is missing. I've searched (roughly) +through discussions on this mailing list and haven't seen any mentioning or +proposal of 'move' functionality. + +So +http://www.ietf.org/id/draft-krecicki-imap-move-00.txt +here it is and let the flame war begin :) + +Cheers +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095068.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095068.22810.mbox:2,S new file mode 100644 index 00000000..a73b5ed8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095068.22810.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From eluis.linux at gmail.com Wed May 5 01:27:56 2010 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?Eduardo_Lu=EDs?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] 2Gb size limit +Message-ID: + +Hi, + +Is there any update or the 2gb file limit is a feature of UW Imap Server? +I'm using Slackware and I'm starting to have problems with many +mailboxes that reached the 2Gb size. + +Thanks, +Eduardo Lu?s + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22595.mbox:2,S new file mode 100644 index 00000000..319ba3b0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22595.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From echappa at gmx.com Fri Mar 13 15:49:32 2015 +To: imap-protocol@u.washington.edu +From: Eduardo Chappa +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: <20150313211600.25485.qmail@ary.lan> +References: <20150313211600.25485.qmail@ary.lan> +Message-ID: + +On Fri, 13 Mar 2015, John Levine wrote: + +>>> The point of a signature is to have a way of verification of the +>>> message as sent and received. If "you" received a message from your +>>> boss saying "I approve that you spend ten thousand dollars in the +>>> company party" and the signature of such message would not validate, +>>> that would certainly not be a situation where "you" would say "the +>>> correct thing to do is to ignore it." +> +> RFC 6376 is quite clear about what you do with an invalid DKIM signature +> -- you ignore it, as though the signature wasn't there at all. We +> deliberately wrote it that way. + +The question is who is "you" in the sentence above. If you mean to say +that "you" is the client implementor, well, there is no much that can be +done to recover from such error. It is hard to try to recover, so +"ignoring it" is sensible. + +However, the comment that originated this conversation was not a comment +about the implementation of a RFC, it was about a user point of view, so +while the comment you made may be sensible to implementors, I do not see +it as such for users, and that is the context of what I saw.I +read originally was not meant to say (in my opinion) that the list was + +> It's fine to treat mail with valid signatures differently from mail +> without valid signatures, but it's not fine to treat mail with an +> invalid signature differently from mail with no signature. That's why +> you shouldn't depend on lists to strip the signatures they break. +> +> I would have hoped that people interested enough in mail software to be +> on this list would go to the effort to read and understand the specs +> they implement. + +In generic terms I understand you. But the RFC is just that, and it is for +implementors, not for users. I do not think that you can tell me, as a +user, that it is "fine" when a signature does not validate, because I care +to receive what was sent and I do not have any algorithmic way to know +what the original message was. I know there is no much that can be done to +fix it as an implementor, so in that sense, I should ignore the failure, +but that is not what makes a user feels warm and fuzzy about the message +they just received and fails to validate. + +-- +Eduardo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22641.mbox:2,S new file mode 100644 index 00000000..a1306209 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22641.mbox:2,S @@ -0,0 +1,9 @@ +MBOX-Line: From davew at hireahit.com Thu Mar 20 21:47:28 2014 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Actually deleting messages from Gmail +Message-ID: <532BC3A0.7060402@hireahit.com> + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22688.mbox:2,S new file mode 100644 index 00000000..dcae1cb5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22688.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From thomas.dressler at 1und1.de Thu Jan 31 04:04:06 2013 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?Thomas_Dre=DFler?= +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] RFC 6851 imap move +Message-ID: <510A5DB6.2090105@1und1.de> + +hi, + +i have seen rfc6851 and i have a question. + +example from rfc: +C: a UID MOVE 42:69 foo +S: * OK [COPYUID 432432 42:69 1202:1229] +S: * EXPUNGE +S: (more expanges) +S: a OK done + +is the COPYUID response legal? + +rfc3501: +resp-text = ["[" resp-text-code "]" SP] text + +i see no "SP text" in that example. + +ThomasD + +-- +Thomas Dressler +Software-Entwickler + +1&1 Internet AG - Mail System Development +Brauerstrasse 48 DE-76135 Karlsruhe +Telefon: +49 721 91374-6790 +thomas.dressler@1und1.de + +Amtsgericht Montabaur / HRB 6484 +Vorstaende: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Thomas Gottschlich, Robert Hoffmann, Markus Huhn, Hans-Henning Kettler, Dr. Oliver Mauss, Jan Oetjen +Aufsichtsratsvorsitzender: Michael Scheeren + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22701.mbox:2,S new file mode 100644 index 00000000..08535683 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22701.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From Pidgeot18 at verizon.net Tue Nov 27 10:39:31 2012 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + + <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> +Message-ID: <50B508E3.3050209@verizon.net> + +On 11/26/2012 7:48 PM, Michael M Slusarz wrote: +> IMAP command sniffing = javascript browser sniffing. The days of +> parsing a browser's User-Agent field are so 1999. + +As someone who has seen both ends of the User-Agent debate (as a web +developer and as a browser implementer), I can honestly say that parsing +User-Agents is actually a very powerful and useful technique, and even +browser vendors won't have a problem with it... if you do it properly. I +can also attest that User-Agent parsing happens to a very large degree +in the modern web (Google, of all people, does it. And incorrectly, the +last time I checked): try changing your desktop's browser UA to that of +a mobile browser and notice how different the web looks. Not to mention +all the feedback you see on things like the WHATWG mailing list +complaining that the User-Agent doesn't send screen resolution... + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22743.mbox:2,S new file mode 100644 index 00000000..1c113224 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22743.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Mar 21 03:04:39 2012 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +In-Reply-To: <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> +References: <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> +Message-ID: <4F69A7B7.6070006@isode.com> + +On 20/03/2012 20:42, Dan Karp wrote: +>> From RFC4551 Introduction: "The server MUST guarantee that each STORE +>> command performed on the same mailbox ... will get a different +>> mod-sequence value." +>> +>> Can someone explain why the uniqueness requirement is necessary for +>> the modification sequence? If two metadata items/messages are +>> modified transactionally and share the same mod-sequence I don't +>> really see any way that will break any of the proposed IMAP protocol +>> changes for CONDSTORE (as long as they are updated atomically and a +>> client can't sync between when a first item gets a mod-sequence and +>> a second item gets the same mod-sequence). +> I *think* that you're incorrectly interpreting "each STORE command" as +> "each message affected by a STORE command". The following command is +> one STORE command, not ten: +> +> A001 STORE 1:10 +FLAGS (\Deleted) +> +> Your single transactional modification of those ten messages is allowed +> to use the same mod-sequence value. +This is correct. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22756.mbox:2,S new file mode 100644 index 00000000..b66c6368 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22756.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 6 14:10:57 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: +Message-ID: + + +On Nov 6, 2011, at 11:03 PM, Lyndon Nerenberg (VE6BBM/VE7TFX) wrote: + +>> Is that trailing text mandatory? It doesn't seem to add much of anything functional to the response. Can the response dispense with it? +> +> The answer to this is in the grammar, and it's probably not quite the +> answer you would expect. I encourage you to take the time to comb +> through that grammar. It's the authoritative source for answers to +> these sort of questions. (And the answer you want is in there.) + +Yes, thank you. Philip Guenther pointed out the relevant section. It's just that... well... I couldn't quite believe my eyes... so I though I would confirm the grammar really meant it... :) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22759.mbox:2,S new file mode 100644 index 00000000..6bb19734 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22759.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From mrc+imap at panda.com Sun Oct 30 18:33:34 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> +Message-ID: + +My recommendation is as follows: + +See what happens in one or more the three open-source IMAP servers of +recognized quality: UW IMAP (or Panda IMAP if you have access to it), +Cyrus, and Dovecot. These servers almost always agree with each other on +matters of IMAP protocol (and if they disagree their developers will want +to know; they go to great efforts on this). + +It is a safe assumption that what they do is correct; and that if some +other server does something differently, that other server is incorrect. + +It is also a safe assumption that Gmail, Yahoo, Exchange, Apple iCloud +(iSCREAM), etc. implement IMAP incorrectly. Those companies don't care +about implementing IMAP correctly; they only care about having something +that talks to Outlook. If they cared, they would implement it correctly +and hire someone competent to make it work. They don't. + +If, having done this, you still have questions as to why it is one way and +not the other, then ask this list. + +I think that, in the case of your question, you already know the answer +and merely seek confirmation. I'm just telling you how you can do so on +your own. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22768.mbox:2,S new file mode 100644 index 00000000..3bd7c9fa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22768.mbox:2,S @@ -0,0 +1,101 @@ +MBOX-Line: From Lynn at BusCom.net Mon Jun 6 10:31:06 2011 +To: imap-protocol@u.washington.edu +From: "Lynn W. Taylor" +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <201106060837.2YFKV00@c.mx.BCN-servers.us> +References: <4DEBB242.2090200@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> + <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> + <4DEC5CC4.5010507@BusCom.net> + <201106060837.2YFKV00@c.mx.BCN-servers.us> +Message-ID: <4DED0EDA.3030303@BusCom.net> + +I intend to test as many ways as possible, and I agree that "de-jure" +RFC-3501 compliance is the goal. + +Testing with telnet is going to verify that my server works the way I +think it should. It doesn't validate my understanding of RFC-3501. + +... and when I finish my server, it has to work with clients, and it has +to provide reasonable results based on what real mail clients do. + +Testing with Pine makes an incredible amount of sense. + +One of the things pushing IMAP is mobile. + +On 6/6/2011 8:36 AM, Pete Maclean wrote: +> I have been inspired to supplement my tips on building an IMAP server +> with 10 tips for testing. A couple of these have already been +> mentioned. Here they are: +> +> +> 1). Do not rely on testing just from the position of a client. Write +> test programs for the back-end code of each significant command, +> especially CREATE, LIST and FETCH. +> +> 2). Do initial online testing with a telnet client. You will likely +> continue using telnet testing throughout the server?s lifetime. +> +> 3). There is no one IMAP client you can rely on to test your server. +> This is simply because no one client does everything. (As is +> appropriate: servers must do everything that is not clearly optional, +> such as PREAUTH, but client designers pick and choose what elements of +> the protocol to make use of.) Pine may be the best one to start with +> because it makes use of so much of the protocol. Test with any and +> every client you can, both good ones and bad. Clients for desktop +> systems tend to be the most fully featured while mobile clients may be +> very limited. Nevertheless, mobile clients may do things that desktop +> clients don?t (such as use the BINARY extension when it is offered and +> fetch just the first few characters of a message). +> +> 4). Test with multiple connections open for the same account both +> working in different mailboxes and working in the same mailbox. +> +> 5). For testing things like the numbering of body parts and generation +> of BODYSTRUCTURE data, find a reference server to use, one that you +> can trust to do it right. Compare the output of the same command sent +> for the same message on your server and the reference server. Do the +> same for SEARCH. (I used Cyrus for this purpose.) +> +> 6). Be sure your server has a way of recording conversations, that is +> creating a transcript of every command received and response sent for +> a connection. This is invaluable for troubleshooting. You may want to +> include extra hints such as timing information (carefully +> distinguished from the protocol text). +> +> 7). You can implement private X- commands for debugging. This is like +> having a built-in debugger. Of course you either have to build your +> own client or use telnet manually to take advantage of these but they +> can be a great boon. My server even has an X-CRASH command that +> deliberately makes it fault so I can verify that its crash-handling is +> working as it should. (Needless to say, I hope, such commands are +> enabled only in special accounts.) +> +> 8). Do not stop at testing what should work; also check that your +> server appropriately handles what should not work. Especially such +> things as invalid UIDs and message numbers, handling of extension +> commands when the relevant extensions are not advertised, commands +> sent in an inappropriate mode, invalid modified UTF-7 data, and +> oversized mailbox names and paths. Also test things that are valid but +> may be rarely seen such as FETCH commands with repeated data items, +> UIDs greater than 0x80000000, and charset values sent as literals in +> SEARCH commands. +> +> 9). Test with pipelined commands. Few if any clients do pipelining but +> it is allowed. And don?t forget to test mid-session disconnections and +> timing out of idle connections. +> +> 10). While many clients make poor use of IMAP, they generally do use +> it accurately (in the sense of composing commands according to the +> specified syntax) ? and if they don?t then it is not something you +> should tolerate. Your message parser however should be ready to deal +> with any old crap. ?Garbage in, garbage out? is fine but ?garbage in, +> crash? is not. Test with spam and the junkiest messages you can get +> your hands on as well as RFC-compliant ones. Mine had a bug that +> lurked for several years until an empty MIME part of a certain kind +> came along and blew it up. +> +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22772.mbox:2,S new file mode 100644 index 00000000..c30572e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22772.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 18 11:44:54 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + +Message-ID: + +On Wed, 18 May 2011, Brandon Long wrote: +>> 1. Allowing non-ASCII characters in keywords +> Note this is one of the main reasons we didn't map our labels to +> keywords in the Gmail IMAP implementation. That, and the majority of +> clients don't really expose keywords to the user in any real fashion. + +The problem is that in doing so, you forked IMAP in a way that causes +trouble to compliant clients in this regard, and breaks compliant clients +due to violations of the specification elsewhere. + +This is deja vu of Microsoft's 1990s "Embrace, Extend, Destroy". The +difference is that Microsoft's code has more bugs than a Manhattan +basement. Google, on the other hand, just doesn't seem to care about +compliance. + +> We do store keywords as labels which aren't visible in our web +> interface, mostly because IMAP clients rarely used keywords to store +> anything particularly user visible. + +That is the case if you define "IMAP clients" as Outlook and Thunderbird. +Yes, I am aware that is the definition as used at Google. + +> And this was our eventual solution. We don't expect clients to +> implement our extensions for this, but since IMAP has become the +> defacto Gmail API, it became necessary to expose some Gmail specific +> data over IMAP for non-traditional applications. + +Too bad that the Gmail server is an incompatible and non-compliant fork +that is (at best) barely usable with a standard IMAP client. This has +obliged most uses of standard IMAP clients to give up on using the Gmail +IMAP server in favor of POP or POP-over-IMAP download/delete. + +The extensions are not a problem so much as it is the other things. +However, you could done that functionality within the framework of +standard IMAP, without any extension; and then the functionality would be +used by standard clients without requiring specific knowledge of Gmail. + +It just requires creativity and understanding; and the latter requires +experience. Too bad that Google sacked Brian Reid. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22784.mbox:2,S new file mode 100644 index 00000000..5ecfdcf5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22784.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From bruno.soares at digitro.com.br Wed Feb 9 04:09:07 2011 +To: imap-protocol@u.washington.edu +From: "Bruno M. Soares" +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +In-Reply-To: <6138318213.981717989@cridland.net> +References: <4D5173F0.7030405@digitro.com.br> <2609.1297185090.628987@Sputnik> + <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> + <4D526ED7.7010501@digitro.com.br> + <9734454602.981716440@cridland.net> + <4D527702.3050302@digitro.com.br> + <6138318213.981717989@cridland.net> +Message-ID: <4D5283E3.7050602@digitro.com.br> + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22796.mbox:2,S new file mode 100644 index 00000000..b28d0a69 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22796.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 11:26:46 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAA1B0E.3090203@aol.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> <4CAA145D.1090101@aol.com> + + <4CAA1B0E.3090203@aol.com> +Message-ID: + +On Mon, 4 Oct 2010, John Snow wrote: +>> Of course, SPRINT would be using EV-DO or WiMax, not UMTS. +> In my case, it's all EV-DO. I'm not in range of any WiMax towers. + +I'm on Verizon, so EV-DO until LTE arrives. + +> I'm pretty sure it's the GPS chip. The software was using map data +> stored on the phone. I guess it could just be processing of map data. +> I'll have to run a test of on phone vs on the net map data. + +Interesting, since a Garmin handheld seems to contrive to work for much +longer. + +However, it could be simply a matter of many devices these days being a +Jack of all trades and master of none. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22801.mbox:2,S new file mode 100644 index 00000000..55ace013 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22801.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Tue Aug 31 00:52:36 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life + support and ambiguity questions +In-Reply-To: +References: <4C7A2AB6.6070405@lists.grepular.com> + + <2721.1283156569.612563@puncture> <4C7C2DB1.6020107@lists.grepular.com> + +Message-ID: <2639.1283241156.558227@puncture> + +On Mon Aug 30 23:20:01 2010, Yiorgos Adamopoulos wrote: +> On Tue, Aug 31, 2010 at 1:16 AM, Mike Cardwell +> wrote: +> > supports it... JOOI, what client implementations are there for +> ACAP? +> +> http://dave.cridland.net/acap/polymer.html + +Polymer's an aquired taste... :-) + +Mulberry supports it, kind of, as does Wanderlust (an Emacs thing), +and Eudora. None of them support the standardized datasets proposed +in I-D forms for configuration, though, as I recall. + +Speaking as someone who's implemented both ends of it, and still uses +it in production, I have to say I wouldn't bother now. There are +several features of ACAP I do think are highly beneficial, including +the ability to push configuration (etc) updates to aware clients, and +the promise of interoperability with basic configuration data, but +there are shortfalls in the protocol's infrastructure which I think +modern data-sharing protocols address much better, most especially +the initial discovery and bootstrap. + +In particular, I'd be inclined to use XMPP, and more specifically +PEP/PubSub, in its private data store mode, if I were doing all this +again. I'm intending tackling this one relatively shortly. The +benefit there is that you're using a protocol you can bootstrap into +purely off a jid and a password, say "I care about X Y and Z", and +have the server not only send you your data, but everyone else's who +wants to share it with you. + +However, should we ever tackle an IMAP5, I would definitely mine ACAP +for various features of its protocol syntax. It's a very nicely +designed protocol, and the data model (in respect to searching etc) +is very neat. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22804.mbox:2,S new file mode 100644 index 00000000..c63ba234 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22804.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Fri Jul 9 20:15:43 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: +References: <4C37C781.5060700@sun.com> + + + +Message-ID: <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> + +On 10.7.2010, at 4.00, Mark Crispin wrote: + +> On Fri, 9 Jul 2010, Lyndon Nerenberg wrote: +>>> Yes, but my server (and many others) are converting all whitespace to a +>>> single space (tabs, folds, multiple spaces, etc). I can't exactly +>>> remember why, though. Maybe I implemented it only because others did +>>> that too.. +>> The '822 grammar production. +> +> Correct. You interpret the fields as per RFC 822 (etc.). +> +> Line folding is an RFC 822 (etc.) concept and is not part of the field +> data (e.g., Subject). Header fields are logically a single line, even if +> they are multiple lines in the header. + +But it's not just the line folding. All LWSP containing tabs, spaces and CRLFs are converted into a single space by many servers (IIRC also UW-IMAP). RFC 822 says that all LWSP is equivalent to a single space in structured fields, but subject is unstructured field. + +> Arguably, a future version of IMAP should decode MIME encoded-words into +> UTF-8. + +I'm looking forward to RFC 5738bis. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22807.mbox:2,S new file mode 100644 index 00000000..717c5b18 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22807.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 11 00:44:46 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006110854.37969.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> +Message-ID: <4C11E96E.7080502@gulbrandsen.priv.no> + +I implemented that a while ago, but I chose to implement only UID MOVE +(an atomic uid-based move being what was needed), and you chose to +specify only MOVE. Why not UID? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22810.mbox:2,S new file mode 100644 index 00000000..becd37e9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22810.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From yiorgos.adamopoulos at gmail.com Wed May 5 02:42:06 2010 +To: imap-protocol@u.washington.edu +From: Yiorgos Adamopoulos +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] 2Gb size limit +In-Reply-To: +References: +Message-ID: + +2010/5/5 Eduardo Lu?s : +> Hi, +> +> Is there any update or the 2gb file limit is a feature of UW Imap Server? +> I'm using Slackware and I'm starting to have problems with many +> mailboxes that reached the 2Gb size. + +This is not a limit imposed by the UW toolkit. It is imposed by the (32bit) OS. + +-- +http://gr.linkedin.com/in/yiorgos + diff --git a/demo/ermis-f/imap-protocol/cur/1600095069.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095069.22813.mbox:2,S new file mode 100644 index 00000000..e1abe199 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095069.22813.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From cosas at minovela.com Tue Jan 5 01:20:10 2010 +To: imap-protocol@u.washington.edu +From: Cosas Minovela +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] UID SEARCH unexpected result +Message-ID: <35072565275449FDBFCC22DBF77AA267@pcdualc> + + +Hello, + +I'm trying to fectch all messages (read, unread, all...) after a given UID +112220. + +Note that if I open the search range from 1 to * it shows all the messages, +but if I use a closer range such as 112220:* it isn't showing the messages +112221 112222 112223 112224 + +Why??? + +HKC4b42f889b5bfa UID SEARCH 1:* +* SEARCH 112197 112198 112199 112200 112201 112202 112203 112204 112205 +112206 112207 112208 112209 112210 112211 112212 112213 112214 112215 112216 +112217 112218 112221 112222 112223 112224 112225 +HKC4b42f889b5bfa OK Search completed (0.000 secs). +HKC4b42f889b5bfb UID SEARCH 112220:* +* SEARCH 112225 +HKC4b42f889b5bfb OK Search completed (0.000 secs). + +Thanks. +Iv?n L?pez. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22595.mbox:2,S new file mode 100644 index 00000000..c2f64a6a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22595.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From barryleiba at computer.org Sat Mar 14 07:25:21 2015 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: +References: <20150313211600.25485.qmail@ary.lan> + +Message-ID: + +The problem with your "you" thesis is that you're attributing things +to the signature that are not meant by DKIM signatures. There is no +sensible comparison to be made between a purported signature by your +boss that asserts that she authorized you to spend money... and what a +DKIM signature asserts. As John says, it's critical to fully +understand what DKIM signatures do and don't do, and not to use them +for things beyond what they're intended for. + +Barry + +On Fri, Mar 13, 2015 at 6:49 PM, Eduardo Chappa wrote: +> On Fri, 13 Mar 2015, John Levine wrote: +> +>>>> The point of a signature is to have a way of verification of the message +>>>> as sent and received. If "you" received a message from your boss saying "I +>>>> approve that you spend ten thousand dollars in the company party" and the +>>>> signature of such message would not validate, that would certainly not be a +>>>> situation where "you" would say "the correct thing to do is to ignore it." +>> +>> +>> RFC 6376 is quite clear about what you do with an invalid DKIM signature +>> -- you ignore it, as though the signature wasn't there at all. We +>> deliberately wrote it that way. +> +> +> The question is who is "you" in the sentence above. If you mean to say that +> "you" is the client implementor, well, there is no much that can be done to +> recover from such error. It is hard to try to recover, so "ignoring it" is +> sensible. +> +> However, the comment that originated this conversation was not a comment +> about the implementation of a RFC, it was about a user point of view, so +> while the comment you made may be sensible to implementors, I do not see it +> as such for users, and that is the context of what I saw.I read originally +> was not meant to say (in my opinion) that the list was +> +>> It's fine to treat mail with valid signatures differently from mail +>> without valid signatures, but it's not fine to treat mail with an invalid +>> signature differently from mail with no signature. That's why you shouldn't +>> depend on lists to strip the signatures they break. +>> +>> I would have hoped that people interested enough in mail software to be on +>> this list would go to the effort to read and understand the specs they +>> implement. +> +> +> In generic terms I understand you. But the RFC is just that, and it is for +> implementors, not for users. I do not think that you can tell me, as a user, +> that it is "fine" when a signature does not validate, because I care to +> receive what was sent and I do not have any algorithmic way to know what the +> original message was. I know there is no much that can be done to fix it as +> an implementor, so in that sense, I should ignore the failure, but that is +> not what makes a user feels warm and fuzzy about the message they just +> received and fails to validate. +> +> -- +> Eduardo +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22641.mbox:2,S new file mode 100644 index 00000000..24e57341 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22641.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From blong at google.com Thu Mar 20 23:07:03 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Actually deleting messages from Gmail +In-Reply-To: <532BC3A0.7060402@hireahit.com> +References: <532BC3A0.7060402@hireahit.com> +Message-ID: + +You can't delete the all mail label from a message in Gmail. Adding the +spam or trash label will hide the message from all other folders. + +If the all mail folder is the last folder the message is in and you set +your "When a message is marked as deleted and expunged from the last +visible IMAP folder" setting to something other than the default, it should +disappear from the all mail folder. + +As for what should clients do? That really depends on the client. If the +user (or the app) really wants the message deleted, then moving it to the +trash folder is the right thing to do. If the user is just trying to +remove the message from a single folder, \deleted & expunge is the right +thing. + +Brandon + + +On Thu, Mar 20, 2014 at 9:47 PM, Dave Warren wrote: + +> I was sure that when I tested previously, deleting a message from +> "[Gmail]/All Mail" would cause Gmail to place the message in the Trash, +> removing it from all labels, but testing today, this doesn't seem to be the +> case, the message reappears without the \Deleted flag after being expunged: +> +> R00005 SELECT "[Gmail]/All Mail" +> <...> +> * 1432 FETCH (UID 92405) +> * 1433 FETCH (UID 92406) +> * 1434 FETCH (UID 92407) +> <...> +> +> R0004F UID STORE 92407 +FLAGS (\Deleted) +> * 1434 FETCH (FLAGS (\Deleted) UID 92407) +> R0004F OK Success +> R00050 EXPUNGE +> R00050 OK Success +> R00051 UID STORE 92405 +FLAGS (\Deleted) +> * 1432 FETCH (FLAGS (\Seen \Deleted) UID 92405) +> R00051 OK Success +> R00052 EXPUNGE +> R00052 OK Success +> +> R00054 SELECT "[Gmail]/All Mail" +> <...> +> * 1432 FETCH (UID 92405) +> * 1433 FETCH (UID 92406) +> * 1434 FETCH (UID 92407) +> <...> +> +> * 1432 FETCH (UID 92405 RFC822.SIZE 14202 INTERNALDATE "21-Mar-2014 +> 03:19:31 +0000" FLAGS (\Seen) BODY[HEADER] {2044} +> <...> +> * 1434 FETCH (UID 92407 RFC822.SIZE 14173 INTERNALDATE "21-Mar-2014 +> 03:55:43 +0000" FLAGS () BODY[HEADER] {2056} +> +> Long-term we're looking at copying messages into the Trash the way Gmail +> expects when we actually intend to remove a message. In this case, is there +> any advantage in setting \Deleted or issuing an EXPUNGE, or is it best to +> simply copy and let Gmail do the rest? +> +> -- +> Dave Warrenhttp://www.hireahit.com/http://ca.linkedin.com/in/davejwarren +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22688.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22688.mbox:2,S new file mode 100644 index 00000000..c5f99efe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22688.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dave at cridland.net Thu Jan 31 04:45:34 2013 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:50 2018 +Subject: [Imap-protocol] RFC 6851 imap move +In-Reply-To: <510A5DB6.2090105@1und1.de> +References: <510A5DB6.2090105@1und1.de> +Message-ID: + +On 31 Jan 2013 12:08, "Thomas Dre?ler" wrote: +> is the COPYUID response legal? +> +> rfc3501: +> resp-text = ["[" resp-text-code "]" SP] text +> +> i see no "SP text" in that example. + +There are two SP characters before the EOL not visible. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22701.mbox:2,S new file mode 100644 index 00000000..972c0536 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22701.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From slusarz at curecanti.org Tue Nov 27 11:48:11 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <1354010571.12520.140661158658949.22643EF6@webmail.messagingengine.com> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + + <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> + <1354010571.12520.140661158658949.22643EF6@webmail.messagingengine.com> +Message-ID: <20121127124811.Horde.VuMexjqX6lKpL2uX-qPgPw2@bigworm.curecanti.org> + +Quoting Bron Gondwana : + +> On Tue, Nov 27, 2012, at 02:48 AM, Michael M Slusarz wrote: +>> (full +>> disclosure: the recent Cyrus break is weird because it sent a BYE and +>> terminated instead of a failed command, so that wasn't previously +>> scanned for so we weren't catching this until recently. so we're not +>> perfect either.). +> +> I'm kinda embarassed about this one! I forgot to put the GUID calculation +> call in the APPEND BINARY path, because nothing ever tested it and it +> appeared nobody was using it, because we didn't have a single complaint or +> failure with it until just a few weeks ago. + +There's probably some deeper (sad) IMAP implementation story to be +learned here. RFC 3516 was published April 2003, and 9 years later +we're the first one to ever use literal8's in an APPEND? + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22743.mbox:2,S new file mode 100644 index 00000000..aafaaa40 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22743.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 21 03:15:17 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> + <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + +Message-ID: <20120321101517.GA31585@launde.brong.net> + +On Tue, Mar 20, 2012 at 09:06:08PM -0400, Barry Leiba wrote: +> > As I see it, IMAP seems to imply a frozen set of messages, until either an EXISTS or +> > EXPUNGE is observed. In my case, as timing is not critical, NOOP is the place where that +> > observation happens as this seems to be the less troublesome spot to do so. +> +> IMAP implies no such thing at all. +> That most clients send a lot of NOOP commands basically speaks to most +> clients being inefficient users of IMAP. With a well written client +> and an active user, you might never see NOOPs, and it's seriously +> broken server behaviour to only update the message list when you see a +> NOOP. + +My other hobby (apart from participating in flame wars on IMAP lists) is +teaching group fitness classes. So I'm up the front with a microphone on, +telling people what to do with voice and body movements, and they are +trying to follow and make the right movements so they don't run in to +each other. + +And we instructors have a saying... if one person in your class makes a +mistake, it might be their fault - but if a lot of them get it wrong then +IT IS YOUR FAULT. You didn't cue properly. Fix it next time you teach +that track. + +Lots of clients get IMAP wrong... + +Bron ( fill in the blanks ) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22756.mbox:2,S new file mode 100644 index 00000000..ea323fda --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22756.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From vanmeeuwen at kolabsys.com Sun Nov 6 14:13:11 2011 +To: imap-protocol@u.washington.edu +From: Jeroen van Meeuwen (Kolab Systems ) +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & =?UTF-8?Q?unseen=3F?= +In-Reply-To: +References: + <20111106213124.GA27889@brong.net> + + + +Message-ID: <1b66daec62d6fb6bbc8f6b010bcb051c@kolabsys.com> + +On 2011-11-06 22:06, Petite Abeille wrote: +> Fair enough. Out of curiosity, what's the intended purpose of that +> trailing text? Does any actual IMAP clients care? +> + +No clients I'm aware of care about the trailing +$arbitrary_text_in_random_locale + +Kind regards, + +Jeroen van Meeuwen + +-- +Senior Engineer, Kolab Systems AG + +e: vanmeeuwen at kolabsys.com +t: +44 144 340 9500 +m: +44 74 2516 3817 +w: http://www.kolabsys.com + +pgp: 9342 BF08 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22759.mbox:2,S new file mode 100644 index 00000000..94de63df --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22759.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From aclark at ghoti.org Sun Oct 30 19:35:08 2011 +To: imap-protocol@u.washington.edu +From: Ashley Clark +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + +Message-ID: <1D4C80A2-BD6A-4888-9A21-29D746896D97@ghoti.org> + +The server responding with the matching 0 origin was running Dovecot. I don't know the implementation of the other server and don't have ready access to UW or Cyrus. + +It seems that the origin must be relative to the start of the part that is being requested in both the request and response but I didn't see it clearly stated in the RFC. Is this a safe assumption? + + +Ashley diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22768.mbox:2,S new file mode 100644 index 00000000..2c2c4520 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22768.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Jun 6 10:47:33 2011 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DED0EDA.3030303@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> + <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> + <4DEC5CC4.5010507@BusCom.net> + <201106060837.2YFKV00@c.mx.BCN-servers.us> + <4DED0EDA.3030303@BusCom.net> +Message-ID: + +> Testing with telnet is going to verify that my server works the way I think +> it should. It doesn't validate my understanding of RFC-3501. + +It could. During the days of the IMAP interop meetings, telnet was my +tool of destruction for many (many!) server implementations. Look through +the 3501 grammar for every instance of and . Next, +telnet to any IMAP server and hand craft a series of commands that +exercise the edge cases of those two tokens. + +For starters, send a command containing a <[nz-]number> token with the +high bit set. The results can be spectacular :-( + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22772.mbox:2,S new file mode 100644 index 00000000..0ea1146d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22772.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From brong at fastmail.fm Wed May 18 14:07:16 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + +Message-ID: <20110518210716.GA12636@brong.net> + +On Wed, May 18, 2011 at 11:44:54AM -0700, Mark Crispin wrote: +> On Wed, 18 May 2011, Brandon Long wrote: +> >And this was our eventual solution. We don't expect clients to +> >implement our extensions for this, but since IMAP has become the +> >defacto Gmail API, it became necessary to expose some Gmail specific +> >data over IMAP for non-traditional applications. +> +> Too bad that the Gmail server is an incompatible and non-compliant fork +> that is (at best) barely usable with a standard IMAP client. This has +> obliged most uses of standard IMAP clients to give up on using the Gmail +> IMAP server in favor of POP or POP-over-IMAP download/delete. + +What annoys me the most is no CONDSTORE/QRESYNC support, so you +can't create an efficient gmail client - you need to sync all the +flags, every time. Gmail is big enough that I'm fairly willing to +special case it in exchange for big performance wins, but there's +just no way to be sure you have all the changes. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22784.mbox:2,S new file mode 100644 index 00000000..1128b2f8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22784.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From bruno.soares at digitro.com.br Thu Feb 10 02:14:25 2011 +To: imap-protocol@u.washington.edu +From: "Bruno M. Soares" +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] IMAP4 with deflate +In-Reply-To: <4D5283E3.7050602@digitro.com.br> +References: <4D5173F0.7030405@digitro.com.br> + <2609.1297185090.628987@Sputnik> <0D26F971-6164-4242-A89A-DCA329111789@iki.fi> <4D526ED7.7010501@digitro.com.br> <9734454602.981716440@cridland.net> <4D527702.3050302@digitro.com.br> <6138318213.981717989@cridland.net> + <4D5283E3.7050602@digitro.com.br> +Message-ID: <4D53BA81.903@digitro.com.br> + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22796.mbox:2,S new file mode 100644 index 00000000..e2fe5a16 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22796.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From mail at sabahattin-gucukoglu.com Mon Oct 4 11:32:53 2010 +To: imap-protocol@u.washington.edu +From: Sabahattin Gucukoglu +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + +Message-ID: <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + +On 4 Oct 2010, at 18:56, Mark Crispin wrote: +> The real problem with IDLE is that it is NAT-unfriendly. Most NAT boxes +> drop the mapping after a period of client inactivity, and send a TCP RST +> to the server if the server resumes activity before the client. Most +> users don't see this, since if the client resumes activity first the same +> mapping is created and no RST is sent. + +Yes, indeed, this argument is the most convincing I've actually seen against IDLE, and the compromise is to set a time interval that gets around the NAT's braindead behaviour. Since most clients are happy to allow users to specify a polling frequency that determines the maximum time between checks, it's not a stretch to turn this into a between DONE-IDLE timer. The solution is IPv6, of course. + +Cheers, +Sabahattin + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22801.mbox:2,S new file mode 100644 index 00000000..22327ef0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22801.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Tue Aug 31 08:16:12 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life + support and ambiguity questions +In-Reply-To: <2721.1283156569.612563@puncture> +References: <4C7A2AB6.6070405@lists.grepular.com> + + <2721.1283156569.612563@puncture> +Message-ID: <1283267773.6489.449.camel@kurkku.sapo.corppt.com> + +On Mon, 2010-08-30 at 09:22 +0100, Dave Cridland wrote: +> On Sun Aug 29 19:31:58 2010, Mark Crispin wrote: +> > Few, if any, IMAP servers will execute commands out of order. +> > +> I don't know of any for certain, but if anyone's implementation does, +> it'll be Arnt/AMS's. + +If a command starts blocking on client output (like a large enough +FETCH) then Dovecot starts running the next command. There are a few +advantages, although possibly small enough that they don't matter: + +1. Less latency, because any disk I/O is started while the previous +output is still being sent to client. + +2. Kernel might be able to reorder disk I/O better since it knows more +what data is going to be read. + +3. Maybe the client wanted to do a couple of STATUSes in the middle of a +large fetch, and could update the UI faster while FETCH is still going +on.. + +Of course, 1-2 can also be implemented by starting the commands but +delaying/buffering client output, and clients can do 3 with another IMAP +connection. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22804.mbox:2,S new file mode 100644 index 00000000..32baad71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22804.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jul 9 20:25:07 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> +References: <4C37C781.5060700@sun.com> + + + + <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> +Message-ID: + +On Sat, 10 Jul 2010, Timo Sirainen wrote: +> I'm looking forward to RFC 5738bis. + +Better, get rid of RFC 5738 and replace it with something that isn't a +piece of crap. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22807.mbox:2,S new file mode 100644 index 00000000..c06d9725 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22807.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tjs at psaux.com Fri Jun 11 00:55:21 2010 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C11E96E.7080502@gulbrandsen.priv.no> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <4C11E96E.7080502@gulbrandsen.priv.no> +Message-ID: <4C11EBE9.5070004@psaux.com> + +On 6/11/10 12:44 AM, Arnt Gulbrandsen wrote: +> I implemented that a while ago, but I chose to implement only UID MOVE +> (an atomic uid-based move being what was needed), and you chose to +> specify only MOVE. Why not UID? + +Looks like it's there -- + +> Additionally, MOVE command can be directly preceeded by UID command, +> the sequence set argument is then treated as unique identifiers +> sequence instead of message sequence numbers as defined in [IMAP4] +> paragraph 6.4.8. + +I'm interested in seeing this move forward. It would help both my +company's server and our clients. + +Tim + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22810.mbox:2,S new file mode 100644 index 00000000..b454186d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22810.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From eluis.linux at gmail.com Wed May 5 03:00:11 2010 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?Eduardo_Lu=EDs?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] 2Gb size limit +In-Reply-To: +References: + +Message-ID: + +No, it's not a 32bit OS feature. +I'm using Slackware 12.1 on a 64bits machine on a EXT3 filesystem. +I'm working with other files much bigger than 2Gb and with no +problem... some of them with 50Gb.. + +This is a feature of UW, I just would like to know if it has a newer +version with this problem fixed... + +http://www.linuxquestions.org/questions/slackware-14/uw-imap-2gb-file-size-limit-501983/ + + +Eduardo Lu?s + + + +2010/5/5 Yiorgos Adamopoulos : +> 2010/5/5 Eduardo Lu?s : +>> Hi, +>> +>> Is there any update or the 2gb file limit is a feature of UW Imap Server? +>> I'm using Slackware and I'm starting to have problems with many +>> mailboxes that reached the 2Gb size. +> +> This is not a limit imposed by the UW toolkit. It is imposed by the (32bit) OS. +> +> -- +> http://gr.linkedin.com/in/yiorgos +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095070.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095070.22813.mbox:2,S new file mode 100644 index 00000000..e2264d15 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095070.22813.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Jan 5 01:51:34 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] UID SEARCH unexpected result +In-Reply-To: <35072565275449FDBFCC22DBF77AA267@pcdualc> +References: <35072565275449FDBFCC22DBF77AA267@pcdualc> +Message-ID: + +Cosas Minovela writes: +> I'm trying to fectch all messages (read, unread, all...) after a given UID +> 112220. + +Then you should use x UID SEARCH UID 112220:* (or perhaps 112221:*). +Note the second UID, which means that 112220 is a UID. Without that, +the number is an MSN. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22595.mbox:2,S new file mode 100644 index 00000000..e75f73b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22595.mbox:2,S @@ -0,0 +1,97 @@ +MBOX-Line: From jguthrie at brokersys.com Sat Mar 14 21:26:40 2015 +To: imap-protocol@u.washington.edu +From: Jonathan Guthrie +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: +References: <20150313211600.25485.qmail@ary.lan> + +Message-ID: <55050A00.60405@brokersys.com> + +The only reason that I have a DKIM signature on my emails is because my +mail server, that has an outbound volume of roughly 20 messages a month, +is marked as a "bulk mail sender" by the fine folks at gmail, and they +insist that I add a dkim signature before they will accept any of my +mail. Rather than try to find some real human at google to communicate +with about this, a task easier said than done, I chose to acquiesce to +this requirement despite the fact that I think that 20 messages a month +or so qualifies as "bulk" in no sane person's definition. I do this +primarily so I can send emails to my wife, which is occasionally +necessary to meet the requirements of connubial bliss. + +Beyond that, and beyond the procedures necessary to set it up, I have no +knowledge of DKIM. I have no idea why Mr Levine assumes that because I +have a passing familiarity with RFC 3501 and RFC 2822 that I will +necessarily have detailed knowledge of the contents of RFC 6376. Upon +reading his emails and reflecting on how such things work, I do +understand that a lack of signature is semantically equivalent to an +invalid signature, but I don't understand why there is an assumption +that this knowledge should be intuitively obvious to the casual +observer, even on a list such as this. + +On 03/14/2015 09:25 AM, Barry Leiba wrote: +> The problem with your "you" thesis is that you're attributing things +> to the signature that are not meant by DKIM signatures. There is no +> sensible comparison to be made between a purported signature by your +> boss that asserts that she authorized you to spend money... and what a +> DKIM signature asserts. As John says, it's critical to fully +> understand what DKIM signatures do and don't do, and not to use them +> for things beyond what they're intended for. +> +> Barry +> +> On Fri, Mar 13, 2015 at 6:49 PM, Eduardo Chappa wrote: +>> On Fri, 13 Mar 2015, John Levine wrote: +>> +>>>>> The point of a signature is to have a way of verification of the message +>>>>> as sent and received. If "you" received a message from your boss saying "I +>>>>> approve that you spend ten thousand dollars in the company party" and the +>>>>> signature of such message would not validate, that would certainly not be a +>>>>> situation where "you" would say "the correct thing to do is to ignore it." +>>> +>>> RFC 6376 is quite clear about what you do with an invalid DKIM signature +>>> -- you ignore it, as though the signature wasn't there at all. We +>>> deliberately wrote it that way. +>> +>> The question is who is "you" in the sentence above. If you mean to say that +>> "you" is the client implementor, well, there is no much that can be done to +>> recover from such error. It is hard to try to recover, so "ignoring it" is +>> sensible. +>> +>> However, the comment that originated this conversation was not a comment +>> about the implementation of a RFC, it was about a user point of view, so +>> while the comment you made may be sensible to implementors, I do not see it +>> as such for users, and that is the context of what I saw.I read originally +>> was not meant to say (in my opinion) that the list was +>> +>>> It's fine to treat mail with valid signatures differently from mail +>>> without valid signatures, but it's not fine to treat mail with an invalid +>>> signature differently from mail with no signature. That's why you shouldn't +>>> depend on lists to strip the signatures they break. +>>> +>>> I would have hoped that people interested enough in mail software to be on +>>> this list would go to the effort to read and understand the specs they +>>> implement. +>> +>> In generic terms I understand you. But the RFC is just that, and it is for +>> implementors, not for users. I do not think that you can tell me, as a user, +>> that it is "fine" when a signature does not validate, because I care to +>> receive what was sent and I do not have any algorithmic way to know what the +>> original message was. I know there is no much that can be done to fix it as +>> an implementor, so in that sense, I should ignore the failure, but that is +>> not what makes a user feels warm and fuzzy about the message they just +>> received and fails to validate. +>> +>> -- +>> Eduardo +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22641.mbox:2,S new file mode 100644 index 00000000..b69b321c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22641.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From davew at hireahit.com Thu Mar 20 23:33:14 2014 +To: imap-protocol@u.washington.edu +From: Dave Warren +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Actually deleting messages from Gmail +In-Reply-To: +References: <532BC3A0.7060402@hireahit.com> + +Message-ID: <532BDD26.8050801@hireahit.com> + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22701.mbox:2,S new file mode 100644 index 00000000..691b35cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22701.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From jkt at flaska.net Tue Nov 27 12:05:37 2012 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Combining LITERAL+ and BINARY +Message-ID: + +Hi, +I was wondering what is the correct way of combining LITERAL+ [1] and BINARY [2]. Unless I'm mistaken, their interaction is not documented in any of the two RFCs. If I'm correct, this means that one can either benefit from 8bit APPENDs while blocking with synchronizing literals, or use LITERAL+ and do the encoding to some transport format on their own, not using BINARY. Is that right? + +(Thanks to Michael M Slusarz for mentioning that literal8 is actually supported in APPEND as well in another thread.) + +With kind regards, +Jan + +[1] http://tools.ietf.org/html/rfc2088 +[2] http://tools.ietf.org/html/rfc3516 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22743.mbox:2,S new file mode 100644 index 00000000..cdfdb429 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22743.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 21 03:17:33 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +In-Reply-To: +References: + <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> + +Message-ID: <4F69AABD.4070206@gulbrandsen.priv.no> + +As long as no client ever gets to see MODSEQ 1000 for two different +states (such as another client's half-completed command and the same +command fully completed), everything is fine. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22756.mbox:2,S new file mode 100644 index 00000000..081beaef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22756.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From lyndon at orthanc.ca Sun Nov 6 14:12:34 2011 +To: imap-protocol@u.washington.edu +From: VE6BBM/VE7TFX ) +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +Message-ID: + +> Does any actual IMAP clients care? + +It's not optional, so as a server implementor you are +required to send something. What a client does with it +is the client's business. + +Not sending it is a protocol violation, and a well behaved +client is perfectly free to drop the connection at that point +due to the protocol violation. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22759.mbox:2,S new file mode 100644 index 00000000..66c3796a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22759.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Sun Oct 30 19:45:15 2011 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org>, + +Message-ID: <4EAE0BBB.19406.5D99DC56@David.Harris.pmail.gen.nz> + +On 30 Oct 2011 at 18:33, Mark Crispin wrote: + +> See what happens in one or more the three open-source IMAP servers +> of recognized quality: UW IMAP (or Panda IMAP if you have access to +> it), Cyrus, and Dovecot. These servers almost always agree with +> each other on matters of IMAP protocol (and if they disagree their +> developers will want to know; they go to great efforts on this). + +Just FWIW... Although my Mercury is a very minor player in this +market, I am also *very* keen to hear of any situations where I am not +compliant. My IMAP code has been around for a long time, but has +tended to be hampered by being tied to an ancient and restrictive +message store, a problem I have just about resolved with a new, +industrial-strength back end. + +With that in place, I am keen to improve my general compliance: I +know for sure there are one or two places where I'm not (in particular +in some of the more exotic areas of SEARCH), but will actively take +on board any politely-worded criticism or feedback. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: +David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +On the menu of a Belgian cafe: + "Cream dognuts." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22768.mbox:2,S new file mode 100644 index 00000000..ef9c094f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22768.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 6 11:27:19 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DED0EDA.3030303@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> + <4DEC1C93.24755.853F5AE5@David.Harris.pmail.gen.nz> + <4DEC5CC4.5010507@BusCom.net> + <201106060837.2YFKV00@c.mx.BCN-servers.us> + <4DED0EDA.3030303@BusCom.net> +Message-ID: + +On Mon, 6 Jun 2011, Lynn W. Taylor wrote: +> Testing with Pine makes an incredible amount of sense. + +Don't make the mistake of assuming "it only affects Pine, so it isn't +important or it must be a bug in Pine." + +Pine is like a C compiler that spews hundreds of errors for the tiniest +infraction, compared to those that issue a warning that quickly scrolls +off the screen and is ignored because an object file was still generated +(only problem is, the object file is bad code). + +> One of the things pushing IMAP is mobile. + +You're in for some fun and laughter. + +For mobile, you generally want push type update strategies, whereas IMAP +is fundamentally pull. The problem is that push is a disaster if there's +a NAT between the client and the server (and there usually is). Most NATs +assume that all protocols are pull. + +Guess what happen when you try to serve two masters with opposite demands. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22772.mbox:2,S new file mode 100644 index 00000000..a0ec2ea4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22772.mbox:2,S @@ -0,0 +1,103 @@ +MBOX-Line: From blong at google.com Wed May 18 14:36:48 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Beat up on Gmail +Message-ID: + +changed the subject to not distract from the main thrust of the original thread. + +On Wed, May 18, 2011 at 11:44 AM, Mark Crispin wrote: +> On Wed, 18 May 2011, Brandon Long wrote: +>>> +>>> 1. Allowing non-ASCII characters in keywords +>> +>> Note this is one of the main reasons we didn't map our labels to +>> keywords in the Gmail IMAP implementation. ?That, and the majority of +>> clients don't really expose keywords to the user in any real fashion. +> +> The problem is that in doing so, you forked IMAP in a way that causes +> trouble to compliant clients in this regard, and breaks compliant clients +> due to violations of the specification elsewhere. + +I think this is a difference of opinion and not of fact. Obviously +Gmail and IMAP have different models of a mailbox, and our +implementation had to bridge these two models. You're implying that +we should have had folders which had no analogue in the web interface, +and we should have exposed IMAP labels as keywords and somehow solved +the same problem that this thread was asking about, perhaps as base32 +encoded keywords. No client our users actually used would have done +anything with the keywords, and our users would have been presented +with a single folder with all of their mail in it, which for some +users would have been a million messages... and let me tell you how +well most clients handle folders of that size. + +> This is deja vu of Microsoft's 1990s "Embrace, Extend, Destroy". The +> difference is that Microsoft's code has more bugs than a Manhattan +> basement. ?Google, on the other hand, just doesn't seem to care about +> compliance. + +I wasn't aware that we were particularly out of compliance. I'm sure +that we are in some subtle ways, but the IMAP spec is fairly broad in +interpretation. There was no compliance test we could use as we were +developing the service, the best we could do was compare against the +clients we had access to, many of which have their own compliance +issues that we had to work around as best we could. We know about +http://imapwiki.org/ImapTest, though it came out after our initial +work. It looks like their last score for us from 3 years ago isn't +all that great, I had thought when I last looked at it we weren't that +bad, so perhaps it would behoove us to see what we can do about +improving that. + +>> We do store keywords as labels which aren't visible in our web +>> interface, mostly because IMAP clients rarely used keywords to store +>> anything particularly user visible. +> +> That is the case if you define "IMAP clients" as Outlook and Thunderbird. +> Yes, I am aware that is the definition as used at Google. + +At the end of the day, what our users care about is that the system +works for them. Strictly adhering to a spec that breaks things for +our users isn't a viable option. That said, those clients aren't +actually that high on the list, looks like they're 7th & 9th. Mobile +clients dominate, and Thunderbird is the second most popular desktop +client behind Apple Mail. + +I'm sure there is some self-reinforcing in those stats, of course, +because a client that really doesn't work well isn't likely to be +used. Its also not easy to identify clients. The popularity of +mobile clients is also somewhat expected as most people would use the +web interface of a web mail product. + + + +> The extensions are not a problem so much as it is the other things. +> However, you could done that functionality within the framework of +> standard IMAP, without any extension; and then the functionality would be +> used by standard clients without requiring specific knowledge of Gmail. + +As this thread points out, its not actually possible to handle unicode +label names as keywords without a bunch of challenges. Maybe if we'd +just started putting out ASTRINGs instead of ATOMs, no clients would +care, but that's certainly not compliant. It would also mean a +greatly increased bandwidth to give clients something they'd never +use. Already, the typical FETCH 1:* (UID FLAGS) command that many +clients use when they first open a folder can generate 6MB of download +on a 100k message folder, adding our labels as keywords would probably +double that. + +> It just requires creativity and understanding; and the latter requires +> experience. ?Too bad that Google sacked Brian Reid. + +Wow is that left field. + +In any case, I'm happy to discuss our reasoning for particularly +implementation choices or incompatibilities. I'm also willing to file +bugs in cases where we're out of compliance by accident. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22784.mbox:2,S new file mode 100644 index 00000000..55ee8b58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22784.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From DCroke at shoretel.com Thu Feb 17 09:55:41 2011 +To: imap-protocol@u.washington.edu +From: Darren Croke +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] detecting new messages +Message-ID: <2CA53ECF4094AB4D8BDC7C60A75B1C02110BEAFC52@hawaii.shoretel.com> + +My apologies if this question has been asked before (I assume it has) but I'm not having any luck finding an answer in the archives. + +I'm struggling to rationalize the following two statements in RFC 3501: + + +Section 2.3.1.1 states: Note: The next unique identifier value is intended to provide a means for a client to determine whether any messages have been delivered to the mailbox since the previous time it checked this value. + + + +Section 6.3.10 states: The STATUS command MUST NOT be used as a "check for new messages in the selected mailbox" operation (refer to sections 7, 7.3.1, and 7.3.2 for more information about the proper method for new message checking). + + + +If both these statements are true, what is the recommended method to retrieve the next unique identifier value from a server? + + + +Thanks, + +Darren + + + +________________________________ +This e-mail and any files transmitted with it are ShoreTel property, are confidential, and are intended solely for the use of the individual or entity to whom this e-mail is addressed. If you are not one of the named recipient(s) or otherwise have reason to believe that you have received this message in error, please notify the sender and delete this message immediately from your computer. Any other use, retention, dissemination, forwarding, printing, or copying of this e-mail is strictly prohibited +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22796.mbox:2,S new file mode 100644 index 00000000..7874de44 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22796.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From dave at cridland.net Mon Oct 4 13:03:42 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAA0F5C.7030009@lists.grepular.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> +Message-ID: <11166.1286222622.375011@puncture> + +On Mon Oct 4 18:31:08 2010, Mike Cardwell wrote: +> On 04/10/2010 18:18, Sabahattin Gucukoglu wrote: +> +> > Maybe my hubris got the better of me, but I didn't bargain for a +> complete surprise. Well, anyway, we know now why Apple does not +> implement IMAP IDLE in iOS. I've clearly been spending too much +> time around the IETF, to find Mr. Job's explanation to be +> completely incomprehensible. :-) +> > +> > (Please let me know if the Message/RFC822 part didn't come +> through right - thanks.) +> > +> > I want to ask anybody who feels strongly to the contrary to +> please not attack the sender (and the messenger either if you can +> help it :-) ). I guess I'm stuck waiting 15 minutes for new mail +> notifications, and running my battery down. I'm not forwarding my +> mail anywhere or running Exchange (or a clone). The latter, in +> particular, is a power-hungry option ... +> +> This makes complete sense. In order to use IMAP Idle on a phone, it +> would have to keep a TCP connection open, and therefore a 3G +> connection +> open. There's a reason why phone makers advertise separate stand +> by, and +> call times for battery usage. If IMAP idle were being used, the +> phone +> would never enter stand by mode, and would eat the battery within a +> few +> hours. +> +> +That's somewhat ill-informed, I'm afraid. I did quite a bit of +research into this for XMPP, and I captrued most of the findings in +XEP-0286. + +The "3G session" does need to stay open, but it can stay in Idle, or +PCH, modes. These cost in the region of 8mA. + +Small notifications - including the EXISTS and FETCH FLAGS that IDLE +typically emits from the server - will only raise the 3G session to +FACH mode. If the handset is forced into FACH mode constantly, +this'll drain the battery in around 7 hours, using around 140mA. + +Only if the data size reaches a certain (small) threshold - about 128 +octets typically - will the radio rise to DCH mode, where the drain +is around 380mA - sufficient to drain the battery in three hours. + + +> I considered building a system for Android that works the same way +> that +> push mail on the iPhone works. When an email comes in, an SMS would +> be +> sent to the phone. That SMS would be hidden from the user, but would +> advise the phone to wake up and poll for new email. The only +> problem is, +> it costs money to send SMS's. + +That will cost considerably more power, since it requires +establishment of the 3G association, which will cost much more power +(and time) than simply raising the state. + +I'd also note that Apple/Yahoo's push notification system still, as +far as I'm aware, contains a truly pathetic security hole. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22801.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22801.mbox:2,S new file mode 100644 index 00000000..7fde8fdf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22801.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From dave at cridland.net Tue Aug 31 08:38:11 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] "Multiple Commands in Progress" real life + support and ambiguity questions +In-Reply-To: <1283267773.6489.449.camel@kurkku.sapo.corppt.com> +References: <4C7A2AB6.6070405@lists.grepular.com> + + <2721.1283156569.612563@puncture> + <1283267773.6489.449.camel@kurkku.sapo.corppt.com> +Message-ID: <2639.1283269091.650570@puncture> + +On Tue Aug 31 16:16:12 2010, Timo Sirainen wrote: +> On Mon, 2010-08-30 at 09:22 +0100, Dave Cridland wrote: +> > On Sun Aug 29 19:31:58 2010, Mark Crispin wrote: +> > > Few, if any, IMAP servers will execute commands out of order. +> > > +> > I don't know of any for certain, but if anyone's implementation +> does, +> > it'll be Arnt/AMS's. +> +> If a command starts blocking on client output (like a large enough +> FETCH) then Dovecot starts running the next command. There are a few +> advantages, although possibly small enough that they don't matter: +> +> 1. Less latency, because any disk I/O is started while the previous +> output is still being sent to client. +> +> 2. Kernel might be able to reorder disk I/O better since it knows +> more +> what data is going to be read. +> +> 3. Maybe the client wanted to do a couple of STATUSes in the middle +> of a +> large fetch, and could update the UI faster while FETCH is still +> going +> on.. +> +> Of course, 1-2 can also be implemented by starting the commands but +> delaying/buffering client output, and clients can do 3 with another +> IMAP +> connection. + +Isode M-Box delays writing over the network until either: + +a) The buffer is "big". + +b) There are no commands left to process. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22804.mbox:2,S new file mode 100644 index 00000000..5de7e00c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22804.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From tss at iki.fi Fri Jul 9 20:33:05 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: +References: <4C37C781.5060700@sun.com> + + + + <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> + +Message-ID: <23D24327-5E0D-4868-875C-B5CEFF8A3CE3@iki.fi> + +On 10.7.2010, at 4.25, Mark Crispin wrote: + +> On Sat, 10 Jul 2010, Timo Sirainen wrote: +>> I'm looking forward to RFC 5738bis. +> +> Better, get rid of RFC 5738 and replace it with something that isn't a +> piece of crap. + +Kind of why I'm looking forward to it. 5738 is way too complex. But since we're talking about it, what's your opinion on what stuff it should convert to UTF8? Mailbox names is simple enough, ENVELOPE/BODY/BODYSTRUCTURE should be fine too, but I'm less sure about downloading/saving the actual headers/body. diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22807.mbox:2,S new file mode 100644 index 00000000..7d6c51a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22807.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 00:59:37 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C11E96E.7080502@gulbrandsen.priv.no> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <4C11E96E.7080502@gulbrandsen.priv.no> +Message-ID: <201006110959.37166.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 09:44:46 Arnt Gulbrandsen wrote: +> I implemented that a while ago, but I chose to implement only UID MOVE +> (an atomic uid-based move being what was needed), and you chose to +> specify only MOVE. Why not UID? + + + Additionally, MOVE command can be directly preceeded by UID command, + the sequence set argument is then treated as unique identifiers + sequence instead of message sequence numbers as defined in [IMAP4] + paragraph 6.4.8. + + + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22810.mbox:2,S new file mode 100644 index 00000000..229de7d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22810.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From koug at intracom.gr Wed May 5 03:42:08 2010 +To: imap-protocol@u.washington.edu +From: John Kougoulos +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] 2Gb size limit +In-Reply-To: +References: + + +Message-ID: + + + +On Wed, 5 May 2010, Eduardo Lu?s wrote: + +> No, it's not a 32bit OS feature. +> I'm using Slackware 12.1 on a 64bits machine on a EXT3 filesystem. +> I'm working with other files much bigger than 2Gb and with no +> problem... some of them with 50Gb.. +> +> This is a feature of UW, I just would like to know if it has a newer +> version with this problem fixed... + +Maybe the mix format solves this issue, but I haven't tested it yet. + +John diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22813.mbox:2,S new file mode 100644 index 00000000..1f75ccde --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22813.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From mail at sabahattin-gucukoglu.com Sat Jan 16 20:10:51 2010 +To: imap-protocol@u.washington.edu +From: Sabahattin Gucukoglu +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] draft-daboo-srv-email: POP3S/IMAPS? +Message-ID: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + +Hi all, + +Just had a look at draft-daboo-srv-email, all very pleasant. I think service weights have been discussed already but: + +Why does the spec provision for IMAPS and POP3S? Shouldn't we be seriously discouraging that usage? Is there some reason to keep them, even if "deprecated"/discouraged? Right now the only reason I know of is IMAP clients which send out LOGIN complete with password before they can be stopped; for that we have the LOGINDISABLED capability. + +Cheers, +Sabahattin + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095071.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095071.22817.mbox:2,S new file mode 100644 index 00000000..860b9708 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095071.22817.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tss at iki.fi Tue Dec 29 09:00:49 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +Message-ID: <1262106049.26478.745.camel@timo-desktop> + +Does anyone think these are actually useful? If server allows creating +"foo/bar" without foo existing, is it actually useful to allow "CREATE +foo/" and have it create a \Noselect "foo" without any children? This +feature is beginning to make some things difficult for me, so I was +planning on removing support for it completely (and actually it's never +been supported by Maildir backend and I haven't heard complaints). Users +also seem to find \Noselect mailboxes in general confusing.. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22595.mbox:2,S new file mode 100644 index 00000000..8642dc2a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22595.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From Pidgeot18 at verizon.net Sun Mar 15 08:05:46 2015 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: <55050A00.60405@brokersys.com> +References: <20150313211600.25485.qmail@ary.lan> + + + <55050A00.60405@brokersys.com> +Message-ID: <55059FCA.8000006@verizon.net> + +On 3/14/2015 11:26 PM, Jonathan Guthrie wrote: +> Beyond that, and beyond the procedures necessary to set it up, I have +> no knowledge of DKIM. I have no idea why Mr Levine assumes that +> because I have a passing familiarity with RFC 3501 and RFC 2822 that I +> will necessarily have detailed knowledge of the contents of RFC 6376. +> Upon reading his emails and reflecting on how such things work, I do +> understand that a lack of signature is semantically equivalent to an +> invalid signature, but I don't understand why there is an assumption +> that this knowledge should be intuitively obvious to the casual +> observer, even on a list such as this. + +If you're going to complain about people doing the wrong thing and +breaking the specification, common sense says that you should understand +what the specification actually says you're supposed to be doing. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22641.mbox:2,S new file mode 100644 index 00000000..1d7fc605 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22641.mbox:2,S @@ -0,0 +1,111 @@ +MBOX-Line: From blong at google.com Fri Mar 21 00:08:51 2014 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] Actually deleting messages from Gmail +In-Reply-To: <532BDD26.8050801@hireahit.com> +References: <532BC3A0.7060402@hireahit.com> + + <532BDD26.8050801@hireahit.com> +Message-ID: + +A COPY to trash will be sufficient, though the message won't actually +disappear from the other folder until its allowed by the IMAP spec. UID +COPY to trash will generate an EXPUNGE event, yes. + +Brandon + + +On Thu, Mar 20, 2014 at 11:33 PM, Dave Warren wrote: + +> I could swear that, in the past, deleting the All Mail label actually +> moved the message into the trash, whereas deleting from any other folder +> only removed the label. +> +> In this case, the desired behaviour is to remove the message from the +> account completely, not just to shuffle labels. I was more wondering if I +> need to actually "move" to the Trash folder (copy, set \deleted, expunge) +> or just copy and trust that Gmail does the rest? It seems like just doing a +> copy cuts the number of needed commands to 1/3rd, and yields the same +> result. +> +> +> +> On 2014-03-20 23:07, Brandon Long wrote: +> +> You can't delete the all mail label from a message in Gmail. Adding the +> spam or trash label will hide the message from all other folders. +> +> If the all mail folder is the last folder the message is in and you set +> your "When a message is marked as deleted and expunged from the last +> visible IMAP folder" setting to something other than the default, it should +> disappear from the all mail folder. +> +> As for what should clients do? That really depends on the client. If +> the user (or the app) really wants the message deleted, then moving it to +> the trash folder is the right thing to do. If the user is just trying to +> remove the message from a single folder, \deleted & expunge is the right +> thing. +> +> Brandon +> +> +> On Thu, Mar 20, 2014 at 9:47 PM, Dave Warren wrote: +> +>> I was sure that when I tested previously, deleting a message from +>> "[Gmail]/All Mail" would cause Gmail to place the message in the Trash, +>> removing it from all labels, but testing today, this doesn't seem to be the +>> case, the message reappears without the \Deleted flag after being expunged: +>> +>> R00005 SELECT "[Gmail]/All Mail" +>> <...> +>> * 1432 FETCH (UID 92405) +>> * 1433 FETCH (UID 92406) +>> * 1434 FETCH (UID 92407) +>> <...> +>> +>> R0004F UID STORE 92407 +FLAGS (\Deleted) +>> * 1434 FETCH (FLAGS (\Deleted) UID 92407) +>> R0004F OK Success +>> R00050 EXPUNGE +>> R00050 OK Success +>> R00051 UID STORE 92405 +FLAGS (\Deleted) +>> * 1432 FETCH (FLAGS (\Seen \Deleted) UID 92405) +>> R00051 OK Success +>> R00052 EXPUNGE +>> R00052 OK Success +>> +>> R00054 SELECT "[Gmail]/All Mail" +>> <...> +>> * 1432 FETCH (UID 92405) +>> * 1433 FETCH (UID 92406) +>> * 1434 FETCH (UID 92407) +>> <...> +>> +>> * 1432 FETCH (UID 92405 RFC822.SIZE 14202 INTERNALDATE "21-Mar-2014 +>> 03:19:31 +0000" FLAGS (\Seen) BODY[HEADER] {2044} +>> <...> +>> * 1434 FETCH (UID 92407 RFC822.SIZE 14173 INTERNALDATE "21-Mar-2014 +>> 03:55:43 +0000" FLAGS () BODY[HEADER] {2056} +>> +>> Long-term we're looking at copying messages into the Trash the way Gmail +>> expects when we actually intend to remove a message. In this case, is there +>> any advantage in setting \Deleted or issuing an EXPUNGE, or is it best to +>> simply copy and let Gmail do the rest? +>> +>> -- +>> Dave Warrenhttp://www.hireahit.com/http://ca.linkedin.com/in/davejwarren +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +> +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22701.mbox:2,S new file mode 100644 index 00000000..b536486c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22701.mbox:2,S @@ -0,0 +1,104 @@ +MBOX-Line: From slusarz at curecanti.org Tue Nov 27 12:32:29 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <1354010952.13681.140661158661065.2086C60B@webmail.messagingengine.com> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + + <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> + + <1354010952.13681.140661158661065.2086C60B@webmail.messagingengine.com> +Message-ID: <20121127133229.Horde.X3XMkGM8iZ5mPR4tbjUveA1@bigworm.curecanti.org> + +Quoting Bron Gondwana : + +> The interesting part for QRESYNC is remembering "tombstones" for EXPUNGED +> messages for a while to keep it cheap. + +[snip] + +> If anyone else is interested, I can write up something about how Cyrus +> implements QRESYNC now, such that it can clean up old records, yet still +> be efficient for clients most of the time. + +I have an interest in this logic, if just for the fact that this issue +came up recently. + +We provide ActiveSync mail syncing through our IMAP library. +(Warning: I'm not an ActiveSync expert: this is my knowledge as +provided to me by a guy who is). To sync a remote ActiveSync client, +it needs to be determined which messages have been expunged since the +previous sync. Fantastic if QRESYNC is available - we can just use +VANISHED so there is no need to keep the UID list at the ActiveSync +controller layer. + +However, we were seeing transactions like the following (on a dovecot server): + +- HIGHESTMODSEQ as known by activesync client: 53000 +- HIGHESTMODSEQ on IMAP server: 54000 + +a uid fetch 1:* UID (VANISHED CHANGEDSINCE 53000) +* VANISHED (EARLIER) 1:37308,37310:40788,40791:41032,41034:41083 +a OK Fetch completed. + +Yikes! That's over 40,000 UIDs returned. Sure enough, there seemed +to be a tipping point where the "expected" VANISHED return - only +those UIDs actually removed between 53000 and 54000 - was achieved: + +a uid fetch 1:* UID (VANISHED CHANGEDSINCE 53881) +* VANISHED (EARLIER) 1:37308,37310:40788,40791:41032,41034:41083 +a OK Fetch completed. +b uid fetch 1:* UID (VANISHED CHANGEDSINCE 53882) +* VANISHED (EARLIER) 37309,41029:41030,41047:41083 +b OK Fetch completed. + +Turns out that dovecot purges old EXPUNGE records every so often from +the cache. Discussion was made of ways of possibly improving this +behavior, and I believe the idea of tombstones/checkpoints came up. + +Note: I understand the above VANISHED call is not the most efficient. +I told the ActiveSync guy that it would be good practice to also +include the lowest/highest UID known at a given MODSEQ to make the +VANISHED call more efficient. However, this still leaves open the +possibility of a large UID return range, especially if a user has an +old message in their mailbox. e.g. the above example could still +possibly look like: + +a uid fetch 1000:41100 UID (VANISHED CHANGEDSINCE 53800) +* VANISHED (EARLIER) 1001:41032,41034:41083 +a OK Fetch completed. + +This could be a limitation of ActiveSync, but the problem comes that +this entire list of UIDs needs to be sent to the remote client. And +if that remote client is a mobile device, you are causing a huge +amount of traffic to be pushed across a wireless connection, and this +huge amount of data needs to be processed on the remote device. This +is potentially an expensive action, both monetary (bandwidth cost), +UI-wise (longer time to resync), and battery wise if the mobile client +is using this. + +As a client author I would settle knowing that at most only, say, +1,000 spurious UIDs will ever be returned from a VANISHED command. +The above behavior can be worked around if the list of UIDs is kept at +the activesync connector level. But that may not be desirable in any +given implementation. + +Wondering your theory behind this as a server author. How much more +storage does a tombstone regime require on the server? Is there a way +to optimize this - i.e. maybe tombstones aren't kept unless/until a +client actually issues a VANISHED command in a mailbox. What is a +reasonable checkpoint/tombstone range? Is this something that the +CHECK command could potentially be useful for? + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22743.mbox:2,S new file mode 100644 index 00000000..9b851e17 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22743.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 21 05:58:06 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + <20120321101517.GA31585@launde.brong.net> + +Message-ID: <1332334686.12998.140661052113677.4202AE85@webmail.messagingengine.com> + + + +On Wed, Mar 21, 2012, at 08:13 AM, Barry Leiba wrote: +> >> That most clients send a lot of NOOP commands basically speaks to most +> >> clients being inefficient users of IMAP. ?With a well written client +> >> and an active user, you might never see NOOPs, and it's seriously +> >> broken server behaviour to only update the message list when you see a +> >> NOOP. +> ... +> > And we instructors have a saying... if one person in your class makes a +> > mistake, it might be their fault - but if a lot of them get it wrong then +> > IT IS YOUR FAULT. ?You didn't cue properly. ?Fix it next time you teach +> > that track. +> > +> > Lots of clients get IMAP wrong... +> +> You're mistaking lots of clients making inefficient use of IMAP +> because their developers took POP clients and modified them, and had +> no incentive to *make* clients that use IMAP efficiently... for those +> who "got it wrong" for some other reason. Be careful about the +> assumptions you make. + +There are a lot of clients out there speaking bad IMAP of various sorts. +You just have to read a protocol trace from just about any client and +you'll see it doing crazy things. You can sort of deduce the model at +the other end which is causing it to do things that way... + +It's not just ex-POP clients. Though they are indeed spectacularly +ugly in their behaviour. + +One reason for that is that a simple client is going to have different +codepaths for handling different commands - they'll send a FETCH and +expect to see just the results they asked for. If they get something +unexpectedly unsolicited, then they're probably just going to drop it. + +It's exactly like waving your arms in some complex pattern and wondering +why most of the class didn't figure out how you wanted them to move next, +even if you happened to drop the name of the move somewhere in the last +5 seconds of random crap you were spouting. I've seen it done. I've +done it myself. The mystified look on the participants' face followed +by a combination of frustration at themselves and annoyance at you is +quite distinct. + +And we get specifically warned about that in training, and told that it +is always your fault. You didn't give them what THEY needed. The goal +as instructor is to make the participants feel successful. They get +that when they do something and it happens to be right. The trick is +to say and do just the right things that they make the right move +without even thinking about it... then it's big smiles all around and +they go away happy. + +> And I'm not going to get into further discussion of this: it's +> pointless and endless. + +I did say it was my "other" hobby... + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22756.mbox:2,S new file mode 100644 index 00000000..e16b85af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22756.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 6 14:21:10 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: +Message-ID: <5142DE21-C556-4115-B58C-7B3C51DCCFE8@mac.com> + + +On Nov 6, 2011, at 11:12 PM, Lyndon Nerenberg (VE6BBM/VE7TFX) wrote: + +>> Does any actual IMAP clients care? +> +> It's not optional, so as a server implementor you are +> required to send something. What a client does with it +> is the client's business. +> +> Not sending it is a protocol violation, and a well behaved +> client is perfectly free to drop the connection at that point +> due to the protocol violation. + +Fair enough. So, for example, to keep with the letter of the spec if not its spirit, a square bracket followed by 2 trailing spaces would do, right? + +OK [UNSEEN 123] + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22759.mbox:2,S new file mode 100644 index 00000000..8ea6dbee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22759.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From mrc+imap at panda.com Sun Oct 30 20:58:06 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <1D4C80A2-BD6A-4888-9A21-29D746896D97@ghoti.org> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + <1D4C80A2-BD6A-4888-9A21-29D746896D97@ghoti.org> +Message-ID: + +On Sun, 30 Oct 2011, Ashley Clark wrote: +> The server responding with the matching 0 origin was running Dovecot. I +> don't know the implementation of the other server and don't have ready +> access to UW or Cyrus. + +Well, I think that you have gotten your answer. I can tell you that Panda +(nee UW) does the same, and I am certain that Cyrus does. + +> It seems that the origin must be relative to the start of the part that +> is being requested in both the request and response but I didn't see it +> clearly stated in the RFC. Is this a safe assumption? + +Yes. And if you think about it, no other interpretation makes any sense at +all. The IMAP specification was not developed capriciously; everything in +IMAP has a reason why it is that way. In a few matters of syntax, it was +because of compatibility with the past. But in the case of a partial +specifier, the only thing that could possibly be useful is the offset from +the start of the part - particularly when you consider asynchronous +multiple partial fetches and subseqeunt reassembly. + +In general, you will notice in IMAP that the types in fetch responses +mirror what was requested. That is by design. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22768.mbox:2,S new file mode 100644 index 00000000..e04b0d55 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22768.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tjs at psaux.com Mon Jun 6 14:15:09 2011 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DEBDFF5.9000301@BusCom.net> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> <4DEBBAB3.2030301@BusCom.net> <4DEBBEC1.3080600@BusCom.net> <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> +Message-ID: <4DED435D.9070900@psaux.com> + +On 6/5/11 12:58 PM, Lynn W. Taylor wrote: +> The mailstore is in RFC-2822 format. There is a UID, and it's cast in +> jello -- it can be changed so that the POP3 server uses an IMAP +> compatible UIDL. I think I can keep the UIDs unique and ascending as +> required in the RFC. + +Ancient versions of Cyrus used only the UID as a UIDL value, and it can +cause problems when a user is moved from one POP server to a new host. +POP has no equivalent to UIDVALIDITY, and the only way to blow the cache +is to change all the UIDL values. + +If you use the UIDVALIDITY+UID as a UIDL scheme, that works pretty well. + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22772.mbox:2,S new file mode 100644 index 00000000..5d3c4101 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22772.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From blong at google.com Wed May 18 14:47:38 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110518210716.GA12636@brong.net> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> +Message-ID: + +On Wed, May 18, 2011 at 2:07 PM, Bron Gondwana wrote: +> On Wed, May 18, 2011 at 11:44:54AM -0700, Mark Crispin wrote: +>> On Wed, 18 May 2011, Brandon Long wrote: +>> >And this was our eventual solution. ?We don't expect clients to +>> >implement our extensions for this, but since IMAP has become the +>> >defacto Gmail API, it became necessary to expose some Gmail specific +>> >data over IMAP for non-traditional applications. +>> +>> Too bad that the Gmail server is an incompatible and non-compliant fork +>> that is (at best) barely usable with a standard IMAP client. ?This has +>> obliged most uses of standard IMAP clients to give up on using the Gmail +>> IMAP server in favor of POP or POP-over-IMAP download/delete. +> +> What annoys me the most is no CONDSTORE/QRESYNC support, so you +> can't create an efficient gmail client - you need to sync all the +> flags, every time. ?Gmail is big enough that I'm fairly willing to +> special case it in exchange for big performance wins, but there's +> just no way to be sure you have all the changes. + +Its on our roadmap, though it requires some fairly extensive changes +to our backend store. May not happen until next year. + +CONDSTORE was published when we started, but QRESYNC wasn't. +CONDSTORE would have been a lot of problems on our existing backend, +and it didn't appear any clients implemented it. That's one issue +we've had on whether to expend the effort on any particular extension +is knowing whether or not any clients would actually take advantage of +it. + +We do try to be fast for the traditional UID FLAGS fetch, but its +still O(messages) so it can get slow for large mailboxes, and the data +transfer isn't anything to sneeze at either. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22784.mbox:2,S new file mode 100644 index 00000000..09b431f5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22784.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From tss at iki.fi Thu Feb 17 10:05:34 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] detecting new messages +In-Reply-To: <2CA53ECF4094AB4D8BDC7C60A75B1C02110BEAFC52@hawaii.shoretel.com> +References: <2CA53ECF4094AB4D8BDC7C60A75B1C02110BEAFC52@hawaii.shoretel.com> +Message-ID: <5398C04A-99D8-47E5-ABB8-AE10B168F3C4@iki.fi> + +On 17.2.2011, at 19.55, Darren Croke wrote: + +> Section 2.3.1.1 states: Note: The next unique identifier value is intended to provide a means for a client to determine whether any messages have been delivered to the mailbox since the previous time it checked this value. +> +> Section 6.3.10 states: The STATUS command MUST NOT be used as a "check for new messages in the selected mailbox" operation (refer to sections 7, 7.3.1, and 7.3.2 for more information about the proper method for new message checking). +> +> If both these statements are true, what is the recommended method to retrieve the next unique identifier value from a server? + +Use STATUS for getting UIDNEXT for non-selected mailboxes. For selected mailbox, hopefully you don't care about knowing the UIDNEXT value. If you do, see this thread: http://mailman2.u.washington.edu/pipermail/imap-protocol/2011-January/001339.html + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22796.mbox:2,S new file mode 100644 index 00000000..1423f8e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22796.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From dave at cridland.net Mon Oct 4 13:11:28 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> +Message-ID: <11166.1286223088.054596@puncture> + +On Mon Oct 4 19:32:53 2010, Sabahattin Gucukoglu wrote: +> On 4 Oct 2010, at 18:56, Mark Crispin wrote: +> > The real problem with IDLE is that it is NAT-unfriendly. Most +> NAT boxes +> > drop the mapping after a period of client inactivity, and send a +> TCP RST +> > to the server if the server resumes activity before the client. +> Most +> > users don't see this, since if the client resumes activity first +> the same +> > mapping is created and no RST is sent. +> +> Yes, indeed, this argument is the most convincing I've actually +> seen against IDLE, and the compromise is to set a time interval +> that gets around the NAT's braindead behaviour. Since most clients +> are happy to allow users to specify a polling frequency that +> determines the maximum time between checks, it's not a stretch to +> turn this into a between DONE-IDLE timer. The solution is IPv6, of +> course. + +Mobile operators are catching up in this respect. I'm told than 5-10 +minutes is fine for keepalives, now. In fact, the pressure from +"real" mobile developers on application protocol developers has been +in reducing keepalives, and placing them under the control of clients +(so they can be synchronized to reduce power requirements). + +As more push protocols are developed - and with WebSockets on the +horizon, that's a given - then it's likely that users will discover +that applications give them longer battery life on networks with a +longer NAT timeout, and this may turn into a marketable feature. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22804.mbox:2,S new file mode 100644 index 00000000..5dfd0e01 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22804.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Jul 9 20:28:08 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> +References: <4C37C781.5060700@sun.com> + + + + <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> +Message-ID: + +> But it's not just the line folding. All LWSP containing tabs, spaces and +> CRLFs are converted into a single space by many servers (IIRC also +> UW-IMAP). RFC 822 says that all LWSP is equivalent to a single space in +> structured fields, but subject is unstructured field. + +It's tricky dealing with the mapping from *822 to IMAP envelope when faced +with CRLF. For structured fields you can collapse according to FWS and +punt. For the others the mapping is undefined. (Well, they're all +undefined for that matter.) + +It's a safe bet that IMAP clients aren't going to deal well with ENVELOPE +fields that contain line breaks, so I think it's reasonable to replace +CRLF with SP in an ENVELOPE response. For the places where the visual +presentation of a line break really matters, the client will not be +parsing the content anyway (i.e. the Fetch pass-thru). + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22807.mbox:2,S new file mode 100644 index 00000000..7e922390 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22807.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 11 00:56:47 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C11EBE9.5070004@psaux.com> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <4C11E96E.7080502@gulbrandsen.priv.no> <4C11EBE9.5070004@psaux.com> +Message-ID: <4C11EC3F.7030101@gulbrandsen.priv.no> + +On 06/11/2010 09:55 AM, Tim Showalter wrote: +> Looks like it's there -- +> +>> Additionally, MOVE command can be directly preceeded by UID command, +>> the sequence set argument is then treated as unique identifiers +>> sequence instead of message sequence numbers as defined in [IMAP4] +>> paragraph 6.4.8. + +Oh, I didn't notice that. The grammar's wrong then. + +> I'm interested in seeing this move forward. It would help both my +> company's server and our clients. + +Why? Atomicity or something else? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22810.mbox:2,S new file mode 100644 index 00000000..5f65bb17 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22810.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From mrc+uw at panda.com Wed May 5 12:20:21 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] 2Gb size limit +In-Reply-To: +References: + + +Message-ID: + +On Wed, 5 May 2010, Eduardo Lu?s wrote: +> No, it's not a 32bit OS feature. + +Actually, it is your OS. + +UW IMAP uses unsigned longs (it was largely written before off_t was +universally defined) which would support at least 4GB. + +The problem is that off_t is defined on many systems as an int32, and the +lseek() call takes an off_t. This is the cause of the 2GB limit. + +On other systems, off_t is defined as an int64. The limit should be 4GB, +not 2GB, on those system. + +If you have a int32 off_t, then you need to do one of the following: + +On some systems, you must change everything to use lseek64() call and +off64_t. + +On other systems, it is possible to fix lseek() and off_t by defining +_FILE_OFFSET_BITS to 64. That will make off_t be an int64. If ulong on +your system is a uint32, that should give you up to a 4GB limit; if ulong +on your system is a uint64 then you win big. + + +Personally, I think that it is completely, utterly, insane to have a flat +mailbox file greater than 2GB; or for that matter much greater than 100MB. +Flat file formats were never intended to scale to such sizes. + +You should use the mix format instead, which breaks the mailbox into +multiple files that are either 1MB or the size of a single message, +whichever is larger. + +Now, if you have a single message which is greater than 2GB (or 4GB), then +you have other problems. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22813.mbox:2,S new file mode 100644 index 00000000..76eca2b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22813.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Jan 17 07:55:54 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> +Message-ID: <30kZRcRQj+KHOwnouaxaCw.md5@lochnagar.gulbrandsen.priv.no> + +Sabahattin Gucukoglu writes: +> Why does the spec provision for IMAPS and POP3S? Shouldn't we be +> seriously discouraging that usage? + +I'd like draft-daboo-srv-email to be the smallest reasonable change +necessary in order to add srv autoconfiguration in clients. + +Trying to accomplish two things is one too much. + +Feel free to suggest wording for an informational section discouraging +imaps/pop3s/smtps. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22817.mbox:2,S new file mode 100644 index 00000000..d23e290b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22817.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc+uw at panda.com Tue Dec 29 09:54:46 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: <1262106049.26478.745.camel@timo-desktop> +References: <1262106049.26478.745.camel@timo-desktop> +Message-ID: + +On Tue, 29 Dec 2009, Timo Sirainen wrote: +> Does anyone think these are actually useful? If server allows creating +> "foo/bar" without foo existing, is it actually useful to allow "CREATE +> foo/" and have it create a \Noselect "foo" without any children? + +Are you saying that the only way to do an mkdir MUST be by implicit +creation, and that if the last child is deleted the superior MUST be +rmdired? + +Note those words "MUST". They are significant to the argument. + +It is perfectly compliant for a server to treat "CREATE foo/" as meaning +"create a mailbox named foo, and ignore that trailing /". It is also +perfectly compliant for a superior to vanish if it is \NoSelect and its +last child is deleted. + +In fact, that is how my new server works. + +But that is different from requiring those behaviors. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095072.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095072.22820.mbox:2,S new file mode 100644 index 00000000..a21fbe89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095072.22820.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From mrc+uw at panda.com Mon Nov 9 20:47:54 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] "k" right in IMAP ACLs +Message-ID: + +RFC 4314 is silent on many important details of the "k" right. For +example: + +[1] If a mailbox is top-level in the hierarchy (co-equal with INBOX), + where is the "k" right to be found? + +[2] What if the parent name doesn't have an ACL? For example, consider + a hierarchical namespace in which the heirarchy delimiter is simply + a character in the name. Thus, a CREATE of a/b/c/d in no way + necessitates that a, a/b, and/or a/b/c exist; these are not only + \NoSelect names, they simply do not exist in any physical sense. Is + it supposed to search up the hierarchy, first trying a/b/c, then + a/b, then a, and finally the who-knows-where location of top-level + ACL in order to determine if there is a "k" right? + +I assume that the purpose of the "k" right is to allow a designated +administrator to create new mailboxes in a non-user shared location. +However, this lack of specificity of where the necessary ACL is to be +found for top-level names is a weakness. + +Oh yeah, and what other rights are valid for the place that holds the ACL +used to determine create of top-level mailboxes? Is it just "a" and "k"? + +Last but not least... + +What do clients that implement IMAP ACL expect from the "k" right? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22595.mbox:2,S new file mode 100644 index 00000000..6b5d32e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22595.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From brong at fastmail.fm Sun Mar 15 13:40:37 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: <55059FCA.8000006@verizon.net> +References: <20150313211600.25485.qmail@ary.lan> + + + <55050A00.60405@brokersys.com> <55059FCA.8000006@verizon.net> +Message-ID: <1426452037.1937115.240685285.7A0571FD@webmail.messagingengine.com> + +On Mon, Mar 16, 2015, at 02:05 AM, Joshua Cranmer wrote: +> On 3/14/2015 11:26 PM, Jonathan Guthrie wrote: +> > Beyond that, and beyond the procedures necessary to set it up, I +> > have no knowledge of DKIM. I have no idea why Mr Levine assumes +> > that because I have a passing familiarity with RFC 3501 and RFC 2822 +> > that I will necessarily have detailed knowledge of the contents of +> > RFC 6376. Upon reading his emails and reflecting on how such things +> > work, I do understand that a lack of signature is semantically +> > equivalent to an invalid signature, but I don't understand why there +> > is an assumption that this knowledge should be intuitively obvious +> > to the casual observer, even on a list such as this. +> +> If you're going to complain about people doing the wrong thing and +> breaking the specification, common sense says that you should +> understand what the specification actually says you're supposed to +> be doing. + +Indeed, I had some sympathy for the "if you're modifying the message +then you should be stripping out sections that you are making invalid" +theory until I read that self-righteous whine about not wanting to +bother understanding anything that is required to inter-operate with +the rest of the world these days. + +I still think it's polite to strip DKIM headers which have zero meaning +if you modify any of the fields which they sign, in the same way that +it's polite to trim the parts of a message you aren't replying to, and +post responses after what you are responding to (thanks Joshua for +doing both of those). + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22641.mbox:2,S new file mode 100644 index 00000000..f21df6e0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22641.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Mar 21 04:59:57 2014 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <1395369035.8071.97071749.6F2A6445@webmail.messagingengine.com> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> + <39b431a9-93a6-42b1-9cbe-5788d5958f43@flaska.net> + <1395369035.8071.97071749.6F2A6445@webmail.messagingengine.com> +Message-ID: + +On Friday, March 21, 2014 3:30:35 AM CEST, Bron Gondwana wrote: +> Let's not confuse things with more flags. + +Or with making the client serve the server. + +This is about making the server submit mail. So why should the client need +to do any locking? It's not particularly difficult to say "server should +lock the message appropriately to prevent duplicate or repeated submission" +and define an error code. Like this: + +C: a submit foo bar +S: a NO [ALREADYSUBMITTED] blah + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22701.mbox:2,S new file mode 100644 index 00000000..c7d12669 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22701.mbox:2,S @@ -0,0 +1,125 @@ +MBOX-Line: From blong at google.com Tue Nov 27 14:25:23 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121127133229.Horde.X3XMkGM8iZ5mPR4tbjUveA1@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + + <20121121183606.Horde.8DDdRoJ261AbQsAiMPfS4w1@bigworm.curecanti.org> + + <20121126152005.Horde.UGsoLB91esWQF9_aGi6UYQ1@bigworm.curecanti.org> + + <20121126155721.Horde.a3j2EWFDFOo-xkaflrURBQ2@bigworm.curecanti.org> + + <1354010952.13681.140661158661065.2086C60B@webmail.messagingengine.com> + <20121127133229.Horde.X3XMkGM8iZ5mPR4tbjUveA1@bigworm.curecanti.org> +Message-ID: + +On Tue, Nov 27, 2012 at 12:32 PM, Michael M Slusarz +wrote: + +> Quoting Bron Gondwana : +> +> The interesting part for QRESYNC is remembering "tombstones" for EXPUNGED +>> messages for a while to keep it cheap. +>> +> +> [snip] +> +> +> If anyone else is interested, I can write up something about how Cyrus +>> implements QRESYNC now, such that it can clean up old records, yet still +>> be efficient for clients most of the time. +>> +> +> I have an interest in this logic, if just for the fact that this issue +> came up recently. +> +> We provide ActiveSync mail syncing through our IMAP library. (Warning: +> I'm not an ActiveSync expert: this is my knowledge as provided to me by a +> guy who is). To sync a remote ActiveSync client, it needs to be determined +> which messages have been expunged since the previous sync. Fantastic if +> QRESYNC is available - we can just use VANISHED so there is no need to keep +> the UID list at the ActiveSync controller layer. +> +> However, we were seeing transactions like the following (on a dovecot +> server): +> +> - HIGHESTMODSEQ as known by activesync client: 53000 +> - HIGHESTMODSEQ on IMAP server: 54000 +> +> a uid fetch 1:* UID (VANISHED CHANGEDSINCE 53000) +> * VANISHED (EARLIER) 1:37308,37310:40788,40791:**41032,41034:41083 +> a OK Fetch completed. +> +> Yikes! That's over 40,000 UIDs returned. Sure enough, there seemed to be +> a tipping point where the "expected" VANISHED return - only those UIDs +> actually removed between 53000 and 54000 - was achieved: +> +> a uid fetch 1:* UID (VANISHED CHANGEDSINCE 53881) +> * VANISHED (EARLIER) 1:37308,37310:40788,40791:**41032,41034:41083 +> a OK Fetch completed. +> b uid fetch 1:* UID (VANISHED CHANGEDSINCE 53882) +> * VANISHED (EARLIER) 37309,41029:41030,41047:41083 +> b OK Fetch completed. +> +> Turns out that dovecot purges old EXPUNGE records every so often from the +> cache. Discussion was made of ways of possibly improving this behavior, +> and I believe the idea of tombstones/checkpoints came up. +> +> Note: I understand the above VANISHED call is not the most efficient. I +> told the ActiveSync guy that it would be good practice to also include the +> lowest/highest UID known at a given MODSEQ to make the VANISHED call more +> efficient. However, this still leaves open the possibility of a large UID +> return range, especially if a user has an old message in their mailbox. +> e.g. the above example could still possibly look like: +> +> a uid fetch 1000:41100 UID (VANISHED CHANGEDSINCE 53800) +> * VANISHED (EARLIER) 1001:41032,41034:41083 +> a OK Fetch completed. +> +> This could be a limitation of ActiveSync, but the problem comes that this +> entire list of UIDs needs to be sent to the remote client. And if that +> remote client is a mobile device, you are causing a huge amount of traffic +> to be pushed across a wireless connection, and this huge amount of data +> needs to be processed on the remote device. This is potentially an +> expensive action, both monetary (bandwidth cost), UI-wise (longer time to +> resync), and battery wise if the mobile client is using this. +> +> As a client author I would settle knowing that at most only, say, 1,000 +> spurious UIDs will ever be returned from a VANISHED command. The above +> behavior can be worked around if the list of UIDs is kept at the activesync +> connector level. But that may not be desirable in any given implementation. +> +> Wondering your theory behind this as a server author. How much more +> storage does a tombstone regime require on the server? Is there a way to +> optimize this - i.e. maybe tombstones aren't kept unless/until a client +> actually issues a VANISHED command in a mailbox. What is a reasonable +> checkpoint/tombstone range? Is this something that the CHECK command could +> potentially be useful for? + + +It also depends on the other limits of your backend. We've been thinking +about a CONDSTORE/QRESYNC system that would be based on our existing +transaction logs, for example, because otherwise trying to shoe-horn the +full IMAP concepts into our existing web optimized backend would be a +pretty expensive. But since we don't keep all transactions around forever, +we'd have to have a fake floor to our MODSEQ numbers (ie, even if a messge +hasn't changed, it will get a new MODSEQ behind the head). If your client +didn't sync frequently enough, or was too picky, it could require a +fallback to a full sync (well, full uid/flags sync, not a re-download, +hopefully). + +If you design your backend for this stuff from the start, its probably not +too bad, but how many imap servers have been written since QRESYNC was +published, and not just had it shoe-horned into an existing server. + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22743.mbox:2,S new file mode 100644 index 00000000..1779ab13 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22743.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 21 06:01:39 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +In-Reply-To: <4F69AABD.4070206@gulbrandsen.priv.no> +References: + <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> + + <4F69AABD.4070206@gulbrandsen.priv.no> +Message-ID: <1332334899.13815.140661052117053.5297D8C5@webmail.messagingengine.com> + + + +On Wed, Mar 21, 2012, at 11:17 AM, Arnt Gulbrandsen wrote: +> As long as no client ever gets to see MODSEQ 1000 for two different +> states (such as another client's half-completed command and the same +> command fully completed), everything is fine. + +That's certainly how I see it. In the extreme, you could even lazily +allocate MODSEQ only when a client requests the information (including, +obviously, a MODSEQ enabled client doing a change and expecting a new +HIGHESTMODSEQ in the response) + +But any non-MODSEQ based access to the store could not bump it at all, +so long as the next time a MODSEQ enabled client connected, the MODSEQ +got allocated to all changed things since then. + +At least, I can't see how any client could know the difference, or be +right in caring. The only points in time it can know about are right +now, and last time it did a read and got a MODSEQ out of it. Ordering +of the MODSEQs within that are unimportant (to this particular client) + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22756.mbox:2,S new file mode 100644 index 00000000..4223b7bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22756.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From brong at fastmail.fm Sun Nov 6 14:40:35 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: <5142DE21-C556-4115-B58C-7B3C51DCCFE8@mac.com> +Message-ID: <1320619235.13489.140660995471761@webmail.messagingengine.com> + + + +On Sun, Nov 6, 2011, at 11:21 PM, Petite Abeille wrote: +> +> On Nov 6, 2011, at 11:12 PM, Lyndon Nerenberg (VE6BBM/VE7TFX) wrote: +> +> >> Does any actual IMAP clients care? +> > +> > It's not optional, so as a server implementor you are +> > required to send something. What a client does with it +> > is the client's business. +> > +> > Not sending it is a protocol violation, and a well behaved +> > client is perfectly free to drop the connection at that point +> > due to the protocol violation. +> +> Fair enough. So, for example, to keep with the letter of the spec if not its spirit, a square bracket followed by 2 trailing spaces would do, right? +> +> OK [UNSEEN 123] + +Depends if you actually want your server to be used or not. + +Just say "OK" again and the world will be happy. + +Trailing meaningful whitespace is evil[tm]. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22759.mbox:2,S new file mode 100644 index 00000000..1ae4ef35 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22759.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From blong at google.com Mon Oct 31 13:45:03 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + +Message-ID: + +On Sun, Oct 30, 2011 at 6:33 PM, Mark Crispin wrote: +> It is also a safe assumption that Gmail, Yahoo, Exchange, Apple iCloud +> (iSCREAM), etc. implement IMAP incorrectly. Those companies don't care +> about implementing IMAP correctly; they only care about having something +> that talks to Outlook. If they cared, they would implement it correctly +> and hire someone competent to make it work. They don't. + +tsk tsk, haven't I said this before? Outlook isn't our primary at +all. For desktops, Apple Mail and Thunderbird are far more common, +but all desktop clients are far outstripped by mobile clients. I +imagine this is the case for most of the web mail providers, and +probably not the case for other servers. + +Though, I kind of doubt that Outlook is the primary client for +Exchange IMAP either, they probably use MAPI. + +(and we answer this one correctly too, fyi) + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22768.mbox:2,S new file mode 100644 index 00000000..b4a8cb71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22768.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 6 14:38:19 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DED435D.9070900@psaux.com> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net> <4DEBBEC1.3080600@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> <4DED435D.9070900@psaux.com> +Message-ID: + +On Mon, 6 Jun 2011, Tim Showalter wrote: +> If you use the UIDVALIDITY+UID as a UIDL scheme, that works pretty well. + +That's how I implement UIDL in my POP3 server implementations. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22772.mbox:2,S new file mode 100644 index 00000000..b7eac714 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22772.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From brong at fastmail.fm Wed May 18 15:03:32 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + +Message-ID: <20110518220332.GA17078@brong.net> + +On Wed, May 18, 2011 at 02:47:38PM -0700, Brandon Long wrote: +> Its on our roadmap, though it requires some fairly extensive changes +> to our backend store. May not happen until next year. + +Fair enough. I'm actually more interested in some of the other +stuff. I should look at how you did the threading and the unique +message ids and see if there's any way we can make it interoperate +at all with how Cyrus does GUID (sha1 of message body) and the +conversations stuff we're doing at Opera/FastMail - which is also +super non-standard. + +> CONDSTORE was published when we started, but QRESYNC wasn't. +> CONDSTORE would have been a lot of problems on our existing backend, +> and it didn't appear any clients implemented it. That's one issue +> we've had on whether to expend the effort on any particular extension +> is knowing whether or not any clients would actually take advantage of +> it. + +Yeah - CONDSTORE was a pain when it came in to Cyrus too, but it turns +out to be very good at making a low bandwidth replication protocol as +well, because you can avoid the downside (no memory of deletes) by +caching the modseq at which you deleted a message. Which is exactly +what QRESYNC buys as well. + +> We do try to be fast for the traditional UID FLAGS fetch, but its +> still O(messages) so it can get slow for large mailboxes, and the data +> transfer isn't anything to sneeze at either. + +Yeah, the data transfer is the real problem. At least you support +COMPRESS! + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22784.mbox:2,S new file mode 100644 index 00000000..d785df72 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22784.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From mrc+imap at panda.com Thu Feb 17 11:46:28 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] detecting new messages +In-Reply-To: <5398C04A-99D8-47E5-ABB8-AE10B168F3C4@iki.fi> +References: <2CA53ECF4094AB4D8BDC7C60A75B1C02110BEAFC52@hawaii.shoretel.com> + <5398C04A-99D8-47E5-ABB8-AE10B168F3C4@iki.fi> +Message-ID: + +On Thu, 17 Feb 2011, Timo Sirainen wrote: +> Use STATUS for getting UIDNEXT for non-selected mailboxes. For selected +> mailbox, hopefully you don't care about knowing the UIDNEXT value. + +The latter point bears emphasis. + +There is no particular reason why you should ever need the UIDNEXT value +for the selected mailbox. Although most servers will give you the UIDNEXT +value at SELECT time, it is neither sufficient nor necessary for mailbox +synchronization with prior state. + +The UID value of message * is far more important, as this will tell you if +there are new messages in the mailbox that need synchronization. UIDNEXT +may tell you if there WERE new messages, but it will not tell you if there +ARE new messages. + +Furthermore, UIDNEXT should rightfully be considered a guess. It is +guaranteed that UIDNEXT is higher than any UID that has ever been assigned +to a message in the mailbox. There is no guarantee that a new message +will given that value as its UID; it may be given a higher value. Nor is +there any guarantee that UIDNEXT is monotonically greater than the highest +assigned UID. + +Put another way: + +A UIDNEXT value of 1234 guarantees that the highest UID ever placed in the +mailbox is, at most, 1233. It does not in any way assert that UID 1233 +exists now, or ever existed in the past. + +A UIDNEXT value of 1234 guarantees that a newly delivered message will +have a UID of at least 1234. It does not in any way assert that the +message will get UID 1234 as opposed to UID 1235, UID 69105, etc. + +The fact that some servers assign UIDs monotonically does not mean that +servers are required to make monotonic assignments. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22796.mbox:2,S new file mode 100644 index 00000000..72b0dd82 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22796.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 13:52:14 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <11166.1286223088.054596@puncture> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> +Message-ID: + +On Mon, 4 Oct 2010, Dave Cridland wrote: +> Mobile operators are catching up in this respect. I'm told than 5-10 +> minutes is fine for keepalives, now. + +Oh, I agree. But the issue isn't what the mobile operators do with NAT. +It's that you must "look out" for users that run an IMAP client on desktop +and laptop computers behind a cheap Linksys NAT box. + +There is no reason for any desktop client to use IDLE, and negligible +reason for a laptop client to do so. Typically, when I tether a laptop to +a mobile phone, I feed the phone power over USB and keep the data +connection up (via a ping if necessary). I don't use a laptop tethered +mobile phone at all like I use an application on a mobile phone. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22804.mbox:2,S new file mode 100644 index 00000000..8eca3284 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22804.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Jul 9 20:28:53 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> +References: <4C37C781.5060700@sun.com> + + + + <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> +Message-ID: + +> I'm looking forward to RFC 5738bis. + +Just what sort of masochist are you?!? Haven't we had enough already? + +I'm heading for the beach ;-) + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22807.mbox:2,S new file mode 100644 index 00000000..a7419ac4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22807.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tjs at psaux.com Fri Jun 11 01:02:51 2010 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C11EC3F.7030101@gulbrandsen.priv.no> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <4C11E96E.7080502@gulbrandsen.priv.no> <4C11EBE9.5070004@psaux.com> + <4C11EC3F.7030101@gulbrandsen.priv.no> +Message-ID: <4C11EDAB.90403@psaux.com> + +On 6/11/10 12:56 AM, Arnt Gulbrandsen wrote: + +> Why? Atomicity or something else? + +It enables certain optimizations. Having one message in two folders at +the same time is not possible on our back end, so COPY is expensive, but +moving a message from one folder to another can be done cheaply. + +Tim + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22810.mbox:2,S new file mode 100644 index 00000000..795da9a9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22810.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From eluis.linux at gmail.com Wed May 5 13:00:34 2010 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?Eduardo_Lu=EDs?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] 2Gb size limit +In-Reply-To: +References: + + + +Message-ID: + +Ok Mark, thanks a lot for your explanation... +I have to switch to a mixed format.... + +Thank you, + +Eduardo Lu?s + + + +2010/5/5 Mark Crispin : +> On Wed, 5 May 2010, Eduardo Lu?s wrote: +>> +>> No, it's not a 32bit OS feature. +> +> Actually, it is your OS. +> +> UW IMAP uses unsigned longs (it was largely written before off_t was +> universally defined) which would support at least 4GB. +> +> The problem is that off_t is defined on many systems as an int32, and the +> lseek() call takes an off_t. ?This is the cause of the 2GB limit. +> +> On other systems, off_t is defined as an int64. ?The limit should be 4GB, +> not 2GB, on those system. +> +> If you have a int32 off_t, then you need to do one of the following: +> +> On some systems, you must change everything to use lseek64() call and +> off64_t. +> +> On other systems, it is possible to fix lseek() and off_t by defining +> _FILE_OFFSET_BITS to 64. ?That will make off_t be an int64. ?If ulong on +> your system is a uint32, that should give you up to a 4GB limit; if ulong +> on your system is a uint64 then you win big. +> +> +> Personally, I think that it is completely, utterly, insane to have a flat +> mailbox file greater than 2GB; or for that matter much greater than 100MB. +> Flat file formats were never intended to scale to such sizes. +> +> You should use the mix format instead, which breaks the mailbox into +> multiple files that are either 1MB or the size of a single message, +> whichever is larger. +> +> Now, if you have a single message which is greater than 2GB (or 4GB), then +> you have other problems. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22813.mbox:2,S new file mode 100644 index 00000000..9703941c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22813.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From lyndon at orthanc.ca Sun Jan 17 14:34:20 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <30kZRcRQj+KHOwnouaxaCw.md5@lochnagar.gulbrandsen.priv.no> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <30kZRcRQj+KHOwnouaxaCw.md5@lochnagar.gulbrandsen.priv.no> +Message-ID: + + +> Feel free to suggest wording for an informational section discouraging +> imaps/pop3s/smtps. + +I would argue that since neither of imaps and pops are internet standards, +normative text about them is out of scope for a standards track document, +therefore all references to them should be deleted. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22817.mbox:2,S new file mode 100644 index 00000000..7a883fca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22817.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From tss at iki.fi Tue Dec 29 10:37:38 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + +Message-ID: <1262111858.26478.842.camel@timo-desktop> + +On Tue, 2009-12-29 at 09:54 -0800, Mark Crispin wrote: +> On Tue, 29 Dec 2009, Timo Sirainen wrote: +> > Does anyone think these are actually useful? If server allows creating +> > "foo/bar" without foo existing, is it actually useful to allow "CREATE +> > foo/" and have it create a \Noselect "foo" without any children? +> +> Are you saying that the only way to do an mkdir MUST be by implicit +> creation, and that if the last child is deleted the superior MUST be +> rmdired? +> +> Note those words "MUST". They are significant to the argument. + +Are you talking about "MUST" as in "what all IMAP servers MUST do"? If +so, no, I'm just talking about what would be acceptable behavior for my +server. + +> It is perfectly compliant for a server to treat "CREATE foo/" as meaning +> "create a mailbox named foo, and ignore that trailing /". It is also +> perfectly compliant for a superior to vanish if it is \NoSelect and its +> last child is deleted. + +Or last child is renamed elsewhere. Yes, that's what I was asking about. +Dovecot with Maildir always behaved that way, but now that I'm creating +a new mailbox format I thought I'd get rid of that restriction. But that +in turn seems to be causing more trouble than I thought. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22820.mbox:2,S new file mode 100644 index 00000000..01a70771 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22820.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From tss at iki.fi Mon Nov 9 21:09:45 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] "k" right in IMAP ACLs +In-Reply-To: +References: +Message-ID: <2EEFAD8A-EA31-43FE-932D-ADFA5148786E@iki.fi> + +On Nov 9, 2009, at 11:47 PM, Mark Crispin wrote: + +> RFC 4314 is silent on many important details of the "k" right. For +> example: +> +> [1] If a mailbox is top-level in the hierarchy (co-equal with INBOX), +> where is the "k" right to be found? + +I'd say this is implementation-specific. I use a default ACL file that +can't be modified via IMAP, at least not currently. I suppose in +theory it could be made modifiable by accessing it via the shared user +prefix. For example if all other users' mails were under "users/foo@bar.org +" then that would be the root hierarchy. But that would mainly work +for changing other users' root ACL, not that well your own.. + +> [2] What if the parent name doesn't have an ACL? For example, +> consider +> a hierarchical namespace in which the heirarchy delimiter is simply +> a character in the name. Thus, a CREATE of a/b/c/d in no way +> necessitates that a, a/b, and/or a/b/c exist; these are not only +> \NoSelect names, they simply do not exist in any physical sense. +> Is +> it supposed to search up the hierarchy, first trying a/b/c, then +> a/b, then a, and finally the who-knows-where location of top-level +> ACL in order to determine if there is a "k" right? + +I think the way you should be thinking this is how would the server +work if it didn't support non-existing mailboxes. Then it would first +have to create a/b, which would take its ACL from a, then a/b/c which +would now take its ACL from a/b, etc. So yeah, basically go up until +you find an existing mailboxes. + +Actually I don't remember the RFC specifying what should happen when +you create a child mailbox, but the best behavior I've figured so far +is to just copy the parent's ACLs to the child. The bad thing about +that is that if you want to change one you usually then have to change +both of them. I should some day add support for ACLs that affect +children directly, but then again that might make it more confusing to +modify them via IMAP. + +> I assume that the purpose of the "k" right is to allow a designated +> administrator to create new mailboxes in a non-user shared location. +> However, this lack of specificity of where the necessary ACL is to +> be found for top-level names is a weakness. + +My thinking was that "k" is mainly useful in public namespaces, or +perhaps emulating that by creating shared mailboxes under some +specific user's "shared" mailbox. In both of those cases there would +be a parent mailbox. + +> What do clients that implement IMAP ACL expect from the "k" right? + +I'm not aware of any other clients than Mulberry that really supports +ACLs. I don't know what it expects. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095073.22823.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095073.22823.mbox:2,S new file mode 100644 index 00000000..218a5360 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095073.22823.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From fret at memecode.com Thu Oct 1 21:26:54 2009 +To: imap-protocol@u.washington.edu +From: Matthew Allen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] List of UID's removed with expunge? +Message-ID: + +Hi, + +Is there a reasonable way of getting the UID's of the messages removed with the expunge command? + +It _seems_ from reading the RFC that I have to: +- Do a SEARCH to get all the sequence numbers of the \deleted messages +- Do a FETCH with that sequence set return from the search to get their UID's +- Then do the EXPUNGE and hope that nothing has changed in the mailbox between the various commands. + +Sounds dubious at best. Alternatively instead of relying on the server to tell me whats going on I could just look though my local cache and remove all the "\deleted" message's metadata after I expunge, assuming that it's more or less the same. + +I guess the best way would've been to have the server report the information in the untagged response ala: +* EXPUNGE [UID ] +or something, but that horse has bolted some decades ago. + +Regards +-- +Matthew Allen + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22595.mbox:2,S new file mode 100644 index 00000000..0847d91e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Mar 15 14:20:26 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: <55059FCA.8000006@verizon.net> +References: <20150313211600.25485.qmail@ary.lan> + + + <55050A00.60405@brokersys.com> <55059FCA.8000006@verizon.net> +Message-ID: <4d3ef14f-8f48-498c-8352-2d6f6a9c11a4@gulbrandsen.priv.no> + +Joshua Cranmer writes: +> If you're going to complain about people doing the wrong thing +> and breaking the specification, common sense says that you +> should understand what the specification actually says you're +> supposed to be doing. + +I am not a DKIM implementer, and speak as a user. False positives and +negatives debase the value of the signatures. I expletive expletive mind +that debasement, and I don't see that the spec forbids my opinion. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22641.mbox:2,S new file mode 100644 index 00000000..af98b6d1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22641.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From brong at fastmail.fm Fri Mar 21 22:38:28 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> + <39b431a9-93a6-42b1-9cbe-5788d5958f43@flaska.net> + <1395369035.8071.97071749.6F2A6445@webmail.messagingengine.com> + +Message-ID: <1395466708.12498.97497269.27B0A52C@webmail.messagingengine.com> + +On Fri, Mar 21, 2014, at 10:59 PM, Arnt Gulbrandsen wrote: +> On Friday, March 21, 2014 3:30:35 AM CEST, Bron Gondwana wrote: +> > Let's not confuse things with more flags. +> +> Or with making the client serve the server. +> +> This is about making the server submit mail. So why should the client need +> to do any locking? It's not particularly difficult to say "server should +> lock the message appropriately to prevent duplicate or repeated submission" +> and define an error code. Like this: +> +> C: a submit foo bar +> S: a NO [ALREADYSUBMITTED] blah + +Locking shmocking. I don't so much care about the race between two clients, +or one client being silly enough to try to do things concurrently, I don't +think that's a likely scenario, given that sending is a user initiated +action. + +It's about having the client able to discover whether the server believes +that the message has been sent, reliably. + +Otherwise if there's a disconnection, the only way to know if the server +actually sent the message is to try to submit it again. That's opaque. +As a client user, I want to able to know. + +It's a state change on the message, and state changes need to be discoverable. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22701.mbox:2,S new file mode 100644 index 00000000..0f5a548c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22701.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From blong at google.com Tue Nov 27 14:34:29 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121127124811.Horde.VuMexjqX6lKpL2uX-qPgPw2@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + + <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> + <1354010571.12520.140661158658949.22643EF6@webmail.messagingengine.com> + <20121127124811.Horde.VuMexjqX6lKpL2uX-qPgPw2@bigworm.curecanti.org> +Message-ID: + +The shear number of extensions for IMAP is kind of a problem in itself, as +is the combinatorial complexity that implies. + +One mechanism to help with that, in terms of the chicken-egg problem, would +be if CAPABILITY were a two way street, like ID is. I could then see what +capabilities cilents have implemented to see if its worth implementing them +on the server. + +Not going to change CAPABILITY now, though we could standardize an ID +keyword for that, I suppose. + +Ie: + +a ID ("client" "mail.app" "version" "1.2.3" "capability" "LITERAL+ +CONDSTORE ETC") + +Anyways, I imagine the reason no one did it was what was the client benefit +of supporting another path when the standard path is supported everywhere. + +Brandon + + +On Tue, Nov 27, 2012 at 11:48 AM, Michael M Slusarz +wrote: + +> Quoting Bron Gondwana : +> +> On Tue, Nov 27, 2012, at 02:48 AM, Michael M Slusarz wrote: +>> +>>> (full +>>> disclosure: the recent Cyrus break is weird because it sent a BYE and +>>> terminated instead of a failed command, so that wasn't previously +>>> scanned for so we weren't catching this until recently. so we're not +>>> perfect either.). +>>> +>> +>> I'm kinda embarassed about this one! I forgot to put the GUID calculation +>> call in the APPEND BINARY path, because nothing ever tested it and it +>> appeared nobody was using it, because we didn't have a single complaint or +>> failure with it until just a few weeks ago. +>> +> +> There's probably some deeper (sad) IMAP implementation story to be learned +> here. RFC 3516 was published April 2003, and 9 years later we're the first +> one to ever use literal8's in an APPEND? +> +> michael +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22743.mbox:2,S new file mode 100644 index 00000000..d9a9eb25 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22743.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 21 07:43:19 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +In-Reply-To: <1332334899.13815.140661052117053.5297D8C5@webmail.messagingengine.com> +References: + <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> + + <4F69AABD.4070206@gulbrandsen.priv.no> + <1332334899.13815.140661052117053.5297D8C5@webmail.messagingengine.com> +Message-ID: <4F69E907.3000700@gulbrandsen.priv.no> + +On 03/21/2012 02:01 PM, Bron Gondwana wrote: +> But any non-MODSEQ based access to the store could not bump it at all, +> so long as the next time a MODSEQ enabled client connected, the MODSEQ +> got allocated to all changed things since then. + +Now you have a 64-bit number which changes seldom and a single-bit +variable per message which goes to one for any change and to zero for +any modseq allocation. That does not make much sense to me. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22756.mbox:2,S new file mode 100644 index 00000000..e34ffc35 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22756.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Sun Nov 6 16:45:00 2011 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: +Message-ID: <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> + +On 6 Nov 2011 at 21:15, Petite Abeille wrote: + +> Given a mailbox containing only \Seen messages, what kind of +> UNSEEN response is SELECT supposed to return? +> +> Looking at, say, dovecot implementation, it doesn't return any +> UNSEEN data if all messages are \Seen: +> +> On the other hand, the spec for SELECT seems to mandate returning +> all the data: "the server MUST send the following untagged data". + +It is in the very nature of [UNSEEN] that it *cannot* be sent if the +mailbox has no unread messages: the ABNF requires its parameter to +be an nz-number, but there is no possible valid nz-number that can be +sent in such a situation. Simple commonsense dictates that the +intention of the RFC must be that [UNSEEN] is mandatory *if the +mailbox contains any unread messages*, but that it *must* in fact be +*omitted* otherwise. + +Thanks for this thread - it has lead to a minor correction in my server +(an oversight that I found when I went to check that I was in +compliance). + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: +David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +True life insurance claim: + "I saw a slow-moving, sad-faced old gentleman as he + bounced off the hood of my car." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22759.mbox:2,S new file mode 100644 index 00000000..a5c226ac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22759.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 14:12:47 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + +Message-ID: + +On Mon, 31 Oct 2011, Brandon Long wrote: +> tsk tsk, haven't I said this before? Outlook isn't our primary at +> all. + +I was told specifically, by Google, that Google does not care at all about +compliance with the IMAP RFCs, but rather that Outlook using IMAP behaved +like Gmail. I was also told specifically that compliance and/or +interoperability is NOT a priority at Google. + +If you think that Gmail's IMAP server is compliant, you are mistaken. + +Should Google's corporate goals ever change to incorporate compliance and +interoperability, I wish you luck on making it compliant. You have a lot +of work, and a great deal of testing, ahead of you. You also face some +very difficult design decisions. + +FWIW, "it works with Apple Mail and Thunderbird" does not constitute +testing. Not by a long shot. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22768.mbox:2,S new file mode 100644 index 00000000..c665a54e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22768.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From brong at fastmail.fm Mon Jun 6 14:42:38 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Where to start? +In-Reply-To: <4DED435D.9070900@psaux.com> +References: <4DEBB242.2090200@BusCom.net> <4DEBB58D.3090101@logicprobe.org> + <4DEBBAB3.2030301@BusCom.net> <4DEBBEC1.3080600@BusCom.net> + <201106051924.p55JOwpG003543@mxout12.cac.washington.edu> + <4DEBDFF5.9000301@BusCom.net> <4DED435D.9070900@psaux.com> +Message-ID: <20110606214238.GA13095@brong.net> + +On Mon, Jun 06, 2011 at 02:15:09PM -0700, Tim Showalter wrote: +> On 6/5/11 12:58 PM, Lynn W. Taylor wrote: +> >The mailstore is in RFC-2822 format. There is a UID, and it's cast in +> >jello -- it can be changed so that the POP3 server uses an IMAP +> >compatible UIDL. I think I can keep the UIDs unique and ascending as +> >required in the RFC. +> +> Ancient versions of Cyrus used only the UID as a UIDL value, and it +> can cause problems when a user is moved from one POP server to a new +> host. POP has no equivalent to UIDVALIDITY, and the only way to blow +> the cache is to change all the UIDL values. +> +> If you use the UIDVALIDITY+UID as a UIDL scheme, that works pretty well. + +We're still suffering for that. Every new folder and every folder +that ever gets down to "EXISTS 0" gets the new scheme, but "old" +folders still do it. Just in case someone has upgraded from +ancient Cyrus and they don't want to POP everything again. + +Bron ( gotta love backwards compatibility. Still, it costs + about 8 lines of code total, and one bit in a not very + full bitfield ) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22772.mbox:2,S new file mode 100644 index 00000000..6f1dfda6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22772.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 18 16:15:19 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110518210716.GA12636@brong.net> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> +Message-ID: + +On Wed, 18 May 2011, Bron Gondwana wrote: +> What annoys me the most is no CONDSTORE/QRESYNC support, so you +> can't create an efficient gmail client - you need to sync all the +> flags, every time. Gmail is big enough that I'm fairly willing to +> special case it in exchange for big performance wins, but there's +> just no way to be sure you have all the changes. + +This serves to illustrate the overall problem with synchronization, and +specifically with synchronizing email. + +Email synchronization is a fool's errand; but there seem to be an abundant +supply of fools that undertake it. + +Thus we have miserable mobile device email clients such as Mail.app on the +iToy, BlackBerry, and the default Mail app on Android. At least Android +has k9mail which - just barely - steps over the line into "usability". + +A special place in hell exists for the authors of synchronizing email +clients that refuse to display email unless there's a session open to the +server... + +All in the name of the holy religion of "email users won't tolerate +waiting for the network/not being able to access mail without network +access." Hello kids, ever hear of webmail? + +There is another way of doing client/server email. Too bad that very few +understand it; many more that have heard of it, but do not understand it. + +Sadly, as the only money to be made in email today is in making email NOT +work, not in making it work, it's not likely that we'll see much change in +the status quo. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22784.mbox:2,S new file mode 100644 index 00000000..cf52451a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22784.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From barryleiba at computer.org Fri Feb 18 14:12:57 2011 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] detecting new messages +In-Reply-To: +References: <2CA53ECF4094AB4D8BDC7C60A75B1C02110BEAFC52@hawaii.shoretel.com> + <5398C04A-99D8-47E5-ABB8-AE10B168F3C4@iki.fi> + +Message-ID: + +Just to make sure it's clear, and please excuse the pedantry: + +> will given that value as its UID; it may be given a higher value. ?Nor is +> there any guarantee that UIDNEXT is monotonically greater than the highest +> assigned UID. +... +> The fact that some servers assign UIDs monotonically does not mean that +> servers are required to make monotonic assignments. + +Mark doesn't actually mean "monotonic", here... UIDs are *always* +monotonically increasing, which only means that they increase but +never decrease -- a new UID is always greater than all old UIDs +(unless UIDVALIDITY changes). + +What he means -- and the best single word that says it is +"sequentially" -- is that there's no guarantee that they increase by +one. So, re-phrasing those two sentences above: + +"Nor is there any guarantee that UIDNEXT is exactly one greater than +the highest assigned UID." +... +"The fact that some servers assign UIDs in strict '+1' sequence does +not mean that servers are required to make assignments that way." + +-- Barry, ever pedantic but always striving for clarity + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22796.mbox:2,S new file mode 100644 index 00000000..4f3333c2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22796.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From dave at cridland.net Mon Oct 4 14:03:46 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + +Message-ID: <11166.1286226226.318772@puncture> + +On Mon Oct 4 21:52:14 2010, Mark Crispin wrote: +> On Mon, 4 Oct 2010, Dave Cridland wrote: +>> Mobile operators are catching up in this respect. I'm told than +>> 5-10 +>> minutes is fine for keepalives, now. +> +> Oh, I agree. But the issue isn't what the mobile operators do with +> NAT. +> It's that you must "look out" for users that run an IMAP client on +> desktop +> and laptop computers behind a cheap Linksys NAT box. +> +> There is no reason for any desktop client to use IDLE, and +> negligible +> reason for a laptop client to do so. Typically, when I tether a +> laptop to +> a mobile phone, I feed the phone power over USB and keep the data +> connection up (via a ping if necessary). I don't use a laptop +> tethered +> mobile phone at all like I use an application on a mobile phone. + +Yes, except that the near constant DCH-level, plus the additional +cost of actually transmitting over that, could quite easily cost more +than the 500mA USB will feed it. :-) + +Even laptops can benefit from reasonably power-efficient coding on +WiFi, and as long as either clients reconnect sensibly, and/or use +relatively short timeouts, it should be no problem. FWIW, I've had no +problem with IDLE and no keepalive on all sorts of networks, but I'll +be humble and bow to your experience if you insist that must be down +to my excellent client progamming skills. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22804.mbox:2,S new file mode 100644 index 00000000..45df7bd3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22804.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From tss at iki.fi Fri Jul 9 20:45:15 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: +References: <4C37C781.5060700@sun.com> + + + + <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> + +Message-ID: + +On 10.7.2010, at 4.28, Lyndon Nerenberg wrote: + +>> I'm looking forward to RFC 5738bis. +> +> Just what sort of masochist are you?!? Haven't we had enough already? + +Unfortunately I missed the first round of it by being too busy. The first time I read it I just shook my head in desperation and thought maybe it'll go away if I just ignore it. The second time I read it and wrote some comments, it just became RFC. + +> I'm heading for the beach ;-) + +I just learned last weekend that even if it's +40C the sea water is cold. (I don't think it was as cold on the other side of Atlantic in Florida, or maybe my memory just sucks..) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22807.mbox:2,S new file mode 100644 index 00000000..f9759d72 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22807.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From dave at cridland.net Fri Jun 11 01:59:31 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006110854.37969.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> +Message-ID: <23852.1276246771.199346@puncture> + +On Fri Jun 11 07:54:37 2010, Witold Kr?cicki wrote: +> Hello +> I've wrote a draft of a draft of an IMAP protocol extension +> providing one +> basic (at least to me) feature that is missing. I've searched +> (roughly) +> through discussions on this mailing list and haven't seen any +> mentioning or +> proposal of 'move' functionality. + +I'm pretty sure it's come up before. + +Depending on your server design, this is either very easy, or else +very hard - of course, since it's optional, it'd seem likely that +where it's hard it'd not be supported. + +One thing that concerns me is that there is no way to undo this +operation - traditionally, only EXPUNGE and DELETE have been +irrevocable actions in IMAP, this adds one more. + +The way to combat this is to make it merely mark \Deleted the +original message - except then this eradicates any benefit to the +command at all for clients. (Since one could either do MOVE/UID +EXPUNGE, or else COPY+STORE/UID EXPUNGE). + +And there has to be very significant advantage for clients, across a +wide deployment, for most clients to bother implementing it - right +now, I don't see it. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22810.mbox:2,S new file mode 100644 index 00000000..165f7f84 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22810.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc+uw at panda.com Wed May 5 13:33:04 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] 2Gb size limit +In-Reply-To: +References: + + + + +Message-ID: + +On Wed, 5 May 2010, Eduardo Lu?s wrote: +> Ok Mark, thanks a lot for your explanation... +> I have to switch to a mixed format.... + +Actually, it is not a "mixed format". It is "mix format". "mix" stands +for "mail, indexed". + +Refer to this FAQ answer for a discussion about alternative mailbox +formats. The information is about switching to mbx, but if you substitute +"mix" for "mbx" most of the information is still accurate. + +http://www.washington.edu/imap/IMAP-FAQs/index.html#4.5 + +mbx is 1995 technology. It was good for its time, but is now out of date. +mix is more modern technology and should work well for several more years. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22813.mbox:2,S new file mode 100644 index 00000000..235a5453 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22813.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From mail at sabahattin-gucukoglu.com Sun Jan 17 18:42:09 2010 +To: imap-protocol@u.washington.edu +From: Sabahattin Gucukoglu +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <01NIK8RBBRJK004042@mauve.mrochek.com> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> +Message-ID: + +On 17 Jan 2010, at 17:35, Ned Freed wrote: +>> Shouldn't we be seriously discouraging that usage? +> +> Perhaps. But a provisioning mechanism specification isn't the place to do it. +> +The specification, if it describes the method of "Wrapped SSL", must explain what's wrong with it, and we know too well what's wrong with it (implementation specific behaviours, IANA problems, negotiation problems, although the latter is addressed in part by this very specification). If it doesn't describe a specification that the IETF wrote or vouches for, then that specification needs to be written. Otherwise, it shouldn't specify its usage at all. + +Happily, this specification *does* explain the procedure for wrapping POP/IMAP/SMTP inside a directly-negotiated SSL stream, so all that's required now is to explain why, in all this time, we haven't documented it before now. Perhaps we can even kill two birds with one stone. :-) + +> If you want to promote or discourage a particular approach to deploying network +> services, you need to do it directly. Write a "IMAPS/POPS considered harmful" +> draft and get it published. +> +See above; I have no problem with propitiating those who choose to do it wrong, but only so long as they don't do it very wrong, and hurt lots of innocent bystanders who obey well-written rules as a consequence of their own desires. The deployment or not of broken vs correct behaviour will speak for itself, and I have no problem with that. But neither should we simply allow for the specification of broken behaviour without a cautionary note. + +Cheers, +Sabahattin + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22817.mbox:2,S new file mode 100644 index 00000000..489dadb8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22817.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From mrc+uw at Panda.COM Tue Dec 29 11:02:01 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: <1262111858.26478.842.camel@timo-desktop> +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> +Message-ID: + +On Tue, 29 Dec 2009, Timo Sirainen wrote: +> Dovecot with Maildir always behaved that way, but now that I'm creating +> a new mailbox format I thought I'd get rid of that restriction. But that +> in turn seems to be causing more trouble than I thought. + +What, precisely, is the behavior that you purpose to do in these cases: + +[1] "tag CREATE foo/" + +[2] "tag DELETE foo" where foo is selectable and has a child? + +[3] "tag DELETE foo/bar" where foo is \NoSelect and bar is the only +child? + + +The requirements of IMAP in each case: + +[1] An object named foo MUST be created, and that object MUST permit +children. That object MAY be \NoSelect. + +[2] The child of foo MUST NOT be deleted. The mailbox foo is deleted, and +the name foo becomes \NoSelect. + +[3] The mailbox bar is deleted. + + +As long as you comply with these requirements, you are fine. In the [3] +case, IMAP neither requires nor forbids deletion of foo. However, common +sense requires that if [1] creates foo as \NoSelect with no children, then +[3] should not delete foo. This is how a server that has "directories" +would work. + +Similarly, if [1] creates foo as a selectable name, I would not be +surprised if [3] deletes foo. This is consistent with a server that does +not have "directories". + +It would also be alright if [3] promotes foo to be selectable. + + +Think of things from the client side. If the server does not have +"directories", then the only way that it can have a \NoSelect superior is +if the client either implicitly created the superior or if the client +deleted the superior after it got children. A client which does either +should be assumed to be intelligent enough to understand IMAP's rules. + +The bottom line is that a client MUST NOT expect a server to delete a +\NoSelect superior automatically, and MUST NOT be surprised if a server +does so. + +If a client wants to keep "empty directories" around, it MUST NOT use the +implicit creation feature, and MUST NOT delete mailboxes with children +(if it wants to remove messages, use delete+expunge instead). Put another +way, the ONLY way it should make a directory is with the "tag CREATE foo/" +form. If that form makes a \NoSelect name, fine; but if it doesn't, then +don't force it. + +I realize that the above is rather complex and probably requires +re-reading a few times before you fully grasp it. But I think that if you +think it through carefully, it'll make sense, seem reasonable, and not be +all that difficult to implement. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22820.mbox:2,S new file mode 100644 index 00000000..b849674c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22820.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Nov 9 21:28:45 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] "k" right in IMAP ACLs +In-Reply-To: +References: +Message-ID: + +> [1] If a mailbox is top-level in the hierarchy (co-equal with INBOX), +> where is the "k" right to be found? + +I think by definition this has to be up to the implementation. There is +no parent, so the server has to apply its own policy here. + +This is loosely analogous to dereferencing "/.." in UNIX. There's nowhere +to go, so either you self destruct or you make something up (mapping "/.." +to "/." in the UNIX case). + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22823.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22823.mbox:2,S new file mode 100644 index 00000000..e8704f26 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22823.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Oct 2 02:01:13 2009 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] List of UID's removed with expunge? +In-Reply-To: +References: +Message-ID: <4AC5C159.5080804@isode.com> + +Matthew Allen wrote: + +>Hi, +> +> +Hi Matthew, + +>Is there a reasonable way of getting the UID's of the messages removed with the expunge command? +> +>It _seems_ from reading the RFC that I have to: +>- Do a SEARCH to get all the sequence numbers of the \deleted messages +>- Do a FETCH with that sequence set return from the search to get their UID's +>- Then do the EXPUNGE and hope that nothing has changed in the mailbox between the various commands. +> +>Sounds dubious at best. Alternatively instead of relying on the server to tell me whats going on I could just look though my local cache and remove all the "\deleted" message's metadata after I expunge, assuming that it's more or less the same. +> +> +You want to use "UID EXPUNGE " from RFC 4315. It is almost universally implemented. + +>I guess the best way would've been to have the server report the information in the untagged response ala: +>* EXPUNGE [UID ] +>or something, but that horse has bolted some decades ago. +> +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095074.22826.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095074.22826.mbox:2,S new file mode 100644 index 00000000..382a884f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095074.22826.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Sep 23 13:09:39 2009 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: IMAP extension for SASL additional information +In-Reply-To: <87y6o5r0aq.fsf@mocca.josefsson.org> +References: <87y6o5r0aq.fsf@mocca.josefsson.org> +Message-ID: <29d3c4cb0909231309n222b1392k5b900e33b801cb15@mail.gmail.com> + +On Wed, Sep 23, 2009 at 7:19 PM, Simon Josefsson wrote: +> +> Do IMAP support SASL authentication where the server returns additional +> information together with success? + +No. The server would need to send data as a normal SASL challenge, +then the client would answer with an empty response. + +> As far as I can tell from section +> 6.2.2 of RFC 3501 it does not, but I may be missing something. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22595.mbox:2,S new file mode 100644 index 00000000..54a73dc8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22595.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From johnl-imap at iecc.com Sun Mar 15 19:39:57 2015 +To: imap-protocol@u.washington.edu +From: John Levine +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] DKIM signatures on this list +In-Reply-To: <4d3ef14f-8f48-498c-8352-2d6f6a9c11a4@gulbrandsen.priv.no> +Message-ID: <20150316023957.32209.qmail@ary.lan> + +>I am not a DKIM implementer, and speak as a user. False positives and +>negatives debase the value of the signatures. I expletive expletive mind +>that debasement, and I don't see that the spec forbids my opinion. + +It looks like we're now at the point where everyone can have his own +opinions, but not his own facts. There are detailed specs for DKIM, +and it works the way it works. If you don't find that DKIM, as +defined, is useful to you, that's fine, you don't have to use it. + +R's, +John + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22641.mbox:2,S new file mode 100644 index 00000000..81b41b89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22641.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From brong at fastmail.fm Fri Mar 21 22:49:30 2014 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <1395466708.12498.97497269.27B0A52C@webmail.messagingengine.com> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> + <39b431a9-93a6-42b1-9cbe-5788d5958f43@flaska.net> + <1395369035.8071.97071749.6F2A6445@webmail.messagingengine.com> + + <1395466708.12498.97497269.27B0A52C@webmail.messagingengine.com> +Message-ID: <1395467370.14106.97498869.10F29520@webmail.messagingengine.com> + +On Sat, Mar 22, 2014, at 04:38 PM, Bron Gondwana wrote: +> On Fri, Mar 21, 2014, at 10:59 PM, Arnt Gulbrandsen wrote: +> > On Friday, March 21, 2014 3:30:35 AM CEST, Bron Gondwana wrote: +> > > Let's not confuse things with more flags. +> > +> > Or with making the client serve the server. +> > +> > This is about making the server submit mail. So why should the client need +> > to do any locking? It's not particularly difficult to say "server should +> > lock the message appropriately to prevent duplicate or repeated submission" +> > and define an error code. Like this: +> > +> > C: a submit foo bar +> > S: a NO [ALREADYSUBMITTED] blah +> +> Locking shmocking. I don't so much care about the race between two clients, +> or one client being silly enough to try to do things concurrently, I don't +> think that's a likely scenario, given that sending is a user initiated +> action. +> +> It's about having the client able to discover whether the server believes +> that the message has been sent, reliably. +> +> Otherwise if there's a disconnection, the only way to know if the server +> actually sent the message is to try to submit it again. That's opaque. +> As a client user, I want to able to know. +> +> It's a state change on the message, and state changes need to be discoverable. + +More specifically, client "A" sends a submit command on my request and then +loses the connection. I connect with client "B" and I want to be able to see +if the message was sent or not. + +Particularly if my reconnection is a day later, I'd rather see the "it was +sent" or "it wasn't sent" status, not see a flag saying "it was part way +through being sent" and have my client automatically send it now. A day +later it may not need to be sent any more if it wasn't already. + +Undiscoverable state is bad. Client disconnections are orders of magnitude +more likely than server failure in the middle of send. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22701.mbox:2,S new file mode 100644 index 00000000..a3a27294 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22701.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From imap at tlinx.org Tue Nov 27 15:04:36 2012 +To: imap-protocol@u.washington.edu +From: L Walsh +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> +Message-ID: <50B54704.9020805@tlinx.org> + +Michael M Slusarz wrote: +> +> Background: I am a disconnected client author (webmail).... I was +> depressed/alarmed at the amount of state re-creation ...need.. +> NAMESPACE, CAPABILITY, (since there was no guarantee that we are +> connecting to the same backend IMAP server, it was/is not possible to +> cache these values on the client side), ENABLE QRESYNC, and LANGUAGE +> call on every user action. +--- +Just ignore me if I'm too clueless for this to be of any help, but if I was +doing what you are doing, I'd cache the client TCP connections to the IMAP +server until I timed their session-out from my webserver. + +I.e. would set cookie upon connection to their imap server that contains +a 'handle' that would indicate something in my 'IMAP-TCP connection cache', +and route their requests accordingly. + +Not only are starting TCP connections "expensive", but you have an added +expense +of IMAP state... if HTTP(S), believes in using PIPELINING to enable lower +server loads and faster response time, why not a webmail->imap gateway? + +Set the "session-timeout to ~5-15 minutes" of inactivity like many things +do and you can recycle their imap connection, but if they reconnect w/the +same cookie, it seems you could simply route their commands to the already +open connection to their imap server -- and there would be no overhead +of looking for capabilities, or resetting state...etc, as the TCP conn. +would guarantee it's the same server. + +It would all be transparent to the user -- if they reconnect to you, you +look in your cache, and see if the TCP connection is still valid (or if it, +possibly, has been closed from the other end). If it has been, the safest +thing to do would be to give a message that the remote IMAP connection +timed-out and they need to re-connect. + +Sorry, if this sounds too clueless for words, and I am missing something +obvious about why this can't be done -- but it sounds like rolling your +own connection cache would be the way to go...(but probably am missing +the forest for the trees....)... + +-l + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22743.mbox:2,S new file mode 100644 index 00000000..4d7ccc24 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22743.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From petite_abeille at mac.com Wed Mar 21 13:39:02 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <0M1700IIGHLU6O30@nk11p00mm-smtpin127.mac.com> +References: + <0M1700IIGHLU6O30@nk11p00mm-smtpin127.mac.com> +Message-ID: <2AB5F87D-A19C-422F-B20B-0A89F2C29C9D@mac.com> + + +On Mar 21, 2012, at 12:08 AM, Pete Maclean wrote: + +> I have run a few automated tests against your server. These test just a few things, some simple some not so simple, and it has behaved impeccably. + +Thanks for giving it a try. Glad it survived your tests :) + +> I was impressed with how fast searches are. + +For that aspect, SQLite should get most of the credit. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22756.mbox:2,S new file mode 100644 index 00000000..8c048d08 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22756.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From mrc+imap at panda.com Sun Nov 6 17:11:51 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> +References: + <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> +Message-ID: + +On Mon, 7 Nov 2011, David Harris wrote: +> Simple commonsense dictates that the +> intention of the RFC must be that [UNSEEN] is mandatory *if the +> mailbox contains any unread messages*, but that it *must* in fact be +> *omitted* otherwise. + +David is correct; a little bit of common sense goes a long way. That seems +to be lacking in certain individuals who, given a choice between a common +sense answer and an absurd answer, invariably choose the absurd. + +RFC 3501 is more than double the size that it needs to be because of +individuals that demand that their brains not be taxed to discriminate +between the common sense and the absurd. As I pointed out at the time, it +is impossible for any document to be immune to the the imagination of +individuals who are determined to be absurd. Even if you double its size +again with more pedantic text, that immunity will remain illusive. + +It is also helpful to understand that evolutionary processes, by their +nature, result in design imperfections that would not exist in a one-shot +creation. Evolutionary change that comes about through an urgent "no time +to do it right just do it" demand especially tends to create a wart. + +Such was the UNSEEN response. RFC 4731 is a far superior mechanism +(although it has its own warts). I would be very surprised if any client +uses the UNSEEN response (its intended purpose was to position the view at +the first unread message). The client that used it has to fetch the flags +for all messages anyway for other purposes, so it doesn't need it any +more. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22759.mbox:2,S new file mode 100644 index 00000000..2b061d2f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22759.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 31 14:33:46 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + +Message-ID: <1320096826.9022.140660992904397@webmail.messagingengine.com> + +On Monday, October 31, 2011 2:12 PM, "Mark Crispin" wrote: +> I was told specifically, by Google, that Google does not care at all about +> compliance with the IMAP RFCs, but rather that Outlook using IMAP behaved +> like Gmail. I was also told specifically that compliance and/or +> interoperability is NOT a priority at Google. + +I can understand their perspective too - for all that IMAP itself may have +been designed for good reasons, and made good compromises for what was needed, +the sum total of every RFC that extends IMAP is a pretty crufty awful mishmash. + +I'm actually surprised that no serious attempt has been made to create a +competing protocol that's simpler to implement, at both ends. I suspect +Google could do it themselves with a bit of cooperation from Thunderbird. + +The really filthy way to do it, of course, would be to just straight out +subvert IMAP4 by offering a "capability", which - if present - allowed the +client to send "ENABLE PROTO-X" and then switch totally to talking the +other protocol - allowing a "legacy fallback" mode for clients and servers +that didn't offer it - then add new features just with the new protocol +as it slowly took over. + +It would need some killer feature of course, to make it worth the effort +of supporting it. And something not patented - totally free to implement +or it would have no advantage over just licensing ActiveSync. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22768.mbox:2,S new file mode 100644 index 00000000..86acc88e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22768.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From norman.maurer at googlemail.com Mon Jun 6 22:59:11 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +Message-ID: + +Hi there, + +I'm currently working on getting SORT to work with my IMAP-Server / +Mailbox-Store. I have read about the Base-Subject extraction and I'm +almost sure I have implement it in the right manner. But I would be +interested in some "Test Subjects" to write some Unit-Tests. + +Does anyone have a list of Subjects and the related Base-Subjects +which I could use for my Unit-Tests (just to be sure I did it he right +way) ? + +Thanks, +Norman + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22772.mbox:2,S new file mode 100644 index 00000000..592a580e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22772.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From Pidgeot18 at verizon.net Wed May 18 17:16:58 2011 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Beat up on Gmail +In-Reply-To: +References: +Message-ID: <4DD4617A.8040001@verizon.net> + +On 05/18/2011 05:36 PM, Brandon Long wrote: +> I think this is a difference of opinion and not of fact. Obviously +> Gmail and IMAP have different models of a mailbox, and our +> implementation had to bridge these two models. You're implying that +> we should have had folders which had no analogue in the web interface, +> and we should have exposed IMAP labels as keywords and somehow solved +> the same problem that this thread was asking about, perhaps as base32 +> encoded keywords. +My experience over the past several years has been that people who use +email clients instead of webmail tend to be a more overly conservative +bunch of people than those who do not use them. In that vein, the people +who would be accessing Gmail over IMAP would probably have preferred the +traditional folder model over Gmail's label concepts; I remember my +disappointment to have discovered that my "normal" email usage model +just didn't well with Gmail's implementation (what? delete doesn't +actually delete the mail?) + +> No client our users actually used would have done +> anything with the keywords, +If this information were made public, I'm sure knowledgeable people +would have asked for some kind of standardization in this regard. + +P.S. Gmail is not the Google product I reserve special ire for... that +would be Google Groups. But that is a rant well off-topic for this, er, +mailing list. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22784.mbox:2,S new file mode 100644 index 00000000..909657a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22784.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From DCroke at shoretel.com Tue Feb 22 15:26:27 2011 +To: imap-protocol@u.washington.edu +From: Darren Croke +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] detecting new messages +In-Reply-To: +References: <2CA53ECF4094AB4D8BDC7C60A75B1C02110BEAFC52@hawaii.shoretel.com> + <5398C04A-99D8-47E5-ABB8-AE10B168F3C4@iki.fi> + +Message-ID: <2CA53ECF4094AB4D8BDC7C60A75B1C02110C0FBAB0@hawaii.shoretel.com> + +Thanks for all the answers to my question. An interesting side note--Microsoft Exchange 2007 rejects * as an invalid message set... + +Darren + +-----Original Message----- +From: mrc@hsinghsing.panda.com [mailto:mrc@hsinghsing.panda.com] On Behalf Of Mark Crispin +Sent: Thursday, February 17, 2011 12:46 PM +To: Timo Sirainen +Cc: Darren Croke; imap-protocol@u.washington.edu +Subject: Re: [Imap-protocol] detecting new messages + +On Thu, 17 Feb 2011, Timo Sirainen wrote: +> Use STATUS for getting UIDNEXT for non-selected mailboxes. For selected +> mailbox, hopefully you don't care about knowing the UIDNEXT value. + +The latter point bears emphasis. + +There is no particular reason why you should ever need the UIDNEXT value +for the selected mailbox. Although most servers will give you the UIDNEXT +value at SELECT time, it is neither sufficient nor necessary for mailbox +synchronization with prior state. + +The UID value of message * is far more important, as this will tell you if +there are new messages in the mailbox that need synchronization. UIDNEXT +may tell you if there WERE new messages, but it will not tell you if there +ARE new messages. + +Furthermore, UIDNEXT should rightfully be considered a guess. It is +guaranteed that UIDNEXT is higher than any UID that has ever been assigned +to a message in the mailbox. There is no guarantee that a new message +will given that value as its UID; it may be given a higher value. Nor is +there any guarantee that UIDNEXT is monotonically greater than the highest +assigned UID. + +Put another way: + +A UIDNEXT value of 1234 guarantees that the highest UID ever placed in the +mailbox is, at most, 1233. It does not in any way assert that UID 1233 +exists now, or ever existed in the past. + +A UIDNEXT value of 1234 guarantees that a newly delivered message will +have a UID of at least 1234. It does not in any way assert that the +message will get UID 1234 as opposed to UID 1235, UID 69105, etc. + +The fact that some servers assign UIDs monotonically does not mean that +servers are required to make monotonic assignments. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + +This e-mail and any files transmitted with it are ShoreTel property, are confidential, and are intended solely for the use of the individual or entity to whom this e-mail is addressed. If you are not one of the named recipient(s) or otherwise have reason to believe that you have received this message in error, please notify the sender and delete this message immediately from your computer. Any other use, retention, dissemination, forwarding, printing, or copying of this e-mail is strictly prohibited + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22796.mbox:2,S new file mode 100644 index 00000000..36394271 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22796.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 14:20:05 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <11166.1286226226.318772@puncture> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <11166.1286226226.318772@puncture> +Message-ID: + +On Mon, 4 Oct 2010, Dave Cridland wrote: +> Yes, except that the near constant DCH-level, plus the additional +> cost of actually transmitting over that, could quite easily cost more +> than the 500mA USB will feed it. :-) + +Hmm. When I tether, the phone actually seems to charge albeit rather more +slowly than being idle. On the other hand, I tether with EV-DO much more +than with UMTS, so maybe there is a different there? + +> FWIW, I've had no +> problem with IDLE and no keepalive on all sorts of networks, but I'll +> be humble and bow to your experience if you insist that must be down +> to my excellent client progamming skills. + +It's basically the Client That Shall Not Be Named that you must look out +for, crappy Linksys NAT boxes, and users who complain that the "server +isn't updating my email" and can't be bothered to click on that little +broken connection icon to reestablish it. The latter tend to be admin +types who like to order that something be "fixed" to their liking +regardless of the consequences. + +The crappy Linksys boxes were guilty for dropping the NAT mapping if the +session was idle too much. This was ameliorated by having the server send +an untagged OK every 2 minutes. + +The Client That Shall Not Be Named was guilty of a lot more. First, it +used IDLE even though it had no particular reason to do so. Second, it +was smart enough to notice that the connection got dropped, and update the +icon, but somehow it never occurred to its developers to reestablish the +connection automatically. Last, and not least, it would not issue the +DONE after 29 minutes as described in the IDLE RFC, so even if the session +was still alive it would die in the 30th minute. + +That last problem required a truly horrible and utterly disgusting kludge. +At the 28th minute, a fake untagged EXISTS would be sent announcing new +mail. The Client That Shall Not Be Named would issue a DONE. Then, at +once, the server would issue an untagged EXPUNGE for that fake message, +and The Client That Shall Not Be Named never noticed that nothing changed +in the UID regime as a result of that message being "added" then +"expunged"! + +Nor, for that matter, did any other client. The users of The Client That +Shall Not Be Named stopped complaining, so I called it good. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22804.mbox:2,S new file mode 100644 index 00000000..b0b9b2a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22804.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Jul 9 20:44:31 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: <23D24327-5E0D-4868-875C-B5CEFF8A3CE3@iki.fi> +References: <4C37C781.5060700@sun.com> + + + + <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> + + <23D24327-5E0D-4868-875C-B5CEFF8A3CE3@iki.fi> +Message-ID: + +> But +> since we're talking about it, what's your opinion on what stuff it +> should convert to UTF8? Mailbox names is simple enough, +> ENVELOPE/BODY/BODYSTRUCTURE should be fine too, but I'm less sure about +> downloading/saving the actual headers/body. + +IMAP should only translate those message bits that IMAP itself has to +interpret. ENVELOPE is the obvious example. Nothing in the actual message +itself should be interpreted, so the results of FETCH BODY/BINARY are +off-limits. SEARCH results are an interesting case; client handling of +search is so scatter-shot I don't think we could ever come to a consensus. + +That said, it shouldn't be too hard to make a pass over the IMAP spec to +identify all the places where FWS might be an issue. From that we ought to +be able to crank out some guidelines in short order. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22807.mbox:2,S new file mode 100644 index 00000000..47a08558 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22807.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 02:15:18 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <23852.1276246771.199346@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <23852.1276246771.199346@puncture> +Message-ID: <201006111115.19660.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 10:59:31 Dave Cridland wrote: +> Depending on your server design, this is either very easy, or else +> very hard - of course, since it's optional, it'd seem likely that +> where it's hard it'd not be supported. +That's sure, that's why it's an option. In most popular IMAP servers that use +Maildirs this is a simple 'move' operation, with I/O cost of next to nothing +(assuming that the whole user account is on one FS of course). + +> One thing that concerns me is that there is no way to undo this +> operation - traditionally, only EXPUNGE and DELETE have been +> irrevocable actions in IMAP, this adds one more. +I don't see problem with that. And it is still revocable as long as we don't +care for changed UID (you can always select second mailbox and move messages +back). No data is harmed here. + +> The way to combat this is to make it merely mark \Deleted the +> original message - except then this eradicates any benefit to the +> command at all for clients. (Since one could either do MOVE/UID +> EXPUNGE, or else COPY+STORE/UID EXPUNGE). +That destroys the whole idea of atomic MOVE command, from both server and +client side. + +> And there has to be very significant advantage for clients, across a +> wide deployment, for most clients to bother implementing it - right +> now, I don't see it. +Have you ever tried to 'move to trash' eg. 2000 messages from inbox? +With current copy/store/expunge routine it takes (at least on servers that +I've tested) really really long times. + +Another real life example is a situation when user wants to move contents of +his INBOX to 'old-mail' mailbox with quota enabled and INBOX larger than half +of his quota. + +Other thing is that most of the client support 'move' operation by means of +cp/st/ex, and adding support for simplified 'MOVE' mode should not be such a +huge programming effort. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22810.mbox:2,S new file mode 100644 index 00000000..e5d97417 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22810.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From tss at iki.fi Thu May 13 02:15:45 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] LIST wildcards with mUTF-7 +Message-ID: + +I just added some code that supports listing mailboxes with UTF-8 input. Pretty soon I discovered a problem. For example I have two mailboxes: + +p? = p&AOQ- +p?? = p&AOQA5A- + +Now, if I try to list "p?*" I'd expect this to match both mailboxes, but it gets converted to "p&AOQ-*", so it won't match the second one. Maybe IMAP servers should be converting the names to UTF-8 internally and match only after that? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22813.mbox:2,S new file mode 100644 index 00000000..881788f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22813.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jan 18 01:40:48 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <30kZRcRQj+KHOwnouaxaCw.md5@lochnagar.gulbrandsen.priv.no> + +Message-ID: + +Lyndon Nerenberg writes: +>> Feel free to suggest wording for an informational section +>> discouraging imaps/pop3s/smtps. +> +> I would argue that since neither of imaps and pops are internet +> standards, normative text about them is out of scope for a standards +> track document, therefore all references to them should be deleted. + +Standards-track document talk about such things quite often. As long as +it's informational, anything goes. + +I grepped for (informational) references to experimental RFCs in RFCs +5000-present, and found several hundred. + +993 is a nuisance, but it's real enough. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22817.mbox:2,S new file mode 100644 index 00000000..e889bb63 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22817.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From tss at iki.fi Tue Dec 29 11:17:30 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + +Message-ID: <1262114250.26478.864.camel@timo-desktop> + +On Tue, 2009-12-29 at 11:02 -0800, Mark Crispin wrote: +> On Tue, 29 Dec 2009, Timo Sirainen wrote: +> > Dovecot with Maildir always behaved that way, but now that I'm creating +> > a new mailbox format I thought I'd get rid of that restriction. But that +> > in turn seems to be causing more trouble than I thought. +> +> What, precisely, is the behavior that you purpose to do in these cases: +> +> [1] "tag CREATE foo/" + +Same as "CREATE foo". + +> [2] "tag DELETE foo" where foo is selectable and has a child? + +Leave foo as \Noselect, don't delete children. + +> [3] "tag DELETE foo/bar" where foo is \NoSelect and bar is the only +> child? + +Delete both foo/bar and foo. + +> The requirements of IMAP in each case: +.. +> As long as you comply with these requirements, you are fine. + +Right. + +> If a client wants to keep "empty directories" around, it MUST NOT use the +> implicit creation feature, and MUST NOT delete mailboxes with children +> (if it wants to remove messages, use delete+expunge instead). Put another +> way, the ONLY way it should make a directory is with the "tag CREATE foo/" +> form. If that form makes a \NoSelect name, fine; but if it doesn't, then +> don't force it. + +I think my main question is: When server supports dual-use mailboxes, is +it a good idea for it to not support creation of \Noselect mailboxes +with "CREATE foo/"? If the server was internally capable of either +creating it as \Noselect or selectable, which one would be better? I +think there are two issues: + +1) Technically it's more featureful to create it as \Noselect. + +2) Users seem to be confused by \Noselect mailboxes. + +I'm beginning to think 2) outweighs 1), especially if there's no good +use case for 1). +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22820.mbox:2,S new file mode 100644 index 00000000..8cf06ebb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22820.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Nov 9 21:31:09 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] "k" right in IMAP ACLs +In-Reply-To: +References: +Message-ID: + +> What do clients that implement IMAP ACL expect from the "k" right? + +Show of hands: how many currently shipping clients support IMAP ACL? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22826.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22826.mbox:2,S new file mode 100644 index 00000000..c5d94e2b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22826.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From fret at memecode.com Wed Sep 30 23:00:08 2009 +To: imap-protocol@u.washington.edu +From: Matthew Allen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Copy command and UID of new mail +Message-ID: + +Hi, + +It appears that there is no way of knowing what the UID or sequence number is for new mail created by using the copy command. The reason I'd be interested in that information is so that I can copy over local cached versions of those mail instead of having to re-fetch them from the server. It might not be kosher to have local caches of on server data but I would like to be able to browse offline with my client so some sort of local cache is needed. At the moment I'm using rfc822 images in .eml files alongside meta-data in XML. That may change as my client implementation evolves but it's works for the moment. So in implementating the "move" command I issue an imap copy, then an imap delete for the mail selection. Ideally there would be a move command that gives you the new UID for each message moved, then I could just move the .eml file to the new folder and re-tag it with the new UID. But as it stands I do the copy, and delete the local .eml and it's meta data and rely on the on select replication code to re-create the email in the destination folder. + +Hmmm. Go easy I'm new ;) + +Regards +-- +Matthew Allen + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095075.22829.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095075.22829.mbox:2,S new file mode 100644 index 00000000..beb6a9c0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095075.22829.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Aug 24 20:12:25 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Survey Results for Spam-related keyword usage by + IMAP clients. +In-Reply-To: <1247001507.8602.109.camel@legolas.orthanc.ca> +References: <1247001507.8602.109.camel@legolas.orthanc.ca> +Message-ID: + +I realize this is a bit later than promised, but I was holding out hope +for (more) responses. + +The results were underwhelming. Two unofficial reports of client +behaviour, and a note from Mark describing how their server products look +at spam-related keywords. + +Apparently SPAM isn't an issue after all. + +I'll let Mark elaborate about his stuff if he thinks it's relevant. The +rest of the info was anecdotal and shouldn't go into the record. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22595.mbox:2,S new file mode 100644 index 00000000..b77b22e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22595.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From alexey.melnikov at isode.com Sun Mar 22 08:26:48 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] TLS server identity verification procedure update +Message-ID: <550EDF38.1000002@isode.com> + +Hi, +I wrote a draft on "Updated TLS Server Identity Check Procedure for +Email Related Protocols" + http://datatracker.ietf.org/doc/draft-ietf-uta-email-tls-certs/ + +This attempts to standardize consistent rules across all email protocols. + +I would like to solicit some reviews and also feedback from implementors +(email client writers, CA operators, tools writers). + +Thank you, +Alexey + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22641.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22641.mbox:2,S new file mode 100644 index 00000000..04fee09b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22641.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From jkt at flaska.net Wed Mar 26 06:51:05 2014 +To: imap-protocol@u.washington.edu +From: =?iso-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:52 2018 +Subject: [Imap-protocol] IMAP SUBMIT Extension, take two +In-Reply-To: <1395369035.8071.97071749.6F2A6445@webmail.messagingengine.com> +References: <5f20eeec-c84b-4395-b89b-dfc243d9c465@flaska.net> + <66E46BE7-0C45-4EFD-B18F-5A6959AADAC4@gmail.com> + + <219fd97c-e1fd-48e4-b8ae-fcf96537a9bb@gulbrandsen.priv.no> + <1395341331.29069.96929213.1F949AAB@webmail.messagingengine.com> + <39b431a9-93a6-42b1-9cbe-5788d5958f43@flaska.net> + <1395369035.8071.97071749.6F2A6445@webmail.messagingengine.com> +Message-ID: <3aca21cf-5659-484b-979a-1fcbe337ec58@flaska.net> + +On Friday, 21 March 2014 03:30:35 CEST, Bron Gondwana wrote: +> Bron ( and yes, maybe I should actually re-read your draft, which +> probably says exactly these things ) + +It does :). + +Could you please give it another try and see whether it makes sense to you? +It's at https://tools.ietf.org/html/draft-kundrat-imap-submit-02 . + +With kind regards, +Jan + +-- +Trojit?, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22701.mbox:2,S new file mode 100644 index 00000000..d3779292 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22701.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From slusarz at curecanti.org Tue Nov 27 15:04:55 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <50B508E3.3050209@verizon.net> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + + <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> + <50B508E3.3050209@verizon.net> +Message-ID: <20121127160455.Horde.mDRBAWWbJkueCNI0adKoQQ5@bigworm.curecanti.org> + +Quoting Joshua Cranmer : + +> On 11/26/2012 7:48 PM, Michael M Slusarz wrote: +>> IMAP command sniffing = javascript browser sniffing. The days of +>> parsing a browser's User-Agent field are so 1999. +> +> As someone who has seen both ends of the User-Agent debate (as a web +> developer and as a browser implementer), I can honestly say that +> parsing User-Agents is actually a very powerful and useful +> technique, and even browser vendors won't have a problem with it... +> if you do it properly. + +I don't have a problem with Browser sniffing, per se. A web +framework, for example, only has the User-Agent string to go by so by +necessity they need to use that. + +The problem comes when other agents, or proxies, "steal" a user-agent +string from another product in an effort to provide compatibility. +For something more abstract, like mobile detection, this shouldn't be +an issue. But if you are trying to workaround a much more granular +issue - does this browser support transparent PNGs? - problems arise. + +So, IMHO, when you have access to the actual environment you are +trying to test (i.e. DOM for javascript) there's no real excuse to not +do feature sniffing properly. It's not quite as clean in IMAP - +sending MBs of data to an APPEND command only to find out it failed - +but it is reliable. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22743.mbox:2,S new file mode 100644 index 00000000..43d97b44 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22743.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From petite_abeille at mac.com Wed Mar 21 13:46:00 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + +Message-ID: + + +On Mar 21, 2012, at 2:06 AM, Barry Leiba wrote: + +> Wrong in that clients are never required to send NOOP commands, and +> they expect to get updates at other times. The protocol actually +> requires you to send these sorts of updates when ANY command is +> received, modulo the specific situation with EXPUNGE. + +Fair enough. That said, in the selected state, that modulo is most of the useful commands. + +> Suppose I'm doing this for something like an hour and a half, and +> imagine my surprise when I stop to take a break for a few minutes, and +> suddenly get notified of 90 minutes' worth of new mail. + +Better late than never I guess. In any case, as mentioned previously, this specific IMAP implementation is fronting a mail archive, where utter most timeliness of updates is not an issue. + +So NOOP is good enough for updates. + +Thanks for the feedbacks though. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22756.mbox:2,S new file mode 100644 index 00000000..729da9a2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22756.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From brong at fastmail.fm Mon Nov 7 00:18:42 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> + +Message-ID: <1320653922.13384.140660995615489@webmail.messagingengine.com> + + + +On Sunday, November 06, 2011 5:11 PM, "Mark Crispin" wrote: +> On Mon, 7 Nov 2011, David Harris wrote: +> > Simple commonsense dictates that the +> > intention of the RFC must be that [UNSEEN] is mandatory *if the +> > mailbox contains any unread messages*, but that it *must* in fact be +> > *omitted* otherwise. +> +> David is correct; a little bit of common sense goes a long way. That seems +> to be lacking in certain individuals who, given a choice between a common +> sense answer and an absurd answer, invariably choose the absurd. + +RFC 3501 says " If this is missing, the + client can not make any assumptions about the first + unseen message in the mailbox, and needs to issue a + SEARCH command if it wants to find it. " + +That means there is NO WAY for the server to communicate "there are no +unseen messages in this mailbox" in an unambiguous way. + +> Such was the UNSEEN response. RFC 4731 is a far superior mechanism +> (although it has its own warts). I would be very surprised if any client +> uses the UNSEEN response (its intended purpose was to position the view at +> the first unread message). The client that used it has to fetch the flags +> for all messages anyway for other purposes, so it doesn't need it any +> more. + +Unfortunately, all these warts are required to be supported - and common sense +is a cop-out. There is no reading of RFC3501 which gives a correct answer to +this - hence my assertion that a fully complient server is required to +immediately disconnect any client issuing a "SELECT" for a mailbox which doesn't +contain unseen messages. They can always append a new message to the mailbox +and make sure they don't mark it seen if necessary. + +Bron ( workarounds 'r' us ) +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22759.mbox:2,S new file mode 100644 index 00000000..c47790a2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22759.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 14:38:05 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <1320096826.9022.140660992904397@webmail.messagingengine.com> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + <1320096826.9022.140660992904397@webmail.messagingengine.com> +Message-ID: + +On Mon, 31 Oct 2011, Bron Gondwana wrote: +> I can understand their perspective too - for all that IMAP itself may +> have been designed for good reasons, and made good compromises for what +> was needed, the sum total of every RFC that extends IMAP is a pretty +> crufty awful mishmash. + +So implement the base specification, which is not at all crufty and is for +the most part all that is actually needed. Just implement it correctly. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22768.mbox:2,S new file mode 100644 index 00000000..2fb62cef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22768.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From brong at fastmail.fm Mon Jun 6 23:23:39 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: +References: +Message-ID: <20110607062339.GA17296@brong.net> + +On Tue, Jun 07, 2011 at 07:59:11AM +0200, Norman Maurer wrote: +> Hi there, +> +> I'm currently working on getting SORT to work with my IMAP-Server / +> Mailbox-Store. I have read about the Base-Subject extraction and I'm +> almost sure I have implement it in the right manner. But I would be +> interested in some "Test Subjects" to write some Unit-Tests. +> +> Does anyone have a list of Subjects and the related Base-Subjects +> which I could use for my Unit-Tests (just to be sure I did it he right +> way) ? + +Yeah, Timo does: + +http://www.imapwiki.org/ImapTest + +(particularly in src/tests/sort-subject.mbox) + +It doesn't have the related base subjects - but it does have the +correct sort order for them. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22772.mbox:2,S new file mode 100644 index 00000000..34ccf14c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22772.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From snowjn at aol.com Wed May 18 17:33:05 2011 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> <20110518210716.GA12636@brong.net> + +Message-ID: <4DD46541.8000902@aol.com> + + + +Mark Crispin wrote: +> +> There is another way of doing client/server email. Too bad that very few +> understand it; many more that have heard of it, but do not understand it. +> + +Well? Don't keep me in suspense.... what is it? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22784.mbox:2,S new file mode 100644 index 00000000..fc4ed862 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22784.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From mrc+imap at panda.com Tue Feb 22 21:33:57 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] detecting new messages +In-Reply-To: <2CA53ECF4094AB4D8BDC7C60A75B1C02110C0FBAB0@hawaii.shoretel.com> +References: <2CA53ECF4094AB4D8BDC7C60A75B1C02110BEAFC52@hawaii.shoretel.com> + <5398C04A-99D8-47E5-ABB8-AE10B168F3C4@iki.fi> + + <2CA53ECF4094AB4D8BDC7C60A75B1C02110C0FBAB0@hawaii.shoretel.com> +Message-ID: + +On Tue, 22 Feb 2011, Darren Croke wrote: +> Thanks for all the answers to my question. An interesting side +> note--Microsoft Exchange 2007 rejects * as an invalid message set... + +Sadly, this is not at all surprising. + +The IMAP-savvy Microsoft employees (you can look at the archives of this +mailing list) were pulled off Exchange years ago. Their replacements are +unimaginably inferior kids. The results speak for themselves. + +Microsoft has no intention of fixing their broken implementation of IMAP. +They have said so, repeatedly. + +You face an unpleasant choice: either you comply with IMAP, or you comply +with Microsoft. + +If you comply with IMAP, you have to read the specification, and possibly +use an ABNF syntax parser to follow IMAP's at times overly-subtle syntax +rules. + +If you comply with Microsoft, it's easy; just implement the small subset +of IMAP that Outlook uses. If you have a server, send any old nonsense +for the rest of IMAP. If anyone complains about your client, say "it +works fine with Exchange, therefore it's a bug in your server." If anyone +complains about your server, just say "it works fine with Outlook, +therefore it's a bug in your client." + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22796.mbox:2,S new file mode 100644 index 00000000..99db111a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22796.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From snowjn at aol.com Mon Oct 4 17:38:17 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push + Email") Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> <4CAA0F5C.7030009@lists.grepular.com> <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> <11166.1286223088.054596@puncture> + +Message-ID: <4CAA7379.3070307@aol.com> + + + +Mark Crispin wrote: +> +> There is no reason for any desktop client to use IDLE, and negligible +> reason for a laptop client to do so. +> -- Mark -- +> + +I'm surprised to hear you say that. IDLE gives me instant notification of +new mail. Anything else relies on the client to poll periodically. That's +definitely less than instant. Is there a better way? + +snow. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22804.mbox:2,S new file mode 100644 index 00000000..7c102a5c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22804.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Jul 9 20:46:58 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] folding/encoding of subject in ENVELOPE +In-Reply-To: +References: <4C37C781.5060700@sun.com> + + + + <0D64214F-14CE-43EB-AFC8-9E00DE63EC7F@iki.fi> + +Message-ID: + +> For structured fields you can collapse according to FWS and punt. + +Sorry, I meant to say 'according to the *822 FWS canonicalization rules' +(and punt). + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22807.mbox:2,S new file mode 100644 index 00000000..3429aee9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22807.mbox:2,S @@ -0,0 +1,98 @@ +MBOX-Line: From dave at cridland.net Fri Jun 11 02:57:03 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111115.19660.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <23852.1276246771.199346@puncture> + <201006111115.19660.witold.krecicki@firma.o2.pl> +Message-ID: <29965.1276250223.982828@puncture> + +On Fri Jun 11 10:15:18 2010, Witold Kr?cicki wrote: +> On Friday 11 of June 2010 10:59:31 Dave Cridland wrote: +> > Depending on your server design, this is either very easy, or else +> > very hard - of course, since it's optional, it'd seem likely that +> > where it's hard it'd not be supported. +> That's sure, that's why it's an option. In most popular IMAP +> servers that use +> Maildirs this is a simple 'move' operation, with I/O cost of next +> to nothing +> (assuming that the whole user account is on one FS of course). +> +> +... And COPY is a "link" operation, with, equally, next to no I/O. + +> > One thing that concerns me is that there is no way to undo this +> > operation - traditionally, only EXPUNGE and DELETE have been +> > irrevocable actions in IMAP, this adds one more. +> I don't see problem with that. And it is still revocable as long as +> we don't +> care for changed UID (you can always select second mailbox and move +> messages +> back). No data is harmed here. +> +> +The changed UID is significant - it has the effect of invalidating +the cache. This may not be a showstopper, I'm just raising it as an +issue. + + +> > The way to combat this is to make it merely mark \Deleted the +> > original message - except then this eradicates any benefit to the +> > command at all for clients. (Since one could either do MOVE/UID +> > EXPUNGE, or else COPY+STORE/UID EXPUNGE). +> That destroys the whole idea of atomic MOVE command, from both +> server and +> client side. +> +> +Yes, this is true. + + +> > And there has to be very significant advantage for clients, +> across a +> > wide deployment, for most clients to bother implementing it - +> right +> > now, I don't see it. +> Have you ever tried to 'move to trash' eg. 2000 messages from inbox? +> With current copy/store/expunge routine it takes (at least on +> servers that +> I've tested) really really long times. +> +> +I'm not convinced this is a terribly common operation. If it is, and +if this causes your server to be slow, one option would be to +optimize this case better. + + +> Another real life example is a situation when user wants to move +> contents of +> his INBOX to 'old-mail' mailbox with quota enabled and INBOX larger +> than half +> of his quota. +> +> +In some cases, that can be very quick indeed - just a RENAME command. + + +> Other thing is that most of the client support 'move' operation by +> means of +> cp/st/ex, and adding support for simplified 'MOVE' mode should not +> be such a +> huge programming effort. + +Unless, of course, they implement a move via copy/store instead, +aiming to be more IMAP-like, in which case this doesn't help at all. + +Besides, lots of things are not a huge programming effort - I'd be +curious as to how many client developers would be keen to write this +alternate codepath in. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22810.mbox:2,S new file mode 100644 index 00000000..eca8a070 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22810.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 13 08:34:35 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] LIST wildcards with mUTF-7 +In-Reply-To: +References: +Message-ID: + +I think that it is hopeless to get wildcards working in any reasonable way +with mUTF-7 strings, except for wildcards that occupy a complete level of +hierarchy. Fortunately, the latter wildcards are the vast majority of +cases with most clients. + +Rather than try to make mUTF-7 better, I feel that we should move more +towards replacing US-ASCII as the baseline IMAP character set with UTF-8, +and leave mUTF-7 as something that only needs to be done with old servers +(if the client bothers to do i18n with old servers at all). + +The problem that I see is a tendency by the WG to overengineer the task at +hand. RFC 5738 is jawdropping in this respect. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22813.mbox:2,S new file mode 100644 index 00000000..ec616d58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22813.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jan 18 03:22:50 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <01NIK8RBBRJK004042@mauve.mrochek.com> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> +Message-ID: + +Ned Freed writes: +> The abscence of a technical justification doesn't mean no other sort +> of justification exists. + +I asked three admins about that in 2007, all said "we want all access to +be encrypted and imaps/pop3s/smtps is the practical way to get that". +Statistics isn't my field, three identical answers was enough for me, +and I concluded that SSL wrapping will remain in use until mail servers +offer configuration settings to allow/prevent plaintext access to mail. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22817.mbox:2,S new file mode 100644 index 00000000..3f8fa2dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22817.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From mrc+uw at Panda.COM Tue Dec 29 12:44:18 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: <1262114250.26478.864.camel@timo-desktop> +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> +Message-ID: + +On Tue, 29 Dec 2009, Timo Sirainen wrote: +>> [1] "tag CREATE foo/" +> Same as "CREATE foo". +>> [2] "tag DELETE foo" where foo is selectable and has a child? +> Leave foo as \Noselect, don't delete children. +>> [3] "tag DELETE foo/bar" where foo is \NoSelect and bar is the only +>> child? +> Delete both foo/bar and foo. + +These behaviors are all fine. In fact, this is how my new server behaves. + +> I think my main question is: When server supports dual-use mailboxes, is +> it a good idea for it to not support creation of \Noselect mailboxes +> with "CREATE foo/"? If the server was internally capable of either +> creating it as \Noselect or selectable, which one would be better? + +If "CREATE foo/" creates a selectable mailbox, I think that a client would +be surprised if \NoSelect mailboxes without children appear. + +> 1) Technically it's more featureful to create it as \Noselect. + +I don't think that it's a matter of featurefulness or otherwise. I think +that it's a matter of whether or not the server has such a thing as +directories (\NoSelect mailboxes which can be empty) as opposed to a flat +namespace that has these funny so-called "hierarchy delimiters" in it. + +I think that the worst possible thing would be to create a third +situation, which is a server which has directories but doesn't create them +with the explicit "create directory" command ("CREATE foo/"). However, +that is just my opinion. The IMAP specification permits it. + +> 2) Users seem to be confused by \Noselect mailboxes. + +Correction: crappy clients display \NoSelect mailboxes in a confusing way. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22820.mbox:2,S new file mode 100644 index 00000000..b1dfe3ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22820.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Nov 10 01:46:45 2009 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] "k" right in IMAP ACLs +In-Reply-To: <2EEFAD8A-EA31-43FE-932D-ADFA5148786E@iki.fi> +References: + <2EEFAD8A-EA31-43FE-932D-ADFA5148786E@iki.fi> +Message-ID: <4AF93685.1050801@isode.com> + +Timo Sirainen wrote: +> On Nov 9, 2009, at 11:47 PM, Mark Crispin wrote: +> +>> RFC 4314 is silent on many important details of the "k" right. For +>> example: +>> +>> [1] If a mailbox is top-level in the hierarchy (co-equal with INBOX), +>> where is the "k" right to be found? +> I'd say this is implementation-specific. +I agree. +> I use a default ACL file that can't be modified via IMAP, at least not +> currently. I suppose in theory it could be made modifiable by +> accessing it via the shared user prefix. For example if all other +> users' mails were under "users/foo@bar.org" then that would be the +> root hierarchy. But that would mainly work for changing other users' +> root ACL, not that well your own.. +>> [2] What if the parent name doesn't have an ACL? For example, consider +>> a hierarchical namespace in which the heirarchy delimiter is simply +>> a character in the name. Thus, a CREATE of a/b/c/d in no way +>> necessitates that a, a/b, and/or a/b/c exist; these are not only +>> \NoSelect names, they simply do not exist in any physical sense. Is +>> it supposed to search up the hierarchy, first trying a/b/c, then +>> a/b, then a, and finally the who-knows-where location of top-level +>> ACL in order to determine if there is a "k" right? +Yes. +> I think the way you should be thinking this is how would the server +> work if it didn't support non-existing mailboxes. Then it would first +> have to create a/b, which would take its ACL from a, then a/b/c which +> would now take its ACL from a/b, etc. So yeah, basically go up until +> you find an existing mailboxes. +Right. +> Actually I don't remember the RFC specifying what should happen when +> you create a child mailbox, but the best behavior I've figured so far +> is to just copy the parent's ACLs to the child. +This is the behaviour prescribed by the RFC. +> The bad thing about that is that if you want to change one you usually +> then have to change both of them. I should some day add support for +> ACLs that affect children directly, but then again that might make it +> more confusing to modify them via IMAP. +>> I assume that the purpose of the "k" right is to allow a designated +>> administrator to create new mailboxes in a non-user shared location. +>> However, this lack of specificity of where the necessary ACL is to be +>> found for top-level names is a weakness. +> My thinking was that "k" is mainly useful in public namespaces, or +> perhaps emulating that by creating shared mailboxes under some +> specific user's "shared" mailbox. In both of those cases there would +> be a parent mailbox. +>> What do clients that implement IMAP ACL expect from the "k" right? +> I'm not aware of any other clients than Mulberry that really supports +> ACLs. I don't know what it expects. +There are several clients supporting read-only ACLs, e.g. Thunderbird. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22826.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22826.mbox:2,S new file mode 100644 index 00000000..9211485e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22826.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From guenther+imap at sendmail.com Wed Sep 30 23:07:16 2009 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Copy command and UID of new mail +In-Reply-To: +References: +Message-ID: + +On Thu, 1 Oct 2009, Matthew Allen wrote: +> It appears that there is no way of knowing what the UID or sequence +> number is for new mail created by using the copy command. +... + +You appear to be looking for RFC 4315, the UIDPLUS extension, and the +COPYUID response code. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22829.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22829.mbox:2,S new file mode 100644 index 00000000..1d4bc6dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22829.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Aug 27 15:44:24 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg - VE6BBM/VE7TFX +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] [Redux] Spam-related keyword usage survey +Message-ID: + +Oops -- I spoke too soon. There were valid replies, but my summary +missed them due to a corrupted mail folder screwing up my results +search. My apologies to the two Davids! Their responses are included +below (along with Mark's server commentary). + + +* Client: Pegasus +* From: David.Harris@pmail.gen.nz + + Unfortunately, one of the problems with a very long legacy is that + decisions made early in the life cycle can be hard to reverse at a later + stage. I'm currently engaged in a total rewrite of my message store code: + some of the code there is nearly 20 years old, and it's *really* showing + its age, so however painful, a total reappraisal and redevelopment using + more modern techniques and tools has become unavoidable. As part of the + rewrite, my IMAP code is getting rewritten and much more compartmentalized + allowing it to be much freer in how it goes about doing a wide range of + tasks. I expect this to allow me to use facilities like keywords if it + seems appropriate, and to make it much easier to add support for such + facilities if it becomes appropriate in future. + + > > I'd also really like to know if the client has "this is spam" or "this + > > is not spam" buttons in the UI, and if it does how those buttons > > + interact with the use of keywords. + + Pegasus Mail has various spam-fighting facilities, including a regex- based + content processing engine and a full Bayesian spam filter. Identifying a + message as spam is simply a matter of moving it into the spam folder. + Similarly, indicating that a message that is in the spam folder is not spam + is simply a matter of moving it out of the folder to any other location. + There is also a clickable status button that can be used for in-place + evaluation and reclassification, although our experience is that most users + are more at home with the "move- in/move-out" paradigm. None of the + built-in anti-spam features has any interaction with any IMAP keyword at + any level, although it would be very convenient if there were one I could + use reliably. + + > > I ask this because users of any client that has such buttons are + clearly > > going to use those buttons preferentially over any other + labelling > > mechanism. And if a significant number of clients have such + buttons that > > do a particular thing - regardless of what that thing is - + that's pretty > > much going to be determinative in finding the most easily + deployed > > approach. + + Speaking purely as a client developer (since I develop both client and + server IMAP code), if there were a formally-defined keyword that I could + reliably expect to find on all server implementations, then I'd definitely + use it, but otherwise I won't go near it. It's really a pretty simple + equation for me - IMAP is only a part of my message store strategy, and I + can't shape the entire way I work on the basis of what it does and does not + support (I suspect this may be a fairly common conundrum for client + developers, but have no hard evidence of that). + +* Client: Thunderbird +From: bienvenu@davidbienvenu.org + + We store Junk/NonJunk keywords when either the user or the bayesian junk + filter have determined a message to be spam/not spam. We treat any message + with a keyword containing the strings "NonJunk" or "NotJunk" (for mail.app) + as a spam message, and if we don't find those strings in the keywords, if + we find "Junk" in any keyword, we treat the message as spam. So we'll + treat $Junk as junk, for example. We do a case-insensitive find on the + sub-strings. + +* Server: M*Guardian +* From: mrcrispin@Panda.COM + + This isn't done by an IMAP client, but it is exposed to IMAP clients by our + product. + + We use the following keywords in M+Guardian. We quarantine both incoming + and outgoing. The content and attachment quarantines are based upon site + configurable policy. + + $MPlusSpam quarantined due to spam + + $MPlusVirus quarantined due to virus + + $MPlusContent quarantined due to text content + + $MPlusAttach quarantined due to attachment + + $MPlusOutbound outbound vs. inbound message (e.g., you sent + something that you aren't allowed to send) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095076.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095076.22832.mbox:2,S new file mode 100644 index 00000000..30660548 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095076.22832.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Jul 7 14:18:27 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] A survey of Spam-related keyword usage by IMAP + clients. +Message-ID: <1247001507.8602.109.camel@legolas.orthanc.ca> + +It's time to get a current view of how IMAP clients are using keywords +to manage spam. If you are a client author I would appreciate it if you +could take a moment to send me a note describing which keywords your +client uses for spam-related processing, and what each of the keywords +signifies. If your client does not use keywords for this purpose, that's +valuable information, too, as is a breakdown of functionality by +software version number if there are significant differences. (If you +use non-keyword facilities to manage spam feel free to include a short +description of your methods if you think the info might be relevant.) + +I'm primarily interested in getting authoritative data from the client +authors, but others should feel free to chime in with deployment-based +experience of related keyword usage, but please indicate the source of +your comments (e.g. deployment experience, source code examination). + +I will summarize the responses to the imap-ext list in a couple of weeks +(or sooner if the response rate dictates.) + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22595.mbox:2,S new file mode 100644 index 00000000..3a563f08 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22595.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From gilles.lamiral at laposte.net Mon Mar 23 16:10:04 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +Message-ID: <55109D4C.2080900@laposte.net> + +Dear Imapeers, + +I'm writing to discuss about thr OpenEmailSurvey project +http://www.openemailsurvey.org/ + +I got this link from Dovecot's CTO, Ville Savolainen. A few months ago +I asked Ville some questions about OpenEmailSurvey but he might be +busy running Dovecot businesses. No problem with that. This imap discussion +list may be a better place to get some answers and collaboration, more +people, more perspectives. + +My main goal is to add a wizard mode to imapsync, a mode where options +for specific imap servers are set automagically. Avoiding that users +and I always read and apply the same FAQ items is a user experience +improvement I aim. + +It looks like the OpenEmailSurvey project is tremendous for that +purpose. So I have questions about it. + +Do you share on OpenEmailSurvey project? +Is there a mailing-list or similar? +Are code or principles to detect real imap server softwares open? + +When users ask me about problems with imap servers they even don't +know the software name, I usually look at the CAPABILITY response, +NAMESPACE, some other imap responses or some nmap service detection. +I always get the name of it. I haven't formalized it yet in a script, +I've played by hand for now, not so often. I'm lazy, so before doing +it all by myself I ask you if I'll have to reinvent the wheel or not +on that matter. + +My other questions about OpenEmailSurvey, less important for my +purpose, are the followings: + +100% IPv4 scanned is claimed: How do you deal with abuse reports? +What means a crossed out imap server on +http://www.openemailsurvey.org/ ? + +In fact, I started a similar project some years ago (2008). It was +quite efficient, millions of servers scanned everyday from a small +connexion. But I encountered warning issues from my ISP, abuse +complains. It was a pure statistical study but I finally named it Scanty +and put it somewhere with ideas to avoid those abuse complains, ideas +like reverse resolution ok (PTR), abuse complains IP list hardcoded +("never come back here"), whois resolution, don't come back too often +etc. + +At that time, 2008, I got around 0.24% of all hosts with port 143 open +on imap while OpenEmailSurvey scored 0.1% in 2013. It looks like Gmail and Big +cloud webmails have stolen half of the imap market share. + +Thanks in advance for your input. + + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22701.mbox:2,S new file mode 100644 index 00000000..ba2f2670 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22701.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From blong at google.com Tue Nov 27 15:10:00 2012 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <50B54704.9020805@tlinx.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + <50B54704.9020805@tlinx.org> +Message-ID: + +I believe he's dealing with an environment running php scripts with even +support as running as CGIs which are exec'd on every access. + +Which isn't to say that some mechanism wouldn't be possible to do this +(fork a daemon that holds the connections and pass them to the new server +or something) but it gets complicated. + +It would be much simpler to just have a long running server serve the +webpages directly instead of through CGI, but that's what he's got. + +Brandon + + +On Tue, Nov 27, 2012 at 3:04 PM, L Walsh wrote: + +> Michael M Slusarz wrote: +> +>> +>> Background: I am a disconnected client author (webmail).... I was +>> depressed/alarmed at the amount of state re-creation ...need.. NAMESPACE, +>> CAPABILITY, (since there was no guarantee that we are connecting to the +>> same backend IMAP server, it was/is not possible to cache these values on +>> the client side), ENABLE QRESYNC, and LANGUAGE call on every user action. +>> +> --- +> Just ignore me if I'm too clueless for this to be of any help, but if I was +> doing what you are doing, I'd cache the client TCP connections to the IMAP +> server until I timed their session-out from my webserver. +> +> I.e. would set cookie upon connection to their imap server that contains +> a 'handle' that would indicate something in my 'IMAP-TCP connection cache', +> and route their requests accordingly. +> +> Not only are starting TCP connections "expensive", but you have an added +> expense +> of IMAP state... if HTTP(S), believes in using PIPELINING to enable lower +> server loads and faster response time, why not a webmail->imap gateway? +> +> Set the "session-timeout to ~5-15 minutes" of inactivity like many things +> do and you can recycle their imap connection, but if they reconnect w/the +> same cookie, it seems you could simply route their commands to the already +> open connection to their imap server -- and there would be no overhead +> of looking for capabilities, or resetting state...etc, as the TCP conn. +> would guarantee it's the same server. +> +> It would all be transparent to the user -- if they reconnect to you, you +> look in your cache, and see if the TCP connection is still valid (or if it, +> possibly, has been closed from the other end). If it has been, the safest +> thing to do would be to give a message that the remote IMAP connection +> timed-out and they need to re-connect. +> +> Sorry, if this sounds too clueless for words, and I am missing something +> obvious about why this can't be done -- but it sounds like rolling your +> own connection cache would be the way to go...(but probably am missing +> the forest for the trees....)... +> +> +> -l +> +> ______________________________**_________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.**edu/mailman/listinfo/imap-**protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22743.mbox:2,S new file mode 100644 index 00000000..1aecd1c3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22743.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From dave at cridland.net Wed Mar 21 14:14:49 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <20120321101517.GA31585@launde.brong.net> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + <20120321101517.GA31585@launde.brong.net> +Message-ID: <20897.1332364489.444829@puncture> + +On Wed Mar 21 10:15:17 2012, Bron Gondwana wrote: +> And we instructors have a saying... if one person in your class +> makes a +> mistake, it might be their fault - but if a lot of them get it +> wrong then +> IT IS YOUR FAULT. You didn't cue properly. Fix it next time you +> teach +> that track. + +Yes, and I can't fault your argument here, but you're arguing that +the RFC (etc) should be clearer, not that servers should be +deliberately designed around the poorest performing clients to the +detriment of the better performing ones, are you? + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22756.mbox:2,S new file mode 100644 index 00000000..59425daa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22756.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From mrc+imap at panda.com Mon Nov 7 08:52:04 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: <1320653922.13384.140660995615489@webmail.messagingengine.com> +References: <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> + + <1320653922.13384.140660995615489@webmail.messagingengine.com> +Message-ID: + +On Mon, 7 Nov 2011, Bron Gondwana wrote: +> RFC 3501 says " If this is missing, the +> client can not make any assumptions about the first +> unseen message in the mailbox, and needs to issue a +> SEARCH command if it wants to find it. " +> That means there is NO WAY for the server to communicate "there are no +> unseen messages in this mailbox" in an unambiguous way. + +That means that if a client expects to know the position of the first +unseen message at select time, instead of doing a SEARCH, it can not +discriminate between the case of "there are no unseen messages" and +"server does not support sending that information." + +There are alternative ways for the client to find that information, most +notably SEARCH UNSEEN. If there are no unseen messages, then the sole cost +is an extra RTT. If the server does not support sending that information, +then that's the way to get the information. + +The whole point was to save the client from sending SEARCH UNSEEN, and the +possibly large response, if the server supports sending that information +and the client cares. I don't know if any clients care any more. + +> Unfortunately, all these warts are required to be supported - and common sense +> is a cop-out. + +Lawyers insist upon a legalistic interpretation without any use of "what +is intended here". + +Engineering requires practical interpretations. Nobody gets anywhere with +legalistic interpretations. Engineering requires cooperative problem +solving. + +> There is no reading of RFC3501 which gives a correct answer to +> this - + +Nonsense. The only intepretation at the server end that makes sense is to +send the data when there is data to send. The client end interpretation is +explictly stated as above. + +> hence my assertion that a fully complient server is required to +> immediately disconnect any client issuing a "SELECT" for a mailbox which doesn't +> contain unseen messages. + +You seem to think that saying such things somehow impresses me of your +intelligence and talent. + +If you were intelligent and talented you would be constructive and +cooperative. + +Intelligent and talented people concern themselves with fixing things that +are broken - of which there is an infinite supply of newly created broken +things to add to the existing supply. + +Intelligent and talented people do not bang drums repeatedly upon finding +a trivial ambiguity in a specification. + +Intelligent and talented people content themselves with pointing out the +trivial ambiguity ONCE. + +Intelligent and talented people don't go off on a tangent with a +misinterpretation that is both absurd and harmful. + +Intelligent and talented people, if they find that trivial matter to be +annoying enough, will write an errata with proposed replacement wording, +post it for review, and upon general concensus will submit it to the RFC +3501 errata for inclusion in a future revision. + +For what it's worth, that particular bit of text was from someone else's +errata...to remedy another silly ambiguity. + +I was the editor of RFC 3501. I did write a great deal of it; but that +document is the work of many authors (and one editor). I feel sorry for +you if you believe that perfection (or even complete consistency) is +possible in such an effort. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22759.mbox:2,S new file mode 100644 index 00000000..b9c17cf0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22759.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From blong at google.com Mon Oct 31 14:53:26 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + +Message-ID: + +On Mon, Oct 31, 2011 at 2:12 PM, Mark Crispin wrote: +> On Mon, 31 Oct 2011, Brandon Long wrote: +>> +>> tsk tsk, haven't I said this before? ?Outlook isn't our primary at +>> all. +> +> I was told specifically, by Google, that Google does not care at all about +> compliance with the IMAP RFCs, but rather that Outlook using IMAP behaved +> like Gmail. I was also told specifically that compliance and/or +> interoperability is NOT a priority at Google. + +I have no idea who you talked to, but my team owns the Gmail IMAP server. + +As for Outlook, we have a separate piece for that, since we had issues +with their IMAP implementation: + +http://www.google.com/apps/intl/en/business/outlook_sync.htm + +Plus, that has the benefit of giving Outlook contacts & calendar sync as well. + +As for "behaving like Gmail", we have that issue most definitely. +Almost all of our IMAP users mostly use the web interface, so yes, +they want the IMAP experience to mimic the Gmail interface. There are +settings that can be set to make the experience more "IMAP normal" +than "Gmail normal", but the defaults favor the more common use case. + +> If you think that Gmail's IMAP server is compliant, you are mistaken. + +I know its not compliant, we even have a support page where we list +the cases where we explicitly decided against compliance. +Interoperability is a goal, however. That doesn't mean we want to +force Gmail users to use the IMAP mailbox model, however. + +> Should Google's corporate goals ever change to incorporate compliance and +> interoperability, I wish you luck on making it compliant. You have a lot +> of work, and a great deal of testing, ahead of you. You also face some +> very difficult design decisions. + +If compliance was important, one would think there would be a fairly +comprehensive suite of tests that one could use to measure that. The +existing test suite does not meet that goal. + +And I argue that we made the design decisions we did with good +reasons. I also argue that there were no perfect decisions to be +made, and usability was a more important goal than correctness. + +> FWIW, "it works with Apple Mail and Thunderbird" does not constitute +> testing. Not by a long shot. + +The real world is a harsh place. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22768.mbox:2,S new file mode 100644 index 00000000..b3f74a30 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22768.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From slusarz at curecanti.org Mon Jun 6 23:33:21 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: +References: +Message-ID: <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + +Quoting Norman Maurer : + +> Hi there, +> +> I'm currently working on getting SORT to work with my IMAP-Server / +> Mailbox-Store. I have read about the Base-Subject extraction and I'm +> almost sure I have implement it in the right manner. But I would be +> interested in some "Test Subjects" to write some Unit-Tests. +> +> Does anyone have a list of Subjects and the related Base-Subjects +> which I could use for my Unit-Tests (just to be sure I did it he right +> way) ? + +We've got a basic test suite with a few examples here: + +http://git.horde.org/co.php/framework/Imap_Client/test/Horde/Imap/Client/SubjectParseTest.php?rt=horde-git + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22772.mbox:2,S new file mode 100644 index 00000000..2d66ecdb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22772.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 18 18:35:58 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Beat up on Gmail +In-Reply-To: <4DD4617A.8040001@verizon.net> +References: + <4DD4617A.8040001@verizon.net> +Message-ID: + +On Wed, 18 May 2011, Joshua Cranmer wrote: +> My experience over the past several years has been that people who use +> email clients instead of webmail tend to be a more overly conservative +> bunch of people than those who do not use them. In that vein, the people +> who would be accessing Gmail over IMAP would probably have preferred the +> traditional folder model over Gmail's label concepts; + ++1 + +Don't overlook Google's "youth oriented culture". Not exactly youth any +more since there's a new generation now. But it is a culture that very +much has the "everything that came before us sucks and we don't care" +mentality of its founders' generation. + +This is distinct from the Apple mindset, which is that of a cult. + +> I remember my +> disappointment to have discovered that my "normal" email usage model +> just didn't well with Gmail's implementation (what? delete doesn't +> actually delete the mail?) + +I only use Gmail for spam from Google. I doubt that mail that touches +Google's servers ever really goes away; at best it becomes invisible to +you. + +>> No client our users actually used would have done +>> anything with the keywords, +> If this information were made public, I'm sure knowledgeable people +> would have asked for some kind of standardization in this regard. + +Google's sole focus in supporting IMAP is to trick Outlook into giving a +more or less Gmail web experience. They don't care what it does to +compliant clients. + +Once you understand that point, the implementation of IMAP Gmail makes +complete sense. + +I once made the mistake of compiling a large set of itemized and detailed +issues of what Google, Microsoft, and Apple each did wrong, complete with +examples and citations. I spent long days on this effort, and eventually +delivered the appropriate issue lists to each of them. The vast majority +of those issues remain unfixed. + +I won't say who, but one of the threesome actually said "this list is too +long, narrow it down to one or two." + +Then there is Yahoo, whose SMTP server still has a bug that I identified +in the 1990s! I recently talked with some folks in Venezuela who ran up +against that bug; what a blast from the past. + +At some point, you have to assume that they don't give a damn. Perhaps +they are right. Consumers have grown accustomed to the fact that email +software sucks; for the most part they've moved away from it. There just +is no expectation, much less demand, for email that doesn't suck. + +Maybe we need product liability laws for software. Imagine me as a +federal bureaucrat empowered to slap daily fines on these cretins for not +fixing their bugs. When it comes to fixing bugs, and having bugs get +fixed, I can be relentless. Oh I would have such fun. Hah! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22784.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22784.mbox:2,S new file mode 100644 index 00000000..19f2d3fa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22784.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc+imap at panda.com Sat Feb 26 10:33:53 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] RFC 2971 (ID) mandatory in Android phones? +Message-ID: + +I have just received a frightening report that says that the mail client +in Android phones sends an ID command to an IMAP server that does not +advertise the ID extension, and disconnects the session when the IMAP +server returns BAD as the response. + +I can NOT duplicate this problem on my Android phone, an old T-Mobile +myTouch 3G. However, as its OS is 2 or so years old, it's possible that +this is a bug in newer versions. + +The client reported to do this sends the following ID command: + +2 ID ("name" "com.android.email" "os" "android" "os-version" "2.2; FROYO" "vendor" "samsung" "x-android-device-model" "GT-P1000" "x-android-mobile-net-operator" "Vodafone CZ" "AGUID" "F26+FjerfVzQ1lSlxFmbV/Yw0ak=") + +Is this true? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22796.mbox:2,S new file mode 100644 index 00000000..f0f6ee04 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22796.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Mon Oct 4 17:51:16 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <11166.1286226226.318772@puncture> + +Message-ID: <959754EE-4A2A-4DBD-8A63-6A317532C302@iki.fi> + +On 4.10.2010, at 22.20, Mark Crispin wrote: + +> Last, and not least, it would not issue the +> DONE after 29 minutes as described in the IDLE RFC, so even if the session +> was still alive it would die in the 30th minute. + +If only it were the only one. It seems that just about all the widely used clients either do that or used to do it at some point. So nowadays my server never disconnects clients on IDLE because they haven't sent anything. That fixes the whole thing. I still send "* OK Still here" events every 2 minutes, so connections that are actually gone will get disconnected pretty quickly. + +> That last problem required a truly horrible and utterly disgusting kludge. +> At the 28th minute, a fake untagged EXISTS would be sent announcing new +> mail. The Client That Shall Not Be Named would issue a DONE. Then, at +> once, the server would issue an untagged EXPUNGE for that fake message, +> and The Client That Shall Not Be Named never noticed that nothing changed +> in the UID regime as a result of that message being "added" then +> "expunged"! + +This doesn't help clients that use one IDLEing connection that does nothing but IDLE, and use another connection for actually fetching the new mails. Although maybe that thing died already that had the problem, but I'm not entirely sure. Anyway, my above solution seems easiest for current and future clients.. diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22804.mbox:2,S new file mode 100644 index 00000000..5f59ad17 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22804.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From bill.shannon at sun.com Sun Jul 11 00:57:13 2010 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Re: folding/encoding of subject in ENVELOPE +In-Reply-To: +References: <4C37C781.5060700@sun.com> + + + +Message-ID: <4C397959.5090606@sun.com> + +Mark Crispin wrote on 07/09/2010 08:00 PM: +> On Fri, 9 Jul 2010, Lyndon Nerenberg wrote: +>>> Yes, but my server (and many others) are converting all whitespace to a +>>> single space (tabs, folds, multiple spaces, etc). I can't exactly +>>> remember why, though. Maybe I implemented it only because others did +>>> that too.. +>> The '822 grammar production. +> +> Correct. You interpret the fields as per RFC 822 (etc.). +> +> Line folding is an RFC 822 (etc.) concept and is not part of the field +> data (e.g., Subject). Header fields are logically a single line, even if +> they are multiple lines in the header. +> +> If you think about it and how protocol layering works, it makes sense. +> You are looking at a message and its fields, not how RFC 822 (etc.) +> encodes it. +> +> Arguably, a future version of IMAP should decode MIME encoded-words into +> UTF-8. + +Ok, so now I'm confused. + +The server is required to interpret and remove some parts of the encoding +(i.e., folding) but not other parts (MIME encoded words)? + +I should *never* expect to see a newline in the subject field of the +ENVELOPE, and if I do that's a bug in the server? + +Or is unfolding the header something servers are allowed to do but not +required to do? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22807.mbox:2,S new file mode 100644 index 00000000..37a43b79 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22807.mbox:2,S @@ -0,0 +1,112 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 03:12:57 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276250223.982828@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <29965.1276250223.982828@puncture> +Message-ID: <201006111212.57771.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 11:57:03 Dave Cridland wrote: +> On Fri Jun 11 10:15:18 2010, Witold Kr?cicki wrote: +> > On Friday 11 of June 2010 10:59:31 Dave Cridland wrote: +> > > Depending on your server design, this is either very easy, or else +> > > very hard - of course, since it's optional, it'd seem likely that +> > > where it's hard it'd not be supported. +> > +> > That's sure, that's why it's an option. In most popular IMAP +> > servers that use +> > Maildirs this is a simple 'move' operation, with I/O cost of next +> > to nothing +> > (assuming that the whole user account is on one FS of course). +> +> ... And COPY is a "link" operation, with, equally, next to no I/O. +assuming that underlying FS supports hard linking and that the messages are +immutable (remember that not only IMAP accesses messages). + +> > > One thing that concerns me is that there is no way to undo this +> > > operation - traditionally, only EXPUNGE and DELETE have been +> > > irrevocable actions in IMAP, this adds one more. +> > +> > I don't see problem with that. And it is still revocable as long as +> > we don't +> > care for changed UID (you can always select second mailbox and move +> > messages +> > back). No data is harmed here. +> +> The changed UID is significant - it has the effect of invalidating +> the cache. This may not be a showstopper, I'm just raising it as an +> issue. +The question is - if the user uses st/cp/ex it's as irrevocable as move, so +why bother? + +> > > The way to combat this is to make it merely mark \Deleted the +> > > original message - except then this eradicates any benefit to the +> > > command at all for clients. (Since one could either do MOVE/UID +> > > EXPUNGE, or else COPY+STORE/UID EXPUNGE). +> > +> > That destroys the whole idea of atomic MOVE command, from both +> > server and +> > client side. +> +> Yes, this is true. +> +> > > And there has to be very significant advantage for clients, +> > +> > across a +> > +> > > wide deployment, for most clients to bother implementing it - +> > +> > right +> > +> > > now, I don't see it. +> > +> > Have you ever tried to 'move to trash' eg. 2000 messages from inbox? +> > With current copy/store/expunge routine it takes (at least on +> > servers that +> > I've tested) really really long times. +> +> I'm not convinced this is a terribly common operation. If it is, and +> if this causes your server to be slow, one option would be to +> optimize this case better. +It is common with users with long e-mail history and inboxes containing >10k, +and sometimes even >100k mails. + +> > Another real life example is a situation when user wants to move +> > contents of +> > his INBOX to 'old-mail' mailbox with quota enabled and INBOX larger +> > than half +> > of his quota. +> +> In some cases, that can be very quick indeed - just a RENAME command. +In cases when you want to move 'old' (older than 1 month) mail - it doesn't +work. And that is a common operation. + +> > Other thing is that most of the client support 'move' operation by +> > means of +> > cp/st/ex, and adding support for simplified 'MOVE' mode should not +> > be such a +> > huge programming effort. +> +> Unless, of course, they implement a move via copy/store instead, +> aiming to be more IMAP-like, in which case this doesn't help at all. +Most of the clients I've seen (and I've investigated a few of them lately) do +cp/st/ex (with expunge sometimes delayed, but not for long). + +> Besides, lots of things are not a huge programming effort - I'd be +> curious as to how many client developers would be keen to write this +> alternate codepath in. +One have already done it, and that wasn't me :) +Lots of IMAP clients are open source, and I'm pretty sure that TB/Claws/KMail +will support this operation not long after it'd be supported by most popular +IMAP servers. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22810.mbox:2,S new file mode 100644 index 00000000..5d8f561c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22810.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From barryleiba.mailing.lists at gmail.com Thu May 13 14:19:46 2010 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] LIST wildcards with mUTF-7 +In-Reply-To: +References: + +Message-ID: + +> Rather than try to make mUTF-7 better, I feel that we should move more +> towards replacing US-ASCII as the baseline IMAP character set with UTF-8, +> and leave mUTF-7 as something that only needs to be done with old servers +> (if the client bothers to do i18n with old servers at all). +> +> The problem that I see is a tendency by the WG to overengineer the task at +> hand. ?RFC 5738 is jawdropping in this respect. + +[Barry nods in huuuuge agreement.] + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22813.mbox:2,S new file mode 100644 index 00000000..5016b343 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22813.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From dot at dotat.at Mon Jan 18 05:12:45 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <01NIK8RBBRJK004042@mauve.mrochek.com> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> +Message-ID: + +On Sun, 17 Jan 2010, Ned Freed wrote: +> +> > Why does the spec provision for IMAPS and POP3S? +> +> Because a provisioning mechanism that fails to deal with the needs ot +> real-world deployments - and there's plenty of this secure port stuff deployed +> out there - makes itself far less likely to deploy. + +In that case shouldn't it also document smtps? + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +GERMAN BIGHT HUMBER: SOUTHWEST 5 TO 7. MODERATE OR ROUGH. SQUALLY SHOWERS. +MODERATE OR GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22817.mbox:2,S new file mode 100644 index 00000000..710e6376 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22817.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From bhayden at umn.edu Tue Dec 29 14:17:10 2009 +To: imap-protocol@u.washington.edu +From: Brian Hayden +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + +Message-ID: + + +On Dec 29, 2009, at 2:44 PM, Mark Crispin wrote: +> +> Correction: crappy clients display \NoSelect mailboxes in a +> confusing way. + +Has anyone studied this from a user perspective? I suspect that you'd +have to come up with an interaction method that is both new and +intuitive (something that is quite the rare gem) to have the concept +have any meaning to the user in a client interface -- \NoSelect seems +quite foreign to everything else they encounter on a computer system +(or in any other interface, for that matter). + +It's possible that every client is crappy, I guess, but in fifteen +years working on this stuff I've never seen a user that didn't trip +over it, from Pine to Outlook and everything in between. + +-Brian + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22820.mbox:2,S new file mode 100644 index 00000000..619fe747 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22820.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Nov 10 02:51:15 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] "k" right in IMAP ACLs +In-Reply-To: <4AF93685.1050801@isode.com> +References: + <2EEFAD8A-EA31-43FE-932D-ADFA5148786E@iki.fi> + <4AF93685.1050801@isode.com> +Message-ID: + +Alexey Melnikov writes: +> Timo Sirainen wrote: +>> On Nov 9, 2009, at 11:47 PM, Mark Crispin wrote: +>>> What do clients that implement IMAP ACL expect from the "k" right? +>> I'm not aware of any other clients than Mulberry that really supports +>> ACLs. I don't know what it expects. +> There are several clients supporting read-only ACLs, e.g. Thunderbird. + +My impression (just from reading server logs) is that read-only is far +from unheard. One of the webmail thingies is the only I can recall that +does read-write. + +Makes sense, too: It's easy to send a MYRIGHTS command and use the +result to enable/disable e.g. a "create mailbox" button or menu entry, +and much harder to write an edit dialog. + +Now that I think about it, if a client does that, it may never run into +the corner case that started the thread. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22829.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22829.mbox:2,S new file mode 100644 index 00000000..60998be2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22829.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Aug 27 15:52:10 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg - VE6BBM/VE7TFX +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Resending David Harris' Keyword Comments +In-Reply-To: <4A666F2E.25104.17C99307@David.Harris.pmail.gen.nz> +Message-ID: <926163938893b2f2c230a2d5b1acb908@yyc.orthanc.ca> + +[ I think the first part was truncated in the original message. ] + +> First off, I assume we're talking about "keywords" as defined in +> RFC3501 section 2.3.2 - or at least, I use the word "defined" loosely, +> because the word "keyword" just sort of appears out of nowhere in that +> section without any definition at all, and the BNF doesn't amplify the +> situation much. +> +> My client is Pegasus Mail - it has had IMAP support for about 14 years +> now, but that support never been very advanced or ambitious, mostly +> because in the very early days I ran into so many inconsistencies with +> server implementations that I never felt it was safe to use anything +> other than the most basic functions of the protocol (and even then I've +> had my share of problems). Keywords are one of the things I've always +> avoided, simply because in the early stages, I found that some servers +> either did not support client-defined keywords, or defined them in +> variable ways that made them difficult to use. As a general rule, you +> can't hang an entire piece of functionality on a feature that might or +> might not be implemented in the server, so it was best simply to avoid +> keywords altogether. Instead, I check for specific message headers +> and allow the user to define others. My client code is very heavily +> cached, so the overhead of examining the headers is only a one-time +> hit in most cases, and a hit that has to be done for other reasons in +> any event. +> +> [ As an aside, I've just re-read the section of RFC3501 on keywords +> and find that it's still server-optional whether they can be client-defined, +> which effectively renders them all but useless, in my view. ] +> +> Unfortunately, one of the problems with a very long legacy is that +> decisions made early in the life cycle can be hard to reverse at a later +> stage. I'm currently engaged in a total rewrite of my message store +> code: some of the code there is nearly 20 years old, and it's *really* +> showing its age, so however painful, a total reappraisal and +> redevelopment using more modern techniques and tools has become +> unavoidable. As part of the rewrite, my IMAP code is getting rewritten +> and much more compartmentalized allowing it to be much freer in how +> it goes about doing a wide range of tasks. I expect this to allow me to +> use facilities like keywords if it seems appropriate, and to make it +> much easier to add support for such facilities if it becomes appropriate +> in future. +> +>> > I'd also really like to know if the client has "this is spam" or "this +>> > is not spam" buttons in the UI, and if it does how those buttons +>> > interact with the use of keywords. +> +> Pegasus Mail has various spam-fighting facilities, including a regex- +> based content processing engine and a full Bayesian spam filter. +> Identifying a message as spam is simply a matter of moving it into the +> spam folder. Similarly, indicating that a message that is in the spam +> folder is not spam is simply a matter of moving it out of the folder to +> any other location. There is also a clickable status button that can be +> used for in-place evaluation and reclassification, although our +> experience is that most users are more at home with the "move- +> in/move-out" paradigm. None of the built-in anti-spam features has any +> interaction with any IMAP keyword at any level, although it would be +> very convenient if there were one I could use reliably. +> +>> > I ask this because users of any client that has such buttons are clearly +>> > going to use those buttons preferentially over any other labelling +>> > mechanism. And if a significant number of clients have such buttons that +>> > do a particular thing - regardless of what that thing is - that's pretty +>> > much going to be determinative in finding the most easily deployed +>> > approach. +> +> Speaking purely as a client developer (since I develop both client and +> server IMAP code), if there were a formally-defined keyword that I +> could reliably expect to find on all server implementations, then I'd +> definitely use it, but otherwise I won't go near it. It's really a pretty +> simple equation for me - IMAP is only a part of my message store +> strategy, and I can't shape the entire way I work on the basis of what it +> does and does not support (I suspect this may be a fairly common +> conundrum for client developers, but have no hard evidence of that). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095077.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095077.22832.mbox:2,S new file mode 100644 index 00000000..a757b559 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095077.22832.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From mrc+uw at panda.com Sat Jul 11 21:47:15 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] copy to same mailbox +Message-ID: + +I just discovered that the GroupWise IMAP server does not permit the +target of a COPY command to be the selected mailbox. GroupWise has other +issues, but apparently nobody has ever complained about this. + +Do other servers prohibit COPY to the selected mailbox? + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22595.mbox:2,S new file mode 100644 index 00000000..889aa7f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22595.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From brong at fastmail.fm Mon Mar 23 16:26:35 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <55109D4C.2080900@laposte.net> +References: <55109D4C.2080900@laposte.net> +Message-ID: <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> + +On Tue, Mar 24, 2015, at 10:10 AM, Gilles LAMIRAL wrote: +> At that time, 2008, I got around 0.24% of all hosts with port 143 open +> on imap while OpenEmailSurvey scored 0.1% in 2013. It looks like Gmail and Big +> cloud webmails have stolen half of the imap market share. + +I wonder how many sites there are where you just can't tell anyway. + +FastMail doesn't even listen on port 143, because it leaks cleartext passwords to active attackers: + +https://www.fastmail.com/help/technical/ssltlsstarttls.html + +And even once you try port 993: + +* OK IMAP4 ready +. CAPABILITY +* CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID ENABLE UIDPLUS SASL-IR AUTH=PLAIN +. OK completed + +You're talking to nginx. It's only once you log in that you see what's really there: + +. OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxten QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SEARCH=FUZZY SORT SORT=MODSEQ SORT=DISPLAY SORT=UID THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE ANNOTATE-EXPERIMENT-1 METADATA LIST-EXTENDED LIST-STATUS LIST-MYRIGHTS WITHIN QRESYNC SCAN XLIST XMOVE MOVE SPECIAL-USE CREATE-SPECIAL-USE DIGEST=SHA1 LOGINDISABLED XCONVERSATIONS COMPRESS=DEFLATE X-QUOTA=STORAGE X-QUOTA=MESSAGE X-QUOTA=X-ANNOTATION-STORAGE X-QUOTA=X-NUM-FOLDERS IDLE] User logged in SESSIONID= + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22701.mbox:2,S new file mode 100644 index 00000000..ffb446ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22701.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From tss at iki.fi Tue Nov 27 15:35:59 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Combining LITERAL+ and BINARY +In-Reply-To: +References: +Message-ID: <1354059359.2844.26.camel@innu> + +On Tue, 2012-11-27 at 21:05 +0100, Jan Kundr?t wrote: +> I was wondering what is the correct way of combining LITERAL+ [1] and BINARY [2]. Unless I'm mistaken, their interaction is not documented in any of the two RFCs. If I'm correct, this means that one can either benefit from 8bit APPENDs while blocking with synchronizing literals, or use LITERAL+ and do the encoding to some transport format on their own, not using BINARY. Is that right? + +It's not defined, so I don't think clients can legally use their +combination.. Although Dovecot supports the obvious way of combining +them: ~{n+} + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22743.mbox:2,S new file mode 100644 index 00000000..db66d695 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22743.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From dave at cridland.net Wed Mar 21 14:37:58 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + +Message-ID: <20897.1332365878.053493@puncture> + +On Wed Mar 21 20:46:00 2012, PA wrote: +> Fair enough. That said, in the selected state, that modulo is most +> of the useful commands. + +No, many clients use UID FETCH etc, which are different commands, and +*can* have EXPUNGE sent during their execution. + +EXISTS, on the other hand, can be sent even if there is no command in +progress. + +> Better late than never I guess. In any case, as mentioned +> previously, this specific IMAP implementation is fronting a mail +> archive, where utter most timeliness of updates is not an issue. +> +> So NOOP is good enough for updates. +> +> Thanks for the feedbacks though. + +Take our personality test! + +Do you: + +a) Fail to understand. + +b) Think you know IMAP better than several long-standing IMAP experts. + +c) You think that somehow, your message store is magically different. + +If you scored mostly (a), well done, you are honest. Now fix your +server. + +If you scored mostly (b), you are delusional. Now fix your server. + +If you scored mostly (c), you are wrong. Now fix your server. + +You will find that if you provide a mail archive over IMAP, a +significant number of people - generally those with better IMAP +clients, too - will start using it as the exclusive method of reading +the mailing lists. I certainly would do. They will expect timely +delivery - again, I certainly would - and will be relying upon normal +IMAP semantics. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22756.mbox:2,S new file mode 100644 index 00000000..c68dd8d8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22756.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From snowjn at aol.com Mon Nov 7 09:04:34 2011 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> <1320653922.13384.140660995615489@webmail.messagingengine.com> + +Message-ID: <4EB80FA2.5010301@aol.com> + + +> +>> hence my assertion that a fully complient server is required to +>> immediately disconnect any client issuing a "SELECT" for a mailbox +>> which doesn't +>> contain unseen messages. +> +> You seem to think that saying such things somehow impresses me of your +> intelligence and talent. +> +> If you were intelligent and talented you would be constructive and +> cooperative. +> +> Intelligent and talented people concern themselves with fixing things +> that +> are broken - of which there is an infinite supply of newly created broken +> things to add to the existing supply. +> +> Intelligent and talented people do not bang drums repeatedly upon finding +> a trivial ambiguity in a specification. +> +> Intelligent and talented people content themselves with pointing out the +> trivial ambiguity ONCE. +> +> Intelligent and talented people don't go off on a tangent with a +> misinterpretation that is both absurd and harmful. +> +> Intelligent and talented people, if they find that trivial matter to be +> annoying enough, will write an errata with proposed replacement wording, +> post it for review, and upon general concensus will submit it to the RFC +> 3501 errata for inclusion in a future revision. +> +> For what it's worth, that particular bit of text was from someone else's +> errata...to remedy another silly ambiguity. +> +> I was the editor of RFC 3501. I did write a great deal of it; but that +> document is the work of many authors (and one editor). I feel sorry for +> you if you believe that perfection (or even complete consistency) is +> possible in such an effort. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + +I'm pretty sure he was just making a joke, at least that's how I read it. + +The world needs more fun. + +snow. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22759.mbox:2,S new file mode 100644 index 00000000..f68dfbc2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22759.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From blong at google.com Mon Oct 31 15:06:47 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <1320096826.9022.140660992904397@webmail.messagingengine.com> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + <1320096826.9022.140660992904397@webmail.messagingengine.com> +Message-ID: + +On Mon, Oct 31, 2011 at 2:33 PM, Bron Gondwana wrote: +> On Monday, October 31, 2011 2:12 PM, "Mark Crispin" wrote: +>> I was told specifically, by Google, that Google does not care at all about +>> compliance with the IMAP RFCs, but rather that Outlook using IMAP behaved +>> like Gmail. I was also told specifically that compliance and/or +>> interoperability is NOT a priority at Google. +> +> I can understand their perspective too - for all that IMAP itself may have +> been designed for good reasons, and made good compromises for what was needed, +> the sum total of every RFC that extends IMAP is a pretty crufty awful mishmash. + +I'd argue the larger problem with the extensions is that who knows who +implements them. For clients, the issue is supporting both the old +way and the new way without knowing whether or not its worth +supporting the new way. For servers, its impossible to know what the +clients even support. One can argue that large implementations like +Gmail have some benefit here, as folks on both the clients and servers +directly collaborate to implement the extensions on both sides (I'm +talking existing extensions, not making up new ones). Ie, we +implemented COMPRESS when we saw that Thunderbird supported it (and +used their implementation to fix bugs in ours) and then when Apple saw +we supported it, they added it to iOS (I'm guessing, but that's what +it looked like). + +For us, it would have been very beneficial if the CAPABILITY command +had the client telling us which extensions they supported, so we could +better focus our efforts on the extensions most likely to be useful. + +> I'm actually surprised that no serious attempt has been made to create a +> competing protocol that's simpler to implement, at both ends. ?I suspect +> Google could do it themselves with a bit of cooperation from Thunderbird. + +I wouldn't claim to be able to create something better. I could make +something simpler with a simpler use case. The argument may be that +IMAP tries to do too much, that a two-way syncing protocol would be +simpler and what most clients these days would use in preference to +the "on-line, off load work to server" model that say pine wants. Or, +that could just be my biases coloring my perception. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22768.mbox:2,S new file mode 100644 index 00000000..2ead27c2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22768.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From brong at fastmail.fm Tue Jun 7 00:51:57 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> +Message-ID: <20110607095157.31a2609a@arbre.eng.oslo.osa> + +On Tue, 07 Jun 2011 00:33:21 -0600 +Michael M Slusarz wrote: + +> Quoting Norman Maurer : +> +> > Hi there, +> > +> > I'm currently working on getting SORT to work with my IMAP-Server / +> > Mailbox-Store. I have read about the Base-Subject extraction and I'm +> > almost sure I have implement it in the right manner. But I would be +> > interested in some "Test Subjects" to write some Unit-Tests. +> > +> > Does anyone have a list of Subjects and the related Base-Subjects +> > which I could use for my Unit-Tests (just to be sure I did it he right +> > way) ? +> +> We've got a basic test suite with a few examples here: +> +> http://git.horde.org/co.php/framework/Imap_Client/test/Horde/Imap/Client/SubjectParseTest.php?rt=horde-git + +@license http://www.fsf.org/copyleft/lgpl.html LGPL + +I'm guessing it doesn't pass the "is it a creative work" test, but I +wouldn't want to go explaining myself in court! I might skip adding +that to the Cyrus unit tests. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22772.mbox:2,S new file mode 100644 index 00000000..ae372fad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22772.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From brong at fastmail.fm Wed May 18 21:58:51 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + +Message-ID: <20110519045851.GA23466@brong.net> + +On Wed, May 18, 2011 at 04:15:19PM -0700, Mark Crispin wrote: +> On Wed, 18 May 2011, Bron Gondwana wrote: +> >What annoys me the most is no CONDSTORE/QRESYNC support, so you +> >can't create an efficient gmail client - you need to sync all the +> >flags, every time. Gmail is big enough that I'm fairly willing to +> >special case it in exchange for big performance wins, but there's +> >just no way to be sure you have all the changes. +> +> This serves to illustrate the overall problem with synchronization, and +> specifically with synchronizing email. +> +> Email synchronization is a fool's errand; but there seem to be an abundant +> supply of fools that undertake it. + +God yeah, because - y'know, people WANT it. There's two approaches to +that. Rail against the stupidity of people, or accept that just, perhaps, +it might be OK for people to want things. + +> Thus we have miserable mobile device email clients such as Mail.app on the +> iToy, BlackBerry, and the default Mail app on Android. At least Android +> has k9mail which - just barely - steps over the line into "usability". + +Barely is right. A search that could find emails older than yesterday +would be nice. + +> A special place in hell exists for the authors of synchronizing email +> clients that refuse to display email unless there's a session open to the +> server... + +Agree. + +> All in the name of the holy religion of "email users won't tolerate +> waiting for the network/not being able to access mail without network +> access." Hello kids, ever hear of webmail? + +I don't know about you - but I'm using offlineimap+mutt as my email client +on my laptop precisely to avoid all this nonsense. offlineimap speaks a +very minimal IMAP protocol and does the great evil of email synchronisation +(more fool me) so that I can actually access all my email when I'm, y'know, +OFFLINE. I find myself benefiting from that multiple times per month +despite theoretically having mobile access everywhere. And it's all on an +SSD, so searches are stupidly fast even if I wind up doing body scans. + +Besides I'm not sharing my IO queue with 5,000 other connected users when +I go to actually access my email. + +The downside of offlineimap is, as Brendan pointed out for gmail's case, +a 100k message mailbox will cause 6Mb of traffic just to synchronise flags, +because there's no way to say "tell me what changed since last time". At +least I'm running a patched copy that has COMPRESS support. +http://github.com/brong/brong-offlineimap/ - it's pretty old now, but the +compress support makes it worthwhile. + +> Sadly, as the only money to be made in email today is in making email NOT +> work, not in making it work, it's not likely that we'll see much change in +> the status quo. + +The money is in making $FOO work the way users want, rather than telling +them what to want. Unless you have a huge advertising budget it's much +easier to sell people something they already think they want than to make +them want something you would prefer to sell. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22796.mbox:2,S new file mode 100644 index 00000000..f49c16b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22796.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 17:56:48 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAA7379.3070307@aol.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> +Message-ID: + +On Mon, 4 Oct 2010, John Snow wrote: +>> There is no reason for any desktop client to use IDLE, and negligible +>> reason for a laptop client to do so. +> I'm surprised to hear you say that. IDLE gives me instant notification of +> new mail. Anything else relies on the client to poll periodically. That's +> definitely less than instant. Is there a better way? + +That assumes that the IMAP server notifies instantly, instead of polling +internally at a fixed interval. This, in turn, assumes some form of +message passing between the MDA and the IMAP server. + +I find it remarkable that anyone can get bent out of shape because it may +take as much as a minute or two to be notified about a newly arrived +email; particularly as it may have taken some ungodly amount of time for +the message to have travelled from the senders MSA and the recipient's +MDA. + +We have a perfectly good facility called instant messaging for real-time +communication. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22804.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22804.mbox:2,S new file mode 100644 index 00000000..7d6e3daa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22804.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From mrc+imap at panda.com Sun Jul 11 11:02:00 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Re: folding/encoding of subject in ENVELOPE +In-Reply-To: <4C397959.5090606@sun.com> +References: <4C37C781.5060700@sun.com> + + + + <4C397959.5090606@sun.com> +Message-ID: + +On Sun, 11 Jul 2010, Bill Shannon wrote: +> Ok, so now I'm confused. + +And you're asking questions instead of making assumptions. Good! Thank +you! + +> The server is required to interpret and remove some parts of the encoding +> (i.e., folding) but not other parts (MIME encoded words)? + +Not the way that I would put it, but basically yes. + +IMAP ENVELOPE was always intended to be a canonicalized representation of +the fields in the RFC 822 (and successor) headers. Line folding is an RFC +822 transmission representation; it does not actually represent a newline +in the field. And, if you read RFC 822 carefully, you will discover that +headers can (and in practice are) rewritten with completely different line +folds than the original sender's composition. + +As for MIME encoded words, you are quite correct that this is a wart and a +violation of my intentions. However, the ENVELOPE is 7-bit (having +preceded MIME encoded words by several years) and thus can not transport +the 8-bit content necessary to do this. Also, in the case of a MIME +encoded word that references a charset unknown to the server, the server +can not resolve it into UTF-8. Thus, even in a future world where these +would be resolved, there is still the possibility of the odd encoded word +coming through. + +However, since only the server can truly handle encoded words properly (at +the client level, it is ambiguous whether it's an encoded word or a quoted +string that looks like an encoded word), I hope to have server-based +decoding of encoded words in the future. + +> I should *never* expect to see a newline in the subject field of the +> ENVELOPE, and if I do that's a bug in the server? + +Yes. However, IMAP does not specifically forbid it. So clients should +not crash when they encounter a newline in any ENVELOPE member, and cope +with it in some way. Some will truncate display of any field after a +newline (e.g., a message index display). + +> Or is unfolding the header something servers are allowed to do but not +> required to do? + +"Allowed" is a very wide word. + +An ssh server is "allowed" to treat an invalid password attempt as a +command to destroy the account and all its files. I assume that we all +agree that this would be a very bad thing for the server to do. + +Subjects are not defined to contain newlines. Remember that RFC 822 line +folding is to fold long lines for transport, and NOT to embed newlines. +They can be rewritten at any time with folding in completely different +places. + +A client is "allowed" to treat a newline in the subject part of an +ENVELOPE as an instruction to format the user's hard drive. Once again, +that would be a very bad thing. + +Perhaps what you what to say instead of "allowed" is "what implementations +that want to be more than a piece of crap will do"... + +IMAP was designed in a kinder, gentler time when people cared about making +servers do the right thing, instead of inflicting whatever filth they +wanted upon the world. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22807.mbox:2,S new file mode 100644 index 00000000..25c94686 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22807.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 11 03:24:44 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111212.57771.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <29965.1276250223.982828@puncture> + <201006111212.57771.witold.krecicki@firma.o2.pl> +Message-ID: <4C120EEC.3000108@gulbrandsen.priv.no> + +On 06/11/2010 12:12 PM, Witold Kr?cicki wrote: +> One have already done it, and that wasn't me :) + +The one who did was just writing a mail processing script, intended to +run at precisely one site, with one server, moving messages from one +mailbox to one other. I implemented UID MOVE for him because I felt bad +about a script sending three commands with zero error checks. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22810.mbox:2,S new file mode 100644 index 00000000..dd62386a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22810.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From dkonigsberg at logicprobe.org Thu May 13 19:50:35 2010 +To: imap-protocol@u.washington.edu +From: Derek Konigsberg +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] LIST wildcards with mUTF-7 +In-Reply-To: +References: + + +Message-ID: <201005132250.35228.dkonigsberg@logicprobe.org> + +On Thursday 13 May 2010 5:19:46 pm Barry Leiba wrote: +> > Rather than try to make mUTF-7 better, I feel that we should move more +> > towards replacing US-ASCII as the baseline IMAP character set with UTF-8, +> > and leave mUTF-7 as something that only needs to be done with old servers +> > (if the client bothers to do i18n with old servers at all). +> > +> > The problem that I see is a tendency by the WG to overengineer the task +> > at hand. RFC 5738 is jawdropping in this respect. +> +> [Barry nods in huuuuge agreement.] + +And if possible, please find a time machine, go back to 1982, and make this +same change in RFC822. Would make my life a lot easier :-) + +(I apologize for another me-too...) + +-- +--------------------------- +Derek Konigsberg +dkonigsberg@logicprobe.org +--------------------------- + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22813.mbox:2,S new file mode 100644 index 00000000..9a2a8d39 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22813.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Mon Jan 18 05:14:10 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + +Message-ID: <6081A14A-42E5-4139-A57D-6DF01EF86BA7@iki.fi> + +On 18.1.2010, at 13.22, Arnt Gulbrandsen wrote: + +> Ned Freed writes: +>> The abscence of a technical justification doesn't mean no other sort of justification exists. +> +> I asked three admins about that in 2007, all said "we want all access to be encrypted and imaps/pop3s/smtps is the practical way to get that". Statistics isn't my field, three identical answers was enough for me, and I concluded that SSL wrapping will remain in use until mail servers offer configuration settings to allow/prevent plaintext access to mail. + +Such setting doesn't help. Dovecot has had one since the beginning and people still configure it to give only imaps/pop3s access. I think there are two big reasons for this: + +1) Clients are stupid and issue plaintext LOGIN command even if LOGINDISABLED is advertised. So with such clients it's easy to accidentally expose username and password. + +2) It's easier to enforce "SSL-only" traffic in firewall rules based on ports. For example they'll keep both imap and imaps enabled, but only imaps is allowed outside intranet. + +(And yeah, then there's probably the biggest reason that people just don't understand that imap/pop3 port supports SSL/TLS.) diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22817.mbox:2,S new file mode 100644 index 00000000..1893f120 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22817.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From tss at iki.fi Tue Dec 29 14:27:48 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + +Message-ID: <1262125668.26478.927.camel@timo-desktop> + +On Tue, 2009-12-29 at 16:17 -0600, Brian Hayden wrote: +> > Correction: crappy clients display \NoSelect mailboxes in a +> > confusing way. +> +> Has anyone studied this from a user perspective? I suspect that you'd +> have to come up with an interaction method that is both new and +> intuitive (something that is quite the rare gem) to have the concept +> have any meaning to the user in a client interface -- \NoSelect seems +> quite foreign to everything else they encounter on a computer system +> (or in any other interface, for that matter). + +I've never studied, but my personal opinion: + +The most annoying thing that a client can do is pop up a message saying +"Mailbox isn't selectable." This is what most clients seem to do. + +What I think they should do is (lets assume a GUI client similar to +TB/Outlook/etc): + + - In the window where it would typically show list of messages or +message body, it would show a text something like "This mailbox doesn't +exist, it only contains children." (or something similar to that, +whatever is the most understandable text to user) + + - It could show also a button: "Create this mailbox." + + - It might also show "Child mailboxes:" and have a list of them. This +might be too much. + +Hmm. Now that I think of it, I think clients usually show whatever the +NO reply to SELECT is from server. Maybe I could make that a bit more +informative. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22820.mbox:2,S new file mode 100644 index 00000000..db7dbd50 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22820.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc+uw at panda.com Mon Nov 16 11:17:16 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP vs. shared mailboxes +Message-ID: + +Are there any IMAP clients that depend upon being able to do a wildcard in +listing other users to load their list of accessible mailboxes? That is, +given a server that advertises a namespace of + (("" "/")) (("/" "/")) (("/Public/" "/")) + +How many IMAP clients routinely expect to be able to do + tag LIST "" /* + +I can see doing + tag LIST "" * (although I prefer % or %/%) +and + tag LIST "" /Public/* + +but I'm a bit skeptical about /* in this case. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22832.mbox:2,S new file mode 100644 index 00000000..99a71d19 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22832.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From tss at iki.fi Sat Jul 11 22:24:31 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] copy to same mailbox +In-Reply-To: +References: +Message-ID: <64A6F0DF-12F2-49EC-809B-00FD45C100CF@iki.fi> + +On Jul 12, 2009, at 12:47 AM, Mark Crispin wrote: + +> I just discovered that the GroupWise IMAP server does not permit the +> target of a COPY command to be the selected mailbox. GroupWise has +> other issues, but apparently nobody has ever complained about this. +> +> Do other servers prohibit COPY to the selected mailbox? + +Dovecot with mbox format doesn't allow it, because it caused it to +crash and I never bothered to fix it. What's the point of doing that +anyway? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095078.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095078.22835.mbox:2,S new file mode 100644 index 00000000..629e76e0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095078.22835.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From zanbizar at gmail.com Sat Jun 13 06:30:31 2009 +To: imap-protocol@u.washington.edu +From: Tom Davis +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] No DateModified or Equivalent for use with + Disconnected Clients? +Message-ID: + +Greetings, + +I'm working on a IMAP disconnected client and referring to +"Synchronization Operations for Disconnected IMAP4 Clients" +(http://tools.ietf.org/html/rfc4549). + +Do I understand correctly that in order to determine if any old +messages on the server have changed after returning from a +disconnected state I have to: + +1) Fetch header info (flags etc.) for every single message (1 to +UIDLASTSEEN) in the given server mailbox + +2) Compare the flags etc., with last known state of all of the +messages stored on the client machine + +...in order to see which old messages on the server have been modified? + +If I am correct, this seems crazy inefficient. Is there no "Date +Modified" search command available? + +Any advice appreciated. + +-Peter Cross + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22595.mbox:2,S new file mode 100644 index 00000000..a0e49d94 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22595.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From gilles.lamiral at laposte.net Mon Mar 23 18:16:52 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Re: Is OpenEmailSurvey open to share + method or code? +In-Reply-To: <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> +Message-ID: <5510BB04.8070407@laposte.net> + +Hello Bron, + +> I wonder how many sites there are where you just can't tell anyway. + +We can. + +> FastMail doesn't even listen on port 143, because it leaks cleartext passwords to active attackers: +> https://www.fastmail.com/help/technical/ssltlsstarttls.html +> And even once you try port 993: + +Port 993 was imap open 0.16% of all hosts in 2008. + +Now you can suggest, "how about hosts opening their port on any unwell unknown ports?" +I don't care since market shares will be the same, same proportions. +I let you the big scan as an exercise, and its abuse complaints as well. + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22701.mbox:2,S new file mode 100644 index 00000000..67a8591f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22701.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From slusarz at curecanti.org Tue Nov 27 15:49:09 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Combining LITERAL+ and BINARY +In-Reply-To: <1354059359.2844.26.camel@innu> +References: + <1354059359.2844.26.camel@innu> +Message-ID: <20121127164909.Horde.5Yu_tWBUvB-3eb0pQQCEhA1@bigworm.curecanti.org> + +Quoting Timo Sirainen : + +> On Tue, 2012-11-27 at 21:05 +0100, Jan Kundr?t wrote: +>> I was wondering what is the correct way of combining LITERAL+ [1] +>> and BINARY [2]. Unless I'm mistaken, their interaction is not +>> documented in any of the two RFCs. If I'm correct, this means that +>> one can either benefit from 8bit APPENDs while blocking with +>> synchronizing literals, or use LITERAL+ and do the encoding to some +>> transport format on their own, not using BINARY. Is that right? +> +> It's not defined, so I don't think clients can legally use their +> combination.. Although Dovecot supports the obvious way of combining +> them: ~{n+} + +This is explicitly allowed under RFC 4466. E.g. Section 2.7: + + In addition, the non-terminal "literal8" defined in [BINARY] got + extended to allow for non-synchronizing literals if both [BINARY] and + [LITERAL+] extensions are supported by the server. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22743.mbox:2,S new file mode 100644 index 00000000..b152cec0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22743.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From petite_abeille at mac.com Wed Mar 21 15:01:49 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <20897.1332365878.053493@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + + <20897.1332365878.053493@puncture> +Message-ID: <763BB35B-B3DE-4070-A5DD-CC1FABA851B9@mac.com> + + +On Mar 21, 2012, at 10:37 PM, Dave Cridland wrote: + +> Take our personality test! + +:D + +> a) Fail to understand. + +On the contrary, I got this one. Thanks for your patience. Like with many other things, an implementation is a tradeoff between many competing demands and constraints. And, at this conjuncture, the cost of some aspects of the protocol outweigh their perceived utility. Of course, this might change over time. But there are just that many hours in a day. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22756.mbox:2,S new file mode 100644 index 00000000..e4fc4c07 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22756.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From imap at maclean.com Mon Nov 7 10:07:25 2011 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: + <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> + + <1320653922.13384.140660995615489@webmail.messagingengine.com> + +Message-ID: + +At 11:52 AM 11/7/2011, Mark Crispin wrote: +>On Mon, 7 Nov 2011, Bron Gondwana wrote: +>>RFC 3501 says " If this is missing, the +>> client can not make any assumptions about the first +>> unseen message in the mailbox, and needs to issue a +>> SEARCH command if it wants to find it. " +>>That means there is NO WAY for the server to communicate "there are no +>>unseen messages in this mailbox" in an unambiguous way. +> +>That means that if a client expects to know the position of the first +>unseen message at select time, instead of doing a SEARCH, it can not +>discriminate between the case of "there are no unseen messages" and +>"server does not support sending that information." + +This is proving to be an interesting discussion for me because I have +a customer with a special sub-case of "there are no unseen +messages". Which is that they never have any unseen +messages. (Their message store is an archive. I don't know whether +they don't archive unseen messages or simply don't support a SEEN +flag. But that's not my business.) They expressed concern that +there is no way to indicate in a SELECT response that there are no +unseen messages. This might seem to necessitate an always +superfluous extra command-response for a client that insists on +knowing about unseen messages. However, if I understood one of +Mark's comments correctly, it seems likely that many clients will not +care about this information in isolation but only message flags in general. + +I did suggest to this customer that an unsolicited STATUS response +could be sent of the form: + +* STATUS Mailbox (Unseen 0) + +but also expressed serious doubt that any client would pay +appropriate attention to this. + +Does anyone else have any wise words to offer about this situation? + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22759.mbox:2,S new file mode 100644 index 00000000..e21dba44 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22759.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Mon Oct 31 15:18:39 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + +Message-ID: <75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> + +On 31.10.2011, at 23.53, Brandon Long wrote: + +>> If you think that Gmail's IMAP server is compliant, you are mistaken. +> +> I know its not compliant, we even have a support page where we list +> the cases where we explicitly decided against compliance. +> Interoperability is a goal, however. That doesn't mean we want to +> force Gmail users to use the IMAP mailbox model, however. + +I haven't tested GMail with imaptest for a while now (few years?), but I don't think the bugs it reports are about the mailbox model, or anything else that can't be fixed somewhat easily. I guess the one test I could remove is the search for substrings, since even Mark doesn't think it's worth the trouble nowadays. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22768.mbox:2,S new file mode 100644 index 00000000..41ceb844 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22768.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From norman.maurer at googlemail.com Tue Jun 7 00:55:42 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: <20110607095157.31a2609a@arbre.eng.oslo.osa> +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + <20110607095157.31a2609a@arbre.eng.oslo.osa> +Message-ID: + +The project I'm working on (james.apache.org) needs something ASL2 +compatible so LGPL is not going to work here.. :( + +Thanks anyway, +Norman + + +2011/6/7 Bron Gondwana : +> On Tue, 07 Jun 2011 00:33:21 -0600 +> Michael M Slusarz wrote: +> +>> Quoting Norman Maurer : +>> +>> > Hi there, +>> > +>> > I'm currently working on getting SORT to work with my IMAP-Server / +>> > Mailbox-Store. I have read about the Base-Subject extraction and I'm +>> > almost sure I have implement it in the right manner. But I would be +>> > interested in some "Test Subjects" to write some Unit-Tests. +>> > +>> > Does anyone have a list of Subjects and the related Base-Subjects +>> > which I could use for my Unit-Tests (just to be sure I did it he right +>> > way) ? +>> +>> We've got a basic test suite with a few examples here: +>> +>> http://git.horde.org/co.php/framework/Imap_Client/test/Horde/Imap/Client/SubjectParseTest.php?rt=horde-git +> +> @license ?http://www.fsf.org/copyleft/lgpl.html LGPL +> +> I'm guessing it doesn't pass the "is it a creative work" test, but I +> wouldn't want to go explaining myself in court! ?I might skip adding +> that to the Cyrus unit tests. +> +> Bron. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22772.mbox:2,S new file mode 100644 index 00000000..ecf340c3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22772.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From blong at google.com Wed May 18 22:00:30 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Beat up on Gmail +In-Reply-To: <4DD4617A.8040001@verizon.net> +References: + <4DD4617A.8040001@verizon.net> +Message-ID: + +On Wed, May 18, 2011 at 5:16 PM, Joshua Cranmer wrote: +> On 05/18/2011 05:36 PM, Brandon Long wrote: +>> +>> I think this is a difference of opinion and not of fact. Obviously +>> Gmail and IMAP have different models of a mailbox, and our +>> implementation had to bridge these two models. ?You're implying that +>> we should have had folders which had no analogue in the web interface, +>> and we should have exposed IMAP labels as keywords and somehow solved +>> the same problem that this thread was asking about, perhaps as base32 +>> encoded keywords. +> +> My experience over the past several years has been that people who use email +> clients instead of webmail tend to be a more overly conservative bunch of +> people than those who do not use them. In that vein, the people who would be +> accessing Gmail over IMAP would probably have preferred the traditional +> folder model over Gmail's label concepts; I remember my disappointment to +> have discovered that my "normal" email usage model just didn't well with +> Gmail's implementation (what? delete doesn't actually delete the mail?) + +Its not the default, no, but there is a setting for that. You +currently have to enable the Advanced IMAP settings lab, and then you +can select that delete means "move to trash" or "delete forever". It +applies to the message when its been removed from the last visible +folder. + +There's also a setting to disable auto-expunge. Both of these were +the defaults originally, but were changed when testing clearly showed +that the expected user experience matched somewhat with what Mark +said: people expected a Gmail like experience in their client. The +main use and clients turned out to be mobile devices, the number of +users who use a desktop IMAP client to access Gmail is pretty tiny. + +As for Outlook, we've had a bunch of weird issues with it, and instead +we wrote a plug-in for Outlook, which also gave us the ability to sync +contacts and calendar, no IMAP involved: +http://www.google.com/apps/intl/en/business/outlook_sync.html + +I'm sure these settings aren't the full picture, most flags/keywords +still apply to the message across folders, for example, and I'm sure +there are a couple other ones. + +>> No client our users actually used would have done +>> anything with the keywords, +> +> If this information were made public, I'm sure knowledgeable people would +> have asked for some kind of standardization in this regard. +> +> P.S. Gmail is not the Google product I reserve special ire for... that would +> be Google Groups. But that is a rant well off-topic for this, er, mailing +> list. + +My team has recently taken over the mail handling aspects of Groups, +if you have requests, feel free to forward them to me off list. +They're also working on the new web interface, available here: +https://groups.google.com/forum/#!overview + +If you're talking about it being a Usenet gateway, then I probably +already know the rant. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22796.mbox:2,S new file mode 100644 index 00000000..dbb19519 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22796.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Mon Oct 4 18:02:54 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + +Message-ID: + +On 4.10.2010, at 21.52, Mark Crispin wrote: + +> There is no reason for any desktop client to use IDLE, and negligible +> reason for a laptop client to do so. + +Of course, people mostly use the same software in laptops and in desktops. And desktops are getting more and more power efficient all the time too. Which I'd think is good, with the world using too much power and all. + +But yeah, having a server wake up an IDLEing client every 2 minutes isn't much better for power efficiency than sending a NOOP every 2 minutes. I've been once in a while thinking about making the "still here" notifications more dynamic (per-user/network) by automatically tracking how long a connection could stay up without traffic, but that's annoyingly much work too. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22807.mbox:2,S new file mode 100644 index 00000000..6ea12cf1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22807.mbox:2,S @@ -0,0 +1,148 @@ +MBOX-Line: From dave at cridland.net Fri Jun 11 04:32:07 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111212.57771.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <29965.1276250223.982828@puncture> + <201006111212.57771.witold.krecicki@firma.o2.pl> +Message-ID: <29965.1276255927.615799@puncture> + +On Fri Jun 11 11:12:57 2010, Witold Kr?cicki wrote: +> On Friday 11 of June 2010 11:57:03 Dave Cridland wrote: +> > On Fri Jun 11 10:15:18 2010, Witold Kr?cicki wrote: +> > > On Friday 11 of June 2010 10:59:31 Dave Cridland wrote: +> > > > Depending on your server design, this is either very easy, or +> else +> > > > very hard - of course, since it's optional, it'd seem likely +> that +> > > > where it's hard it'd not be supported. +> > > +> > > That's sure, that's why it's an option. In most popular IMAP +> > > servers that use +> > > Maildirs this is a simple 'move' operation, with I/O cost of +> next +> > > to nothing +> > > (assuming that the whole user account is on one FS of course). +> > +> > ... And COPY is a "link" operation, with, equally, next to no I/O. +> assuming that underlying FS supports hard linking and that the +> messages are +> immutable (remember that not only IMAP accesses messages). +> +> +Messages in an IMAP message store *are* immutable, no matter what +else might access the messages. And really, don't Windows, UNIX, and +Mac filesystems support hardlinking now? + + +> > > > One thing that concerns me is that there is no way to undo +> this +> > > > operation - traditionally, only EXPUNGE and DELETE have been +> > > > irrevocable actions in IMAP, this adds one more. +> > > +> > > I don't see problem with that. And it is still revocable as +> long as +> > > we don't +> > > care for changed UID (you can always select second mailbox and +> move +> > > messages +> > > back). No data is harmed here. +> > +> > The changed UID is significant - it has the effect of invalidating +> > the cache. This may not be a showstopper, I'm just raising it as +> an +> > issue. +> The question is - if the user uses st/cp/ex it's as irrevocable as +> move, so +> why bother? +> +> +Because in general, it's better to work *with* IMAP, rather than +*against* it, if you're designing extensions, and indeed mail stores. + +> > > Have you ever tried to 'move to trash' eg. 2000 messages from +> inbox? +> > > With current copy/store/expunge routine it takes (at least on +> > > servers that +> > > I've tested) really really long times. +> > +> > I'm not convinced this is a terribly common operation. If it is, +> and +> > if this causes your server to be slow, one option would be to +> > optimize this case better. +> It is common with users with long e-mail history and inboxes +> containing >10k, +> and sometimes even >100k mails. + +Oh, I know it happens. Just not sufficiently often as to be described +a common operation. + +> > > Another real life example is a situation when user wants to move +> > > contents of +> > > his INBOX to 'old-mail' mailbox with quota enabled and INBOX +> larger +> > > than half +> > > of his quota. +> > +> > In some cases, that can be very quick indeed - just a RENAME +> command. +> In cases when you want to move 'old' (older than 1 month) mail - +> it doesn't +> work. And that is a common operation. +> +> +Is it that slow? Really? + + +> > > Other thing is that most of the client support 'move' operation +> by +> > > means of +> > > cp/st/ex, and adding support for simplified 'MOVE' mode should +> not +> > > be such a +> > > huge programming effort. +> > +> > Unless, of course, they implement a move via copy/store instead, +> > aiming to be more IMAP-like, in which case this doesn't help at +> all. +> Most of the clients I've seen (and I've investigated a few of them +> lately) do +> cp/st/ex (with expunge sometimes delayed, but not for long). +> +> +Delaying expunge is quite sensible - it's the "empty trash" operation +in IMAP. In general, I'd rather encourage client authors to use the +spec sensibly, rather than encourage them to ignore how the model +works. + +FWIW, the majority of move-like behaviour I've seen is to a +trash-can, and that's something I'd much rather not encourage. + + +> > Besides, lots of things are not a huge programming effort - I'd be +> > curious as to how many client developers would be keen to write +> this +> > alternate codepath in. +> One have already done it, and that wasn't me :) +> Lots of IMAP clients are open source, and I'm pretty sure that +> TB/Claws/KMail +> will support this operation not long after it'd be supported by +> most popular +> IMAP servers. + +Perhaps. But many extensions which save a lot more effort haven't +been implemented very fast at all, even with quite wide support. + +The open-source-ness of the client appears to have very little effect +on this, either. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22810.mbox:2,S new file mode 100644 index 00000000..ece0b71d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22810.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From imap at maclean.com Wed May 19 08:33:54 2010 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Namespace questions +Message-ID: + +I am adding support for namespaces to my IMAP server and have some +questions about how the LIST command should work with them. I have +to say that I am finding it hard to figure this out from RFC +3501. My main difficulty stems from the fact that LIST is described +as returning "names" and I am unclear as to just what a "name" can be. + +Is it correct that the command: + +1 LIST "" * + +should list mailboxes in all namespaces? (Well, all mailboxes except +those in other users' namespaces that are not explicitly +advertised.) It seems to me that it should because of the way that +the * wildcard is defined. Should it include namespace prefixes by themselves? + +What about: + +1 LIST "" % + +My guess is that this should list top-level mailboxes in the default +namespace and the prefixes of other namespaces. (My notion of +"default namespace" is simply the namespace that does not have a prefix.) + +If I am correct about these first two commands then, as far as I can +see, there is no way in a single LIST command to list only those +mailboxes in the default namespace -- which seems unfortunate. Is +this the case? + +I am also implementing the NAMESPACE command. With one of the +clients I using to test, I see command-response sequences like this: + +C: 4 NAMESPACE +S: * NAMESPACE (("#Namespace1" "/")("#Namespace2" "/")("" "/")) NIL NIL +S: 4 OK NAMESPACE completed +... +C: 6 LIST "" #Namespace1 +S: 6 OK LIST completed + +For one thing, I am unsure as to whether my server's response to this +LIST command should be as shown or like this: + +C: 6 LIST "" #Namespace1 +S: * LIST (\Noselect) "/" #Namespace1 +S: 6 OK LIST completed + +But what's more, I see no point to such a LIST command since, no +matter which response is appropriate, surely it's a given? + +Thanks, + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22813.mbox:2,S new file mode 100644 index 00000000..ec1b269a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22813.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jan 18 05:26:36 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <6081A14A-42E5-4139-A57D-6DF01EF86BA7@iki.fi> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + + <6081A14A-42E5-4139-A57D-6DF01EF86BA7@iki.fi> +Message-ID: + +Timo Sirainen writes: +> Such setting doesn't help. + +Such a setting is cecessary, not sufficient. + +> Dovecot has had one since the beginning and people still configure it +> to give only imaps/pop3s access. I think there are two big reasons +> for this: +> +> 1) Clients are stupid and issue plaintext LOGIN command even if +> LOGINDISABLED is advertised. So with such clients it's easy to +> accidentally expose username and password. + +Good point. + +> 2) It's easier to enforce "SSL-only" traffic in firewall rules based +> on ports. For example they'll keep both imap and imaps enabled, but +> only imaps is allowed outside intranet. + +Yeah. But I can't remember talking to anyone who really cared about +allowing cleartext imap inside the firewall. + +> (And yeah, then there's probably the biggest reason that people just +> don't understand that imap/pop3 port supports SSL/TLS.) + +Which I think would change if servers generally would support + encrypted-only = true +As it is, people aren't used to looking for such a setting, and if they +call their clueful pal to ask how blah, he'll say "enable imaps", not +"enable encrypted-only". + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22817.mbox:2,S new file mode 100644 index 00000000..818e4b31 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22817.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From mrc+uw at Panda.COM Tue Dec 29 14:36:37 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + +Message-ID: + +On Tue, 29 Dec 2009, Brian Hayden wrote: +> Has anyone studied this from a user perspective? I suspect that you'd have to +> come up with an interaction method that is both new and intuitive (something +> that is quite the rare gem) to have the concept have any meaning to the user +> in a client interface -- \NoSelect seems quite foreign to everything else +> they encounter on a computer system (or in any other interface, for that +> matter). + +Oh? + +The UNIX and Windows shells, with mkdir and rmdir are "quite foreign"? + +The Windows Explorer and the Mac OS X Finder are "quite foreign"? + +The FTP and SSH protocols are "quite foreign"? + +In EVERY other environment besides IMAP, you must create a directory +before you can put something into it. In EVERY other environment besides +IMAP, directories don't vanish when you delete their children. + +The ONLY reason why IMAP hides directories under this cloak of "\NoSelect +names" was to pacify the CMU people who wanted to make everything look +like NetNews. Giving in was a HUGE mistake which I have regretted +enormously ever since. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22820.mbox:2,S new file mode 100644 index 00000000..a15763b5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22820.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dkarp at zimbra.com Mon Nov 16 11:35:13 2009 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP vs. shared mailboxes +In-Reply-To: +Message-ID: <270134446.1258.1258400112974.JavaMail.root@dogfood.zimbra.com> + +> Are there any IMAP clients that depend upon being able to do a +> wildcard in listing other users to load their list of accessible +> mailboxes? That is, given a server that advertises a namespace of +> (("" "/")) (("/" "/")) (("/Public/" "/")) +> +> How many IMAP clients routinely expect to be able to do +> tag LIST "" /* + +Thunderbird's been doing something like this for quite a while. +Although they may request just a list of users with visible +mailboxes (e.g. tag LIST "" /%). + +I think they no longer throw up an alert dialog if the server responds +NO to such a request. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22832.mbox:2,S new file mode 100644 index 00000000..c8faea91 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22832.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From mrc+uw at panda.com Sat Jul 11 23:25:17 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] copy to same mailbox +In-Reply-To: <64A6F0DF-12F2-49EC-809B-00FD45C100CF@iki.fi> +References: + <64A6F0DF-12F2-49EC-809B-00FD45C100CF@iki.fi> +Message-ID: + +On Sun, 12 Jul 2009, Timo Sirainen wrote: +>> Do other servers prohibit COPY to the selected mailbox? +> Dovecot with mbox format doesn't allow it, because it caused it to crash and +> I never bothered to fix it. What's the point of doing that anyway? + +UW thought that it was important for some reason that I was never able to +fathom. The requirement to make that work is a primary reason why UW IMAP +sucks so badly on Solaris and other SVR4 systems. + +It doesn't matter with the new server that I wrote for MA (completely +different filesystem technology), so it's mostly of academic interest to +me now. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22835.mbox:2,S new file mode 100644 index 00000000..46e215dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22835.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From mrc+uw at panda.com Sat Jun 13 08:21:02 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] No DateModified or Equivalent for use with + Disconnected Clients? +In-Reply-To: +References: +Message-ID: + +There is an extension, not widely implemented, that provides a +modification sequence capability. + +However, you ought to rethink some of your assumptions. + +IMAP messages are immutable. The only thing that can change are flags. +Do you really need to mirror the server flags in your client copy? If so, +why? + +If you mirror, what do you wish to accomplish by the mirroring? Are there +alternative strategies (e.g., via SEARCH) that may work better? + +IMAP is an extremely stateful protocol. It is not at all like HTTP. But +disconnected use discards all of that hard-won state. Is this really the +best implementation for your client? + +Disconnected use assumes that the majority of the user's use will be +offline from the Internet. This was important in the 1980s and early +1990s, when it was difficult to find Internet access. Is that so +important today? + +We no longer live in a world of 1200 bps modems. Even radio is at +broadband access speeds. Does it really matter that something is +"inefficient" if it takes less than a second and is only done once in the +session at startup? + +Last, but not least: over the years I have talked with many people over +the years who were very concerned about inefficiency and who choose to +disregard my suggestions. I have also seen their products. They have +been invariably been slower than the "inefficient" way. + +Are you really optimizing the right things? There's a lot of that. Just +now, I find myself tearing down a highly efficient algorithm in favor of +an inefficient one -- because it optimizes the wrong thing and in doing so +incurred a terrible performance penalty elsewhere to achieve that +optimization. + +Spend some time on this. Challenge some of your assumptions. I think +that you'll find the results will reward the time spent doing so. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095079.22838.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095079.22838.mbox:2,S new file mode 100644 index 00000000..1bebd818 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095079.22838.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From tss at iki.fi Thu Apr 2 16:37:55 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Future INTERNALDATE +Message-ID: <1238715476.12172.239.camel@timo-desktop> + +Any thoughts on if it's a bad idea for server to convert future +INTERNALDATE timestamps in APPEND parameter to current time? +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22595.mbox:2,S new file mode 100644 index 00000000..932fdab3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22595.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From Pidgeot18 at verizon.net Mon Mar 23 18:22:02 2015 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <55109D4C.2080900@laposte.net> +References: <55109D4C.2080900@laposte.net> +Message-ID: <5510BC3A.9020702@verizon.net> + +On 3/23/2015 6:10 PM, Gilles LAMIRAL wrote: +> My main goal is to add a wizard mode to imapsync, a mode where options +> for specific imap servers are set automagically. Avoiding that users +> and I always read and apply the same FAQ items is a user experience +> improvement I aim. + +I don't know what options you're talking about, but it's worth pointing +out the Thunderbird autoconfiguration project +(). +> When users ask me about problems with imap servers they even don't +> know the software name, I usually look at the CAPABILITY response, +> NAMESPACE, some other imap responses or some nmap service detection. +> I always get the name of it. I haven't formalized it yet in a script, +> I've played by hand for now, not so often. I'm lazy, so before doing +> it all by myself I ask you if I'll have to reinvent the wheel or not +> on that matter. + +If IMAP ID is supported, that is a useful command to use. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22701.mbox:2,S new file mode 100644 index 00000000..e294cb20 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22701.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Nov 27 15:59:17 2012 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Combining LITERAL+ and BINARY +In-Reply-To: <1354059359.2844.26.camel@innu> +References: + <1354059359.2844.26.camel@innu> +Message-ID: <3DFB419C-6894-4703-BBB4-F156DF0B89DB@orthanc.ca> + + +On 2012-11-27, at 3:35 PM, Timo Sirainen wrote: + +> It's not defined, so I don't think clients can legally use their +> combination.. Although Dovecot supports the obvious way of combining +> them: ~{n+} + +And I consider that a legitimate operation. + +I'm planning to push an updated BINARY RFC, and I'll make sure this case is called out. + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22743.mbox:2,S new file mode 100644 index 00000000..aef93fee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22743.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 21 15:06:49 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] CONDSTORE mod-sequence values +In-Reply-To: <4F69E907.3000700@gulbrandsen.priv.no> +References: + <1370186682.140190.1332276137465.JavaMail.root@zimbra.com> + + <4F69AABD.4070206@gulbrandsen.priv.no> + <1332334899.13815.140661052117053.5297D8C5@webmail.messagingengine.com> + <4F69E907.3000700@gulbrandsen.priv.no> +Message-ID: <1332367609.5117.140661052351057.697AF222@webmail.messagingengine.com> + + + +On Wed, Mar 21, 2012, at 03:43 PM, Arnt Gulbrandsen wrote: +> On 03/21/2012 02:01 PM, Bron Gondwana wrote: +> > But any non-MODSEQ based access to the store could not bump it at all, +> > so long as the next time a MODSEQ enabled client connected, the MODSEQ +> > got allocated to all changed things since then. +> +> Now you have a 64-bit number which changes seldom and a single-bit +> variable per message which goes to one for any change and to zero for +> any modseq allocation. That does not make much sense to me. + +No - it's pretty silly for sure. But if you're writing a server which +serves a Maildir which may also be updated by local clients which are +totally IMAP unaware, you're basically restricted to noticing that +"the following things changed". + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22756.mbox:2,S new file mode 100644 index 00000000..1186586e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22756.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From imap at maclean.com Mon Nov 7 10:09:20 2011 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +Message-ID: + +At 11:52 AM 11/7/2011, Mark Crispin wrote: +>On Mon, 7 Nov 2011, Bron Gondwana wrote: +>>RFC 3501 says " If this is missing, the +>> client can not make any assumptions about the first +>> unseen message in the mailbox, and needs to issue a +>> SEARCH command if it wants to find it. " +>>That means there is NO WAY for the server to communicate "there are no +>>unseen messages in this mailbox" in an unambiguous way. +> +>That means that if a client expects to know the position of the first +>unseen message at select time, instead of doing a SEARCH, it can not +>discriminate between the case of "there are no unseen messages" and +>"server does not support sending that information." + +This is proving to be an interesting discussion for me because I have +a customer with a special sub-case of "there are no unseen +messages". Which is that they never have any unseen +messages. (Their message store is an archive. I don't know whether +they don't archive unseen messages or simply don't support a SEEN +flag. But that's not my business.) They expressed concern that +there is no way to indicate in a SELECT response that there are no +unseen messages. This might seem to necessitate an always +superfluous extra command-response for a client that insists on +knowing about unseen messages. However, if I understood one of +Mark's comments correctly, it seems likely that many clients will not +care about this information in isolation but only message flags in general. + +I did suggest to this customer that an unsolicited STATUS response +could be sent of the form: + +* STATUS Mailbox (Unseen 0) + +but also expressed serious doubt that any client would pay +appropriate attention to this. + +Does anyone else have any wise words to offer about this situation? + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22759.mbox:2,S new file mode 100644 index 00000000..1b1642cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22759.mbox:2,S @@ -0,0 +1,102 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 31 15:24:13 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org><1320096826.9022.140660992904397@webmail.messagingengine.com> + +Message-ID: <1320099853.21209.140660992923317@webmail.messagingengine.com> + + + +On Monday, October 31, 2011 3:06 PM, "Brandon Long" wrote: +> Ie, we +> implemented COMPRESS when we saw that Thunderbird supported it (and +> used their implementation to fix bugs in ours) and then when Apple saw +> we supported it, they added it to iOS (I'm guessing, but that's what +> it looked like). + +Wow - I _can_ change the world! + +(that's the only part of Thunderbird I've written) + +> For us, it would have been very beneficial if the CAPABILITY command +> had the client telling us which extensions they supported, so we could +> better focus our efforts on the extensions most likely to be useful. +> +> > I'm actually surprised that no serious attempt has been made to create a +> > competing protocol that's simpler to implement, at both ends. ?I suspect +> > Google could do it themselves with a bit of cooperation from Thunderbird. +> +> I wouldn't claim to be able to create something better. I could make +> something simpler with a simpler use case. The argument may be that +> IMAP tries to do too much, that a two-way syncing protocol would be +> simpler and what most clients these days would use in preference to +> the "on-line, off load work to server" model that say pine wants. Or, +> that could just be my biases coloring my perception. + +Yes, a two way syncing protocol would be very nice. Also some checksum +stuff to allow you to quickly verify the correctness of the your local +copies. We expose the sha1 of the messages via IMAP, but of course it's +not standard, so nobody else will use it. + +The Cyrus replication protocol contains everything required to regenerate +an exactly matching IMAP image on the remote end, and calculates a +checksum over the entire unexpunged state (we store expunged index records +for a while to support QRESYNC) which can be compared between the two ends. +This allows bandwidth efficient replication - along with the sha1 for +duplicate and copy/rename detection. In the trivial case we just compare +modseq between master and replica, replicate the records with a higher +modseq plus any messages with UID higher than the remote LAST_UID, and +then compare the SYNC_CRC to make sure the mailbox matches afterwards. + +Of course this has been complicated by annotations and conversation ID +(cross folder threading) and there's stuff for supporting sieve, non-owner +seen, subscriptions, etc. + +But the basic protocol is fairly "imaplike". + +The hardest bit was safely syncing files - I wound up creating an extra +literal syntax that looks like this: + +%{partition sha1 size}\r\n +BYTES + +The 'partition' is a Cyrus abomination, but is required to efficiently +stream the file to a temporary location on the correct filesystem with +a multi partition installation. + +The 'sha1' is mainly used to create the spool filename and to do post-sync +integrity checks. In theory the sender already re-calculated the sha1 +and compared it to the index record before sending, but it doesn't hurt +to re-check. Our goal is to never replicate corrupted data and break the +other end. + +You could avoid all this and have the syntax purely IMAP compatible by +having a more stateful parser of course. At the moment the replication +engine can parse a full statement off the wire and into memory, knowing +it won't be too giant - and then the files will already be on the right +partition to just hardlink into place. + +But I'd be quite interested in having a local client which supported that +protocol and could use it to talk to a remote Cyrus instance. The mailbox +layer code already asserts all the invarients, so you can never inject +a message with a lower UID than the last one used, or a MODSEQ that isn't +greater than the current HIGHESTMODSEQ on the server. But allowing you +to explicitly set the target values for them would mean you could keep +two ends exactly in sync with IMAP values. + +Whereas at the moment, check what offlineimap does. It can't even rely +on UIDPLUS, so it has to add a special header to every message it +uploads just so it can tell for sure what UID it got without downloading +the whole bloody thing again. Or at least it did last time I read the +mutlti-threaded python horror that it was. + +Bron ( I have nothing against multi-threading or python... at least + not until signal handling gets involved ) +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22768.mbox:2,S new file mode 100644 index 00000000..1cc988e1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22768.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From slusarz at curecanti.org Tue Jun 7 01:26:53 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + <20110607095157.31a2609a@arbre.eng.oslo.osa> + +Message-ID: <20110607022653.Horde.B8YBPYF5lbhN7eDNvRbny5A@bigworm.curecanti.org> + +Quoting Norman Maurer : + +> The project I'm working on (james.apache.org) needs something ASL2 +> compatible so LGPL is not going to work here.. :( +> +> Thanks anyway, +> Norman +> +> +> 2011/6/7 Bron Gondwana : +>> On Tue, 07 Jun 2011 00:33:21 -0600 +>> Michael M Slusarz wrote: +>> +>>> Quoting Norman Maurer : +>>> +>>> > Hi there, +>>> > +>>> > I'm currently working on getting SORT to work with my IMAP-Server / +>>> > Mailbox-Store. I have read about the Base-Subject extraction and I'm +>>> > almost sure I have implement it in the right manner. But I would be +>>> > interested in some "Test Subjects" to write some Unit-Tests. +>>> > +>>> > Does anyone have a list of Subjects and the related Base-Subjects +>>> > which I could use for my Unit-Tests (just to be sure I did it he right +>>> > way) ? +>>> +>>> We've got a basic test suite with a few examples here: +>>> +>>> http://git.horde.org/co.php/framework/Imap_Client/test/Horde/Imap/Client/SubjectParseTest.php?rt=horde-git +>> +>> @license ?http://www.fsf.org/copyleft/lgpl.html LGPL +>> +>> I'm guessing it doesn't pass the "is it a creative work" test, but I +>> wouldn't want to go explaining myself in court! ?I might skip adding +>> that to the Cyrus unit tests. + +Not that I am a lawyer (actually, I am...) but I highly doubt that the +test suite, with all 7 of its test cases, is copyrightable. Even if +it was, infringement would probably lead to damages creeping into the +double digits (in cents) for the 15 seconds it had originally taken me +to come up with those thorough examples. + +In the interest of keeping everyone here out of jail and/or not on the +losing side of a crushing judgment, let me go ahead and present to you +a test suite that I freely release into the public domain: + +These subjects: + + 'Re: Test' + 're: Test' + 'Fwd: Test' + 'fwd: Test' + 'Fwd: Re: Test' + 'Fwd: Re: Test (fwd)' + +Should all resolve into the string: + + 'Test' + +And this subject: + + "Re: re:re: fwd:[fwd: \t Test] (fwd) (fwd)(fwd) " + +Should resolve into the string: + + "\t Test" + +(I adapted/ripped off Timo's LGPL code for the actual subject parsing +code itself, so I guess you probably shouldn't look at that if you are +looking to keep your code ASL2-compatible). + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22772.mbox:2,S new file mode 100644 index 00000000..4b024132 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22772.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From blong at google.com Wed May 18 22:01:51 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Beat up on Gmail +In-Reply-To: +References: + <4DD4617A.8040001@verizon.net> + +Message-ID: + +On Wed, May 18, 2011 at 10:00 PM, Brandon Long wrote: +> My team has recently taken over the mail handling aspects of Groups, +> if you have requests, feel free to forward them to me off list. +> They're also working on the new web interface, available here: +> https://groups.google.com/forum/#!overview + +That should have said "the Groups team" has been working on a new web +interface, but I'm happy to forward concerns or file bugs. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22796.mbox:2,S new file mode 100644 index 00000000..2ecce9db --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22796.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From snowjn at aol.com Mon Oct 4 18:05:50 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + +Message-ID: <4CAA79EE.20003@aol.com> + + + +Mark Crispin wrote: +> On Mon, 4 Oct 2010, John Snow wrote: +>>> There is no reason for any desktop client to use IDLE, and negligible +>>> reason for a laptop client to do so. +>> I'm surprised to hear you say that. IDLE gives me instant +>> notification of +>> new mail. Anything else relies on the client to poll periodically. +>> That's +>> definitely less than instant. Is there a better way? +> +> That assumes that the IMAP server notifies instantly, instead of polling +> internally at a fixed interval. This, in turn, assumes some form of +> message passing between the MDA and the IMAP server. +That's true. I took that as am implied requirement for implementing IDLE. +> +> I find it remarkable that anyone can get bent out of shape because it may +> take as much as a minute or two to be notified about a newly arrived +> email; particularly as it may have taken some ungodly amount of time for +> the message to have travelled from the senders MSA and the recipient's +> MDA. +> +We live in a world full of impatient people. + +> We have a perfectly good facility called instant messaging for real-time +> communication. +> +Or a phone, where this discussion started. +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22807.mbox:2,S new file mode 100644 index 00000000..cc90df77 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22807.mbox:2,S @@ -0,0 +1,140 @@ +MBOX-Line: From snowjn at aol.com Fri Jun 11 05:02:13 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276255927.615799@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> <201006111115.19660.witold.krecicki@firma.o2.pl> <29965.1276250223.982828@puncture> <201006111212.57771.witold.krecicki@firma.o2.pl> + <29965.1276255927.615799@puncture> +Message-ID: <4C1225C5.6050709@aol.com> + + + +Dave Cridland wrote: +> On Fri Jun 11 11:12:57 2010, Witold Kr?cicki wrote: +>> On Friday 11 of June 2010 11:57:03 Dave Cridland wrote: +>> > On Fri Jun 11 10:15:18 2010, Witold Kr?cicki wrote: +>> > > On Friday 11 of June 2010 10:59:31 Dave Cridland wrote: +>> > > > Depending on your server design, this is either very easy, or else +>> > > > very hard - of course, since it's optional, it'd seem likely that +>> > > > where it's hard it'd not be supported. +>> > > +>> > > That's sure, that's why it's an option. In most popular IMAP +>> > > servers that use +>> > > Maildirs this is a simple 'move' operation, with I/O cost of next +>> > > to nothing +>> > > (assuming that the whole user account is on one FS of course). +>> > +>> > ... And COPY is a "link" operation, with, equally, next to no I/O. +>> assuming that underlying FS supports hard linking and that the +>> messages are +>> immutable (remember that not only IMAP accesses messages). +>> +>> +> Messages in an IMAP message store *are* immutable, no matter what else +> might access the messages. And really, don't Windows, UNIX, and Mac +> filesystems support hardlinking now? +> +> +>> > > > One thing that concerns me is that there is no way to undo this +>> > > > operation - traditionally, only EXPUNGE and DELETE have been +>> > > > irrevocable actions in IMAP, this adds one more. +>> > > +>> > > I don't see problem with that. And it is still revocable as long as +>> > > we don't +>> > > care for changed UID (you can always select second mailbox and move +>> > > messages +>> > > back). No data is harmed here. +>> > +>> > The changed UID is significant - it has the effect of invalidating +>> > the cache. This may not be a showstopper, I'm just raising it as an +>> > issue. +>> The question is - if the user uses st/cp/ex it's as irrevocable as +>> move, so +>> why bother? +>> +>> +> Because in general, it's better to work *with* IMAP, rather than +> *against* it, if you're designing extensions, and indeed mail stores. +> +>> > > Have you ever tried to 'move to trash' eg. 2000 messages from inbox? +>> > > With current copy/store/expunge routine it takes (at least on +>> > > servers that +>> > > I've tested) really really long times. +>> > +>> > I'm not convinced this is a terribly common operation. If it is, and +>> > if this causes your server to be slow, one option would be to +>> > optimize this case better. +>> It is common with users with long e-mail history and inboxes +>> containing >10k, +>> and sometimes even >100k mails. +> +> Oh, I know it happens. Just not sufficiently often as to be described +> a common operation. +> +>> > > Another real life example is a situation when user wants to move +>> > > contents of +>> > > his INBOX to 'old-mail' mailbox with quota enabled and INBOX larger +>> > > than half +>> > > of his quota. +>> > +>> > In some cases, that can be very quick indeed - just a RENAME command. +>> In cases when you want to move 'old' (older than 1 month) mail - it +>> doesn't +>> work. And that is a common operation. +>> +>> +> Is it that slow? Really? + +This Quota issue is why we added move support to the AOL IMAP server. +We named it XAOL-MOVE. It is supported by the Thunderbird client. Of +course, that +started with us too. +> +> +>> > > Other thing is that most of the client support 'move' operation by +>> > > means of +>> > > cp/st/ex, and adding support for simplified 'MOVE' mode should not +>> > > be such a +>> > > huge programming effort. +>> > +>> > Unless, of course, they implement a move via copy/store instead, +>> > aiming to be more IMAP-like, in which case this doesn't help at all. +>> Most of the clients I've seen (and I've investigated a few of them +>> lately) do +>> cp/st/ex (with expunge sometimes delayed, but not for long). +>> +>> +> Delaying expunge is quite sensible - it's the "empty trash" operation +> in IMAP. In general, I'd rather encourage client authors to use the +> spec sensibly, rather than encourage them to ignore how the model works. +> +> FWIW, the majority of move-like behaviour I've seen is to a trash-can, +> and that's something I'd much rather not encourage. +> +Unfortunately, clients and users seem to prefer the trash-can model. In +the trash model, the move command really +is necessary. It's the only way to empty a mailbox that's full to +quota. The copy to trash would fail but a move to +trash will not. +> +>> > Besides, lots of things are not a huge programming effort - I'd be +>> > curious as to how many client developers would be keen to write this +>> > alternate codepath in. +>> One have already done it, and that wasn't me :) +>> Lots of IMAP clients are open source, and I'm pretty sure that +>> TB/Claws/KMail +>> will support this operation not long after it'd be supported by most +>> popular +>> IMAP servers. +> +> Perhaps. But many extensions which save a lot more effort haven't been +> implemented very fast at all, even with quite wide support. +> +> The open-source-ness of the client appears to have very little effect +> on this, either. +> +> Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22810.mbox:2,S new file mode 100644 index 00000000..ea1e298c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22810.mbox:2,S @@ -0,0 +1,137 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 19 09:16:41 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Namespace questions +In-Reply-To: <201005191535.o4JFZP5Q013449@mxout14.cac.washington.edu> +References: <201005191535.o4JFZP5Q013449@mxout14.cac.washington.edu> +Message-ID: + +On Wed, 19 May 2010, Pete Maclean wrote: +> I am adding support for namespaces to my IMAP server and have some +> questions about how the LIST command should work with them. + +It's a difficult topic. The best way to understand it is that there may +be multiple independent mail stores, of which only one are the "user's +mailboxes". Consider, for example, an IMAP server that exports netnews +groups. + +An analog that you might understand are drive letters in Windows. It's +not completely the same, but some of the semantics are similar enough that +the IMAP rules may make sense if you keep those in mind. + +> My main difficulty stems from the fact that LIST is described +> as returning "names" and I am unclear as to just what a "name" can be. + +This refers to a name in the hierarchy, some or all of which are +mailboxes. There may also be hierarchical names that are mere +directories; that contain other names but are not a mailbox themselves. +Consider that in netnews "comp.mail.imap" is a mailbox but "comp" and +"comp.mail" are not. + +> Is it correct that the command: +> +> 1 LIST "" * +> +> should list mailboxes in all namespaces? + +NO!!! + +This command lists the mailboxes in the default namespace, which in most +implementations is the user's private set of mailboxes. + +> Should it include namespace prefixes by +> themselves? + +NO!!! That completely obliviates the purpose and use of namespaces. + +> What about: +> +> 1 LIST "" % +> +> My guess is that this should list top-level mailboxes in the default +> namespace + +Yes. + +> and the prefixes of other namespaces. + +NO!!! + +> (My notion of +> "default namespace" is simply the namespace that does not have a prefix.) + +Correct. + +> If I am correct about these first two commands then, as far as I can +> see, there is no way in a single LIST command to list only those +> mailboxes in the default namespace -- which seems unfortunate. Is +> this the case? + +No, it's not. The LIST command lists mailboxes in one namespace. If +there isn't a namespace somewhere in the reference or pattern argument, +then LIST will list only the default namespace. + +> C: 4 NAMESPACE +> S: * NAMESPACE (("#Namespace1" "/")("#Namespace2" "/")("" "/")) NIL NIL +> S: 4 OK NAMESPACE completed + +The response should be: + +S: * NAMESPACE (("#Namespace1/" "/")("#Namespace2/" "/")("" "/")) NIL NIL + +Otherwise, the only two mailboxes in those namespaces are #Namespace1 and +#Namespace2. + +Worse, with this response, #Namespace1 is the default namespace (and thus +the only mailbox is #Namespace1). So you probably wanted: + +S: * NAMESPACE (("" "/"))("#Namespace1/" "/")("#Namespace2/" "/") NIL NIL + +> C: 6 LIST "" #Namespace1 +> S: 6 OK LIST completed + +So, #Namespace1 can only have one mailbox ("#Namespace1") because there's +no terminating hierarchy delimiter in the NAMESPACE result, but that name +doesn't exist. + +Now, if the NAMESPACE result had "#Namespace1/", then you could have done + +C: 6 LIST "" #Namespace1/* + +and maybe you would see some names in there. + +> For one thing, I am unsure as to whether my server's response to this +> LIST command should be as shown or like this: +> +> C: 6 LIST "" #Namespace1 +> S: * LIST (\Noselect) "/" #Namespace1 +> S: 6 OK LIST completed + +Typically, a namespace is not a hierarchical name itself, but rather the +identifier for a hierarchy. So usually, there is no \NoSelect response +for the namespace itself. IMAP does not specifically forbid it though. + +Now, + +6 LIST "" #Namespace1/ + +is an entirely different matter, since the root of the namespace may be +something reasonable to list. + +And, certainly + +6 LIST "" #Namespace1/* + +and + +6 LIST "" #Namespace1/% + +are quite reasonable and common. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22813.mbox:2,S new file mode 100644 index 00000000..219c1bc9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22813.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From dot at dotat.at Mon Jan 18 05:48:42 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:43 2018 +Subject: [yam] [Imap-protocol] Re: draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + + <6081A14A-42E5-4139-A57D-6DF01EF86BA7@iki.fi> + +Message-ID: + +On Mon, 18 Jan 2010, Arnt Gulbrandsen wrote: + +> Timo Sirainen writes: +> +> > 2) It's easier to enforce "SSL-only" traffic in firewall rules based on +> > ports. For example they'll keep both imap and imaps enabled, but only imaps +> > is allowed outside intranet. +> +> Yeah. But I can't remember talking to anyone who really cared about allowing +> cleartext imap inside the firewall. + +I'm not sure exactly what you mean here, but I have counter examples for +two possible interpretations. + +If you mean that no one in your experience is worried by unencrypted +access from local IP addresses, then we certainly are especially for +wireless users. + +If you mean that no one in your experience enables unencrypted access from +local IP addresses, then I believe it's fairly common for universities to +do so to avoid having to reconfigure thousands of desktop clients. It +took us about a year to completely disable unencrypted access - we wanted +to avoid huge spikes in support load. + +With the right software it's fairly easy to restrict unencrypted logins to +local wired networks. + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +GERMAN BIGHT HUMBER: SOUTHWEST 5 TO 7. MODERATE OR ROUGH. SQUALLY SHOWERS. +MODERATE OR GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22817.mbox:2,S new file mode 100644 index 00000000..4d5a58f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22817.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From mrc+uw at Panda.COM Tue Dec 29 14:43:21 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: <1262125668.26478.927.camel@timo-desktop> +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + + <1262125668.26478.927.camel@timo-desktop> +Message-ID: + +On Tue, 29 Dec 2009, Timo Sirainen wrote: +> The most annoying thing that a client can do is pop up a message saying +> "Mailbox isn't selectable." This is what most clients seem to do. + +I agree. That means that the client listed the mailbox, yet ignored the +fact that it was \NoSelect. That's just plain broken client behavior. + +> What I think they should do is (lets assume a GUI client similar to +> TB/Outlook/etc): +> +> - In the window where it would typically show list of messages or +> message body, it would show a text something like "This mailbox doesn't +> exist, it only contains children." + +Or, it should have separate graphical elements to open as a directory, +open as a mailbox, or both. It was much easier when dual-use mailboxes +weren't the norm, since then the open operation would open in the correct +mode depending upon the type of object. + +Consider how any sort of filesystem browser works. If you click an +object, you open that object depending upon what sort of object it is. + +Now that dual-use mailboxes are the norm, you need to be a bit more +creative in the interface. If everything is icons, you're sort of stuck. +Either you have two open methods, or you have the object twice, once for +each of its roles. + +With a hierarchy browser, you have a widget to open the children, and +double click to open the messages. If you double click a directory, it +either does nothing or acts as if you clicked the widget. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22820.mbox:2,S new file mode 100644 index 00000000..d5f7e14d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22820.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From mrc+uw at panda.com Wed Nov 18 10:33:52 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +Message-ID: + +Besides Cyrus, what other servers offer a wildcard in the userid field for +other users? + +For example, given a server which exports + (("" "/")) (("/Users/" "/")) (("/Public" "/")) + +what servers permit a client to do: + tag LIST "" /Users/* + +To follow-up on my previous question, what clients besides Thunderbird +attempt to do such a command? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22832.mbox:2,S new file mode 100644 index 00000000..2eba68b9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22832.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From alexey.melnikov at isode.com Sun Jul 12 04:28:06 2009 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] copy to same mailbox +In-Reply-To: +References: +Message-ID: <4A59C8C6.5030809@isode.com> + +Mark Crispin wrote: + +> I just discovered that the GroupWise IMAP server does not permit the +> target of a COPY command to be the selected mailbox. GroupWise has +> other issues, but apparently nobody has ever complained about this. +> +> Do other servers prohibit COPY to the selected mailbox? + +Isode M-Box doesn't. +While this might not be very useful for end users, I am frequently using +this for testing. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22835.mbox:2,S new file mode 100644 index 00000000..3ea8c9d1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22835.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jun 15 00:03:26 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] No DateModified or Equivalent for use with + Disconnected Clients? +In-Reply-To: +References: +Message-ID: + +Tom Davis writes: +> Do I understand correctly that in order to determine if any old +> messages on the server have changed after returning from a +> disconnected state I have to: +> +> 1) Fetch header info (flags etc.) for every single message (1 to +> UIDLASTSEEN) in the given server mailbox +> +> 2) Compare the flags etc., with last known state of all of the +> messages stored on the client machine +> +> ...in order to see which old messages on the server have been modified? + +More or less. + +RFC 4551 changes this. It's available on some servers, but it's not +commonly deployed yet. Cyrus supports it, and a google search says +supporting versions are is available in freebsd and gentoo. Maybe +another google search would name other platforms, but I'm too lazy. + +The code to update your flags copy is something like this: + + if server advertise condstore, then send + UID FETCH 1:* (FLAGS) (CHANGEDSINCE 99992) + else + UID FETCH 1:* (FLAGS) + +(That 99992 is from a per-mailbox variable you have to remember, see below.) + +You will receive a FETCH response for each message you need to update. +If you do not receive a fetch response for a particular message, then +your flags copy for that message is correct. + +If the server supports condstore, then the fetch response will have a +modseq field: + + * 2 FETCH (UID 6 MODSEQ (99996) FLAGS (\Deleted)) + +If the number 99996 is larger than your per-mailbox modseq variable, +then you update that variable. + +As you can see, it's not very much code. + +> Any advice appreciated. + +I'd rather just answer your specific question. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22838.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22838.mbox:2,S new file mode 100644 index 00000000..de7ae4a9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22838.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From markrcrispin at panda.com Thu Apr 2 16:44:16 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Future INTERNALDATE +In-Reply-To: <1238715476.12172.239.camel@timo-desktop> +References: <1238715476.12172.239.camel@timo-desktop> +Message-ID: + +On Thu, 2 Apr 2009, Timo Sirainen wrote: +> Any thoughts on if it's a bad idea for server to convert future +> INTERNALDATE timestamps in APPEND parameter to current time? + +In my opinion, this is a case of GIGO (Garbage In, Garbage Out). Barring +the invention of time machines, either the client or the server has the +wrong time. + +The server is free to do as it pleases in such a case. I think that your +idea of coercing to current time is a fine idea that would probably give +the best user experience. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095080.22841.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095080.22841.mbox:2,S new file mode 100644 index 00000000..f084cc0e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095080.22841.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Wed Mar 4 11:42:58 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Expunges and copying +Message-ID: <1236195778.8159.156.camel@timo-desktop> + +What do you think, should this be allowed: + +Sessions 1 and 2 have selected a mailbox and have an identical view of +it. Then: + +C1: 1 EXPUNGE +S1: * 1 EXPUNGE +S1: 1 OK + +C2: 2 COPY 1 elsewhere +S2: * 1 EXPUNGE +S2: 2 OK + +i.e. the second session can copy a message that was already expunged in +the first session? I guess this isn't all that much different from being +able to FETCH the message, but somehow it feels to me like allowing COPY +could be bad.. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22595.mbox:2,S new file mode 100644 index 00000000..6f1a4c9c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22595.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Mar 23 18:42:59 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> +Message-ID: + +> . OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxten QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SEARCH=FUZZY SORT SORT=MODSEQ SORT=DISPLAY SORT=UID THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE ANNOTATE-EXPERIMENT-1 METADATA LIST-EXTENDED LIST-STATUS LIST-MYRIGHTS WITHIN QRESYNC SCAN XLIST XMOVE MOVE SPECIAL-USE CREATE-SPECIAL-USE DIGEST=SHA1 LOGINDISABLED XCONVERSATIONS COMPRESS=DEFLATE X-QUOTA=STORAGE X-QUOTA=MESSAGE X-QUOTA=X-ANNOTATION-STORAGE X-QUOTA=X-NUM-FOLDERS IDLE] + +The number of extensions to this protocol is completely out of control :-P + +I would like to see a survey taken of how many clients actually make use of this cornucopia of enhancements to 3516. I'm pretty sure some of the older cruft could be deprecated without causing major inconvenience. I'm game to instrument our servers to start collecting data[1]? Anyone else interested? + +--lyndon + +[1] pending management signoff, but I don't think that will be a problem. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22701.mbox:2,S new file mode 100644 index 00000000..5d731ce9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22701.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From slusarz at curecanti.org Tue Nov 27 16:00:37 2012 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + <50B54704.9020805@tlinx.org> + +Message-ID: <20121127170037.Horde.bWDt0BZaqY7WIcdZNayF-Q6@bigworm.curecanti.org> + +Quoting Brandon Long : + +> I believe he's dealing with an environment running php scripts with even +> support as running as CGIs which are exec'd on every access. +> +> Which isn't to say that some mechanism wouldn't be possible to do this +> (fork a daemon that holds the connections and pass them to the new server +> or something) but it gets complicated. + +Yeah: this is exactly what imapproxy provides +(http://www.imapproxy.org/). Way back at the beginning of the thread +I laid out the reason why this solution is insufficient or, at least, +undesirable. + +> It would be much simpler to just have a long running server serve the +> webpages directly instead of through CGI, but that's what he's got. + +Agreed. If I was in charge of creating a closed system webmail +architecture, this would be an obvious decision. (Mail store +interaction would probably not be done via pure IMAP either). But +stock HTTP and IMAP servers is what most admins have to work with, so +we desire to distribute a software solution to these people to ensure +the largest possible audience. + +> On Tue, Nov 27, 2012 at 3:04 PM, L Walsh wrote: +> +>> Just ignore me if I'm too clueless for this to be of any help, but if I was +>> doing what you are doing, I'd cache the client TCP connections to the IMAP +>> server until I timed their session-out from my webserver. +>> +>> I.e. would set cookie upon connection to their imap server that contains +>> a 'handle' that would indicate something in my 'IMAP-TCP connection cache', +>> and route their requests accordingly. +>> +>> Not only are starting TCP connections "expensive", but you have an added +>> expense +>> of IMAP state... if HTTP(S), believes in using PIPELINING to enable lower +>> server loads and faster response time, why not a webmail->imap gateway? + +At least one author of an IMAP server has stated that the TCP +connection is no longer expensive and is, in fact, negligible when +compared to running even a single IMAP command. + +>> Set the "session-timeout to ~5-15 minutes" of inactivity like many things +>> do and you can recycle their imap connection, but if they reconnect w/the +>> same cookie, it seems you could simply route their commands to the already +>> open connection to their imap server -- and there would be no overhead +>> of looking for capabilities, or resetting state...etc, as the TCP conn. +>> would guarantee it's the same server. +>> +>> It would all be transparent to the user -- if they reconnect to you, you +>> look in your cache, and see if the TCP connection is still valid (or if it, +>> possibly, has been closed from the other end). If it has been, the safest +>> thing to do would be to give a message that the remote IMAP connection +>> timed-out and they need to re-connect. + +Yup - you've pretty much (re-)invented imapproxy. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22743.mbox:2,S new file mode 100644 index 00000000..d79e9823 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22743.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From dave at cridland.net Wed Mar 21 15:33:30 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <763BB35B-B3DE-4070-A5DD-CC1FABA851B9@mac.com> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + + <20897.1332365878.053493@puncture> + <763BB35B-B3DE-4070-A5DD-CC1FABA851B9@mac.com> +Message-ID: <20897.1332369210.168066@puncture> + +On Wed Mar 21 22:01:49 2012, PA wrote: +> +> On Mar 21, 2012, at 10:37 PM, Dave Cridland wrote: +> +> > Take our personality test! +> +> :D +> +> > a) Fail to understand. +> +> On the contrary, I got this one. Thanks for your patience. Like +> with many other things, an implementation is a tradeoff between +> many competing demands and constraints. And, at this conjuncture, +> the cost of some aspects of the protocol outweigh their perceived +> utility. Of course, this might change over time. But there are just +> that many hours in a day. + +Okay, so you picked (b). + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22756.mbox:2,S new file mode 100644 index 00000000..21d06a92 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22756.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From mrc+imap at panda.com Mon Nov 7 10:31:50 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: <201111071808.pA7I8EtY029928@mxout11.cac.washington.edu> +References: + <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> + + <1320653922.13384.140660995615489@webmail.messagingengine.com> + + <201111071808.pA7I8EtY029928@mxout11.cac.washington.edu> +Message-ID: + +On Mon, 7 Nov 2011, Pete Maclean wrote: +> there is no way to indicate in a SELECT response that there are no +> unseen messages. + +That is unfortunately correct. + +> However, if I understood one of +> Mark's comments correctly, it seems likely that many clients will not +> care about this information in isolation but only message flags in general. + +Also correct. + +> I did suggest to this customer that an unsolicited STATUS response +> could be sent of the form: +> * STATUS Mailbox (Unseen 0) + +That would be a good idea; but there is a problem. + +First, it will break any IMAP2 (RFC 1176) client. That is much less of a +concern today than it was 15 years ago. Yet we frequently find ourselves +having to deal with issues from much older software and even more obsolete +specifications. + +Second, it presumes that the client knows what such an unsolicited STATUS +response means at that point. + +Third, no matter how many times I say "clients MUST be prepared to accept +ANY response at ANY time (and, at worst, ignore a response that doesn't +seem to make sense in this context), there are clients that will puke when +they receive unsolicited responses that they think are "impossible" at +that point in the session. + +That's probably fatal for the idea. It would otherwise be a nice and +elegant solution. + +It was, in fact, proposed back then. The proposal died for those reasons. +Nobody was happy about that since it was a nice and elegant solution. + +The only way we could have done it is by a new select-class command +(EXTSELECT?). In retrospect, that is what we should have done. Instead, we +kept a single IMAP2-compatible SELECT command. IMAP2 compatibility is also +why we hijacked untagged OK to carry response codes. It was very important +at the time. + +Anyone got a time machine? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22759.mbox:2,S new file mode 100644 index 00000000..afb73bb7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22759.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 15:28:35 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + +Message-ID: + +On Mon, 31 Oct 2011, Brandon Long wrote: +> I have no idea who you talked to, but my team owns the Gmail IMAP server. + +In that case, at the very least, there is a lack of a consistent and +coherant policy regarding standard compliance. + +> Almost all of our IMAP users mostly use the web interface, so yes, +> they want the IMAP experience to mimic the Gmail interface. There are +> settings that can be set to make the experience more "IMAP normal" +> than "Gmail normal", but the defaults favor the more common use case. + +Do you actually have research and firm numbers to back up the contention +that customers want their IMAP clients to behave incorrectly, including +malfunctioning, so that some IMAP clients seem to mimic Gmail? + +Or is this just a matter of religion that has never been challenged, much +less bolstered with research? + +> I know its not compliant, we even have a support page where we list +> the cases where we explicitly decided against compliance. +> Interoperability is a goal, however. That doesn't mean we want to +> force Gmail users to use the IMAP mailbox model, however. + +So, instead, you force Gmail users to use a non-compliant model that +violates guarantees in IMAP and causes some IMAP clients to malfunction. + +> And I argue that we made the design decisions we did with good +> reasons. I also argue that there were no perfect decisions to be +> made, and usability was a more important goal than correctness. + +Thank you for confirming, in public, that the Gmail IMAP server is +non-compliant and that Google has no intention to make it compliant. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22768.mbox:2,S new file mode 100644 index 00000000..a93a6d4a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22768.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From brong at fastmail.fm Tue Jun 7 01:36:18 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: <20110607022653.Horde.B8YBPYF5lbhN7eDNvRbny5A@bigworm.curecanti.org> +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + <20110607095157.31a2609a@arbre.eng.oslo.osa> + + <20110607022653.Horde.B8YBPYF5lbhN7eDNvRbny5A@bigworm.curecanti.org> +Message-ID: <20110607103618.4052f0af@arbre.eng.oslo.osa> + +On Tue, 07 Jun 2011 02:26:53 -0600 +Michael M Slusarz wrote: + +> In the interest of keeping everyone here out of jail and/or not on the +> losing side of a crushing judgment, let me go ahead and present to you +> a test suite that I freely release into the public domain: +> +> These subjects: +> +> 'Re: Test' +> 're: Test' +> 'Fwd: Test' +> 'fwd: Test' +> 'Fwd: Re: Test' +> 'Fwd: Re: Test (fwd)' +> +> Should all resolve into the string: +> +> 'Test' +> +> And this subject: +> +> "Re: re:re: fwd:[fwd: \t Test] (fwd) (fwd)(fwd) " +> +> Should resolve into the string: +> +> "\t Test" + +Heh - thanks. I figured as much, and was just about to ask if that +was OK :) + +> (I adapted/ripped off Timo's LGPL code for the actual subject parsing +> code itself, so I guess you probably shouldn't look at that if you are +> looking to keep your code ASL2-compatible). + +On the other hand, the Cyrus code for same is BSD, so you can probably +rip that out just fine - but I warn you, it's nasty horrid C ;) + +Bron ( no, seriously - it's not just C - it's nasty C ) + +#if 0 /* do nested blobs - wait for decision on this */ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22772.mbox:2,S new file mode 100644 index 00000000..ba3a7842 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22772.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From blong at google.com Wed May 18 22:31:11 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110519045851.GA23466@brong.net> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> +Message-ID: + +On Wed, May 18, 2011 at 9:58 PM, Bron Gondwana wrote: +> The downside of offlineimap is, as Brendan pointed out for gmail's case, +> a 100k message mailbox will cause 6Mb of traffic just to synchronise flags, +> because there's no way to say "tell me what changed since last time". ?At +> least I'm running a patched copy that has COMPRESS support. +> http://github.com/brong/brong-offlineimap/ - it's pretty old now, but the +> compress support makes it worthwhile. + +Looks like you forked it a couple months before we submitted a patch +to stop asking for iNTERNALDATE on every sync request. + +https://github.com/brong/brong-offlineimap/blob/brondev/offlineimap/folder/IMAP.py#L138 + +Since INTERNALDATE never changes, and the format isn't small (41 extra +bytes per message), it greatly increases the size of the response +without any benefit... and it also causes us to fall back to a much +slower / more expensive fetch handler. Its probably a good thing to +fix even if you aren't using Gmail. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22796.mbox:2,S new file mode 100644 index 00000000..f3c045f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22796.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 18:08:06 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <959754EE-4A2A-4DBD-8A63-6A317532C302@iki.fi> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <11166.1286226226.318772@puncture> + + <959754EE-4A2A-4DBD-8A63-6A317532C302@iki.fi> +Message-ID: + +On Tue, 5 Oct 2010, Timo Sirainen wrote: +> So nowadays +> my server never disconnects clients on IDLE because they haven't sent +> anything. That fixes the whole thing. I still send "* OK Still here" +> events every 2 minutes, so connections that are actually gone will get +> disconnected pretty quickly. + +Be careful. If you don't get a disconnect event, you'll presently end up +filling the TCP window and then block. + +> This doesn't help clients that use one IDLEing connection that does +> nothing but IDLE, and use another connection for actually fetching the +> new mails. + +Clients actually do this? Deep sigh. Doesn't anyone have a clue as to +how to write software any more? Or "if it ain't in the Java cookbook, it +can't be done"??? + +http://www.generationaldynamics.com/cgi-bin/D.PL?d=ww2010.i.java080701 + +:( + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22807.mbox:2,S new file mode 100644 index 00000000..779633aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22807.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 05:09:55 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111115.19660.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <23852.1276246771.199346@puncture> + <201006111115.19660.witold.krecicki@firma.o2.pl> +Message-ID: <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> + +On 11.6.2010, at 10.15, Witold Kr?cicki wrote: + +> On Friday 11 of June 2010 10:59:31 Dave Cridland wrote: +>> Depending on your server design, this is either very easy, or else +>> very hard - of course, since it's optional, it'd seem likely that +>> where it's hard it'd not be supported. +> That's sure, that's why it's an option. In most popular IMAP servers that use +> Maildirs this is a simple 'move' operation, with I/O cost of next to nothing +> (assuming that the whole user account is on one FS of course). + +I once thought about implementing MOVE operation to Dovecot to improve speed. But then I realized that if client sends STORE \Deleted and EXPUNGE in same IP packet, I can just optimize away the rename()s caused by STORE. The remaining link()+unlink() should then be about as fast as rename(). The only exception is OSX with HFS filesystem, where hard links are really inefficient. + +The main potential benefit I see for MOVE is to avoid "out of quota" error when moving messages. The biggest problem has been clients that delete messages by moving them to Trash, and then users complain that they can't get back to under quota because they can't delete messages. But that is also easily solvable by giving somewhat higher quota limit to Trash mailbox. + +People (webmail developers mainly) still once in a while ask me to implement MOVE, but I think it's mainly about convenience to them. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22810.mbox:2,S new file mode 100644 index 00000000..1b8701aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22810.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From guenther+imap at sendmail.com Wed May 19 11:01:27 2010 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Namespace questions +In-Reply-To: +References: <201005191535.o4JFZP5Q013449@mxout14.cac.washington.edu> + +Message-ID: + +On Wed, 19 May 2010, Mark Crispin wrote: +> On Wed, 19 May 2010, Pete Maclean wrote: +... +> > Is it correct that the command: +> > +> > 1 LIST "" * +> > +> > should list mailboxes in all namespaces? +> +> NO!!! +> +> This command lists the mailboxes in the default namespace, which in most +> implementations is the user's private set of mailboxes. + +As much as I would like to agree, I cannot suggest that to Pete. When +Sendmail sold an IMAP server for generic use, customer experience with the +IMAP clients that exist in the marketplace convinced me that + tag LIST "" * + +needs to cross namespace boundaries, at least for namespaces that may +contain mailboxes that normal users may need to access. The state of IMAP +client implementations, at least a few years ago, was such that doing +otherwise meant that entire hierarchies were *completely inaccessible* +from common clients. Responding to a customer support call with "your +IMAP client is broken" is a not a good way to keep a customer. This is +the dynamic of the market for many products. + +It sucked, but I changed our implementation to cross namespace boundaries +and the complaints all went away. + + +Pete: I suggest you figure out what IMAP clients are used by your target +users and then, whatever your choice, verify how they behave against your +implementation. Consider the user experience and the support costs of the +behaviors you see and tune from there. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22813.mbox:2,S new file mode 100644 index 00000000..0213bef0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22813.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jan 18 06:11:06 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [yam] [Imap-protocol] Re: draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + + <6081A14A-42E5-4139-A57D-6DF01EF86BA7@iki.fi> + + +Message-ID: <1fQ38Id/bDvQxBfPPns2Vg.md5@lochnagar.gulbrandsen.priv.no> + +Tony Finch writes: +> On Mon, 18 Jan 2010, Arnt Gulbrandsen wrote: +>> Yeah. But I can't remember talking to anyone who really cared about +>> allowing cleartext imap inside the firewall. +> +> I'm not sure exactly what you mean here, but I have counter examples +> for two possible interpretations. + +I meant that I can't remember speaking to anyone who REALLY WANTED to +allow unencrypted IMAP inside the firewall. Sorry about the lack of +clarity. + +> If you mean that no one in your experience is worried by unencrypted +> access from local IP addresses, then we certainly are especially for +> wireless users. + +Yes. I have also heard mutterings about ethernet jacks and ARP attacks, +although that may be more paranoia than realism. + +> If you mean that no one in your experience enables unencrypted access +> from local IP addresses, + +(On the contrary, people do, and I think it makes sense. A low-value +feature is worth using if it's also low-cost, right?) + +> then I believe it's fairly common for universities to do so to avoid +> having to reconfigure thousands of desktop clients. It took us about +> a year to completely disable unencrypted access - we wanted to avoid +> huge spikes in support load. + +Yes. + +> With the right software it's fairly easy to restrict unencrypted +> logins to local wired networks. + +Timo's mail made me think of a different approach: Immediately expire a +password if a server receives that password in clear text. Bang bang. +(Let me guess: The words "support spike" entered your mind now.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22817.mbox:2,S new file mode 100644 index 00000000..0fcf6d84 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22817.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From bhayden at umn.edu Tue Dec 29 16:24:54 2009 +To: imap-protocol@u.washington.edu +From: Brian Hayden +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + +Message-ID: + +On Dec 29 2009, Mark Crispin wrote: + +>On Tue, 29 Dec 2009, Brian Hayden wrote: +>> Has anyone studied this from a user perspective? I suspect that you'd +>> have to +>> come up with an interaction method that is both new and intuitive +>> (something +>> that is quite the rare gem) to have the concept have any meaning to the +>> user +>> in a client interface -- \NoSelect seems quite foreign to everything +>> else +>> they encounter on a computer system (or in any other interface, for that +>> matter). +> +>Oh? +> +>The UNIX and Windows shells, with mkdir and rmdir are "quite foreign"? +> +>The Windows Explorer and the Mac OS X Finder are "quite foreign"? +> +>The FTP and SSH protocols are "quite foreign"? +> +>In EVERY other environment besides IMAP, you must create a directory +>before you can put something into it. In EVERY other environment besides +>IMAP, directories don't vanish when you delete their children. +> +>The ONLY reason why IMAP hides directories under this cloak of "\NoSelect +>names" was to pacify the CMU people who wanted to make everything look +>like NetNews. Giving in was a HUGE mistake which I have regretted +>enormously ever since. + +Sorry if I was unclear. As noted I wasn't talking about the creation +action, but the concept of \NoSelect itself. I can't think of any object in +any interface that the average person uses which has an analogue (except, +obviously, for the ones of concern here--"directories" in mail clients +which are either connecting to an IMAP server with a single-use mailbox +format, or which hard-code a single-use view of the world). + +A directory in Windows, OS X, or most of the Linux desktop environments +(for example) is "selectable", both conceptually and in IMAP terms--because +it is "dual-use". If the idea of a non-selectable object is foreign to the +very large majority of users then it would follow that the details of its +creation/use/destruction would then also not have a ready mental map. But +to get at the root a client designer might want to tackle creating a +meaningful mental model of \NoSelect. + +This is somewhat tangential to Timo's original topic; I only meant to +address the client/user interaction point that came up. + +-Brian + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22820.mbox:2,S new file mode 100644 index 00000000..d277ca79 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22820.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From tss at iki.fi Wed Nov 18 10:53:38 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: +References: +Message-ID: <1258570418.3022.660.camel@timo-desktop> + +On Wed, 2009-11-18 at 10:33 -0800, Mark Crispin wrote: +> Besides Cyrus, what other servers offer a wildcard in the userid field for +> other users? +> +> For example, given a server which exports +> (("" "/")) (("/Users/" "/")) (("/Public" "/")) +> +> what servers permit a client to do: +> tag LIST "" /Users/* + +Dovecot, if configured to do so. And of course not all users, only those +that have mailboxes with +l permission to LISTing user. + +> To follow-up on my previous question, what clients besides Thunderbird +> attempt to do such a command? + +If that didn't work, I think shared namespaces would be almost unusable +in most IMAP clients. Clients don't support accessing mailboxes that +they can't LIST (or LSUB, but subscribing would again require LIST to +show them). + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22832.mbox:2,S new file mode 100644 index 00000000..108cc3e9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22832.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Jul 12 04:36:54 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] copy to same mailbox +In-Reply-To: <4A59C8C6.5030809@isode.com> +References: + <4A59C8C6.5030809@isode.com> +Message-ID: + +Alexey Melnikov writes: +> While this might not be very useful for end users, I am frequently +> using this for testing. + +Right. The easiest/fastest way I know to put a million messages into a +mailbox is to put a few there with append, then copy the mailbox to +itself 10-20 times. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22835.mbox:2,S new file mode 100644 index 00000000..aeadeca2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22835.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From tss at iki.fi Tue Jun 16 12:47:08 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +Message-ID: <1245181628.21624.808.camel@timo-desktop> + +Has anyone tested how well clients support catching capabilities after +login? I was planning on having Dovecot v2.0 send only very minimal +capabilities before login. The way it works is: + +a) A new enough client that understands [CAPABILITY ..] : + +* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. +1 login user pass +1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH] Logged in + +b) Client that doesn't understand [CAPABILITY ..]: + +* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. +1 capability +* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN +1 OK Capability completed. +2 login user pass +* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH +2 OK Logged in + +Note that in b) case it's sending untagged CAPABILITY reply. This seems +to help a lot of clients. + +The list of clients I've so far tested are: + + - Thunderbird v2.0 works + - Alpine v2.0 works + - Apple Mail works + - Outlook 2003 works (tested by someone else than me) + - Outlook Express works (tested by someone else than me) + - Evolution ignores the updated capability. + +The above list looks promising enough that I have some hope of being +able to actually do this. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22838.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22838.mbox:2,S new file mode 100644 index 00000000..37038cfd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22838.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Apr 2 17:02:51 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Future INTERNALDATE +In-Reply-To: +References: <1238715476.12172.239.camel@timo-desktop> + +Message-ID: + +> The server is free to do as it pleases in such a case. I think that your +> idea of coercing to current time is a fine idea that would probably give the +> best user experience. + +I disagree. Given a 64-bit time_t it's not inconceivable that time travel +will be invented before we overflow epoch+(2^63-1). + +Unless your server can accurately read my mind (something that will NOT +happen before the above-mentioned milestone occurs), just leave this stuff +alone. Otherwise I might give you a quit-dorking-around-with-my-data +experience.) + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22841.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22841.mbox:2,S new file mode 100644 index 00000000..0072a92d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22841.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From markrcrispin at panda.com Wed Mar 4 11:54:49 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Expunges and copying +In-Reply-To: <1236195778.8159.156.camel@timo-desktop> +References: <1236195778.8159.156.camel@timo-desktop> +Message-ID: + +I think that this is allowed, and that a server that does not implement it +correctly by copying the message is broken. + +I have said many times that I do not agree with RFC 2180 sections 4.1.2 +and 4.1.3. This is an excellent example of why. + +On Wed, 4 Mar 2009, Timo Sirainen wrote: +> What do you think, should this be allowed: +> +> Sessions 1 and 2 have selected a mailbox and have an identical view of +> it. Then: +> +> C1: 1 EXPUNGE +> S1: * 1 EXPUNGE +> S1: 1 OK +> +> C2: 2 COPY 1 elsewhere +> S2: * 1 EXPUNGE +> S2: 2 OK +> +> i.e. the second session can copy a message that was already expunged in +> the first session? I guess this isn't all that much different from being +> able to FETCH the message, but somehow it feels to me like allowing COPY +> could be bad.. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095081.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095081.22844.mbox:2,S new file mode 100644 index 00000000..7ae60636 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095081.22844.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From thomas.dressler at 1und1.de Tue Feb 17 01:22:55 2009 +To: imap-protocol@u.washington.edu +From: Thomas Dressler +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Rfc-3501 LIST/LSUB +Message-ID: <499A81EF.6060901@1und1.de> + +hi, + +i have an LSUB/LIST question. + +rfc-3501(6.3.8) sayes about: +tag LIST "" "" +that the server should return the "hierarchy delimiter" + +example: + +C: A101 LIST "" "" +S: * LIST (\Noselect) "/" "" +S: A101 OK LIST Completed + +is it also true for LSUB? the rfc sayes: + +"The arguments to LSUB are in the same form as those for LIST." + + +i ask because some Clients send us commands like +tag lsub "" "" +what is the correct response? + +cyrus behavior: +C: a LIST "" "" +S: * LIST (\Noselect) "." "" +S: a OK Completed (0.000 secs 0 calls) +C: b LSUB "" "" +C: b OK Completed (0.000 secs 1 calls) +is it correct? + +bye +ThomasD + +-- +Thomas Dre?ler Entwicklung thomas.dressler@1und1.de +Bei 1&1 Internet AG Karlsruhe-Brauerstr. 48 D-76135 Karlsruhe + +Vorstand: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Thomas Gottschlich, Matthias Greve, Robert Hoffmann, Markus Huhn, Oliver Mauss, Achim Weiss +Aufsichtsratsvorsitzender: Michael Scheeren + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22595.mbox:2,S new file mode 100644 index 00000000..5f4258d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Mar 23 18:47:44 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> + +Message-ID: + + +On Mar 23, 2015, at 6:42 PM, Lyndon Nerenberg wrote: + +> 3516 + +3501. Doh! (Yes, I contributed to this mess.) + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22701.mbox:2,S new file mode 100644 index 00000000..bc5185ed --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22701.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Tue Nov 27 16:41:14 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Combining LITERAL+ and BINARY +In-Reply-To: <3DFB419C-6894-4703-BBB4-F156DF0B89DB@orthanc.ca> +References: + <1354059359.2844.26.camel@innu> + <3DFB419C-6894-4703-BBB4-F156DF0B89DB@orthanc.ca> +Message-ID: <89092201-3988-4783-9888-99A5D34B2569@iki.fi> + +On 28.11.2012, at 1.59, Lyndon Nerenberg wrote: + +> On 2012-11-27, at 3:35 PM, Timo Sirainen wrote: +> +>> It's not defined, so I don't think clients can legally use their +>> combination.. Although Dovecot supports the obvious way of combining +>> them: ~{n+} +> +> And I consider that a legitimate operation. +> +> I'm planning to push an updated BINARY RFC, and I'll make sure this case is called out. + +Nice. I noticed several other ambiguous issues when I implemented it a few months ago. I think I sent a mail about all of them to the IMAP mailing lists.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22743.mbox:2,S new file mode 100644 index 00000000..227a3580 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22743.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 21 15:37:05 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <20897.1332365878.053493@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + + <20897.1332365878.053493@puncture> +Message-ID: <4F6A5811.4070503@gulbrandsen.priv.no> + +Hey. If it's OK for him that new messages are visible only when the +client next connects/selects/noops, then so it is. That may not be a +tradeoff many people would make, but if it's an informed choice... + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22756.mbox:2,S new file mode 100644 index 00000000..3b996674 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22756.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From brong at fastmail.fm Mon Nov 7 11:03:32 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz><1320653922.13384.140660995615489@webmail.messagingengine.com><201111071808.pA7I8EtY029928@mxout11.cac.washington.edu> + +Message-ID: <1320692612.21868.140660995844269@webmail.messagingengine.com> + +On Monday, November 07, 2011 10:31 AM, "Mark Crispin" wrote: +> Anyone got a time machine? + +I will have one, does that help? +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22759.mbox:2,S new file mode 100644 index 00000000..286c96f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22759.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 15:31:27 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + <1320096826.9022.140660992904397@webmail.messagingengine.com> + +Message-ID: + +On Mon, 31 Oct 2011, Brandon Long wrote: +> I could make +> something simpler with a simpler use case. The argument may be that +> IMAP tries to do too much, that a two-way syncing protocol would be +> simpler and what most clients these days would use in preference to +> the "on-line, off load work to server" model that say pine wants. Or, +> that could just be my biases coloring my perception. + +Port 220 is allocated for people who think that they are smarter than me +in the design of IMAP. + +Implement your new Gmap on port 220, and make port 143 comply with my +specification. + +You will then have your answer as to how many people prefer your design +over mine. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22768.mbox:2,S new file mode 100644 index 00000000..54247837 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22768.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Tue Jun 7 05:26:06 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: <20110607022653.Horde.B8YBPYF5lbhN7eDNvRbny5A@bigworm.curecanti.org> +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + <20110607095157.31a2609a@arbre.eng.oslo.osa> + + <20110607022653.Horde.B8YBPYF5lbhN7eDNvRbny5A@bigworm.curecanti.org> +Message-ID: <1307449566.10421.702.camel@hurina> + +On Tue, 2011-06-07 at 02:26 -0600, Michael M Slusarz wrote: + +> (I adapted/ripped off Timo's LGPL code for the actual subject parsing +> code itself, so I guess you probably shouldn't look at that if you are +> looking to keep your code ASL2-compatible). + +I never really thought of imaptest's license. But if it helps anyone, I +changed it now to MIT: http://hg.dovecot.org/imaptest/rev/c2d680c3f0ac + +Although it might as well be public domain. I don't really care. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22772.mbox:2,S new file mode 100644 index 00000000..d3c7b5ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22772.mbox:2,S @@ -0,0 +1,121 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 18 22:45:15 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110519045851.GA23466@brong.net> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> +Message-ID: + +On Thu, 19 May 2011, Bron Gondwana wrote: +>> Email synchronization is a fool's errand; but there seem to be an abundant +>> supply of fools that undertake it. +> God yeah, because - y'know, people WANT it. There's two approaches to +> that. Rail against the stupidity of people, or accept that just, perhaps, +> it might be OK for people to want things. + +They "want" it because they have been told they want it, and they have +never been shown an alternative. It's the same reason that North Koreans +support their government. + +What consumers really want from email is that it works. Synchronization +vs. non-synchronization, bombastic blurdybloops vs. wallflower sarasoops, +none of that matters. The only thing that matters is that it work. + +>> At least Android +>> has k9mail which - just barely - steps over the line into "usability". +> Barely is right. + +By "barely" I mean that (unlike the default Google Mail app) it +condescends to cope with 4 mail sources, and a total of about 200 +messages, without crashing on every new message. + +Clearly an unreasonable demand on my part. + +> A search that could find emails older than yesterday +> would be nice. + +A problem that was solved nearly 40 years ago. + +> I don't know about you - but I'm using offlineimap+mutt as my email client +> on my laptop precisely to avoid all this nonsense. offlineimap speaks a +> very minimal IMAP protocol and does the great evil of email synchronisation +> (more fool me) so that I can actually access all my email when I'm, y'know, +> OFFLINE. I find myself benefiting from that multiple times per month +> despite theoretically having mobile access everywhere. + +The only time I ever find myself offline is when I am in very remote areas +of northern British Columbia or the Yukon; and that's only because I chose +not to cough up the dough for satellite. Even in rural Alaska, where I +have to carry a firearm for bear protection on my property, I have +continuous reliable online access. + +> And it's all on an +> SSD, so searches are stupidly fast even if I wind up doing body scans. + +Except that at some time you had to download the body to that device. +Given the number of devices that I use, the volume of mail that I deal, +and the large attachments in that mail, that is not a viable option. + +> Besides I'm not sharing my IO queue with 5,000 other connected users when +> I go to actually access my email. + +If a server can't handle the I/O load for a mere 5000 connected users then +it has no business being a server for 5000 connected users. + +> The downside of offlineimap is, as Brendan pointed out for gmail's case, +> a 100k message mailbox will cause 6Mb of traffic just to synchronise flags, +> because there's no way to say "tell me what changed since last time". + +That is because of the stupidity of doing such synchronization in the +first place. Unless you have such a large screen that it can show the +flags of 100K messages, there is no reason that the UI needs it. + +A webmail server doesn't transmit data 100,000 messages to the web +browser. + +Think about that. + +> The money is in making $FOO work the way users want, rather than telling +> them what to want. Unless you have a huge advertising budget it's much +> easier to sell people something they already think they want than to make +> them want something you would prefer to sell. + +The problem is not in producing a product that people would want to use. +The problem is getting ROI on the development costs; and that in turn +requires people to care enough about email that doesn't suck to pay money +for it. + +The only email software that people buy is software that is purposed to +make email work less well. There is quite a bit of money in doing that. +They'll pay quite a bit per-seat for that, but will throw you out of the +office if you suggest that they pay a fraction as much for an email client +that does not suck. + +Think about that. + +All other email software is "free", or is part of a collaboration suite +(and there is one big player in that game that makes the others look like +mice by comparison). People don't buy a collaboration suite to get email; +they buy a collaboration suite to get a collaboration suite. Email is an +afterthought; yet having paid the costs for the collaboration suite they +aren't about to pay for separate email, no matter how badly email sucks in +the collaboration suite and/or how amazingly great the separate email may +be. + +There's no ROI on email clients. Most people use webmail anyway. The +proof is that there are NO good email clients on mobile devices. If there +was a market, it would be filled with high-priced competition and people +would be paying it. It isn't and they aren't. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22796.mbox:2,S new file mode 100644 index 00000000..2e082ce6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22796.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From tss at iki.fi Mon Oct 4 18:17:01 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <11166.1286226226.318772@puncture> + + <959754EE-4A2A-4DBD-8A63-6A317532C302@iki.fi> + +Message-ID: <07A4B2F1-7841-4BCE-B82B-A82B7D14AB10@iki.fi> + +On 5.10.2010, at 2.08, Mark Crispin wrote: + +> On Tue, 5 Oct 2010, Timo Sirainen wrote: +>> So nowadays +>> my server never disconnects clients on IDLE because they haven't sent +>> anything. That fixes the whole thing. I still send "* OK Still here" +>> events every 2 minutes, so connections that are actually gone will get +>> disconnected pretty quickly. +> +> Be careful. If you don't get a disconnect event, you'll presently end up +> filling the TCP window and then block. + +Luckily I don't do any blocking reads or writes. + +>> This doesn't help clients that use one IDLEing connection that does +>> nothing but IDLE, and use another connection for actually fetching the +>> new mails. +> +> Clients actually do this? Deep sigh. Doesn't anyone have a clue as to +> how to write software any more? Or "if it ain't in the Java cookbook, it +> can't be done"??? + +I remember when I first heard of this it was a plugin (or something) that simply woke up Mail.app, because it didn't support IDLE itself. Nowadays Mail.app supports IDLE, so this plugin is no longer used. But I can't remember if that was the only problematic case. diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22807.mbox:2,S new file mode 100644 index 00000000..18fe0ea1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22807.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From dave at cridland.net Fri Jun 11 05:21:17 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C1225C5.6050709@aol.com> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <29965.1276250223.982828@puncture> + <201006111212.57771.witold.krecicki@firma.o2.pl> + <29965.1276255927.615799@puncture> <4C1225C5.6050709@aol.com> +Message-ID: <29965.1276258877.868225@puncture> + +On Fri Jun 11 13:02:13 2010, John Snow wrote: +> Unfortunately, clients and users seem to prefer the trash-can +> model. In the trash model, the move command really +> is necessary. It's the only way to empty a mailbox that's full to +> quota. The copy to trash would fail but a move to +> trash will not. + +If someone wants to design a sane extension suite that'll effectively +provide a "trash can" model server-side overlaid onto IMAP's existing +primitives, I'll be very interested. + +Using the notion that client developers misuse the current +specifications as an argument to introduce new semantics doesn't +really sit well with me. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22810.mbox:2,S new file mode 100644 index 00000000..3fbc6e7e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22810.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 19 12:33:52 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Namespace questions +In-Reply-To: +References: <201005191535.o4JFZP5Q013449@mxout14.cac.washington.edu> + + +Message-ID: + +On Wed, 19 May 2010, Philip Guenther wrote: +> As much as I would like to agree, I cannot suggest that to Pete. When +> Sendmail sold an IMAP server for generic use, customer experience with the +> IMAP clients that exist in the marketplace convinced me that +> tag LIST "" * +> needs to cross namespace boundaries, at least for namespaces that may +> contain mailboxes that normal users may need to access. + +You can not cross namespace boundaries with a * wildcard, much less +selectively cross namespace boundaries. Otherwise, it is not a namespace; +and it's certainly not a "*" wildcard if it selectively navigates the +hierarchy. + +"*" must report ALL names, and children, at that level. Namespaces +specifically exist not to do do that. + +That doesn't mean that you can't/shouldn't have the functionality that you +intend. It just means that namespaces are not the proper tool for that +function. + +> The state of IMAP +> client implementations, at least a few years ago, was such that doing +> otherwise meant that entire hierarchies were *completely inaccessible* +> from common clients. + +That may be a good thing. Consider a netnews namespace and a client that +does a full synchronize with all mailboxes. + +> It sucked, but I changed our implementation to cross namespace boundaries +> and the complaints all went away. + +It sounds to me that you should not have used namespaces. The fact that +namespaces provide "other user" and "shared mailbox" functionality does +not necessarily mean that you must use namespaces for those +functionalities if you have needs that are not served by namespaces. + +A good way to think of the default namespace is of the set of mailboxes +that you want to be exposed to a client that acquires a list of mailboxes +with + tag LIST "" * +and can not access mailboxes in any other way. You must balance this set +against the very real possibility that the client will try to synchronize +every mailbox in the set. + +For example, my new server has a default namespace that is a chimera of +the following other namespaces of the user's private mailboxes (the #mail/ +namespace), the user's quarantine (the #qt/ namespace), and the mailboxes +that the user has published into the #public namespace. + +It is also intended that in the future some, but not all, other #public +namespace names will also go into the default namespace. + +So, in effect, I'm doing what you are doing but within the framework of +the default namespace. Namespaces are still being used to exile names +that should NOT be loaded with + tag LIST "" * + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22813.mbox:2,S new file mode 100644 index 00000000..a5d3e2eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22813.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From dot at dotat.at Mon Jan 18 07:04:00 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:43 2018 +Subject: [yam] [Imap-protocol] Re: draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <1fQ38Id/bDvQxBfPPns2Vg.md5@lochnagar.gulbrandsen.priv.no> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + + <6081A14A-42E5-4139-A57D-6DF01EF86BA7@iki.fi> + + + <1fQ38Id/bDvQxBfPPns2Vg.md5@lochnagar.gulbrandsen.priv.no> +Message-ID: + +On Mon, 18 Jan 2010, Arnt Gulbrandsen wrote: +> +> Timo's mail made me think of a different approach: Immediately expire a +> password if a server receives that password in clear text. Bang bang. (Let me +> guess: The words "support spike" entered your mind now.) + +:-) + +One advantage of POP's separate USER and PASS commands relative to IMAP's +unified LOGIN command or SASL PLAIN is that the server can reject the USER +command on unencrypted connections and with any luck the client will give +up without blurting out the password. At least in theory :-) + +In practice I'm not too worried about idiot client software revealing +passwords because it'll only happen during the user's first attempts at +configuration, so the exposure is pretty small. I might revise that +opinion if a college decides to go all-wireless for network access in +student bedrooms, and if against all past experience students start using +MUAs en masse instead of webmail... + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +GERMAN BIGHT HUMBER: SOUTHWEST 5 TO 7. MODERATE OR ROUGH. SQUALLY SHOWERS. +MODERATE OR GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22817.mbox:2,S new file mode 100644 index 00000000..59fbb362 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22817.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From joel+imap-protocol at panacea.null.org Tue Dec 29 22:51:49 2009 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + +Message-ID: <3687.1262155909@succubus.panacea.null.org> + +Brian Hayden writes: +> Sorry if I was unclear. As noted I wasn't talking about the creation +> action, but the concept of \NoSelect itself. I can't think of any object in +> any interface that the average person uses which has an analogue (except, +> obviously, for the ones of concern here--"directories" in mail clients +> which are either connecting to an IMAP server with a single-use mailbox +> format, or which hard-code a single-use view of the world). +> +> A directory in Windows, OS X, or most of the Linux desktop environments +> (for example) is "selectable", + +That depends on what you mean by "select". In a file browser it usually +means merely changing some context and listings. I don't think that's +analogous to IMAP "select"; opening an actual file is the analogous +operation, and you can't open a directory in this way. + +My theory is that we have two competing models. The first, which is +Mark's if I've understood him correctly, is that selectable mailboxes are +"files". The second, which I suspect might be common amongst users, is that +messages are "files", and so the distinction between selectable and +unselectable mailboxes loses its most obvious analogy. + +> both conceptually and in IMAP terms--because +> it is "dual-use". If the idea of a non-selectable object is foreign to the +> very large majority of users then it would follow that the details of its +> creation/use/destruction would then also not have a ready mental map. But +> to get at the root a client designer might want to tackle creating a +> meaningful mental model of \NoSelect. + +I think the only mental model which works is a tree. If messages are +the leaves, selectability of mailboxes seems weird because there's no +obvious reason why some arbitrary node can't have leaves attached to it. + +On the other hand if selectable mailboxes are leaves then dual-use +mailboxes are difficult to understand. In fact dual-use mailboxes might +have encouraged, and not just allowed, the alternative model. + +I would like to suggest that the kind of "one message can be in multiple +mailboxes" idea gmail is doing with "labels" might resolve the confusion, +but then there's the distinction between mailboxes and flags... + +Cheers, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22820.mbox:2,S new file mode 100644 index 00000000..319358bf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22820.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From mrc+uw at Panda.COM Wed Nov 18 11:00:25 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: <1258570418.3022.660.camel@timo-desktop> +References: + <1258570418.3022.660.camel@timo-desktop> +Message-ID: + +On Wed, 18 Nov 2009, Timo Sirainen wrote: +>> For example, given a server which exports +>> (("" "/")) (("/Users/" "/")) (("/Public" "/")) +>> what servers permit a client to do: +>> tag LIST "" /Users/* +> Dovecot, if configured to do so. And of course not all users, only those +> that have mailboxes with +l permission to LISTing user. + +Does Dovecot configure this by default? Why or why not? + +Does Dovecot scan the entire private user tree looking for +l mailboxes, +or does it have a reverse cache of accessible names? Or does it have a +global ACL database? + +>> To follow-up on my previous question, what clients besides Thunderbird +>> attempt to do such a command? +> If that didn't work, I think shared namespaces would be almost unusable +> in most IMAP clients. Clients don't support accessing mailboxes that +> they can't LIST (or LSUB, but subscribing would again require LIST to +> show them). + +Please note that I am talking about access to other users' mailboxes and +not to shared mailboxes. Of course, + tag LIST "" /Public/* +should work in the above example. + +What I am trying to determine is the use case for + tag LIST "" /Users/* + +Is it really true that clients must be able to download a complete tree of +all possible names in order to be able to access a name? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22832.mbox:2,S new file mode 100644 index 00000000..2b43711e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22832.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From alexey.melnikov at isode.com Sun Jul 12 04:42:10 2009 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] copy to same mailbox +In-Reply-To: +References: + <4A59C8C6.5030809@isode.com> + +Message-ID: <4A59CC12.5030208@isode.com> + +Arnt Gulbrandsen wrote: + +> Alexey Melnikov writes: +> +>> While this might not be very useful for end users, I am frequently +>> using this for testing. +> +> Right. The easiest/fastest way I know to put a million messages into a +> mailbox is to put a few there with append, then copy the mailbox to +> itself 10-20 times. + +Exactly :-) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22835.mbox:2,S new file mode 100644 index 00000000..4996e52e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22835.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc+uw at panda.com Tue Jun 16 13:00:38 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: <1245181628.21624.808.camel@timo-desktop> +References: <1245181628.21624.808.camel@timo-desktop> +Message-ID: + +On Tue, 16 Jun 2009, Timo Sirainen wrote: +> Has anyone tested how well clients support catching capabilities after +> login? I was planning on having Dovecot v2.0 send only very minimal +> capabilities before login. + +I've done this for a long time with implicit capabilities. + +> Note that in b) case it's sending untagged CAPABILITY reply. This seems +> to help a lot of clients. + +I don't know if you care, but that would break an IMAP2 client. +Hopefully, nobody is still using Pine 3.xx ... + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22838.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22838.mbox:2,S new file mode 100644 index 00000000..fec0a978 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22838.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Apr 3 00:27:50 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Future INTERNALDATE +In-Reply-To: <1238715476.12172.239.camel@timo-desktop> +References: <1238715476.12172.239.camel@timo-desktop> +Message-ID: + +Timo Sirainen writes: +> Any thoughts on if it's a bad idea for server to convert future +> INTERNALDATE timestamps in APPEND parameter to current time? + +A fine idea say I. Although I'd allow perhaps a minute or three into the +future, since PC clocks are so bad and tools like imapsync use append. + +NTP _should_ take care of clock skew, but I've seen (even rather +expensive) rackmount servers that failed (x)ntpd's sanity checks. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22841.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22841.mbox:2,S new file mode 100644 index 00000000..a4930055 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22841.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From tss at iki.fi Wed Mar 4 12:04:07 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Expunges and copying +In-Reply-To: +References: <1236195778.8159.156.camel@timo-desktop> + +Message-ID: <1236197047.8159.163.camel@timo-desktop> + +Previously we've been talking mainly about FETCH, not COPY. I think +there's some kind of a difference between them. One thing I just thought +of was with UIDPLUS, it could return: + +1 COPY 1 elsewhere +* 1 EXPUNGE +1 OK [COPYUID 1234567890 1 43] + +So the COPYUID refers to UID 1 which was already expunged. I suppose +that's not necessarily a problem, but perhaps it could confuse/break +clients that dropped all knowledge of the UID 1 message when receiving +EXPUNGE. + +BTW. The reason I'm thinking about this is because I'm finally +implementing a mailbox format where this would be allowed unless I +prevent it explicitly. + +On Wed, 2009-03-04 at 11:54 -0800, Mark Crispin wrote: +> I think that this is allowed, and that a server that does not implement it +> correctly by copying the message is broken. +> +> I have said many times that I do not agree with RFC 2180 sections 4.1.2 +> and 4.1.3. This is an excellent example of why. +> +> On Wed, 4 Mar 2009, Timo Sirainen wrote: +> > What do you think, should this be allowed: +> > +> > Sessions 1 and 2 have selected a mailbox and have an identical view of +> > it. Then: +> > +> > C1: 1 EXPUNGE +> > S1: * 1 EXPUNGE +> > S1: 1 OK +> > +> > C2: 2 COPY 1 elsewhere +> > S2: * 1 EXPUNGE +> > S2: 2 OK +> > +> > i.e. the second session can copy a message that was already expunged in +> > the first session? I guess this isn't all that much different from being +> > able to FETCH the message, but somehow it feels to me like allowing COPY +> > could be bad.. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22844.mbox:2,S new file mode 100644 index 00000000..2ad5468c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22844.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Feb 17 02:36:18 2009 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Rfc-3501 LIST/LSUB +In-Reply-To: <499A81EF.6060901@1und1.de> +References: <499A81EF.6060901@1und1.de> +Message-ID: <499A9322.4080400@isode.com> + +Thomas Dressler wrote: + +> hi, + +Hi Thomas, + +> i have an LSUB/LIST question. +> +> rfc-3501(6.3.8) sayes about: +> tag LIST "" "" +> that the server should return the "hierarchy delimiter" +> +> example: +> +> C: A101 LIST "" "" +> S: * LIST (\Noselect) "/" "" +> S: A101 OK LIST Completed + +Correct. + +> is it also true for LSUB? the rfc sayes: +> +> "The arguments to LSUB are in the same form as those for LIST." + +Good question. My personal opinion is that it makes no sense to call +LSUB "" "". + +> i ask because some Clients send us commands like +> tag lsub "" "" +> what is the correct response? +> +> cyrus behavior: +> C: a LIST "" "" +> S: * LIST (\Noselect) "." "" +> S: a OK Completed (0.000 secs 0 calls) +> C: b LSUB "" "" +> C: b OK Completed (0.000 secs 1 calls) +> is it correct? +> +> bye +> ThomasD + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095082.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095082.22847.mbox:2,S new file mode 100644 index 00000000..fb4f727c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095082.22847.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From markrcrispin at panda.com Fri Jan 23 14:53:56 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] non-obvious aspect of IMAP +Message-ID: + +Here's something that is good for an IMAP server developer to know. I +realized that this was not necessarily obvious, and that ought to be +documented (especially to avoid some dingbat claiming that he "invented" +a "patentable" technique). + +Suppose you have an IMAP server implementation which is a minimal state +front end to a separate mail store that has its own agent. What do you do +when a message is expunged that has not yet been announced via EXISTS? + +The easy answer is to announce an updated EXISTS prior to sending any +EXPUNGE announcements, but that may be troublesome since it has to be +atomic with the expunge operation. That worked fine in the TOPS-20, UW, +and Panda IMAP servers where the store was colocated. That isn't always +the case. + +The solution is almost laughably easy, but non-obvious. The IMAP server +probably knows the last EXISTS value that it sent, so that it can avoid +sending unnecessary EXISTS. All it has to do is disregard any expunge +event where the message number is higher than that value. + +Note that it must decrement that value with each untagged EXPUNGE that it +sends to correspond with the client. + +Example: consider the case of a mailbox where the client knows about 45 +messages and message 45 is deleted. There are two additional message that +have been delivered, and as-yet-unannounced message 46 has already been +deleted by another session. One way (the way that TOPS-20, UW, and Panda +work) of doing it is: + * 47 EXISTS + * 45 EXPUNGE + * 45 EXPUNGE +However, this way is also valid: + * 45 EXPUNGE + * 45 EXISTS +Note that only one EXPUNGE event was sent, and that the EXISTS event has +the same value as was last sent (and cannot be optimized out since it +announces a new message). + +In retrospect, I would have done it the latter way in my older servers +since it is less work (no need for EXPUNGE to have its own EXISTS event +generator) and can be less chatty. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22595.mbox:2,S new file mode 100644 index 00000000..c61cf417 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22595.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 24 12:45:41 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> + +Message-ID: <1427226341.922442.244719958.3B420059@webmail.messagingengine.com> + +On Tue, Mar 24, 2015, at 12:42 PM, Lyndon Nerenberg wrote: +> > . OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxten QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SEARCH=FUZZY SORT SORT=MODSEQ SORT=DISPLAY SORT=UID THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE ANNOTATE-EXPERIMENT-1 METADATA LIST-EXTENDED LIST-STATUS LIST-MYRIGHTS WITHIN QRESYNC SCAN XLIST XMOVE MOVE SPECIAL-USE CREATE-SPECIAL-USE DIGEST=SHA1 LOGINDISABLED XCONVERSATIONS COMPRESS=DEFLATE X-QUOTA=STORAGE X-QUOTA=MESSAGE X-QUOTA=X-ANNOTATION-STORAGE X-QUOTA=X-NUM-FOLDERS IDLE] +> +> The number of extensions to this protocol is completely out of control :-P + +Of these, a bunch are non-standard / never been standardised. + +X-QUOTA types. +XMOVE and MOVE are both there - I could probably remove XMOVE except I still have code that uses it. +DIGEST=SHA1 an XCONVERSATIONS are both very FastMail specific +LIST-MYRIGHTS is one of the various LIST things to make more efficient use of the server and avoid some pipelining, in Cyrus at least we already have the ACL loaded when we do a LIST command, so spitting it out right there can be done without re-parsing and potentially re-calculating group membership. + +> I would like to see a survey taken of how many clients actually make use of this cornucopia of enhancements to 3516. I'm pretty sure some of the older cruft could be deprecated without causing major inconvenience. I'm game to instrument our servers to start collecting data[1]? Anyone else interested? + +I'm interested too actually - I should instrument counts on all the commands that the server supports. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22701.mbox:2,S new file mode 100644 index 00000000..02e194d3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22701.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From imap at tlinx.org Tue Nov 27 16:42:13 2012 +To: imap-protocol@u.washington.edu +From: L Walsh +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <20121127170037.Horde.bWDt0BZaqY7WIcdZNayF-Q6@bigworm.curecanti.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + <50B54704.9020805@tlinx.org> + + <20121127170037.Horde.bWDt0BZaqY7WIcdZNayF-Q6@bigworm.curecanti.org> +Message-ID: <50B55DE5.5080307@tlinx.org> + +Michael M Slusarz wrote: +> Yeah: this is exactly what imapproxy provides +> (http://www.imapproxy.org/). Way back at the beginning of the thread +> I laid out the reason why this solution is insufficient or, at least, +> undesirable. +... +> +> Yup - you've pretty much (re-)invented imapproxy. +---- + But the reasons you gave for imapproxy not working were it's +auto-restart +of a session (which I suggested against), and keeping what connection +you need +in a cookie -- which would allow specifying exactly which connection you +want -- +thus overcoming your other concern about only allowing for a 1:1 backend. + + +i.e. it solves your critical problems and leaves a bit of undesirable +complexity +-- maintenance of a separate service (not if you include your modified +version +in your disconnected client, no?) and the last reason which was it being +specific to some proxy server (??which? the one you would ship -- i.e. the +modified imapproxy?).... + + +So... I guess I'm seeing that because you are running a "scriptish" +frontend, +you don't want to include a binary ? erk. Dunno about php, but you could +do it in perl. Seems like what you might need is a php-extension (i.e. a +binary-lib that could be loaded and handle some of this)... + +That's if you wanted to do it yourself and not bother trying to extend +the IMAP +protocol... + +I dunno, seems like a php-extension-lib (I have never used php, so don't +know +how difficult that would be, but....) might be the most str8-forward way +to get +to where you want to go...?? + +But you're much more knowledgable about all the reasons you want to do +it the +way you are doing it -- and from my own experience, sometimes I have lots of +un-voiced/unwritten-down reasons for wanting to do something a +particular way +that I just haven't communicated very well (even to myself!) ;-)... + +Anyway, sorry I'm recovering ground you already thought of... + +Sounds complicated...ick. Good luck! ;-) + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22743.mbox:2,S new file mode 100644 index 00000000..d044215f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22743.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From petite_abeille at mac.com Wed Mar 21 15:37:49 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <20897.1332369210.168066@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + + <20897.1332365878.053493@puncture> + <763BB35B-B3DE-4070-A5DD-CC1FABA851B9@mac.com> + <20897.1332369210.168066@puncture> +Message-ID: <787722EC-90E3-4AD8-BA9F-71A1499661AD@mac.com> + + +On Mar 21, 2012, at 11:33 PM, Dave Cridland wrote: + +> Okay, so you picked (b). + +Delusional then. Oh, well, so be it :) + +As Osgood Fielding III memorably said: Well, nobody's perfect! + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22756.mbox:2,S new file mode 100644 index 00000000..897bbed8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22756.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 13 12:00:09 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +Message-ID: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + +Hello, + +Given a fetch command for one message, with two attributes: + +ABC FETCH 1 (FLAGS RFC822.SIZE) + +There is usually one response per message, including both attributes: + +* 1 FETCH (FLAGS (\Seen) RFC822.SIZE 44827) + +Would it be compliant to return instead two responses, one for each attribute? + +* 1 FETCH (FLAGS (\Seen)) +* 1 FETCH (RFC822.SIZE 44827) + +Thanks in advance. + +-- + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22759.mbox:2,S new file mode 100644 index 00000000..11d9889e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22759.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 31 15:38:49 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + <75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> +Message-ID: <1320100729.24671.140660992928641@webmail.messagingengine.com> + + + +On Tuesday, November 01, 2011 12:18 AM, "Timo Sirainen" wrote: +> On 31.10.2011, at 23.53, Brandon Long wrote: +> +> >> If you think that Gmail's IMAP server is compliant, you are mistaken. +> > +> > I know its not compliant, we even have a support page where we list +> > the cases where we explicitly decided against compliance. +> > Interoperability is a goal, however. That doesn't mean we want to +> > force Gmail users to use the IMAP mailbox model, however. +> +> I haven't tested GMail with imaptest for a while now (few years?), but I don't think the bugs it reports are about the mailbox model, or anything else that can't be fixed somewhat easily. I guess the one test I could remove is the search for substrings, since even Mark doesn't think it's worth the trouble nowadays. + +I've nearly got 'fetchnext' working on all the database engines I care about, +so I can efficiently implement a proper handling of the LIST-EXT edge cases. + +------------ + +Not that anyone much cares about those. Most clients just want LIST "" * to work +fast rather than building up a tree with a zillion round trips - and for it to +return the XLIST/SPECIAL-USE and subscription status along with the result, +they would be ecstatic. If you could rely on that, then most clients would +just call the one call and be happy. + +Oh, and I'm sure for bandwidth usage reasons, those same clients would also +love it to return a MODSEQ, which they could offer along with a IFCHANGEDSINCE +which returned the moral equivalent of a 304. + +Or even better, a response to login which included a separate MODSEQ value +for those rarely changed things, so every client login included a "your +cached values for the following things are already fine, you don't need to +ask again". + +Man, wouldn't that be nice. + +For that matter, you could go the step further we're heading to with our +in-house Cyrus builds now, where there's a global HIGHESTMODSEQ and a global +UIDVALIDITY for all one user's folders. Along with UIDVALIDITY change on +rename, you only need to read that ONE value to be sure that no folders +have been changed. + +(yes, we do bump it on DELETE as well, a nice side affect of DELETE just +being a rename into a hidden namespace, where it lounges for a week before +being properly cleaned up) + +And you can just check the one HIGHESTMODSEQ value, to be sure that nothing +has changed in ANY folder. That's a great first-level check. After that +you need to also check the modseqs on any folders to drill down to where the +change may have occurred - but they're in the statuscache, so you can fetch +that information for the cost of a single linear read. Only the actually +changed folder need be opened. + +Along with event push to clients (out of band) just saying "something's +changed, do a poll" we can get fast, efficient updates for all folders. +The intermediate layer is JSON, but hey - that keeps the browser client +happy, and everything else can talk it too. Someone did a benchmark of +a pile of Perl serialisation options, and the JSON::XS won - even over +the native Storable, so it's no slouch either. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22768.mbox:2,S new file mode 100644 index 00000000..d8d562da --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22768.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From norman.maurer at googlemail.com Tue Jun 7 05:33:57 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: <1307449566.10421.702.camel@hurina> +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + <20110607095157.31a2609a@arbre.eng.oslo.osa> + + <20110607022653.Horde.B8YBPYF5lbhN7eDNvRbny5A@bigworm.curecanti.org> + <1307449566.10421.702.camel@hurina> +Message-ID: + +Thanks a bunch Timo :) + +Bye, +Norman + + +2011/6/7 Timo Sirainen : +> On Tue, 2011-06-07 at 02:26 -0600, Michael M Slusarz wrote: +> +>> (I adapted/ripped off Timo's LGPL code for the actual subject parsing +>> code itself, so I guess you probably shouldn't look at that if you are +>> looking to keep your code ASL2-compatible). +> +> I never really thought of imaptest's license. But if it helps anyone, I +> changed it now to MIT: http://hg.dovecot.org/imaptest/rev/c2d680c3f0ac +> +> Although it might as well be public domain. I don't really care. +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22772.mbox:2,S new file mode 100644 index 00000000..9a9bf664 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22772.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu May 19 01:27:30 2011 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110518100807.29d4b72c@arbre.eng.oslo.osa> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + <20110518100807.29d4b72c@arbre.eng.oslo.osa> +Message-ID: <4DD4D472.2090307@gulbrandsen.priv.no> + +On 05/18/2011 10:08 AM, Bron Gondwana wrote: +> Lack of backwards compatibility kills this one out the gate. You can't +> break existing clients and servers. + +It doesn't have to. ENABLE exists for things like this. + +That said, I like X-GM-LABELS more. A new namespace for user-originated +names. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22796.mbox:2,S new file mode 100644 index 00000000..4f3da44b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22796.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 18:18:58 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAA79EE.20003@aol.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAA79EE.20003@aol.com> +Message-ID: + +On Mon, 4 Oct 2010, John Snow wrote: +>> That assumes that the IMAP server notifies instantly, instead of polling +>> internally at a fixed interval. This, in turn, assumes some form of +>> message passing between the MDA and the IMAP server. +> That's true. I took that as am implied requirement for implementing IDLE. + +There's no enforcement of such a requirement. If IDLE is simply a +checklist requirement (which it usually is) then the simplest way to get +it checked is via an internal poll. + +After all, who's gonna know? + +> We live in a world full of impatient people. + +How will they know? This is a day and age when the vast majority of users +don't even have access to Received headers, much less can interpret them. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22807.mbox:2,S new file mode 100644 index 00000000..76b016a6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22807.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 11 05:17:48 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <23852.1276246771.199346@puncture> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> +Message-ID: <4C12296C.6030903@gulbrandsen.priv.no> + +On 06/11/2010 02:09 PM, Timo Sirainen wrote: +> People (webmail developers mainly) still once in a while ask me to implement MOVE, but I think it's mainly about convenience to them. + +So they don't have to test the result of COPY. Makes sense. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22810.mbox:2,S new file mode 100644 index 00000000..ee45c710 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22810.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 19 12:47:04 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Namespace questions +In-Reply-To: <201005191905.MAA27988@Panda.COM> +References: <201005191535.o4JFZP5Q013449@mxout14.cac.washington.edu> + + <201005191905.MAA27988@Panda.COM> +Message-ID: + +On Wed, 19 May 2010, Pete Maclean wrote: +> Now I have +> the idea that a client can discover them only by user configuration +> or via the NAMESPACE command. Is this correct? + +Correct. Which means that you need to be careful what you choose to put +into namespaces; since as Philip mentioned some clients aren't able to +access them at all. + +The fact that namespaces can be used for certain things (such as other +user mailboxes or public mailboxes) does not mean that they MUST be used +for those purposes. + +I urge you to be very cautious about deploying a kludge, such as Philip +suggested (make * tranverse namespaces), in the name of making things +better for one client. Such kludges end up biting you with other clients, +which leads to the situation of the compliant client being the bad guy +and/or a kludge tower. + +It's much better to rethink the default hierarchy (such as I did with the +chimera in my new server). I haven't quite reached that point yet, but +I'm rapidly coming to believe that namespaces should simply be abolished +in favor of a single One True Hierarchy that all servers much follow. The +slow agonizing demise of netnews just makes it easier by getting rid of +the big reason why namespaces came about to begin with. + +With a One True Hierarchy, you wouldn't need a namespace to discover other +users or public, since those would all be static definitions. + +> Are you saying that the default namespace should be listed first +> within the class of personal namespaces? That makes sense but I can +> find nothing in RFC 2342 that mentions it. + +Yes. That's a bit of folklore that ought to go in to any update to RFC +2342. + +Normally, there should be only one personal namespace; and I think that is +what RFC 2342 intended. I broke that at once. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22813.mbox:2,S new file mode 100644 index 00000000..fda09e2f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22813.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dot at dotat.at Mon Jan 18 09:17:02 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <01NILLMPPQHY004042@mauve.mrochek.com> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + + <01NILLMPPQHY004042@mauve.mrochek.com> +Message-ID: + +On Mon, 18 Jan 2010, Ned Freed wrote: +> +> Is smtps as widely deployed as pops or imaps? If it is then yes, it should be +> in there. But if it isn't - and my experience has been that it isn't - then +> there's no need. + +Any sites that want to support secure message submission for versions of +Outlook older than the 2007 have to support smtps. Older Outlook will only +do SMTP+STARTTLS on port 25, and will only do smtps on other ports. +Outlook Express / Windows Live Mail / etc. has the same problem though I +don't know which version fixed it. + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +GERMAN BIGHT HUMBER: SOUTHWEST 5 TO 7. MODERATE OR ROUGH. SQUALLY SHOWERS. +MODERATE OR GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22817.mbox:2,S new file mode 100644 index 00000000..6b98ab57 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22817.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From mrc+uw at Panda.COM Wed Dec 30 00:05:37 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + +Message-ID: + +On Tue, 29 Dec 2009, Brian Hayden wrote: +> Sorry if I was unclear. As noted I wasn't talking about the creation action, +> but the concept of \NoSelect itself. + +A \NoSelect object is a directory. + +Select is the operation to open a mailbox. + +> A directory in Windows, OS X, or most of the Linux desktop environments (for +> example) is "selectable", both conceptually and in IMAP terms--because it is +> "dual-use". + +Nonsense. I can not execute a directory on Windows, OS X, or Linux. Nor +can I edit it in my editor. The only thing that can be done in a +directory is access its children. + +A mailbox is not a directory. It is an object containing messages, just +like a text file is an object containing paragraphs of text. + +A text file doesn't contain other files, nor does it contain executable +programs. It is single use, just as a directory is. + +A message is not an object in the named hierarchy tree. It is a piece of +an object in the named hierarchy tree. The fact that some clients pretend +that a message is something else doesn't change what it actually is. + +Only IMAP has these bizarre "dual use" objects, and only because some +people insisted upon it and I failed to say "no" when I should have. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22820.mbox:2,S new file mode 100644 index 00000000..dc17820b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22820.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From tss at iki.fi Wed Nov 18 11:20:57 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: +References: + <1258570418.3022.660.camel@timo-desktop> + +Message-ID: <1258572057.3022.680.camel@timo-desktop> + +On Wed, 2009-11-18 at 11:00 -0800, Mark Crispin wrote: +> On Wed, 18 Nov 2009, Timo Sirainen wrote: +> >> For example, given a server which exports +> >> (("" "/")) (("/Users/" "/")) (("/Public" "/")) +> >> what servers permit a client to do: +> >> tag LIST "" /Users/* +> > Dovecot, if configured to do so. And of course not all users, only those +> > that have mailboxes with +l permission to LISTing user. +> +> Does Dovecot configure this by default? Why or why not? +> +> Does Dovecot scan the entire private user tree looking for +l mailboxes, +> or does it have a reverse cache of accessible names? Or does it have a +> global ACL database? + +Dovecot uses a database which gets updated when SETACL command is used. +When doing a LIST, it looks up from the database what users probably +have +l mailboxes and then actually verifies that they do before +returning them in LIST. + +I guess you could call the database a reverse cache, although there's +currently no way to easily rebuild it so it's less of a cache.. So for +example if a user1 had set +l for foogroup and baruser, and user2 had +set +l for baruser, the database would have entries like: + +group=foogroup -> user1 +user=baruser -> user1 +user=baruser -> user2 + +This isn't done by default, because Dovecot doesn't really have any +default configuration. It wouldn't really know how to access other +users' mailboxes. It wouldn't know where to store the database. Besides, +the database can be configured in multiple different ways. Admin could +configure a global database file, a per-domain database file, or +everything could be stored in SQL. + +If Dovecot had a default configuration, I'd enable this by default. +"anyone" and "anonymous" identifiers are special cases though, SETACLs +to those are disallowed by default to prevent spamming. + +> >> To follow-up on my previous question, what clients besides Thunderbird +> >> attempt to do such a command? +> > If that didn't work, I think shared namespaces would be almost unusable +> > in most IMAP clients. Clients don't support accessing mailboxes that +> > they can't LIST (or LSUB, but subscribing would again require LIST to +> > show them). +> +> Please note that I am talking about access to other users' mailboxes and +> not to shared mailboxes. Of course, +> tag LIST "" /Public/* +> should work in the above example. +> +> What I am trying to determine is the use case for +> tag LIST "" /Users/* + +I don't think any client treats those two cases differently. They just +want LIST to see everything. + +> Is it really true that clients must be able to download a complete tree of +> all possible names in order to be able to access a name? + +Do you mean * or also %? I don't know what clients use * vs. %, but I +don't see why * would be any more difficult to implement than %. In any +case I'm not aware of any clients that can access (other users') +mailboxes that can't be reached by LISTing from root level. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22832.mbox:2,S new file mode 100644 index 00000000..54bab239 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22832.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From imap at maclean.com Sun Jul 12 13:46:18 2009 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] copy to same mailbox +In-Reply-To: +References: +Message-ID: + +At 09:47 PM 7/11/2009, Mark Crispin wrote: +>I just discovered that the GroupWise IMAP server does not permit the +>target of a COPY command to be the selected mailbox. GroupWise has +>other issues, but apparently nobody has ever complained about this. +> +>Do other servers prohibit COPY to the selected mailbox? +> +>-- Mark -- + +MISE does not support this and nobody has ever mentioned it. I +decided to make the limitation because I imagined there would be +little demand for it and I wanted to avoid the extra work +involved. I just looked at the relevant code and noticed I have a +"maybe one day" comment there! + +Pete Maclean + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22835.mbox:2,S new file mode 100644 index 00000000..8e4e4ee0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22835.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Tue Jun 16 13:12:43 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: +References: <1245181628.21624.808.camel@timo-desktop> + +Message-ID: <1245183163.21624.814.camel@timo-desktop> + +On Tue, 2009-06-16 at 13:00 -0700, Mark Crispin wrote: +> On Tue, 16 Jun 2009, Timo Sirainen wrote: +> > Has anyone tested how well clients support catching capabilities after +> > login? I was planning on having Dovecot v2.0 send only very minimal +> > capabilities before login. +> +> I've done this for a long time with implicit capabilities. + +You mean with those [CAPABILITY ..] response codes? But do you also +return reduced capabilities when replying to a CAPABILITY command before +login? That's the main change I'm hoping to make, because in some setups +the list of capabilities isn't known before knowing the username. + +> > Note that in b) case it's sending untagged CAPABILITY reply. This seems +> > to help a lot of clients. +> +> I don't know if you care, but that would break an IMAP2 client. +> Hopefully, nobody is still using Pine 3.xx ... + +I'd rather break Pine 3.xx than Thunderbird, Outlook and OE. :) + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22838.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22838.mbox:2,S new file mode 100644 index 00000000..e2d54b5c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22838.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From barryleiba at computer.org Sat Apr 4 07:46:47 2009 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Future INTERNALDATE +In-Reply-To: +References: <1238715476.12172.239.camel@timo-desktop> + +Message-ID: <6c9fcc2a0904040746i7830f6fdy10c0d2bf95deb244@mail.gmail.com> + +Perhaps the user/client intends to post this message as one that stays +at the top of a date-sorted list until after a future event takes +place. We do that sort of thing all the time. + +That said, I'd probably rather use RFC822.date for that, than INTERNALDATE. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22841.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22841.mbox:2,S new file mode 100644 index 00000000..bdb5f7d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22841.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From markrcrispin at panda.com Wed Mar 4 13:22:30 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Expunges and copying +In-Reply-To: <1236197047.8159.163.camel@timo-desktop> +References: <1236195778.8159.156.camel@timo-desktop> + + <1236197047.8159.163.camel@timo-desktop> +Message-ID: + +On Wed, 4 Mar 2009, Timo Sirainen wrote: +> Previously we've been talking mainly about FETCH, not COPY. I think +> there's some kind of a difference between them. + +I don't. + +> 1 COPY 1 elsewhere +> * 1 EXPUNGE +> 1 OK [COPYUID 1234567890 1 43] +> So the COPYUID refers to UID 1 which was already expunged. I suppose +> that's not necessarily a problem, but perhaps it could confuse/break +> clients that dropped all knowledge of the UID 1 message when receiving +> EXPUNGE. + +Interesting. This is a case where a client needs to disregard unknown +UIDs just as a server must. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22844.mbox:2,S new file mode 100644 index 00000000..2454d1ca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22844.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From tss at iki.fi Tue Feb 17 09:52:03 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Rfc-3501 LIST/LSUB +In-Reply-To: <499A81EF.6060901@1und1.de> +References: <499A81EF.6060901@1und1.de> +Message-ID: <1234893123.29240.1359.camel@timo-desktop> + +On Tue, 2009-02-17 at 10:22 +0100, Thomas Dressler wrote: +> C: b LSUB "" "" +> C: b OK Completed (0.000 secs 1 calls) +> is it correct? + +The only server I know of that returns something else to this command is +Courier (which does lots of other things wrong too). + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22847.mbox:2,S new file mode 100644 index 00000000..a54f7ca9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22847.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From bill.shannon at sun.com Thu Jan 29 10:56:07 2009 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] SEARCH OR question +Message-ID: <4981FBC7.9040509@sun.com> + +What's the correct syntax to do a SEARCH for an OR of three terms? +I've been using: + +SEARCH OR OR HEADER Message-ID id1 HEADER Message-ID id2 HEADER Message-ID id3 + +RFC 3501 says: + + When multiple keys are specified, the result is the intersection + (AND function) of all the messages that match those keys. For + example, the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers + to all deleted messages from Smith that were placed in the mailbox + since February 1, 1994. A search key can also be a parenthesized + list of one or more search keys (e.g., for use with the OR and NOT + keys). + +How would this work with OR? + +SEARCH OR (HEADER Message-ID id1 HEADER Message-ID id2 HEADER Message-ID id3) + +That doesn't match the BNF for OR. + +SEARCH OR HEADER Message-ID id1 (HEADER Message-ID id2 HEADER Message-ID id3) + +Are the multiple terms inside the parens combined using OR because they're +part of an OR key? Or are they combined with AND because they're multiple +keys (first rule above)? I assume the latter because there's no AND key +and otherwise there would be no way to express that case. + + +Assuming the first syntax at the top is correct, it appears that Exchange +2003 fails with more than two terms in OR. Anyone know if that's a known +bug? I can't find anything in the Microsoft knowledge base. + +(A JavaMail customer reported this problem, I don't use Exchange myself.) + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095083.22850.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095083.22850.mbox:2,S new file mode 100644 index 00000000..107826f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095083.22850.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From mail at sabahattin-gucukoglu.com Thu Nov 6 09:00:03 2008 +To: imap-protocol@u.washington.edu +From: Sabahattin Gucukoglu +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Untagged Status Notifications Async or Not? +Message-ID: <49132293.10733.4B89FB7@mail.sabahattin-gucukoglu.com> + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +Hi, + +I'm afraid I'm having problems with RFC 3501. The problem is that, while +it clearly indicates that all clients absolutely MUST interpret untagged +responses sent at any time, it seems (in a rather roundabout fashion) to +imply that it is somehow proper for SELECTed mailboxes only ever to inform +clients when responding to client commands, like NOOP. There's never a +mention of why this is so, nor any permission explicitly given (as it +seems to me) to do the right thing and just blast untagged notifications +at the client as soon as we have them. + +Apart from when dealing with client bugs, I'd like to see an IMAP server I +use push notifications at once, to have clients listen and act on them +accordingly without requiring a minimum polling period during which they +assume complete silence for fear of soliciting any response, and all +without needing IDLE which we will use when we clearly need to (I.E., +we've quite finished interfacing with the user and are now doing nothing +but wait for new mail). + +Can I be certain that it is absolutely okay to send untagged responses +whenever we feel like it? I'd love to see this written about somewhere in +a net note so the world will do the right thing. As things are, a few +clients seem happy to reproduce the wait-NOOP-read-wait-NOOP cycle, which +is totally uncool. + +Cheers, +Sabahattin + +- -- +Sabahattin Gucukoglu sabahattingucukoglucom> +Address harvesters, snag this: feedme@yamta.org +Phone: +44 20 88008915 +Mobile: +44 7986 053399 +http://sabahattin-gucukoglu.com/ + + +-----BEGIN PGP SIGNATURE----- +Version: PGP 8 +Comment: QDPGP - http://community.wow.net/grt/qdpgp.html + +iQA/AwUBSRMilCNEOmEWtR2TEQKPTACgnYffKjrq8TvFQHJ8KB46eaKhc90AoOB6 +7fpbqRwLrEO+4mIooOwoqJiZ +=5Gr1 +-----END PGP SIGNATURE----- + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22595.mbox:2,S new file mode 100644 index 00000000..985c9703 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22595.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From gilles.lamiral at laposte.net Tue Mar 24 16:05:10 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <5510BC3A.9020702@verizon.net> +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> +Message-ID: <5511EDA6.7060107@laposte.net> + +Dear Joshua, + +> I don't know what options you're talking about, but it's worth pointing out the Thunderbird autoconfiguration project +> (). + +I'll have a look at Thunderbird/Autoconfiguration, +even if I go crazy when I configure a new account with Thunderbird, +it is always irrelevant for what I do, the manual way is first hidden, +maybe presented at the end or after a failure, a headache each time. + +I won't start searching the imap hostname from the user login parameter. +I'll start by guessing server software name from the imap responses, +not from a third party scan, and from hard coded rules if possible. + +> If IMAP ID is supported, that is a useful command to use. + +A server that replied well to ID would have already announced itself +in the first banner. So, for my purpose, ID looks useful when useless. + +But thanks to mention ID, I'll add it in imapsync, this way Gmail +and Outlook.com will be able to know easily how many transfers are made +by imapsync each day (not difficult without ID anyway). + + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22701.mbox:2,S new file mode 100644 index 00000000..dace77fa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22701.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Tue Nov 27 16:53:36 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <1354010571.12520.140661158658949.22643EF6@webmail.messagingengine.com> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + + <20121116143137.Horde.7Kb3aEW5DhM6CnuA2hAx4Q8@bigworm.curecanti.org> + + <20121121155417.Horde.ZeW7JqTPNxTAI-hTtrAT-Q9@bigworm.curecanti.org> + <68035860-387d-43a9-8bb7-00744a7868b9@flaska.net> + <20121126173224.Horde.BbqbGly8D0JG4aqG7fxoMw1@bigworm.curecanti.org> + + <20121126184814.Horde.pVkfF8iCAZNxKh-rRJmQ2g1@bigworm.curecanti.org> + <1354010571.12520.140661158658949.22643EF6@webmail.messagingengine.com> +Message-ID: + +On 27.11.2012, at 12.02, Bron Gondwana wrote: + +> On Tue, Nov 27, 2012, at 02:48 AM, Michael M Slusarz wrote: +>> Quoting Brandon Long : +>> Not sure how you are supposed to do this on IMAP servers that don't +>> support ID. Or don't send version information: Dovecot, for one, +>> doesn't by default. Or for installations that use a version of your +>> software released before a particular IMAP server even breaks (full +>> disclosure: the recent Cyrus break is weird because it sent a BYE and +>> terminated instead of a failed command, so that wasn't previously +>> scanned for so we weren't catching this until recently. so we're not +>> perfect either.). +> +> I'm kinda embarassed about this one! I forgot to put the GUID calculation +> call in the APPEND BINARY path, because nothing ever tested it and it +> appeared nobody was using it, because we didn't have a single complaint or +> failure with it until just a few weeks ago. + +BTW. I've added tests for this and several other new extensions to imaptest. I haven't tried running them against anything other than Dovecot so far. The biggest missing test is NOTIFY. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22743.mbox:2,S new file mode 100644 index 00000000..9df745f8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22743.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From dave at cridland.net Wed Mar 21 22:19:48 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <4F6A5811.4070503@gulbrandsen.priv.no> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + + <20897.1332365878.053493@puncture> + <4F6A5811.4070503@gulbrandsen.priv.no> +Message-ID: <20897.1332393588.939634@puncture> + +On Wed Mar 21 22:37:05 2012, Arnt Gulbrandsen wrote: +> Hey. If it's OK for him that new messages are visible only when the +> client next connects/selects/noops, then so it is. That may not be a +> tradeoff many people would make, but if it's an informed choice... + +This isn't a case of limiting functionality; it's a case of +unexpected and broken behaviour which will show as screwy semantics +to the end user. + +If there was an IMAP based archive of some mailing list, it'd be +entirely possible people might switch to reading it solely through +the archive, in which case they'd be reliant on proper semantics - so +it's not as if this case is somehow special. + +If this server is simply designed as an amusing novelty, then I'd +agree that it doesn't really matter, but if it's intended to have +actual usage, it needs fixing. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22756.mbox:2,S new file mode 100644 index 00000000..4f05868a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22756.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From brong at fastmail.fm Sun Nov 13 12:14:26 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> +Message-ID: <1321215266.30428.140660998383617@webmail.messagingengine.com> + +On Sunday, November 13, 2011 9:00 PM, "Petite Abeille" wrote: +> Hello, +> +> Given a fetch command for one message, with two attributes: +> +> ABC FETCH 1 (FLAGS RFC822.SIZE) +> +> There is usually one response per message, including both attributes: +> +> * 1 FETCH (FLAGS (\Seen) RFC822.SIZE 44827) +> +> Would it be compliant to return instead two responses, one for each attribute? +> +> * 1 FETCH (FLAGS (\Seen)) +> * 1 FETCH (RFC822.SIZE 44827) + +Compliant or not, I can bet you it will break a lot of clients. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22759.mbox:2,S new file mode 100644 index 00000000..21f4a136 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22759.mbox:2,S @@ -0,0 +1,109 @@ +MBOX-Line: From blong at google.com Mon Oct 31 15:40:01 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: <20111023080449.GA10954@brong.net> +References: + <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi> + <20111022200153.GA3907@brong.net> + + <20111023080449.GA10954@brong.net> +Message-ID: + +On Sun, Oct 23, 2011 at 1:04 AM, Bron Gondwana wrote: +> On Sat, Oct 22, 2011 at 01:56:55PM -0700, Brandon Long wrote: +>> I think we have only one deliberate break from the spec, and that's that we +>> don't do substring searches. +> +> I believe your envelopes are bogus too, and we had another issue which I +> should see if I can dig up... + +Not bogus, but yes, there is a specific combination where we get it +wrong. Thought it had been fixed, but I see the bug is still open. + +> Oh, yeah: +> +> ====================== +> The bug is with gmail. +> +> http://tools.ietf.org/html/rfc3501#section-4.3.1 +> +> ?8-bit textual and binary mail is supported through the use of a +> ?[MIME-IMB] content transfer encoding. ?IMAP4rev1 implementations MAY +> ?transmit 8-bit or multi-octet characters in literals, but SHOULD do +> ?so only when the [CHARSET] is identified. +> +> Basically, they can transfer that as utf-8, but only if they send it as +> a literal. ?Just quoting the string is bogus. +> ====================== + +I can believe this bug exists. It would be nice if we didn't have to +do that (is there an extension for that?), but if you can give me +specfics, I can file the bug. + +We don't live in a 7bit world, and haven't for a very long time. +Having to scan outbound text for whether the 8bit is set will just be +more lovely CPU down the drain. + +> You send 8bit stuff inside quotes. + +And probably in error messages, too. Not even sure what to do about that. + +>> I know there are other issues, like we sometimes don't get the size quite +>> right (comes of storing the message with just LF line endings and having to +>> convert to CRLF), but mostly we tend to bend the spec but not break them... +>> matching the IMAP mailbox model with the gmail one is tough. +> +> Yeah, that's a bit messy. ?Any particular reason, other than saving a +> few bytes? + +I'm sure at the beginning it was "why do we need these anyways, it'll +save a few bytes". Unfortunately, once N because big enough, adding +1/65th to N is also very big. Though, with compression, probably not +appreciable so. + +The more amazing thing is how far along we went in coding before we +actually had issues with it. Almost no clients actually cared that we +only sent LF, except Outlook would eat characters when fixing +soft-line breaks for quoted-printable messages since it just blindly +assumed CRLF. + +>> I tried running Timo's tests against gmail, but its pretty hard to debug +>> failures, and the set of tests isn't quite wide or separable. ?Its somewhere +>> on the todo list to work that again. +> +> Improving the tests would be nice too. ?We have our own thing, cassandane, +> which does a whole test harness for running multiple Cyrus instances and +> testing things like replication and our "murder" clustering thing too. +> +>> I would say that our biggest issue with IMAP is that the amount of resources +>> required for some of the commands is really high, which is hard to optimize +>> for or to fairly share resources. +> +> body search is the real killer for us, everything else is pretty lightweight. + +Clients can ask for any random piece of information about every +message in the store, and our stores can get very large. One of the +syncing tools (offlineimap, iirc) randomly also asked for INTERNALDATE +on every sync request (ie, UID FLAGS) even though it 1) never changes +(by spec) and 2) they didn't actually use it. Doing that on a 1M +message store every 5-10m when that data isn't in the "small" data, +but required us to fetch the full meta data for every message... +expensive. The smarter model is the adaptive meta-data model, but +re-generating and re-storing the metadata for 1M messages also isn't +cheap. + +The real peach though is probably MULTIAPPEND which wants us to allow +a virtual infinite amount of data upload in a single transaction. +Even if we figured out a way to handle that given our constraints, we +wouldn't want to do it since the worst possible outcome there is to +throw the entire thing away on failure. Just spend a couple hours +uploading it again! + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22768.mbox:2,S new file mode 100644 index 00000000..8c3294f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22768.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From norman.maurer at googlemail.com Tue Jun 7 05:55:27 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> +Message-ID: + +Hi Michael, + +can you explain me why this should be right: + +> And this subject: +> +> "Re: re:re: fwd:[fwd: \t Test] (fwd) (fwd)(fwd) " +> +> Should resolve into the string: +> +> "\t Test" + +I thought tabs get replaced by space ? + +Bye, +Norman + + +2011/6/7 Michael M Slusarz : +> Quoting Norman Maurer : +> +>> Hi there, +>> +>> I'm currently working on getting SORT to work with my IMAP-Server / +>> Mailbox-Store. I have read about the Base-Subject extraction and I'm +>> almost sure I have implement it in the right manner. But I would be +>> interested in some "Test Subjects" to write some Unit-Tests. +>> +>> Does anyone have a list of Subjects and the related Base-Subjects +>> which I could use for my Unit-Tests (just to be sure I did it he right +>> way) ? +> +> We've got a basic test suite with a few examples here: +> +> http://git.horde.org/co.php/framework/Imap_Client/test/Horde/Imap/Client/SubjectParseTest.php?rt=horde-git +> +> michael +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22772.mbox:2,S new file mode 100644 index 00000000..941a1404 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22772.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From brong at fastmail.fm Thu May 19 01:44:29 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <4DD4D472.2090307@gulbrandsen.priv.no> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org><20110518100807.29d4b72c@arbre.eng.oslo.osa> + <4DD4D472.2090307@gulbrandsen.priv.no> +Message-ID: <1305794669.24152.1453625537@webmail.messagingengine.com> + + + +On Thu, 19 May 2011 10:27 +0200, "Arnt Gulbrandsen" wrote: +> On 05/18/2011 10:08 AM, Bron Gondwana wrote: +> > Lack of backwards compatibility kills this one out the gate. You can't +> > break existing clients and servers. +> +> It doesn't have to. ENABLE exists for things like this. + +Yeah, of course. But you need to suppress them unless enabled or something... and deal with issues ?ike what "store flags (x)" means if not enabled. Does it clear the flags it can't see? + +> That said, I like X-GM-LABELS more. A new namespace for user-originated +> names + +Agree. It makes more sense than extending flags. + +Bron +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22796.mbox:2,S new file mode 100644 index 00000000..94a95d2c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22796.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Mon Oct 4 18:43:21 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAA79EE.20003@aol.com> + +Message-ID: <9687DB24-F5DF-436E-8F5E-0454C23BEF3B@iki.fi> + +On 5.10.2010, at 2.18, Mark Crispin wrote: + +> There's no enforcement of such a requirement. If IDLE is simply a +> checklist requirement (which it usually is) then the simplest way to get +> it checked is via an internal poll. +> +> After all, who's gonna know? + +I often force a refresh by marking some existing message unseen and then back again to seen while waiting for a message that I know is going to arrive, clicking this key combination often enough until it I see the mail. So it is possible to know, although that assumes the server notices new messages during flag changes. + +(I realized only during this thread that this is actually a server problem while using Mail.app, because I'm using Solaris that doesn't have Linux-like inotify. I guess I should either increase my polling timeout to 1 second or implement some IPC of my own so at least I'd get rid of this habit half the time I read mails.) diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22807.mbox:2,S new file mode 100644 index 00000000..d036b396 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22807.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 05:26:03 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276255927.615799@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111212.57771.witold.krecicki@firma.o2.pl> + <29965.1276255927.615799@puncture> +Message-ID: <201006111426.03636.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 13:32:07 Dave Cridland wrote: +> On Fri Jun 11 11:12:57 2010, Witold Kr?cicki wrote: +> > On Friday 11 of June 2010 11:57:03 Dave Cridland wrote: +> > assuming that underlying FS supports hard linking and that the +> > messages are +> > immutable (remember that not only IMAP accesses messages). +> +> Messages in an IMAP message store *are* immutable, no matter what +> else might access the messages. And really, don't Windows, UNIX, and +> Mac filesystems support hardlinking now? +OK, I'll rephrase - not all mail stores are filesystem-backed. + +> > The question is - if the user uses st/cp/ex it's as irrevocable as +> > move, so +> > why bother? +> +> Because in general, it's better to work *with* IMAP, rather than +> *against* it, if you're designing extensions, and indeed mail stores. +And what here is against IMAP? The fact that this operation is (in a way) +irreversible? Just like delete/expunge which exists in IMAP? + +> > In cases when you want to move 'old' (older than 1 month) mail - +> > it doesn't +> > work. And that is a common operation. +> +> Is it that slow? Really? +Yes it is. Try moving 10k messages on cyrus/courier to trash. + +> FWIW, the majority of move-like behaviour I've seen is to a +> trash-can, and that's something I'd much rather not encourage. +Well you don't encourage this, but all the clients I know do it by default. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22810.mbox:2,S new file mode 100644 index 00000000..cdb5a36a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22810.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From mrc+imap at panda.com Wed May 19 13:18:07 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Namespace questions +In-Reply-To: <201005192009.NAA28384@Panda.COM> +References: <201005191535.o4JFZP5Q013449@mxout14.cac.washington.edu> + + + <201005192009.NAA28384@Panda.COM> +Message-ID: + +On Wed, 19 May 2010, Pete Maclean wrote: +> The one end-user product I have that incorporates the server is used +> primarily with clients on mobile devices. In this case I am inclined +> to not cross namespaces primarily just to limit the amount of data +> sent in LIST responses. + +It may be more work than you want to undertake right now, but it very much +sounds to me that a chimera type solution, such as what I did in my new +server, would work best for your end users. + +It's more what the end users will want anyway. Namespaces were designed +to solve a specific problem, not to force its use. It's unfortunate that +it was overloaded to incorporate "here's how to find other users" and +"here's how to find public mailboxes". + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22813.mbox:2,S new file mode 100644 index 00000000..5fe587b6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22813.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jan 18 09:17:16 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <01NILLMPPQHY004042@mauve.mrochek.com> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + + <01NILLMPPQHY004042@mauve.mrochek.com> +Message-ID: + +Ned Freed writes: +> Is smtps as widely deployed as pops or imaps? If it is then yes, it +> should be in there. But if it isn't - and my experience has been that +> it isn't - then there's no need. + +Outlook likes to use smtps. To me that's wide enough deployment. (Or was +it OE? Doesn't matter, both are widely used.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22817.mbox:2,S new file mode 100644 index 00000000..1b8b2ad8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22817.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Dec 30 03:57:11 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + +Message-ID: <+U5lLYSlZBiUrQ3AEjYRNw.md5@[192.168.1.102]> + +Brian Hayden writes: +> As noted I wasn't talking about the creation action, but the concept +> of \NoSelect itself. I can't think of any object in any interface +> that the average person uses which has an analogue + +GUI toolkits do support it. In the one I wrote, something like + i->setSelectable( false ); + i->setExpandable( true ); +but it's not used much, because generally application developers want to +find interfaces that cause less user grief (and fewer support calls). + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22820.mbox:2,S new file mode 100644 index 00000000..b2b2559e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22820.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From dkarp at zimbra.com Wed Nov 18 11:29:39 2009 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: <1258572057.3022.680.camel@timo-desktop> +Message-ID: <320922078.787.1258572579258.JavaMail.root@dogfood.zimbra.com> + +> > Is it really true that clients must be able to download a complete +> > tree of all possible names in order to be able to access a name? +> +> In any case I'm not aware of any clients that can access (other +> users') mailboxes that can't be reached by LISTing from root level. + +I believe that Thunderbird allows this as well. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22832.mbox:2,S new file mode 100644 index 00000000..d4220b6f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22832.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From janssen at parc.com Sun Jul 12 14:44:05 2009 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] off-topic: stats on mail duplication, + mailing list sizes, etc? +Message-ID: <97903.1247435045@parc.com> + +Folks, + +Please forgive this somewhat off-topic message. I'm looking for more +funding to work on my UpLib IMAP server implementation. UpLib stores +all messages in a DB, and uses tags for folders, thus storing only one +copy of messages that might occur in multiple folders, or are stored by +multiple users. I'm interested in figuring some strawman stats about +email duplication that could be addressed by a site-wide IMAP server. +For example, how many mailing lists an "average" organization has; the +average number of users per mailing list; the average message traffic +(in both messages and bytes) per day, per week, per year. I know that a +number of you have actual experience with this. I'd be grateful for any +pointers. + +Thanks. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22835.mbox:2,S new file mode 100644 index 00000000..87d433cd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22835.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From brendan at kublai.com Tue Jun 16 13:17:20 2009 +To: imap-protocol@u.washington.edu +From: Brendan Cully +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: <1245181628.21624.808.camel@timo-desktop> +References: <1245181628.21624.808.camel@timo-desktop> +Message-ID: <20090616201719.GC90151@zanzibar.kublai.com> + +On Tuesday, 16 June 2009 at 15:47, Timo Sirainen wrote: +> Has anyone tested how well clients support catching capabilities after +> login? I was planning on having Dovecot v2.0 send only very minimal +> capabilities before login. The way it works is: +> +> a) A new enough client that understands [CAPABILITY ..] : +> +> * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. +> 1 login user pass +> 1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH] Logged in +> +> b) Client that doesn't understand [CAPABILITY ..]: +> +> * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. +> 1 capability +> * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN +> 1 OK Capability completed. +> 2 login user pass +> * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH +> 2 OK Logged in +> +> Note that in b) case it's sending untagged CAPABILITY reply. This seems +> to help a lot of clients. +> +> The list of clients I've so far tested are: +> +> - Thunderbird v2.0 works +> - Alpine v2.0 works +> - Apple Mail works +> - Outlook 2003 works (tested by someone else than me) +> - Outlook Express works (tested by someone else than me) +> - Evolution ignores the updated capability. +> +> The above list looks promising enough that I have some hope of being +> able to actually do this. + +Mutt supports this too. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22838.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22838.mbox:2,S new file mode 100644 index 00000000..766d4bfb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22838.mbox:2,S @@ -0,0 +1,9 @@ +MBOX-Line: From noreply at ci.faniq.com Tue Apr 21 06:02:56 2009 +To: imap-protocol@u.washington.edu +From: Mayuresh P +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Mayuresh P has sent you a private message +Message-ID: + +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22841.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22841.mbox:2,S new file mode 100644 index 00000000..6674c094 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22841.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tony at att.com Sat Mar 21 22:20:46 2009 +To: imap-protocol@u.washington.edu +From: Tony Hansen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] YAM (Yet Another Mail) WG Meeting/BOF on Thursday +Message-ID: <49C5CAAE.9000806@att.com> + +The YAM (Yet Another Mail) Working Group is having its first meeting +this Thursday at 3:10pm. + +The first part of the charter is reproduced here. The full charter text +can be found at http://trac.tools.ietf.org/bof/trac/wiki/YamCharter + + Tony Hansen + co-chair + +YAM will focus strictly on advancing email-related specifications for +which the community already has some years of experience with deployment +and interoperability. Its function is not to reopen or reconsider +protocols -- if a specification is found to need significant technical +work, YAM will remove it from the WG's agenda, optionally making a +recommendation to the community about how, or if, it should be processed. + +This charter's scope of work is the set of email-related RFCs that are +currently at Draft Standard. Each document will be examined, along with +its errata, and a recommendation made as to whether it should be +advanced to Full Standard, republished at Draft Standard or Proposed +Standard, or moved to Historic. This working group will not work further +on documents that are to be republished at Draft Standard or Proposed +Standard. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22844.mbox:2,S new file mode 100644 index 00000000..a7ea5f3a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22844.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From markrcrispin at panda.com Tue Feb 17 10:11:30 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Rfc-3501 LIST/LSUB +In-Reply-To: <499A9322.4080400@isode.com> +References: <499A81EF.6060901@1und1.de> <499A9322.4080400@isode.com> +Message-ID: + +On Tue, 17 Feb 2009, Alexey Melnikov wrote: +> My personal opinion is that it makes no sense to call LSUB "" "". + +That is my personal opinion as + +>> i ask because some Clients send us commands like +>> tag lsub "" "" +>> what is the correct response? + +Other than telling the user that his client is defective by design? + +This abuse of LSUB (which really is only useful for maintaining USENET +news subscriptions) all started because of a certain cretin at Netscape +~15 years ago. Microsoft copied the idiocy, and it persists to this day. + +Against stupidity the gods themselves struggle in vain. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22847.mbox:2,S new file mode 100644 index 00000000..d6fdcf46 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22847.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From davidr at imap.cc Thu Jan 29 11:46:13 2009 +To: imap-protocol@u.washington.edu +From: David Rauschenbach +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] SEARCH OR question +In-Reply-To: <4981FBC7.9040509@sun.com> +References: <4981FBC7.9040509@sun.com> +Message-ID: + +The Exchange 2003 IMAP connector's OR handling seems fine. + +> fetch 1:* rfc822.size +> * 1 FETCH (RFC822.SIZE 3940) +> * 2 FETCH (RFC822.SIZE 12133) +> * 3 FETCH (RFC822.SIZE 11243) +> * 4 FETCH (RFC822.SIZE 12210) +> * 5 FETCH (RFC822.SIZE 13601) +> * 6 FETCH (RFC822.SIZE 25480) +> * 7 FETCH (RFC822.SIZE 4631) +> * 8 FETCH (RFC822.SIZE 5712) +> * 9 FETCH (RFC822.SIZE 22364) +> * 10 FETCH (RFC822.SIZE 8505) +> * 11 FETCH (RFC822.SIZE 264403) +> * 12 FETCH (RFC822.SIZE 23832) +> * 13 FETCH (RFC822.SIZE 23422) +> * 14 FETCH (RFC822.SIZE 29670) +> * 15 FETCH (RFC822.SIZE 27351) +> c OK FETCH completed. +> d search smaller 4000 +> * SEARCH 1 +> d OK SEARCH completed. +> e search or smaller 4000 smaller 5000 +> * SEARCH 1 7 +> e OK SEARCH completed. +> f search or or smaller 4000 smaller 5000 smaller 9000 +> * SEARCH 1 7 8 10 +> f OK SEARCH completed. + + +Same test worked fine on Cyrus. I am typing in 3 OR terms according to +the ABNF. + +David +Synchronica Software + + + +On Jan 29, 2009, at 10:56 AM, Bill Shannon wrote: + +> What's the correct syntax to do a SEARCH for an OR of three terms? +> I've been using: +> +> SEARCH OR OR HEADER Message-ID id1 HEADER Message-ID id2 HEADER +> Message-ID id3 +> +> RFC 3501 says: +> +> When multiple keys are specified, the result is the intersection +> (AND function) of all the messages that match those keys. For +> example, the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 +> refers +> to all deleted messages from Smith that were placed in the +> mailbox +> since February 1, 1994. A search key can also be a parenthesized +> list of one or more search keys (e.g., for use with the OR and +> NOT +> keys). +> +> How would this work with OR? +> +> SEARCH OR (HEADER Message-ID id1 HEADER Message-ID id2 HEADER +> Message-ID id3) +> +> That doesn't match the BNF for OR. +> +> SEARCH OR HEADER Message-ID id1 (HEADER Message-ID id2 HEADER +> Message-ID id3) +> +> Are the multiple terms inside the parens combined using OR because +> they're +> part of an OR key? Or are they combined with AND because they're +> multiple +> keys (first rule above)? I assume the latter because there's no AND +> key +> and otherwise there would be no way to express that case. +> +> +> Assuming the first syntax at the top is correct, it appears that +> Exchange +> 2003 fails with more than two terms in OR. Anyone know if that's a +> known +> bug? I can't find anything in the Microsoft knowledge base. +> +> (A JavaMail customer reported this problem, I don't use Exchange +> myself.) +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22850.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22850.mbox:2,S new file mode 100644 index 00000000..418cacb8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22850.mbox:2,S @@ -0,0 +1,79 @@ +MBOX-Line: From davidr at imap.cc Thu Nov 6 09:10:29 2008 +To: imap-protocol@u.washington.edu +From: David Rauschenbach +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Untagged Status Notifications Async or Not? +References: <49132293.10733.4B89FB7@mail.sabahattin-gucukoglu.com> +Message-ID: <001c01c94032$923af690$0401a8c0@SYNCHRONICA.COM> + +You could send an unsolicited response whenever you want, but if the client +is not in a blocking call in order to receive what you send as soon as you +send it, you might block for a very long time, in your send attempt. + +Most clients are coded to read a response only after sending a request. So, +whatever you try and send from the server would not go anywhere. Therefore, +you're better off queueing your events, and flushing the queue along with +the response to the next command. + +David +----- Original Message ----- +From: "Sabahattin Gucukoglu" +To: +Sent: Thursday, November 06, 2008 10:00 AM +Subject: [Imap-protocol] Untagged Status Notifications Async or Not? + + +> -----BEGIN PGP SIGNED MESSAGE----- +> Hash: SHA1 +> +> Hi, +> +> I'm afraid I'm having problems with RFC 3501. The problem is that, while +> it clearly indicates that all clients absolutely MUST interpret untagged +> responses sent at any time, it seems (in a rather roundabout fashion) to +> imply that it is somehow proper for SELECTed mailboxes only ever to inform +> clients when responding to client commands, like NOOP. There's never a +> mention of why this is so, nor any permission explicitly given (as it +> seems to me) to do the right thing and just blast untagged notifications +> at the client as soon as we have them. +> +> Apart from when dealing with client bugs, I'd like to see an IMAP server I +> use push notifications at once, to have clients listen and act on them +> accordingly without requiring a minimum polling period during which they +> assume complete silence for fear of soliciting any response, and all +> without needing IDLE which we will use when we clearly need to (I.E., +> we've quite finished interfacing with the user and are now doing nothing +> but wait for new mail). +> +> Can I be certain that it is absolutely okay to send untagged responses +> whenever we feel like it? I'd love to see this written about somewhere in +> a net note so the world will do the right thing. As things are, a few +> clients seem happy to reproduce the wait-NOOP-read-wait-NOOP cycle, which +> is totally uncool. +> +> Cheers, +> Sabahattin +> +> - -- +> Sabahattin Gucukoglu sabahattingucukoglucom> +> Address harvesters, snag this: feedme@yamta.org +> Phone: +44 20 88008915 +> Mobile: +44 7986 053399 +> http://sabahattin-gucukoglu.com/ +> +> +> -----BEGIN PGP SIGNATURE----- +> Version: PGP 8 +> Comment: QDPGP - http://community.wow.net/grt/qdpgp.html +> +> iQA/AwUBSRMilCNEOmEWtR2TEQKPTACgnYffKjrq8TvFQHJ8KB46eaKhc90AoOB6 +> 7fpbqRwLrEO+4mIooOwoqJiZ +> =5Gr1 +> -----END PGP SIGNATURE----- +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095084.22853.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095084.22853.mbox:2,S new file mode 100644 index 00000000..2caace42 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095084.22853.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tom at slowar.com Tue Oct 7 08:21:01 2008 +To: imap-protocol@u.washington.edu +From: Tom Lewis +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP APPEND Flag Question +Message-ID: <03ef01c92890$4ee4a9e0$ecadfda0$@com> + +Hi all. New to the list. I have looked at the RFC and can't seem to +interpret what I need out of the document, so I thought I would ask here. + + + +In the APPEND command, it accepts a parenthesized list of flags, which can +include custom flags. My question is, what should the server response be if +the APPEND command includes custom flags, but the server does not have the +ability to store these flags? + + + +Thanks in advance! + + + +Tom + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22595.mbox:2,S new file mode 100644 index 00000000..e870cac0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22595.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 24 16:15:46 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <5511EDA6.7060107@laposte.net> +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> + <5511EDA6.7060107@laposte.net> +Message-ID: <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> + +On Wed, Mar 25, 2015, at 10:05 AM, Gilles LAMIRAL wrote: +> Dear Joshua, +> +> > I don't know what options you're talking about, but it's worth pointing out the Thunderbird autoconfiguration project +> > (). +> +> I'll have a look at Thunderbird/Autoconfiguration, +> even if I go crazy when I configure a new account with Thunderbird, +> it is always irrelevant for what I do, the manual way is first hidden, +> maybe presented at the end or after a failure, a headache each time. +> +> I won't start searching the imap hostname from the user login parameter. +> I'll start by guessing server software name from the imap responses, +> not from a third party scan, and from hard coded rules if possible. + +https://tools.ietf.org/html/rfc6186 might be your friend too. + +> > If IMAP ID is supported, that is a useful command to use. +> +> A server that replied well to ID would have already announced itself +> in the first banner. So, for my purpose, ID looks useful when useless. +> +> But thanks to mention ID, I'll add it in imapsync, this way Gmail +> and Outlook.com will be able to know easily how many transfers are made +> by imapsync each day (not difficult without ID anyway). + +We like ID commands at FastMail too - we log them and it gives us both an +idea of usage patterns, and the ability to give more accurate bug reports if we +detect something weird. + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22701.mbox:2,S new file mode 100644 index 00000000..c6835652 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22701.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From brong at fastmail.fm Wed Nov 28 01:52:06 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Re: Suspend/Restore feature proposal +In-Reply-To: <50B54704.9020805@tlinx.org> +References: <20121115215854.Horde.zz6B0O0tmt3ylHiEXzXhQQ4@bigworm.curecanti.org> + <50B54704.9020805@tlinx.org> +Message-ID: <1354096326.12905.140661159138037.73D46EAB@webmail.messagingengine.com> + +On Wed, Nov 28, 2012, at 12:04 AM, L Walsh wrote: +> Michael M Slusarz wrote: +> > +> > Background: I am a disconnected client author (webmail).... I was +> > depressed/alarmed at the amount of state re-creation ...need.. +> > NAMESPACE, CAPABILITY, (since there was no guarantee that we are +> > connecting to the same backend IMAP server, it was/is not possible to +> > cache these values on the client side), ENABLE QRESYNC, and LANGUAGE +> > call on every user action. +> --- +> Just ignore me if I'm too clueless for this to be of any help, but if I was +> doing what you are doing, I'd cache the client TCP connections to the IMAP +> server until I timed their session-out from my webserver. +> +> I.e. would set cookie upon connection to their imap server that contains +> a 'handle' that would indicate something in my 'IMAP-TCP connection cache', +> and route their requests accordingly. +> +> Not only are starting TCP connections "expensive", but you have an added +> expense +> of IMAP state... if HTTP(S), believes in using PIPELINING to enable lower +> server loads and faster response time, why not a webmail->imap gateway? + +Indeed this. Our webmail runs in mod_perl2, so it's persistent, but there's +no guarantee that you'll get the same process on the next web hit. We have +a thing called 'imappool', which is evil, but works very well. Every +connection has associated state. It actually passes the unix descriptor +backwards and forwards between processes. It's super-fast. + +We actually send a command 'XDUMMY' to the backend now, which just gets a +BAD response - but at least it confirms that the connection is still there +so that if a backend goes away we get all the same sort of failure rather +than random failures. + +The plan is to replace XDUMMY with something that actually gets a new +SESSIONID from the backend. We create a new SESSIONID every login and +it gets logged along with every change. That way we can track changes +back to their source login - but tracking them to the exact web hit would +be even nicer. + +Point is - it can be done. I see that someone who wants to build a PHP +app which can be uploaded to j-random-webhost without having control over +the host configuration makes things hard though... no good answer there +except that IMAP isn't a great match for that configuration. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22743.mbox:2,S new file mode 100644 index 00000000..9a739ff1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22743.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From petite_abeille at mac.com Fri Mar 23 13:36:31 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + +Message-ID: + +(rather old thread, but...) + +On Feb 18, 2009, at 10:48 AM, Mark Crispin wrote: + +> On Wed, 18 Feb 2009, David Rauschenbach wrote: +>> In a similar vein, our mobile gateway issues a fake EXISTS at around the +>> 2-minute mark, to keep the mobile operator networks from timing out the TCP +>> session. +> +> UW and Panda issue an untagged OK at the two minute point for the same +> reason. +> +> All of which renders IDLE pretty much pointless compared to polling. + +Is that still the current state of affair, 3 years on? IDLE being rather pointless compared to just plain polling? Or? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22756.mbox:2,S new file mode 100644 index 00000000..e853811a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22756.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Sun Nov 13 12:17:27 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> +Message-ID: <0142CE4C-A264-4548-9B95-A7B0EB9E1AE3@iki.fi> + +On 13.11.2011, at 22.00, Petite Abeille wrote: + +> Given a fetch command for one message, with two attributes: +> +> ABC FETCH 1 (FLAGS RFC822.SIZE) +> +> There is usually one response per message, including both attributes: +> +> * 1 FETCH (FLAGS (\Seen) RFC822.SIZE 44827) +> +> Would it be compliant to return instead two responses, one for each attribute? +> +> * 1 FETCH (FLAGS (\Seen)) +> * 1 FETCH (RFC822.SIZE 44827) + + +Possibly would be compliant, but you'd most likely also break tons of clients by doing that, so it's a rather pointless thing to do. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22759.mbox:2,S new file mode 100644 index 00000000..7a1caeec --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22759.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From dave at cridland.net Mon Oct 31 15:41:32 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + <1320096826.9022.140660992904397@webmail.messagingengine.com> + +Message-ID: <3124.1320100892.530453@puncture> + +On Mon Oct 31 22:06:47 2011, Brandon Long wrote: +> talking existing extensions, not making up new ones). Ie, we +> implemented COMPRESS when we saw that Thunderbird supported it (and +> used their implementation to fix bugs in ours) and then when Apple +> saw +> we supported it, they added it to iOS (I'm guessing, but that's what +> it looked like). + +So Thunderbird implemented it because Cyrus did. + +Cyrus implemented it because Polymer and M-Box did. (Actually I can't +recall if M-Box or Cyrus got there first). + +And Polymer did because Arnt did in Archiveopteryx. + +So actually everyone's just slavishly following Arnt. + +So on that principle, if I can get Arnt to implement ACAP, then +Google will surely follow. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22768.mbox:2,S new file mode 100644 index 00000000..d1d728a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22768.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From slusarz at curecanti.org Tue Jun 7 09:13:23 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + +Message-ID: <20110607101323.Horde.eflQDYF5lbhN7k4jzkYXvOA@bigworm.curecanti.org> + +Quoting Norman Maurer : + +> Hi Michael, +> +> can you explain me why this should be right: +> +>> And this subject: +>> +>> "Re: re:re: fwd:[fwd: \t Test] (fwd) (fwd)(fwd) " +>> +>> Should resolve into the string: +>> +>> "\t Test" +> +> I thought tabs get replaced by space ? + +Ummm.... I can't provide an explanation. Because I am flat out wrong. + Right there in the first Base Subject rule (5256 [2.1]): "Convert +all tabs and continuations to space." For some reason, my whitespace +matching regex was matching on word boundaries instead of just +matching tabs, continuations, and spaces wherever they occur in the +string. + +So it should instead be: + + "Re: re:re: fwd:[fwd: \t Test] (fwd) (fwd)(fwd) " + +Resolving into the string: + + "Test" + +This is called bug fixing by embarrassment. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22772.mbox:2,S new file mode 100644 index 00000000..b0d92dea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22772.mbox:2,S @@ -0,0 +1,143 @@ +MBOX-Line: From jkt at gentoo.org Thu May 19 03:48:06 2011 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] GMail IMAP: returning BODYSTRUCTURE for embedded + messages +Message-ID: <4DD4F566.2070607@gentoo.org> + +Hi, +I'm glad to see someone from Google on this list. It's really relieving +to be able to report issues directly without resorting to proxying via +friends-at-Google in order to file a decent bugreport. + +I'd appreciate if you could investigate your compliance with the format +of BODYSTRUCTURE you generate when working with certain messages, as +described in this messages. The same issue was reported to you through +an internal issue tracker in January 2011 by Henner Zeller on my behalf. + +Here's the relevant part of my report, as I sent it on 13th January: + +I've been playing with a Qt IMAP client [1] for a few years, and at this +point I'm trying to debug GMail's idea about structures of certain +messages. It would help me tremendously if you could pass this +information to someone working on the GMail IMAP team. I'm absolutely +sure that the behavior I'm seeing is in fact violation of the RFC3501. +In short, it looks like GMail IMAP would occasionally substitute "NIL" +for a proper form of "envelope" (see RFC3501 for details), and also will +not provide BODYSTRUCTURE for a message/rfc822 embedded into an e-mail +and won't allow access to such parts for download. In short, this breaks +all IMAP clients which rely on server-side message parsing, which are +basically any mobile clients or those which support the "download +without attachment" option. + +I'm attaching full logs, as well as a source of a sample message which +triggers this behavior (bzip-ed for safe journey via e-mail), but as a +quick visual indication of what is going on, here's a (reformatted for +readability) short summary of the corrupted response: + +* 12 FETCH (BODYSTRUCTURE ( + ( + ("TEXT" "PLAIN" ("CHARSET" "iso-8859-2") NIL NIL + "QUOTED-PRINTABLE" 28 2 NIL NIL NIL) + ("TEXT" "HTML" ("CHARSET" "iso-8859-2") NIL NIL + "QUOTED-PRINTABLE" 1707 65 NIL NIL NIL) + "ALTERNATIVE" ("BOUNDARY" +"----=_NextPart_001_0078_01CBB179.57530990") NIL NIL + ) + ("MESSAGE" "RFC822" NIL NIL NIL "7BIT" 641 NIL + ("ATTACHMENT" NIL) NIL) + ("MESSAGE" "RFC822" NIL NIL NIL "7BIT" 50592 NIL + ("ATTACHMENT" NIL) NIL) + "MIXED" ("BOUNDARY" +"----=_NextPart_000_0077_01CBB179.57530990") NIL NIL + )) + + +In comparison to GMail's response, this is what Dovecot returns: + +* 4 FETCH (BODYSTRUCTURE + ( + ( + ("text" "plain" ("charset" "iso-8859-2") NIL NIL + "quoted-printable" 28 2 NIL NIL NIL NIL) + ("text" "html" ("charset" "iso-8859-2") NIL NIL + "quoted-printable" 1707 65 NIL NIL NIL NIL) + "alternative" ("boundary" +"----=_NextPart_001_0078_01CBB179.57530990") NIL NIL NIL + ) + ("message" "rfc822" NIL NIL NIL "7bit" 641 + ("Sat, 8 Jan 2011 14:16:36 +0100" "Subj 2" + (("Some Name, SOMECOMPANY" NIL "recipient" "example.com")) + (("Some Name, SOMECOMPANY" NIL "recipient" "example.com")) + (("Some Name, SOMECOMPANY" NIL "recipient" "example.com")) + (("Recipient" NIL "example" "gmail.com")) + NIL NIL NIL NIL + ) + ("text" "plain" ("charset" "iso-8859-2") NIL NIL + "quoted-printable" 185 18 NIL NIL ("cs") NIL) + 31 NIL ("attachment" NIL) NIL NIL + ) + ("message" "rfc822" NIL NIL NIL "7bit" 50592 + ("Sat, 8 Jan 2011 13:58:39 +0100" "Subj 1" + (("Some Name, SOMECOMPANY" NIL "recipient" "example.com")) + (("Some Name, SOMECOMPANY" NIL "recipient" "example.com")) + (("Some Name, SOMECOMPANY" NIL "recipient" "example.com")) + (("Recipient" NIL "example" "gmail.com")) + NIL NIL NIL NIL + ) + ( + ("text" "plain" ("charset" "iso-8859-2") NIL NIL + "quoted-printable" 4296 345 NIL NIL NIL NIL) + ("text" "html" ("charset" "iso-8859-2") NIL NIL + "quoted-printable" 45069 1295 NIL NIL NIL NIL) + "alternative" ("boundary" +"----=_NextPart_000_0073_01CBB179.57530990") NIL ("cs") NIL + ) 1669 NIL ("attachment" NIL) NIL NIL) + "mixed" ("boundary" +"----=_NextPart_000_0077_01CBB179.57530990") NIL ("cs") NIL + )) + +The first issue is that the whole envelope field in both embedded +rfc/822 objects is substituted by NIL. The second issue is much more +serious, though -- the response is completely missing the actual +structure of these two attached messages (yes, the BODYSTRUCTURE should +really include something very similar to the BODYSTRUCTURE for the +embedded message). The most serious problem, though, is that GMail's +IMAP server won't allow fetching the attached messages via standard IMAP +FETCH command -- please see the relevant part of the log I'm attaching. + +As a side note, it looks like the web interface doesn't display messages +which are forwarded as an attachment (ie. the original message is an +attachment, most clients would show that as an .eml file). Maybe it +would be worth fixing that, too. + +If you are able to pass this report to someone who could help and fix +the problem, please feel free to ask them to contact me if they need +more information. + +Have fun, +Jan + +[1] http://trojita.flaska.net/ + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: gmail-testcase-bodystructure.eml.bz2 +Type: application/x-bzip2 +Size: 1579 bytes +Desc: not available +URL: +-------------- next part -------------- +An embedded and charset-unspecified text was scrubbed... +Name: communication.log +URL: +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22796.mbox:2,S new file mode 100644 index 00000000..7cb4b86e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22796.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 18:48:39 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <9687DB24-F5DF-436E-8F5E-0454C23BEF3B@iki.fi> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAA79EE.20003@aol.com> + + <9687DB24-F5DF-436E-8F5E-0454C23BEF3B@iki.fi> +Message-ID: + +On Tue, 5 Oct 2010, Timo Sirainen wrote: +> I often force a refresh by marking some existing message unseen and then +> back again to seen while waiting for a message that I know is going to +> arrive, clicking this key combination often enough until it I see the +> mail. So it is possible to know, although that assumes the server +> notices new messages during flag changes. + +Alpine's next message command while at the end of the mailbox does an IMAP +NOOP command which ought to refresh without the side effects of message +flagging. + +A server is required to notice new messages (and flag changes) in the +selected mailbox as part of any IMAP command. NOOP is not the command to +notice new messages; NOOP is the command to do nothing other than notice +new messages and flag changes. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22807.mbox:2,S new file mode 100644 index 00000000..0d70799c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22807.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 05:37:03 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> +Message-ID: <201006111437.03613.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 14:09:55 Timo Sirainen wrote: +> On 11.6.2010, at 10.15, Witold Kr?cicki wrote: +> > On Friday 11 of June 2010 10:59:31 Dave Cridland wrote: +> >> Depending on your server design, this is either very easy, or else +> >> very hard - of course, since it's optional, it'd seem likely that +> >> where it's hard it'd not be supported. +> > +> > That's sure, that's why it's an option. In most popular IMAP servers +> > that use Maildirs this is a simple 'move' operation, with I/O cost of +> > next to nothing (assuming that the whole user account is on one FS of +> > course). +> +> I once thought about implementing MOVE operation to Dovecot to improve +> speed. But then I realized that if client sends STORE \Deleted and EXPUNGE +> in same IP packet, I can just optimize away the rename()s caused by STORE. +> The remaining link()+unlink() should then be about as fast as rename(). +> The only exception is OSX with HFS filesystem, where hard links are really +> inefficient. +And how hard it would be to really implement it in Dovecot? + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22810.mbox:2,S new file mode 100644 index 00000000..70dd9f0c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22810.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From dkarp at zimbra.com Sat May 29 15:12:43 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] NAMESPACE and LIST +Message-ID: <2082015573.1325.1275171163091.JavaMail.root@dogfood.zimbra.com> + +If NAMESPACE returns + + * NAMESPACE (("" "/")) (("/home/" "/")) NIL + +and the client issues + + A001 LIST "/home/user4/INBOX" "" + +then should the untagged LIST reply be + + * LIST (\NoSelect) "/" "" + +or + + * LIST (\NoSelect) "/" "/home/user4" + +or + + * LIST (\NoSelect) "/" "/home/user4/" + +? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22813.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22813.mbox:2,S new file mode 100644 index 00000000..b4f1e005 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22813.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dot at dotat.at Mon Jan 18 11:16:54 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: [yam] draft-daboo-srv-email: POP3S/IMAPS? +In-Reply-To: <01NILPQ96AXS004042@mauve.mrochek.com> +References: <9A584868-5961-4871-B32E-915394043727@sabahattin-gucukoglu.com> + <01NIK8RBBRJK004042@mauve.mrochek.com> + + <01NILLMPPQHY004042@mauve.mrochek.com> + + <01NILPQ96AXS004042@mauve.mrochek.com> +Message-ID: + +On Mon, 18 Jan 2010, Ned Freed wrote: +> +> The tradeoff here is much more subtle - it's question of which is more +> problematic, requiring submission stay on port 25 where it's conflated with +> relay operations, or accepting the use of smtps to get it to move someewhere +> else. + +You also have to consider port 25 blocks. Roaming users in particular need +to avoid configuring their MUA to use port 25. Hence RFC 5068. + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +GERMAN BIGHT HUMBER: SOUTHWEST 5 TO 7. MODERATE OR ROUGH. SQUALLY SHOWERS. +MODERATE OR GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22817.mbox:2,S new file mode 100644 index 00000000..f64c6f5e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22817.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From bhayden at umn.edu Wed Dec 30 04:57:28 2009 +To: imap-protocol@u.washington.edu +From: Brian Hayden +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + +Message-ID: + +On Dec 30 2009, Mark Crispin wrote: + +>On Tue, 29 Dec 2009, Brian Hayden wrote: +>> Sorry if I was unclear. As noted I wasn't talking about the creation +>> action, +>> but the concept of \NoSelect itself. +> +>A \NoSelect object is a directory. +> +>Select is the operation to open a mailbox. +> +>> A directory in Windows, OS X, or most of the Linux desktop environments +>> (for +>> example) is "selectable", both conceptually and in IMAP terms--because +>> it is +>> "dual-use". +> +>Nonsense. I can not execute a directory on Windows, OS X, or Linux. Nor +>can I edit it in my editor. The only thing that can be done in a +>directory is access its children. + +"Nonsense" is a very strong word (and yes, you certainly can edit a +Linux/Unix directory in a text editor, for most flavors of Linux/Unix). +Suffice to say I've spent thousands of hours on this with average users, a +lot of them in usability labs, and this is not how a user thinks about it. +What they say over and over again is: "How come these folders can only +contain folders? In Windows my folders have folders and files." They see a +file as analogous to a mail message, not a mailbox. And if you stop for a +second to think about it, it's obvious why--a file and a mail message both +contain text data. Because they equate those two, they naturally equate +their containers. + +>A mailbox is not a directory. It is an object containing messages, just +>like a text file is an object containing paragraphs of text. + +Obviously, and irrelevant. I'm not talking about what we know about IMAP, +I'm talking about how users see things (and thus, what might be the most +productive way to present these things in a client). + +>A text file doesn't contain other files, nor does it contain executable +>programs. It is single use, just as a directory is. + +Only in the most literal sense. Really, it is single use *just as a message +is*. A directory does not contain paragraphs that a person reads. I'm not +talking about ontology here, I'm talking about how a user perceives it. + +>A message is not an object in the named hierarchy tree. It is a piece of +>an object in the named hierarchy tree. The fact that some clients pretend +>that a message is something else doesn't change what it actually is. + +I think you make a mistake here to assert that "some" (all) clients are +somehow wrong to present it that way, when it's done that way because the +message is the fundamental object that users care about. They don't care +that in the IMAP protocol it is a piece of an object. Nobody prints a +mailbox and pins it on their bulletin board. They print a message. + +>Only IMAP has these bizarre "dual use" objects, and only because some +>people insisted upon it and I failed to say "no" when I should have. + +I think that's inaccurate. It's technically correct from an "action" +perspective--yes, the only thing you can do with a directory in a +filesystem is access its children (not really, but close enough)--it isn't +true from the object model perspective. Filesystem directories contain both +, at a more fundamental level users are used to a "folder" (filesystem +directory) containing both other "folders" and "files". I am intimately +familiar with everything you wrote here but it has no bearing on the +concerns of a user. Your initial assertion was "crappy clients display +\NoSelect mailboxes badly". My contention is that, while most of the +clients are crappy, ALL clients handle \NoSelect badly because it's not a +familiar concept--and nobody has tried to come up with a solid way to +present it to the user. + +Thanks for your thoughtful reply. + +-Brian + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22820.mbox:2,S new file mode 100644 index 00000000..cd5dddb8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22820.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From tss at iki.fi Wed Nov 18 11:39:00 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: <320922078.787.1258572579258.JavaMail.root@dogfood.zimbra.com> +References: <320922078.787.1258572579258.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1258573140.3022.688.camel@timo-desktop> + +On Wed, 2009-11-18 at 11:29 -0800, Dan Karp wrote: +> > > Is it really true that clients must be able to download a complete +> > > tree of all possible names in order to be able to access a name? +> > +> > In any case I'm not aware of any clients that can access (other +> > users') mailboxes that can't be reached by LISTing from root level. +> +> I believe that Thunderbird allows this as well. + +You mean Thunderbird could allow accessing mailboxes it can't LIST among +regular mailboxes? How? I won't believe it until I see it myself. :) I +didn't see any obvious ways to do that. + +There's of course the ways to override the namespace roots. So I suppose +if you wanted to access user foo's mailboxes, you could set the shared +namespace root to /Users/foo/, but that's not very user friendly. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22832.mbox:2,S new file mode 100644 index 00000000..c62e5378 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22832.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From davidr at imap.cc Sun Jul 12 14:59:01 2009 +To: imap-protocol@u.washington.edu +From: David Rauschenbach +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] off-topic: stats on mail duplication, mailing + list sizes, etc? +In-Reply-To: <97903.1247435045@parc.com> +References: <97903.1247435045@parc.com> +Message-ID: <4A5A5CA5.6020709@imap.cc> + +I don't have stats, but I've done several MIME stores that way. Further +improvements come from allowing some flags to be stored along with the +message, while others along with the cross-post record +(message-to-folder association). And further improvements still come +from allowing a cross-post header to have some custom headers. + +In a MIME store, lots of people forward the same attachment, but in each +case, the part header as different headers. Some MUAs use a content-type +"name" attribute field-param to store the file name, others use the +Content-Disposition "filename" field-param, etc. But in both cases, you +really want to store the 15 MB zip file attachment just once. + +I never worked on optimizing representation of a single mime part in all +it different varieties of content transfer encoding, versus storing +decoded and having to encode on the outbound stream, but that would have +been super fun. + +Apple was hiring for a new custom MIME store project for their hosting +several years back, around 2002-3 I think. That would have been fun. + +As for what is profitable, I think Facebook, Twitter, et. al. are +successfully demonstrating that, en-masse, communication is routing +around the dinosaur e-mail protocols. Techies like us (especially the +older and the entrenched) are usually the last to wake up to the new +reality. + +David + + + +Bill Janssen wrote: +> Folks, +> +> Please forgive this somewhat off-topic message. I'm looking for more +> funding to work on my UpLib IMAP server implementation. UpLib stores +> all messages in a DB, and uses tags for folders, thus storing only one +> copy of messages that might occur in multiple folders, or are stored by +> multiple users. I'm interested in figuring some strawman stats about +> email duplication that could be addressed by a site-wide IMAP server. +> For example, how many mailing lists an "average" organization has; the +> average number of users per mailing list; the average message traffic +> (in both messages and bytes) per day, per week, per year. I know that a +> number of you have actual experience with this. I'd be grateful for any +> pointers. +> +> Thanks. +> +> Bill +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22835.mbox:2,S new file mode 100644 index 00000000..ac6aaaa4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22835.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From mrc+uw at Panda.COM Tue Jun 16 13:44:24 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: <1245183163.21624.814.camel@timo-desktop> +References: <1245181628.21624.808.camel@timo-desktop> + + <1245183163.21624.814.camel@timo-desktop> +Message-ID: + +On Tue, 16 Jun 2009, Timo Sirainen wrote: +>> I've done this for a long time with implicit capabilities. +> You mean with those [CAPABILITY ..] response codes? + +Yes. + +> But do you also +> return reduced capabilities when replying to a CAPABILITY command before +> login? + +No. + +> That's the main change I'm hoping to make, because in some setups +> the list of capabilities isn't known before knowing the username. + +I see no problem with doing that. It has always been intended that +capabilities can change at authentication (and STARTTLS) time. + +>>> Note that in b) case it's sending untagged CAPABILITY reply. This seems +>>> to help a lot of clients. +>> I don't know if you care, but that would break an IMAP2 client. +>> Hopefully, nobody is still using Pine 3.xx ... +> I'd rather break Pine 3.xx than Thunderbird, Outlook and OE. :) + +Indeed. However, it's not clear that there won't be other clients that +will toss their cookies at receiving an unsolicited CAPABILITY response; +and as I said IMAP2 clients will definitely do so. That's why the +CAPABILITY response code exists. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22844.mbox:2,S new file mode 100644 index 00000000..b323d294 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22844.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Tue Feb 17 10:24:32 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Rfc-3501 LIST/LSUB +In-Reply-To: +References: <499A81EF.6060901@1und1.de> <499A9322.4080400@isode.com> + +Message-ID: <1234895072.29240.1399.camel@timo-desktop> + +On Tue, 2009-02-17 at 10:11 -0800, Mark Crispin wrote: +> This abuse of LSUB (which really is only useful for maintaining USENET +> news subscriptions) all started because of a certain cretin at Netscape +> ~15 years ago. Microsoft copied the idiocy, and it persists to this day. + +The main reason why I use subscriptions is to hide these mailboxes that +are forcibly created by some clients, such as "Apple Mail To Do" or +"Trash" which I really don't care to see (or use even in the clients +that create them). Wonder if it would be useful in future to be able to +mark some of these mailboxes as "internal to the client" and perhaps not +list them even with LIST. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22847.mbox:2,S new file mode 100644 index 00000000..a195cc9b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22847.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From markrcrispin at panda.com Thu Jan 29 12:08:17 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] SEARCH OR question +In-Reply-To: <4981FBC7.9040509@sun.com> +References: <4981FBC7.9040509@sun.com> +Message-ID: + +On Thu, 29 Jan 2009, Bill Shannon wrote: +> What's the correct syntax to do a SEARCH for an OR of three terms? +> I've been using: +> +> SEARCH OR OR HEADER Message-ID id1 HEADER Message-ID id2 HEADER Message-ID id3 + +This results in a positive for any message with header "Message-ID" that +contains either "id1", "id2", or "id3". The order of evaluation isn't +important, although I many servers would look for id1 first, then id2, +then id3 (evaluating left-to-right and innermost first). + +> SEARCH OR (HEADER Message-ID id1 HEADER Message-ID id2 HEADER Message-ID id3) + +No. That is a syntax error, since only one expression (the AND of the +three HEADER searches) is passed to OR. + +> SEARCH OR HEADER Message-ID id1 (HEADER Message-ID id2 HEADER Message-ID id3) + +That will OR the id1 match with the AND of the id2/id3 searches. That +differs from + + SEARCH OR HEADER Message-ID id1 HEADER Message-ID id2 HEADER Message-ID id3 + +which will OR the id1 and ID2 search, then AND that with the id3 search. + +This sounds like there is an evaluation order dependency, but there isn't. +Criteria in IMAP are ANDed. OR is a single criterion that takes two +criteria as arguments. Thus, + OR HEADER Message-ID id1 HEADER Message-ID id2 +is a single criterion. + +However, the human mind quickly boggles at the complexities, hence the +provision of parentheses in the syntax. Parentheses convert multiple +(ANDed) criteria into a single criteria. Consider: + SEARCH OR (FROM Bill TO Jane) (FROM Jane TO Bill) +which will match all messages that are between Bill and Jane directly, but +not those from other individuals or those in which the other is merely a +cc. + +> Assuming the first syntax at the top is correct, it appears that Exchange +> 2003 fails with more than two terms in OR. Anyone know if that's a known +> bug? I can't find anything in the Microsoft knowledge base. + +Are you sure that it's Exchange 2003? AFAIK, 2003 was the last working +version of Exchange and I recall it as working well. + +Newer versions of Exchange certainly do suck in their implementation of +SEARCH (and other aspects of IMAP). Not coincidentally, the departure +from the Exchange team of the IMAP-clueful guys at Microsoft was at about +the same time... :-( + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22850.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22850.mbox:2,S new file mode 100644 index 00000000..765181b3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22850.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From tss at iki.fi Thu Nov 6 09:17:47 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Untagged Status Notifications Async or Not? +In-Reply-To: <49132293.10733.4B89FB7@mail.sabahattin-gucukoglu.com> +References: <49132293.10733.4B89FB7@mail.sabahattin-gucukoglu.com> +Message-ID: + +On Nov 6, 2008, at 7:00 PM, Sabahattin Gucukoglu wrote: + +> I'm afraid I'm having problems with RFC 3501. The problem is that, +> while +> it clearly indicates that all clients absolutely MUST interpret +> untagged +> responses sent at any time, it seems (in a rather roundabout +> fashion) to +> imply that it is somehow proper for SELECTed mailboxes only ever to +> inform +> clients when responding to client commands, like NOOP. There's +> never a +> mention of why this is so, nor any permission explicitly given (as it +> seems to me) to do the right thing and just blast untagged +> notifications +> at the client as soon as we have them. + +It's mentioned in RFC 3501: + +Server implementations are permitted to send an untagged response +(except for EXPUNGE) while there is no command in progress. Server +implementations that send such responses MUST deal with flow control +considerations. Specifically, they MUST either (1) verify that the +size of the data does not exceed the underlying transport's available +window size, or (2) use non-blocking writes. + +> Apart from when dealing with client bugs, I'd like to see an IMAP +> server I +> use push notifications at once, to have clients listen and act on them +> accordingly without requiring a minimum polling period during which +> they +> assume complete silence for fear of soliciting any response, and all +> without needing IDLE which we will use when we clearly need to (I.E., +> we've quite finished interfacing with the user and are now doing +> nothing +> but wait for new mail). + +Dovecot used to send them 5 years ago, but it exposed bugs in clients +(well, I remember only one actually and that was fixed) and there +wasn't any real upside to it anyway. All clients that can use IDLE +already do so. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22853.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22853.mbox:2,S new file mode 100644 index 00000000..2611a6c2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22853.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From tss at iki.fi Tue Oct 7 08:43:23 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP APPEND Flag Question +In-Reply-To: <03ef01c92890$4ee4a9e0$ecadfda0$@com> +References: <03ef01c92890$4ee4a9e0$ecadfda0$@com> +Message-ID: <1223394203.27703.108.camel@hurina> + +On Tue, 2008-10-07 at 11:21 -0400, Tom Lewis wrote: + +> In the APPEND command, it accepts a parenthesized list of flags, which +> can include custom flags. My question is, what should the server +> response be if the APPEND command includes custom flags, but the +> server does not have the ability to store these flags? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095085.22856.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095085.22856.mbox:2,S new file mode 100644 index 00000000..d560c98c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095085.22856.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From jsiegle at psu.edu Tue Sep 2 12:04:12 2008 +To: imap-protocol@u.washington.edu +From: Jonathan Siegle +Date: Fri Jun 8 12:34:42 2018 +Subject: [imap-protocol] Question about rename +Message-ID: <48BD8E2C.7060702@psu.edu> + +I see in RFC 3501 in section 9: + +command-auth = append / create / delete / examine / list / lsub / + rename / select / status / subscribe / unsubscribe + ; Valid only in Authenticated or Selected state + +command-nonauth = login / authenticate / "STARTTLS" + ; Valid only when in Not Authenticated state + +command-select = "CHECK" / "CLOSE" / "EXPUNGE" / copy / fetch / store / + uid / search + ; Valid only when in Selected state + + + +I'm confused if I can do this from the client: + +2 select foo +3 rename foo foo2 +4 logout + + +or should I do this: + +2 select foo +3 close +4 rename foo foo2 +5 logout + + + +Some servers don't like it when I do scenario #1. + +Thanks, +Jonathan + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22595.mbox:2,S new file mode 100644 index 00000000..57090d98 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22595.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From blong at google.com Tue Mar 24 16:28:09 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> + <5511EDA6.7060107@laposte.net> + <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> +Message-ID: + +On Tue, Mar 24, 2015 at 4:15 PM, Bron Gondwana wrote: + +> On Wed, Mar 25, 2015, at 10:05 AM, Gilles LAMIRAL wrote: +> > Dear Joshua, +> > +> > > I don't know what options you're talking about, but it's worth +> pointing out the Thunderbird autoconfiguration project +> > > (< +> https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Autoconfiguration +> >). +> > +> > I'll have a look at Thunderbird/Autoconfiguration, +> > even if I go crazy when I configure a new account with Thunderbird, +> > it is always irrelevant for what I do, the manual way is first hidden, +> > maybe presented at the end or after a failure, a headache each time. +> > +> > I won't start searching the imap hostname from the user login parameter. +> > I'll start by guessing server software name from the imap responses, +> > not from a third party scan, and from hard coded rules if possible. +> +> https://tools.ietf.org/html/rfc6186 might be your friend too. +> +> > > If IMAP ID is supported, that is a useful command to use. +> > +> > A server that replied well to ID would have already announced itself +> > in the first banner. So, for my purpose, ID looks useful when useless. +> > +> > But thanks to mention ID, I'll add it in imapsync, this way Gmail +> > and Outlook.com will be able to know easily how many transfers are made +> > by imapsync each day (not difficult without ID anyway). +> +> We like ID commands at FastMail too - we log them and it gives us both an +> idea of usage patterns, and the ability to give more accurate bug reports +> if we +> detect something weird. + + +We also show it to users in their activity log, which is helpful so they +know what was connecting. + +Its also helpful when we need to track down a developer and have a +discussion about what they're doing. + + + +Brandon +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22701.mbox:2,S new file mode 100644 index 00000000..ca797f3b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22701.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From jcea at jcea.es Thu Nov 29 13:33:02 2012 +To: imap-protocol@u.washington.edu +From: Jesus Cea +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Tutorial creating a tiny new IMAPv4 server +Message-ID: <50B7D48E.7030407@jcea.es> + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +Hi, everybody. I developed a LMTP+POP3 server many years ago, and I +always considered interesting to create an IMAPv4 server too. I read +all the RFCs, I subscribed to several mailing lists, I examine gmail +imap4 traffic, etc., for years. I think IMAPv4 protocol is complex and +has tons of subtleties and I find a lot of stuff unspecified and known +only by folklore and experience (and pain :). + +I wonder if there is out there any kind of "implement this first", +"beware this apparent trivial thing", "don't forget to consider this +apparent unimportant stuff". + +Help? Advice? Curiosity?. Beside the "DON'T!!!!" :-). + +PS: I think I have even exchanged some emails with Mark Crispin years +ago, and always pays a lot of attention to his writings here. You are +a lighthouse in Internet, guy. I will miss your prose and experience. + +- -- +Jes?s Cea Avi?n _/_/ _/_/_/ _/_/_/ +jcea@jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ +jabber / xmpp:jcea@jabber.org _/_/ _/_/ _/_/_/_/_/ +. _/_/ _/_/ _/_/ _/_/ _/_/ +"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ +"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ +"El amor es poner tu felicidad en la felicidad de otro" - Leibniz +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.10 (GNU/Linux) +Comment: Using GnuPG with undefined - http://www.enigmail.net/ + +iQCVAwUBULfUjplgi5GaxT1NAQLAVQP/VEVhe86YqUMrqpoEdVrxizaGxyOKPaSJ +ZKl4mOdfqVoZFmoWxEBartDo1lPr4kLAVQJFoEKoYjxLM5M7NCgv0lccGy4u2ypP +yQmpO72IeSQBTu1sWFyKYdrDPgvUu5MucSL/2nO2A8r1dkhd3HIW7DKYBykDFIw4 +cZsv8WMQ4ws= +=LR06 +-----END PGP SIGNATURE----- + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22743.mbox:2,S new file mode 100644 index 00000000..caa81573 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22743.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From petite_abeille at mac.com Fri Mar 23 14:06:32 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <17068.1332235633.171765@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> +Message-ID: + + +On Mar 20, 2012, at 10:27 AM, Dave Cridland wrote: + +> No, NOOP is a command that does nothing; an EXISTS response is not automatically generated - it can be generated during any command (or, for extra bonus points, not during any command), but only when there are new messages. + +Ok, fixed that spurious EXISTS. + +$ telnet svr225.stepx.com 1143 +Trying 212.55.219.225... +Connected to svr225.stepx.com. +Escape character is '^]'. +* ok imap4rev1 +123 login lua lua +123 ok login +123 select inbox +* 1000 exists +* 0 recent +* flags (\answered \deleted \draft \flagged \seen) +* ok [permanentflags ()] done +* ok [uidnext 88836] done +* ok [uidvalidity 15986] done +123 ok [read-only] select +123 noop +123 ok noop + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22756.mbox:2,S new file mode 100644 index 00000000..320b5833 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22756.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 13 12:37:48 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <1321215266.30428.140660998383617@webmail.messagingengine.com> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> +Message-ID: <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> + + + +>> Would it be compliant to return instead two responses, one for each attribute? +>> +>> * 1 FETCH (FLAGS (\Seen)) +>> * 1 FETCH (RFC822.SIZE 44827) +> + +On Nov 13, 2011, at 9:14 PM, Bron Gondwana wrote: + +> Compliant or not, I can bet you it will break a lot of clients. + +On Nov 13, 2011, at 9:17 PM, Timo Sirainen wrote: + +> Possibly would be compliant, but you'd most likely also break tons of clients by doing that, so it's a rather pointless thing to do. + +Ok, fair enough. + +But, on the other hand, doesn't it happen already? For example when a BODY fetch triggers a FLAGS fetch? + +ABC 1 FETCH (BODY[HEADER] ) +* 1 FETCH (BODY[HEADER] {342} +... +* 1 FETCH (FLAGS (\Seen)) +ABC OK FETCH completed + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22759.mbox:2,S new file mode 100644 index 00000000..9630baa6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22759.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 15:49:34 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + <75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> +Message-ID: + +On Tue, 1 Nov 2011, Timo Sirainen wrote: +> I haven't tested GMail with imaptest for a while now (few years?), but I +> don't think the bugs it reports are about the mailbox model, or anything +> else that can't be fixed somewhat easily. + +Sigh, Timo, you had to give away the secret. I was hoping to bait this +trap a bit longer. + +Since the cat is out of the bag: there is nothing in the mailbox model +which does not comply with IMAP, or which can not be presented in an +IMAP-compliant manner. IMAP is silent on the mailbox model for a reason. + +The problems with Gmail's server are, by and large, flat out bugs. There +are a few design faults; but they are completely unnecessary and could be +amended while keeping the Gmail model. + +> I guess the one test I could +> remove is the search for substrings, since even Mark doesn't think it's +> worth the trouble nowadays. + +FWIW, I always considered the implementation of string searching to be +implementation dependent. The only requirement was that simple +case-independent substring is recognized as compliant. I never intended +that a server be forbidden from implementing a smarter search (e.g., +fuzzy) that returns more matching messages. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22768.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22768.mbox:2,S new file mode 100644 index 00000000..29484d8b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22768.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From norman.maurer at googlemail.com Tue Jun 7 12:05:26 2011 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] [SORT EXTENSION] Base-Subject extraction +In-Reply-To: <20110607101323.Horde.eflQDYF5lbhN7k4jzkYXvOA@bigworm.curecanti.org> +References: + <20110607003321.Horde.7akgDoF5lbhN7cYxm91GKuA@bigworm.curecanti.org> + + <20110607101323.Horde.eflQDYF5lbhN7k4jzkYXvOA@bigworm.curecanti.org> +Message-ID: + +Thanks for clearify, then at least my implementation is correct ;) + +Bye, +Norman + + +2011/6/7 Michael M Slusarz : +> Quoting Norman Maurer : +> +>> Hi Michael, +>> +>> can you explain me why this should be right: +>> +>>> And this subject: +>>> +>>> ? ? "Re: re:re: fwd:[fwd: \t ?Test] ?(fwd) ?(fwd)(fwd) " +>>> +>>> Should resolve into the string: +>>> +>>> ? ? "\t ?Test" +>> +>> I thought tabs get replaced by space ? +> +> Ummm.... I can't provide an explanation. ?Because I am flat out wrong. +> ?Right there in the first Base Subject rule (5256 [2.1]): "Convert all tabs +> and continuations to space." ?For some reason, my whitespace matching regex +> was matching on word boundaries instead of just matching tabs, +> continuations, and spaces wherever they occur in the string. +> +> So it should instead be: +> +> ? "Re: re:re: fwd:[fwd: \t ?Test] ?(fwd) ?(fwd)(fwd) " +> +> Resolving into the string: +> +> ? "Test" +> +> This is called bug fixing by embarrassment. +> +> michael +> +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22772.mbox:2,S new file mode 100644 index 00000000..56859c88 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22772.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From jkt at gentoo.org Thu May 19 04:10:36 2011 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> <20110518210716.GA12636@brong.net> <20110519045851.GA23466@brong.net> + +Message-ID: <4DD4FAAC.3090101@gentoo.org> + +On 05/19/11 07:45, Mark Crispin wrote: +> The only time I ever find myself offline is when I am in very remote areas +> of northern British Columbia or the Yukon; and that's only because I chose +> not to cough up the dough for satellite. Even in rural Alaska, where I +> have to carry a firearm for bear protection on my property, I have +> continuous reliable online access. + +Hi Mark, I'm coming from Europe, where the charges for cell data roaming +still suck pretty hard. There's no way I'm going to pay for a transfer +of 1MB of data every now and then. + +> That is because of the stupidity of doing such synchronization in the +> first place. Unless you have such a large screen that it can show the +> flags of 100K messages, there is no reason that the UI needs it. + +Please advise me on a way to better show information about the total +number of unread messages in a mailbox. I can't use STATUS on a SELECTed +mailbox, and I can't do anything when I see an EXPUNGE of a message for +which I haven't got flags before. Shall I decrement my unread count, or +not? To my knowledge, there's absolutely no way of doing that correctly +except knowing FLAGS of all messages in advance. + +And yes, I really like the number on the left that shows me how many +unread messages are in there, nicely after each mailbox name. + +Cheers, +Jan + +-- +Trojita, a fast e-mail client -- http://trojita.flaska.net/ + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 270 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22796.mbox:2,S new file mode 100644 index 00000000..98b71ad0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22796.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From snowjn at aol.com Mon Oct 4 19:47:37 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAA79EE.20003@aol.com> + +Message-ID: <4CAA91C9.7050706@aol.com> + + + +Mark Crispin wrote: +> On Mon, 4 Oct 2010, John Snow wrote: +>>> That assumes that the IMAP server notifies instantly, instead of +>>> polling +>>> internally at a fixed interval. This, in turn, assumes some form of +>>> message passing between the MDA and the IMAP server. +>> That's true. I took that as am implied requirement for implementing +>> IDLE. +> +> There's no enforcement of such a requirement. If IDLE is simply a +> checklist requirement (which it usually is) then the simplest way to get +> it checked is via an internal poll. +> +> After all, who's gonna know? +> +>> We live in a world full of impatient people. +> +> How will they know? This is a day and age when the vast majority of +> users +> don't even have access to Received headers, much less can interpret them. +> +They know via the phone. These impatient people call to see if the +recipient +has read the mail that they just sent. They expect the mail to arrive as +soon as it's +sent. +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22807.mbox:2,S new file mode 100644 index 00000000..0378c9b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22807.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 05:42:28 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C12296C.6030903@gulbrandsen.priv.no> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> + <4C12296C.6030903@gulbrandsen.priv.no> +Message-ID: <201006111442.28346.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 14:17:48 Arnt Gulbrandsen wrote: +> On 06/11/2010 02:09 PM, Timo Sirainen wrote: +> > People (webmail developers mainly) still once in a while ask me to +> > implement MOVE, but I think it's mainly about convenience to them. +> +> So they don't have to test the result of COPY. Makes sense. +Well, the usual way of dealing with things in a 'computer' world is that if +you have to do the same sequence of things over and over again (copy + store + +expunge in that case - which IMAP clients do often, no matter what the 'IMAP +philosophy' states) it is better to automatize it and do 'copystoreandexpunge' +which is simply 'move', and I'm not suprised that IMAP clients authors would +appreciate this extension. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22810.mbox:2,S new file mode 100644 index 00000000..d1599301 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22810.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From mrc+imap at panda.com Sat May 29 15:58:27 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] NAMESPACE and LIST +In-Reply-To: <2082015573.1325.1275171163091.JavaMail.root@dogfood.zimbra.com> +References: <2082015573.1325.1275171163091.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Sat, 29 May 2010, Dan Karp wrote: +> If NAMESPACE returns +> * NAMESPACE (("" "/")) (("/home/" "/")) NIL +> and the client issues +> A001 LIST "/home/user4/INBOX" "" +> then should the untagged LIST reply be +> * LIST (\NoSelect) "/" "" + +Yes. + +What you have in this example is a typical UNIX filesystem type export in +which other users are in the default namespace with "/home/" as the prefix +instead of the more common "~". Since /home/ is in the default namespace, +the pattern matches it first. + +This ambiguity is why you should do other-user access though "~": + + 0 namespace + * NAMESPACE (("" "/")) (("~" "/")) NIL + 0 OK NAMESPACE completed + 1 list ~user4/test "" + * LIST (\NoSelect \HasChildren) "/" ~user4/ + 1 OK LIST completed + +or preferably (especially if you don't have to export a UNIX filesystem +hierarchy!) a separate namespace since otherwise you have to consider "~" +to be like a namespace: + + 0 namespace + * NAMESPACE (("" "/")) (("#user." "/")) NIL + 0 OK NAMESPACE completed + 1 list #user.user4/test "" + * LIST (\NoSelect \HasChildren) "/" #user.user4 + 1 OK LIST completed + +Another design issue that you have to deal with is that certain clients +(e.g., from a convicted monopolist) can't access mailboxes in anything +other than the default namespace; and other clients will attempt to +download the complete contents of anything they find in the default +namespace. This creates a Scylla and Charybdis problem that leads to lots +of hair pulling. You have to consider the semantics of the default +namespace quite carefully. + +For example, in my new server, the default namespace is a chimera of names +from: + [1] user's private mailboxes (#mail/ namespace) + [2] user's quarantine (#qt/ namespace) + [3] a "Public Folders" (sigh on "folders", I lost that battle) pseudo + directory that points to the user's published mailboxes in the + #public namespace. + [4] (future) public names published to all users, mechanism to be + determined. + +The user must have a namespace capable client to access #public mailboxes +that were not published to his default namespace, as well as other user's +private mailboxes (#user/ namespace) and (if the user is privileged) the +global quarantine. + +The interesting thing here is that the default namespace is a superset of +the user's private space. This chimera made things much easier, since it +avoided arguing about what is in the user's private space. Also, since +the chimera is implemented by software instead of the storage layout, it's +possible to make substantial updates (and even have adminstrator +configuration) without impacting the storage. A big benefit; since in my +experience admins make decisions without fully understanding the impact, +and the ability to change things gently is quite useful. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22817.mbox:2,S new file mode 100644 index 00000000..2714ed62 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22817.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From joel+imap-protocol at panacea.null.org Wed Dec 30 05:29:30 2009 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + +Message-ID: <4218.1262179770@succubus.panacea.null.org> + +Brian Hayden writes: +> They see a +> file as analogous to a mail message, not a mailbox. And if you stop for a +> second to think about it, it's obvious why--a file and a mail message both +> contain text data. + +A MIME part can contain text data too. + +I think it's likely that users view messages as the "privileged" container +that is at the end of the name hierarchy only because they are using +interfaces that place it there. Being a container does not, in itself, +seem to give messages any kind of special status, because lots of other +things are containers too. + +Cheers, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22820.mbox:2,S new file mode 100644 index 00000000..e46ce86b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22820.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From dkarp at zimbra.com Wed Nov 18 11:43:34 2009 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: <1258573140.3022.688.camel@timo-desktop> +Message-ID: <2134052040.817.1258573414683.JavaMail.root@dogfood.zimbra.com> + +> You mean Thunderbird could allow accessing mailboxes it can't LIST +> among regular mailboxes? How? I won't believe it until I see it +> myself. :) I didn't see any obvious ways to do that. + +Not sure, but heard that it's possible. I certainly could be wrong. +But given that the NAMESPACE RFC explicitly allows servers to permit +direct access to a given other user's mailboxes while returning NO +to a wildcarded LIST, I'd think that a good client would *have* to +do something along those lines... + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22832.mbox:2,S new file mode 100644 index 00000000..5ffcc95e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22832.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From janssen at parc.com Sun Jul 12 15:41:05 2009 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] off-topic: stats on mail duplication, + mailing list sizes, etc? +In-Reply-To: <4A5A5CA5.6020709@imap.cc> +References: <97903.1247435045@parc.com> <4A5A5CA5.6020709@imap.cc> +Message-ID: <98779.1247438465@parc.com> + +David Rauschenbach wrote: + +> In a MIME store, lots of people forward the same attachment, but in +> each case, the part header as different headers. Some MUAs use a +> content-type "name" attribute field-param to store the file name, +> others use the Content-Disposition "filename" field-param, etc. But in +> both cases, you really want to store the 15 MB zip file attachment +> just once. + +Yes, I should really do that, too. I'm close already; attachments are +stored as separate UpLib documents, with pointers to that document in +the message. But the pointers are document IDs, not document +fingerprints, so duplicates are possible. + +> As for what is profitable, I think Facebook, Twitter, et. al. are +> successfully demonstrating that, en-masse, communication is routing +> around the dinosaur e-mail protocols. Techies like us (especially the +> older and the entrenched) are usually the last to wake up to the new +> reality. + +Perhaps. I'm already thinking about a Google Wave server for UpLib. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22835.mbox:2,S new file mode 100644 index 00000000..967e9e1d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22835.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From mail at sabahattin-gucukoglu.com Wed Jun 17 01:30:54 2009 +To: imap-protocol@u.washington.edu +From: Sabahattin Gucukoglu +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: <1245181628.21624.808.camel@timo-desktop> +References: <1245181628.21624.808.camel@timo-desktop> +Message-ID: + +On 16 Jun 2009, at 20:47, Timo Sirainen wrote: +> Has anyone tested how well clients support catching capabilities after +> login? I was planning on having Dovecot v2.0 send only very minimal +> capabilities before login. + +Is it standard behaviour to even expect clients to understand +capabilities in untagged responses at all? (Or has this just become +unspoken convention somehow?) + +Cheers, +Sabahattin + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22844.mbox:2,S new file mode 100644 index 00000000..d4269e1f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22844.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From markrcrispin at panda.com Tue Feb 17 10:58:15 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Rfc-3501 LIST/LSUB +In-Reply-To: <1234895072.29240.1399.camel@timo-desktop> +References: <499A81EF.6060901@1und1.de> <499A9322.4080400@isode.com> + + <1234895072.29240.1399.camel@timo-desktop> +Message-ID: + +On Tue, 17 Feb 2009, Timo Sirainen wrote: +> The main reason why I use subscriptions is to hide these mailboxes that +> are forcibly created by some clients, such as "Apple Mail To Do" or +> "Trash" which I really don't care to see (or use even in the clients +> that create them). Wonder if it would be useful in future to be able to +> mark some of these mailboxes as "internal to the client" and perhaps not +> list them even with LIST. + +It can be argued that the very existance of such mailboxes is an +abomination. + +I have come to believe that allowing multiple mailboxes in IMAP, as +opposed to promoting keywords, was a mistake. Note that this is, +effectively, what Gmail does. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22847.mbox:2,S new file mode 100644 index 00000000..76fde9b5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22847.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jan 29 12:18:56 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] SEARCH OR question +In-Reply-To: <4981FBC7.9040509@sun.com> +References: <4981FBC7.9040509@sun.com> +Message-ID: + +Bill Shannon writes: +> What's the correct syntax to do a SEARCH for an OR of three terms? +> I've been using: +> +> SEARCH OR OR HEADER Message-ID id1 HEADER Message-ID id2 HEADER +> Message-ID id3 + +That's the right way. + +> RFC 3501 says: +> +> When multiple keys are specified, the result is the intersection +> (AND function) of all the messages that match those keys. + +It's trying to say "if you want OR, you have to say OR. If you want AND, +you're in luck because that's default". + +> How would this work with OR? +> +> SEARCH OR (HEADER Message-ID id1 HEADER Message-ID id2 HEADER Message-ID id3) + +That one isn't syntactically valid since there's only one search term after OR. + +(a and b) or c would be "OR (a b) c" or "OR c (a b)". + +> Are the multiple terms inside the parens combined using OR because they're +> part of an OR key? + +No. + +> Or are they combined with AND because they're multiple +> keys (first rule above)? + +Yes. + +> Assuming the first syntax at the top is correct, it appears that Exchange +> 2003 fails with more than two terms in OR. + +Can't have more than two terms in an OR. IF you want three, you have to +have two ORs. + +This command ORs together 14 search terms and ANDs the result of that +with a single search term: + +7pq uid search return () or or or from @spielzeughausen header +"Resent-From" @spielzeughausen or header Sender @spielzeughausen header +"Resent-Sender" @spielzeughausen or or or header "Return-Path" +@spielzeughausen header "Reply-To" @spielzeughausen or To +@spielzeughausen Cc @spielzeughausen or or header Bcc @spielzeughausen +header "Resent-To" @spielzeughausen or header "Resent-Cc" +@spielzeughausen header "Resent-Bcc" @spielzeughausen since 01-dec-2008 + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22850.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22850.mbox:2,S new file mode 100644 index 00000000..0b1c8e4a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22850.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From sathishanton at yahoo.co.uk Tue Nov 11 02:55:19 2008 +To: imap-protocol@u.washington.edu +From: sathish anton +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] RFC 5256 +Message-ID: <837898.62205.qm@web24305.mail.ird.yahoo.com> + +Let me know if there is an IMAP implentation with RFC 5256. + + + Add more friends to your messenger and enjoy! Go to http://messenger.yahoo.com/invite/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22853.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22853.mbox:2,S new file mode 100644 index 00000000..3c44b5e1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22853.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From the RFC: +To: imap-protocol@u.washington.edu + +6.3.11. APPEND Command + + NO - append error: can't append to that mailbox, error + in flags or date/time or message text + +So reply something like "NO Can't store keywords". + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095086.22856.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095086.22856.mbox:2,S new file mode 100644 index 00000000..e1fda48e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095086.22856.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From dave at cridland.net Tue Sep 2 14:35:21 2008 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:42 2018 +Subject: [imap-protocol] Question about rename +In-Reply-To: <48BD8E2C.7060702@psu.edu> +References: <48BD8E2C.7060702@psu.edu> +Message-ID: <9235.1220391321.392313@peirce.dave.cridland.net> + +On Tue Sep 2 20:04:12 2008, Jonathan Siegle wrote: +> I'm confused if I can do this from the client: +> +> 2 select foo +> 3 rename foo foo2 +> 4 logout + +Sure. But the server might respond to the RENAME with NO, which it's +entirely allowed to do. + +> or should I do this: +> +> 2 select foo +> 3 close +> 4 rename foo foo2 +> 5 logout + +This will generate fewer refusals. But, you're best off using +UNSELECT where supported, and EXAMINE "&~//" where not, instead of +that CLOSE. (The latter being selecting an almost certainly +non-existent mailbox, and thus roughly equivalent to an UNSELECT). + +> Some servers don't like it when I do scenario #1. + +Unsurprising - it's hard to say what the server ought to be doing - +does it leave the client selected on the new foo2? Or is it selected +on a now inaccessible foo? Or has foo been formally deleted, and if +so, are all the messages now expunged? + +There's simply too many options, and since they yield different +behaviour, it's really not a good idea to rely on it. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22595.mbox:2,S new file mode 100644 index 00000000..bfa86f67 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22595.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From asuth at mozilla.com Tue Mar 24 16:47:40 2015 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> + <5511EDA6.7060107@laposte.net> + <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> +Message-ID: + +On Tue, Mar 24, 2015 at 7:15 PM, Bron Gondwana wrote: + +> We like ID commands at FastMail too - we log them and it gives us both an +> idea of usage patterns, and the ability to give more accurate bug reports +> if we +> detect something weird. +> + +And some servers can be downright aggressive about. The Firefox OS email +app experienced the Coremail IMAP servers at 163.com (and presumably all +netease-operated servers) doing things like saying "NO" to a SELECT with +the human-readable string "SELECT The login is not safe! Please update your +mail client: http://mail.163.com/dashi" when we weren't providing a (valid) +ID. The NO to the select only happened some of the time, but the login +would result in an ad for 163.com's Android/iOS mail clients being injected +into the inbox with apparently very limited duplicate suppression. Note +that we were using initial-TLS on port 993 with then-current Gecko/NSS. +Some more details at https://bugzilla.mozilla.org/show_bug.cgi?id=1105573 +for anyone interested. + +Andrew +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22701.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22701.mbox:2,S new file mode 100644 index 00000000..ed9a312c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22701.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From imap at maclean.com Thu Nov 29 16:32:07 2012 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:49 2018 +Subject: [Imap-protocol] Tutorial creating a tiny new IMAPv4 server +In-Reply-To: <50B7D48E.7030407@jcea.es> +References: <50B7D48E.7030407@jcea.es> +Message-ID: + +Jesus, + +On 5 June 2011, I posted to this mailing list a +brief "top ten tips for writing an IMAP server" +based on my experience. The subject was "Where +to start?" You might like to look in the +archives for it. I just reviewed it and would +change only one thing: in tip #3 I discussed +choosing a hierarchy character and my advice +today would be narrower, suggesting sticking with +one of the two commonest, slash and dot. + +Pete Maclean + +At 04:33 PM 11/29/2012, you wrote: +>-----BEGIN PGP SIGNED MESSAGE----- +>Hash: SHA1 +> +>Hi, everybody. I developed a LMTP+POP3 server many years ago, and I +>always considered interesting to create an IMAPv4 server too. I read +>all the RFCs, I subscribed to several mailing lists, I examine gmail +>imap4 traffic, etc., for years. I think IMAPv4 protocol is complex and +>has tons of subtleties and I find a lot of stuff unspecified and known +>only by folklore and experience (and pain :). +> +>I wonder if there is out there any kind of "implement this first", +>"beware this apparent trivial thing", "don't forget to consider this +>apparent unimportant stuff". +> +>Help? Advice? Curiosity?. Beside the "DON'T!!!!" :-). +> +>PS: I think I have even exchanged some emails with Mark Crispin years +>ago, and always pays a lot of attention to his writings here. You are +>a lighthouse in Internet, guy. I will miss your prose and experience. +> +>- -- +>Jes?s Cea Avi?n _/_/ _/_/_/ _/_/_/ +>jcea@jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ +>jabber / xmpp:jcea@jabber.org _/_/ _/_/ _/_/_/_/_/ +>. _/_/ _/_/ _/_/ _/_/ _/_/ +>"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ +>"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ +>"El amor es poner tu felicidad en la felicidad de otro" - Leibniz +>-----BEGIN PGP SIGNATURE----- +>Version: GnuPG v1.4.10 (GNU/Linux) +>Comment: Using GnuPG with undefined - http://www.enigmail.net/ +> +>iQCVAwUBULfUjplgi5GaxT1NAQLAVQP/VEVhe86YqUMrqpoEdVrxizaGxyOKPaSJ +>ZKl4mOdfqVoZFmoWxEBartDo1lPr4kLAVQJFoEKoYjxLM5M7NCgv0lccGy4u2ypP +>yQmpO72IeSQBTu1sWFyKYdrDPgvUu5MucSL/2nO2A8r1dkhd3HIW7DKYBykDFIw4 +>cZsv8WMQ4ws= +>=LR06 +>-----END PGP SIGNATURE----- +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22743.mbox:2,S new file mode 100644 index 00000000..a4e7a581 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22743.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From petite_abeille at mac.com Fri Mar 23 14:53:44 2012 +To: imap-protocol@u.washington.edu +From: PA +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <20897.1332365878.053493@puncture> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + + <20897.1332365878.053493@puncture> +Message-ID: <736ABDDD-9BA9-45D0-861F-856A5932BE71@mac.com> + + +On Mar 21, 2012, at 10:37 PM, Dave Cridland wrote: + +> EXISTS, on the other hand, can be sent even if there is no command in progress. + +Fair enough. But still, all these server side notifications only apply to the selected mailbox. What about all the other subscribed mailboxes? They still would need to be polled somehow, wouldn't they? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22756.mbox:2,S new file mode 100644 index 00000000..bd443790 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22756.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Nov 13 12:45:56 2011 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> +Message-ID: <4EC02C84.1090209@gulbrandsen.priv.no> + +On 11/13/2011 09:37 PM, Petite Abeille wrote: +> But, on the other hand, doesn't it happen already? For example when a BODY fetch triggers a FLAGS fetch? + +It's safe for flags+rest. but not so safe for e.g. uid+rest: + +* 42 FETCH (UID 100) +* 42 FETCH (RFC822.SIZE 12345) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22759.mbox:2,S new file mode 100644 index 00000000..ed5336ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22759.mbox:2,S @@ -0,0 +1,162 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 31 16:01:42 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: +References: <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi><20111022200153.GA3907@brong.net><20111023080449.GA10954@brong.net> + +Message-ID: <1320102102.29743.140660992935961@webmail.messagingengine.com> + +On Monday, October 31, 2011 3:40 PM, "Brandon Long" wrote: +> On Sun, Oct 23, 2011 at 1:04 AM, Bron Gondwana wrote: +> > On Sat, Oct 22, 2011 at 01:56:55PM -0700, Brandon Long wrote: +> >> I think we have only one deliberate break from the spec, and that's that we +> >> don't do substring searches. +> > +> > I believe your envelopes are bogus too, and we had another issue which I +> > should see if I can dig up... +> +> Not bogus, but yes, there is a specific combination where we get it +> wrong. Thought it had been fixed, but I see the bug is still open. + +I've seen it in the wild, so yeah - still there I think. + +> > Oh, yeah: +> > +> > ====================== +> > The bug is with gmail. +> > +> > http://tools.ietf.org/html/rfc3501#section-4.3.1 +> > +> > ?8-bit textual and binary mail is supported through the use of a +> > ?[MIME-IMB] content transfer encoding. ?IMAP4rev1 implementations MAY +> > ?transmit 8-bit or multi-octet characters in literals, but SHOULD do +> > ?so only when the [CHARSET] is identified. +> > +> > Basically, they can transfer that as utf-8, but only if they send it as +> > a literal. ?Just quoting the string is bogus. +> > ====================== +> +> I can believe this bug exists. It would be nice if we didn't have to +> do that (is there an extension for that?), but if you can give me +> specfics, I can file the bug. + +I doubt there's an extention, and as Mark pointed out - you need to fall +back for other clients anyway. + +> We don't live in a 7bit world, and haven't for a very long time. +> Having to scan outbound text for whether the 8bit is set will just be +> more lovely CPU down the drain. + +Not really - you're already scanning to see if it's particularly long. +We shove everything more than 1024 bytes into a literal in Cyrus, +without even parsing it. And you need to parse the whole thing for +" characters anyway unless you're going to be REALLY bogus about it, +so your CPU argument doesn't hold any water. Easy to just set the +"must_send_literal" flag when you see the first 8 bit character, at +which point you can stop scanning and just shove the bytes onto the +wire with a {size}\r\n in front. + +> > You send 8bit stuff inside quotes. +> +> And probably in error messages, too. Not even sure what to do about that. + +Ahh, error messages. No, I don't know what to do about that either - but +I'm not so concerned so long as you don't eject endline characters in them. + +rfc3501 says: + +text = 1*TEXT-CHAR + +TEXT-CHAR = + +It also said "any char is 7 bit US-ASCII unless otherwise specified", but +you're less likely to get into hot water here, because most things are just +scanning to the \r\n. + +> >> I know there are other issues, like we sometimes don't get the size quite +> >> right (comes of storing the message with just LF line endings and having to +> >> convert to CRLF), but mostly we tend to bend the spec but not break them... +> >> matching the IMAP mailbox model with the gmail one is tough. +> > +> > Yeah, that's a bit messy. ?Any particular reason, other than saving a +> > few bytes? +> +> I'm sure at the beginning it was "why do we need these anyways, it'll +> save a few bytes". Unfortunately, once N because big enough, adding +> 1/65th to N is also very big. Though, with compression, probably not +> appreciable so. + +Yeah, that's a messy path to go down. I really to like saving the +exact RFC822 blob, or alternatively enough information that you can +reconstruct it precisely. I can see benefits in decoding base64 and +QP rubbish into the end result and storing that instead, but I'd want +to keep a reverse transcoder ID and binary diff (if required) to bring +back the original bytes if needed - and of course a checksum to make +sure they really were the original bytes. + +> The more amazing thing is how far along we went in coding before we +> actually had issues with it. Almost no clients actually cared that we +> only sent LF, except Outlook would eat characters when fixing +> soft-line breaks for quoted-printable messages since it just blindly +> assumed CRLF. + +Cyrus rejects messages with a bare \n I think. + +> >> I tried running Timo's tests against gmail, but its pretty hard to debug +> >> failures, and the set of tests isn't quite wide or separable. ?Its somewhere +> >> on the todo list to work that again. +> > +> > Improving the tests would be nice too. ?We have our own thing, cassandane, +> > which does a whole test harness for running multiple Cyrus instances and +> > testing things like replication and our "murder" clustering thing too. +> > +> >> I would say that our biggest issue with IMAP is that the amount of resources +> >> required for some of the commands is really high, which is hard to optimize +> >> for or to fairly share resources. +> > +> > body search is the real killer for us, everything else is pretty lightweight. +> +> Clients can ask for any random piece of information about every +> message in the store, and our stores can get very large. One of the +> syncing tools (offlineimap, iirc) randomly also asked for INTERNALDATE +> on every sync request (ie, UID FLAGS) even though it 1) never changes +> (by spec) and 2) they didn't actually use it. Doing that on a 1M +> message store every 5-10m when that data isn't in the "small" data, +> but required us to fetch the full meta data for every message... +> expensive. The smarter model is the adaptive meta-data model, but +> re-generating and re-storing the metadata for 1M messages also isn't +> cheap. + +Yeah, bloody offlineimap. I'm glad that appears to be fixed in more +recent versions. Of course, Cyrus keeps the INTERNALDATE in the index +file, so it's trivially already present in the struct. + +Of course offlineimap is probably a vanishingly small part of your +userbase, and also quite patchable - I suspect if you'd "fixed" it, +the patch would have been accepted. + +> The real peach though is probably MULTIAPPEND which wants us to allow +> a virtual infinite amount of data upload in a single transaction. +> Even if we figured out a way to handle that given our constraints, we +> wouldn't want to do it since the worst possible outcome there is to +> throw the entire thing away on failure. Just spend a couple hours +> uploading it again! + +Which is why I'd love to be able to upload the messages to a staging +location and then tag them with a: + +(mailbox, uid, modseq, internaldate, flags, annotations) + +set in a later small upload. But that's where having a custom replication +protocol wins over generic IMAP! It also means you can apply COPY and +UPLOAD intermingled, by calling RESERVE on the messages you're about +to copy. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22772.mbox:2,S new file mode 100644 index 00000000..463d710a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22772.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 19 07:35:49 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] GMail IMAP: returning BODYSTRUCTURE for embedded + messages +In-Reply-To: <4DD4F566.2070607@gentoo.org> +References: <4DD4F566.2070607@gentoo.org> +Message-ID: + +On Thu, 19 May 2011, Jan Kundr?t wrote: +> I'd appreciate if you could investigate your compliance with the format +> of BODYSTRUCTURE you generate when working with certain messages, as +> described in this messages. The same issue was reported to you through +> an internal issue tracker in January 2011 by Henner Zeller on my behalf. + +And was reported by me more than 3 years ago. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22796.mbox:2,S new file mode 100644 index 00000000..7289ff6c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22796.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 4 20:34:40 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAA91C9.7050706@aol.com> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAA79EE.20003@aol.com> + + <4CAA91C9.7050706@aol.com> +Message-ID: + +On Mon, 4 Oct 2010, John Snow wrote: +> They know via the phone. These impatient people call to see if the +> recipient has read the mail that they just sent. They expect the mail to +> arrive as soon as it's sent. + +So they touch their email client, and at once it shows the message. + +Email is not instantaneous. As more policy is imposed, it will become +even less so; including such things as email delivery being withheld +pending review by compliance. + +Not even BlackBerry is instantaneous any more. + +Live with it. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22807.mbox:2,S new file mode 100644 index 00000000..1c5462ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22807.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 05:44:43 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111437.03613.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> + <201006111437.03613.witold.krecicki@firma.o2.pl> +Message-ID: + +On 11.6.2010, at 13.37, Witold Kr?cicki wrote: + +>> I once thought about implementing MOVE operation to Dovecot to improve +>> speed. But then I realized that if client sends STORE \Deleted and EXPUNGE +>> in same IP packet, I can just optimize away the rename()s caused by STORE. +>> The remaining link()+unlink() should then be about as fast as rename(). +>> The only exception is OSX with HFS filesystem, where hard links are really +>> inefficient. +> And how hard it would be to really implement it in Dovecot? + +Much more difficult than I originally thought. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22810.mbox:2,S new file mode 100644 index 00000000..7b5341a9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22810.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dkarp at zimbra.com Sun May 30 12:41:03 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] NAMESPACE and LIST +In-Reply-To: +Message-ID: <1256742111.31.1275248463822.JavaMail.root@dogfood.zimbra.com> + +Apologies, but could you elaborate on the difference between + +> > * NAMESPACE (("" "/")) (("/home/" "/")) NIL +> > * LIST (\NoSelect) "/" "" + +and + +> * NAMESPACE (("" "/")) (("~" "/")) NIL +> * LIST (\NoSelect \HasChildren) "/" ~user4/ +> +> * NAMESPACE (("" "/")) (("#user." "/")) NIL +> * LIST (\NoSelect \HasChildren) "/" #user.user4 + +(Also, is the trailing "/" necessary in the latter two cases?) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22817.mbox:2,S new file mode 100644 index 00000000..b8d0efb3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22817.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From mrc+uw at panda.com Wed Dec 30 11:19:49 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: <4218.1262179770@succubus.panacea.null.org> +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + + <4218.1262179770@succubus.panacea.null.org> +Message-ID: + +On Thu, 31 Dec 2009, Joel Reicher wrote: +> A MIME part can contain text data too. + +A MIME part can contain a completely separate message too. + +> I think it's likely that users view messages as the "privileged" container +> that is at the end of the name hierarchy only because they are using +> interfaces that place it there. + +I agree. Usability studies are rarely conducted in a completely unbiased +and controlled setting; and thus quite often lead to predetermined +answers. Thus, we have atrocities (like the Microsoft ribbon or the Apple +single-button mouse) which we were assured that usability studies had +proven were the perfect interface. + +The problem is that the very questions and framework of the study bias the +answer. It's like the political opinion polls commissioned by a political +party. + +> Being a container does not, in itself, +> seem to give messages any kind of special status, because lots of other +> things are containers too. + +Yup. Messages are not the end node of the name hierarchy; the mailbox is. +If a message was the end node of the name hierarchy, there would be no +need to select the mailbox prior to accessing the mailbox. Select is a +very different operation from descending the name hierarchy, and creates a +very complex state. + +It's easy to dismiss all this, because only a few IMAP clients are +sophisticated enough to take advantage of this state. The vast majority +are glorified POP clients that babble IMAP protocol. This came about +because of the long-obsolete notion that Internet access is a difficult +and expensive commodity that requires that the client must keep a mirror +of what's on the server. The success of webmail (which transforms the +browser into the ultimate thin client) proves that this notion is complete +nonsense today. Yet people persist in claiming it. + +Webmail won the war for the hearts and minds of users, not because webmail +is so much better than IMAP, but rather because webmail is so much better +than POP. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22820.mbox:2,S new file mode 100644 index 00000000..8f6c2f47 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22820.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Wed Nov 18 11:55:52 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: <2134052040.817.1258573414683.JavaMail.root@dogfood.zimbra.com> +References: <2134052040.817.1258573414683.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1258574152.3022.695.camel@timo-desktop> + +On Wed, 2009-11-18 at 11:43 -0800, Dan Karp wrote: +> > You mean Thunderbird could allow accessing mailboxes it can't LIST +> > among regular mailboxes? How? I won't believe it until I see it +> > myself. :) I didn't see any obvious ways to do that. +> +> Not sure, but heard that it's possible. I certainly could be wrong. +> But given that the NAMESPACE RFC explicitly allows servers to permit +> direct access to a given other user's mailboxes while returning NO +> to a wildcarded LIST, I'd think that a good client would *have* to +> do something along those lines... + +Sure, but there aren't many good IMAP clients.. + +Actually I think the whole idea of listing other users' shared mailboxes +without having to explicitly opt-in isn't such a good idea. It's way too +easy to spam others by just sharing your mailboxes to them. The process +should be: + +1. foo shares mailbox to bar +2. foo tells bar via email/phone/whatever that he has shared a mailbox +3. bar clicks something and types foo's name +4. foo's shared mailboxes are now appear in LIST to bar +.. +x. bar clicks something to get a list of users/groups whose mailboxes +he's accepted. he can delete entries from the list and those users' +shared mailboxes disappear from LIST. + +But the "clicks something" part would require some web UI or a new IMAP +extension or something, so for now at least it's not really an option. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22832.mbox:2,S new file mode 100644 index 00000000..9bd99fb3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22832.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From davidr at imap.cc Sun Jul 12 16:51:06 2009 +To: imap-protocol@u.washington.edu +From: David Rauschenbach +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] off-topic: stats on mail duplication, mailing + list sizes, etc? +In-Reply-To: <98779.1247438465@parc.com> +References: <97903.1247435045@parc.com> <4A5A5CA5.6020709@imap.cc> + <98779.1247438465@parc.com> +Message-ID: <4A5A76EA.2030708@imap.cc> + +Ah yes, Wave, the new e-mail protocol now being specified by the +internet's leading marketing & spyware company. Times 'a changin'. Or, +maybe not at all different from the D.O.J. roots of it all, considering +the definition of corporatism, and that they're one and the same. + +The Wave video demo is pretty good - I'm sure it will do well. As for my +role in things... the legacy protocols will still be the best way to +push content out to phones, and in that regard, IMAP has that very +useful disconnected mode, whereas Wave looks like it's for broadband +tethered devices only. In other words, pro-sumer Americans who never +travel abroad (the subset of the subset, globally speaking). Or, "the +bankrupt subset" might be the more distinct moniker for the next decade. + +I suppose Wave might get a disconnected mode shoe-horned in there late, +like an etag extension. It's easy to forget UIDPLUS was even late to the +IMAP party. + +David + + + +Bill Janssen wrote: +> David Rauschenbach wrote: +> +> +>> In a MIME store, lots of people forward the same attachment, but in +>> each case, the part header as different headers. Some MUAs use a +>> content-type "name" attribute field-param to store the file name, +>> others use the Content-Disposition "filename" field-param, etc. But in +>> both cases, you really want to store the 15 MB zip file attachment +>> just once. +>> +> +> Yes, I should really do that, too. I'm close already; attachments are +> stored as separate UpLib documents, with pointers to that document in +> the message. But the pointers are document IDs, not document +> fingerprints, so duplicates are possible. +> +> +>> As for what is profitable, I think Facebook, Twitter, et. al. are +>> successfully demonstrating that, en-masse, communication is routing +>> around the dinosaur e-mail protocols. Techies like us (especially the +>> older and the entrenched) are usually the last to wake up to the new +>> reality. +>> +> +> Perhaps. I'm already thinking about a Google Wave server for UpLib. +> +> Bill +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22835.mbox:2,S new file mode 100644 index 00000000..4a2f6027 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22835.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From tss at iki.fi Wed Jun 17 09:16:22 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: +References: <1245181628.21624.808.camel@timo-desktop> + +Message-ID: <1245255382.21624.854.camel@timo-desktop> + +On Wed, 2009-06-17 at 09:30 +0100, Sabahattin Gucukoglu wrote: +> On 16 Jun 2009, at 20:47, Timo Sirainen wrote: +> > Has anyone tested how well clients support catching capabilities after +> > login? I was planning on having Dovecot v2.0 send only very minimal +> > capabilities before login. +> +> Is it standard behaviour to even expect clients to understand +> capabilities in untagged responses at all? (Or has this just become +> unspoken convention somehow?) + +Well, RFC 3501 mentions automatically sent capabilities in a few places, +like: + +> A server MAY send capabilities automatically, by using the +> CAPABILITY response code in the initial PREAUTH or OK responses, +> and by sending an updated CAPABILITY response code in the tagged +> OK response as part of a successful authentication. It is +> unnecessary for a client to send a separate CAPABILITY command if +> it recognizes these automatic capabilities. + +So I guess it's preferred to send CAPABILITY response code in response +codes instead of untagged CAPABILITY, and this is also what Dovecot does +as long as client doesn't ignore them by requesting the CAPABILITY +again. The untagged CAPABILITY sending is only a workaround to many +commonly used clients. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22844.mbox:2,S new file mode 100644 index 00000000..9db9df21 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22844.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From jsiegle at psu.edu Wed Feb 18 09:09:06 2009 +To: imap-protocol@u.washington.edu +From: Jonathan Siegle +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +Message-ID: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + +Consider the following imap commands: + += +0 login userid passworD +1 select inbox +2 idle += + + +This is the only connection to the inbox. Must a server tell the idle +client when new messages arrive using the RECENT flag? + + Must a client issue DONE followed by some IMAP command(check/select/ +etc) to know if new messages have arrived? + +I thought I knew, but I can't get through the english in rfc 2177. + +Thanks, +Jonathan +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: smime.p7s +Type: application/pkcs7-signature +Size: 2541 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22847.mbox:2,S new file mode 100644 index 00000000..b8ae4767 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22847.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From bill.shannon at sun.com Thu Jan 29 14:06:06 2009 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: SEARCH OR question +In-Reply-To: +References: <4981FBC7.9040509@sun.com> + +Message-ID: <4982284E.1000102@sun.com> + +Mark Crispin wrote: +> Are you sure that it's Exchange 2003? AFAIK, 2003 was the last working +> version of Exchange and I recall it as working well. + +Yes, based on the trace from the customer, it's: + +* OK Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 +(myServer.org) ready. + +Perhaps the bug is due to the particular terms or keys the customer is using. +He's used the same terms with success on other servers, so the problem seems +to be specific to Exchange. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22850.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22850.mbox:2,S new file mode 100644 index 00000000..d7d3e634 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22850.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Nov 11 04:29:27 2008 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] RFC 5256 +In-Reply-To: <1063_1226400929_mABAtOPL020049_837898.62205.qm@web24305.mail.ird.yahoo.com> +References: <1063_1226400929_mABAtOPL020049_837898.62205.qm@web24305.mail.ird.yahoo.com> +Message-ID: <49197AA7.7060209@isode.com> + +sathish anton wrote: + +>Let me know if there is an IMAP implentation with RFC 5256. +> +> +Several, check +for an incomplete list (search for SORT and THREAD=). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22853.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22853.mbox:2,S new file mode 100644 index 00000000..bafb948a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22853.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From markrcrispin at live.com Tue Oct 7 08:52:52 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP APPEND Flag Question +In-Reply-To: <1223394203.27703.108.camel@hurina> +References: <03ef01c92890$4ee4a9e0$ecadfda0$@com> + <1223394203.27703.108.camel@hurina> +Message-ID: + + +Timo certainly describes a correct behavior, and probably the most strictly correct behavior. + +In my opinion, a more useful behavior is to issue an untagged NO identifying the unknown flags as a warning, but otherwise append the message and just ignore those flags. + +RFC 3501 says that keywords are created "by attempting to store those flags in the mailbox". This is somewhat ambiguous due to the use of lowercase "store", but I interpret this as meaning that only a STORE or UID STORE command can create keywords, and a COPY or APPEND command can not. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + +---------------------------------------- +> Subject: Re: [Imap-protocol] IMAP APPEND Flag Question +> From: tss@iki.fi +> To: tom@slowar.com +> Date: Tue, 7 Oct 2008 18:43:23 +0300 +> CC: imap-protocol@u.washington.edu +> +> On Tue, 2008-10-07 at 11:21 -0400, Tom Lewis wrote: +> +>> In the APPEND command, it accepts a parenthesized list of flags, which +>> can include custom flags. My question is, what should the server +>> response be if the APPEND command includes custom flags, but the +>> server does not have the ability to store these flags? +> +> From the RFC: +> +> 6.3.11. APPEND Command +> +> NO - append error: can't append to that mailbox, error +> in flags or date/time or message text +> +> So reply something like "NO Can't store keywords". +> + +_________________________________________________________________ +See how Windows Mobile brings your life together?at home, work, or on the go. +http://clk.atdmt.com/MRT/go/msnnkwxp1020093182mrt/direct/01/ diff --git a/demo/ermis-f/imap-protocol/cur/1600095087.22862.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095087.22862.mbox:2,S new file mode 100644 index 00000000..bd172565 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095087.22862.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From fret at memecode.com Fri Aug 29 03:44:38 2008 +To: imap-protocol@u.washington.edu +From: Matthew Allen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] FETCH BODY[...] format.. +Message-ID: + +Hi All, + +I've read the rfc and I can't make out the correct syntax for retreiving just one mime segment of an email. So I'm initially getting the structure of the message via FETCH BODYSTRUCTURE and then I'm hoping to parse that and then download selected segments of the body based on what I find in the BODYSTRUCTURE. What is the method of indexing that works in BODY[] ? + +e.g. initially I'll be displaying the text/html of the message and not download the attachments. So I need to parse the structure and work out which of those map to the text/html alternatives and so on... + +Thanks +-- +Matthew Allen - Memecode Software +(http://www.memecode.com) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22595.mbox:2,S new file mode 100644 index 00000000..decb0c16 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22595.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From stuart.brandt at teamaol.com Tue Mar 24 17:08:49 2015 +To: imap-protocol@u.washington.edu +From: Stu Brandt +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: +References: <55109D4C.2080900@laposte.net> + <5510BC3A.9020702@verizon.net> <5511EDA6.7060107@laposte.net> <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> + +Message-ID: <5511FC91.2040801@teamaol.com> + +Another vote for clients using ID! + +It's particularly bothersome with AWS or other cloud hosted email client +implementations that don't use OAuth2. Only way to truly stop +unrecognized access is to change password, but then you have to deal +with repeated accesses that look like cloud originated password cracking +attempts. + +Stuart + +On 3/24/15 7:28 PM, Brandon Long wrote: +> +> +> On Tue, Mar 24, 2015 at 4:15 PM, Bron Gondwana > wrote: +> +> On Wed, Mar 25, 2015, at 10:05 AM, Gilles LAMIRAL wrote: +> > Dear Joshua, +> > +> > > I don't know what options you're talking about, but it's worth +> pointing out the Thunderbird autoconfiguration project +> > > +> (). +> > +> > I'll have a look at Thunderbird/Autoconfiguration, +> > even if I go crazy when I configure a new account with Thunderbird, +> > it is always irrelevant for what I do, the manual way is first +> hidden, +> > maybe presented at the end or after a failure, a headache each time. +> > +> > I won't start searching the imap hostname from the user login +> parameter. +> > I'll start by guessing server software name from the imap responses, +> > not from a third party scan, and from hard coded rules if possible. +> +> https://tools.ietf.org/html/rfc6186 might be your friend too. +> +> > > If IMAP ID is supported, that is a useful command to use. +> > +> > A server that replied well to ID would have already announced itself +> > in the first banner. So, for my purpose, ID looks useful when +> useless. +> > +> > But thanks to mention ID, I'll add it in imapsync, this way Gmail +> > and Outlook.com will be able to know easily how many transfers +> are made +> > by imapsync each day (not difficult without ID anyway). +> +> We like ID commands at FastMail too - we log them and it gives us +> both an +> idea of usage patterns, and the ability to give more accurate bug +> reports if we +> detect something weird. +> +> +> We also show it to users in their activity log, which is helpful so +> they know what was connecting. +> +> Its also helpful when we need to track down a developer and have a +> discussion about what they're doing. +> +> +> +> Brandon +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22743.mbox:2,S new file mode 100644 index 00000000..ac602774 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22743.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Fri Mar 23 17:48:38 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + +Message-ID: + +On 23.3.2012, at 22.36, PA wrote: + +> On Feb 18, 2009, at 10:48 AM, Mark Crispin wrote: +> +>> On Wed, 18 Feb 2009, David Rauschenbach wrote: +>>> In a similar vein, our mobile gateway issues a fake EXISTS at around the +>>> 2-minute mark, to keep the mobile operator networks from timing out the TCP +>>> session. +>> +>> UW and Panda issue an untagged OK at the two minute point for the same +>> reason. +>> +>> All of which renders IDLE pretty much pointless compared to polling. +> +> Is that still the current state of affair, 3 years on? IDLE being rather pointless compared to just plain polling? Or? + +It depends on your purpose: + +a) If the only thing you care about is immediate notifications of new emails and other changes, then IDLE works fine + +b) If you care about power usage, then IDLE isn't much better from polling, because in either case the device needs to wake up every n minutes to do some work and send some data + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22756.mbox:2,S new file mode 100644 index 00000000..fec8c243 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22756.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From brong at fastmail.fm Sun Nov 13 12:56:59 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> +Message-ID: <20111113205659.GA27151@brong.net> + +On Sun, Nov 13, 2011 at 09:37:48PM +0100, Petite Abeille wrote: +> >> * 1 FETCH (FLAGS (\Seen)) +> >> * 1 FETCH (RFC822.SIZE 44827) +> On Nov 13, 2011, at 9:14 PM, Bron Gondwana wrote: +> +> > Compliant or not, I can bet you it will break a lot of clients. +> +> But, on the other hand, doesn't it happen already? For example when a BODY fetch triggers a FLAGS fetch? +> +> ABC 1 FETCH (BODY[HEADER] ) +> * 1 FETCH (BODY[HEADER] {342} +> ... +> * 1 FETCH (FLAGS (\Seen)) +> ABC OK FETCH completed + +Not with Cyrus - we collect up all the data about which fetches will +be required first, and then iterate the mailbox, spitting them out +in order. + +This is quite specific, and for a reason - we calculate what flag +changes might be needed and do them with a mailbox lock, then we +release the lock before sending the response, so that other clients +are not waiting on the lock while network traffic is going on. + +But it does have the other advantage of never generating duplicate +FETCH responses too. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22759.mbox:2,S new file mode 100644 index 00000000..74120e59 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22759.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 31 16:03:25 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <3124.1320100892.530453@puncture> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org><1320096826.9022.140660992904397@webmail.messagingengine.com> + <3124.1320100892.530453@puncture> +Message-ID: <1320102205.30039.140660992940805@webmail.messagingengine.com> + +On Monday, October 31, 2011 10:41 PM, "Dave Cridland" wrote: +> On Mon Oct 31 22:06:47 2011, Brandon Long wrote: +> > talking existing extensions, not making up new ones). Ie, we +> > implemented COMPRESS when we saw that Thunderbird supported it (and +> > used their implementation to fix bugs in ours) and then when Apple +> > saw +> > we supported it, they added it to iOS (I'm guessing, but that's what +> > it looked like). +> +> So Thunderbird implemented it because Cyrus did. + +Basically, yes. And I think Cyrus implemented it mainly for inter-Cyrus +links to make murder more efficient between campuses - and then I wanted +it for replication as well. + +> Cyrus implemented it because Polymer and M-Box did. (Actually I can't +> recall if M-Box or Cyrus got there first). +> +> And Polymer did because Arnt did in Archiveopteryx. +> +> So actually everyone's just slavishly following Arnt. +> +> So on that principle, if I can get Arnt to implement ACAP, then +> Google will surely follow. + +Go for it! + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22772.mbox:2,S new file mode 100644 index 00000000..ab0fe735 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22772.mbox:2,S @@ -0,0 +1,103 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 19 08:20:21 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <4DD4FAAC.3090101@gentoo.org> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <4DD4FAAC.3090101@gentoo.org> +Message-ID: + +On Thu, 19 May 2011, Jan Kundr?t wrote: +> Please advise me on a way to better show information about the total +> number of unread messages in a mailbox. I can't use STATUS on a SELECTed +> mailbox, and I can't do anything when I see an EXPUNGE of a message for +> which I haven't got flags before. Shall I decrement my unread count, or +> not? To my knowledge, there's absolutely no way of doing that correctly +> except knowing FLAGS of all messages in advance. + +SEARCH will always be less data than fetching all the messages in advance. + +It can be argued that you're still in a world of hurt in a 100K mailbox +where most messages are unseen (or there's an unseen message near the +start). But it is less of a world of hurt than fetching all the flags. +What's more, this is an edge case, not the normal use case. + +[And it's not all that bad. I've loaded threads for mailboxes that large, +via WiFi, on a bitty device. It took a while, but not forever. +Considering that most bitty device clients toss their cookies at much less +than 1000 messages, the fact that it handled 100K messages at all was +amazing and the modest delay was excusable.] + +Unseen messages in the normal use case are clustered at the top of the +INBOX. That's not going to hurt. This is the case that you care about, +not the edge case. + +You even have warning about the edge case; the UNSEEN value from SELECT! +If you see: + * 100000 EXISTS + * OK [UNSEEN 1] +that indicates that there may be as many as 100000 unseen messages (and +even suggest that all messages are unseen). + +Conversely, if you see: + * 100000 EXISTS + * OK [UNSEEN 99982] +Then you know that there are, at most, 19 unseen messages. + +Depending upon how much you care about the edge case, there are some +creative things that you can do. For example, you can do + tag SEARCH 1:50 UNSEEN +and found that all of the first 50 messages were unseen, that might be an +indicator that all messages are unseen. + +In fact, if you do + tag FETCH 1 FLAGS +or + tag SEARCH 1 RECENT +and find that the first message is recent, that is a sure indicator of +that case. You don't care any further. + +You may also want to say that showing an unseen count is only useful if it +is under some value. Thus if you do: + tag SEARCH 99900:100000 UNSEEN +and see that they are all unseen, then maybe just report "99+" as the +unseen value. As an end user, once we get into three digit unseen counts, +we're in the world of "lots of unseen messages" that I'm probably not +going to read on a bitty device screen. + +It is limited only by your imagination (a problem for some Gen-Xers) and +the number of RTTs that you're willing to spend. + +There are lots of other tricks that you can do with message sequence +numbers and the very useful property of strict ascendency. A client that +does not use MSNs at all will suck. It can't help but suck; it is denied +most of the magic of IMAP. + +Last but not least, there is an extension called ESEARCH that solves this +problem. Unfortunately, there is ambiguity in how to interpret the +ESEARCH specification. But for this purpose, if the server offers ESEARCH +you are home free. + +In conclusion, let me emphasize that there is quite a bit of magic in IMAP +that you'll never learn if you just look at the examples and start +programming without considering the interactions. IMAP is a (too) subtle +protocol; yet every arcane aspect has a purpose - at times quite deep and +magical. + +Learn as well to distinguish between edge cases and common cases. Don't +say "there's no point to doing the common case well because the edge case +will suck"; that will lead you to sucking in the common case. Let the +edge case suck; you want to excel in the common case. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22796.mbox:2,S new file mode 100644 index 00000000..2441410d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22796.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Oct 4 21:46:54 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push + Email") Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> <4CAA0F5C.7030009@lists.grepular.com> <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> <11166.1286223088.054596@puncture> <4CAA7379.3070307@aol.com> + +Message-ID: <4CAAADBE.1010809@orthanc.ca> + +On 10-10-04 5:56 PM, Mark Crispin wrote: +> That assumes that the IMAP server notifies instantly, instead of polling +> internally at a fixed interval. This, in turn, assumes some form of +> message passing between the MDA and the IMAP server. + +That's a reasonable assumption these days. I did a test at work a month +ago: send mail from my laptop to myself: + +1) compose in mail.app on my macbook (office lan in victoria) +2) submission with starttls (via orthanc.ca, living on the US east coast) +3) orthanc spamassassins the message, then forwards to the gmail cloud +which hosts our $work mail +4) gmail crunches and does whatever filtering it does, then dumps in my +mailbox +5) gmail imap server notices new mail and breaks out of imap idle to +notify mail.app on my laptop + +End-to-end time: < 10s. + +As a kid who grew up on dialup UUCP, I continue to be amazed. But only +two people I share the office with have ever seen a modem. + + +> I find it remarkable that anyone can get bent out of shape because it may +> take as much as a minute or two to be notified about a newly arrived +> email; particularly as it may have taken some ungodly amount of time for +> the message to have travelled from the senders MSA and the recipient's +> MDA. + +Sorry Mark, but reality has overtaken us. BGP is the new pathalias. + +That the SMTP/IMAP delivery path can go end-to-end in well under a +minute is a testament to the protocols and the systems that implement +them. If they can manage (say) <60s 99.999% of the time, I think we won. + +Mail and IM solve two different problems. IM in absolutely instant, but +if you're not there, it's gone. Mail provides nearly-instant +gratification with fallback queueing. This is all good stuff, even if +we need to beat people over the head sometimes to make themunderstand +the (dis)advantages of each. + +> We have a perfectly good facility called instant messaging for real-time +> communication. + +Yet we still have letters to compliment personal conversations. Email is +far from dead. + +IMAP without IDLE is like read() without blocking. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22807.mbox:2,S new file mode 100644 index 00000000..58adf761 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22807.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 05:54:51 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111437.03613.witold.krecicki@firma.o2.pl> + +Message-ID: <201006111454.51874.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 14:44:43 Timo Sirainen wrote: +> On 11.6.2010, at 13.37, Witold Kr?cicki wrote: +> >> I once thought about implementing MOVE operation to Dovecot to improve +> >> speed. But then I realized that if client sends STORE \Deleted and +> >> EXPUNGE in same IP packet, I can just optimize away the rename()s +> >> caused by STORE. The remaining link()+unlink() should then be about as +> >> fast as rename(). The only exception is OSX with HFS filesystem, where +> >> hard links are really inefficient. +> > +> > And how hard it would be to really implement it in Dovecot? +> +> Much more difficult than I originally thought. +Well, 'brutal' (and nonsense in a way) implementation would be to 'internally' +do copy messages listed and then expunge messages that were copied (at least +there is no setting flags). +I thought on including the statement that if it would take more time to do +'move' than to do cp/st/ex routine the server SHOULD NOT provide MOVE +extension. +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22810.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22810.mbox:2,S new file mode 100644 index 00000000..db4023ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22810.mbox:2,S @@ -0,0 +1,79 @@ +MBOX-Line: From mrc+imap at panda.com Sun May 30 16:44:10 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] NAMESPACE and LIST +In-Reply-To: <1256742111.31.1275248463822.JavaMail.root@dogfood.zimbra.com> +References: <1256742111.31.1275248463822.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Sun, 30 May 2010, Dan Karp wrote: +> Apologies, but could you elaborate on the difference between +>>> * NAMESPACE (("" "/")) (("/home/" "/")) NIL +>>> * LIST (\NoSelect) "/" "" +> and +>> * NAMESPACE (("" "/")) (("~" "/")) NIL +>> * LIST (\NoSelect \HasChildren) "/" ~user4/ +>> +>> * NAMESPACE (("" "/")) (("#user." "/")) NIL +>> * LIST (\NoSelect \HasChildren) "/" #user.user4 + +The whole point is that "/home/" is a child of "/", whereas "~" and +"#user." are not. + +> (Also, is the trailing "/" necessary in the latter two cases?) + +Sorry for the confusion. + +The trailing "/" is necessary. + +Also, for the + * NAMESPACE (("" "/")) (("/home/" "/")) NIL +case the correct response to + tag LIST /home/joe "" +is + * LIST (\NoSelect) "/" "/" +with or without \HasChildren + +The + * LIST (\NoSelect) "/" "" +response (with or without \HasChildren) is for the default namespace. + + +Thus, the corrected examples: + + 1 namespace + * NAMESPACE (("" "/")) (("/home/" "/")) NIL + 1 OK NAMESPACE complete + 2 LIST /home/user4/box "" (or 2 LIST /home/user4/ "") + * LIST (\NoSelect) "/" "" + 2 OK LIST complete + + 1 namespace + * NAMESPACE (("" "/")) (("~" "/")) NIL + 1 OK NAMESPACE complete + 2 LIST ~user4/box "" (or 2 LIST ~user4/ "") + * LIST (\NoSelect \HasChildren) "/" ~user4/ + 2 OK LIST complete + + 1 namespace + * NAMESPACE (("" "/")) (("#user." "/")) NIL + 1 OK NAMESPACE complete + 2 LIST #user.user4/box "" (or 2 LIST #user.user4/ "") + * LIST (\NoSelect \HasChildren) "/" #user.user4/ + 2 OK LIST complete + + +Note that in the above examples + 2 LIST /home/user4 "" + 2 LIST ~user4 "" + 2 LIST #user.user4 "" +refer to the superior of each of these names due to the missing trailing +"/". This is probably not what you want and is probably undefined. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22817.mbox:2,S new file mode 100644 index 00000000..8250d39f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22817.mbox:2,S @@ -0,0 +1,124 @@ +MBOX-Line: From bhayden at umn.edu Wed Dec 30 12:24:57 2009 +To: imap-protocol@u.washington.edu +From: Brian Hayden +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + + <4218.1262179770@succubus.panacea.null.org> + +Message-ID: <4C25BD1C-720E-46FC-B478-C4C2FEAB71FD@umn.edu> + + +On Dec 30, 2009, at 1:19 PM, Mark Crispin wrote: + +> On Thu, 31 Dec 2009, Joel Reicher wrote: +> +>> I think it's likely that users view messages as the "privileged" +>> container +>> that is at the end of the name hierarchy only because they are using +>> interfaces that place it there. +> +> I agree. Usability studies are rarely conducted in a completely +> unbiased and controlled setting; and thus quite often lead to +> predetermined answers. Thus, we have atrocities (like the Microsoft +> ribbon or the Apple single-button mouse) which we were assured that +> usability studies had proven were the perfect interface. +> +> The problem is that the very questions and framework of the study +> bias the answer. It's like the political opinion polls commissioned +> by a political party. + +Your generalizations about usability studies are well and good--and +have some truth to them, but are still generalizations. Let's get +specific: I am talking about spontaneous utterances from people alone +in a room doing normal tasks in an email client. Not answers to +interview questions. + +And fifteen years of help desk reports. + +The average user views a message as privileged because it is the +apparently atomic unit that they care about. Yes, I know it isn't +atomic. Yes, I know it might contain a text/plain MIME part with the +body, a text/html part with another version of the body, and three +octet-stream parts that are GIFs... *but the user doesn't care*. I +agree that being a container is not why it's special, precisely +because the vast majority of users would never describe a message as a +container. It's "the message" as a unit that they care about because +that is how the human brain works. You send someone "a message" +whether it's speaking a sentence to them or sending them a letter in +the post. + +> Yup. Messages are not the end node of the name hierarchy; the +> mailbox is. If a message was the end node of the name hierarchy, +> there would be no need to select the mailbox prior to accessing the +> mailbox. Select is a very different operation from descending the +> name hierarchy, and creates a very complex state. +> +> It's easy to dismiss all this, because only a few IMAP clients are +> sophisticated enough to take advantage of this state. The vast +> majority are glorified POP clients that babble IMAP protocol. This +> came about because of the long-obsolete notion that Internet access +> is a difficult and expensive commodity that requires that the client +> must keep a mirror of what's on the server. The success of webmail +> (which transforms the browser into the ultimate thin client) proves +> that this notion is complete nonsense today. Yet people persist in +> claiming it. + +I'm not sure what this has to do with anything. People like us can +discuss "the end node of the name hierarchy" all day, but users aren't +interested until it has a meaningful translation into something useful. + +More to the point: when *all* X have problem Y, a reasonable person +needs to ask what might be causing Y--because it's unlikely that the +designer of *every* X is precisely the same kind of stupid. + +I'd draw your attention to a server behavior that you approved of +earlier in the thread: + +>> [1] "tag CREATE foo/" +> Same as "CREATE foo". +>> [2] "tag DELETE foo" where foo is selectable and has a child? +> Leave foo as \Noselect, don't delete children. +>> [3] "tag DELETE foo/bar" where foo is \NoSelect and bar is the only +>> child? +> Delete both foo/bar and foo. + +This is unfriendly; a user never expects a parent to disappear simply +because they deleted a child. Not only is it unexpected, but it's +inconsistent; they can create an empty container, but it's removed +unilaterally if it happens to become empty after it's had something in +it? + +How do you propose to communicate to a user the following: + +"See this thing here? It's like a directory in your filesystem. Except +it can only contain other directories that in turn contain text files +and images--it can't contain any text or images itself. Oh, and if you +have one of those directories underneath it that does contain text and +images, and you delete that directory, this one will disappear too and +you'll have to go to the trouble of recreating it next time you want +to put something inside it. + +Have fun!" + +So what will happen is that you will create a server where actions +have side effects that were not asked for and are not desired, so then +clients will (each in their own hackish way) work around it, and then +people like us will complain about the stupid clients. + +You admitted earlier that the whole concept is a mistake that you +regret; so I'm not sure what the use is of saying clients are "crappy" +because they haven't come up with a good way to represent this thing +that you acknowledge is a goofy kludge. + +That was my point. + +-Brian + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22820.mbox:2,S new file mode 100644 index 00000000..64894d66 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22820.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From mrc+uw at Panda.COM Wed Nov 18 12:18:44 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: <1258574152.3022.695.camel@timo-desktop> +References: <2134052040.817.1258573414683.JavaMail.root@dogfood.zimbra.com> + <1258574152.3022.695.camel@timo-desktop> +Message-ID: + +On Wed, 18 Nov 2009, Timo Sirainen wrote: +> Actually I think the whole idea of listing other users' shared mailboxes +> without having to explicitly opt-in isn't such a good idea. It's way too +> easy to spam others by just sharing your mailboxes to them. + +This is my point in a current discussion. + +Also, I can think of a case where "accessible" and "published" should be +very different. The fact that something can be listed does not mean that +it should be published. + +Consider that I am organizing a class reunion, and have created an account +and a series of mailboxes in my private space for that purpose. Since I +don't know everybody's id (or even everybody) in the far-flung class, I +give access to anyone. I then pass on the word to those people I know +that "the class reunion information is in the mrc-class account", and this +is passed on by these to others. + +Should these mailboxes be published to the world due to the anyone rights, +and thus show up in everybody's list of mailboxes? Or, as I contend, just +to those who know to look in the mrc-class account? + +Thus, I consider "publishing to shared" and "making accessible via access +control" to be two separate things, and that the +l right by itself does +not constitute publication. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22832.mbox:2,S new file mode 100644 index 00000000..3bec0551 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22832.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Jul 12 23:41:26 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] off-topic: stats on mail duplication, mailing + list sizes, etc? +In-Reply-To: <97903.1247435045@parc.com> +References: <97903.1247435045@parc.com> +Message-ID: + +Bill Janssen writes: +> I'm interested in figuring some strawman stats about email duplication +> that could be addressed by a site-wide IMAP server. For example, how +> many mailing lists an "average" organization has; the average number +> of users per mailing list; the average message traffic (in both +> messages and bytes) per day, per week, per year. I know that a number +> of you have actual experience with this. + +Yes, but unfortunately such numbers tend to be tied a little too tightly +to private email. + +I do know a couple of things, though: + +1. The number of mailboxes in which a particular bodypart is stored +varier per installation. I haven't seen an average greater than 4, I've +seen several only a little below, and I have seen averages close to 1. +I'd use 3 or 4 as a number if I were you. + +2. Mailing lists are difficult to count. You can count owner-* +addresses, you can count List-ID fields, but there's a lot of +unofficial address lists stored in people's address books or even +heads. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22835.mbox:2,S new file mode 100644 index 00000000..dcb0f847 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22835.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From mrc+uw at panda.com Wed Jun 17 09:36:54 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: <1245255382.21624.854.camel@timo-desktop> +References: <1245181628.21624.808.camel@timo-desktop> + + <1245255382.21624.854.camel@timo-desktop> +Message-ID: + +On Wed, 17 Jun 2009, Timo Sirainen wrote: +> Well, RFC 3501 mentions automatically sent capabilities in a few places, +> like: +>> A server MAY send capabilities automatically, by using the +>> CAPABILITY response code in the initial PREAUTH or OK responses, +>> and by sending an updated CAPABILITY response code in the tagged +>> OK response as part of a successful authentication. It is +>> unnecessary for a client to send a separate CAPABILITY command if +>> it recognizes these automatic capabilities. + +Note that it says "CAPABILITY response code", not "untagged CAPABILITY +response" + +> So I guess it's preferred to send CAPABILITY response code in response +> codes instead of untagged CAPABILITY, and this is also what Dovecot does +> as long as client doesn't ignore them by requesting the CAPABILITY +> again. The untagged CAPABILITY sending is only a workaround to many +> commonly used clients. + +UW IMAP once sent automatic untagged CAPABILITY responses, and I had +complaints of numerous clients puking over it. Some were IMAP2 (and thus +this was expected), but others were supposedly IMAP4 capable. + +It was for this reason that the CAPABILITY response code came into being. + +This was 10 or so years ago. The clients which had problems may be +extinct by now. + +RFC 3501 requires that a client get new capabilities after STARTTLS (page +27), and strongly indicates that also be done after AUTHENTICATE (page 29) +and LOGIN (page 31). SASL requires that a client get new capabilities +after an AUTHENTICATE command that negotiates a security layer. + +What this all means: + 1) The client must acquire capabilities at: + . session start + . after the tagged OK for a STARTTLS command + . after the tagged OK for an AUTHENTICATE command that negotiates a + security layer + . at or after the tagged OK for an AUTHENTICATE command that does not + negotiate a security layer + . at or after the tagged OK for a LOGIN command + 2) After STARTTLS, the client MUST issue a CAPABILITY command. No form + of automatic capabilities can be used. + 3) After AUTHENTICATE that negotiates a security layer, the client MUST + issue a CAPABILITY command. No form of automatic capabilities can be + used. + 4) If the server includes a CAPABILITY response code in the initial + untagged OK or PREAUTH greeting, or in the tagged OK from an + AUTHENTICATE command (that does NOT negotiate a security layer) or + LOGIN command, the client can use those capabilities and not need to + issue a CAPABILITY command. + +Put another way, any client that benefits from the workaround is broken. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22844.mbox:2,S new file mode 100644 index 00000000..96e11fcb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22844.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From tss at iki.fi Wed Feb 18 09:54:53 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> +Message-ID: <1234979693.29240.1770.camel@timo-desktop> + +On Wed, 2009-02-18 at 12:09 -0500, Jonathan Siegle wrote: +> Consider the following imap commands: +> +> = +> 0 login userid passworD +> 1 select inbox +> 2 idle +> = +> +> +> This is the only connection to the inbox. Must a server tell the idle +> client when new messages arrive using the RECENT flag? + +You mean the "* 123 RECENT" response? The new message may not be recent, +so that might not work always. EXISTS response is what should always be +sent when new messages arrive. + +> Must a client issue DONE followed by some IMAP command(check/select/ +> etc) to know if new messages have arrived? + +I don't think anything requires that. And I know that several clients +use a connection that IDLEs forever, without bothering to even do DONE + +IDLE every 29 minutes to avoid disconnection. For Dovecot I decided to +just not disconnect IDLEing clients due to idling, it should eventually +notice disconnected TCP connections anyway. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22847.mbox:2,S new file mode 100644 index 00000000..258c9711 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22847.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From bill.shannon at sun.com Thu Jan 29 14:08:48 2009 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: SEARCH OR question +In-Reply-To: +References: <4981FBC7.9040509@sun.com> +Message-ID: <498228F0.9050505@sun.com> + +Arnt Gulbrandsen wrote: +> Can't have more than two terms in an OR. IF you want three, you have to +> have two ORs. + +Right, that's what I meant. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22853.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22853.mbox:2,S new file mode 100644 index 00000000..c5eee209 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22853.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From janssen at parc.com Fri Oct 17 11:34:05 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP test server somewhere? +Message-ID: + +I'm looking at the Python client-side IMAP library again, and it's +severely lacking in tests. Does anyone maintain a test server we +could point the test suite at, with an interesting suite of +messages/folder on it? This would be exercised fairly often, dozens +of times each day, at least. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22862.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22862.mbox:2,S new file mode 100644 index 00000000..a3833438 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22862.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From markrcrispin at live.com Fri Aug 29 06:32:17 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] FETCH BODY[...] format.. +In-Reply-To: +References: +Message-ID: + + +If you can't understand the description in the RFC, take a look at the mtest program in the UW IMAP toolkit. There is a recursive routine that displays the MIME structure from the IMAP BODYSTRUCTURE, including the calculated part codes. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + + + +> Date: Fri, 29 Aug 2008 20:44:38 +1000 +> To: imap-protocol@u.washington.edu +> From: fret@memecode.com +> Subject: [Imap-protocol] FETCH BODY[...] format.. +> +> Hi All, +> +> I've read the rfc and I can't make out the correct syntax for retreiving just one mime segment of an email. So I'm initially getting the structure of the message via FETCH BODYSTRUCTURE and then I'm hoping to parse that and then download selected segments of the body based on what I find in the BODYSTRUCTURE. What is the method of indexing that works in BODY[] ? +> +> e.g. initially I'll be displaying the text/html of the message and not download the attachments. So I need to parse the structure and work out which of those map to the text/html alternatives and so on... +> +> Thanks +> -- +> Matthew Allen - Memecode Software +> (http://www.memecode.com) +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +_________________________________________________________________ +Talk to your Yahoo! Friends via Windows Live Messenger. Find out how. +http://www.windowslive.com/explore/messenger?ocid=TXT_TAGLM_WL_messenger_yahoo_082008 +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095088.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095088.22866.mbox:2,S new file mode 100644 index 00000000..277e822e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095088.22866.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From lozhkarev at googlemail.com Tue Jul 8 08:02:25 2008 +To: imap-protocol@u.washington.edu +From: =?KOI8-R?B?7snLz8zByiDsz9bLwdLF1w==?= +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +Message-ID: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> + +Hello, I'm developing IMAP proxy server to check attachments. + +(mail client) <-> (my proxy) <-> (real IMAP server) + +Proxy does simple work: transmitting client requests and server responses. +Problem appears when client requests some message from server, but proxy +can't response to client while it not download full message from real server +(Proxy must check attachment before transmitting it). The message may be +very large and downloading may take much time. If client has some timeout it +may decide that server failed. + +I tried to send "+ OK\r\n" periodically to client before real data +preparing, and this method is helpful for some mail clients. For example: + +C: f fetch 1 (body[]) +S: + OK // server send "+ OK\r\n" by timer while downloading full message +S: + OK +S: + OK +... +S: * 1 FETCH (BODY[] {9876543} .... + +but I think this way is not correct. + +*Is any IMAP protocol feature to simulate message downloading, to prevent +client thinking about timeout?* + +--------------------------------------------------------------- +Nickolay Lozhkarev +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22595.mbox:2,S new file mode 100644 index 00000000..4dbd3c1e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22595.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 24 17:11:55 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> + <5511EDA6.7060107@laposte.net> + <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> + +Message-ID: <1427242315.980300.244819753.01E1D55F@webmail.messagingengine.com> + +On Wed, Mar 25, 2015, at 10:47 AM, Andrew Sutherland wrote: +> On Tue, Mar 24, 2015 at 7:15 PM, Bron Gondwana +> wrote: +>> We like ID commands at FastMail too - we log them and it gives us +>> both an +>> +idea of usage patterns, and the ability to give more accurate bug +reports if we +>> +detect something weird. +> +> And some servers can be downright aggressive about. The Firefox OS +> email app experienced the Coremail IMAP servers at 163.com (and +> presumably all netease-operated servers) doing things like saying "NO" +> to a SELECT with the human-readable string "SELECT The login is not +> safe! Please update your mail client: http://mail.163.com/dashi" when +> we weren't providing a (valid) ID. The NO to the select only happened +> some of the time, but the login would result in an ad for 163.com's +> Android/iOS mail clients being injected into the inbox with apparently +> very limited duplicate suppression. Note that we were using +> initial-TLS on port 993 with then-current Gecko/NSS. Some more details +> at https://bugzilla.mozilla.org/show_bug.cgi?id=1105573 for anyone +> interested. + +Woah, that's really obnoxious. + +Are you certain that it's related to the ID command rather than a +general random percentage of connections advertisement? + +Bron. + + +-- +Bron Gondwana brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22743.mbox:2,S new file mode 100644 index 00000000..8628378d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22743.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From tss at iki.fi Fri Mar 23 17:49:49 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] [ann] lua imap server +In-Reply-To: <736ABDDD-9BA9-45D0-861F-856A5932BE71@mac.com> +References: + <20120319204645.GA2859@launde.brong.net> + + <17068.1332195426.345309@puncture> + <17068.1332235633.171765@puncture> + + <20897.1332282025.074478@puncture> + + + + <20897.1332365878.053493@puncture> + <736ABDDD-9BA9-45D0-861F-856A5932BE71@mac.com> +Message-ID: <6CC421A0-D5B3-4F6D-938B-42A0B43C9543@iki.fi> + +On 23.3.2012, at 23.53, PA wrote: + +> +> On Mar 21, 2012, at 10:37 PM, Dave Cridland wrote: +> +>> EXISTS, on the other hand, can be sent even if there is no command in progress. +> +> Fair enough. But still, all these server side notifications only apply to the selected mailbox. What about all the other subscribed mailboxes? They still would need to be polled somehow, wouldn't they? + +Yes, unless you implement RFC 5465. Of course no clients actually support that yet, but I guess it could get added if some servers start supporting it. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22756.mbox:2,S new file mode 100644 index 00000000..37f03f59 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22756.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mrc+imap at panda.com Sun Nov 13 13:06:13 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> +Message-ID: + +On Sun, 13 Nov 2011, Petite Abeille wrote: +> Would it be compliant to return instead two responses, one for each +> attribute? + +It is completely compliant, and any client which does not support it is +broken. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22759.mbox:2,S new file mode 100644 index 00000000..ba0d74ac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22759.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 31 16:11:49 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org><75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> + +Message-ID: <1320102709.31835.140660992941501@webmail.messagingengine.com> + +On Monday, October 31, 2011 3:49 PM, "Mark Crispin" wrote: +> On Tue, 1 Nov 2011, Timo Sirainen wrote: +> > I haven't tested GMail with imaptest for a while now (few years?), but I +> > don't think the bugs it reports are about the mailbox model, or anything +> > else that can't be fixed somewhat easily. +> +> Sigh, Timo, you had to give away the secret. I was hoping to bait this +> trap a bit longer. + +And that's why I think you're a wanker - because I don't want to bait anybody. +I want a better mail experience for users, and I suspect Brendan does too, +within the constraints he's working with. + +> Since the cat is out of the bag: there is nothing in the mailbox model +> which does not comply with IMAP, or which can not be presented in an +> IMAP-compliant manner. IMAP is silent on the mailbox model for a reason. + +It's silent in the way that XSLT is silent on the implementation language. +Not explicitly mentioned, but with heaps of design decisions which show +a clear background with + +> The problems with Gmail's server are, by and large, flat out bugs. There +> are a few design faults; but they are completely unnecessary and could be +> amended while keeping the Gmail model. + +I suspect we could, with a bit of productive discussion, get Brendan to +fix some of these. It's gone midnight here, but I'm going to see if I +can dig out some details on how Cyrus handles literal coding and talk to +Brendan directly about how hard that would be to add to gmail and fix +the 8bit quoted values issue. Particularly if we can do it without +melting any more polar caps than required. + +> > I guess the one test I could +> > remove is the search for substrings, since even Mark doesn't think it's +> > worth the trouble nowadays. +> +> FWIW, I always considered the implementation of string searching to be +> implementation dependent. The only requirement was that simple +> case-independent substring is recognized as compliant. I never intended +> that a server be forbidden from implementing a smarter search (e.g., +> fuzzy) that returns more matching messages. + +Interesting. That makes me feel a bit more comfortable about ignoring the +full RFC 5051 i;unicode-casemap on searches, and only using it for sort. + +Thanks. + +I was leaning that way anyway, but it means I can make the Cyrus +implementation fully 5051 complient without user visible changes. + +I've already switched to storing the parsed UTF-8 values into the cache file +rather than search-normalised forms, so I can choose the sort algorithm to +apply later. This will come in handy if we try to put other collation +algorithm support in later. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22772.mbox:2,S new file mode 100644 index 00000000..af54a4c5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22772.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From blong at google.com Thu May 19 09:22:44 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] GMail IMAP: returning BODYSTRUCTURE for embedded + messages +In-Reply-To: +References: <4DD4F566.2070607@gentoo.org> + +Message-ID: + +Yes, we have an open bug for this one, I'm not sure why there hasn't +been any progress on it. + +Brandon + +On Thu, May 19, 2011 at 7:35 AM, Mark Crispin wrote: +> On Thu, 19 May 2011, Jan Kundr?t wrote: +>> +>> I'd appreciate if you could investigate your compliance with the format +>> of BODYSTRUCTURE you generate when working with certain messages, as +>> described in this messages. The same issue was reported to you through +>> an internal issue tracker in January 2011 by Henner Zeller on my behalf. +> +> And was reported by me more than 3 years ago. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> + + + +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22796.mbox:2,S new file mode 100644 index 00000000..8a793a71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22796.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From dave at cridland.net Tue Oct 5 02:01:05 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <11166.1286226226.318772@puncture> + + <959754EE-4A2A-4DBD-8A63-6A317532C302@iki.fi> + +Message-ID: <11166.1286269265.469822@puncture> + +On Tue Oct 5 02:08:06 2010, Mark Crispin wrote: +> On Tue, 5 Oct 2010, Timo Sirainen wrote: +>> So nowadays +>> my server never disconnects clients on IDLE because they haven't +>> sent +>> anything. That fixes the whole thing. I still send "* OK Still +>> here" +>> events every 2 minutes, so connections that are actually gone will +>> get +>> disconnected pretty quickly. +> +> Be careful. If you don't get a disconnect event, you'll presently +> end up +> filling the TCP window and then block. +> +> +Also, you erode power saving efficiencies on mobiles - those states +are for sending and receiving data. + +I'm afraid broken NAT middleboxes are a lost cause, some of them are +truly awful. Nokia did a study (still ongoing) about how bad some of +them are, because they're at the point where people are +special-casing and working-around LAN and Broadband much more than +Mobile. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22807.mbox:2,S new file mode 100644 index 00000000..dd6946f7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22807.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 06:22:24 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276258877.868225@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <4C1225C5.6050709@aol.com> <29965.1276258877.868225@puncture> +Message-ID: <201006111522.24936.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 14:21:17 Dave Cridland wrote: +> On Fri Jun 11 13:02:13 2010, John Snow wrote: +> > Unfortunately, clients and users seem to prefer the trash-can +> > model. In the trash model, the move command really +> > is necessary. It's the only way to empty a mailbox that's full to +> > quota. The copy to trash would fail but a move to +> > trash will not. +> +> If someone wants to design a sane extension suite that'll effectively +> provide a "trash can" model server-side overlaid onto IMAP's existing +> primitives, I'll be very interested. +It's not only a case with trash can, also with client-side folder-based +filtering (often applied when messages are already in INBOX, so sieve won't do) + +> Using the notion that client developers misuse the current +> specifications as an argument to introduce new semantics doesn't +> really sit well with me. +Where is the 'misuse' You are talking about? In the fact that user wants to +have a 'trash can' for his mails? And no, using the \Deleted flag doesn't work +as a 'trash can', in any of the universes. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22817.mbox:2,S new file mode 100644 index 00000000..f6652e7c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22817.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From mrc+uw at Panda.COM Wed Dec 30 14:07:58 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: <4C25BD1C-720E-46FC-B478-C4C2FEAB71FD@umn.edu> +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + + <4218.1262179770@succubus.panacea.null.org> + + <4C25BD1C-720E-46FC-B478-C4C2FEAB71FD@umn.edu> +Message-ID: + +On Wed, 30 Dec 2009, Brian Hayden wrote: +> This is unfriendly; a user never expects a parent to disappear simply because +> they deleted a child. Not only is it unexpected, but it's inconsistent; they +> can create an empty container, but it's removed unilaterally if it happens to +> become empty after it's had something in it? + +You just destroyed your own argument. + +The disappearing parent problem happens precisely because, and is an +unavoidable consequence, of the attitude that there should not be such a +thing as a \NoSelect name without children. + +If you paid attention to what I was saying, you would not have fallen into +that trap. + +You could sink yourself in deeper, by saying that you want to prohibit +\NoSelect names. As soon as you do that, the unavoidable consequence is +that you prohibit deleting any mailbox that has children, and you prohibit +creating any mailbox unless you create the parent mailbox. + +But, you say, you didn't mean that at all; rather, you claim that the +parent simply does not exist at all. Then you have stepped on yet another +landmine. I'll leave it as an exercise for you to figure out. Hint: +regardless of whether or not the parent exists in your implementation, +certain operations in IMAP require that it must exist (or more accurately +must not not-exist) in some form. + +Before assuming that you are smarter than the old guy, you ought to make +sure that you really understand the problem. + +The entire problem was caused because I gave in to people who thought like +you, and allowed this half-assed copy of netnews hierarchy to happen (over +the better judgement of my co-workers). I should have required explicit +directories (which can not have messages) and prohibited mailboxes from +having children. "Dual-use" mailboxes are a mess precisely because it is +ambiguous whether to view the messages or view the children when you +"open" it. I also should have insisted that "/" be the one, and only, +hierarchy delimiter. + +Done right, \NoSelect would have been \Directory, and it would be +prohibited to delete a directory with children. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22820.mbox:2,S new file mode 100644 index 00000000..2938b476 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22820.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From tss at iki.fi Wed Nov 18 12:26:55 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: +References: <2134052040.817.1258573414683.JavaMail.root@dogfood.zimbra.com> + <1258574152.3022.695.camel@timo-desktop> + +Message-ID: <1258576015.3022.700.camel@timo-desktop> + +On Wed, 2009-11-18 at 12:18 -0800, Mark Crispin wrote: +> On Wed, 18 Nov 2009, Timo Sirainen wrote: +> > Actually I think the whole idea of listing other users' shared mailboxes +> > without having to explicitly opt-in isn't such a good idea. It's way too +> > easy to spam others by just sharing your mailboxes to them. +> +> This is my point in a current discussion. + +If there was a reasonable way to do the opt-in, I'd add support for that +in Dovecot and do it as default. But since no one has asked for this +feature and the only way to implement it would be via non-standard IMAP +command or messing directly with Dovecot's database, it's just too much +trouble with no benefit to anyone. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22832.mbox:2,S new file mode 100644 index 00000000..44a8f981 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22832.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jul 13 01:13:09 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] off-topic: stats on mail duplication, mailing + list sizes, etc? +In-Reply-To: <4A5A76EA.2030708@imap.cc> +References: <97903.1247435045@parc.com> <4A5A5CA5.6020709@imap.cc> + <98779.1247438465@parc.com> <4A5A76EA.2030708@imap.cc> +Message-ID: + +David Rauschenbach writes: +> As for my role in things... the legacy protocols will still be the +> best way to push content out to phones, and in that regard, IMAP has +> that very useful disconnected mode, whereas Wave looks like it's for +> broadband tethered devices only. + +IMAP has the very useful property that it uses ordinary email addresses. +The kind of address which everyone has. + +IPeople have predicted the death of 822 email for some time now; doesn't +seem to happen. Anecdote alert I suppose, but the last time my dance +club asked for its members' contact details, email had shifted _up_ to +the top spot. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22835.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22835.mbox:2,S new file mode 100644 index 00000000..b0702d9d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22835.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Wed Jun 17 09:55:10 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Changing capabilities +In-Reply-To: +References: <1245181628.21624.808.camel@timo-desktop> + + <1245255382.21624.854.camel@timo-desktop> + +Message-ID: <1245257710.21624.873.camel@timo-desktop> + +On Wed, 2009-06-17 at 09:36 -0700, Mark Crispin wrote: +> 2) After STARTTLS, the client MUST issue a CAPABILITY command. No form +> of automatic capabilities can be used. + +Oh, this was something I had forgotten. I'll modify my workaround +slightly then: + +If client issues CAPABILITY command before STARTTLS (i.e. ignored the +CAPABILITY response code in the untagged greeting OK), send untagged +CAPABILITY reply before tagged LOGIN/AUTHENTICATE reply, instead of +using CAPABILITY response code in the tagged reply. + +> Put another way, any client that benefits from the workaround is broken. + +Sure, but there's no way to get Outlook/OE fixed. At least Thunderbird +v3.0 will understand CAPABILITY response codes. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22844.mbox:2,S new file mode 100644 index 00000000..64d437e1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22844.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From markrcrispin at panda.com Wed Feb 18 10:04:14 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> +Message-ID: + +On Wed, 18 Feb 2009, Jonathan Siegle wrote: +> This is the only connection to the inbox. Must a server tell the idle client +> when new messages arrive using the RECENT flag? + +Yes. + +> Must a client issue DONE followed by some IMAP command(check/select/etc) to +> know if new messages have arrived? + +No. Untagged EXISTS, RECENT, EXPUNGE, and FETCH (for flags) events will +occur automatically during the IDLE. IDLE is completely pointless +otherwise. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22847.mbox:2,S new file mode 100644 index 00000000..600084c0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22847.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From markrcrispin at panda.com Thu Jan 29 15:04:28 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: SEARCH OR question +In-Reply-To: <4982284E.1000102@sun.com> +References: <4981FBC7.9040509@sun.com> + + <4982284E.1000102@sun.com> +Message-ID: + +On Thu, 29 Jan 2009, Bill Shannon wrote: +> Yes, based on the trace from the customer, it's: +> * OK Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1 (myServer.org) ready. + +Bummer. + +> Perhaps the bug is due to the particular terms or keys the customer is using. +> He's used the same terms with success on other servers, so the problem seems +> to be specific to Exchange. + +Sadly, newer versions of Exchange are worse, and aren't the only offenders +among broken IMAP server implementations. + +The overall direction of the market seems to be not to use these +fancy-schmancy features that "standard clients" (read: Outlook) doesn't +use. It gets quite depressing receiving bug reports for your client that +feature the phrase "Outlook doesn't have this problem". + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22853.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22853.mbox:2,S new file mode 100644 index 00000000..2868e823 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22853.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Tue Oct 21 10:07:50 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP test server somewhere? +In-Reply-To: +References: +Message-ID: <1224608870.18283.126.camel@hurina> + +On Fri, 2008-10-17 at 11:34 -0700, Bill Janssen wrote: +> I'm looking at the Python client-side IMAP library again, and it's +> severely lacking in tests. Does anyone maintain a test server we +> could point the test suite at, with an interesting suite of +> messages/folder on it? This would be exercised fairly often, dozens +> of times each day, at least. + +Somehow I doubt anyone would want to offer that service to random +people. And even if someone did, it doesn't seem like a good idea to +rely on that service staying up. How about instead you install a test +IMAP server on the same server where the IMAP library is hosted? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22862.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22862.mbox:2,S new file mode 100644 index 00000000..54407823 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22862.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From tss at iki.fi Sat Aug 30 08:43:01 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP IRC channel +Message-ID: <1220110981.21673.157.camel@hurina> + +If you feel like you're not wasting enough time yet, I created ##imap +IRC channel to Freenode network (irc.freenode.net). I guess it could +also be thought of as an alternative place to ask IMAP-related questions +if someone doesn't feel like posting here. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22866.mbox:2,S new file mode 100644 index 00000000..0d2f0757 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22866.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From markrcrispin at live.com Tue Jul 8 08:16:32 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +In-Reply-To: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> +References: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> +Message-ID: + + +You're on the correct track, but the response is wrong. Use "* OK", not "+ OK". + +"+" is for command continuation (literals, IDLE, and SASL negotiations), and will confuse clients that do not have any command continuation in progress. + +"* OK" is specifically for server-originated babble. I suggest something like "* OK wait please..." rather than leaving the payload text empty. + +-- Mark -- + + + +________________________________ +Date: Tue, 8 Jul 2008 19:02:25 +0400 +From: lozhkarev@googlemail.com +To: imap-protocol@u.washington.edu +Subject: [Imap-protocol] IMAP server mail transfer simulation + +Hello, I'm developing IMAP proxy server to check attachments. + + + +(mail client) <-> (my proxy) <-> (real IMAP server) + + + +Proxy does simple work: transmitting client requests and server responses. + +Problem appears when client requests some message from server, but proxy can't response to client while it not download full message from real server (Proxy must check attachment before transmitting it). The message may be very large and downloading may take much time. If client has some timeout it may decide that server failed. + + + + +I tried to send "+ OK\r\n" periodically to client before real data preparing, and this method is helpful for some mail clients. For example: + + + +C: f fetch 1 (body[]) + +S: + OK // server send "+ OK\r\n" by timer while downloading full message + +S: + OK + +S: + OK + +... + +S: * 1 FETCH (BODY[] {9876543} .... + + + +but I think this way is not correct. + + + +Is any IMAP protocol feature to simulate message downloading, to prevent client thinking about timeout? + + + +--------------------------------------------------------------- + +Nickolay Lozhkarev + + +_________________________________________________________________ +Need to know now? Get instant answers with Windows Live Messenger. +http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL_messenger_072008 diff --git a/demo/ermis-f/imap-protocol/cur/1600095089.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095089.22871.mbox:2,S new file mode 100644 index 00000000..6099afa7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095089.22871.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From tss at iki.fi Sun Jun 1 10:30:51 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Proxy IP forwarding +Message-ID: <1212341451.3904.500.camel@hurina> + +Has anyone implemented some kind of a IP forwarding extension? So +backend servers could see the original IPs instead of the proxy's. So +login would go something like: + +1 XFORWARD lip 1.2.3.4 lport 143 rip 4.5.6.7 rport 35353 +2 LOGIN user pass + +I guess I could just implement it like that, but at least trying to be +interoperable with another implementation would be nice. :) + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22595.mbox:2,S new file mode 100644 index 00000000..05019ddd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22595.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From gilles.lamiral at laposte.net Tue Mar 24 17:34:16 2015 +To: imap-protocol@u.washington.edu +From: Gilles LAMIRAL +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] ID or not ID +In-Reply-To: +References: <55109D4C.2080900@laposte.net> + <5510BC3A.9020702@verizon.net> <5511EDA6.7060107@laposte.net> <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> + +Message-ID: <55120288.5060502@laposte.net> + +Hi Andrew, + +> > We like ID commands +> +> And some servers can be downright aggressive about. + +So it will end with fake IDs or none. + +-- +Au revoir, 09 51 84 42 42 +Gilles Lamiral. France, Baulon (35580) 06 20 79 76 06 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22743.mbox:2,S new file mode 100644 index 00000000..e75aff52 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22743.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Fri Mar 23 18:13:19 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + +Message-ID: <694AC956-B34C-4E9F-83B3-45FB6AFA248D@iki.fi> + +On 24.3.2012, at 2.48, Timo Sirainen wrote: + +> b) If you care about power usage, then IDLE isn't much better from polling, because in either case the device needs to wake up every n minutes to do some work and send some data + + +This reminds me of an interesting optimization in Dovecot. I don't know if other servers do this. Since many clients open multiple IMAP connections, each of them IDLEing and each of them needing to be notified every 2 minutes, Dovecot notifies the connections at the same time, so that the device needs to wake up only once to handle them: + +next_notify_secs = 120 - ((time() + crc32(username)) % 120); + +The username crc32 is there so that the server doesn't cause a load peak every 2 mins by notifying everyone at the same time. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22756.mbox:2,S new file mode 100644 index 00000000..75f21a08 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22756.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From mrc+imap at panda.com Sun Nov 13 13:30:49 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <4EC02C84.1090209@gulbrandsen.priv.no> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> + <4EC02C84.1090209@gulbrandsen.priv.no> +Message-ID: + +On Sun, 13 Nov 2011, Arnt Gulbrandsen wrote: +> It's safe for flags+rest. but not so safe for e.g. uid+rest: +> * 42 FETCH (UID 100) +> * 42 FETCH (RFC822.SIZE 12345) + +Those pair responses is completely compliant. Any client which has the +slightest problem with it is broken. + +Servers can do this. There are servers that do it. + +The UID value does not identify the message to which it applies. The +message sequence number identifies the message. + +Now, with that said, RFC 3501 says: + The number after the "*" in an untagged FETCH response is always a + message sequence number, not a unique identifier, even for a UID + command response. However, server implementations MUST implicitly + include the UID message data item as part of any FETCH response + caused by a UID command, regardless of whether a UID was specified + as a message data item to the FETCH. + +The second sentence seems to say that a server can't do: + * 42 FETCH (UID 100) + * 42 FETCH (RFC822.SIZE 12345) +in response to a UID FETCH n RFC822.SIZE command. That is a reasonable +interpretation of that statement. + +HOWEVER!! Suppose the server did UID FETCH n ENVELOPE, and the server +decided to send the RFC822.SIZE as well. In that case, the FETCH response +with the RFC822.SIZE is (as far as the protocol is concerned) not "caused" +by the UID FETCH; and therefore that pair is alright. + +This effectively means that a client MUST NOT assume that a UID will be +carried in a FETCH response; only that, somewhere in there, a UID will be +given. It must deal with message sequence number 42, of which UID 100 is a +property. + +It's a difference that makes no real difference. + +In other words even though it seems UID FETCH 100 RFC822.SIZE may not be +responded with: + * 42 FETCH (UID 100) + * 42 FETCH (RFC822.SIZE 12345) +the client must be able to handle that response any way. The server +certainly can do (albeit it would be pointless): + * 42 FETCH (UID 100 RFC822.SIZE 12345) + * 42 FETCH (RFC822.SIZE 12345) + +The bottom line is that ANY untagged response is valid at ANY time. Client +implementations MUST be able to coalesce multiple untagged responses for +the same message based upon message sequence number. + +It saves some bits on the wire if a server coalesces response data. It is +therefore very nice to have, and most servers do it. It is also absolutely +NOT a requirement that any server do so. + +It may seem to be alright to write a client that ignores message sequence +numbers and only uses UIDs. A client author that does this deserves to +have his client break, and have his customers complain at him. + +Server authors can already easily make your client break by violating +IMAP. Do you want to give them the power to make your client break by +obeying IMAP better than you do? + +In conclusion: + +Server authors should avoid doing things that are pointless and bandwidth +consuming. + +Client authors MUST handle something that seems pointless from the server, +because some times a server implementation has no choice due to +circumstances out of its control. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22759.mbox:2,S new file mode 100644 index 00000000..2734702e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22759.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From blong at google.com Mon Oct 31 16:14:07 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + +Message-ID: + +On Mon, Oct 31, 2011 at 3:28 PM, Mark Crispin wrote: +> On Mon, 31 Oct 2011, Brandon Long wrote: +>> +>> I have no idea who you talked to, but my team owns the Gmail IMAP server. +> +> In that case, at the very least, there is a lack of a consistent and +> coherant policy regarding standard compliance. +> +>> Almost all of our IMAP users mostly use the web interface, so yes, +>> they want the IMAP experience to mimic the Gmail interface. ?There are +>> settings that can be set to make the experience more "IMAP normal" +>> than "Gmail normal", but the defaults favor the more common use case. +> +> Do you actually have research and firm numbers to back up the contention +> that customers want their IMAP clients to behave incorrectly, including +> malfunctioning, so that some IMAP clients seem to mimic Gmail? + +When we first released IMAP internally, the overwhelming use case was +as an adjunct to Gmail Web interface, not as a replacement to the +client. That is expected, of course. But our public usage mimic'd +this to nearly the extreme. Now, I'm willing to believe that our +choices informed the usage in some part, but the overwhelming use case +of Gmail's IMAP interface is access on mobile devices by people who +use the Gmail Web interface on the desktop. + +> Or is this just a matter of religion that has never been challenged, much +> less bolstered with research? + +I know the clients which use my service, since that knowledge is +important to me, even if the ID command is considered pariah to the +perfectness of the protocol. + +Also see the changes that Thunderbird has made to make their client +more "Gmail" like when talking to us. Or see the Blackberry Enhanced +Gmail plug-in which tries to make the Blackberry have a more Gmail +feel. Or arguments I've gotten in on Google+ with our adoring public +who wanted us to make the usage even more Gmail like, impossible +though that was to express in the IMAP protocol. + +>> I know its not compliant, we even have a support page where we list +>> the cases where we explicitly decided against compliance. +>> Interoperability is a goal, however. ?That doesn't mean we want to +>> force Gmail users to use the IMAP mailbox model, however. +> +> So, instead, you force Gmail users to use a non-compliant model that +> violates guarantees in IMAP and causes some IMAP clients to malfunction. + +If we are violating guarantees that cause malfunctions, it would be +good to know that. The only one I know of is that under some +circumstances, alpine wants some combination of the header + body to +equal something, and due to our LF->CRLF shenanigans, that can be +violated. I'm not happy with it, but I have no good way to fix it, +either. Whether its an important guarantee, well, it hasn't seemed to +have affected anyone who removed the check. + +I know also that some of our deletion behavior follows some of the +"non-suggested" ones from the IMAP best practices RFC, but I didn't +think doing those was actually non-compliant. + +>> And I argue that we made the design decisions we did with good +>> reasons. ?I also argue that there were no perfect decisions to be +>> made, and usability was a more important goal than correctness. +> +> Thank you for confirming, in public, that the Gmail IMAP server is +> non-compliant and that Google has no intention to make it compliant. + +I feel pretty safe in saying that Gmail's IMAP doesn't support +substring search of bodies and never will, and is therefore +non-compliant. At least until we can do it for a single user without +consuming the equivalent resources of a couple million users who don't +use it. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22772.mbox:2,S new file mode 100644 index 00000000..3ad50a70 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22772.mbox:2,S @@ -0,0 +1,91 @@ +MBOX-Line: From brong at fastmail.fm Thu May 19 15:03:52 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + +Message-ID: <20110519220352.GA12141@brong.net> + +On Wed, May 18, 2011 at 10:45:15PM -0700, Mark Crispin wrote: +> The only time I ever find myself offline is when I am in very remote areas +> of northern British Columbia or the Yukon; and that's only because I chose +> not to cough up the dough for satellite. Even in rural Alaska, where I +> have to carry a firearm for bear protection on my property, I have +> continuous reliable online access. + +Bully for you. The rest of the world is not necessarily in the same +set of circumstances as you. + +> >And it's all on an +> >SSD, so searches are stupidly fast even if I wind up doing body scans. +> +> Except that at some time you had to download the body to that device. +> Given the number of devices that I use, the volume of mail that I deal, +> and the large attachments in that mail, that is not a viable option. + +I can do that when I have a fast link. Again, the world is not you. +It's not a viable option FOR YOU. Storage for the ~5Gb of email I +currently keep in offlineimap is trivially cheap, and I only had to +sync it once. + +> >Besides I'm not sharing my IO queue with 5,000 other connected users when +> >I go to actually access my email. +> +> If a server can't handle the I/O load for a mere 5000 connected users then +> it has no business being a server for 5000 connected users. + +Seriously? You expect anyone to buy the argument that a server for 5000 +concurrent users should be able to give similar random IO performance to +a local dedicated disk for one user? + +> >The downside of offlineimap is, as Brendan pointed out for gmail's case, +> >a 100k message mailbox will cause 6Mb of traffic just to synchronise flags, +> >because there's no way to say "tell me what changed since last time". +> +> That is because of the stupidity of doing such synchronization in the +> first place. Unless you have such a large screen that it can show the +> flags of 100K messages, there is no reason that the UI needs it. +> +> A webmail server doesn't transmit data 100,000 messages to the web +> browser. +> +> Think about that. + +Thinking... done. Gosh, that was quick. I'm not running a webmail server, +I'm running a local cache that I want to keep in sync with the server so I +can run searches and get identical results. I want this to work offline. + +Did I mention 400ms round trips? They are noticable compared to local +storage. That's approximately the distance between Australia and Norway, +and the speed of light isn't that flexible about my wants. + +> The only email software that people buy is software that is purposed to +> make email work less well. There is quite a bit of money in doing that. +> They'll pay quite a bit per-seat for that, but will throw you out of the +> office if you suggest that they pay a fraction as much for an email client +> that does not suck. +> +> Think about that. + +I thought. Turns out maybe they DO know what they want, and what they want +isn't what you're peddling. Maybe different features are important to them +than the features that are important to you. + +Think about that. + +> There's no ROI on email clients. Most people use webmail anyway. The +> proof is that there are NO good email clients on mobile devices. If there +> was a market, it would be filled with high-priced competition and people +> would be paying it. It isn't and they aren't. + +True. So what was your point exactly? + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22796.mbox:2,S new file mode 100644 index 00000000..dc54aaeb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22796.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Tue Oct 5 02:01:10 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <4CAAADBE.1010809@orthanc.ca> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAAADBE.1010809@orthanc.ca> +Message-ID: <11166.1286269270.390751@puncture> + +On Tue Oct 5 05:46:54 2010, Lyndon Nerenberg wrote: +> Mail and IM solve two different problems. IM in absolutely +> instant, but +> if you're not there, it's gone. + +See XEP-0160 - these days, people expect simple messages to persist +and be fed to them when they come back online. + +Incidentally, XMPP on smartphones - well, on real smartphones and not +those which place shiny over substance - does mostly the same thing +as IMAP IDLE - it maintains a long-lived TCP session which both ends +can use to push data over. On shiny but castrated smartphones, +though, a developer must buy in (technically at least, financially I +don't know) into a proprietary unified push system. Which, rumour has +it, runs over XMPP, using a persistent TCP connection... + +> Mail provides nearly-instant +> gratification with fallback queueing. This is all good stuff, even +> if +> we need to beat people over the head sometimes to make +> themunderstand +> the (dis)advantages of each. +> +> +It also handles Big Things, and - when IMAP's in play at least - +offers excellent server-side archival under the user's control. + +It's not mere traditionalism that we're having this conversation over +email and not in an IM chatroom, after all - even the XSF uses +mailing lists. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22807.mbox:2,S new file mode 100644 index 00000000..418aaeb4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22807.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 06:27:18 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111454.51874.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111437.03613.witold.krecicki@firma.o2.pl> + + <201006111454.51874.witold.krecicki@firma.o2.pl> +Message-ID: <1276262838.22134.61.camel@kurkku.sapo.corppt.com> + +On pe, 2010-06-11 at 14:54 +0200, Witold Kr?cicki wrote: +> On Friday 11 of June 2010 14:44:43 Timo Sirainen wrote: +> > On 11.6.2010, at 13.37, Witold Kr?cicki wrote: +> > >> I once thought about implementing MOVE operation to Dovecot to improve +> > >> speed. But then I realized that if client sends STORE \Deleted and +> > >> EXPUNGE in same IP packet, I can just optimize away the rename()s +> > >> caused by STORE. The remaining link()+unlink() should then be about as +> > >> fast as rename(). The only exception is OSX with HFS filesystem, where +> > >> hard links are really inefficient. +> > > +> > > And how hard it would be to really implement it in Dovecot? +> > +> > Much more difficult than I originally thought. +> Well, 'brutal' (and nonsense in a way) implementation would be to 'internally' +> do copy messages listed and then expunge messages that were copied (at least +> there is no setting flags). + +The problem is that I'd have to add a new internal "move" operation, and +then quota code would also have to handle it, and there are probably +many other places that would need to handle it. Also the whole move +operation doesn't really even fit into Dovecot's internal design. It +would be difficult to implement in any other way than copy+expunge (but +with all the extra complexity in quota/etc code). + +> I thought on including the statement that if it would take more time to do +> 'move' than to do cp/st/ex routine the server SHOULD NOT provide MOVE +> extension. + +Then there's the problem that servers can support multiple mailbox +formats. Possibly even the same user's mailboxes can be in different +formats. While MOVE might help with maildir, it wouldn't help with mbox. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22817.mbox:2,S new file mode 100644 index 00000000..2a97d23b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22817.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From bhayden at umn.edu Wed Dec 30 14:19:16 2009 +To: imap-protocol@u.washington.edu +From: Brian Hayden +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + + <4218.1262179770@succubus.panacea.null.org> + + <4C25BD1C-720E-46FC-B478-C4C2FEAB71FD@umn.edu> + +Message-ID: <9F216942-8134-4F25-87C6-4264E9E8D03B@umn.edu> + + +On Dec 30, 2009, at 4:07 PM, Mark Crispin wrote: + +> On Wed, 30 Dec 2009, Brian Hayden wrote: +>> This is unfriendly; a user never expects a parent to disappear +>> simply because they deleted a child. Not only is it unexpected, but +>> it's inconsistent; they can create an empty container, but it's +>> removed unilaterally if it happens to become empty after it's had +>> something in it? +> +> You just destroyed your own argument. +> +> The disappearing parent problem happens precisely because, and is an +> unavoidable consequence, of the attitude that there should not be +> such a thing as a \NoSelect name without children. +> +> If you paid attention to what I was saying, you would not have +> fallen into that trap. +> +> You could sink yourself in deeper, by saying that you want to +> prohibit \NoSelect names. As soon as you do that, the unavoidable +> consequence is that you prohibit deleting any mailbox that has +> children, and you prohibit creating any mailbox unless you create +> the parent mailbox. +> +> But, you say, you didn't mean that at all; rather, you claim that +> the parent simply does not exist at all. Then you have stepped on +> yet another landmine. I'll leave it as an exercise for you to +> figure out. Hint: regardless of whether or not the parent exists in +> your implementation, certain operations in IMAP require that it must +> exist (or more accurately must not not-exist) in some form. +> +> Before assuming that you are smarter than the old guy, you ought to +> make sure that you really understand the problem. + +In fact, I realize all of this, and did not destroy my argument--you +misunderstand my argument because your focus is on discussing a +related but separate issue. It's obviously not worth pursuing. + +> +> The entire problem was caused because I gave in to people who +> thought like you, and allowed this half-assed copy of netnews +> hierarchy to happen (over the better judgement of my co-workers). I +> should have required explicit directories (which can not have +> messages) and prohibited mailboxes from having children. "Dual-use" +> mailboxes are a mess precisely because it is ambiguous whether to +> view the messages or view the children when you "open" it. I also +> should have insisted that "/" be the one, and only, hierarchy +> delimiter. + +No, in fact, you're wrong about what I think. I *agree* with you on +this part, and have stated so explicitly. I dislike dual-use mailboxes +and don't use them myself. But since they exist, people expect them to +work like the nearest thing in their conceptual map (directories and +files in a filesystem), and it's useful to think about how to get them +to realize that there are subtle but important differences. Or change +the client interaction so that it doesn't matter. + +> Done right, \NoSelect would have been \Directory, and it would be +> prohibited to delete a directory with children. + +Yep. But we've got what we've got, so I'm more concerned with making +the client implementation make sense to the innocent bystanders. + +-Brian + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22820.mbox:2,S new file mode 100644 index 00000000..4c27fb01 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22820.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From guenther+imap at sendmail.com Wed Nov 18 13:02:53 2009 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: +References: <2134052040.817.1258573414683.JavaMail.root@dogfood.zimbra.com> + <1258574152.3022.695.camel@timo-desktop> + +Message-ID: + +On Wed, 18 Nov 2009, Mark Crispin wrote: +> Also, I can think of a case where "accessible" and "published" should be +> very different. The fact that something can be listed does not mean +> that it should be published. +... +> Should these mailboxes be published to the world due to the anyone +> rights, and thus show up in everybody's list of mailboxes? Or, as I +> contend, just to those who know to look in the mrc-class account? + +Wasn't that the intent of the distinction between +l and +r? A mailbox +that is +r-l can be selected if you can enter its name. What you're +talking about here is some finer granularity within LIST/LSUB, where +'broader' operations such as + tag LIST "" * +require more than +l on some classes of mailboxes for them to be returned, +or maybe that 'narrower' operations such as + tag LIST "" /Users/mrc/% +require less than +l. + +I guess the problem with +r-l is that it is dependent on client support +for directly entering mailbox names and that is apparently not something +someone can count on. In order to design a fix, what *can* be depended +on? The ability of a client to show that /Users/mrc exists at all and +peek into it with something like that last LIST above? More? Less? + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22832.mbox:2,S new file mode 100644 index 00000000..5b5b9de9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22832.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From dot at dotat.at Mon Jul 13 04:11:23 2009 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] off-topic: stats on mail duplication, mailing + list sizes, etc? +In-Reply-To: <97903.1247435045@parc.com> +References: <97903.1247435045@parc.com> +Message-ID: + +On Sun, 12 Jul 2009, Bill Janssen wrote: +> +> I'm interested in figuring some strawman stats about email duplication +> that could be addressed by a site-wide IMAP server. For example, how +> many mailing lists an "average" organization has; the average number of +> users per mailing list; the average message traffic (in both messages +> and bytes) per day, per week, per year. + +We have an average of two recipients per message. This underestimates the +amount of de-duplication that you could do, because large mailing lists +are split up into multiple messages, and I don't have any stats that would +allow me to say anything about duplicate forwarded attachments. + +Message traffic averages 10 messages per user per day and about 1Mbyte per +user per day (in both cases ignoring multi-recipient messages). Number of +messages isn't increasing much, but message size is going up by about +12.5% per annum. + +I work for Cambridge University. We have quite a skewed user base - I +expect if I had stats covering just staff the numbers would be rather +higher, plus I don't have any stats on traffic inside departmental +Exchange servers such as the one used by about 1000 administrative staff. + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +GERMAN BIGHT HUMBER: SOUTHWEST 5 TO 7. MODERATE OR ROUGH. SQUALLY SHOWERS. +MODERATE OR GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22844.mbox:2,S new file mode 100644 index 00000000..55b5a1a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22844.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From markrcrispin at panda.com Wed Feb 18 10:28:00 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <1234979693.29240.1770.camel@timo-desktop> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> +Message-ID: + +On Wed, 18 Feb 2009, Timo Sirainen wrote: +> And I know that several clients +> use a connection that IDLEs forever, without bothering to even do DONE + +> IDLE every 29 minutes to avoid disconnection. + +Outlook. + +Microsoft doesn't give a damn about following standards, or even if their +software works properly with non-Microsoft products. The only reason that +I use Outlook at all any more is for calendar/contacts synchronization +with my BlackBerry and Windows Mobile phone. I never used Outlook for +email; people who use Outlook for email are asking to be injected with +viruses and to be phished, and deserve it when it happens. + +To work around the Outhouse bug, UW and Panda imapd both issue a fake +EXISTS response at minute 29 which forces the client to issue a DONE. +Upon issuance of the DONE, imapd immediately sends an EXPUNGE that gets +rid of the fake message. Outlook is too stupid to care that there's no +change in the UID regime for this message that appeared and vanished. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22847.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22847.mbox:2,S new file mode 100644 index 00000000..d50054a2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22847.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jan 29 23:32:38 2009 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: SEARCH OR question +In-Reply-To: <498228F0.9050505@sun.com> +References: <4981FBC7.9040509@sun.com> + <498228F0.9050505@sun.com> +Message-ID: + +Bill Shannon writes: +> Arnt Gulbrandsen wrote: +>> Can't have more than two terms in an OR. IF you want three, you have +>> to have two ORs. +> +> Right, that's what I meant. + +Sorry about the speechifying. Difficult to hit the right level of detail +at the end the day when I'm tired. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22853.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22853.mbox:2,S new file mode 100644 index 00000000..ee2f7ee7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22853.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From janssen at parc.com Tue Oct 21 11:27:48 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP test server somewhere? +In-Reply-To: <1224608870.18283.126.camel@hurina> +References: + <1224608870.18283.126.camel@hurina> +Message-ID: <10079.1224613668@parc.com> + +Timo Sirainen wrote: + +> On Fri, 2008-10-17 at 11:34 -0700, Bill Janssen wrote: +> > I'm looking at the Python client-side IMAP library again, and it's +> > severely lacking in tests. Does anyone maintain a test server we +> > could point the test suite at, with an interesting suite of +> > messages/folder on it? This would be exercised fairly often, dozens +> > of times each day, at least. +> +> Somehow I doubt anyone would want to offer that service to random +> people. And even if someone did, it doesn't seem like a good idea to +> rely on that service staying up. How about instead you install a test +> IMAP server on the same server where the IMAP library is hosted? + +Quite a reasonable comment. But I don't see how that will work for +the Python test framework. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22866.mbox:2,S new file mode 100644 index 00000000..8d40eb5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22866.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tss at iki.fi Tue Jul 8 08:15:08 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +In-Reply-To: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> +References: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> +Message-ID: <802114B0-2D22-4785-A18E-C6BFB736B2FA@iki.fi> + +On Jul 8, 2008, at 8:32 PM, ??????? ???????? wrote: + +> Proxy does simple work: transmitting client requests and server +> responses. +> Problem appears when client requests some message from server, but +> proxy can't response to client while it not download full message +> from real server (Proxy must check attachment before transmitting +> it). The message may be very large and downloading may take much +> time. If client has some timeout it may decide that server failed. + +Also note that the IMAP client may not fetch the entire attachment at +once. For example Thunderbird might download the message in 100 kB +blocks (FETCH BODY.PEEK[]<100000.200000> stuff). Your proxy will also +have to handle that case. + +Were you planning on not allowing client to see some attachments (like +viruses)? What will you then send to client if the attachment isn't +allowed? I guess just returning the attachment as full of space could +work. + +> I tried to send "+ OK\r\n" periodically to client before real data +> preparing, and this method is helpful for some mail clients. For +> example: + +Send "* OK" instead. "+" is a command continuation, you can't send +those. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22871.mbox:2,S new file mode 100644 index 00000000..6c6bf75c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22871.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Jun 1 11:45:04 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <1212341451.3904.500.camel@hurina> +References: <1212341451.3904.500.camel@hurina> +Message-ID: <0i/azqanypELGcsgZG99yw.md5@lochnagar.oryx.com> + +Timo Sirainen writes: +> Has anyone implemented some kind of a IP forwarding extension? So +> backend servers could see the original IPs instead of the proxy's. So +> login would go something like: +> +> 1 XFORWARD lip 1.2.3.4 lport 143 rip 4.5.6.7 rport 35353 +> 2 LOGIN user pass + +Login referrals? Cyrus Murder? + +> I guess I could just implement it like that, but at least trying to be +> interoperable with another implementation would be nice. :) + +I've done such things as an administrator on the TCP level, using +transparent proxying and load balancing. Sufficiently advanced hackery +is indistinguishable from magic. Sufficiently advanced hackery is +easily distinguished from a good idea. (Login referrals IMO have the +same characteristics.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095090.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095090.22874.mbox:2,S new file mode 100644 index 00000000..3191af65 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095090.22874.mbox:2,S @@ -0,0 +1,248 @@ +MBOX-Line: From tss at iki.fi Fri May 9 13:24:01 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Optimistic incremental THREAD=REFERENCES +Message-ID: <1210364641.9518.397.camel@hurina> + +I thought I'd post this here in case someone else is interested in +implementing something similar: + +Step (1) is the slowest stage for building a THREAD=REFERENCES tree. If +its result tree is permanently saved, the following thread builds can be +based on it by updating the tree incrementally. + +Adding new messages to the tree is simple: simply follow the normal +rules as when building a new tree from scratch. Expunging messages gets +more problematic though. + +Each node in the tree keeps a "link reference count" which specifies how +many messages contain a reference (in References: or In-Reply-To: +header) to this message. This link refcount must be updated when adding +and expunging messages. When the link refcount is zero, there are no +messages referencing the node. However a non-zero link refcount doesn't +mean that the node has children. Link refcount also doesn't tell much +about the number of children the node has, because References: headers +may reference any number of its ancestors. + +The optimistic approach assumes that usually there are no problematic +links. In such case expunging a message simply updates the link +refcounts and marks the message's node as expunged. If the node's link +refcount is non-zero the node acts as a dummy node. If any unreferenced +dummy node's link refcount drops to zero, it's converted to a +(duplicate) root node (the expunged node may become one as well). These +duplicate root nodes are later dropped by changing their children to +point to the primary root node. + +Problematic links are handled by marking nodes affected by them. If such +a node is expunged or unreferenced, the thread tree must be rebuilt. +This is assumed to be a rarely occurring event. The problematic cases +are: + +1) Duplicate Message-ID: headers. If the first message having it is +expunged, the thread tree must be rebuilt. + +2) Message-ID loops. If a message referencing the looping path gets +expunged, the loop may break and the thread tree must be rebuilt. +Because it can't be determined easily which loops get broken by which +expunges, this case can be handled in a bit easier way: When detecting a +loop between parent and child, rebuild the tree if parent or any node +between child and parent get unreferenced. + +3) A message changes its parent because an earlier message's References: +header contained a different link. If the message gets expunged, the +thread tree must be rebuilt to get the original parent back. + +4) A link in a message's References: header is ignored, because the +referenced child already specified a different parent to itself. If the +message gets expunged, the thread tree must be rebuilt to determine its +new parent. + +5) A link in a message's References: header is ignored, because an +earlier message's References: header already specified a different link. +If the earlier message gets expunged, the parent may change. The earlier +message could be found out quickly by keeping some extra state (or with +a slow scan), but since this is assumed to be a rare problem, there's an +easier (but less specific) way to handle this: Rebuild the tree if the +child node is unreferenced (or alternatively if the original parent node +is unreferenced, but it probably happens more often). + +Pseudocode: + +node { + parent: Pointer to parent node. Children pointers aren't required. + uid: Message's UID (0 = expunged or never even existed) + + link_refcount: Number of messages referencing this node as a parent + (e.g. "References: a b" would add reference to both a and b, regardless + of how the links are really added to the thread tree). + expunge_rebuilds: If this message gets expunged, rebuild the thread tree + unref_rebuilds: If this node gets unreferenced, rebuild the thread tree +} + +node_is_root(node) + if node == NIL + return true + + // check also if expunging had changed this node to a root node. + // see fix_node() for details + return node.link_refcount == 0 and node.uid == 0 + +link_reference(parent_node, child_node) + parent_node.link_refcount++ + if is_ancestor(child_node, parent_node) + // child_node is an ancestor of parent_node. Adding child_node -> + // parent_node would introduce a loop. If any messages referencing the + // path between parent_node's parent and child_node get expunged, we + // have to rebuild the tree because the loop might break. For example: + // #1: a -> b (a.ref=1, b.ref=1) + // #2: b -> a (a.ref=2, b.ref=2) + // #3: c -> a -> b (a.ref=3, b.ref=3, c.ref=1) + // Expunging #3 wouldn't break the loop, but expunging #1 would. + for node in nodes[parent_node.parent .. child_node] + node.unref_rebuilds = true + else if child_node.parent == parent_node + // The same link already exists + else + // Set parent_node as child_node's parent + if node_is_root(child_node.parent) + child_node.parent = parent_node + else + // Conflicting parent already exists, keep the original. + // We get here only when handling References: header. + if child_node.uid != 0 + // We've already seen this message. It specifies its own parent and + // it doesn't matter what any other reference says. The only way its + // parent can change is if the message itself gets expunged. + child_node.expunge_rebuilds = true + else + // Message doesn't exist, so it was one of the node's children + // that created the original reference. If that reference gets + // dropped, the parent is changed. We could catch this in one of + // several ways: + // a) Original parent node gets unreferenced + // b) This node gets unreferenced + // c) Any of the child nodes gets expunged + // b) is probably the least likely to happen, so use it + child_node.unref_rebuilds = true + +thread_add_msg(uid) + // get the Message-IDs as specified by the thread spec + (msgid, parent_msgid, references) = message_get_thread_headers(uid) + + if msgid != NIL + if nodes[msgid].uid == 0 + nodes[msgid].uid = uid + else + // duplicate Message-ID. if the original ever gets expunged, + // rebuild the thread tree + nodes[msgid].expunge_rebuilds = true + msgid = NIL + + if msgid == NIL + msgid = get_unique_msg_id() + + node = nodes[msgid] + if not node_is_root(node.parent) and + (parent_msgid == NIL or node.parent.msgid != parent_msgid) + // Conflicting parent, remove it. If this message gets expunged, we have + // to revert back to the original parent. + node.parent = NIL + node.expunge_rebuilds = true + + if parent_msgid != NIL + link_reference(nodes[parent_msgid], node) + + // go through References (skipping the last one) + for (parent_msgid, child_msgid) in references + link_reference(nodes[parent_msgid], nodes[child_msgid]) + +fix_node(node) + if node_is_root(node) + // this node is now a root node and must be treated as such when adding + // new messages. Usually we don't have children and we could just remove + // this node, but if we have messages: + // #3: References: 1 2 + // #4: References: 2 + // If #3 gets expunged, we get here with node=1 but it still has child 2. + node.parent = NIL + +unref_node(node) + if node.unref_rebuilds + return false + node.link_refcount-- + fix_node(node) + return true + +// returns false if thread tree needs to be rebuilt +thread_expunge_msg(uid) + // get the Message-IDs as specified by the thread spec + (msgid, parent_msgid, references) = message_get_thread_headers(uid) + + node = nodes[msgid] + if node.uid != uid + // Removing a duplicate Message-ID + return false + + if node.expunge_rebuilds + return false + + if parent_msgid != NIL and not unref_node(nodes[parent_msgid]) + return false + + // go through References (skipping the last one) + for (parent_msgid, child_msgid) in references + if not unref_node(nodes[parent_msgid]) + return false + + // mark this node as expunged + node.uid = 0 + fix_node(node) + return true + +thread_iterate() + root_nodes = [] + free_nodes = [] + children = [][] + // Steps (2) and (3) + for node in nodes + if node_is_root(node) + // node itself is a duplicate root. free it later. + free_nodes[] = node + else if node_is_root(node.parent) + if node.parent != NIL + // node points to a duplicate root. replace it with the real root. + node.parent = NIL + root_nodes[] = node + else if node.uid != 0 + // Find the node's first non-dummy parent and add the node as its child. + // If there are no non-dummy parents, add it as the highest dummy's child. + nondummy_parent = node.parent + while nondummy_parent.uid == 0 and nondummy_parent.parent != NIL + nondummy_parent = nondummy_parent.parent + children[nondummy_parent][] = node + + for node in root_nodes + if node.uid == 0 + if children[node] == NIL + // remove dummy roots that have no children. + delete(node) + else if count(children[node]) == 1 + // dummy root has a single child, replace the root with its child + node = children[node] + + for node in free_nodes + free(node) + + // root_nodes and children now contain a tree equivalent to a tree built by + // THREAD=REFERENCES specification steps (1)-(3). The rest of the steps + // can be performed using them. Note that node.parent should not (and need + // not) be used because it points its parent before steps (2) and (3). + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22595.mbox:2,S new file mode 100644 index 00000000..9efb1096 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22595.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From asuth at mozilla.com Tue Mar 24 18:07:56 2015 +To: imap-protocol@u.washington.edu +From: Andrew Sutherland +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <1427242315.980300.244819753.01E1D55F@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> + <5511EDA6.7060107@laposte.net> + <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> + + <1427242315.980300.244819753.01E1D55F@webmail.messagingengine.com> +Message-ID: + +On Tue, Mar 24, 2015 at 8:11 PM, Bron Gondwana wrote: + +> Are you certain that it's related to the ID command rather than a +> general random percentage of connections advertisement? +> + +I am not certain. I was unable to find any discussion/documentation of +this phenomenon on the net and my initial attempts to find contact points +did not bear fruit. Since using ID made the problem go away as far as I +could tell, I did not pursue further escalation/contact. + +However, given that QA of Firefox OS device producers seem to test 163.com +a lot and I received a duplicate of the bug for our v2.0 branch that did +not include the fix (https://bugzil.la/1112549) ~2 weeks after the fix +landed on our v2.1/v2.2 branches, it's probably not the worst guess. + +Andrew +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22743.mbox:2,S new file mode 100644 index 00000000..70c62e4f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22743.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From dave at cridland.net Sat Mar 24 14:25:50 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + +Message-ID: <20897.1332624350.275209@puncture> + +On Sat Mar 24 00:48:38 2012, Timo Sirainen wrote: +> b) If you care about power usage, then IDLE isn't much better from +> polling, because in either case the device needs to wake up every n +> minutes to do some work and send some data + +I believe that mobile networks are substantially better than that - +normally well over 5 minutes these days. + +Waking up the connection from the server every two minutes is bad for +two reasons: + +1) It means client developers never figure out the right parameters. + +2) If client developers are controlling their keepalive traffic, they +can coordinate it with other connections to minimize power impact. + +The latter is especially important for protocols like IMAP where it's +typical for a client MUA to have multiple sessions alive at the same +time. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22756.mbox:2,S new file mode 100644 index 00000000..e7cb33ed --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22756.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From dave at cridland.net Mon Nov 14 01:13:53 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> + <4EC02C84.1090209@gulbrandsen.priv.no> + +Message-ID: <29330.1321262033.662442@puncture> + +On Sun Nov 13 21:30:49 2011, Mark Crispin wrote: +> On Sun, 13 Nov 2011, Arnt Gulbrandsen wrote: +>> It's safe for flags+rest. but not so safe for e.g. uid+rest: +>> * 42 FETCH (UID 100) +>> * 42 FETCH (RFC822.SIZE 12345) +> +> Those pair responses is completely compliant. Any client which has +> the +> slightest problem with it is broken. +> +> Servers can do this. There are servers that do it. + +As a note without conclusion, there are two variations of this which +are significant when considered as the response to a UID FETCH: + +1) Sending everything in one response, but not having UID first. + +* 42 FETCH (RFC822.SIZE 12345 UID 100) + +This is entirely legitimate, and trips up some clients. + +2) Sending as Mark's example, but reversed: + +* 42 FETCH (RFC822.SIZE 12345) +* 42 FETCH (UID 100 ENVELOPE (...)) + +This will trip up some clients; but in practise the RFC822.SIZE +response will simply be discarded. Still, this is particularly +pathological anyway. + +In pragmatic terms, if I were doing a revision of IMAP, I'd have +these as MUST NOT send, SHOULD accept. (That is, I'd document that +existing deployed clients choke on such constructs, therefore these +actively harm interoperability; on the other hand servers exist that +send such things, and clients ought to be capable to accepting it). I +know this is nastier than people adhering to the specification in the +first place, but I think it'd be more practical at this stage. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22759.mbox:2,S new file mode 100644 index 00000000..78f62d8d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22759.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 16:32:14 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] Apple's iCloud server non-compliant! +In-Reply-To: <1320102102.29743.140660992935961@webmail.messagingengine.com> +References: <727DCD4D-BA76-4EBA-A582-B0A6853F07BB@iki.fi><20111022200153.GA3907@brong.net><20111023080449.GA10954@brong.net> + + <1320102102.29743.140660992935961@webmail.messagingengine.com> +Message-ID: + +On Tue, 1 Nov 2011, Bron Gondwana wrote: +> Not really - you're already scanning to see if it's particularly long. +> We shove everything more than 1024 bytes into a literal in Cyrus, +> without even parsing it. And you need to parse the whole thing for +> " characters anyway unless you're going to be REALLY bogus about it, +> so your CPU argument doesn't hold any water. + ++1. + +Don't forget \ too. + +> Easy to just set the +> "must_send_literal" flag when you see the first 8 bit character, at +> which point you can stop scanning and just shove the bytes onto the +> wire with a {size}\r\n in front. + +Yup. + +Quoted strings are an abomination. They may be more human-readable, but +parsers do better with Hollerith type strings (e.g., literals) that do not +require prescanning. + +I probably would abolish atoms as well, except for reserved tokens in +IMAP. Most software these days doesn't use atoms for astrings even when it +can be an atom. + +> Ahh, error messages. No, I don't know what to do about that either - but +> I'm not so concerned so long as you don't eject endline characters in them. + +I would not object to an extension that says "all the world is now UTF-8 +instead of ASCII" that redefines CHAR to CHAR8. In fact, I thought that +was what the i18n extension did at its second level. + +There remains a problem with 8-bit characters that are not UTF-8. + +My ideal is "death to all charsets other than UTF-8". We are closing in on +15 years from RFC 1930. People should have gotten the word by now. To be +honest, I am shocked that we still have this discussion today and have not +forced UTF-8 everywhere. + +> Cyrus rejects messages with a bare \n I think. + +Good. All the world is not UNIX. More to the point, the Internet standard +newline is \r\n. + +>> The real peach though is probably MULTIAPPEND which wants us to allow +>> a virtual infinite amount of data upload in a single transaction. +>> Even if we figured out a way to handle that given our constraints, we +>> wouldn't want to do it since the worst possible outcome there is to +>> throw the entire thing away on failure. Just spend a couple hours +>> uploading it again! + +If MULTIAPPEND is redesigned, the following changes are desirable: + +[1] Require that the total size be declared in advance. The only (IMHO) +valid reason for a server to error on a MULTIAPPEND is "storage not +available". Most clients that MULTIAPPEND have ready access to the sizes +and can easily enumerate/sum these. + +[2] Allow IMAP URLAUTHs ala CATENATE. This would be valuable for the use +case of transfer from one IMAP server to another (as opposed to upload +from the client). Most of the real-world use of MULTIAPPEND is this use +case; it's actually pretty rare to upload from a client. + +[3] Have a mechanism to restart a MULTIAPPEND that got dropped. Require +that a client must restart within a certain time frame (TBD) and is +forbidden from doing another MULTIAPPEND if a "paused" MULTIAPPEND is in +progress. Add appropriate mechanisms to support all this. + +IMHO, these changes would reduce most of the objections to MULTIAPPEND +while keeping its desired attribute of multi-message atomicity. + +If someone cared to create a new MULTIAPPEND with these characteristics, I +would help with the document, and for my part encourage migration from the +current MULTIAPPEND to the new form. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22772.mbox:2,S new file mode 100644 index 00000000..a346cf40 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22772.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 19 17:20:52 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110519220352.GA12141@brong.net> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> +Message-ID: + +Thank you for a very entertaining rant. From your simplistic cookbook +arguments, you must be Gen-X. + +On Fri, 20 May 2011, Bron Gondwana wrote: +> Thinking... done. Gosh, that was quick. I'm not running a webmail server, +> I'm running a local cache that I want to keep in sync with the server so I +> can run searches and get identical results. I want this to work offline. + +You didn't think hard enough, nor did you grasp the point. + +> Did I mention 400ms round trips? + +I deal with RTTs like that all the time. I've dealt with much higher. I +will spare you the "back in the day" story. + +It's your choice to be clouded to the other end of the world over slow +satellite link. Those who live by the cloud, die by the cloud. + +> Turns out maybe they DO know what they want, and what they want +> isn't what you're peddling. Maybe different features are important to them +> than the features that are important to you. + +I don't produce email clients. Other than a (nicely profitable) hobby, I +don't produce email servers either. What I produce is quite lucrative, +thank you. + +I do, however, consume email clients. For my purposes, I want the email +that I use to work well. The current crop of email clients all suck, some +more than others. + +Mobile device email clients suck worse of all. It's a pathetic world when +the likes of k9mail on Android - a program whose failings are well-known - +is a recommended solution. + +Perhaps you haven't noticed - nobody has formally dropped the term "email" +from their marketing yet - but today's industry is collaboration +(dominated by one player in particular) and messaging. Email is a dying +medium. + +Email client usage is rapidly dropping off. Current email clients do not +do what consumers want. As there is no remedy within email, consumers +have turned to other media for communication. Webmail is simply a +disposable means to keep an email address for those few matters that still +require one. + +It is, however, fascinating that you produce the "what consumers want" +argument to attack me; webmail has shown that consumers don't particularly +value your desire to work offline. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22796.mbox:2,S new file mode 100644 index 00000000..daafe52f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22796.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From imap-protocol at lists.grepular.com Tue Oct 5 02:04:39 2010 +To: imap-protocol@u.washington.edu +From: Mike Cardwell +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <11166.1286222622.375011@puncture> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + <11166.1286222622.375011@puncture> +Message-ID: <4CAAEA27.5060301@lists.grepular.com> + +On 04/10/2010 21:03, Dave Cridland wrote: + +>> This makes complete sense. In order to use IMAP Idle on a phone, it +>> would have to keep a TCP connection open, and therefore a 3G connection +>> open. There's a reason why phone makers advertise separate stand by, and +>> call times for battery usage. If IMAP idle were being used, the phone +>> would never enter stand by mode, and would eat the battery within a few +>> hours. +>> +> That's somewhat ill-informed, I'm afraid. I did quite a bit of research +> into this for XMPP, and I captrued most of the findings in XEP-0286. +> +> The "3G session" does need to stay open, but it can stay in Idle, or +> PCH, modes. These cost in the region of 8mA. +> +> Small notifications - including the EXISTS and FETCH FLAGS that IDLE +> typically emits from the server - will only raise the 3G session to FACH +> mode. If the handset is forced into FACH mode constantly, this'll drain +> the battery in around 7 hours, using around 140mA. +> +> Only if the data size reaches a certain (small) threshold - about 128 +> octets typically - will the radio rise to DCH mode, where the drain is +> around 380mA - sufficient to drain the battery in three hours. + +Ok, I stand corrected. Thanks for the detailed response. I tried to use +IDLE with K-9 on my Android phone a while ago and it seemed to drain the +battery quite quickly so I made some wrong assumptions. Android runs on +a separate CPU to the rest of the phone, and that CPU goes to sleep +unless an application is using it. I guess when in IDLE mode, K-9 needs +to keep a thread running waiting for incoming data, and therefore needs +to keep a wake lock on the CPU. I suspect that might be what is draining +the battery more quickly. + +I do some Android development myself, and I can't see how you could +develop an app within the constraints of the Android sandbox which keeps +a tcp connection alive without keeping a wake lock on the cpu and +draining it's battery much more quickly. + +Either way, it seems to last a whole lot longer if I just set it to poll +for new mail every 10 minutes and I'm fine with that. + +-- +Mike Cardwell - Perl/Java/Web developer, Linux admin, Email admin +Read my tech Blog - https://secure.grepular.com/ +Follow me on Twitter - http://twitter.com/mickeyc +Hire me - http://cardwellit.com/ http://uk.linkedin.com/in/mikecardwell + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22807.mbox:2,S new file mode 100644 index 00000000..f3012285 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22807.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 06:47:09 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <1276262838.22134.61.camel@kurkku.sapo.corppt.com> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111454.51874.witold.krecicki@firma.o2.pl> + <1276262838.22134.61.camel@kurkku.sapo.corppt.com> +Message-ID: <201006111547.09949.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 15:27:18 Timo Sirainen wrote: +> On pe, 2010-06-11 at 14:54 +0200, Witold Kr?cicki wrote: +> > On Friday 11 of June 2010 14:44:43 Timo Sirainen wrote: +> > > On 11.6.2010, at 13.37, Witold Kr?cicki wrote: +> > > >> I once thought about implementing MOVE operation to Dovecot to +> > > >> improve speed. But then I realized that if client sends STORE +> > > >> \Deleted and EXPUNGE in same IP packet, I can just optimize away +> > > >> the rename()s caused by STORE. The remaining link()+unlink() should +> > > >> then be about as fast as rename(). The only exception is OSX with +> > > >> HFS filesystem, where hard links are really inefficient. +> > > > +> > > > And how hard it would be to really implement it in Dovecot? +> > > +> > > Much more difficult than I originally thought. +> > +> > Well, 'brutal' (and nonsense in a way) implementation would be to +> > 'internally' do copy messages listed and then expunge messages that were +> > copied (at least there is no setting flags). +> +> The problem is that I'd have to add a new internal "move" operation, and +> then quota code would also have to handle it, and there are probably +> many other places that would need to handle it. Also the whole move +> operation doesn't really even fit into Dovecot's internal design. It +> would be difficult to implement in any other way than copy+expunge (but +> with all the extra complexity in quota/etc code). +Still - is it worth the effort? + +> Then there's the problem that servers can support multiple mailbox +> formats. Possibly even the same user's mailboxes can be in different +> formats. While MOVE might help with maildir, it wouldn't help with mbox. + +There's also an option that server may fail with MOVE operation even if the +cp/st/ex is possible (and client must try cp/st/ex routine) + +Anyway in most of setups it's known if the system is using maildirs (or +equivalent system in which move is efficient) or mboxes (or equivalent system in +which move is inefficient) and can advertise the extension or not accordingly. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22817.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22817.mbox:2,S new file mode 100644 index 00000000..d9b17b5a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22817.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From bhayden at umn.edu Wed Dec 30 14:19:33 2009 +To: imap-protocol@u.washington.edu +From: Brian Hayden +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Childless noselect mailboxes +In-Reply-To: <3687.1262155909@succubus.panacea.null.org> +References: <1262106049.26478.745.camel@timo-desktop> + + <1262111858.26478.842.camel@timo-desktop> + + <1262114250.26478.864.camel@timo-desktop> + + + <3687.1262155909@succubus.panacea.null.org> +Message-ID: <9B261A2D-3472-414B-9155-C33F7964934A@umn.edu> + + +On Dec 30, 2009, at 12:51 AM, Joel Reicher wrote: + +> Brian Hayden writes: +>> Sorry if I was unclear. As noted I wasn't talking about the creation +>> action, but the concept of \NoSelect itself. I can't think of any +>> object in +>> any interface that the average person uses which has an analogue +>> (except, +>> obviously, for the ones of concern here--"directories" in mail +>> clients +>> which are either connecting to an IMAP server with a single-use +>> mailbox +>> format, or which hard-code a single-use view of the world). +>> +>> A directory in Windows, OS X, or most of the Linux desktop +>> environments +>> (for example) is "selectable", +> +> That depends on what you mean by "select". In a file browser it +> usually +> means merely changing some context and listings. I don't think that's +> analogous to IMAP "select"; opening an actual file is the analogous +> operation, and you can't open a directory in this way. + +> +> My theory is that we have two competing models. The first, which is +> Mark's if I've understood him correctly, is that selectable +> mailboxes are +> "files". The second, which I suspect might be common amongst users, +> is that +> messages are "files", and so the distinction between selectable and +> unselectable mailboxes loses its most obvious analogy. + +Precisely. And I'll confirm your suspicion--this is a problem that's +been studied, it isn't new. The IMAP model (the "Mark" model, which is +just a consequent of the original unix mailbox model) is not how users +think of things. It doesn't need to be--it's a protocol, not a user +interface. But to just say that all the clients are "crappy" because +they don't represent the protocol's foreign concepts in an easily +digestible way may not be the most useful approach to the issue. + +> I think the only mental model which works is a tree. If messages are +> the leaves, selectability of mailboxes seems weird because there's no +> obvious reason why some arbitrary node can't have leaves attached to +> it. + +Agreed. I suspect that the limitation existed as a consequent of the +mbox format. And of course the attachment some people have to the +concept because they're used to it--frankly I'm one of them. I find +dual-use mailboxes messy and I despise them, but I have to accept that +I'm in the minority. Most users like to to have both individual loose +letters and a shoebox full of letters inside their dresser drawer. + +> On the other hand if selectable mailboxes are leaves then dual-use +> mailboxes are difficult to understand. In fact dual-use mailboxes +> might +> have encouraged, and not just allowed, the alternative model. + + + +> I would like to suggest that the kind of "one message can be in +> multiple +> mailboxes" idea gmail is doing with "labels" might resolve the +> confusion, +> but then there's the distinction between mailboxes and flags... +> +> Cheers, +> +> - Joel +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22820.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22820.mbox:2,S new file mode 100644 index 00000000..207514eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22820.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From mrc+uw at Panda.COM Wed Nov 18 13:22:39 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] wildcards in other users' namespace +In-Reply-To: +References: <2134052040.817.1258573414683.JavaMail.root@dogfood.zimbra.com> + <1258574152.3022.695.camel@timo-desktop> + + +Message-ID: + +On Wed, 18 Nov 2009, Philip Guenther wrote: +>> Should these mailboxes be published to the world due to the anyone +>> rights, and thus show up in everybody's list of mailboxes? Or, as I +>> contend, just to those who know to look in the mrc-class account? +> Wasn't that the intent of the distinction between +l and +r? A mailbox +> that is +r-l can be selected if you can enter its name. + +I agree that this was the original intent, but it reflects a 1990s mindset +of security. The past ~15 years have shown us how deeply flawed that +mindset is. + +The fact that something is accessible, and even discoverable if you know +the (superior) place to look, should not equate to it being published. + +The underlying problem is that there is no right that controls the descent +of a hierarchy via "*". + +> I guess the problem with +r-l is that it is dependent on client support +> for directly entering mailbox names and that is apparently not something +> someone can count on. + +Sadly, I agree. The vast majority of IMAP clients suck; and in many cases +that suckage is intentional. + +When I designed IMAP, I intended a protocol that guaranteed by its design +that implementations do not (and can not) suck. The entire reason for +IMAP's excrutiatingly strict syntax rules was to aid that goal. + +I failed utterly in the client space, and failed in much of the server +space. I was younger then, and naively believed that I could defeat +suckage. + +> In order to design a fix, what *can* be depended +> on? The ability of a client to show that /Users/mrc exists at all and +> peek into it with something like that last LIST above? More? Less? + +That's the difficult problem that we must wrestle with. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22832.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22832.mbox:2,S new file mode 100644 index 00000000..9128e7de --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22832.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Jul 21 14:49:11 2009 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: A survey of Spam-related keyword usage by IMAP + clients. +In-Reply-To: <01NB1I98RDS4001ML6@mauve.mrochek.com> +References: <1247001507.8602.109.camel@legolas.orthanc.ca> + <01NB1I98RDS4001ML6@mauve.mrochek.com> +Message-ID: + +The response to the keyword survey has been ... underwhelming. Surely +there is more than one client represented on the mailing lists?!? + +Once again, the information we're looking for is described below. Please +forward this to every client writer you know and ask them to respond. +We're never going to solve this problem if these people don't start +participating. + +Please send responses directly to me. + +>> It's time to get a current view of how IMAP clients are using keywords +>> to manage spam. If you are a client author I would appreciate it if you +>> could take a moment to send me a note describing which keywords your +>> client uses for spam-related processing, and what each of the keywords +>> signifies. + +> I'd also really like to know if the client has "this is spam" or "this +> is not spam" buttons in the UI, and if it does how those buttons +> interact with the use of keywords. + +> I ask this because users of any client that has such buttons are clearly +> going to use those buttons preferentially over any other labelling +> mechanism. And if a significant number of clients have such buttons that +> do a particular thing - regardless of what that thing is - that's pretty +> much going to be determinative in finding the most easily deployed +> approach. + +>> If your client does not use keywords for this purpose, that's +>> valuable information, too, as is a breakdown of functionality by +>> software version number if there are significant differences. (If you +>> use non-keyword facilities to manage spam feel free to include a short +>> description of your methods if you think the info might be relevant.) +> +> Yes please. I'm especially interested in how many clients do this by +> resending the message to a special address. +> +>> I'm primarily interested in getting authoritative data from the client +>> authors, but others should feel free to chime in with deployment-based +>> experience of related keyword usage, but please indicate the source of +>> your comments (e.g. deployment experience, source code examination). + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22844.mbox:2,S new file mode 100644 index 00000000..8f94a3cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22844.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From tss at iki.fi Wed Feb 18 10:30:10 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + +Message-ID: <1234981810.29240.1785.camel@timo-desktop> + +On Wed, 2009-02-18 at 10:28 -0800, Mark Crispin wrote: +> On Wed, 18 Feb 2009, Timo Sirainen wrote: +> > And I know that several clients +> > use a connection that IDLEs forever, without bothering to even do DONE + +> > IDLE every 29 minutes to avoid disconnection. +> +> Outlook. + +And Apple Mail. And Thunderbird. + +> To work around the Outhouse bug, UW and Panda imapd both issue a fake +> EXISTS response at minute 29 which forces the client to issue a DONE. + +Dovecot did that too before, but it didn't work with Apple/TB. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22866.mbox:2,S new file mode 100644 index 00000000..b02c9cbe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22866.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jul 8 08:40:26 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +In-Reply-To: <169529773.13081215531416535.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1801626431.13211215531626770.JavaMail.root@dogfood.zimbra.com> + +> I tried to send "+ OK\r\n" periodically to client before real data +> preparing, and this method is helpful for some mail clients. For +> example: +> +> C: f fetch 1 (body[]) +> S: + OK // server send "+ OK\r\n" by timer while downloading full +> message +> S: + OK +> S: + OK +> ... +> S: * 1 FETCH (BODY[] {9876543} .... +> +> but I think this way is not correct. +> +> Is any IMAP protocol feature to simulate message downloading, to +> prevent client thinking about timeout? + +Sending responses starting with "+" is almost certainly wrong. + + Command continuation request responses use the token "+" instead of a + tag. These responses are sent by the server to indicate acceptance + of an incomplete client command and readiness for the remainder of + the command. + +You could probably send something like "* OK working" or "* NOOP". + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22871.mbox:2,S new file mode 100644 index 00000000..db7c14a8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22871.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From tss at iki.fi Sun Jun 1 12:20:43 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <0i/azqanypELGcsgZG99yw.md5@lochnagar.oryx.com> +References: <1212341451.3904.500.camel@hurina> + <0i/azqanypELGcsgZG99yw.md5@lochnagar.oryx.com> +Message-ID: <1212348043.3904.521.camel@hurina> + +On Sun, 2008-06-01 at 20:45 +0200, Arnt Gulbrandsen wrote: +> Timo Sirainen writes: +> > Has anyone implemented some kind of a IP forwarding extension? So +> > backend servers could see the original IPs instead of the proxy's. So +> > login would go something like: +> > +> > 1 XFORWARD lip 1.2.3.4 lport 143 rip 4.5.6.7 rport 35353 +> > 2 LOGIN user pass +> +> Login referrals? + +No, not what I meant. + +> Cyrus Murder? + +Maybe. I tried to look into the Cyrus code but I couldn't find what +commands it uses. + +> > I guess I could just implement it like that, but at least trying to be +> > interoperable with another implementation would be nice. :) +> +> I've done such things as an administrator on the TCP level, using +> transparent proxying and load balancing. Sufficiently advanced hackery +> is indistinguishable from magic. Sufficiently advanced hackery is +> easily distinguished from a good idea. (Login referrals IMO have the +> same characteristics.) + +The idea would be that there's a frontend IMAP proxy that looks up the +backend IMAP server based on the username, tells the backend server the +user's IP and then logs in using the provided user+password. Currently +the IP isn't forwarded, so some IP-based user access checks don't work. + +Kernel-level transparent proxying wouldn't be enough ?because this isn't +just dummy proxying/load-balancing, but is it possible (with Linux) to +somehow do transparent proxying with userspace doing the actual proxying +(it'd also have to decode SSL sessions)? +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22874.mbox:2,S new file mode 100644 index 00000000..046ff1a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22874.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri May 9 14:06:14 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Optimistic incremental THREAD=REFERENCES +In-Reply-To: <1210364641.9518.397.camel@hurina> +References: <1210364641.9518.397.camel@hurina> +Message-ID: + +I wrote code do to the same thing, and found another corner case. If one +or more early message(s) is/are deleted from the mailbox, then it can +be (and very seldom is) the case that a thread is split. + +Consider this four-message thread: + 1 is the start. + 2 has an In-Reply-To pointing to 1. + 3 has an In-Reply-To pointing to 1 + 4 has an IRT pointing to 2 + +If you thread this incrementally, you learn that this is one thread. + +If messages 1 and 2 are deleted and another message arrives + 5 has an IRT pointing to 3 +then your incremental algorithm may still have enough information to tie +messages 3, 4 and 5 together in one thread. A non-incremental T=R +doesn't have that information, and will make two threads. + +The subject-joining rule magnifies this. Personally I didn't imnplement +the subject-joining bit. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095091.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095091.22877.mbox:2,S new file mode 100644 index 00000000..b6569387 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095091.22877.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From roma at stalker.com Thu Mar 6 17:26:29 2008 +To: imap-protocol@u.washington.edu +From: Roman Prokhorov +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] LSUB with the % +Message-ID: <47D099C5.9040805@stalker.com> + +Hello, + +Quoting RFC 3501: +> A special situation occurs when using LSUB with the % wildcard. +> Consider what happens if "foo/bar" (with a hierarchy delimiter of +> "/") is subscribed but "foo" is not. A "%" wildcard to LSUB must +> return foo, not foo/bar, in the LSUB response, and it MUST be +> flagged with the \Noselect attribute. + +Could someone please explain why this exception is needed? + + + +E.g. if I'm subscribed to "User/somedropbox", why would I need to +discover that I'm also subscribed to "Users" if I'm not? Assuming that +'LSUB *' will return only User/somedropbox - any client can get confused. + +If some client uses a sequence of 'LSUB %', then 'LSUB found/%', etc for +reading the tree of subscriptions - this is a problem of the client, and +it should not be transferred to all servers and clients. + +If I have lookup right on 'one/two' mailbox but no lookup right on 'one' +- does it mean that the same "special situation" should occur for LIST +command which on 'LIST "~someuser" "%"' should show me 'one' (despite of +the fact that I don't have lookup right for it) if a 'one/two' mailbox +exist which for I do have lookup right? + +-- +Roman + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22595.mbox:2,S new file mode 100644 index 00000000..d1934b8d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22595.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 24 19:21:57 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> + <5511EDA6.7060107@laposte.net> + <1427238946.968483.244801809.1E105795@webmail.messagingengine.com> + + <1427242315.980300.244819753.01E1D55F@webmail.messagingengine.com> + +Message-ID: <1427250117.1005085.244856813.6CC2DA89@webmail.messagingengine.com> + +On Wed, Mar 25, 2015, at 12:07 PM, Andrew Sutherland wrote: +> On Tue, Mar 24, 2015 at 8:11 PM, Bron Gondwana +> wrote: +>> __ +>> Are you certain that it's related to the ID command rather than a +>> general random percentage of connections advertisement? +> +> I am not certain. I was unable to find any discussion/documentation of +> this phenomenon on the net and my initial attempts to find contact +> points did not bear fruit. Since using ID made the problem go away as +> far as I could tell, I did not pursue further escalation/contact. +> +> However, given that QA of Firefox OS device producers seem to test +> 163.com a lot and I received a duplicate of the bug for our v2.0 +> branch that did not include the fix (https://bugzil.la/1112549) ~2 +> weeks after the fix landed on our v2.1/v2.2 branches, it's probably +> not the worst guess. + +Presumably somebody from 163.com could actually clear up the confusion +if they chose to. + +Bron. + +-- +Bron Gondwana brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22743.mbox:2,S new file mode 100644 index 00000000..ed2833cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22743.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From tss at iki.fi Sat Mar 24 14:32:43 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <20897.1332624350.275209@puncture> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <20897.1332624350.275209@puncture> +Message-ID: <206DC161-B889-4D0F-A99D-657252229FF5@iki.fi> + +On 24.3.2012, at 23.25, Dave Cridland wrote: + +> On Sat Mar 24 00:48:38 2012, Timo Sirainen wrote: +>> b) If you care about power usage, then IDLE isn't much better from polling, because in either case the device needs to wake up every n minutes to do some work and send some data +> +> I believe that mobile networks are substantially better than that - normally well over 5 minutes these days. +> +> Waking up the connection from the server every two minutes is bad for two reasons: + +So, you're saying I should increase the default keepalive from 2 mins to 5 mins? I don't really know what is a good value, I think I just copied it from Mark. + +> 1) It means client developers never figure out the right parameters. + +Can client developers really do it much better? I guess desktop vs. mobile developers can do things differently if they wanted, but is it any more realistic for them than for server developers? + +> 2) If client developers are controlling their keepalive traffic, they can coordinate it with other connections to minimize power impact. +> +> The latter is especially important for protocols like IMAP where it's typical for a client MUA to have multiple sessions alive at the same time. + +I think my previous mail pretty much solved this on the server side? diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22756.mbox:2,S new file mode 100644 index 00000000..e48bc4e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22756.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From mrc+imap at panda.com Mon Nov 14 08:36:34 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <29330.1321262033.662442@puncture> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> + <4EC02C84.1090209@gulbrandsen.priv.no> + + <29330.1321262033.662442@puncture> +Message-ID: + +On Mon, 14 Nov 2011, Dave Cridland wrote: +> 1) Sending everything in one response, but not having UID first. +> * 42 FETCH (RFC822.SIZE 12345 UID 100) +> This is entirely legitimate, and trips up some clients. + +Such clients deserve to be tripped up. + +> 2) Sending as Mark's example, but reversed: +> * 42 FETCH (RFC822.SIZE 12345) +> * 42 FETCH (UID 100 ENVELOPE (...)) +> This will trip up some clients; but in practise the RFC822.SIZE +> response will simply be discarded. Still, this is particularly +> pathological anyway. + +It is pathological if RFC822.SIZE was not requested by the UID FETCH. It +is forbidden by the statement that I quoted in RFC 3501. + +> In pragmatic terms, if I were doing a revision of IMAP, I'd have +> these as MUST NOT send, SHOULD accept. + +I disagree. + +That statement in RFC 3501 was added because certain individuals +threatened to poo their diapers otherwise. It has caused more problems +than it solved. It helped create a fantasy that message sequence numbers +can be ignored. That is not the IMAP model, and a great deal of IMAP's +functionality is lost by doing so. If you really want that, use HTTP. + +UID is not an access key. It is a message property. In the examples above, +RFC822.SIZE 12345 and UID 100 are both properties of message 42. +RFC822.SIZE 12345 is not a property of UID 100. + +Now, it may be useful to determine that the message with property UID 100 +also has the property RFC822.SIZE 12345. But that only happens through the +common access key of message 42. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22759.mbox:2,S new file mode 100644 index 00000000..09b62b9b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22759.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 16:37:51 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <1320102709.31835.140660992941501@webmail.messagingengine.com> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org><75E51A44-91E4-48D1-BA82-789C82583ABC@iki.fi> + + <1320102709.31835.140660992941501@webmail.messagingengine.com> +Message-ID: + +On Tue, 1 Nov 2011, Bron Gondwana wrote: +>> FWIW, I always considered the implementation of string searching to be +>> implementation dependent. The only requirement was that simple +>> case-independent substring is recognized as compliant. I never intended +>> that a server be forbidden from implementing a smarter search (e.g., +>> fuzzy) that returns more matching messages. +> Interesting. That makes me feel a bit more comfortable about ignoring the +> full RFC 5051 i;unicode-casemap on searches, and only using it for sort. + +You can not do that and claim compliance with RFC 5255. + +RFC 5255 explicitly requires that you apply i;unicode-casemap in searches +as part of level 1 compliance. + +If you do not claim RFC 5255 compliance then there is no particular reason +to implement i;unicode-casemap at all. + +However, as far as I know, however, Cyrus always implemented a variant of +it from its inception; so you would actually be removing an aspect of it +that was in there from the onset. That is probably not a good idea. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22772.mbox:2,S new file mode 100644 index 00000000..6a6bd883 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22772.mbox:2,S @@ -0,0 +1,123 @@ +MBOX-Line: From slusarz at curecanti.org Thu May 19 23:26:07 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + +Message-ID: <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + +Hmmm... didn't realize my seemingly innocuous email requesting +comments would cause such a vigorous, wide-ranging discussion on a +variety of subjects. However, in no large part due to my own selfish +interests, this is my attempt to summarize/expand on the feedback +generally related to the original post. + +Here's what (I think) we learned: + +* Option A: Feasibility of extending keywords entirely within RFC 3501 +framework + +Timo/Bron both present the idea that it would be technically possible +to use the existing keyword limitations (atoms; case insensitive) to +store non-ASCII data. A solution involving using a special character +to define a "keyword+", such as #, along with encoding UTF7/UTF8 data +in a case-insensitive manner, e.g. base32, is suggested (I would +actually suggest good old base16. Since base32 requires MANDATORY '=' +padding - see RFC 4648 [6] - base16 in many situations will actually +be shorter. Plus, hex data is already prevalent in various contexts +so developers would most likely have a greater comfort level in +working with this kind of data). + +The downside of this approach is that legacy clients would have +unfettered access to these new keywords. Although many clients ignore +keywords they are unfamiliar with, other clients don't. We can +probably all agree that these clients presenting keywords such as +'#666F' (base16 encoding of 'foo') to clients may not be the best of +ideas. We would be preserving backward compatibility at the expense +of providing a label that means absolutely nothing to a user. + +However, this limitation could be worked around with use of ENABLE. +Thus, these newer keywords/labels would not be visible to legacy +servers. + +* Option B: Creating a new class of keywords called "Labels" + +Brandon suggested that the Gmail method of X-GM-LABELS +(http://code.google.com/apis/gmail/imap/#x-gm-labels) be used. +X-GM-LABELS are essentially keywords except they take ASTRINGS, +encoded w/UTF7-IMAP, instead of atoms. Although Google treats labels +interchangably as folders, the concept could be used as an extension +of keywords also. + +This solution would require definition of a store modifier to the +STORE/UID STORE commands (RFC 3501[6.4.6] - or maybe a store modifier +under RFC 4466 [2.5]), along with new SEARCH criteria (RFC 3501 +[6.4.4]) and FETCH CRITERIA (RFC 3501 [6.4.5]). The APPEND command +would most likely need to be altered (or a new command defined) to +allow for specifying labels when saving a message. (This list of +potential spec alterations is not meant to be exhaustive.) + +* Option C: Use keywords, provide keyword <-> label lookup + +Another option, that did not receive much (if any) interest, would +require NO additional extension of the IMAP protocol. This method +would be akin to the way that many clients work today: use regular RFC +3501 keywords to mark a message, and then internally do a translation +to the label when displaying to the end user. + +This translation table could be made globally accessible to all mail +clients through the METADATA extension. A server-wide entry (RFC 5464 +[3.2.1.1, 6.2]) could potentially be defined and used as a +standardized way to do keyword -> label lookups across various MUAs +accessing the mail store. This solution would require registration of +an IANA entry, but would not require a substantive change to the IMAP +spec. + + +Not sure if I am missing any other option, or another viable combo of +the concepts listed above. + +To add a bit more to the discussion, an issue from the client side +that is important to address: + +It would be useful for a client to have a list of all labels available +on the server that can be applied to the messages. These labels could +then be used in a UI element to allow for easy labeling of messages, +using labels that have already been previously defined by the user. + +At a minimum, this would need to be available on a per-mailbox basis. +This issue seems easy enough: a new response code [PERMANENTLABELS] +(?) could be output on a SELECT/EXAMINE which lists all labels used in +the mailbox. This response code would be ignored by legacy clients +pursuant to RFC 3501 [7.1]. The alternative, requiring the client to +grab all flags/keywords in a mailbox and parse for the +flags/keywords/labels used, is untenable for large mailboxes. + +However, as a practical matter, labels should be globally available in +all mailboxes. For example, a TODO label would be useful in any +mailbox. Additionally, this would potentially facilitate client UI, +as a client could, for example, provide a single unified page of +labels to allow the user to edit rather than requiring editing in each +mailbox (or requiring the client to loop through every mailbox to +globally change a label). + +Finally, and this might be overkill, but possibly implement some sort +of MODSEQ-like counter to track label changes. When labels change, +the MODSEQ-like number is incremented. This would allow a client to +skip synchronizing the label list on every login if not needed. +However, given that the number of labels in general might be limited +(most people use no more than 5-10?), the cost might outweigh the +benefit. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22796.mbox:2,S new file mode 100644 index 00000000..b68e1c74 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22796.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Oct 5 03:29:21 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +Message-ID: <87lIcMeyz6O3xDzKeX7qvQ.md5@[192.168.16.40]> + +Dave Cridland writes: +> The "3G session" does need to stay open, but it can stay in Idle, or +> PCH, modes. These cost in the region of 8mA. +> +> Small notifications - including the EXISTS and FETCH FLAGS that IDLE +> typically emits from the server - will only raise the 3G session to +> FACH mode. If the handset is forced into FACH mode constantly, +> this'll drain the battery in around 7 hours, using around 140mA. +> +> Only if the data size reaches a certain (small) threshold - about 128 +> octets typically - will the radio rise to DCH mode, where the drain +> is around 380mA - sufficient to drain the battery in three hours. + +Thanks. + +IIRC iphone mail 4.x does implement idle. It also implements compress +and condstore, both of which ought to help avoid DCH. (Those 128 bytes +would be about 80 after TCP/IP overhead, or 100-200 with IMAP or TLS +compression, right?) + +8mA isn't much. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22807.mbox:2,S new file mode 100644 index 00000000..9859e8de --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22807.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 07:27:30 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111547.09949.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111454.51874.witold.krecicki@firma.o2.pl> + <1276262838.22134.61.camel@kurkku.sapo.corppt.com> + <201006111547.09949.witold.krecicki@firma.o2.pl> +Message-ID: <1276266450.22134.92.camel@kurkku.sapo.corppt.com> + +On pe, 2010-06-11 at 15:47 +0200, Witold Kr?cicki wrote: +> > > > > And how hard it would be to really implement it in Dovecot? +> > > > +> > > > Much more difficult than I originally thought. +> > > +> > > Well, 'brutal' (and nonsense in a way) implementation would be to +> > > 'internally' do copy messages listed and then expunge messages that were +> > > copied (at least there is no setting flags). +> > +> > The problem is that I'd have to add a new internal "move" operation, and +> > then quota code would also have to handle it, and there are probably +> > many other places that would need to handle it. Also the whole move +> > operation doesn't really even fit into Dovecot's internal design. It +> > would be difficult to implement in any other way than copy+expunge (but +> > with all the extra complexity in quota/etc code). +> Still - is it worth the effort? + +I don't currently see it being worth the trouble. Maybe I'll implement +it some day, but only if my employer wants it. + +Actually, I just thought of another simple way to implement it: + +1) Temporarily disable quota enforcing +2) copy +3) expunge +4) Enable quota enforcing + +The only benefit with that would then be able to move messages without +running out of quota. I guess I could implement that.. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22844.mbox:2,S new file mode 100644 index 00000000..9329beab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22844.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From davidr at imap.cc Wed Feb 18 10:40:02 2009 +To: imap-protocol@u.washington.edu +From: David Rauschenbach +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <1234981810.29240.1785.camel@timo-desktop> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> +Message-ID: <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + +In a similar vein, our mobile gateway issues a fake EXISTS at around +the 2-minute mark, to keep the mobile operator networks from timing +out the TCP session. + +David + + +On Feb 18, 2009, at 10:30 AM, Timo Sirainen wrote: + +> On Wed, 2009-02-18 at 10:28 -0800, Mark Crispin wrote: +>> On Wed, 18 Feb 2009, Timo Sirainen wrote: +>>> And I know that several clients +>>> use a connection that IDLEs forever, without bothering to even do +>>> DONE + +>>> IDLE every 29 minutes to avoid disconnection. +>> +>> Outlook. +> +> And Apple Mail. And Thunderbird. +> +>> To work around the Outhouse bug, UW and Panda imapd both issue a fake +>> EXISTS response at minute 29 which forces the client to issue a DONE. +> +> Dovecot did that too before, but it didn't work with Apple/TB. +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22866.mbox:2,S new file mode 100644 index 00000000..e416a8e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22866.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From tjs at psaux.com Tue Jul 8 14:21:40 2008 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] avoiding IMAP as a vector for cross-site scripting + attacks +Message-ID: <4873DA64.8050605@psaux.com> + +Recently, some of my company's IMAP servers were unwitting +participants in a cross-site scripting exploit demonstration. You can +read more about it here: +http://resources.enablesecurity.com/resources/the%20extended%20html%20form%20attack%20revisited.pdf + +But in this mesasge, I'm speaking only for myself. + +Some HTTP clients (okay, Internet Explorer) can be tricked into +sending an HTTP request over port 993, imaps. They're too smart to +use 143, but 993 is no problem. + +IMAP has the quirk that some of the client's request is blindly echoed +back--that is, the command tag. + +If that tag is , it is possible for the result +page to have a small amount of JavaScript that can acquire a user's +cookies. I don't believe anyone actually used this to steal cookies, +just to demonstrate that it's possible. + +Our server had the additional flaw that we did not perform careful +parsing on the tag, allowing characters outside the already generous +range permitted by IMAP. In particular, our server allowed '(' and +')'. + +When I tried this exploit against a Cyrus server, it didn't work, at +least in part because () are not allowed, but the Cyrus the server was +still forced to process about 15 invalid commands. I didn't check the +UW server because I didn't have one handy. + +The protocol clearly allows <>;/&#!$, etc., all valuable characters +that could contribute to a JavaScript-based attack + +I recognize that, in some sense, this isn't an IMAP problem, but it +remains a problem that can be fixed in IMAP, and can harm users if you +have HTTP and IMAP servers in the same domain. + +I recommend the following be implemented in IMAP servers: + +protocol legal: + Make sure '%', '(', and ')' can't occur in tags that are + echoed back. This is just enforcing the protocol carefully. + +creative interpretation of protocol: + hang up after multiple consecutive invalid commands + hang up if the first command looks like HTTP + (either the tag is POST or PUT, + or the line ends with HTTP/1.1, etc.) + +I want to claim that the latter two are technically protocol legal, +based on the position that an IMAP server can say NO to any command, +but that's a stretch. + +I have implemented some of these hacks without apparent consequence, +except our security people like me. + +I'm looking for additional heuristics to hamper this type of attack. + +I belive a future IMAP specification should restrict tags to +[a-zA-Z0-9]+, since this would preclude all of the characters likely +to trigger problems. + +For HTTP clients, perhaps the best way to work around attacks like +this is to treat invalid HTTP responses as errors, or if you must +interpret them as pages, show them as text/plain, or +JavaScript-disabled, not as HTML. Firefox 1.5 appears to display such +pages in text/plain, although newer versions block access on port 993 +entirely. + +Speaking only for myself, of course. + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22871.mbox:2,S new file mode 100644 index 00000000..a1266d03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22871.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dkarp at zimbra.com Sun Jun 1 13:08:31 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <259504957.21571212350751310.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1070904325.21591212350911669.JavaMail.root@dogfood.zimbra.com> + +> The idea would be that there's a frontend IMAP proxy that looks up +> the backend IMAP server based on the username, tells the backend +> server the user's IP and then logs in using the provided user+password. + +We currently do this with a separate nginx process. We tell the IMAP +server the client's actual IP by having nginx do an + + A001 ID ("X-ORIGINATING-IP" "") + +as the first command, before authenticating. + +Since this won't work for GSSAPI, we've also extended nginx to do +GSSAPI auth locally and then use an AUTH PLAIN variant to authenticate +the server connection. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22874.mbox:2,S new file mode 100644 index 00000000..50ede4e4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22874.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From tss at iki.fi Fri May 9 14:52:30 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Optimistic incremental THREAD=REFERENCES +In-Reply-To: +References: <1210364641.9518.397.camel@hurina> + +Message-ID: + +On May 10, 2008, at 12:06 AM, Arnt Gulbrandsen wrote: + +> I wrote code do to the same thing, and found another corner case. If +> one or more early message(s) is/are deleted from the mailbox, then +> it can be (and very seldom is) the case that a thread is split. +> +> Consider this four-message thread: +> 1 is the start. +> 2 has an In-Reply-To pointing to 1. +> 3 has an In-Reply-To pointing to 1 +> 4 has an IRT pointing to 2 +> +> If you thread this incrementally, you learn that this is one thread. +> +> If messages 1 and 2 are deleted and another message arrives +> 5 has an IRT pointing to 3 +> then your incremental algorithm may still have enough information to +> tie messages 3, 4 and 5 together in one thread. A non-incremental +> T=R doesn't have that information, and will make two threads. + +A quick test shows that my algorithm handles this, probably because of +the refcounting rules. I'll look at it more closely later to make sure +that it does. + +> The subject-joining rule magnifies this. Personally I didn't +> imnplement the subject-joining bit. + +Me neither. That generates more complexity and I'd rather drop the +subject merging completely (my X-REFERENCES2 threading algorithm does +that). + +BTW. This reminds me of your INTHREAD draft with THREAD=REFS. I guess +by "THREAD=REFS ignores Date" you mean that you don't care in which +order the threads are returned? Or are they returned sorted by +INTERNALDATE? Or sequences? Anyway I don't think you should drop the +In-Reply-To header handling. That makes it difficult to use the same +persistent thread information for both THREAD=REFERENCES and +THREAD=REFS. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095092.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095092.22877.mbox:2,S new file mode 100644 index 00000000..b251d052 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095092.22877.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From MRC at Washington.EDU Thu Mar 6 17:51:07 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] LSUB with the % +In-Reply-To: <47D099C5.9040805@stalker.com> +References: <47D099C5.9040805@stalker.com> +Message-ID: + +On Fri, 7 Mar 2008, Roman Prokhorov wrote: +> E.g. if I'm subscribed to "User/somedropbox", why would I need to discover +> that I'm also subscribed to "User" if I'm not? Assuming that 'LSUB *' will +> return only User/somedropbox - any client can get confused. + +Consider the situation in which User/somedropbox is subscribed, but User +is not. The client issues + tag LSUB "" % + +The server can not return "User/somedropbox" because that does not match +the pattern. "User" isn't subscribed. So how does the hierarchical +browsing client find out that there's a "User/somedropbox" that is +subscribed? + +The answer is that it returns "User" to LSUB with the \NoSelect flag, to +indicate that "User" is not subscribed, but it has at least one descendent +(child, grandchild, great-grandchild, whatever) which is subscribed. + +> If some client uses a sequence of 'LSUB %', then 'LSUB found/%', etc for +> reading the tree of subscriptions - this is a problem of the client, and it +> should not be transferred to all servers and clients. + +You just described the way that ALL well-behaved clients prowl the +hierarchy with LIST. Only poorly-written clients use a * wildcard with +LIST. + +It is not unreasonable that a hierarchical browsing client would do the +same for LSUB. + +> If I have lookup right on 'one/two' mailbox but no lookup right on 'one' - +> does it mean that the same "special situation" should occur for LIST command +> which on 'LIST "~someuser" "%"' should show me 'one' (despite of the fact +> that I don't have lookup right for it) if a 'one/two' mailbox exist which for +> I do have lookup right? + +This is something that an implementation would have to decide for itself. +However, if LIST won't show "one" but will show "one/two", then there is +no way for a hierarchical browser can discover "one/two". Your users may +complain. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22595.mbox:2,S new file mode 100644 index 00000000..2b6aad21 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22595.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 24 19:51:07 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <1427226341.922442.244719958.3B420059@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> + + <1427226341.922442.244719958.3B420059@webmail.messagingengine.com> +Message-ID: <2FC3E597-358B-4F71-B1F6-68A18C85DB51@orthanc.ca> + + +On Mar 24, 2015, at 12:45 PM, Bron Gondwana wrote: + +> Of these, a bunch are non-standard / never been standardised. + +Yes, I noticed. But there are still a butt-load of RFC extensions that deserve review, I think. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22743.mbox:2,S new file mode 100644 index 00000000..76c09a47 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22743.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From dave at cridland.net Sat Mar 24 14:40:46 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <206DC161-B889-4D0F-A99D-657252229FF5@iki.fi> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <20897.1332624350.275209@puncture> + <206DC161-B889-4D0F-A99D-657252229FF5@iki.fi> +Message-ID: <20897.1332625246.404702@puncture> + +On Sat Mar 24 21:32:43 2012, Timo Sirainen wrote: +> On 24.3.2012, at 23.25, Dave Cridland wrote: +> +> > On Sat Mar 24 00:48:38 2012, Timo Sirainen wrote: +> >> b) If you care about power usage, then IDLE isn't much better +> from polling, because in either case the device needs to wake up +> every n minutes to do some work and send some data +> > +> > I believe that mobile networks are substantially better than that +> - normally well over 5 minutes these days. +> > +> > Waking up the connection from the server every two minutes is bad +> for two reasons: +> +> So, you're saying I should increase the default keepalive from 2 +> mins to 5 mins? I don't really know what is a good value, I think I +> just copied it from Mark. +> +> +The right default varies massively from network to network; the +server is the worst possible place to guess what it might be. + + +> > 1) It means client developers never figure out the right +> parameters. +> +> Can client developers really do it much better? I guess desktop vs. +> mobile developers can do things differently if they wanted, but is +> it any more realistic for them than for server developers? +> +> +Yes. + +Mobile developers tend to know they're on a mobile. + + +> > 2) If client developers are controlling their keepalive traffic, +> they can coordinate it with other connections to minimize power +> impact. +> > +> > The latter is especially important for protocols like IMAP where +> it's typical for a client MUA to have multiple sessions alive at +> the same time. +> +> I think my previous mail pretty much solved this on the server side? + +You're notifying every session for the same user at the same time, if +I read that right. + +But my email client has a session for my Isode mail and a session for +my personal mail - that won't help that. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22756.mbox:2,S new file mode 100644 index 00000000..04f79560 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22756.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From dave at cridland.net Mon Nov 14 08:48:35 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> + <4EC02C84.1090209@gulbrandsen.priv.no> + + <29330.1321262033.662442@puncture> + +Message-ID: <29330.1321289315.045850@puncture> + +On Mon Nov 14 16:36:34 2011, Mark Crispin wrote: +> On Mon, 14 Nov 2011, Dave Cridland wrote: +>> 1) Sending everything in one response, but not having UID first. +>> * 42 FETCH (RFC822.SIZE 12345 UID 100) +>> This is entirely legitimate, and trips up some clients. +> +> Such clients deserve to be tripped up. +> +> +I don't disagree... But I'm also pragmatic enough to consider that +insufficient motivation to avoid tripping them up if practical. + + +>> 2) Sending as Mark's example, but reversed: +>> * 42 FETCH (RFC822.SIZE 12345) +>> * 42 FETCH (UID 100 ENVELOPE (...)) +>> This will trip up some clients; but in practise the RFC822.SIZE +>> response will simply be discarded. Still, this is particularly +>> pathological anyway. +> +> It is pathological if RFC822.SIZE was not requested by the UID +> FETCH. It +> is forbidden by the statement that I quoted in RFC 3501. +> +> +Well, it's just plain wrong if it's been requested, and it's weird if +it hasn't been. + +> UID is not an access key. It is a message property. In the examples +> above, +> RFC822.SIZE 12345 and UID 100 are both properties of message 42. +> RFC822.SIZE 12345 is not a property of UID 100. +> +> Now, it may be useful to determine that the message with property +> UID 100 +> also has the property RFC822.SIZE 12345. But that only happens +> through the +> common access key of message 42. + +Again, I don't disagree - even if internally in Polymer, the UID *is* +the primary key. + +But it seems a relatively simple way of improving interoperability +without actively causing any worse problems. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22759.mbox:2,S new file mode 100644 index 00000000..819ba3f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22759.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From mrc+imap at panda.com Mon Oct 31 17:06:42 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + +Message-ID: + +On Mon, 31 Oct 2011, Brandon Long wrote: +> When we first released IMAP internally, the overwhelming use case was +> as an adjunct to Gmail Web interface, not as a replacement to the +> client. That is expected, of course. But our public usage mimic'd +> this to nearly the extreme. Now, I'm willing to believe that our +> choices informed the usage in some part, but the overwhelming use case +> of Gmail's IMAP interface is access on mobile devices by people who +> use the Gmail Web interface on the desktop. + +That does NOT bolster the claim that the public wants a non-compliant +IMAP implementation that may break their IMAP client. + +My experience is that the overwhelming majority of users want their tools +to work. When an IMAP client does not work with Gmail, they will complain +to the IMAP client vendor, not to Google. + +> Or arguments I've gotten in on Google+ with our adoring public +> who wanted us to make the usage even more Gmail like, impossible +> though that was to express in the IMAP protocol. + +I double that Google+ is representative of the community. Yes, I have a +Google+ account, but after a few times I found it to be pointless (mostly +filled with people desperately trying to convince themselves and others +that it is better than FB) and stopped using it. It's not an FB-killer. + +> If we are violating guarantees that cause malfunctions, it would be +> good to know that. + +Gmail's IMAP server does so. + +These complaints are ongoing and easy to find. The usual answer is always +"Gmail doesn't work well as an IMAP server, don't try to use it as such; +instead use fetchmail to download to a local file and process it locally." + +I suggest that you collect these complaints, and one by one fix them. + +I did the exercise once upon a time, and came up with a few dozen discrete +issues that was delivered to Google. I don't have list any more. Given my +experience the last time, I will not repeat the effort. You had the +opportunity, you squandered it, not my problem. + +It would also be a good idea to contact each of the complainers and ask +for confirmation that the problem is abolished. That's what Google would +do if it cared. I remain unconvinced. + +The only use that I have for Gmail is receipts from the Android market. + +Speaking of Android, I suppose you know that the Android Mail app is +almost completely useless (embarassingly bad), and that Android users who +do anything but the most casual email must download a third party client +(none of which are particularly good, but at least are usable). Perhaps +you don't care because Android has a separate app for Gmail. + +It sure does look like the Microsoft monopolistic behavior; pretend to use +open standards but do things so that other vendors' products do not work +well. So much for "don't be evil". + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22772.mbox:2,S new file mode 100644 index 00000000..2a3ca4a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22772.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From gnb at fastmail.fm Thu May 19 23:40:35 2011 +To: imap-protocol@u.washington.edu +From: Greg Banks +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> <20110518210716.GA12636@brong.net> <20110519045851.GA23466@brong.net> <20110519220352.GA12141@brong.net> + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> +Message-ID: <4DD60CE3.3020502@fastmail.fm> + +On 20/05/11 16:26, Michael M Slusarz wrote: +> +> +> Finally, and this might be overkill, but possibly implement some sort +> of MODSEQ-like counter to track label changes. When labels change, +> the MODSEQ-like number is incremented. This would allow a client to +> skip synchronizing the label list on every login if not needed. +> However, given that the number of labels in general might be limited +> (most people use no more than 5-10?), the cost might outweigh the +> benefit. +> + +If your new labels are set via the STORE/UID STORE commands, then +RFC4551 says that setting them must update MODSEQ. So your MODSEQ-like +counter already exists. + +-- +Greg. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22796.mbox:2,S new file mode 100644 index 00000000..801bb236 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22796.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dot at dotat.at Tue Oct 5 04:43:50 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <11166.1286226226.318772@puncture> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <11166.1286226226.318772@puncture> +Message-ID: + +On Mon, 4 Oct 2010, Dave Cridland wrote: +> +> Yes, except that the near constant DCH-level, plus the additional cost of +> actually transmitting over that, could quite easily cost more than the 500mA +> USB will feed it. :-) + +That has certainly been my experience tethering a laptop to a 3G GSM +handset in the UK. (Apple MacBook, Nokia 6500c, Orange) + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +HUMBER THAMES DOVER WIGHT PORTLAND: NORTH BACKING WEST OR NORTHWEST, 5 TO 7, +DECREASING 4 OR 5, OCCASIONALLY 6 LATER IN HUMBER AND THAMES. MODERATE OR +ROUGH. RAIN THEN FAIR. GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22807.mbox:2,S new file mode 100644 index 00000000..2d85119f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22807.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From dkarp at zimbra.com Fri Jun 11 07:40:39 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <1276266450.22134.92.camel@kurkku.sapo.corppt.com> +Message-ID: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + +> > Still - is it worth the effort? +> +> I don't currently see it being worth the trouble. Maybe I'll implement +> it some day, but only if my employer wants it. + +If other folks are serious about this, I'd be happy to implement a +MOVE command in our IMAP server. It's minimal new code for us, and +it'd be significantly more performant than COPY/STORE/EXPUNGE. + +Incidentally, Mark's stated reason for avoiding a MOVE op in baseline +IMAP was that it would be the only operation to require locking >1 +mailbox simultaneously. Or so I recall. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22844.mbox:2,S new file mode 100644 index 00000000..0cd9e756 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22844.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From tss at iki.fi Wed Feb 18 10:40:39 2009 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> +Message-ID: <1234982439.29240.1786.camel@timo-desktop> + +A better idea is to send "* OK" replies instead of EXISTS replies. +Dovecot does that too ("* OK Still here."). + +On Wed, 2009-02-18 at 10:40 -0800, David Rauschenbach wrote: +> In a similar vein, our mobile gateway issues a fake EXISTS at around +> the 2-minute mark, to keep the mobile operator networks from timing +> out the TCP session. +> +> David +> +> +> On Feb 18, 2009, at 10:30 AM, Timo Sirainen wrote: +> +> > On Wed, 2009-02-18 at 10:28 -0800, Mark Crispin wrote: +> >> On Wed, 18 Feb 2009, Timo Sirainen wrote: +> >>> And I know that several clients +> >>> use a connection that IDLEs forever, without bothering to even do +> >>> DONE + +> >>> IDLE every 29 minutes to avoid disconnection. +> >> +> >> Outlook. +> > +> > And Apple Mail. And Thunderbird. +> > +> >> To work around the Outhouse bug, UW and Panda imapd both issue a fake +> >> EXISTS response at minute 29 which forces the client to issue a DONE. +> > +> > Dovecot did that too before, but it didn't work with Apple/TB. +> > +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22866.mbox:2,S new file mode 100644 index 00000000..45ba6436 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22866.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From markrcrispin at live.com Tue Jul 8 16:07:53 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] avoiding IMAP as a vector for cross-site + scripting attacks +In-Reply-To: <4873DA64.8050605@psaux.com> +References: <4873DA64.8050605@psaux.com> +Message-ID: + + +UW imapd can be used to exploit this attack. + +I believe that I have fixed the issue in Panda imapd. Panda imapd now syntax checks tags, and closes the connection after any invalid command when not logged in. Invalid commands don't echo the bogus command back when not logged in either. Thanks for reporting it. + +-- Mark -- + +> When I tried this exploit against a Cyrus server, it didn't work, at +> least in part because () are not allowed, but the Cyrus the server was +> still forced to process about 15 invalid commands. I didn't check the +> UW server because I didn't have one handy. + +_________________________________________________________________ +The i?m Talkaton. Can 30-days of conversation change the world? +http://www.imtalkathon.com/?source=EML_WLH_Talkathon_ChangeWorld diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22871.mbox:2,S new file mode 100644 index 00000000..ac599d34 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22871.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Sun Jun 1 13:21:37 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <1070904325.21591212350911669.JavaMail.root@dogfood.zimbra.com> +References: <1070904325.21591212350911669.JavaMail.root@dogfood.zimbra.com> +Message-ID: <461F5E4A-6B12-4CAB-AFA6-D5CBABF0D7B6@iki.fi> + +On Jun 1, 2008, at 11:08 PM, Dan Karp wrote: + +>> The idea would be that there's a frontend IMAP proxy that looks up +>> the backend IMAP server based on the username, tells the backend +>> server the user's IP and then logs in using the provided user +>> +password. +> +> We currently do this with a separate nginx process. We tell the IMAP +> server the client's actual IP by having nginx do an +> +> A001 ID ("X-ORIGINATING-IP" "") +> +> as the first command, before authenticating. + +That sounds interesting, although it kind of violates a MUST NOT in +the ID spec: + +> Implementations MUST NOT make operational changes based on the data +> sent as part of the ID command or response. The ID command is for +> human consumption only, and is not to be used in improving the +> performance of clients or servers. + +Especially if the IP is then used to do access checks. But since this +is more of an internal proxy<->server action rather than client<- + >server, maybe it's not too bad to violate it. :) One good thing +about it is that it could be sent automatically by simply checking if +ID extension is supported by the destination server. My current code +requires explicit configuration to enable sending the XFORWARD, which +is just an annoying extra setting. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22874.mbox:2,S new file mode 100644 index 00000000..9512fa1a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22874.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From MRC at Washington.EDU Fri May 9 15:14:55 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Optimistic incremental THREAD=REFERENCES +In-Reply-To: +References: <1210364641.9518.397.camel@hurina> + + +Message-ID: + +On Sat, 10 May 2008, Timo Sirainen wrote: +>> The subject-joining rule magnifies this. Personally I didn't imnplement the +>> subject-joining bit. +> Me neither. That generates more complexity and I'd rather drop the subject +> merging completely (my X-REFERENCES2 threading algorithm does that). + +Hopefully this does not cause a flamewar. + +I do not approve of the practice of an implementor deciding not to +implement a portion of the specification, even if there seem to be good +reasons to do so. + +This leads us to a "do what we say, not what we do" situation when it +comes to non-compliant or broken servers such as Exchange and Gmail. + +"I didn't implement header searching. It generates too much complexity." + +"I didn't implement the delete-expunge model. It generates too much +complexity. Setting \Deleted just moves to Trash." + +"I don't care that I transmit bad syntax in BODYSTRUCTURE. Outlook +doesn't use it, so it doesn't matter." + +Now, with that said, I do not object to the creation and publications of a +new threading algorithm that is identical to REFERENCES but omits the +subject consolidation step. I would probably implement it, especially if +it really is identical modulo that step. + +Nor would I weep if REFERENCES2 (or whatever) ends up being the one that +everybody uses and REFERENCES passes into obscurity. + +All I ask is that if you implement REFERENCES, implement it according to +the specification. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22877.mbox:2,S new file mode 100644 index 00000000..2c8ab8f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22877.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Mar 6 17:54:21 2008 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] LSUB with the % +In-Reply-To: <47D099C5.9040805@stalker.com> +References: <47D099C5.9040805@stalker.com> +Message-ID: + +On Fri, 7 Mar 2008, Roman Prokhorov wrote: +> Quoting RFC 3501: +>> A special situation occurs when using LSUB with the % wildcard. +>> Consider what happens if "foo/bar" (with a hierarchy delimiter of +>> "/") is subscribed but "foo" is not. A "%" wildcard to LSUB must +>> return foo, not foo/bar, in the LSUB response, and it MUST be +>> flagged with the \Noselect attribute. +> +> Could someone please explain why this exception is needed? +> +> E.g. if I'm subscribed to "User/somedropbox", why would I need to discover +> that I'm also subscribed to "Users" if I'm not? Assuming that 'LSUB *' will +> return only User/somedropbox - any client can get confused. + +"User" will be returned by LSUB with the \noselect attribute, so the +client knows that the mailbox isn't really subscribed. No reason to get +confused. + + +> If some client uses a sequence of 'LSUB %', then 'LSUB found/%', etc for +> reading the tree of subscriptions - this is a problem of the client, and +> it should not be transferred to all servers and clients. + +Okay, imagine this special handling didn't exist. Please explain how a +client is to discover that you're subscribed to "Users/somedropbox" +without doing an 'LSUB "" *' and without iterating over the output of a +normal LIST. I.e., how is it supposed to discover that there's a +subscribed mailbox under "Users" at all? + + +> If I have lookup right on 'one/two' mailbox but no lookup right on 'one' +> - does it mean that the same "special situation" should occur for LIST +> command which on 'LIST "~someuser" "%"' should show me 'one' (despite of +> the fact that I don't have lookup right for it) if a 'one/two' mailbox +> exist which for I do have lookup right? + +You should probably be sending 'LIST "~someuser/" "%"'. Note the trailing +hierarchy delimiter on the reference argument. + +With that caveat, you are correct: you should get back + * LIST (\Noselect) "/" ~someuser/one + +(The \noselect attribute *really* means "no lookup right, doesn't exist, +or doesn't match the selection criterion") + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095093.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095093.22880.mbox:2,S new file mode 100644 index 00000000..af5a1691 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095093.22880.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From janssen at parc.com Sun Feb 3 13:30:07 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +Message-ID: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> + +I'm looking at the various uses of CHARSET in IMAP. It appears to +occur in two places: the SEARCH command, and the FETCH response. I +think it can also appear in the message literal in the APPEND command. +So those are the only three places where an IMAP server (or client) +might see non-ASCII byte streams. Everything else is ASCII. + +Is that correct? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22595.mbox:2,S new file mode 100644 index 00000000..bfc4eb2f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22595.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From brong at fastmail.fm Tue Mar 24 20:01:44 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <2FC3E597-358B-4F71-B1F6-68A18C85DB51@orthanc.ca> +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> + + <1427226341.922442.244719958.3B420059@webmail.messagingengine.com> + <2FC3E597-358B-4F71-B1F6-68A18C85DB51@orthanc.ca> +Message-ID: <1427252504.1020832.244866921.0886703A@webmail.messagingengine.com> + +On Wed, Mar 25, 2015, at 01:51 PM, Lyndon Nerenberg wrote: +> +> On Mar 24, 2015, at 12:45 PM, Bron Gondwana wrote: +> +> > Of these, a bunch are non-standard / never been standardised. +> +> Yes, I noticed. But there are still a butt-load of RFC extensions that deserve review, I think. + +Honestly the simplest thing is what was discussed years ago on the imap5 list, just picking +all the ones which really matter and get significant use, bunding them behind "IMAP5" and +replacing all the other capabilities with just IMAP5. + +It has the plus sides of: + +a) shorter capability strings +b) a base standard of stuff you have to support to be allowed to claim to be IMAP5 + +(I would include QRESYNC in that though, or go back and address the expunged hole in condstore) + +Bron. + +-- + Bron Gondwana + brong@fastmail.fm + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22743.mbox:2,S new file mode 100644 index 00000000..859ed5f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22743.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Mar 24 15:19:13 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <694AC956-B34C-4E9F-83B3-45FB6AFA248D@iki.fi> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <694AC956-B34C-4E9F-83B3-45FB6AFA248D@iki.fi> +Message-ID: <4F6E4861.2060709@gulbrandsen.priv.no> + +On 03/24/2012 02:13 AM, Timo Sirainen wrote: +> next_notify_secs = 120 - ((time() + crc32(username)) % 120); + +Why username instead of client IP? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22756.mbox:2,S new file mode 100644 index 00000000..7896c450 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22756.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From mrc+imap at panda.com Mon Nov 14 12:37:42 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: <29330.1321289315.045850@puncture> +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> + <4EC02C84.1090209@gulbrandsen.priv.no> + + <29330.1321262033.662442@puncture> + + <29330.1321289315.045850@puncture> +Message-ID: + +On Mon, 14 Nov 2011, Dave Cridland wrote: +>> Such clients deserve to be tripped up. +> I don't disagree... But I'm also pragmatic enough to consider that +> insufficient motivation to avoid tripping them up if practical. + +If you were the Very Big Corporation Of Monopoly, you would be happy to +trip up those clients in order to drive them out of business. + +You already trip up other vendors' products with your violations of the +standard. The problem is that gets you flamed and may attract unwelcome +attention by regulators. It's better, if you can arrange it, to trip up +other vendors' products with your unexpected compliance with the standard, + +> Well, it's just plain wrong if it's been requested, and it's weird if +> it hasn't been. + +Yes. On the other hand, a client that implemented IMAP according to the +standard would have no problem either way. + +> Again, I don't disagree - even if internally in Polymer, the UID *is* +> the primary key. + +Polymer is not the only implementation with that internal implementation. +However, that leads to two deadly traps for incautious implementors (and +I know that you are not one of these and certainly do it right in +Polymer): + +The first trap is to confuse your internal implementation with IMAP. Time +and time again, I have seen internal implementations that were SIMILAR to +IMAP UIDs, but did not have the same precise semantics. Not good. + +The second trap is failing to implement message sequence numbers as a +primary key in the client-facing part. This may be as simple as a vector, +indexed by message sequence number, to the internal key. You may, if and +ONLY if there is an exact sematic mapping between IMAP UID and internal +key, shortcut the UID->MSN->internal mapping. + +Too often, I see the shortcut when the semantics aren't the same, and I +see truly bizarre (and dysfunctional!) implementations of MSN. + +I won't tell you about the implementation that, for each command, +enumerated all the UIDs and then did a bubble sort in order to implement +MSNs (and UID ranges). Oh I guess I just did. Sorry if that made you puke +your lunch. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22759.mbox:2,S new file mode 100644 index 00000000..3df6e530 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22759.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Mon Oct 31 23:06:29 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + +Message-ID: + +On 1.11.2011, at 1.14, Brandon Long wrote: + +> If we are violating guarantees that cause malfunctions, it would be +> good to know that. The only one I know of is that under some +> circumstances, alpine wants some combination of the header + body to +> equal something, and due to our LF->CRLF shenanigans, that can be +> violated. I'm not happy with it, but I have no good way to fix it, +> either. Whether its an important guarantee, well, it hasn't seemed to +> have affected anyone who removed the check. + +Dovecot also stores messages with LFs and has no trouble exporting them as if they were CRLFs. I think the only actual (performance) problem with it is .. well, actually the topic of this thread :) A partial fetch from a non-zero offset requires some scanning to find out the LF-only-offset. But luckily all clients just fetch the blocks in increasing order from zero offset, so this isn't such an important problem. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22772.mbox:2,S new file mode 100644 index 00000000..b7a54a5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22772.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From tss at iki.fi Fri May 20 02:23:05 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> +Message-ID: <1305883385.10421.294.camel@hurina> + +On Fri, 2011-05-20 at 00:26 -0600, Michael M Slusarz wrote: + +> The downside of this approach is that legacy clients would have +> unfettered access to these new keywords. Although many clients ignore +> keywords they are unfamiliar with, other clients don't. We can +> probably all agree that these clients presenting keywords such as +> '#666F' (base16 encoding of 'foo') to clients may not be the best of +> ideas. We would be preserving backward compatibility at the expense +> of providing a label that means absolutely nothing to a user. +> +> However, this limitation could be worked around with use of ENABLE. +> Thus, these newer keywords/labels would not be visible to legacy +> servers. + +You mean legacy clients I guess. + +> * Option B: Creating a new class of keywords called "Labels" + +Is it all that useful to have basically just another set of keywords +with duplicated list of commands/parameters to manage them? + +You could do almost the same thing with using "ENABLE utf8-keywords", +which changes keywords to be UTF-8 ASTRINGs rather than ATOMs. Clients +that don't understand those can keep ignoring them. Clients that do, can +manage them using the same old keyword commands/parameters. And if you +wanted to separate them from the "old keywords" you could prefix them +with '#' or something. The only difference to "labels" is that it +wouldn't be possible to fetch only flags+keywords or only labels, but I +don't really see why any client would want to do that. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22796.mbox:2,S new file mode 100644 index 00000000..21706183 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22796.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From dot at dotat.at Tue Oct 5 04:51:24 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <11166.1286269270.390751@puncture> +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAAADBE.1010809@orthanc.ca> <11166.1286269270.390751@puncture> +Message-ID: + +On Tue, 5 Oct 2010, Dave Cridland wrote: +> +> On shiny but castrated smartphones, though, a developer must buy in +> (technically at least, financially I don't know) into a proprietary +> unified push system. Which, rumour has it, runs over XMPP, using a +> persistent TCP connection... + +It certainly uses the standard XMPP port 5223: +http://support.apple.com/kb/HT3576 + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +HUMBER THAMES DOVER WIGHT PORTLAND: NORTH BACKING WEST OR NORTHWEST, 5 TO 7, +DECREASING 4 OR 5, OCCASIONALLY 6 LATER IN HUMBER AND THAMES. MODERATE OR +ROUGH. RAIN THEN FAIR. GOOD. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22807.mbox:2,S new file mode 100644 index 00000000..f76cb445 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22807.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 07:44:39 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + +On pe, 2010-06-11 at 07:40 -0700, Dan Karp wrote: + +> Incidentally, Mark's stated reason for avoiding a MOVE op in baseline +> IMAP was that it would be the only operation to require locking >1 +> mailbox simultaneously. Or so I recall. + +As long as there is no requirement for MOVE to be atomic (i.e. it would +be allowed to emulate it with copy+expunge), there's no need to lock +multiple mailboxes simultaneously. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22844.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22844.mbox:2,S new file mode 100644 index 00000000..c84bcdad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22844.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From markrcrispin at panda.com Wed Feb 18 10:47:58 2009 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> +Message-ID: + +On Wed, 18 Feb 2009, David Rauschenbach wrote: +> In a similar vein, our mobile gateway issues a fake EXISTS at around the +> 2-minute mark, to keep the mobile operator networks from timing out the TCP +> session. + +UW and Panda issue an untagged OK at the two minute point for the same +reason. + +All of which renders IDLE pretty much pointless compared to polling. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22866.mbox:2,S new file mode 100644 index 00000000..7fa52146 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22866.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Jul 9 18:32:35 2008 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +In-Reply-To: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> +References: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> +Message-ID: <744A41DC-676F-45EC-B033-C193D165CF6F@orthanc.ca> + + +On 2008-Jul-8, at 08:02 , ??????? ???????? wrote: + +> Problem appears when client requests some message from server, but +> proxy can't response to client while it not download full message +> from real server (Proxy must check attachment before transmitting +> it). The message may be very large and downloading may take much time + +Have you observed this as a problem in the real world, or is this just +a hypothetical scenario? + +What sort of things are you doing in the proxy? And what are the time +bounds on that work? Which clients have you observed timing out? And +what are those timeout values? + +I get the feeling that you're inventing needless complexity for an +undemonstrated requirement. + +--lyndon diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22871.mbox:2,S new file mode 100644 index 00000000..69db4b94 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22871.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From dkarp at zimbra.com Sun Jun 1 13:24:34 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <461F5E4A-6B12-4CAB-AFA6-D5CBABF0D7B6@iki.fi> +Message-ID: <882332291.21641212351874331.JavaMail.root@dogfood.zimbra.com> + +> That sounds interesting, although it kind of violates a MUST NOT in +> the ID spec: +> +> > Implementations MUST NOT make operational changes based on the data +> > sent as part of the ID command or response. The ID command is for +> > human consumption only, and is not to be used in improving the +> > performance of clients or servers. + +All we're doing is including the IP in log entries, so I think we're +OK in that regard. But bending that rule in the case where access is +only through a proxy doesn't seem very bad. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22874.mbox:2,S new file mode 100644 index 00000000..e8170460 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22874.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Fri May 9 15:23:33 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Optimistic incremental THREAD=REFERENCES +In-Reply-To: +References: <1210364641.9518.397.camel@hurina> + + + +Message-ID: <3FFB27A5-2060-4980-8D94-92DF34B829BD@iki.fi> + +On May 10, 2008, at 1:14 AM, Mark Crispin wrote: + +> On Sat, 10 May 2008, Timo Sirainen wrote: +>>> The subject-joining rule magnifies this. Personally I didn't +>>> imnplement the subject-joining bit. +>> Me neither. That generates more complexity and I'd rather drop the +>> subject merging completely (my X-REFERENCES2 threading algorithm +>> does that). +> +> Now, with that said, I do not object to the creation and +> publications of a new threading algorithm that is identical to +> REFERENCES but omits the subject consolidation step. I would +> probably implement it, especially if it really is identical modulo +> that step. + +That's what I meant with my reply (but I guess I misunderstood Arnt's +reply about it). THREAD=REFERENCES works as standardized, but slower +than THREAD=REFERENCES2. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22877.mbox:2,S new file mode 100644 index 00000000..4aea11f5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22877.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From tss at iki.fi Tue Mar 11 00:50:42 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Expunges +Message-ID: <1205221842.11220.858.camel@hurina> + +A client sends two commands pipelined: + +1 fetch 1 flags +2 expunge + +Assuming message 2 is marked \Deleted, is server allowed to reply with: + +* 1 fetch flags () +* 2 expunge +1 ok +2 ok + +Or must it always be: + +* 1 fetch flags () +1 ok +* 2 expunge +2 ok + +I think the important part of RFC 3501 is: + +"because servers are prohibited from sending EXPUNGE responses while any +of those commands are in progress." + +Does "in progress" stop only after tagged reply is sent, or after all +relevant untagged replies have been sent? +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22880.mbox:2,S new file mode 100644 index 00000000..9322264e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22880.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From janssen at parc.com Sun Feb 3 14:00:55 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> +References: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> +Message-ID: <08Feb3.140058pst."58696"@synergy1.parc.xerox.com> + +> I think it can also appear in the message literal in the APPEND command. + +Sorry, I (clearly :-) need to be more precise. The CHARSET keyword +doesn't occur in APPEND; rather, the Content-Type headers of a message +literal may specify characters sets other than ASCII, and message +parts marked with those content-types may be sent as non-ASCII byte +streams. Though, since the message literal is always sent as a +counted blob of bytes, perhaps it's better regarded as a blob until +someone asks the server to parse it. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095094.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095094.22883.mbox:2,S new file mode 100644 index 00000000..04b5b88a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095094.22883.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From sflist at ihonk.com Sun Jan 6 19:50:10 2008 +To: imap-protocol@u.washington.edu +From: Steve Freitas +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Checking for new messages +Message-ID: <1199677810.8368.16.camel@infidel> + +Hi, + +I'm implementing software which picks up and processes new email from +various IMAP servers. It logs in, does its thing, then logs out. The +accounts which are being checked are not being exclusively checked by my +software, so there are no guarantees about any flags being set on +messages, such as \Recent or \Seen. I need to avoid processing any +messages twice, and I'm not allowed to miss any new messages. (Nor am I +allowed to delete any messages.) + +With POP3, determining whether new messages have arrived is quite +straightforward: Store a list of UIDs from past connections, then do a +UIDL on the POP3 server and compare the results. + +With IMAP4, it seems to be more complicated, but I hope I'm missing +something here. I can't use message sequence numbers in any way to do +this, because they're unstable (since deleting a message decrements all +sequence numbers above that of the deleted message). And I can't use +UIDs if, like I'm experiencing when dealing with the Courier IMAP +server, I get a new UIDVALIDITY number every time I connect to the +server and open a mailbox. + +So what's left? SEARCH SINCE? Is that going to find something new if the +date information in the message's header is wrong? And since I can only +narrow down to a day, I'm still going to have to look at headers to +determine whether I've seen the message before, right? + +Any help would be appreciated. + +Thanks! + +Steve + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22595.mbox:2,S new file mode 100644 index 00000000..2b30c032 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22595.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 24 21:13:26 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <1427252504.1020832.244866921.0886703A@webmail.messagingengine.com> +References: <55109D4C.2080900@laposte.net> + <1427153195.246194.244290758.41EF7C3D@webmail.messagingengine.com> + + <1427226341.922442.244719958.3B420059@webmail.messagingengine.com> + <2FC3E597-358B-4F71-B1F6-68A18C85DB51@orthanc.ca> + <1427252504.1020832.244866921.0886703A@webmail.messagingengine.com> +Message-ID: <2DDE9D54-577E-4DA7-99D6-1A531E9C86E0@orthanc.ca> + + +On Mar 24, 2015, at 8:01 PM, Bron Gondwana wrote: + +> Honestly the simplest thing is what was discussed years ago on the imap5 list, just picking +> all the ones which really matter and get significant use, bunding them behind "IMAP5" and +> replacing all the other capabilities with just IMAP5. + +But that resets the whole standards track progression. I would rather we marked the unused extensions as Historic, then cleaned up the bugs in the rest and moved the whole mess forwards towards actual Standard status. We certainly have enough implementation and interop experience to make this viable. + +Proposing an IMAP5 would just let loose a bucket of snakes that would never get herded back into any sort of container. + +--lyndon + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22743.mbox:2,S new file mode 100644 index 00000000..fb502fa1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22743.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From brong at fastmail.fm Sat Mar 24 15:23:21 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <20897.1332625246.404702@puncture> +References: <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <20897.1332624350.275209@puncture> + <206DC161-B889-4D0F-A99D-657252229FF5@iki.fi> + <20897.1332625246.404702@puncture> +Message-ID: <20120324222321.GA8694@launde.brong.net> + +On Sat, Mar 24, 2012 at 09:40:46PM +0000, Dave Cridland wrote: +> On Sat Mar 24 21:32:43 2012, Timo Sirainen wrote: +> >Can client developers really do it much better? I guess desktop +> >vs. mobile developers can do things differently if they wanted, +> >but is it any more realistic for them than for server developers? +> > +> > +> Yes. +> +> Mobile developers tend to know they're on a mobile. + +Your theory fails to account for cheap shitty NAT devices which think +the entire world is HTTP and silently drop the connection after a +couple of minutes, without even so much as an RST, leaving innocent +desktop clients with a broken connection and no indication to the user +that they are no longer getting updates. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22756.mbox:2,S new file mode 100644 index 00000000..ea06a9ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22756.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From brong at fastmail.fm Mon Nov 14 12:56:35 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] multiple fetch responses for the same + message? +In-Reply-To: +References: <43724F01-C3E3-4039-8919-51E528C56C54@mac.com> + <1321215266.30428.140660998383617@webmail.messagingengine.com> + <755EBF71-00B6-4A4A-940A-CA8B5B62B10D@mac.com> + <4EC02C84.1090209@gulbrandsen.priv.no> + + <29330.1321262033.662442@puncture> + + <29330.1321289315.045850@puncture> + +Message-ID: <20111114205635.GA5178@brong.net> + +On Mon, Nov 14, 2011 at 12:37:42PM -0800, Mark Crispin wrote: +> The second trap is failing to implement message sequence numbers as a +> primary key in the client-facing part. This may be as simple as a vector, +> indexed by message sequence number, to the internal key. You may, if and +> ONLY if there is an exact sematic mapping between IMAP UID and internal +> key, shortcut the UID->MSN->internal mapping. +> +> Too often, I see the shortcut when the semantics aren't the same, and I +> see truly bizarre (and dysfunctional!) implementations of MSN. +> +> I won't tell you about the implementation that, for each command, +> enumerated all the UIDs and then did a bubble sort in order to implement +> MSNs (and UID ranges). Oh I guess I just did. Sorry if that made you puke +> your lunch. + +The problem is that the MID is a MVCC snapshot of a particularly un-useful +view of the messages (strictly ascending UID order), with a view lifetime +which is defined, but is very dependent on the specific commands you issue, +so if you want to do one of those actions, you need to handle the snapshot +jumping forwards. + +There's no way to get a snapshot of any OTHER view of the messages, so +unless you want the view that MID gives you, you're kinda screwed. You +wind up having to keep a MID to UID mapping even if you don't actually +care about MIDs at all, and you need to update all the MIDs any time +something gets expunged from somewhere in the middle. + +In other words, it's an impedence mismatch to what client writers want, and +probably what server writers want too. + +They get it wrong because they don't think the way the IMAP protocol thinks, +and they don't think that way because frankly, it's a pretty scummy data +model unless you want to do approximately one and only one thing with the +data: access it in UID order. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22759.mbox:2,S new file mode 100644 index 00000000..fb968488 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22759.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From brong at fastmail.fm Mon Oct 31 23:31:40 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + + +Message-ID: <20111101063140.GA5353@brong.net> + +On Tue, Nov 01, 2011 at 08:06:29AM +0200, Timo Sirainen wrote: +> Dovecot also stores messages with LFs and has no trouble exporting them as if they were CRLFs. I think the only actual (performance) problem with it is .. well, actually the topic of this thread :) A partial fetch from a non-zero offset requires some scanning to find out the LF-only-offset. But luckily all clients just fetch the blocks in increasing order from zero offset, so this isn't such an important problem. + +How do you handle a message with a mix of LF and CRLF in the original? + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22772.mbox:2,S new file mode 100644 index 00000000..a480c4e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22772.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From slusarz at curecanti.org Fri May 20 10:26:08 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <4DD60CE3.3020502@fastmail.fm> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + <4DD60CE3.3020502@fastmail.fm> +Message-ID: <20110520112608.Horde.uJMkL4F5lbhN1qQwcI33DLA@bigworm.curecanti.org> + +Quoting Greg Banks : + +> On 20/05/11 16:26, Michael M Slusarz wrote: +>> +>> +>> Finally, and this might be overkill, but possibly implement some +>> sort of MODSEQ-like counter to track label changes. When labels +>> change, the MODSEQ-like number is incremented. This would allow a +>> client to skip synchronizing the label list on every login if not +>> needed. However, given that the number of labels in general might +>> be limited (most people use no more than 5-10?), the cost might +>> outweigh the benefit. +>> +> +> If your new labels are set via the STORE/UID STORE commands, then +> RFC4551 says that setting them must update MODSEQ. So your +> MODSEQ-like counter already exists. + +I guess I did not make myself clear. The MODSEQ-ish value wasn't to +catch label changes on messages. It would be intended to catch label +definition changes on a server. + +The problem with looking at CONDSTORE MODSEQs is that you could +perform all sorts of commands that will change this value that have +nothing to do with label definition changes. So MODSEQs become +useless for a client to determine whether it needs to update its list +of label definitions from the server. + +This particular proposal seems lamer the more I think about it. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22796.mbox:2,S new file mode 100644 index 00000000..470ed332 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22796.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From dave at cridland.net Tue Oct 5 05:12:26 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: +References: <352410DE-19D8-4EE4-8741-AB82741D7A18@sabahattin-gucukoglu.com> + <4CAA0F5C.7030009@lists.grepular.com> + + <7D32DBF6-2ECC-4854-85A8-84261D828ED2@sabahattin-gucukoglu.com> + <11166.1286223088.054596@puncture> + + <4CAA7379.3070307@aol.com> + + <4CAAADBE.1010809@orthanc.ca> <11166.1286269270.390751@puncture> + +Message-ID: <11166.1286280746.628390@puncture> + +On Tue Oct 5 12:51:24 2010, Tony Finch wrote: +> On Tue, 5 Oct 2010, Dave Cridland wrote: +> > +> > On shiny but castrated smartphones, though, a developer must buy +> in +> > (technically at least, financially I don't know) into a +> proprietary +> > unified push system. Which, rumour has it, runs over XMPP, using a +> > persistent TCP connection... +> +> It certainly uses the standard XMPP port 5223: +> http://support.apple.com/kb/HT3576 + +That's a special definition of "standard" as "formally deprecated in +2003", of course. (See XEP-0035). + +This cutting-edge technology of Apple's is marvellous, isn't it? + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22807.mbox:2,S new file mode 100644 index 00000000..3f83027e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22807.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 07:53:51 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> +Message-ID: <201006111653.51950.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 16:40:39 Dan Karp wrote: +> > > Still - is it worth the effort? +> > +> > I don't currently see it being worth the trouble. Maybe I'll implement +> > it some day, but only if my employer wants it. +> +> If other folks are serious about this, I'd be happy to implement a +> MOVE command in our IMAP server. It's minimal new code for us, and +> it'd be significantly more performant than COPY/STORE/EXPUNGE. +I just took a glance at Thunderbird (2) source code and, since it supports +XAOL-MOVE command (which is AFAIK exactly the same as my proposal), adding +support for move is pretty trivial. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22866.mbox:2,S new file mode 100644 index 00000000..506cc3a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22866.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From tss at iki.fi Thu Jul 10 00:08:58 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +In-Reply-To: <744A41DC-676F-45EC-B033-C193D165CF6F@orthanc.ca> +References: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> + <744A41DC-676F-45EC-B033-C193D165CF6F@orthanc.ca> +Message-ID: + +On Jul 10, 2008, at 7:02 AM, Lyndon Nerenberg wrote: + +> +> On 2008-Jul-8, at 08:02 , ??????? ???????? wrote: +> +>> Problem appears when client requests some message from server, but +>> proxy can't response to client while it not download full message +>> from real server (Proxy must check attachment before transmitting +>> it). The message may be very large and downloading may take much time +> +> Have you observed this as a problem in the real world, or is this +> just a hypothetical scenario? +> +> What sort of things are you doing in the proxy? And what are the +> time bounds on that work? Which clients have you observed timing +> out? And what are those timeout values? +> +> I get the feeling that you're inventing needless complexity for an +> undemonstrated requirement. + +I know that at least Thunderbird has a timeout that's something like +30 seconds. My server nowadays keeps sending untagged OKs to client +every 15 seconds if some command processing is taking longer. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22871.mbox:2,S new file mode 100644 index 00000000..4f5e42b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22871.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From lyndon at orthanc.ca Sun Jun 1 13:30:26 2008 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <1212348043.3904.521.camel@hurina> +References: <1212341451.3904.500.camel@hurina> + <0i/azqanypELGcsgZG99yw.md5@lochnagar.oryx.com> + <1212348043.3904.521.camel@hurina> +Message-ID: <7C806889-D186-4E0C-81B2-22D48929EBD4@orthanc.ca> + + +On 2008-Jun-1, at 12:20 , Timo Sirainen wrote: + +> The idea would be that there's a frontend IMAP proxy that looks up the +> backend IMAP server based on the username, tells the backend server +> the +> user's IP and then logs in using the provided user+password. Currently +> the IP isn't forwarded, so some IP-based user access checks don't +> work. + +Why can't you do the access checks at the front-end server? You're +already going out-of-band to discover which back-end server to use. +You're already passing the account name, so why not also pass the +network address and do the access check there? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22874.mbox:2,S new file mode 100644 index 00000000..a743e55f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22874.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat May 10 00:03:01 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Optimistic incremental THREAD=REFERENCES +In-Reply-To: +References: <1210364641.9518.397.camel@hurina> + + + +Message-ID: <45inIaUU4XPa0JZ16K6iZQ.md5@lochnagar.oryx.com> + +Mark Crispin writes: +> I do not approve of the practice of an implementor deciding not to +> implement a portion of the specification, even if there seem to be +> good reasons to do so. + +FWIW. I do not advertise THREAD=REFERENCES. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22877.mbox:2,S new file mode 100644 index 00000000..9cb11225 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22877.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From dave at cridland.net Tue Mar 11 02:16:07 2008 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Expunges +In-Reply-To: <1205221842.11220.858.camel@hurina> +References: <1205221842.11220.858.camel@hurina> +Message-ID: <8783.1205226967.888118@peirce.dave.cridland.net> + +On Tue Mar 11 07:50:42 2008, Timo Sirainen wrote: +> A client sends two commands pipelined: +> +> 1 fetch 1 flags +> 2 expunge +> +> Assuming message 2 is marked \Deleted, is server allowed to reply +> with: +> +> * 1 fetch flags () +> * 2 expunge +> 1 ok +> 2 ok +> +> +No. + +> Or must it always be: +> +> * 1 fetch flags () +> 1 ok +> * 2 expunge +> 2 ok +> +> +Yes. + + +> I think the important part of RFC 3501 is: +> +> "because servers are prohibited from sending EXPUNGE responses +> while any +> of those commands are in progress." +> +> Does "in progress" stop only after tagged reply is sent, or after +> all +> relevant untagged replies have been sent? + +Firstly, yes, in progress only stops after the completion response is +sent. + +Secondly, whenever there's a difference in the outcome depending on +the order the commands are processed in, the server has to resolve +this by sequentially processing the commands. + +This can be shown more clearly if instead of a fetch, the client +pipelines a UID FETCH+EXPUNGE sequence. Here, the server is allowed +to send the EXPUNGE during the UID FETCH, but it MUST do so after the +FETCH response, at least, in order to avoid the ordering being +significant - a strict reading of the RFC states that the EXPUNGE +response would occur after the tagged completion response of the UID +FETCH, in fact. + +The relevant text is in Section 5.5, second paragraph: + + The exception is if an ambiguity would result because of a command + that would affect the results of other commands. Clients MUST NOT + send multiple commands without waiting if an ambiguity would +result. + If the server detects a possible ambiguity, it MUST execute +commands + to completion in the order given by the client. + +You'll note that clients are banned from sending this, too. Arguably +there's an escape clause there, since you could say "but I don't +detect the ambiguity!", but I think the intent it pretty clear that +you should. + +By far the simplest method of handling this case is to simply not +have multiple commands in progress, or if you do, limit it to certain +cases where there is no ambiguity, rather than attempting to detect +all possible ambiguities on the fly. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22880.mbox:2,S new file mode 100644 index 00000000..8129a0b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22880.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc at Washington.EDU Sun Feb 3 14:06:02 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> +References: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 3 Feb 2008, Bill Janssen wrote: +> I'm looking at the various uses of CHARSET in IMAP. It appears to +> occur in two places: the SEARCH command, and the FETCH response. I +> think it can also appear in the message literal in the APPEND command. +> So those are the only three places where an IMAP server (or client) +> might see non-ASCII byte streams. Everything else is ASCII. + +That's probably correct for the base specification. Don't forget such +things as URLFETCH and CATENATE, which are forms of FETCH and APPEND +respectively. + +However, if I were you, I would NOT make any ASCII assumptions in a new +implementation. Implement with the assumption that ALL strings are UTF-8 +by default, but that for the time being you can only send ASCII except in +the defined circumstances you mentioned above. + +In particular, UTF-8 mailbox names will probably happen sooner rather than +later. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095095.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095095.22883.mbox:2,S new file mode 100644 index 00000000..6e733042 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095095.22883.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Jan 6 19:59:57 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Checking for new messages +In-Reply-To: <1199677810.8368.16.camel@infidel> +References: <1199677810.8368.16.camel@infidel> +Message-ID: + +On Sun, 6 Jan 2008, Steve Freitas wrote: +> With IMAP4, it seems to be more complicated, but I hope I'm missing +> something here. + +IMAP should be easier, MUCH easier, than POP3; UIDs are numeric and +strictly ascending. That means that you never need to fetch the map to +learn about new messages; you can simply fetch . + +> I can't use message sequence numbers in any way to do +> this, because they're unstable (since deleting a message decrements all +> sequence numbers above that of the deleted message). And I can't use +> UIDs if, like I'm experiencing when dealing with the Courier IMAP +> server, I get a new UIDVALIDITY number every time I connect to the +> server and open a mailbox. + +I suggest that you should use UIDs anyway and ignore the brokenness of +that server. Courier is a horrible server, but I suspect that this is a +problem in that particular installation of Courier. + +A server changing UIDVALIDITY has a specific meaning in IMAP: toss out +everything you remember from before and start anew. You should NOT +attempt to overengineer and outsmart the protocol specification, even in +the face of a broken server. Otherwise, someone is going to attempt to +overengineer and outsmart the protocol specification in order to get the +desired results from your software. + +Remember: for every action there is an equal and opposition retaliation! + +If you absolutely insist upon not using UIDs, + tag FETCH 1:* BODY[HEADER.FIELDS (Message-ID)] +is a semi-reasonable approximation of POP3 UIDs. + +Good luck! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22595.mbox:2,S new file mode 100644 index 00000000..d4f1ca34 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22595.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 24 21:14:58 2015 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Is OpenEmailSurvey open to share method or code? +In-Reply-To: <5511EDA6.7060107@laposte.net> +References: <55109D4C.2080900@laposte.net> <5510BC3A.9020702@verizon.net> + <5511EDA6.7060107@laposte.net> +Message-ID: + + +On Mar 24, 2015, at 4:05 PM, Gilles LAMIRAL wrote: + +> when I configure a new account with Thunderbird, +> it is always irrelevant for what I do, the manual way is first hidden, +> maybe presented at the end or after a failure, a headache each time. + +Amem :-( +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 817 bytes +Desc: Message signed with OpenPGP using GPGMail +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22743.mbox:2,S new file mode 100644 index 00000000..1185e3bf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22743.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Sat Mar 24 15:25:26 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <4F6E4861.2060709@gulbrandsen.priv.no> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <694AC956-B34C-4E9F-83B3-45FB6AFA248D@iki.fi> + <4F6E4861.2060709@gulbrandsen.priv.no> +Message-ID: <1D50222D-157D-48A2-AB76-A73E23B83E56@iki.fi> + +On 25.3.2012, at 0.19, Arnt Gulbrandsen wrote: + +> On 03/24/2012 02:13 AM, Timo Sirainen wrote: +>> next_notify_secs = 120 - ((time() + crc32(username)) % 120); +> +> Why username instead of client IP? + + +I hadn't really given it a thought, but now that I do: Clients' real IPs could be hidden by proxies/NATs. This could be a problem either on server or client side. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22756.mbox:2,S new file mode 100644 index 00000000..189f9c19 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22756.mbox:2,S @@ -0,0 +1,91 @@ +MBOX-Line: From brong at fastmail.fm Mon Nov 14 12:59:19 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] select & unseen? +In-Reply-To: +References: + <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> + + <1320653922.13384.140660995615489@webmail.messagingengine.com> + +Message-ID: <20111114205919.GA5573@brong.net> + +On Monday, November 07, 2011 8:52 AM, "Mark Crispin" wrote: +> > Unfortunately, all these warts are required to be supported - and common sense +> > is a cop-out. +> +> Lawyers insist upon a legalistic interpretation without any use of "what +> is intended here". + +You get those. + +> Engineering requires practical interpretations. Nobody gets anywhere with +> legalistic interpretations. Engineering requires cooperative problem +> solving. + +Which is why everyone doesn't spit out anthing for "UNSEEN" when there is +nothing unseen even though the standard clarifies in two updates that they +really REALLY MUST. + +> > hence my assertion that a fully complient server is required to +> > immediately disconnect any client issuing a "SELECT" for a mailbox which doesn't +> > contain unseen messages. +> +> You seem to think that saying such things somehow impresses me of your +> intelligence and talent. + +Obviously, it was a joke. It is crazy to do things like that. Courier-MTA +used to be so strict (last time I tried to use it) that it was useless for +receiving email from the real internet[tm]. Even with postfix in front, +we pass all incoming mail through an LMTP proxy which cleans up some of the +more disgusting things from the wild so that Cyrus will accept them. + +> If you were intelligent and talented you would be constructive and +> cooperative. + +Maybe I'm turning into a grumpy old man as well. + +> Intelligent and talented people do not bang drums repeatedly upon finding +> a trivial ambiguity in a specification. + +It's OK, there's always some new sucker who runs into the same fricking +ambiguity. + +> Intelligent and talented people don't go off on a tangent with a +> misinterpretation that is both absurd and harmful. + +Oh, I dunno about this one. + +> Intelligent and talented people, if they find that trivial matter to be +> annoying enough, will write an errata with proposed replacement wording, +> post it for review, and upon general concensus will submit it to the RFC +> 3501 errata for inclusion in a future revision. + +I started work on this and saved this as a draft for days, but haven't +yet finished. I'll give it another go tonight. + +> For what it's worth, that particular bit of text was from someone else's +> errata...to remedy another silly ambiguity. +> +> I was the editor of RFC 3501. I did write a great deal of it; but that +> document is the work of many authors (and one editor). I feel sorry for +> you if you believe that perfection (or even complete consistency) is +> possible in such an effort. + +I know full well how easy it is to get inconsistency. It's a pity IMAP +is trying to cater to two different audiences with the same protocol: + +a) clients that want to "mirror" the entire server state locally, and + potentially make changes offline and then synchronise them to the + server. +b) clients that want to display a small window (usually the "most recent" + for some value of) into the server state, without needing much local + storage. + +Both of these clients want timely information about updates - where these +days the blackberry-experienced generation consider timely to be "within +one second". + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22759.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22759.mbox:2,S new file mode 100644 index 00000000..41df936b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22759.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Mon Oct 31 23:40:57 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] BODY.PEEK[section] FETCH response +In-Reply-To: <20111101063140.GA5353@brong.net> +References: <8F0DA5FA-FB07-4AFA-9C58-8F0927998343@ghoti.org> + + + + + + + + <20111101063140.GA5353@brong.net> +Message-ID: <19901681-2C1A-410F-93EE-51F2AF707382@iki.fi> + +On 1.11.2011, at 8.31, Bron Gondwana wrote: + +> On Tue, Nov 01, 2011 at 08:06:29AM +0200, Timo Sirainen wrote: +>> Dovecot also stores messages with LFs and has no trouble exporting them as if they were CRLFs. I think the only actual (performance) problem with it is .. well, actually the topic of this thread :) A partial fetch from a non-zero offset requires some scanning to find out the LF-only-offset. But luckily all clients just fetch the blocks in increasing order from zero offset, so this isn't such an important problem. +> +> How do you handle a message with a mix of LF and CRLF in the original? + +"Correctly." :) + +Basically everywhere there are message (part) sizes, I store the "physical size" (exactly as it is stored in disk, with or without CRs) and the "virtual size" (all LFs converted to CRLFs). If physical size equals to virtual size, I'll do some extra optimizations like being able to seek to wanted offset immediately or use sendfile() to send the message. + +Although a mix of LFs and CRLFs in the same message shouldn't normally appear in mail files. Whenever saving messages via Dovecot all of the newlines are changed to either LFs or CRLFs (mail_save_crlf setting, or forced sometimes by a storage backend). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22772.mbox:2,S new file mode 100644 index 00000000..bb1b137f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22772.mbox:2,S @@ -0,0 +1,104 @@ +MBOX-Line: From slusarz at curecanti.org Fri May 20 11:19:57 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <1305883385.10421.294.camel@hurina> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + <1305883385.10421.294.camel@hurina> +Message-ID: <20110520121957.Horde.chpUaIF5lbhN1rDN6FN3DTA@bigworm.curecanti.org> + +Quoting Timo Sirainen : + +> On Fri, 2011-05-20 at 00:26 -0600, Michael M Slusarz wrote: +> +>> * Option B: Creating a new class of keywords called "Labels" +> +> Is it all that useful to have basically just another set of keywords +> with duplicated list of commands/parameters to manage them? +> +> You could do almost the same thing with using "ENABLE utf8-keywords", +> which changes keywords to be UTF-8 ASTRINGs rather than ATOMs. Clients +> that don't understand those can keep ignoring them. Clients that do, can +> manage them using the same old keyword commands/parameters. And if you +> wanted to separate them from the "old keywords" you could prefix them +> with '#' or something. The only difference to "labels" is that it +> wouldn't be possible to fetch only flags+keywords or only labels, but I +> don't really see why any client would want to do that. + +After typing up my message last night, and dwelling a bit on the +contents, I'm beginning to think this is the better option. I +personally am fine with legacy clients not being able to show these +newer keywords because that is already the status quo for many clients +(i.e. not displaying keywords they don't recognize). Once we remove +the legacy compliance component, then we don't have to rely on any +kind of funky encoding in order to pack non-atoms in the label. + +With this solution, I would disagree however with the user of a '#' or +other prefix to distinguish "new utf-8 keywords" from "old RFC 3501 +keywords". I think the assumption should rather be that if a keyword +is provided in a STORE/APPEND command as an ASTRING, the intent is +that string is a human readable representation. + +E.g., with these series of client commands: + +TAG1 ENABLE UTF8-KEYWORDS +[...] +TAG2 STORE 1 +FLAGS foo +[...] +TAG3 STORE 2 +FLAGS "bar" + +Here, TAG 2 is taken to be a regular 3501 keyword. It is not +necessarily intended to be the label for that message. A client is +free to do keyword -> label translation on this value, and can choose +to not display this keyword if it doesn't already know about it. + +Conversely, TAG3 is intended to be the full human readable label. A +client should not do translation, and SHOULD directly display this +label to the user. + +(Thus, this proposed extension is more than just an ability to provide +non-atoms in a keyword. This extension is designed to store full +human readable labels with a message. Therefore, this proposed +extension is more properly identified as something like LABELS instead +of UTF8-KEYWORDS). + +I still believe the list of utf8-keywords/labels in a mailbox should +be something that is announced by the server. For example, a LABELS +untagged response code could be used to provide this information. E.g.: + +TAG1 SELECT INBOX +* OK [LABELS "Foo 1" "Bar 2" {7} +? label +] +* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] +[...] + +A client can parse these two entries to determine which flags are +available to ALL clients, and which flags are available only to +clients that support the new utf8-keyword extension. This response +code would allow the client to determine the list of keywords intended +to act as labels, and therefore ALWAYS be displayed to the user as-is. +Clients could then continue to hide regular keywords (all non-system +flags contained in PERMANENTFLAGS) that they have no knowledge of. + +In this solution, we would probably need to add a new special flag to +PERMANENTFLAGS to indicate that all labels can be permanently set +(\AllLabels) - this would prevent the need of having to repeat all +labels in PERMANENTFLAGS. If a certain subset of labels could not be +set (I could only imagine this to be a rare occurrence), the +\AllLabels flag would be omitted and the permanent labels would have +to be enumerated in the PERMANENTFLAGS list. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22796.mbox:2,S new file mode 100644 index 00000000..7fe4c452 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22796.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From dave at cridland.net Tue Oct 5 05:24:48 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <87lIcMeyz6O3xDzKeX7qvQ.md5@[192.168.16.40]> +References: <87lIcMeyz6O3xDzKeX7qvQ.md5@[192.168.16.40]> +Message-ID: <11166.1286281488.738798@puncture> + +On Tue Oct 5 11:29:21 2010, Arnt Gulbrandsen wrote: +> Dave Cridland writes: +>> The "3G session" does need to stay open, but it can stay in Idle, +>> or PCH, modes. These cost in the region of 8mA. +>> +>> Small notifications - including the EXISTS and FETCH FLAGS that +>> IDLE typically emits from the server - will only raise the 3G +>> session to FACH mode. If the handset is forced into FACH mode +>> constantly, this'll drain the battery in around 7 hours, using +>> around 140mA. +>> +>> Only if the data size reaches a certain (small) threshold - about +>> 128 octets typically - will the radio rise to DCH mode, where the +>> drain is around 380mA - sufficient to drain the battery in three +>> hours. +> +> Thanks. +> +> IIRC iphone mail 4.x does implement idle. It also implements +> compress and condstore, both of which ought to help avoid DCH. +> (Those 128 bytes would be about 80 after TCP/IP overhead, or +> 100-200 with IMAP or TLS compression, right?) + +Not according to +http://developer.apple.com/library/ios/#releasenotes/General/RN-iPhoneSDK-4_0/index.html + + * Mail now supports the following RFC extensions: + o COMPRESS (4978) + o ESEARCH (4731) + o CHUNKING (3030) + o 8BITMIME (1652) + o ENHANCEDSTATUSCODES (3463) + o BINARYMIME (3030) + o CONDSTORE (4551) + +So no QRESYNC, which is weird, and no IDLE. + +And yes, those ~128 octets include TCP and TLS, so you drop by (if +memory serves) about 57 octets. Quite what that buys you in terms of +compression is anyone's guess, and I'd imagine quite dependent on +usage patterns. + +> 8mA isn't much. + +No, it'll let your smartphone last for something over 5 days +(assuming you've a 1000mAh battery like most of them). Of course, +unless you have a very long idle timeout and nobody actually sending +you email, you won't stay in the Idle/PCH states for that long. + +But in practise, an IDLE session in typical usage seems to last me +well over a day on my E71, and it certainly lasts longer than XMPP, +but I'm working on the latter. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22807.mbox:2,S new file mode 100644 index 00000000..33799cc7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22807.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From dwhite at olp.net Fri Jun 11 08:15:14 2010 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <201006111426.03636.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111212.57771.witold.krecicki@firma.o2.pl> + <29965.1276255927.615799@puncture> + <201006111426.03636.witold.krecicki@firma.o2.pl> +Message-ID: <20100611151514.GC5092@dan.olp.net> + +On 11/06/10?14:26?+0200, Witold Kr?cicki wrote: +>> Is it that slow? Really? +>Yes it is. Try moving 10k messages on cyrus/courier to trash. + +I was curious what Cyrus did in such a situation. + +It does do a hardlink on a COPY, assuming singleinstancestore is enabled. +I copied about 100 megs of a customer's data to her Trash folder in around +500ms. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22866.mbox:2,S new file mode 100644 index 00000000..de612f89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22866.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Jul 10 00:34:27 2008 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +In-Reply-To: +References: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> + <744A41DC-676F-45EC-B033-C193D165CF6F@orthanc.ca> + +Message-ID: <4653BDE1-623F-4B43-B238-EC60827B0C7A@orthanc.ca> + + +On 2008-Jul-10, at 00:08 , Timo Sirainen wrote: + +> I know that at least Thunderbird has a timeout that's something like +> 30 seconds. My server nowadays keeps sending untagged OKs to client +> every 15 seconds if some command processing is taking longer. + +And how is your server going to scale to every fucked up client +implementation on the planet? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22871.mbox:2,S new file mode 100644 index 00000000..9e9e7037 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22871.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From tss at iki.fi Sun Jun 1 13:50:07 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <7C806889-D186-4E0C-81B2-22D48929EBD4@orthanc.ca> +References: <1212341451.3904.500.camel@hurina> + <0i/azqanypELGcsgZG99yw.md5@lochnagar.oryx.com> + <1212348043.3904.521.camel@hurina> + <7C806889-D186-4E0C-81B2-22D48929EBD4@orthanc.ca> +Message-ID: <48F9BA0A-A403-4076-9ECC-19397616FCA2@iki.fi> + +On Jun 1, 2008, at 11:30 PM, Lyndon Nerenberg wrote: + +> On 2008-Jun-1, at 12:20 , Timo Sirainen wrote: +> +>> The idea would be that there's a frontend IMAP proxy that looks up +>> the +>> backend IMAP server based on the username, tells the backend server +>> the +>> user's IP and then logs in using the provided user+password. +>> Currently +>> the IP isn't forwarded, so some IP-based user access checks don't +>> work. +> +> Why can't you do the access checks at the front-end server? You're +> already going out-of-band to discover which back-end server to use. +> You're already passing the account name, so why not also pass the +> network address and do the access check there? + +Well, that's a good question. :) Actually Dovecot already allows doing +the check on the frontend, but it's also possible to do it on the +backend as well. I don't know why the people who originally requested +this feature don't want to do this on the frontend, but I can think of +at least one specific use case: + +Backends all share the mailbox data using NFS, so it's not critical +which is the destination server. It's just better from performance +point of view that simultaneous connections from the same user are +directed to the same server. So the backend server lookup could be as +simple as md5(username) MOD number_of_servers (or maybe something a +bit more complex but still not an external expensive up-to-date +database lookup). + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22874.mbox:2,S new file mode 100644 index 00000000..265dc570 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22874.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From tss at iki.fi Mon May 12 20:48:02 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Optimistic incremental THREAD=REFERENCES +In-Reply-To: +References: <1210364641.9518.397.camel@hurina> + + +Message-ID: <1210650482.9518.501.camel@hurina> + +On Sat, 2008-05-10 at 00:52 +0300, Timo Sirainen wrote: +> On May 10, 2008, at 12:06 AM, Arnt Gulbrandsen wrote: +> +> > I wrote code do to the same thing, and found another corner case. If +> > one or more early message(s) is/are deleted from the mailbox, then +> > it can be (and very seldom is) the case that a thread is split. +> > +> > Consider this four-message thread: +> > 1 is the start. +> > 2 has an In-Reply-To pointing to 1. +> > 3 has an In-Reply-To pointing to 1 +> > 4 has an IRT pointing to 2 +> > +> > If you thread this incrementally, you learn that this is one thread. +> > +> > If messages 1 and 2 are deleted and another message arrives +> > 5 has an IRT pointing to 3 +> > then your incremental algorithm may still have enough information to +> > tie messages 3, 4 and 5 together in one thread. A non-incremental +> > T=R doesn't have that information, and will make two threads. +> +> A quick test shows that my algorithm handles this, probably because of +> the refcounting rules. I'll look at it more closely later to make sure +> that it does. + +That exact test produced a correct result for some reason, but looks +like I had still missed that problem completely. I guess I concentrated +too much on References: header that I missed one of the simplest cases: + + - 1 is root + - 2 points to 1 + - 3 points to 2 + +Expunge 2 -> all 1..3 are still referenced, so threading doesn't make 1 +and 3 separate roots. + +Luckily this can be fixed easily: link_refcount should contain "number +of links to parent node" instead of "number of links from child nodes". +After that change (and some other changes due to it) my tests appear to +be giving correct results again. + +Updated document in http://dovecot.org/tmp/thread-refs.txt (probably +will be moved to http://dovecot.org/doc/ some day). +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22877.mbox:2,S new file mode 100644 index 00000000..e2b829dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22877.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From tss at iki.fi Tue Mar 11 03:46:26 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Expunges +In-Reply-To: <8783.1205226967.888118@peirce.dave.cridland.net> +References: <1205221842.11220.858.camel@hurina> + <8783.1205226967.888118@peirce.dave.cridland.net> +Message-ID: <1205232386.11220.874.camel@hurina> + +On Tue, 2008-03-11 at 09:16 +0000, Dave Cridland wrote: +> > I think the important part of RFC 3501 is: +> > +> > "because servers are prohibited from sending EXPUNGE responses +> > while any +> > of those commands are in progress." +> > +> > Does "in progress" stop only after tagged reply is sent, or after +> > all +> > relevant untagged replies have been sent? +> +> Firstly, yes, in progress only stops after the completion response is +> sent. +> +> Secondly, whenever there's a difference in the outcome depending on +> the order the commands are processed in, the server has to resolve +> this by sequentially processing the commands. + +Yes, I understand the ambiguity problems, and the commands are processed +sequentially in my first example, so it shouldn't cause any actual +problems. The only difference was when the final tagged reply for FETCH +was sent. + +I had changed Dovecot to work like: + +1. Process all commands in input buffer, send their replies and finally +add them to "sync queue" (EXPUNGE doesn't send anything here yet) +2. Perform mailbox synchronization, sending untagged replies for changes +(EXPUNGEs are sent here) +3. Send tagged replies to commands in sync queue. + +But my imaptest started to complain about EXPUNGEs being received while +FETCHes were being processed, so I was wondering if I should again +change Dovecot or imaptest or both.. :) +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22880.mbox:2,S new file mode 100644 index 00000000..cac4b8ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22880.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From janssen at parc.com Sun Feb 3 15:01:07 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: +References: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Feb3.150115pst."58696"@synergy1.parc.xerox.com> + +> However, if I were you, I would NOT make any ASCII assumptions in a new +> implementation. Implement with the assumption that ALL strings are UTF-8 +> by default, but that for the time being you can only send ASCII except in +> the defined circumstances you mentioned above. + +Thanks. Actually, at the moment, I'm looking at Python's imaplib +client-side library. Python, in the move to the next major version, +is adding an explicit sequence-of-bytes type (instead of the 8-bit +string type it previously used), and I'm looking at how to do +appropriate bytes-to-string conversions in data read from the wire. + +I think that explicitly using ASCII where the spec calls for it, and +raising errors for incorrect non-ASCII codings, will result in fewer +subtle bugs in programs that use this client library. + +> In particular, UTF-8 mailbox names will probably happen sooner rather than +> later. + +Fine, but that will be an extension. I imagine there's some +discussion of using standard RFC 2231 mail header charset quoting when +transferring such mailbox names across the wire? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22883.mbox:2,S new file mode 100644 index 00000000..d5b0ad31 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22883.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From tss at iki.fi Sun Jan 6 20:02:03 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Checking for new messages +In-Reply-To: <1199677810.8368.16.camel@infidel> +References: <1199677810.8368.16.camel@infidel> +Message-ID: <1199678523.883.716.camel@hurina> + +On Sun, 2008-01-06 at 17:50 -1000, Steve Freitas wrote: +> With IMAP4, it seems to be more complicated, but I hope I'm missing +> something here. I can't use message sequence numbers in any way to do +> this, because they're unstable (since deleting a message decrements all +> sequence numbers above that of the deleted message). And I can't use +> UIDs if, like I'm experiencing when dealing with the Courier IMAP +> server, I get a new UIDVALIDITY number every time I connect to the +> server and open a mailbox. + +Your Courier setup is then somehow broken. UIDVALIDITY doesn't normally +change, even with Courier. I think it's just as likely for POP3 UIDLs to +change as IMAP UIDVALIDITY. + +Another possibility anyway could be using keywords. Mark them with some +"mysoftware-processed" keyword when you're finished with them. Although +not all servers support keywords. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095096.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095096.22886.mbox:2,S new file mode 100644 index 00000000..dfcfc6ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095096.22886.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From tss at iki.fi Sat Dec 1 07:47:07 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP server tester +Message-ID: <1196524027.9771.551.camel@hurina> + +I updated my imaptest program to check a few more things and wrote a +wiki page about how to use it: http://imapwiki.org/ImapTest + +It finds errors from all open source servers I tested (except Dovecot, +of course ;). I'll send private mails about those. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22595.mbox:2,S new file mode 100644 index 00000000..f6ba8c57 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22595.mbox:2,S @@ -0,0 +1,155 @@ +MBOX-Line: From kmansoft at gmail.com Wed Mar 25 07:54:09 2015 +To: imap-protocol@u.washington.edu +From: Kostya Vasilyev +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +Message-ID: + +Hi, + +I apologize for a Gmail specific message, but for lack of a better place... + +Recently I've started seeing strange stuff with message flags, the Gmail +IMAP server returns out of date information on STORE +FLAGS and IDLE +connections. + +There is a longer log below, but the the short of it is: + +14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) +{{{---}}} +14:39:06.490: [IMAP_RAW.5455] Data is <84>: +14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) +14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) +14:39:06.490: kman10 OK Success + +I understand that the second line is an unsolicited response, and that it +would represent the message getting changed back to unread on another +connection, except... + +There is no other connection here, and anyway, both responses are in the +same data packet which is too fast to send a change made by another +connection if there was one. + +I've spent a fair amount of time tweaking my IMAP commands trying to make +it go away, and came to conclude that: + +- The time from receiving the message to the STORE command has to be very +short, a matter of several seconds. + +- Seems to happen more often with the larger messages (> 5-10 K of message +text). + +- Seems to happen more often when doing a partial (as opposed to full) text +fetch during mail sync. + +The user sees a new, unread, message and goes to read it immediately, boom, +it's still marked unread. + +If I wait a minute or so before opening the message (which is what triggers +the STORE +\Seen), the issue doesn't happen and I get this: + +16:35:13.874 * 65 FETCH (FLAGS (\Seen) UID 99) +16:35:13.874 * 65 FETCH (UID 99 FLAGS (\Seen)) + +Again, an unsolicited response (valid, but redundant), but now it actually +reflects the just changed message flags. + +It gets more interesting when there are IDLE connections, which then also +receive outdated (no \Seen) message flags about ten seconds after the STORE ++\Seen, but I'll save it for later (I do have logs for that too). + +A more detailed log: + +The STORE +\Seen here is done ~three seconds after initial fetch (and very +soon after the message got into the account). + +No IDLE, no CONDSTORE, very basic commands. + +### Sync + +Initial connect and auth (omitted) +Select INBOX (omitted) + +14:39:02.329: [IMAP.5455] Sending: kman5 UID SEARCH RETURN (ALL) UNSEEN +UNDELETED +{{{---}}} +14:39:02.376: [IMAP_RAW.5455] Data is <73>: +14:39:02.376: * ESEARCH (TAG "kman5") UID ALL 86 +14:39:02.376: kman5 OK SEARCH completed (Success) + +Get flags and UIDs + +14:39:02.378: [IMAP.5455] Sending: kman6 FETCH 34:58 (UID FLAGS) +{{{---}}} +14:39:02.421: [IMAP_RAW.5455] Data is <772>: +14:39:02.421: * 34 FETCH (UID 53 FLAGS (\Seen)) +14:39:02.421: * 35 FETCH (UID 54 FLAGS (\Seen)) +... +14:39:02.426: [IMAP_RAW.5455] Data is <116>: +14:39:02.426: 56 FETCH (UID 75 FLAGS (\Seen)) +14:39:02.426: * 57 FETCH (UID 85 FLAGS (\Seen)) +14:39:02.426: * 58 FETCH (UID 86 FLAGS ()) +14:39:02.426: kman6 OK Success + +Get BODYSTRUCTURE and headers + +14:39:02.481: [IMAP.5455] Sending: kman7 FETCH 58 (UID +BODY.PEEK[HEADER.FIELDS (DATE MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO +CC BCC X-PRIORITY RESENT-FROM REFERENCES DISPOSITION-NOTIFICATION-TO)] +BODYSTRUCTURE RFC822.SIZE INTERNALDATE) +{{{---}}} +14:39:02.525: [IMAP_RAW.5455] Data is <514>: +14:39:02.525: * 58 FETCH (UID 86 RFC822.SIZE 11273 INTERNALDATE +"25-Mar-2015 11:38:56 +0000" BODYSTRUCTURE ("TEXT" "HTML" ("CHARSET" +"utf-8") NIL NIL "BASE64" 8934 115 NIL NIL NIL) BODY[HEADER.FIELDS (DATE +MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO CC BCC X-PRIORITY RESENT-FROM +REFERENCES DISPOSITION-NOTIFICATION-TO)] {307} +14:39:02.525: From: =?koi8-r?B?68/O09TBztTJziD3wdPJzNjF1w==?= <....> +14:39:02.525: To: kmanical@gmail.com +14:39:02.525: Subject: +=?koi8-r?B?RndkOiBbS29zdHlhJ3MgbGl0dGxlIGFwcHNdIFBsZWFzZSBtb2RlcmF0ZTogIu3PySDQ0s/H0sHNzdkg?= +14:39:02.525: =?koi +14:39:02.536: [IMAP_RAW.5455] Data is <107>: +14:39:02.536: 8-r?B?KFJVKSI=?= +14:39:02.536: Message-Id: <1633401427283535@web7m.yandex.ru> +14:39:02.536: Date: Wed, 25 Mar 2015 14:38:55 +0300 +14:39:02.536: +14:39:02.537: [IMAP_RAW.5455] Data is <21>: +14:39:02.537: ) +14:39:02.537: kman7 OK Success + +Get text (partial) + +14:39:02.552: [IMAP.5455] Sending: kman8 FETCH 58 (UID BODY.PEEK[1]<0.5120>) +{{{---}}} +14:39:02.595: [IMAP_RAW.5455] Data is <1339>: +14:39:02.595: * 58 FETCH (UID 86 BODY[1]<0> {5120} +... +14:39:02.600: [IMAP_RAW.5455] Data is <21>: +14:39:02.600: ) +14:39:02.600: kman8 OK Success + +### User opened message, need to mark read + +Checking if connection is alive + +14:39:06.063: [IMAP.5455] Sending: kman9 NOOP +{{{---}}} +14:39:06.113: [IMAP_RAW.5455] Data is <18>: +14:39:06.113: kman9 OK Success + +Setting \Seen + +14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) +{{{---}}} +14:39:06.490: [IMAP_RAW.5455] Data is <84>: +14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) +14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) +14:39:06.490: kman10 OK Success + +The unsolicited response lacks the just set "\Seen", it's old data. + +-- K +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22743.mbox:2,S new file mode 100644 index 00000000..4a03c983 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22743.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From lyndon at orthanc.ca Sat Mar 24 15:25:33 2012 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <20120324222321.GA8694@launde.brong.net> +References: <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <20897.1332624350.275209@puncture> + <206DC161-B889-4D0F-A99D-657252229FF5@iki.fi> + <20897.1332625246.404702@puncture> + <20120324222321.GA8694@launde.brong.net> +Message-ID: <74F79429-15F8-44C1-9514-BAF4AFDD2BBF@orthanc.ca> + + +On 2012-03-24, at 3:23 PM, Bron Gondwana wrote: + +> Your theory fails to account for cheap shitty NAT devices which think +> the entire world is HTTP and silently drop the connection after a +> couple of minutes + +If I didn't know any better, I would accuse you of being an old school grumpy internet bastard ;-) diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22756.mbox:2,S new file mode 100644 index 00000000..343d1b71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22756.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From brong at fastmail.fm Mon Nov 14 13:09:27 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <20111114205919.GA5573@brong.net> +References: + <4EB72A0C.31264.813832F8@David.Harris.pmail.gen.nz> + + <1320653922.13384.140660995615489@webmail.messagingengine.com> + + <20111114205919.GA5573@brong.net> +Message-ID: <20111114210927.GA6194@brong.net> + +> > Intelligent and talented people, if they find that trivial matter to be +> > annoying enough, will write an errata with proposed replacement wording, +> > post it for review, and upon general concensus will submit it to the RFC +> > 3501 errata for inclusion in a future revision. +> +> I started work on this and saved this as a draft for days, but haven't +> yet finished. I'll give it another go tonight. + +This is a diff - I haven't written it up as an errata yet, partially +because I have no experience with the standards process - so I'm not +sure exactly what to write - and partially because I'd like feedback +on the wording first. + +brong@launde:~$ diff rfc3501.txt rfc3501_new.txt +1748,1749c1748,1749 +< REQUIRED OK untagged responses: UNSEEN, PERMANENTFLAGS, +< UIDNEXT, UIDVALIDITY +--- +> REQUIRED OK untagged responses: PERMANENTFLAGS, +> UIDNEXT, UIDVALIDITY, UNSEEN (if any exist) +1779c1779,1782 +< SEARCH command if it wants to find it. +--- +> SEARCH command if it wants to find it. If there are +> no unseen messages in the mailbox, it is not possible +> to produce a sensible UNSEEN value, so servers MUST +> omit this item. +5931a5935,5937 +> +> 115) Clarify that servers MUST NOT return the UNSEEN untagged response +> from SELECT or EXAMINE if there are no unseen messages in the mailbox. + + +Thanks in advance for feedback, + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22772.mbox:2,S new file mode 100644 index 00000000..b6798f9c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22772.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From tss at iki.fi Fri May 20 12:00:54 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110520121957.Horde.chpUaIF5lbhN1rDN6FN3DTA@bigworm.curecanti.org> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + <1305883385.10421.294.camel@hurina> + <20110520121957.Horde.chpUaIF5lbhN1rDN6FN3DTA@bigworm.curecanti.org> +Message-ID: <1305918054.10421.369.camel@hurina> + +On Fri, 2011-05-20 at 12:19 -0600, Michael M Slusarz wrote: + +> With this solution, I would disagree however with the user of a '#' or +> other prefix to distinguish "new utf-8 keywords" from "old RFC 3501 +> keywords". I think the assumption should rather be that if a keyword +> is provided in a STORE/APPEND command as an ASTRING, the intent is +> that string is a human readable representation. +> +> E.g., with these series of client commands: +> +> TAG1 ENABLE UTF8-KEYWORDS +> [...] +> TAG2 STORE 1 +FLAGS foo +> [...] +> TAG3 STORE 2 +FLAGS "bar" +> +> Here, TAG 2 is taken to be a regular 3501 keyword. It is not +> necessarily intended to be the label for that message. A client is +> free to do keyword -> label translation on this value, and can choose +> to not display this keyword if it doesn't already know about it. +> +> Conversely, TAG3 is intended to be the full human readable label. A +> client should not do translation, and SHOULD directly display this +> label to the user. + +ASTRING means atom or string. So what you're really saying is that atoms +should be treated as old keywords, while strings should be treated as +new keywords. I think many IMAP parsers hide that distinction, and such +distinction isn't all that clear to humans either. If you want to keep +them separated, '#' or similar rarely used prefix would work basically +the same. + +> I still believe the list of utf8-keywords/labels in a mailbox should +> be something that is announced by the server. For example, a LABELS +> untagged response code could be used to provide this information. E.g.: +> +> TAG1 SELECT INBOX +> * OK [LABELS "Foo 1" "Bar 2" {7} +> ? label +> ] +> * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] +> [...] + +This would get solved automatically if there was no keyword/label +separation: + +* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft "#Foo 1" "#Bar 2" {9} +#? label \*)] + +Not having an explicit keyword/label separation would make this easy for +servers to implement it (and clients too, I'd think!). All I'd have to +do is remove some restrictions and add a bit of code to show a keyword +only if it's a valid atom or if utf8-keywords is ENABLEd. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22796.mbox:2,S new file mode 100644 index 00000000..0ac7dc5a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22796.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Oct 5 05:45:39 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Fwd: iOS IMAP IDLE (Standard "Push Email") + Deficiency, Explanation? +In-Reply-To: <11166.1286281488.738798@puncture> +References: <87lIcMeyz6O3xDzKeX7qvQ.md5@[192.168.16.40]> + <11166.1286281488.738798@puncture> +Message-ID: + +Dave Cridland writes: +> Not according to +> http://developer.apple.com/library/ios/#releasenotes/General/RN-iPhoneSDK-4_0/index.html + +No, sorry, my bad. It idles and reacts at once to an unsolited EXISTS, +but doesn't send IDLE. + +> And yes, those ~128 octets include TCP and TLS, so you drop by (if +> memory serves) about 57 octets. Quite what that buys you in terms of +> compression is anyone's guess, and I'd imagine quite dependent on +> usage patterns. + +The "new message arrived" formula is either often-repeated and highly +compressible, or seldom-repeated and unimportant in power terms. + +> But in practise, an IDLE session in typical usage seems to last me +> well over a day on my E71, and it certainly lasts longer than XMPP, +> but I'm working on the latter. + +FWIW, my Galaxy S (Android 2.1) seems to burn battery in polling mode, +but when I use an IDLE-using client the battery lives long. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22807.mbox:2,S new file mode 100644 index 00000000..f8e6a671 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22807.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 08:57:05 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <23852.1276246771.199346@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <23852.1276246771.199346@puncture> +Message-ID: + +On Fri, 11 Jun 2010, Dave Cridland wrote: +> Depending on your server design, this is either very easy, or else +> very hard - of course, since it's optional, it'd seem likely that +> where it's hard it'd not be supported. + +Correct. + +Commands in IMAP are atomic; thus this MOVE operation must be atomic. +It is simply impossible to do an atomic MOVE with many stores. + +Note that not even a one-file/one-message store (ala maildir) can do MOVE +atomically. Each file has to be renamed separately. That's not atomic! + +The one type of store that can do an atomic move is a database type store +where it would be an index update. In that case, you can lock the two +indices. + +MOVE is a classic example of something that sounds good and useful if you +have not thought these issues through. I have. It was no oversight that +there is no MOVE in IMAP. It was a carefully thought-out decision. + +> One thing that concerns me is that there is no way to undo this +> operation - traditionally, only EXPUNGE and DELETE have been +> irrevocable actions in IMAP, this adds one more. + +Correct. + +> The way to combat this is to make it merely mark \Deleted the +> original message - except then this eradicates any benefit to the +> command at all for clients. (Since one could either do MOVE/UID +> EXPUNGE, or else COPY+STORE/UID EXPUNGE). + +And these commands can be pipelined. + +> And there has to be very significant advantage for clients, across a +> wide deployment, for most clients to bother implementing it - right +> now, I don't see it. + +There is no advantage, since clients have to implement both methods. + +Note that in the one case where you can implement MOVE (see above), there +is no particular benefit (other than the atomic lock) over pipelining +because in the database the COPY operation is also an index operation. + +The case that would benefit from MOVE can't implement MOVE. The whole +idea of "wow, I can rename my maildir files instead of copying and +deleting" is fatally flawed, because it is not atomic. It's the same +problem as RENAME when a hierarchy is involve. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22866.mbox:2,S new file mode 100644 index 00000000..7d0983e3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22866.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Jul 10 05:38:33 2008 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] IMAP server mail transfer simulation +In-Reply-To: +References: <56b1f8870807080802p4bea379bi5185e9aff1b33585@mail.gmail.com> + <744A41DC-676F-45EC-B033-C193D165CF6F@orthanc.ca> + +Message-ID: + + +On 2008-Jul-10, at 00:08 , Timo Sirainen wrote: + +> I know that at least Thunderbird has a timeout that's something like +> 30 seconds. + +Absolutely fscking brilliant. + +I guess perl/tcl/scrum/configure/slashdot hasn't yet met event driven +programming. Wait a minute ... :-( + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22871.mbox:2,S new file mode 100644 index 00000000..7f6bafb5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22871.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From ams at oryx.com Sun Jun 1 14:17:11 2008 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: Proxy IP forwarding +In-Reply-To: <1212348043.3904.521.camel@hurina> +References: <1212341451.3904.500.camel@hurina> + <0i/azqanypELGcsgZG99yw.md5@lochnagar.oryx.com> + <1212348043.3904.521.camel@hurina> +Message-ID: <20080601211710.GA17359@toroid.org> + +At 2008-06-01 22:20:43 +0300, tss@iki.fi wrote: +> +> is it possible (with Linux) to somehow do transparent proxying with +> userspace doing the actual proxying (it'd also have to decode SSL +> sessions)? + +Yes, using libnetfilter_queue. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22874.mbox:2,S new file mode 100644 index 00000000..2881abb5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22874.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From MRC at Washington.EDU Tue May 20 14:44:31 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] so long, and thanks for all the fish! +Message-ID: + +I was laid off today. Unfortunately, I didn't get a change to push +imap-2007b out the door in release status, but the development tarball +there is pretty close to my final bits. + +If you have support requests for UW imapd, please send them to the Alpine +development team at UW, alpine-contact@u.washington.edu. + +It has been a privilege to work with all of you for the past 20 years. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22877.mbox:2,S new file mode 100644 index 00000000..c6f141eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22877.mbox:2,S @@ -0,0 +1,10 @@ +MBOX-Line: From dkarp at zimbra.com Fri Mar 28 09:18:34 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FETCH BODY[n.HEADER] on non-message parts +Message-ID: <348317927.557021206721114013.JavaMail.root@dogfood.zimbra.com> + +Is there a generally-accepted server response when a client requests FETCH +BODY[n.HEADER] on a non-message subpart? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22880.mbox:2,S new file mode 100644 index 00000000..a1cc60ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22880.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From mrc at Washington.EDU Sun Feb 3 15:07:48 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <08Feb3.150115pst."58696"@synergy1.parc.xerox.com> +References: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> + + <08Feb3.150115pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 3 Feb 2008, Bill Janssen wrote: +> I think that explicitly using ASCII where the spec calls for it, and +> raising errors for incorrect non-ASCII codings, will result in fewer +> subtle bugs in programs that use this client library. + +I would substitute "UTF-8" for "ASCII" in the above statement. Only +generate ASCII unless non-ASCII is explicitly permitted, but allow +incoming UTF-8 even for "ASCII" fields. + +For example, do NOT send a non-ASCII flag name, but don't keel over if a +UTF-8 flag name shows up from a server. And if such names do start +showing up, we can discuss switching off your "do not send non-ASCII flag +name" code. + +>> In particular, UTF-8 mailbox names will probably happen sooner rather than +>> later. +> Fine, but that will be an extension. I imagine there's some +> discussion of using standard RFC 2231 mail header charset quoting when +> transferring such mailbox names across the wire? + +I think that there's more interest in just switching to UTF-8 and be done +with it. I don't think that we're there yet though. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22883.mbox:2,S new file mode 100644 index 00000000..8add6e8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22883.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From tss at iki.fi Wed Jan 9 18:53:20 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Renaming mailboxes under their children +Message-ID: <1199933600.8850.71.camel@hurina> + +I guess nothing in IMAP protocol requires this to be done either way, +but does someone think there's any point in allowing: + +RENAME box box/child/box + +I was thinking about disallowing this, because users can accidentally +cause this with some clients (drag and dropping) and the client somehow +breaks afterwards. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22886.mbox:2,S new file mode 100644 index 00000000..e30803d3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22886.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From dkarp at zimbra.com Sat Dec 1 12:28:33 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] EXPUNGE on a multi-accessed mailbox with unknown + \Deleted messages +Message-ID: <633892787.3851196540913222.JavaMail.root@dogfood.zimbra.com> + +Let's say we have two clients. Both SELECT the same mailbox. + +Client 1 is sitting there inactive when client 2 does an APPEND to the +selected mailbox and a subsequent STORE +FLAGS \Deleted on the newly-appended +message. Client 1 then does an EXPUNGE without having been alerted about the +new message. + +Should the new message be silently expunged (with no untagged EXPUNGE) or +should it be skipped by the EXPUNGE? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095097.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095097.22889.mbox:2,S new file mode 100644 index 00000000..969a42fa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095097.22889.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From dave at cridland.net Thu Nov 1 13:28:42 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <1311.1193807487@succubus.panacea.null.org> +References: + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <1040.1193739773.286509@peirce.dave.cridland.net> + + <16687.1193801494@succubus.panacea.null.org> + + <1311.1193807487@succubus.panacea.null.org> +Message-ID: <7414.1193948922.685831@peirce.dave.cridland.net> + +On Wed Oct 31 05:11:27 2007, Joel Reicher wrote: +> Thinking about this more, I'm tending toward the idea that +> subscriptions +> are a type of client configuration data. Doing them with ACAP might +> be +> the way to go. + +Well, you can do that - I can bookmark arbitrary IMAP URLs in ACAP, +and that includes mailbox URLs. This ties in closely with Mark's +"suscriptions are bookmarks" concept that I recall him saying. I do +use this - for instance, I have a bookmark pointing to the archive of +this list on the Cyrus public server. + +But I don't use this facility often - personally, I don't find I need +subscriptions (and hence never implemented them), but that might well +be a result of the kinds of servers I use, and how I use them. So I +freely admit I'm not the right person to ponder whether they're +needed or not, and how we could replace them with something else. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22595.mbox:2,S new file mode 100644 index 00000000..4a77b997 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22595.mbox:2,S @@ -0,0 +1,169 @@ +MBOX-Line: From blong at google.com Wed Mar 25 08:43:33 2015 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: +References: +Message-ID: + +I'll file a bug +On Mar 25, 2015 7:55 AM, "Kostya Vasilyev" wrote: + +> Hi, +> +> I apologize for a Gmail specific message, but for lack of a better place... +> +> Recently I've started seeing strange stuff with message flags, the Gmail +> IMAP server returns out of date information on STORE +FLAGS and IDLE +> connections. +> +> There is a longer log below, but the the short of it is: +> +> 14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) +> {{{---}}} +> 14:39:06.490: [IMAP_RAW.5455] Data is <84>: +> 14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) +> 14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) +> 14:39:06.490: kman10 OK Success +> +> I understand that the second line is an unsolicited response, and that it +> would represent the message getting changed back to unread on another +> connection, except... +> +> There is no other connection here, and anyway, both responses are in the +> same data packet which is too fast to send a change made by another +> connection if there was one. +> +> I've spent a fair amount of time tweaking my IMAP commands trying to make +> it go away, and came to conclude that: +> +> - The time from receiving the message to the STORE command has to be very +> short, a matter of several seconds. +> +> - Seems to happen more often with the larger messages (> 5-10 K of message +> text). +> +> - Seems to happen more often when doing a partial (as opposed to full) +> text fetch during mail sync. +> +> The user sees a new, unread, message and goes to read it immediately, +> boom, it's still marked unread. +> +> If I wait a minute or so before opening the message (which is what +> triggers the STORE +\Seen), the issue doesn't happen and I get this: +> +> 16:35:13.874 * 65 FETCH (FLAGS (\Seen) UID 99) +> 16:35:13.874 * 65 FETCH (UID 99 FLAGS (\Seen)) +> +> Again, an unsolicited response (valid, but redundant), but now it actually +> reflects the just changed message flags. +> +> It gets more interesting when there are IDLE connections, which then also +> receive outdated (no \Seen) message flags about ten seconds after the STORE +> +\Seen, but I'll save it for later (I do have logs for that too). +> +> A more detailed log: +> +> The STORE +\Seen here is done ~three seconds after initial fetch (and very +> soon after the message got into the account). +> +> No IDLE, no CONDSTORE, very basic commands. +> +> ### Sync +> +> Initial connect and auth (omitted) +> Select INBOX (omitted) +> +> 14:39:02.329: [IMAP.5455] Sending: kman5 UID SEARCH RETURN (ALL) UNSEEN +> UNDELETED +> {{{---}}} +> 14:39:02.376: [IMAP_RAW.5455] Data is <73>: +> 14:39:02.376: * ESEARCH (TAG "kman5") UID ALL 86 +> 14:39:02.376: kman5 OK SEARCH completed (Success) +> +> Get flags and UIDs +> +> 14:39:02.378: [IMAP.5455] Sending: kman6 FETCH 34:58 (UID FLAGS) +> {{{---}}} +> 14:39:02.421: [IMAP_RAW.5455] Data is <772>: +> 14:39:02.421: * 34 FETCH (UID 53 FLAGS (\Seen)) +> 14:39:02.421: * 35 FETCH (UID 54 FLAGS (\Seen)) +> ... +> 14:39:02.426: [IMAP_RAW.5455] Data is <116>: +> 14:39:02.426: 56 FETCH (UID 75 FLAGS (\Seen)) +> 14:39:02.426: * 57 FETCH (UID 85 FLAGS (\Seen)) +> 14:39:02.426: * 58 FETCH (UID 86 FLAGS ()) +> 14:39:02.426: kman6 OK Success +> +> Get BODYSTRUCTURE and headers +> +> 14:39:02.481: [IMAP.5455] Sending: kman7 FETCH 58 (UID +> BODY.PEEK[HEADER.FIELDS (DATE MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO +> CC BCC X-PRIORITY RESENT-FROM REFERENCES DISPOSITION-NOTIFICATION-TO)] +> BODYSTRUCTURE RFC822.SIZE INTERNALDATE) +> {{{---}}} +> 14:39:02.525: [IMAP_RAW.5455] Data is <514>: +> 14:39:02.525: * 58 FETCH (UID 86 RFC822.SIZE 11273 INTERNALDATE +> "25-Mar-2015 11:38:56 +0000" BODYSTRUCTURE ("TEXT" "HTML" ("CHARSET" +> "utf-8") NIL NIL "BASE64" 8934 115 NIL NIL NIL) BODY[HEADER.FIELDS (DATE +> MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO CC BCC X-PRIORITY RESENT-FROM +> REFERENCES DISPOSITION-NOTIFICATION-TO)] {307} +> 14:39:02.525: From: =?koi8-r?B?68/O09TBztTJziD3wdPJzNjF1w==?= <....> +> 14:39:02.525: To: kmanical@gmail.com +> 14:39:02.525: Subject: +> =?koi8-r?B?RndkOiBbS29zdHlhJ3MgbGl0dGxlIGFwcHNdIFBsZWFzZSBtb2RlcmF0ZTogIu3PySDQ0s/H0sHNzdkg?= +> 14:39:02.525: =?koi +> 14:39:02.536: [IMAP_RAW.5455] Data is <107>: +> 14:39:02.536: 8-r?B?KFJVKSI=?= +> 14:39:02.536: Message-Id: <1633401427283535@web7m.yandex.ru> +> 14:39:02.536: Date: Wed, 25 Mar 2015 14:38:55 +0300 +> 14:39:02.536: +> 14:39:02.537: [IMAP_RAW.5455] Data is <21>: +> 14:39:02.537: ) +> 14:39:02.537: kman7 OK Success +> +> Get text (partial) +> +> 14:39:02.552: [IMAP.5455] Sending: kman8 FETCH 58 (UID +> BODY.PEEK[1]<0.5120>) +> {{{---}}} +> 14:39:02.595: [IMAP_RAW.5455] Data is <1339>: +> 14:39:02.595: * 58 FETCH (UID 86 BODY[1]<0> {5120} +> ... +> 14:39:02.600: [IMAP_RAW.5455] Data is <21>: +> 14:39:02.600: ) +> 14:39:02.600: kman8 OK Success +> +> ### User opened message, need to mark read +> +> Checking if connection is alive +> +> 14:39:06.063: [IMAP.5455] Sending: kman9 NOOP +> {{{---}}} +> 14:39:06.113: [IMAP_RAW.5455] Data is <18>: +> 14:39:06.113: kman9 OK Success +> +> Setting \Seen +> +> 14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) +> {{{---}}} +> 14:39:06.490: [IMAP_RAW.5455] Data is <84>: +> 14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) +> 14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) +> 14:39:06.490: kman10 OK Success +> +> The unsolicited response lacks the just set "\Seen", it's old data. +> +> -- K +> +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22743.mbox:2,S new file mode 100644 index 00000000..e9a8a47b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22743.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Mar 24 16:19:58 2012 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <1D50222D-157D-48A2-AB76-A73E23B83E56@iki.fi> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <694AC956-B34C-4E9F-83B3-45FB6AFA248D@iki.fi> + <4F6E4861.2060709@gulbrandsen.priv.no> + <1D50222D-157D-48A2-AB76-A73E23B83E56@iki.fi> +Message-ID: <4F6E569E.806@gulbrandsen.priv.no> + +On 03/24/2012 11:25 PM, Timo Sirainen wrote: +> I hadn't really given it a thought, but now that I do: Clients' real IPs could be hidden by proxies/NATs. This could be a problem either on server or client side. + +Why would you need the real IP? The proxy whose IP address you see is +that one that necessitates the keepalive. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22756.mbox:2,S new file mode 100644 index 00000000..37cbb727 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22756.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Mon Nov 14 13:54:37 2011 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <20111114210927.GA6194@brong.net> +References: , + <20111114205919.GA5573@brong.net>, + <20111114210927.GA6194@brong.net> +Message-ID: <4EC18E1D.10652.EB3C6B5@David.Harris.pmail.gen.nz> + +On 14 Nov 2011 at 22:09, Bron Gondwana wrote: + +> > SEARCH command if it wants to find it. If there are +> > no unseen messages in the mailbox, it is not possible +> > to produce a sensible UNSEEN value, so servers MUST +> > omit this item. + +Could I suggest that this might be rendered more simply: + +"If there are no unseen messages in the mailbox, the UNSEEN +response MUST be omitted, otherwise it MUST be sent." + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: +David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +In an advertisement for a Hong Kong dentist: + "Teeth extracted by the latest Methodists." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22772.mbox:2,S new file mode 100644 index 00000000..8208256e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22772.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From brong at fastmail.fm Fri May 20 14:43:40 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <1305918054.10421.369.camel@hurina> +References: <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + <1305883385.10421.294.camel@hurina> + <20110520121957.Horde.chpUaIF5lbhN1rDN6FN3DTA@bigworm.curecanti.org> + <1305918054.10421.369.camel@hurina> +Message-ID: <20110520214340.GA1097@brong.net> + +On Fri, May 20, 2011 at 10:00:54PM +0300, Timo Sirainen wrote: +> Not having an explicit keyword/label separation would make this easy for +> servers to implement it (and clients too, I'd think!). All I'd have to +> do is remove some restrictions and add a bit of code to show a keyword +> only if it's a valid atom or if utf8-keywords is ENABLEd. + +You haven't addressed the case of "STORE FLAGS" (not +FLAGS) here, where +you would have to decide if you implicitly clear a flag based on the +ENABLE command. That adds more complexity to the server. + +Bron ( of course, few clients actually do that ) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22796.mbox:2,S new file mode 100644 index 00000000..e7aa90eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22796.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From snowjn at aol.com Fri Oct 22 12:21:58 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Session flags. +Message-ID: <4CC1E456.5050208@aol.com> + + A flag can be permanent or session-only on a per-flag basis. + Permanent flags are those which the client can add or remove from the + message flags permanently; that is, concurrent and subsequent + sessions will see any change in permanent flags. Changes to session + flags are valid only in that session. + +Since I wasn't involved when the spec was hammered out, I have a question. + +Why are session flags useful? Is there a client that makes use of this +temporary flag change. + +snow. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22807.mbox:2,S new file mode 100644 index 00000000..748d283b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22807.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 09:09:44 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111115.19660.witold.krecicki@firma.o2.pl> + <20131949-0279-4455-8FB9-99E4030A6904@iki.fi> + <201006111437.03613.witold.krecicki@firma.o2.pl> + +Message-ID: + +On Fri, 11 Jun 2010, Timo Sirainen wrote: +>> And how hard it would be to really implement it in Dovecot? +> Much more difficult than I originally thought. + +It is trivial to implement MOVE wrong. It is very hard to implement it +right. + +MOVE really requires a database. + +With a maildir type store (such as Timo's server uses) have to do the +hardlink+delete, instead of rename, which loses much of the benefit over +pipelining COPY+UID EXPUNGE. But you also have to keep the source and +destination locked throughout. + +With any sort of store where messages are embedded in larger objects, it's +effectively unimplementable. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22866.mbox:2,S new file mode 100644 index 00000000..98a2a354 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22866.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu Jul 10 16:59:23 2008 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +Message-ID: <4876A25B.8010503@verizon.net> + +To start off, a bit of background information: + +I am currently working on writing a comprehensive IMAP testing server +for use in automated regression tests for the email clients Thunderbird +and SeaMonkey. If you would like to see more, you can view my trials and +tribulations at . + +I'll admit that I have not gotten around to reading all of the IMAP RFCs +yet, nor have I read the entire archives yet, so I apologize in advance +if I ask a question answered in one of those two forums. + +These are some questions that pop into my mind when reading the RFC: +1. Which parts are case-sensitive and which parts are not? The only +explicit mentions I see are that literals in the ABNF are +case-insensitive, and that base64 strings are case sensitive (for +obvious reasons), that INBOX is case-insensitive, and that other mailbox +names are explicitly not defined with respect to case-sensitivity. + +2. Can hierarchy delimiters change recursively (e.g., "Users" has a +delimiter of "/" but "Users/news" has a delimiter of ".")? To what +degree do multiple hierarchy delimiters exist in nature? + +3. Is there any definitive list of which servers support which +extensions, including how they don't support them correctly (okay, that +wasn't about the RFC itself)? + +4. Are there any explicit pitfalls I might want to test or look out for +when writing the testing server? + +Thanks in advance for your response. + +-- +Joshua Cranmer + +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22871.mbox:2,S new file mode 100644 index 00000000..9513fbca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22871.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Sat Jun 21 00:14:45 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <1070904325.21591212350911669.JavaMail.root@dogfood.zimbra.com> +References: <1070904325.21591212350911669.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1214032485.3904.1653.camel@hurina> + +On Sun, 2008-06-01 at 13:08 -0700, Dan Karp wrote: +> > The idea would be that there's a frontend IMAP proxy that looks up +> > the backend IMAP server based on the username, tells the backend +> > server the user's IP and then logs in using the provided user+password. +> +> We currently do this with a separate nginx process. We tell the IMAP +> server the client's actual IP by having nginx do an +> +> A001 ID ("X-ORIGINATING-IP" "") +> +> as the first command, before authenticating. + +Dovecot v1.2 will also support this and some other fields: + + - x-originating-port + - x-connected-ip + - x-connected-port + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22874.mbox:2,S new file mode 100644 index 00000000..e84a7d03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22874.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From herrold at owlriver.com Tue May 20 18:51:58 2008 +To: imap-protocol@u.washington.edu +From: R P Herrold +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] so long, and thanks for all the fish! +In-Reply-To: +References: +Message-ID: + +On Tue, 20 May 2008, Mark Crispin wrote: + +> I was laid off today. + +;( + +> It has been a privilege to work with all of you for the past 20 years. + +and Thank YOU Mark for your courtesy, and fine work over the +years. + +-- Russ herold + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22877.mbox:2,S new file mode 100644 index 00000000..238c2947 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22877.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From MRC at Washington.EDU Fri Mar 28 09:59:54 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FETCH BODY[n.HEADER] on non-message parts +In-Reply-To: <348317927.557021206721114013.JavaMail.root@dogfood.zimbra.com> +References: <348317927.557021206721114013.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Fri, 28 Mar 2008, Dan Karp wrote: +> Is there a generally-accepted server response when a client requests FETCH +> BODY[n.HEADER] on a non-message subpart? + +Yes. + +The result for any BODY[...] that does not actually exist is a zero-length +string. Normally, this is a client error (since the client can determine +what parts exist from BODYSTRUCTURE). However, at times it is convenient +for the client to do a mindless access, typically for BODY[1], so the +result is a zero-length string rather than a BAD. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22880.mbox:2,S new file mode 100644 index 00000000..35425d6c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22880.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Mon Feb 4 00:59:23 2008 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <08Feb3.150115pst."58696"@synergy1.parc.xerox.com> +References: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> + + <08Feb3.150115pst."58696"@synergy1.parc.xerox.com> +Message-ID: <8737.1202115563.136078@peirce.dave.cridland.net> + +On Sun Feb 3 15:01:07 2008, Bill Janssen wrote: +> > However, if I were you, I would NOT make any ASCII assumptions in +> a new > implementation. Implement with the assumption that ALL +> strings are UTF-8 > by default, but that for the time being you can +> only send ASCII except in > the defined circumstances you mentioned +> above. +> +> Thanks. Actually, at the moment, I'm looking at Python's imaplib +> client-side library. Python, in the move to the next major version, +> is adding an explicit sequence-of-bytes type (instead of the 8-bit +> string type it previously used), and I'm looking at how to do +> appropriate bytes-to-string conversions in data read from the wire. +> +> I think that explicitly using ASCII where the spec calls for it, and +> raising errors for incorrect non-ASCII codings, will result in fewer +> subtle bugs in programs that use this client library. +> +> +FWIW, I'm doing similar work in my Python IMAP client library, part +of my IPL. There might be a teeny bit of bias, here, but I'd +recommend looking at that rather than Python's IMAP library if you +need a Python IMAP library. It could do with some more input to it, +but it's a pretty solid base at the least. + + +> > In particular, UTF-8 mailbox names will probably happen sooner +> rather than > later. +> +> Fine, but that will be an extension. I imagine there's some +> discussion of using standard RFC 2231 mail header charset quoting +> when +> transferring such mailbox names across the wire? + +IMAP already has a convention using a modified UTF-7. (Which IPL +understands natively, and shields the calling application from, as +well as shielding the calling application from namespace and +delimiter differences). + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22883.mbox:2,S new file mode 100644 index 00000000..4a8d97c3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22883.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jan 9 19:00:10 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Renaming mailboxes under their children +In-Reply-To: <1199933600.8850.71.camel@hurina> +References: <1199933600.8850.71.camel@hurina> +Message-ID: + +On Thu, 10 Jan 2008, Timo Sirainen wrote: +> I guess nothing in IMAP protocol requires this to be done either way, +> but does someone think there's any point in allowing: +> RENAME box box/child/box + +UW imapd does not allow this. You have to first rename box to something +else, then rename it to box/child/box. + +Nobody has ever complained. Your suggestion that dragging and dropping +can cause this to happen by accident and break clients seems to me to be a +pretty compelling reason not to do it. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22886.mbox:2,S new file mode 100644 index 00000000..cea30c89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22886.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sat Dec 1 13:29:50 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] EXPUNGE on a multi-accessed mailbox with unknown + \Deleted messages +In-Reply-To: <633892787.3851196540913222.JavaMail.root@dogfood.zimbra.com> +References: <633892787.3851196540913222.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Sat, 1 Dec 2007, Dan Karp wrote: +> Should the new message be silently expunged (with no untagged EXPUNGE) or +> should it be skipped by the EXPUNGE? + +That is up to the implementation. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22889.mbox:2,S new file mode 100644 index 00000000..728512d3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22889.mbox:2,S @@ -0,0 +1,85 @@ +MBOX-Line: From alexey.melnikov at isode.com Fri Nov 9 08:48:20 2007 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Internationalizing IMAP (was GMail) +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + +Message-ID: <47348F54.1010007@isode.com> + +Arnt Gulbrandsen wrote: + +> Uh, we've gone from "need utf-8 flags" to "should convert message data +> to utf-8 in the server" in a very short time, and personally I see +> very little justification for the latter. +> +> Mark Crispin writes: +> +>> On Sun, 28 Oct 2007, Arnt Gulbrandsen wrote: +>> +>>> But an extension to say only "use UTF-8 for mailboxes and flags +>>> (instead of mUTF-7)" makes even more sense. UTF-8 flags have real +>>> value. +>> +>> Well, there's several possible ways to go about doing all this. +>> Consider all of these to be strawmen. +> +> I thought about the same options when I implemented mUTF-7, except +> that your strawman for 2 is slightly better than what I had in mind. +> +>> 1) An "ENABLE UTF-8" command that throws a big switch. Rather +>> unIMAPish. +> +> IFF a big switch is the right way to solve it, I like this, but... +> hm... how shall I say this? IMO, the value of ENABLE is O(1/n), where +> n is the number of times it is used, so I'd prefer to keep n small. + +IMHO, a big switch might be easier to implement and test (both on the +server side and on the client side). + +I've discussed this with Chris Newman in context of +draft-ietf-eai-imap-utf8 and I think Chris also had the opinion that +this is the way to go. + +>> 2) UTF8 FETCH, UTF8 LIST, UTF8 LSUB commands. IMAPish, but somewhat +>> pessimistic about the future of certain extensions. +> +> That also needs UTF8 SELECT (for the flag-related responses), UTF8 +> LISTRIGHTS, UTF8 STATUS and perhaps UTF8 GENURLAUTH and UTF8 URLFETCH. + ++1. + +> I didn't like RLIST+RLSUB, so I find it hard to be charmed by this crowd. + +Indeed. That is exactly why I started co-editing of the LISTEXT document. + +>> 3) Make CONVERT do ENVELOPE/BODY[STRUCTURE] for those who want it, +>> and add a UTF8 option to LISTEXT. +> +FYI, the latest [expired] version of draft-ietf-eai-imap-utf8 defines a +LISTEXT option. + +>> Somewhat optimistic about these extensions. +> +> (This doesn't handle UTF-8 flag and mailbox names.) +> +> I speculate that the audience for doing message data conversion in the +> server is the same as the audience for CONVERT. Most clients support +> local mailboxes or POP, and so they don't get any benefit. +> +> So my tentative conclusion is to say that 1 is a lesser evil than 2, +> make the change affect only LIST, FLAGS and PERMANENTFLAGS responses, +> and leave message data conversion to the people who want convert. + +I prefer the choice # 1, followed by 3 and then followed by 2. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095098.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095098.22893.mbox:2,S new file mode 100644 index 00000000..1b9d31c0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095098.22893.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From joel at panacea.null.org Sat Oct 6 21:54:51 2007 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Shared group mailboxes and IMAP +In-Reply-To: <46F15283.5000909@rde-richw-3.stanford.edu> +References: <46F01DF4.2060804@rde-richw-3.stanford.edu> + <6A0572C0907CB8172BC6F693@tyrion.rrz.uni-koeln.de> + <46F15283.5000909@rde-richw-3.stanford.edu> +Message-ID: <2642.1191732891@succubus.panacea.null.org> + +Sorry for the delay in following up... + +> In the scenario I described earlier, the shared mailbox is treated +> as a separate IMAP account. The group mailboxes/accounts are on a +> separate IMAP server (not the same as any of the servers where the +> users' individual accounts live) + +Just because the STORAGE for the individuals is on another server does +not mean the AUTHENTICATION DETAILS can't be duplicated on this "group" +server. + +And this is exactly what I would recommend. Have users log in to both +servers with identical and individual authentication details. You may want +to use something like LDAP for this so there's no duplication of the auth +record. + +> Each group account has its own, unique e-mail address, and the group +> mailbox acts like the inbox for the corresponding e-mail address +> (except, as I tried to explain earlier, they don't really LOOK like +> regular INBOX'es to most mail clients, apparently since they are +> stored in a name space starting with "group." instead of "user."). + +With the scheme above you could actually make it into the INBOX for +each user since they're logging in to a different server to access +this group mailbox. + +> Aside from the fact that the group mailboxes are on a separate IMAP +> server of their own, it's felt desirable to treat them as totally +> separate "accounts" in any case because the users accessing one of +> these group mailboxes generally want/need to assume a special group +> identity / personality (e.g., if a group mailbox is used by the staff +> of an office, and anyone in the office replies to a message sent to +> the group e-mail address, the reply should be "From:" the group +> address and NOT from the individual staff member sending the reply). +> This also means the current model (wherein all group mailboxes that +> a given user has rights to will all show up under a single account) +> if NOT good, because it prevents the user from assuming a separate +> persona for each separate group account. + +That is a mail client configuration issue. Just because the automatic +stupidity of some mail clients can be tricked into the desired behaviour +by some server-side contortions doesn't mean you should do it. + +> The main thing I was hoping to find by posting my original question +> was whether anyone can point me to an authentication mechanism that +> current IMAP clients could use to allow multiple users to log in to +> a single account, with each user having his/her own separate password. + +This is server dependent, but I would expect most authentication +implementations to support multiple passwords for the same uid. You can +certainly do it with /etc/passwd in UNIX. + +Cheers, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22595.mbox:2,S new file mode 100644 index 00000000..342febf0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22595.mbox:2,S @@ -0,0 +1,250 @@ +MBOX-Line: From kmansoft at gmail.com Wed Mar 25 09:17:36 2015 +To: imap-protocol@u.washington.edu +From: Kostya Vasilyev +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: +References: + +Message-ID: + +Thank you Brandon. + +Any way for me or other mail app developers to keep up on how it goes from +there? + +Scenario involving IDLE -- what I saved for later in my original message -- +looks like this: + +Worker connection doing +\Seen: +01:45:58.791: [IMAP.4580] Sending: kman12 UID STORE 196235 +FLAGS (\Seen) +01:45:59.442: [IMAP_RAW.4580] Data is <98>: +01:45:59.442: * 20885 FETCH (FLAGS (\Seen) UID 196235) +01:45:59.442: * 20885 FETCH (UID 196235 FLAGS ()) +01:45:59.442: kman12 OK Success + +Separate IDLE connection (or conceivably, different device), no \Seen: + +01:45:59.977: [IMAP.4572] Data is <37>: +01:45:59.977: * 20885 FETCH (UID 196235 FLAGS ()) + +Worker connection again: + +01:46:05.046: [IMAP.4580] Sending: kman15 UID STORE 196235 +FLAGS +(\Answered) + +IDLE connection again, while above command is still executing: no \Seen +and no \Answered. That's the only data ever received there. So it only get +data that's obsolete, and then nothing more on that message: + +01:46:05.890: [IMAP.4572] Data is <34>: +01:46:05.890: * 20885 FETCH (UID 196235 FLAGS () + +Worker connection, command finally done, obsolete state of flags as well: + +01:46:05.896: [IMAP_RAW.4580] Data is <108>: +01:46:05.896: * 20885 FETCH (FLAGS (\Answered \Seen) UID 196235) +01:46:05.896: * 20885 FETCH (UID 196235 FLAGS ()) +01:46:05.896: kman15 OK Success + +And as a sanity check, same issue is also exhibited in Trojita (Linux +desktop). + +1 - removing "star" from a message, message in the UI stays "starred": + +18:15:27.666 >>> y105 UID STORE 196275 -FLAGS (\Flagged)?? +18:15:27.830 <<< y104 OK IDLE terminated (Success)?? +18:15:28.254 <<< * 20916 FETCH (FLAGS (\Seen) MODSEQ (20734317) UID +196275)?? +18:15:28.254 <<< * 20916 FETCH (UID 196275 MODSEQ (20734310) FLAGS +(\Flagged \Seen))?? +18:15:28.260 <<< y105 OK Success?? + +2 - Opening a freshly received message (same scenario as my original +message), message in the UI stays unread: + +18:16:31.950 >>> y109 UID STORE 196276 +FLAGS (\Seen)?? +18:16:31.950 >>> y110 UID FETCH 196276 (BODY.PEEK[1])?? +18:16:32.652 <<< * 20917 FETCH (FLAGS (\Seen) MODSEQ (20734373) UID +196276)?? +18:16:32.652 <<< * 20917 FETCH (UID 196276 MODSEQ (20734328) FLAGS ())?? +18:16:32.657 <<< y109 OK Success?? +18:16:32.657 Imap::Mailbox::UpdateFlagsTask Completed +18:16:32.663 <<< * 20917 FETCH (UID 196276 MODSEQ (20734328) BODY[1] +{13060}??PGRpdj6aPC9kaXY+PGRpdj48ZGl2PjxkaXYgc3R5bGU9ImNvbG9yOmJsYWNrOyI+PGRpdiBzdHls??ZT0iY29sb3I6YmxhY2s7Ij48cCBzdHlsZT0iY29sb3I6YmxhY2s7Zm9udC1za +(+ 12924 more bytes) +18:16:32.663 <<< y110 OK Success?? + +Trojita uses CONDSTORE, so it should be possible to filter responses and +take the one with the largest MODSEQ, but... + +... I've already tried that in my app, and it doesn't help with wrong data +on IDLE connections, and also doesn't help when you have multiple devices. + +-- K + + +2015-03-25 18:43 GMT+03:00 Brandon Long : + +> I'll file a bug +> On Mar 25, 2015 7:55 AM, "Kostya Vasilyev" wrote: +> +>> Hi, +>> +>> I apologize for a Gmail specific message, but for lack of a better +>> place... +>> +>> Recently I've started seeing strange stuff with message flags, the Gmail +>> IMAP server returns out of date information on STORE +FLAGS and IDLE +>> connections. +>> +>> There is a longer log below, but the the short of it is: +>> +>> 14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) +>> {{{---}}} +>> 14:39:06.490: [IMAP_RAW.5455] Data is <84>: +>> 14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) +>> 14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) +>> 14:39:06.490: kman10 OK Success +>> +>> I understand that the second line is an unsolicited response, and that it +>> would represent the message getting changed back to unread on another +>> connection, except... +>> +>> There is no other connection here, and anyway, both responses are in the +>> same data packet which is too fast to send a change made by another +>> connection if there was one. +>> +>> I've spent a fair amount of time tweaking my IMAP commands trying to make +>> it go away, and came to conclude that: +>> +>> - The time from receiving the message to the STORE command has to be very +>> short, a matter of several seconds. +>> +>> - Seems to happen more often with the larger messages (> 5-10 K of +>> message text). +>> +>> - Seems to happen more often when doing a partial (as opposed to full) +>> text fetch during mail sync. +>> +>> The user sees a new, unread, message and goes to read it immediately, +>> boom, it's still marked unread. +>> +>> If I wait a minute or so before opening the message (which is what +>> triggers the STORE +\Seen), the issue doesn't happen and I get this: +>> +>> 16:35:13.874 * 65 FETCH (FLAGS (\Seen) UID 99) +>> 16:35:13.874 * 65 FETCH (UID 99 FLAGS (\Seen)) +>> +>> Again, an unsolicited response (valid, but redundant), but now it +>> actually reflects the just changed message flags. +>> +>> It gets more interesting when there are IDLE connections, which then also +>> receive outdated (no \Seen) message flags about ten seconds after the STORE +>> +\Seen, but I'll save it for later (I do have logs for that too). +>> +>> A more detailed log: +>> +>> The STORE +\Seen here is done ~three seconds after initial fetch (and +>> very soon after the message got into the account). +>> +>> No IDLE, no CONDSTORE, very basic commands. +>> +>> ### Sync +>> +>> Initial connect and auth (omitted) +>> Select INBOX (omitted) +>> +>> 14:39:02.329: [IMAP.5455] Sending: kman5 UID SEARCH RETURN (ALL) UNSEEN +>> UNDELETED +>> {{{---}}} +>> 14:39:02.376: [IMAP_RAW.5455] Data is <73>: +>> 14:39:02.376: * ESEARCH (TAG "kman5") UID ALL 86 +>> 14:39:02.376: kman5 OK SEARCH completed (Success) +>> +>> Get flags and UIDs +>> +>> 14:39:02.378: [IMAP.5455] Sending: kman6 FETCH 34:58 (UID FLAGS) +>> {{{---}}} +>> 14:39:02.421: [IMAP_RAW.5455] Data is <772>: +>> 14:39:02.421: * 34 FETCH (UID 53 FLAGS (\Seen)) +>> 14:39:02.421: * 35 FETCH (UID 54 FLAGS (\Seen)) +>> ... +>> 14:39:02.426: [IMAP_RAW.5455] Data is <116>: +>> 14:39:02.426: 56 FETCH (UID 75 FLAGS (\Seen)) +>> 14:39:02.426: * 57 FETCH (UID 85 FLAGS (\Seen)) +>> 14:39:02.426: * 58 FETCH (UID 86 FLAGS ()) +>> 14:39:02.426: kman6 OK Success +>> +>> Get BODYSTRUCTURE and headers +>> +>> 14:39:02.481: [IMAP.5455] Sending: kman7 FETCH 58 (UID +>> BODY.PEEK[HEADER.FIELDS (DATE MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO +>> CC BCC X-PRIORITY RESENT-FROM REFERENCES DISPOSITION-NOTIFICATION-TO)] +>> BODYSTRUCTURE RFC822.SIZE INTERNALDATE) +>> {{{---}}} +>> 14:39:02.525: [IMAP_RAW.5455] Data is <514>: +>> 14:39:02.525: * 58 FETCH (UID 86 RFC822.SIZE 11273 INTERNALDATE +>> "25-Mar-2015 11:38:56 +0000" BODYSTRUCTURE ("TEXT" "HTML" ("CHARSET" +>> "utf-8") NIL NIL "BASE64" 8934 115 NIL NIL NIL) BODY[HEADER.FIELDS (DATE +>> MESSAGE-ID LIST-ID SUBJECT FROM REPLY-TO TO CC BCC X-PRIORITY RESENT-FROM +>> REFERENCES DISPOSITION-NOTIFICATION-TO)] {307} +>> 14:39:02.525: From: =?koi8-r?B?68/O09TBztTJziD3wdPJzNjF1w==?= <....> +>> 14:39:02.525: To: kmanical@gmail.com +>> 14:39:02.525: Subject: +>> =?koi8-r?B?RndkOiBbS29zdHlhJ3MgbGl0dGxlIGFwcHNdIFBsZWFzZSBtb2RlcmF0ZTogIu3PySDQ0s/H0sHNzdkg?= +>> 14:39:02.525: =?koi +>> 14:39:02.536: [IMAP_RAW.5455] Data is <107>: +>> 14:39:02.536: 8-r?B?KFJVKSI=?= +>> 14:39:02.536: Message-Id: <1633401427283535@web7m.yandex.ru> +>> 14:39:02.536: Date: Wed, 25 Mar 2015 14:38:55 +0300 +>> 14:39:02.536: +>> 14:39:02.537: [IMAP_RAW.5455] Data is <21>: +>> 14:39:02.537: ) +>> 14:39:02.537: kman7 OK Success +>> +>> Get text (partial) +>> +>> 14:39:02.552: [IMAP.5455] Sending: kman8 FETCH 58 (UID +>> BODY.PEEK[1]<0.5120>) +>> {{{---}}} +>> 14:39:02.595: [IMAP_RAW.5455] Data is <1339>: +>> 14:39:02.595: * 58 FETCH (UID 86 BODY[1]<0> {5120} +>> ... +>> 14:39:02.600: [IMAP_RAW.5455] Data is <21>: +>> 14:39:02.600: ) +>> 14:39:02.600: kman8 OK Success +>> +>> ### User opened message, need to mark read +>> +>> Checking if connection is alive +>> +>> 14:39:06.063: [IMAP.5455] Sending: kman9 NOOP +>> {{{---}}} +>> 14:39:06.113: [IMAP_RAW.5455] Data is <18>: +>> 14:39:06.113: kman9 OK Success +>> +>> Setting \Seen +>> +>> 14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) +>> {{{---}}} +>> 14:39:06.490: [IMAP_RAW.5455] Data is <84>: +>> 14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) +>> 14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) +>> 14:39:06.490: kman10 OK Success +>> +>> The unsolicited response lacks the just set "\Seen", it's old data. +>> +>> -- K +>> +>> +>> +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman13.u.washington.edu/mailman/listinfo/imap-protocol +>> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22743.mbox:2,S new file mode 100644 index 00000000..f0b963db --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22743.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Sat Mar 24 16:26:46 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <4F6E569E.806@gulbrandsen.priv.no> +References: <11E08CAD-B343-4845-9C33-1DA80AFD652E@psu.edu> + <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <694AC956-B34C-4E9F-83B3-45FB6AFA248D@iki.fi> + <4F6E4861.2060709@gulbrandsen.priv.no> + <1D50222D-157D-48A2-AB76-A73E23B83E56@iki.fi> + <4F6E569E.806@gulbrandsen.priv.no> +Message-ID: <672F7891-15E5-4B24-BF16-3EEBBFBACA7B@iki.fi> + +On 25.3.2012, at 1.19, Arnt Gulbrandsen wrote: + +> On 03/24/2012 11:25 PM, Timo Sirainen wrote: +>> I hadn't really given it a thought, but now that I do: Clients' real IPs could be hidden by proxies/NATs. This could be a problem either on server or client side. +> +> Why would you need the real IP? The proxy whose IP address you see is +> that one that necessitates the keepalive. + +Unless the proxy is on the server side and all of the client IPs are from the same address. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22756.mbox:2,S new file mode 100644 index 00000000..489f824d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22756.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From brong at fastmail.fm Mon Nov 14 14:36:49 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <4EC18E1D.10652.EB3C6B5@David.Harris.pmail.gen.nz> +References: , + <20111114205919.GA5573@brong.net>, + <20111114210927.GA6194@brong.net> + <4EC18E1D.10652.EB3C6B5@David.Harris.pmail.gen.nz> +Message-ID: <1321310209.23714.140660998907545@webmail.messagingengine.com> + + + +On Tuesday, November 15, 2011 10:54 AM, "David Harris" wrote: +> On 14 Nov 2011 at 22:09, Bron Gondwana wrote: +> +> > > SEARCH command if it wants to find it. If there are +> > > no unseen messages in the mailbox, it is not possible +> > > to produce a sensible UNSEEN value, so servers MUST +> > > omit this item. +> +> Could I suggest that this might be rendered more simply: +> +> "If there are no unseen messages in the mailbox, the UNSEEN +> response MUST be omitted, otherwise it MUST be sent." + +That's really good. You could probably even remove some negatives. Hmm. + +If there are any unseen messages in the mailbox, an UNSEEN response must +be sent, if not it MUST be omitted. + +What do you think? + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22772.mbox:2,S new file mode 100644 index 00000000..c64ac79a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22772.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Fri May 20 15:00:43 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <20110520214340.GA1097@brong.net> +References: <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + <1305883385.10421.294.camel@hurina> + <20110520121957.Horde.chpUaIF5lbhN1rDN6FN3DTA@bigworm.curecanti.org> + <1305918054.10421.369.camel@hurina> + <20110520214340.GA1097@brong.net> +Message-ID: <98F27C33-0A6C-4320-B983-C4B8EAB9D0A6@iki.fi> + +On 21.5.2011, at 0.43, Bron Gondwana wrote: + +> On Fri, May 20, 2011 at 10:00:54PM +0300, Timo Sirainen wrote: +>> Not having an explicit keyword/label separation would make this easy for +>> servers to implement it (and clients too, I'd think!). All I'd have to +>> do is remove some restrictions and add a bit of code to show a keyword +>> only if it's a valid atom or if utf8-keywords is ENABLEd. +> +> You haven't addressed the case of "STORE FLAGS" (not +FLAGS) here, where +> you would have to decide if you implicitly clear a flag based on the +> ENABLE command. That adds more complexity to the server. +> +> Bron ( of course, few clients actually do that ) + +Hmm. Yeah. I've never really liked that command. Internally in Dovecot I have only +flags/keywords, -flags/keywords and "remove all keywords". I wonder what the real use cases for STORE FLAGS is? Probably mainly syncing client's local state to server. For that if the client doesn't understand UTF-8 keywords, it probably shouldn't be touching them either. But yes, that makes my code at least more complex, requiring yet another "remote all atom keywords" command. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22796.mbox:2,S new file mode 100644 index 00000000..80825dbd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22796.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc+imap at panda.com Fri Oct 22 12:43:00 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Session flags. +In-Reply-To: <4CC1E456.5050208@aol.com> +References: <4CC1E456.5050208@aol.com> +Message-ID: + +On Fri, 22 Oct 2010, John Snow wrote: +> Why are session flags useful? Is there a client that makes use of this +> temporary flag change. + +Support you have a mailbox open read-only, either because you have chosen +to do so, or you don't have write access, or you only have access to one +flag (e.g., \Deleted in netnews). + +If you read a message without using peek, shouldn't \Seen get set and show +in the index? Why not? The spec says that \Seen gets set if you don't +use peek. + +If you reply to a message and set \Answered, shouldn't \Answered get set +and show up in the index? Why not? + +Let's consider a specific use case. I am reading netnews with my IMAP +client. Why shouldn't the messages that I have read show up as being +read, and the messages that I have answered show up as being answered? + +Session flags guarantee the expected user experience with every IMAP +client. The user may understand that those flags will be gone afterwards, +but if it is netnews and he deletes all messages, that doesn't matter. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22807.mbox:2,S new file mode 100644 index 00000000..d2c692cb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22807.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 09:12:11 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <1276267479.22134.102.camel@kurkku.sapo.corppt.com> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> +Message-ID: + +On Fri, 11 Jun 2010, Timo Sirainen wrote: +> As long as there is no requirement for MOVE to be atomic (i.e. it would +> be allowed to emulate it with copy+expunge), there's no need to lock +> multiple mailboxes simultaneously. + +If MOVE is not atomic, then what is its point? + +If MOVE is not atomic, then how do you do the necessary error recovery? +Or if you don't recover errors, how do you report them to the client? + +Oh dear. Oh my. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22866.mbox:2,S new file mode 100644 index 00000000..52bc10b0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22866.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From markrcrispin at live.com Thu Jul 10 17:36:56 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +In-Reply-To: <4876A25B.8010503@verizon.net> +References: <4876A25B.8010503@verizon.net> +Message-ID: + + +> 1. Which parts are case-sensitive and which parts are not? + +From page 81: + (1) Except as noted otherwise, all alphabetic characters + are case-insensitive. + +This means, besides what you noted, that flags are case-insensitive. + +> 2. Can hierarchy delimiters change recursively (e.g., "Users" has a +> delimiter of "/" but "Users/news" has a delimiter of ".")? To what +> degree do multiple hierarchy delimiters exist in nature? + +Hierarchy delimiters are constant for a particular root. A server which has multiple roots is supposed to use the # namespace convention which is there for that purpose. So, if you have USENET news, you should use something like #news.comp.mail.imap and not /Users/news/comp.mail.imap since you can't mix hierarchy delimiters in the same root. + +> 3. Is there any definitive list of which servers support which +> extensions, including how they don't support them correctly (okay, that +> wasn't about the RFC itself)? + +Such a list is ever changing, and listing what servers don't support them correctly is likely to result in considerable hostility aimed at the lister. It's easier to list servers that do things right: UW/Panda, Dovecot, and Cyrus. The author of Dovecot has been quite diligent in producing torture tests for servers, and he and the author of UW/Panda (me) have had a friendly competition in who can fix the problems uncovered first. + +> 4. Are there any explicit pitfalls I might want to test or look out for +> when writing the testing server? + +Writing an IMAP server is not for the faint-hearted or for one who hasn't read (and understood) the entire RFC. Good luck... + +-- Mark -- + +_________________________________________________________________ +Use video conversation to talk face-to-face with Windows Live Messenger. +http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL_Refresh_messenger_video_072008 diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22871.mbox:2,S new file mode 100644 index 00000000..122e2152 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22871.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From janssen at parc.com Sun Jun 22 13:29:11 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] '+' in counted literal (e.g. {548+}) -- where from? +Message-ID: <08Jun22.132913pdt."58698"@synergy1.parc.xerox.com> + +I find that the Apple Mail tool (version 3.3) is sending my UpLib IMAP +server counted literals with an odd count. The "number" part of the +count ends with a "+", as in "{548+}". I don't know what that means, +or what IMAP extension defines that syntax... + +My server advertises LITERAL+, NAMESPACE, UIDPLUS, IDLE. RFC 4466 +(Collected Extensions to IMAP4 ABNF) says, + + literal8 = "~{" number ["+"] "}" CRLF *OCTET + ;; A string that might contain NULs. + ;; represents the number of OCTETs + ;; in the response string. + ;; The "+" is only allowed when both LITERAL+ and + ;; BINARY extensions are supported by the server. + +It says that the "literal8" syntax was taken from RFC 3516, but +neither the character "+" nor the string "plus" occurs in RFC 3516, so +I don't trust either the spec or the attribution in RFC 4466. My server +in any case doesn't advertise BINARY, and there's no "~" in the count +being sent by Apple Mail. + +Any ideas? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22874.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22874.mbox:2,S new file mode 100644 index 00000000..a75d0764 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22874.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From randy at qualcomm.com Sun May 25 18:57:29 2008 +To: imap-protocol@u.washington.edu +From: Randall Gellens +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] so long, and thanks for all the fish! +In-Reply-To: +References: +Message-ID: + +I'm extremely sorry to hear this, Mark. + +Does/will this email address still work for you? + +Do you have plans? Are you looking for something or have something? + +You're an extremely talented engineer, and your IMAP fame has got to +be a major asset for you. + +I'm honestly very surprised that UW wouldn't want to keep you on. + +-- +Randall Gellens +Opinions are personal; facts are suspect; I speak for myself only +-------------- Randomly-selected tag: --------------- +Man will occasionally stumble over the truth, but most of the +time he will pick himself up and continue on. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22877.mbox:2,S new file mode 100644 index 00000000..099dcb31 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22877.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From dkarp at zimbra.com Fri Mar 28 10:13:00 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FETCH BODY[n.HEADER] on non-message parts +In-Reply-To: +Message-ID: <2121388044.564471206724380652.JavaMail.root@dogfood.zimbra.com> + +> The result for any BODY[...] that does not actually exist is a +> zero-length string. Normally, this is a client error (since the +> client can determine what parts exist from BODYSTRUCTURE). +> However, at times it is convenient for the client to do a mindless +> access, typically for BODY[1], so the result is a zero-length string +> rather than a BAD. + +A zero-length string rather than a NIL? If so, under what conditions +will FETCH BODY[...] ever return NIL? + + msg-att-static = ... / "BODY" section ["<" number ">"] SP nstring / ... + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22880.mbox:2,S new file mode 100644 index 00000000..e86cb4c1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22880.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From janssen at parc.com Mon Feb 4 07:38:16 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <8737.1202115563.136078@peirce.dave.cridland.net> +References: <08Feb3.133012pst."58696"@synergy1.parc.xerox.com> + + <08Feb3.150115pst."58696"@synergy1.parc.xerox.com> + <8737.1202115563.136078@peirce.dave.cridland.net> +Message-ID: <08Feb4.073822pst."58696"@synergy1.parc.xerox.com> + +> FWIW, I'm doing similar work in my Python IMAP client library, part +> of my IPL. There might be a teeny bit of bias, here, but I'd +> recommend looking at that rather than Python's IMAP library if you +> need a Python IMAP library. It could do with some more input to it, +> but it's a pretty solid base at the least. + +Thanks, Dave, but "imaplib" is already a standard part of the Python +distribution. I'd prefer to have it be the best possible base. Don't +see the need for two. If you'd like to contribute some effort, you +might take a look at http://bugs.python.org/issue1210. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22883.mbox:2,S new file mode 100644 index 00000000..d8438286 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22883.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From ml.cyresse at gmail.com Wed Jan 9 19:38:00 2008 +To: imap-protocol@u.washington.edu +From: Liam Clarke +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +Message-ID: + +Hi, + +I'm very new to IMAP, looking to implement a client library and +somewhat worried by this line in the RFC: + +> A client MUST be prepared to accept any server response at all times. This includes server data that was not requested. + +For the most part handling of unrequested untagged responses seems to +be straightforward pattern matching, as the context doesn't really +matter - but what has me confused and a little worried is one of the +examples of two FETCH responses in the last section of the RFC +(apologies for the long c&p): + +C: a003 fetch 12 full +S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" + RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)" + "IMAP4rev1 WG mtg summary and minutes" + (("Terry Gray" NIL "gray" "cac.washington.edu")) + (("Terry Gray" NIL "gray" "cac.washington.edu")) + (("Terry Gray" NIL "gray" "cac.washington.edu")) + ((NIL NIL "imap" "cac.washington.edu")) + ((NIL NIL "minutes" "CNRI.Reston.VA.US") + ("John Klensin" NIL "KLENSIN" "MIT.EDU")) NIL NIL + "") + BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 + 92)) +S: a003 OK FETCH completed +C: a004 fetch 12 body[header] +S: * 12 FETCH (BODY[HEADER] {342} +S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) +S: From: Terry Gray +S: Subject: IMAP4rev1 WG mtg summary and minutes +S: To: imap@cac.washington.edu +S: cc: minutes@CNRI.Reston.VA.US, John Klensin +S: Message-Id: +S: MIME-Version: 1.0 +S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII +S: +S: ) +S: a004 OK FETCH completed + +From the layout and note that " A long line in this sample is broken +for editorial clarity." I'm deducing that the server response to a003 +is all on a single \r\n delimited line, but is the second actually +split over multiple \r\n delimited lines? + +If so, would it be possible for lines from separate fetch responses to +arrive together? Borrowing trouble from the future, but just got +worried when I saw that. + +Regards, + +Liam Clarke-Hutchinson + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22886.mbox:2,S new file mode 100644 index 00000000..f941d92e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22886.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From jadermf at yahoo.com.br Sat Dec 1 14:15:01 2007 +To: imap-protocol@u.washington.edu +From: Jader Augusto +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] add/delete message header +Message-ID: <816806.56559.qm@web55701.mail.re3.yahoo.com> + +Hi all, +It is possible to add/delete/change any header information in a message using imap protocol? +If it is possible, could anybody indicate to me where i can find the information i need to do this? i've been looking for this in a while, but never found anything like that. Thanks in advance. + + + + + Abra sua conta no Yahoo! Mail, o ?nico sem limite de espa?o para armazenamento! +http://br.mail.yahoo.com/ +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22889.mbox:2,S new file mode 100644 index 00000000..2812587c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22889.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From richw at richw.org Sat Nov 10 20:23:44 2007 +To: imap-protocol@u.washington.edu +From: Rich Wales +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Thunderbird IMAP bugs? +Message-ID: <473683D0.7050306@liberation.richw.org> + +Can anyone supply a list of known Thunderbird problems vis-?-vis IMAP? + +I've had -- or, at least, I think I've had -- pretty good success using +Thunderbird (currently 2.0.0.6) on Cyrus servers. The main problem area +I've run into so far is that if I do a long search, it sometimes never +finishes. Maybe I've just been lucky and haven't been ambitious enough +to try doing the kinds of things that would expose IMAP-related bugs in +Thunderbird. + +-- +Rich Wales === Palo Alto, CA, USA === richw@richw.org +http://www.richw.org === http://en.wikipedia.org/wiki/User:Richwales + "The difference between theory and practice is that, in theory, +theory and practice are identical -- whereas in practice, they aren't." + diff --git a/demo/ermis-f/imap-protocol/cur/1600095099.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095099.22893.mbox:2,S new file mode 100644 index 00000000..7442317a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095099.22893.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Oct 9 16:52:35 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Modified UTF-7: justice delayed, but justice + served... ; -) +Message-ID: + +I just spent the past several hours implementing support routines for +Modified UTF-7, with the intention that Alpine will support multinational +IMAP mailbox names. + +I always knew that the design of Modified UTF-7 sucked. It was certainly +well-intentioned. Punycode would have saved the day, but it didn't appear +until years later. + +The road to hell is paved with good intentions. + +Not until today have I fully comprehended the sheer implementation +insanity and hideous design of Modified UTF-7. I shudder to think of all +the people who have beaten their heads against a wall in implementing +Modified UTF-7. + +To those of you with dents in your wall: I'm sorry. As ot today, there's +a head-shaped dent my wall too. You've been avenged... ;-) + +This has been a learning experience for me. I feel that we need to push +ahead on UTF-8 mailbox names sooner rather than later. I feel that it is +far more important for the i18n document to make UTF-8 mailbox names +possible than setting the language for error messages or translating +namespaces. The latter two are really l10n issues and belong in a +separate IMAP-L10N document. + +More specifically, I would move Section 3 of imap-i18n to a new imap-l10n, +and upgrade the former section 5 to be a full mechanism rather than a +discussion. I suggest that the former section 5.1 of imap-i18n deprecate +the LOGIN command entirely, and highlight that SASL names are Unicode. + +As I suggest above, I feel that section 5.2 of imap-i18n is highly +unsatisfactory for today and needs a real mechanism; the now-expired +draft-ietf-eai-imap-utf8-01.txt was an option although I would prefer a +simplified mechanism. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22595.mbox:2,S new file mode 100644 index 00000000..7cd14947 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22595.mbox:2,S @@ -0,0 +1,131 @@ +MBOX-Line: From kmansoft at gmail.com Wed Mar 25 12:00:37 2015 +To: imap-protocol@u.washington.edu +From: Kostya Vasilyev +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: +References: + + +Message-ID: + +[ With a new apology to list members who'd prefer not seeing any Gmail +specific stuff ] + +Here is another case of Gmail and flags being weird. + +Hoping it gets fixed too. + +A message already has \Answered and \Seen, trying to add \Flagged. + +Folder was selected with CONDSTORE. + +New state reported without \Answered first (wrong), then with it (right), +and the MODSEQ is the same (which is also wrong). + +21:54:31.077 [IMAP.5800] Sending: kman25 UID STORE 196290 +FLAGS (\Flagged) +21:54:31.672 [IMAP_RAW.5800] Data is <167>: +21:54:31.672 * 20927 FETCH (FLAGS (\Flagged \Seen) MODSEQ (20736711) UID +196290) +21:54:31.672 * 20927 FETCH (UID 196290 MODSEQ (20736711) FLAGS (\Answered +\Flagged \Seen)) +21:54:31.672 kman25 OK Success + +-- K + +2015-03-25 19:17 GMT+03:00 Kostya Vasilyev : + +> Thank you Brandon. +> +> Any way for me or other mail app developers to keep up on how it goes from +> there? +> +> Scenario involving IDLE -- what I saved for later in my original message +> -- looks like this: +> +> Worker connection doing +\Seen: +> 01:45:58.791: [IMAP.4580] Sending: kman12 UID STORE 196235 +FLAGS (\Seen) +> 01:45:59.442: [IMAP_RAW.4580] Data is <98>: +> 01:45:59.442: * 20885 FETCH (FLAGS (\Seen) UID 196235) +> 01:45:59.442: * 20885 FETCH (UID 196235 FLAGS ()) +> 01:45:59.442: kman12 OK Success +> +> Separate IDLE connection (or conceivably, different device), no \Seen: +> +> 01:45:59.977: [IMAP.4572] Data is <37>: +> 01:45:59.977: * 20885 FETCH (UID 196235 FLAGS ()) +> +> Worker connection again: +> +> 01:46:05.046: [IMAP.4580] Sending: kman15 UID STORE 196235 +FLAGS +> (\Answered) +> +> IDLE connection again, while above command is still executing: no \Seen +> and no \Answered. That's the only data ever received there. So it only get +> data that's obsolete, and then nothing more on that message: +> +> 01:46:05.890: [IMAP.4572] Data is <34>: +> 01:46:05.890: * 20885 FETCH (UID 196235 FLAGS () +> +> Worker connection, command finally done, obsolete state of flags as well: +> +> 01:46:05.896: [IMAP_RAW.4580] Data is <108>: +> 01:46:05.896: * 20885 FETCH (FLAGS (\Answered \Seen) UID 196235) +> 01:46:05.896: * 20885 FETCH (UID 196235 FLAGS ()) +> 01:46:05.896: kman15 OK Success +> +> And as a sanity check, same issue is also exhibited in Trojita (Linux +> desktop). +> +> 1 - removing "star" from a message, message in the UI stays "starred": +> +> 18:15:27.666 >>> y105 UID STORE 196275 -FLAGS (\Flagged)?? +> 18:15:27.830 <<< y104 OK IDLE terminated (Success)?? +> 18:15:28.254 <<< * 20916 FETCH (FLAGS (\Seen) MODSEQ (20734317) UID +> 196275)?? +> 18:15:28.254 <<< * 20916 FETCH (UID 196275 MODSEQ (20734310) FLAGS +> (\Flagged \Seen))?? +> 18:15:28.260 <<< y105 OK Success?? +> +> 2 - Opening a freshly received message (same scenario as my original +> message), message in the UI stays unread: +> +> 18:16:31.950 >>> y109 UID STORE 196276 +FLAGS (\Seen)?? +> 18:16:31.950 >>> y110 UID FETCH 196276 (BODY.PEEK[1])?? +> 18:16:32.652 <<< * 20917 FETCH (FLAGS (\Seen) MODSEQ (20734373) UID +> 196276)?? +> 18:16:32.652 <<< * 20917 FETCH (UID 196276 MODSEQ (20734328) FLAGS ())?? +> 18:16:32.657 <<< y109 OK Success?? +> 18:16:32.657 Imap::Mailbox::UpdateFlagsTask Completed +> 18:16:32.663 <<< * 20917 FETCH (UID 196276 MODSEQ (20734328) BODY[1] +> {13060}??PGRpdj6aPC9kaXY+PGRpdj48ZGl2PjxkaXYgc3R5bGU9ImNvbG9yOmJsYWNrOyI+PGRpdiBzdHls??ZT0iY29sb3I6YmxhY2s7Ij48cCBzdHlsZT0iY29sb3I6YmxhY2s7Zm9udC1za +> (+ 12924 more bytes) +> 18:16:32.663 <<< y110 OK Success?? +> +> Trojita uses CONDSTORE, so it should be possible to filter responses and +> take the one with the largest MODSEQ, but... +> +> ... I've already tried that in my app, and it doesn't help with wrong data +> on IDLE connections, and also doesn't help when you have multiple devices. +> +> -- K +> +> +> 2015-03-25 18:43 GMT+03:00 Brandon Long : +> +>> I'll file a bug +>> On Mar 25, 2015 7:55 AM, "Kostya Vasilyev" wrote: +>> +>>> Hi, +>>> +>>> I apologize for a Gmail specific message, but for lack of a better +>>> place... +>>> +>>> Recently I've started seeing strange stuff with message flags, the Gmail +>>> IMAP server returns out of date information on STORE +FLAGS and IDLE +>>> connections. +>>> +>> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22743.mbox:2,S new file mode 100644 index 00000000..9388432c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22743.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From brong at fastmail.fm Sat Mar 24 20:49:47 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <74F79429-15F8-44C1-9514-BAF4AFDD2BBF@orthanc.ca> +References: <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <20897.1332624350.275209@puncture> + <206DC161-B889-4D0F-A99D-657252229FF5@iki.fi> + <20897.1332625246.404702@puncture> + <20120324222321.GA8694@launde.brong.net> + <74F79429-15F8-44C1-9514-BAF4AFDD2BBF@orthanc.ca> +Message-ID: <20120325034947.GA10376@launde.brong.net> + +On Sat, Mar 24, 2012 at 03:25:33PM -0700, Lyndon Nerenberg wrote: +> +> On 2012-03-24, at 3:23 PM, Bron Gondwana wrote: +> +> > Your theory fails to account for cheap shitty NAT devices which think +> > the entire world is HTTP and silently drop the connection after a +> > couple of minutes +> +> If I didn't know any better, I would accuse you of being an old school grumpy internet bastard ;-) + +Heh. This is one that's bitten us a fair bit... we were using TCP level +keepalives, but it chews up battery on iPhones. + +In the end we compromised by turning off the keepalive for our main +hostname, but providing an alternative hostname for people with bad +NAT. The decision about which one to make default was influenced by +a hope that things will converge towards unbroken over time. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22756.mbox:2,S new file mode 100644 index 00000000..7a498b81 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22756.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Mon Nov 14 14:42:47 2011 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321310209.23714.140660998907545@webmail.messagingengine.com> +References: , + <4EC18E1D.10652.EB3C6B5@David.Harris.pmail.gen.nz>, + <1321310209.23714.140660998907545@webmail.messagingengine.com> +Message-ID: <4EC19967.19032.EDFE138@David.Harris.pmail.gen.nz> + +On 14 Nov 2011 at 23:36, Bron Gondwana wrote: + +> > > > SEARCH command if it wants to find it. If there are +> > > > no unseen messages in the mailbox, it is not possible +> > > > to produce a sensible UNSEEN value, so servers MUST +> > > > omit this item. +> > +> > Could I suggest that this might be rendered more simply: +> > +> > "If there are no unseen messages in the mailbox, the UNSEEN +> > response MUST be omitted, otherwise it MUST be sent." +> +> That's really good. You could probably even remove some negatives. Hmm. +> +> If there are any unseen messages in the mailbox, an UNSEEN response must +> be sent, if not it MUST be omitted. +> +> What do you think? + +From where I'm sitting, that appears to nail it. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: +David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +On the menu of a Hungarian restaurant: + "Utmost of chicken." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22772.mbox:2,S new file mode 100644 index 00000000..b8689371 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22772.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From mrc+imap at panda.com Fri May 20 15:23:37 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <98F27C33-0A6C-4320-B983-C4B8EAB9D0A6@iki.fi> +References: <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + <1305883385.10421.294.camel@hurina> + <20110520121957.Horde.chpUaIF5lbhN1rDN6FN3DTA@bigworm.curecanti.org> + <1305918054.10421.369.camel@hurina> + <20110520214340.GA1097@brong.net> + <98F27C33-0A6C-4320-B983-C4B8EAB9D0A6@iki.fi> +Message-ID: + +On Sat, 21 May 2011, Timo Sirainen wrote: +> Hmm. Yeah. I've never really liked that command. Internally in Dovecot I +> have only +flags/keywords, -flags/keywords and "remove all keywords". I +> wonder what the real use cases for STORE FLAGS is? + +Other than removing all flags ("tag STORE n FLAGS ()"), there isn't a use +case. That was not the opinion of a certain individual back in the day. + +Be thankful that we have +FLAGS and -FLAGS. I had to fight a certain +individual who demanded that I remove them. The claim was that there +should only be FLAGS, so the client would know the result rather than +getting it back after the application of +FLAGS/-FLAGS. + +I never found out if the client (which rather quickly faded into oblivion) +he wrote used FLAGS. Certainly everybody else uses +FLAGS/-FLAGS. + +My c-client API doesn't even have an API call for FLAGS. The c-client +based version of imapd implements FLAGS by doing the API equivalent of +-FLAGS for all system flags + keywords, followed by a +FLAGS of the +desired list. I wouldn't be surprised if the back end of other IMAP +servers also lack a "set flags" operator (instead of the more useful "add +flags" and "remove flags"). + +I used FLAGS once, in a tool that had to clear all flags for some reason +that I have thankfully forgotten. I just remember doing it, and thinking +"gee, finally a use for FLAGS". Needless to say, it would have been +better if that tool was inconvenienced than what we have now with every +IMAP server having to do it. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22796.mbox:2,S new file mode 100644 index 00000000..ed92a7bc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22796.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From snowjn at aol.com Fri Oct 22 13:11:09 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Session flags. +In-Reply-To: +References: <4CC1E456.5050208@aol.com> + +Message-ID: <4CC1EFDD.3000606@aol.com> + +Mark Crispin wrote: +> On Fri, 22 Oct 2010, John Snow wrote: +>> Why are session flags useful? Is there a client that makes use of this +>> temporary flag change. +> +> Support you have a mailbox open read-only, either because you have chosen +> to do so, or you don't have write access, or you only have access to one +> flag (e.g., \Deleted in netnews). +> +> If you read a message without using peek, shouldn't \Seen get set and +> show +> in the index? Why not? The spec says that \Seen gets set if you don't +> use peek. +> +> If you reply to a message and set \Answered, shouldn't \Answered get set +> and show up in the index? Why not? +> +> Let's consider a specific use case. I am reading netnews with my IMAP +> client. Why shouldn't the messages that I have read show up as being +> read, and the messages that I have answered show up as being answered? +> +> Session flags guarantee the expected user experience with every IMAP +> client. The user may understand that those flags will be gone +> afterwards, +> but if it is netnews and he deletes all messages, that doesn't matter. +> +So it's only to give read-only access the illusion of full access? That +seems +pretty silly. Read only should mean read only. + +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22807.mbox:2,S new file mode 100644 index 00000000..bb5b7a9a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22807.mbox:2,S @@ -0,0 +1,87 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 09:17:39 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <23852.1276246771.199346@puncture> + +Message-ID: <201006111817.39761.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 17:57:05 Mark Crispin wrote: +> On Fri, 11 Jun 2010, Dave Cridland wrote: +> > Depending on your server design, this is either very easy, or else +> > very hard - of course, since it's optional, it'd seem likely that +> > where it's hard it'd not be supported. +> +> Correct. +> +> Commands in IMAP are atomic; thus this MOVE operation must be atomic. +> It is simply impossible to do an atomic MOVE with many stores. +That's why it's an option, not a requirement. + +> Note that not even a one-file/one-message store (ala maildir) can do MOVE +> atomically. Each file has to be renamed separately. That's not atomic! +In this way COPY is only atomic if destination mailbox is locked, so the only +problem with maildir store is locking two mailboxes simultanously + +> The one type of store that can do an atomic move is a database type store +> where it would be an index update. In that case, you can lock the two +> indices. +And this type of store is getting more popular in large deployments + +> MOVE is a classic example of something that sounds good and useful if you +> have not thought these issues through. I have. It was no oversight that +> there is no MOVE in IMAP. It was a carefully thought-out decision. + +> > One thing that concerns me is that there is no way to undo this +> > operation - traditionally, only EXPUNGE and DELETE have been +> > irrevocable actions in IMAP, this adds one more. +> +> Correct. +> +> > The way to combat this is to make it merely mark \Deleted the +> > original message - except then this eradicates any benefit to the +> > command at all for clients. (Since one could either do MOVE/UID +> > EXPUNGE, or else COPY+STORE/UID EXPUNGE). +> +> And these commands can be pipelined. +> +> > And there has to be very significant advantage for clients, across a +> > wide deployment, for most clients to bother implementing it - right +> > now, I don't see it. +> +> There is no advantage, since clients have to implement both methods. +Correction - desktop clients. Web-based clients can be 'move-only' if are +deployed over servers which support MOVE operation. +Also, the implementation of MOVE method in clients is, in most cases, not a +problem at all. + +> Note that in the one case where you can implement MOVE (see above), there +> is no particular benefit (other than the atomic lock) over pipelining +> because in the database the COPY operation is also an index operation. +Depends on DB design. + +> The case that would benefit from MOVE can't implement MOVE. The whole +> idea of "wow, I can rename my maildir files instead of copying and +> deleting" is fatally flawed, because it is not atomic. It's the same +> problem as RENAME when a hierarchy is involve. +Maildirs can implement move (as an atomic operation) as long as locking two +mailboxes is permitted. +Database-backed designs can implement atomic move easily. + +I don't want to force anyone to implement MOVE extension in their servers, and +I know that probably most popular filesystem-backed servers won't use it. But +the example of AOL (as mentioned by John Snow) shows that there is a need for +this functionality to be standarized so that clients that want to use it won't +need to check IMAP server domain name to figure out if it can use eg. XAOL- +MOVE. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22866.mbox:2,S new file mode 100644 index 00000000..c8487027 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22866.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu Jul 10 17:58:22 2008 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +In-Reply-To: +References: <4876A25B.8010503@verizon.net> + +Message-ID: <4876B02E.3030507@verizon.net> + +Mark Crispin wrote: +>> 3. Is there any definitive list of which servers support which +>> extensions, including how they don't support them correctly (okay, that +>> wasn't about the RFC itself)? +>> +> +> Such a list is ever changing, and listing what servers don't support them correctly is likely to result in considerable hostility aimed at the lister. It's easier to list servers that do things right: UW/Panda, Dovecot, and Cyrus. The author of Dovecot has been quite diligent in producing torture tests for servers, and he and the author of UW/Panda (me) have had a friendly competition in who can fix the problems uncovered first. +> +Pray tell, where might I find this list? + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22871.mbox:2,S new file mode 100644 index 00000000..0b1b3fd9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22871.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From davidr at imap.cc Sun Jun 22 13:38:16 2008 +To: imap-protocol@u.washington.edu +From: David Rauschenbach +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] '+' in counted literal (e.g. {548+}) -- where + from? +In-Reply-To: <08Jun22.132913pdt."58698"@synergy1.parc.xerox.com> +References: <08Jun22.132913pdt."58698"@synergy1.parc.xerox.com> +Message-ID: <485EB838.6010807@imap.cc> + +The RFC 2088 Non-Synchronized Literals extension has what you're looking +for, which is where the grammar that includes that plus is defined. + +UpLib apparently wants to send a literal to the server in a single +request/response, without having to handshake a continuation first, +which doubles the # of round-trips for a given unit of work. + +David + + + +Bill Janssen wrote: +> I find that the Apple Mail tool (version 3.3) is sending my UpLib IMAP +> server counted literals with an odd count. The "number" part of the +> count ends with a "+", as in "{548+}". I don't know what that means, +> or what IMAP extension defines that syntax... +> +> My server advertises LITERAL+, NAMESPACE, UIDPLUS, IDLE. RFC 4466 +> (Collected Extensions to IMAP4 ABNF) says, +> +> literal8 = "~{" number ["+"] "}" CRLF *OCTET +> ;; A string that might contain NULs. +> ;; represents the number of OCTETs +> ;; in the response string. +> ;; The "+" is only allowed when both LITERAL+ and +> ;; BINARY extensions are supported by the server. +> +> It says that the "literal8" syntax was taken from RFC 3516, but +> neither the character "+" nor the string "plus" occurs in RFC 3516, so +> I don't trust either the spec or the attribution in RFC 4466. My server +> in any case doesn't advertise BINARY, and there's no "~" in the count +> being sent by Apple Mail. +> +> Any ideas? +> +> Bill +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22877.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22877.mbox:2,S new file mode 100644 index 00000000..46a1d115 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22877.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From MRC at Washington.EDU Fri Mar 28 11:03:35 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FETCH BODY[n.HEADER] on non-message parts +In-Reply-To: <2121388044.564471206724380652.JavaMail.root@dogfood.zimbra.com> +References: <2121388044.564471206724380652.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Fri, 28 Mar 2008, Dan Karp wrote: +> A zero-length string rather than a NIL? If so, under what conditions +> will FETCH BODY[...] ever return NIL? +> msg-att-static = ... / "BODY" section ["<" number ">"] SP nstring / ... + +IMHO, never. nstring is a syntax rule, thus NIL is defined but is +never actually sent in this case. + +RFC 2180 section 4.1.3 disagrees with me. I disagreed with RFC 2180 +section 4.1.3 then, disagree with it now, and note that multiple clients +crash if they have the misfortune of encountering a server that follows +RFC 2180 section 4.1.3. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22880.mbox:2,S new file mode 100644 index 00000000..35b9e7bd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22880.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Feb 5 00:59:15 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> +Message-ID: <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> + +Bill Janssen writes: +> Is that correct? + +No. LOGIN name password, etc. I would assume that you can see non-ascii +anywhere, and treat strings where only ASCII will appear as the +exceptions. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22883.mbox:2,S new file mode 100644 index 00000000..d91d3630 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22883.mbox:2,S @@ -0,0 +1,111 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jan 9 19:53:27 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: +References: +Message-ID: + +In the example that you quoted, you will notice that lines from the client +are labelled with "C:" and lines from the server are labelled with "S:". +But, in this example, there are some physical lines which are not +labelled. Those are all part of the same line that came from the server, +and the line break that was in the example is not actually in the +protocol. + +I'm not sure what you mean by "the second". Do you mean the response to +the a004 command? That is, indeed, a multiline response, but you will +notice the use of a literal (the "{342}"). + +An IMAP client must read an arbitrarily long line from the server. And by +"arbitrarily long" I mean exactly that; there is no limit. If the line +does not end with a literal size specifier such as {342} that is the end +of the response. If, however, the line ends with such a specifier, then +you must read exactly that number of octets in substitution for the +literal size specifier, THEN more of the line afterwards. + +For example, the two responses + +* 12 FETCH FOO {3} +BAR ZAP {5} +ZOWIE + +and + +* 12 FETCH FOO BAR ZAP ZOWIE + +are exactly equivalent. + +Does this answer your question? + +I would also like to suggest that, instead of implementing a client +library, that you consider using an existing client library for your +application. One such library is my c-client library, part of the UW IMAP +Tookit on + ftp://ftp.cac.washington.edu/mail/imap.tar.Z + +On Thu, 10 Jan 2008, Liam Clarke wrote: +> I'm very new to IMAP, looking to implement a client library and +> somewhat worried by this line in the RFC: +> +>> A client MUST be prepared to accept any server response at all times. This includes server data that was not requested. +> +> For the most part handling of unrequested untagged responses seems to +> be straightforward pattern matching, as the context doesn't really +> matter - but what has me confused and a little worried is one of the +> examples of two FETCH responses in the last section of the RFC +> (apologies for the long c&p): +> +> C: a003 fetch 12 full +> S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" +> RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)" +> "IMAP4rev1 WG mtg summary and minutes" +> (("Terry Gray" NIL "gray" "cac.washington.edu")) +> (("Terry Gray" NIL "gray" "cac.washington.edu")) +> (("Terry Gray" NIL "gray" "cac.washington.edu")) +> ((NIL NIL "imap" "cac.washington.edu")) +> ((NIL NIL "minutes" "CNRI.Reston.VA.US") +> ("John Klensin" NIL "KLENSIN" "MIT.EDU")) NIL NIL +> "") +> BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 +> 92)) +> S: a003 OK FETCH completed +> C: a004 fetch 12 body[header] +> S: * 12 FETCH (BODY[HEADER] {342} +> S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) +> S: From: Terry Gray +> S: Subject: IMAP4rev1 WG mtg summary and minutes +> S: To: imap@cac.washington.edu +> S: cc: minutes@CNRI.Reston.VA.US, John Klensin +> S: Message-Id: +> S: MIME-Version: 1.0 +> S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII +> S: +> S: ) +> S: a004 OK FETCH completed +> +>> From the layout and note that " A long line in this sample is broken +> for editorial clarity." I'm deducing that the server response to a003 +> is all on a single \r\n delimited line, but is the second actually +> split over multiple \r\n delimited lines? +> +> If so, would it be possible for lines from separate fetch responses to +> arrive together? Borrowing trouble from the future, but just got +> worried when I saw that. +> +> Regards, +> +> Liam Clarke-Hutchinson +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22886.mbox:2,S new file mode 100644 index 00000000..be64e497 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22886.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From jadermf at yahoo.com.br Sat Dec 1 14:16:39 2007 +To: imap-protocol@u.washington.edu +From: Jader Augusto +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Get message path +Message-ID: <182630.73203.qm@web55706.mail.re3.yahoo.com> + +Hi all, +It is possible to get the system full path (linux) using the imap protocol? if so, how can i do that? Thanks in advance. + +Jader + + + + + Abra sua conta no Yahoo! Mail, o ?nico sem limite de espa?o para armazenamento! +http://br.mail.yahoo.com/ +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22889.mbox:2,S new file mode 100644 index 00000000..29298309 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22889.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From fdiaz at salvador.edu.ar Mon Nov 12 10:31:32 2007 +To: imap-protocol@u.washington.edu +From: "USAL - DIAZ VELEZ, EDUARDO FABIAN" +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Configure IMAP +Message-ID: <20071112182621.1C8542F2B@sunfire.salvador.edu.ar> + +Hello, + +How do I configure the IMAP and POP servers on UNIX for read message from: + +ex. + +/var/mail/a/d/adriana.blase +or +/var/mail/g/u/guillermo.white + +Thank, + +Fabian + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22893.mbox:2,S new file mode 100644 index 00000000..0439fd86 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22893.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From dkarp at zimbra.com Wed Oct 24 05:34:05 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] STATUS on a \NoSelect mailbox +Message-ID: <1289589251.146651193229245957.JavaMail.root@dogfood.zimbra.com> + +We've always gone on the assumption that you should be able to ask for STATUS on any mailbox returned in a LIST response. The new Gmail IMAP implementation doesn't seem to play that way -- they have a base \NoSelect mailbox that's returned from LIST but that returns NO on STATUS: + + A3 LIST "" "*" + * LIST () "/" "INBOX" + * LIST () "/" "Trash" + * LIST (\Noselect) "/" "[Gmail]" + * LIST () "/" "[Gmail]/All Mail" + * LIST () "/" "[Gmail]/Drafts" + * LIST () "/" "[Gmail]/Sent Mail" + * LIST () "/" "[Gmail]/Spam" + * LIST () "/" "[Gmail]/Starred" + * LIST () "/" "[Gmail]/Trash" + A3 OK Success + + A6 STATUS [Gmail] (UIDVALIDITY) + A6 NO Invalid folder: [Gmail] (Failure) + +Is this acceptable server behavior? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095100.22896.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095100.22896.mbox:2,S new file mode 100644 index 00000000..de09a6a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095100.22896.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From richw at richw.org Tue Sep 18 11:50:28 2007 +To: imap-protocol@u.washington.edu +From: Rich Wales +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Shared group mailboxes and IMAP +Message-ID: <46F01DF4.2060804@rde-richw-3.stanford.edu> + +My school offers a "group e-mail account" facility to allow groups of +two or more people (e.g., office staff, or a professor and his/her AA) +to share access to a mailbox on a Cyrus IMAP server. + +Some aspects of the implementation of this group account facility are +painful. I'd like to ask some questions in order to get an idea of what +sorts of improvements could be proposed (and hopefully implemented by +our campus IT people, or maybe implemented in my department if we can't +get a better campus-wide solution). + +The main snag, in my view, has to do with the authentication scheme for +accessing group accounts. Rather than have a separate password for the +group account (which would have to be known by all accessors, would need +to be changed whenever any accessor left, and is essentially dismissed +out of hand as an unacceptable security flaw), each user logs in to the +group account IMAP server using his/her own individual ID (user name) +and password. A separate, web-based utility exists to allow owners of +a group account to manipulate the account's ACL info and control who can +access the account. + +The group accounts are set up on the IMAP server under a separate name +hierarchy (e.g., an account named "ourgroupaccount" is filed on the IMAP +server under group.ourgroupaccount). Since users are authenticating to +the server via their own user names (e.g., I would log in as "richw", +not as "ourgroupaccount"), it doesn't appear to be possible to make the +group accounts live in the regular "user" namespace -- the IMAP server +wouldn't understand that I (having authenticated as "richw") want to +see user.ourgroupaccount as the account's inbox (and not user.richw). + +And since the group mailbox isn't named "user.XXX" (where "XXX" is the +user's individual account name which was used for authentication), some +mail clients have a really hard time working with group accounts in a +seamless fashion. In Eudora and Thunderbird, for example, the user is +confronted with an "Inbox" on the group account server that really isn't +used for anything at all -- and if a user is set up to access more than +one group account, all the group mailboxes show up as separate entities +gathered under a single account. Problems also exist with checking for +the arrival of new mail in a group account -- again, because the group +account's inbox is not in the normal location. Curiously, one mail +client which does seem to do a half-decent job of presenting group +accounts as separate entities that look the same as the user's individual +Inbox is Outlook (!). + +I imagine that if there were some way for a mail client to tell the IMAP +server that the account user name was "ourgroupaccount", but that the +user would be logging in as a different user (e.g., "richw") and with +such-and-so password, it might be possible to put the group mailboxes +in the "user" namespace on the server, and things would be much cleaner. +But I'm not aware of any non-kludgy way to do such a thing. + +I suppose one possibility would be to tell people to use the group +account name as the user name -- and then use a "group password" +consisting of their individual ID, a colon or other punctuation mark, +and their own individual account password -- something like this: + + User name: ourgroupaccount + Password: richw:myownindividualpassword + +and then write a SASL mechanism to deal with this composite user name / +password thingy. But this might very possibly be too complicated and +confusing for some users to deal with. + +Has anyone else out there dealt with group accounts of this type? How +do you handle the authentication issue (allowing multiple users to log +in to a single group account, each using his/her own individual user +ID and password)? I'd be very interested in hearing any suggestions. + +-- +Rich Wales === Palo Alto, CA, USA === richw@richw.org +http://www.richw.org === http://en.wikipedia.org/wiki/User:Richwales + "The difference between theory and practice is that, in theory, +theory and practice are identical -- whereas in practice, they aren't." + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22595.mbox:2,S new file mode 100644 index 00000000..e0b1a298 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22595.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From slusarz at curecanti.org Wed Mar 25 12:21:19 2015 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: +References: + + + +Message-ID: <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> + +Quoting Kostya Vasilyev : + +> New state reported without \Answered first (wrong), then with it (right), +> and the MODSEQ is the same (which is also wrong). +> +> 21:54:31.077 [IMAP.5800] Sending: kman25 UID STORE 196290 +FLAGS (\Flagged) +> 21:54:31.672 [IMAP_RAW.5800] Data is <167>: +> 21:54:31.672 * 20927 FETCH (FLAGS (\Flagged \Seen) MODSEQ (20736711) UID +> 196290) +> 21:54:31.672 * 20927 FETCH (UID 196290 MODSEQ (20736711) FLAGS (\Answered +> \Flagged \Seen)) +> 21:54:31.672 kman25 OK Success + +This is inefficient. But it is perfectly acceptable IMAP. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22743.mbox:2,S new file mode 100644 index 00000000..22a32cf3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22743.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From dave at cridland.net Sun Mar 25 04:37:32 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] IDLE + inbox file +In-Reply-To: <20120324222321.GA8694@launde.brong.net> +References: <1234979693.29240.1770.camel@timo-desktop> + + <1234981810.29240.1785.camel@timo-desktop> + <53E653CF-EDA4-4B4B-8B1E-E1EAF6C29B36@imap.cc> + + + + <20897.1332624350.275209@puncture> + <206DC161-B889-4D0F-A99D-657252229FF5@iki.fi> + <20897.1332625246.404702@puncture> + <20120324222321.GA8694@launde.brong.net> +Message-ID: <20897.1332675452.945176@puncture> + +On Sat Mar 24 22:23:21 2012, Bron Gondwana wrote: +> On Sat, Mar 24, 2012 at 09:40:46PM +0000, Dave Cridland wrote: +> > On Sat Mar 24 21:32:43 2012, Timo Sirainen wrote: +> > >Can client developers really do it much better? I guess desktop +> > >vs. mobile developers can do things differently if they wanted, +> > >but is it any more realistic for them than for server developers? +> > > +> > > +> > Yes. +> > +> > Mobile developers tend to know they're on a mobile. +> +> Your theory fails to account for cheap shitty NAT devices which +> think +> the entire world is HTTP and silently drop the connection after a +> couple of minutes, without even so much as an RST, leaving innocent +> desktop clients with a broken connection and no indication to the +> user +> that they are no longer getting updates. + +No, I do know such things exist, but they're increasingly rare in the +mobile world, and I strongly suspect they're better dealt with by the +client even in the crappy home router case. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22756.mbox:2,S new file mode 100644 index 00000000..c1da2b15 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22756.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Nov 14 14:46:25 2011 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321310209.23714.140660998907545@webmail.messagingengine.com> +References: , + <20111114205919.GA5573@brong.net>, + <20111114210927.GA6194@brong.net> + <4EC18E1D.10652.EB3C6B5@David.Harris.pmail.gen.nz> + <1321310209.23714.140660998907545@webmail.messagingengine.com> +Message-ID: + +> If there are any unseen messages in the mailbox, an UNSEEN response must +> be sent, if not it MUST be omitted. + +Ship it. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22772.mbox:2,S new file mode 100644 index 00000000..cbe38815 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22772.mbox:2,S @@ -0,0 +1,106 @@ +MBOX-Line: From slusarz at curecanti.org Mon May 23 22:30:28 2011 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Thoughts on keyword improvements/enhancements +In-Reply-To: <1305918054.10421.369.camel@hurina> +References: <20110518011645.Horde.6sTkboF5lbhN03Jd3XNndCA@bigworm.curecanti.org> + + + <20110518210716.GA12636@brong.net> + + <20110519045851.GA23466@brong.net> + + <20110519220352.GA12141@brong.net> + + <20110520002607.Horde.lf1bSoF5lbhN1gl-aoNHDLA@bigworm.curecanti.org> + <1305883385.10421.294.camel@hurina> + <20110520121957.Horde.chpUaIF5lbhN1rDN6FN3DTA@bigworm.curecanti.org> + <1305918054.10421.369.camel@hurina> +Message-ID: <20110523233028.Horde.kOMWSIF5lbhN20J0y8-UYEA@bigworm.curecanti.org> + +Quoting Timo Sirainen : + +> On Fri, 2011-05-20 at 12:19 -0600, Michael M Slusarz wrote: +> +>> With this solution, I would disagree however with the user of a '#' or +>> other prefix to distinguish "new utf-8 keywords" from "old RFC 3501 +>> keywords". I think the assumption should rather be that if a keyword +>> is provided in a STORE/APPEND command as an ASTRING, the intent is +>> that string is a human readable representation. +>> +>> E.g., with these series of client commands: +>> +>> TAG1 ENABLE UTF8-KEYWORDS +>> [...] +>> TAG2 STORE 1 +FLAGS foo +>> [...] +>> TAG3 STORE 2 +FLAGS "bar" +>> +>> Here, TAG 2 is taken to be a regular 3501 keyword. It is not +>> necessarily intended to be the label for that message. A client is +>> free to do keyword -> label translation on this value, and can choose +>> to not display this keyword if it doesn't already know about it. +>> +>> Conversely, TAG3 is intended to be the full human readable label. A +>> client should not do translation, and SHOULD directly display this +>> label to the user. +> +> ASTRING means atom or string. So what you're really saying is that atoms +> should be treated as old keywords, while strings should be treated as +> new keywords. I think many IMAP parsers hide that distinction, and such +> distinction isn't all that clear to humans either. If you want to keep +> them separated, '#' or similar rarely used prefix would work basically +> the same. + +I am really against the idea of using something like '#' as a prefix, +simply because, however rare it may be, it is still part of a valid +keyword that might already be used by somebody, somewhere. Example: +'#1todolist'. + +What about declaring as a system flag instead? In other words, define +'\#' as the prefix for all labels: "\#Foo Bar". This would be +guaranteed not to conflict with any existing keyword (or flag). I +realize that the original RFC 3501 spec didn't really intend for +system flags to be used as a pseudo-namespace for a whole series of +user defined keywords... but then again, the 3501 spec didn't allow +for non-atoms in keywords either, which is the whole reason we are +having this discussion in the first place. + +I wouldn't think that parsing as a system flag (\#) vs. a keyword (#) +would be any different - both require scanning the prefix. The only +place where there might be a bit of problems is server-side: namely, +if the code branches based on whether a flag is system or not. But +that doesn't seem like anything that would not be able to be worked +around. + +>> I still believe the list of utf8-keywords/labels in a mailbox should +>> be something that is announced by the server. For example, a LABELS +>> untagged response code could be used to provide this information. E.g.: +>> +>> TAG1 SELECT INBOX +>> * OK [LABELS "Foo 1" "Bar 2" {7} +>> ? label +>> ] +>> * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] +>> [...] +> +> This would get solved automatically if there was no keyword/label +> separation: +> +> * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft "#Foo +> 1" "#Bar 2" {9} +> #? label \*)] +> +> Not having an explicit keyword/label separation would make this easy for +> servers to implement it (and clients too, I'd think!). All I'd have to +> do is remove some restrictions and add a bit of code to show a keyword +> only if it's a valid atom or if utf8-keywords is ENABLEd. + +I would agree that if we had a namespace that provides non-conflicting +label names from keywords, that using just PERMANENTFLAGS would be +acceptable. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22796.mbox:2,S new file mode 100644 index 00000000..6aba47a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22796.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mrc+imap at panda.com Fri Oct 22 13:28:06 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Session flags. +In-Reply-To: <4CC1EFDD.3000606@aol.com> +References: <4CC1E456.5050208@aol.com> + + <4CC1EFDD.3000606@aol.com> +Message-ID: + +On Fri, 22 Oct 2010, John Snow wrote: +> So it's only to give read-only access the illusion of full access? +> That seems pretty silly. Read only should mean read only. + +Thank you for sharing your opinion of my design. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22807.mbox:2,S new file mode 100644 index 00000000..92b6df40 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22807.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 09:26:49 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <23852.1276246771.199346@puncture> + +Message-ID: <201006111826.49492.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 17:57:05 Mark Crispin wrote: +> On Fri, 11 Jun 2010, Dave Cridland wrote: +> > Depending on your server design, this is either very easy, or else +> > very hard - of course, since it's optional, it'd seem likely that +> > where it's hard it'd not be supported. +> +> Correct. +> +> Commands in IMAP are atomic; thus this MOVE operation must be atomic. +> It is simply impossible to do an atomic MOVE with many stores. +> +> Note that not even a one-file/one-message store (ala maildir) can do MOVE +> atomically. Each file has to be renamed separately. That's not atomic! +Also, I've originally put a note about atomicity of MOVE operation in this +draft, but commented it out as too controversial. As it seems the lack of this +note is controversial ;) +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22866.mbox:2,S new file mode 100644 index 00000000..d89ef9b9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22866.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From kroshka at atypon.com Thu Jul 10 18:09:19 2008 +To: imap-protocol@u.washington.edu +From: Jeroen van Aart +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +In-Reply-To: <4876B02E.3030507@verizon.net> +References: <4876A25B.8010503@verizon.net> + <4876B02E.3030507@verizon.net> +Message-ID: <4876B2BF.4030406@atypon.com> + +Joshua Cranmer wrote: +> Mark Crispin wrote: + +>> Such a list is ever changing, and listing what servers don't support +>> them correctly is likely to result in considerable hostility aimed at + +> Pray tell, where might I find this list? + +I think what he meant is that by virtue of it being ever changing and +possibly causing hostility such a list doesn't really exist in practice. :-) + +As a side note, I see what once was uw-imapd has gotten a name change. I +am happy to see development is continuing. + +Best regards, +Jeroen + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22871.mbox:2,S new file mode 100644 index 00000000..59764c36 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22871.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From janssen at parc.com Sun Jun 22 13:54:18 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] '+' in counted literal (e.g. {548+}) -- where + from? +In-Reply-To: <485EB838.6010807@imap.cc> +References: <08Jun22.132913pdt."58698"@synergy1.parc.xerox.com> + <485EB838.6010807@imap.cc> +Message-ID: <08Jun22.135423pdt."58698"@synergy1.parc.xerox.com> + +> The RFC 2088 Non-Synchronized Literals extension has what you're looking +> for, which is where the grammar that includes that plus is defined. +> +> UpLib apparently wants to send a literal to the server in a single +> request/response, without having to handshake a continuation first, +> which doubles the # of round-trips for a given unit of work. + +UpLib is the server, but you're otherwise exactly right -- this is a +bug in my code, not Apple's. Thanks. I should know this; this is +standard LITERAL+. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22880.mbox:2,S new file mode 100644 index 00000000..70d81668 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22880.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From janssen at parc.com Tue Feb 5 09:10:37 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> +Message-ID: <08Feb5.091040pst."58696"@synergy1.parc.xerox.com> + +> No. LOGIN name password, etc. + +Forgive me for being dense, but I don't see how this could happen, +according to the protocol spec. + +In section 1.2: + + Characters are 7-bit US-ASCII unless otherwise specified. Other + character sets are indicated using a "CHARSET", as described in + [MIME-IMT] and defined in [CHARSET]. CHARSETs have important + additional semantics in addition to defining character set; refer to + these documents for more detail. + +And there's no "CHARSET" parameter anywhere in the LOGIN command. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22883.mbox:2,S new file mode 100644 index 00000000..ab197a80 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22883.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From ams at oryx.com Wed Jan 9 20:02:09 2008 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Re: Question on FETCH example in RFC3501 +In-Reply-To: +References: +Message-ID: <20080110040209.GA25060@toroid.org> + +Hi Liam. + +At 2008-01-10 16:38:00 +1300, ml.cyresse@gmail.com wrote: +> +> C: a004 fetch 12 body[header] +> S: * 12 FETCH (BODY[HEADER] {342} +> S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) +> S: From: Terry Gray +> S: Subject: IMAP4rev1 WG mtg summary and minutes +> S: To: imap@cac.washington.edu +> S: cc: minutes@CNRI.Reston.VA.US, John Klensin +> S: Message-Id: +> S: MIME-Version: 1.0 +> S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII +> S: +> S: ) +> S: a004 OK FETCH completed + +> [...] but is the second actually split over multiple \r\n delimited +> lines? + +Not exactly. It contains a literal that contains multiple CRLFs. + +> If so, would it be possible for lines from separate fetch responses to +> arrive together? + +No. This response: + +> S: * 12 FETCH (BODY[HEADER] {342} + +promises to send you 342 bytes of literal data immediately following the +CRLF (see RFC 3501 ?4.3 for an explanation of literals). + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22886.mbox:2,S new file mode 100644 index 00000000..a40a0f88 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22886.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sat Dec 1 14:52:40 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] add/delete message header +In-Reply-To: <816806.56559.qm@web55701.mail.re3.yahoo.com> +References: <816806.56559.qm@web55701.mail.re3.yahoo.com> +Message-ID: + +On Sat, 1 Dec 2007, Jader Augusto wrote: +> It is possible to add/delete/change any header information in a message +> using imap protocol? + +Simple answer: no + +More complex answer: message text data is static. You can download the +message using FETCH and upload a modified copy with APPEND, then delete +the original. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. +-------------- next part -------------- +_______________________________________________ + +Imap-protocol mailing list + +Imap-protocol@u.washington.edu + +https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22889.mbox:2,S new file mode 100644 index 00000000..b9757ef7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22889.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From dkarp at zimbra.com Fri Nov 16 09:44:16 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: <406865126.202431195235043836.JavaMail.root@dogfood.zimbra.com> +Message-ID: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> + +If there are 50 messages in the mailbox and a client requests + + A001 FETCH 52 (FLAGS) + +then what are the acceptable server responses? I'm currently +treating it as an example of RFC 2180 section 4.1.2 and returning + + A001 NO Some of the requested messages no longer exist + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22893.mbox:2,S new file mode 100644 index 00000000..62e56305 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22893.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Oct 24 09:50:19 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] STATUS on a \NoSelect mailbox +In-Reply-To: <1289589251.146651193229245957.JavaMail.root@dogfood.zimbra.com> +References: <1289589251.146651193229245957.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +UW imapd has always returned NO if you attempt a STATUS command on a +\NoSelect name. Thus, I consider such behavior acceptable and correct. + +The idea of "\NoSelect mailbox" is the problem; that's an oxymoron. +IMHO, a mailbox, by definition, does not have \NoSelect associated with +its name. + +Following that reasoning, LIST does not return mailboxes, but instead +returns names; and that the names that do not have \NoSelect are +mailboxes. + +On Wed, 24 Oct 2007, Dan Karp wrote: +> We've always gone on the assumption that you should be able to ask for +> STATUS on any mailbox returned in a LIST response. The new Gmail IMAP +> implementation doesn't seem to play that way -- they have a base +> \NoSelect mailbox that's returned from LIST but that returns NO on +> STATUS: +> +> A3 LIST "" "*" +> * LIST () "/" "INBOX" +> * LIST () "/" "Trash" +> * LIST (\Noselect) "/" "[Gmail]" +> * LIST () "/" "[Gmail]/All Mail" +> * LIST () "/" "[Gmail]/Drafts" +> * LIST () "/" "[Gmail]/Sent Mail" +> * LIST () "/" "[Gmail]/Spam" +> * LIST () "/" "[Gmail]/Starred" +> * LIST () "/" "[Gmail]/Trash" +> A3 OK Success +> +> A6 STATUS [Gmail] (UIDVALIDITY) +> A6 NO Invalid folder: [Gmail] (Failure) +> +> Is this acceptable server behavior? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22896.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22896.mbox:2,S new file mode 100644 index 00000000..cd51ac03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22896.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From joel at panacea.null.org Tue Sep 18 21:27:28 2007 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Shared group mailboxes and IMAP +In-Reply-To: <46F01DF4.2060804@rde-richw-3.stanford.edu> +References: <46F01DF4.2060804@rde-richw-3.stanford.edu> +Message-ID: <11850.1190176048@succubus.panacea.null.org> + +> My school offers a "group e-mail account" facility to allow groups of +> two or more people (e.g., office staff, or a professor and his/her AA) +> to share access to a mailbox on a Cyrus IMAP server. + +Why do you have a shared account when all you want is a shared mailbox? + +I'm assuming by "account" you mean authentication details for IMAP. An +email address is something quite different, and can easily be aliased. + +> The main snag, in my view, has to do with the authentication scheme for +> accessing group accounts. Rather than have a separate password for the +> group account (which would have to be known by all accessors, would need +> to be changed whenever any accessor left, and is essentially dismissed +> out of hand as an unacceptable security flaw), each user logs in to the +> group account IMAP server using his/her own individual ID (user name) +> and password. + +IMHO a single set of authentication credentials for a group of people is +never the right solution. There's always a better way. + +> A separate, web-based utility exists to allow owners of +> a group account to manipulate the account's ACL info and control who can +> access the account. + +Do you mean access to the mailbox(es) here? Access to the account is +surely available to anyone who has the password. + +> The group accounts are set up on the IMAP server under a separate name +> hierarchy (e.g., an account named "ourgroupaccount" is filed on the IMAP +> server under group.ourgroupaccount). Since users are authenticating to +> the server via their own user names (e.g., I would log in as "richw", +> not as "ourgroupaccount"), it doesn't appear to be possible to make the +> group accounts live in the regular "user" namespace -- the IMAP server +> wouldn't understand that I (having authenticated as "richw") want to +> see user.ourgroupaccount as the account's inbox (and not user.richw). + +I really think you're getting "account" and "mailbox" very confused. + +So far as I can tell you don't need a group account at all. + +> I imagine that if there were some way for a mail client to tell the IMAP +> server that the account user name was "ourgroupaccount", but that the +> user would be logging in as a different user (e.g., "richw") and with +> such-and-so password, it might be possible to put the group mailboxes +> in the "user" namespace on the server, and things would be much cleaner. +> But I'm not aware of any non-kludgy way to do such a thing. + +Exactly how you make a mailbox accessible to a group of users is +server implementation dependent. What server are you using? + +For an example (the UW server in this case) you might like to read + +http://www.washington.edu/imap/IMAP-FAQs/index.html#4.6 + +Cheers, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095101.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095101.22899.mbox:2,S new file mode 100644 index 00000000..04c8c118 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095101.22899.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From dkarp at zimbra.com Thu Aug 2 10:52:10 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] NAMESPACE and LIST/LSUB wildcards +Message-ID: <1274724802.313211186077130557.JavaMail.root@dogfood.zimbra.com> + +If an IMAP server supports NAMESPACE and defines "other users' namespaces" and/or "shared namespaces" prefixes, should mailboxes beneath these prefix roots be included or omitted from wildcarded LIST/LSUB requests? + +For example, if + + C: A001 NAMESPACE + S: * NAMESPACE (("" "/")) NIL (("Public Folders/" "/")) + S: A001 OK NAMESPACE command completed + +and + + C: A002 SUBSCRIBE "Public Folders/client1" + S: A002 OK SUBSCRIBE command completed + +then should "Public Folders/client1" be returned in either of these? + + C: A003 LIST "" "*" + + C: A004 LSUB "" "*" + +My guess is that the answer is "no", but I'm just extrapolating from this bit in RFC 2342 section 5: + + A client can construct a LIST command by appending a "%" to the Other + Users' Namespace prefix to discover the Personal Namespaces of other + users that are available to the currently authenticated user. + + A server MAY return a LIST response containing only the names of + users that have explicitly granted access to the user in question. + + Alternatively, a server MAY return NO to such a LIST command, + requiring that a user name be included with the Other Users' + Namespace prefix before listing any other user's mailboxes. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22595.mbox:2,S new file mode 100644 index 00000000..fcce2df0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22595.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Mar 25 12:30:50 2015 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> +Message-ID: <55130CEA.7050608@isode.com> + +Hi Michael, + +On 25/03/2015 19:21, Michael M Slusarz wrote: +> Quoting Kostya Vasilyev : +> +>> New state reported without \Answered first (wrong), then with it +>> (right), +>> and the MODSEQ is the same (which is also wrong). +>> +>> 21:54:31.077 [IMAP.5800] Sending: kman25 UID STORE 196290 +FLAGS +>> (\Flagged) +>> 21:54:31.672 [IMAP_RAW.5800] Data is <167>: +>> 21:54:31.672 * 20927 FETCH (FLAGS (\Flagged \Seen) MODSEQ (20736711) +>> UID +>> 196290) +>> 21:54:31.672 * 20927 FETCH (UID 196290 MODSEQ (20736711) FLAGS +>> (\Answered +>> \Flagged \Seen)) +>> 21:54:31.672 kman25 OK Success +> This is inefficient. But it is perfectly acceptable IMAP. +I think this is not correct, because the two responses should use 2 +different MODSEQs, if they return different set of flags. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22743.mbox:2,S new file mode 100644 index 00000000..da6015d9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22743.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From johngalton217 at gmail.com Tue Mar 27 14:49:55 2012 +To: imap-protocol@u.washington.edu +From: John Galton +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] using a global CONDSTORE mod-sequence for + HIGHESTMODSEQ +Message-ID: + +The RFC states that the mod-sequence represents the highest modification to +a given mailbox. If a mailstore only stored a global (account-wide, across +all mailboxes) mod-sequence, could one simply return the current value of +such a global mod-sequence when the HIGHESTMODSEQ is called for +(SELECT/EXAMINE/STATUS)? + +Obviously using this value would trigger the client to followup with a +request to find out what has changed since it last sync'd, even if nothing +has changed. Should a client be expected to behave reasonably if it's +FETCH CHANGEDSINCE or SEARCH MODSEQ returned items where the highest +mod-sequence was less than the advertised HIGHESTMODSEQ or worse, there +were no results at all when some were expected? + +Thanks, +John +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22756.mbox:2,S new file mode 100644 index 00000000..19e384d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22756.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From brong at fastmail.fm Mon Nov 14 15:03:18 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: , + <20111114205919.GA5573@brong.net>, <20111114210927.GA6194@brong.net> + <4EC18E1D.10652.EB3C6B5@David.Harris.pmail.gen.nz> + <1321310209.23714.140660998907545@webmail.messagingengine.com> + +Message-ID: <1321311798.30750.140660998918417@webmail.messagingengine.com> + + + +On Monday, November 14, 2011 2:46 PM, "Lyndon Nerenberg" wrote: +> > If there are any unseen messages in the mailbox, an UNSEEN response must +> > be sent, if not it MUST be omitted. +> +> Ship it. + +Not tonight... er, tomorrow. I gotta sleep. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22772.mbox:2,S new file mode 100644 index 00000000..0a8a88ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22772.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From lyndon at orthanc.ca Tue May 24 15:08:18 2011 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] Any Evolution IMAP devs here? +Message-ID: + +If there is anyone from the Evolution dev team (with commit priv's) on the +list, would you please contact me offline? Thanks. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22796.mbox:2,S new file mode 100644 index 00000000..337b44bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22796.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From snowjn at aol.com Fri Oct 22 14:48:19 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Session flags. +In-Reply-To: +References: <4CC1E456.5050208@aol.com> + + <4CC1EFDD.3000606@aol.com> + +Message-ID: <4CC206A3.8010909@aol.com> + +You're welcome, though no attack was intended. It is my opinion. + +But what about my question? + +snow. + + +Mark Crispin wrote: +> On Fri, 22 Oct 2010, John Snow wrote: +>> So it's only to give read-only access the illusion of full access? +>> That seems pretty silly. Read only should mean read only. +> +> Thank you for sharing your opinion of my design. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22807.mbox:2,S new file mode 100644 index 00000000..270653e5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22807.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 09:45:18 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + +Message-ID: <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + +On pe, 2010-06-11 at 09:12 -0700, Mark Crispin wrote: +> On Fri, 11 Jun 2010, Timo Sirainen wrote: +> > As long as there is no requirement for MOVE to be atomic (i.e. it would +> > be allowed to emulate it with copy+expunge), there's no need to lock +> > multiple mailboxes simultaneously. +> +> If MOVE is not atomic, then what is its point? + +1) Allowing user to move messages between mailboxes in situations where +a COPY would bring user over quota. + +2) Simplify the operation for clients, also drop one round trip wait. I +guess this mainly would benefit some custom webmail developers that +develop against a specific server.. + +3) Possibly improve performance with some server implementations. + +Are these good enough reasons for the MOVE command? I don't know. Maybe +1) is helpful sometimes. + +> If MOVE is not atomic, then how do you do the necessary error recovery? +> Or if you don't recover errors, how do you report them to the client? + +It would behave essentially the same as COPY+STORE+EXPUNGE, except the +STORE part could be optimized away: + +1. The COPY part either atomically succeeds or fails. +2. Now the messages are visible in both mailboxes +3. Server starts expunging the moved messages. + +After the copying is successful, the only problem that can happen is if +expunging messages somehow fails, or if the server crashes. The same +problems exist with COPY already, there are short time windows when if +Dovecot crashes it has succeeded in only partially copying messages. + +Atomic MOVE sounds nice, but what benefit does it really have? I doubt +clients or users care that much. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22866.mbox:2,S new file mode 100644 index 00000000..80a6477c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22866.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From janssen at parc.com Thu Jul 10 18:15:21 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +In-Reply-To: <4876B02E.3030507@verizon.net> +References: <4876A25B.8010503@verizon.net> + + <4876B02E.3030507@verizon.net> +Message-ID: <08Jul10.181530pdt."58698"@synergy1.parc.xerox.com> + +Joshua, + +I keep a table of client capabilities at +. You might be interested +in that, and I'd be interested in verifying these client capabilities +and updating the table. + +Any client implementers who'd like to send me updates -- I'll be happy +to incorporate them. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22871.mbox:2,S new file mode 100644 index 00000000..1d76bfe3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22871.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From dkarp at zimbra.com Sun Jun 22 13:58:20 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] '+' in counted literal (e.g. {548+}) -- where + from? +In-Reply-To: <08Jun22.132913pdt."58698"@synergy1.parc.xerox.com> +Message-ID: <2146346768.17751214168300943.JavaMail.root@dogfood.zimbra.com> + +> I find that the Apple Mail tool (version 3.3) is sending my UpLib +> IMAP server counted literals with an odd count. The "number" part +> of the count ends with a "+", as in "{548+}". I don't know what +> that means, or what IMAP extension defines that syntax... +> +> My server advertises LITERAL+, NAMESPACE, UIDPLUS, IDLE. + +By advertising "LITERAL+", you claim you handle this syntax and that +clients are free to use it. Check out RFC 2088 for details on non- +blocking literals. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22880.mbox:2,S new file mode 100644 index 00000000..0f67011b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22880.mbox:2,S @@ -0,0 +1,30 @@ +To: imap-protocol@u.washington.edu +MBOX-Line: From janssen at parc.com Tue Feb 5 11:21:33 2008 +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> <"08Feb5. + 091040pst. 58696"@synergy1.parc.xerox.com> + +Message-ID: <08Feb5.112141pst."58696"@synergy1.parc.xerox.com> + +> It happens if someone's password includes a non-ASCII letter. IMAP can +> do it, more or less: +> +> a login "name" password {8+} +> ääää + +Yes, I see what you mean. The "userid" and "password" arguments to +LOGIN are "astring", which can be "literal", which can be a sequence +of "CHAR8" (a binary blob without zero octets in it). Basically, +*any* "astring" can be either an ASCII string or a binary blob. Since +Python distinguishes between these two kinds of things (they're two +different primitive types), I guess the Python imaplib interface will +just have to deal with it. + +Thanks! + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22883.mbox:2,S new file mode 100644 index 00000000..bd60ed98 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22883.mbox:2,S @@ -0,0 +1,128 @@ +MBOX-Line: From ml.cyresse at gmail.com Wed Jan 9 20:04:03 2008 +To: imap-protocol@u.washington.edu +From: Liam Clarke +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: +References: + +Message-ID: + +Hi Mark, + +Thanks for that - my vague fear is that a poorly behaved server could +mix responses to one request with responses for another, which +probably betrays my lack of experience with IMAP servers. And I've +downloaded your library, just looking to implement some partial +functionality as a method of learning the protocol. I'm a learn by +doing kinda guy. Back to the RFC :) + +Regards, + +Liam Clarke-Hutchinson + +On Jan 10, 2008 4:53 PM, Mark Crispin wrote: +> In the example that you quoted, you will notice that lines from the client +> are labelled with "C:" and lines from the server are labelled with "S:". +> But, in this example, there are some physical lines which are not +> labelled. Those are all part of the same line that came from the server, +> and the line break that was in the example is not actually in the +> protocol. +> +> I'm not sure what you mean by "the second". Do you mean the response to +> the a004 command? That is, indeed, a multiline response, but you will +> notice the use of a literal (the "{342}"). +> +> An IMAP client must read an arbitrarily long line from the server. And by +> "arbitrarily long" I mean exactly that; there is no limit. If the line +> does not end with a literal size specifier such as {342} that is the end +> of the response. If, however, the line ends with such a specifier, then +> you must read exactly that number of octets in substitution for the +> literal size specifier, THEN more of the line afterwards. +> +> For example, the two responses +> +> * 12 FETCH FOO {3} +> BAR ZAP {5} +> ZOWIE +> +> and +> +> * 12 FETCH FOO BAR ZAP ZOWIE +> +> are exactly equivalent. +> +> Does this answer your question? +> +> I would also like to suggest that, instead of implementing a client +> library, that you consider using an existing client library for your +> application. One such library is my c-client library, part of the UW IMAP +> Tookit on +> ftp://ftp.cac.washington.edu/mail/imap.tar.Z +> +> +> On Thu, 10 Jan 2008, Liam Clarke wrote: +> > I'm very new to IMAP, looking to implement a client library and +> > somewhat worried by this line in the RFC: +> > +> >> A client MUST be prepared to accept any server response at all times. This includes server data that was not requested. +> > +> > For the most part handling of unrequested untagged responses seems to +> > be straightforward pattern matching, as the context doesn't really +> > matter - but what has me confused and a little worried is one of the +> > examples of two FETCH responses in the last section of the RFC +> > (apologies for the long c&p): +> > +> > C: a003 fetch 12 full +> > S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" +> > RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)" +> > "IMAP4rev1 WG mtg summary and minutes" +> > (("Terry Gray" NIL "gray" "cac.washington.edu")) +> > (("Terry Gray" NIL "gray" "cac.washington.edu")) +> > (("Terry Gray" NIL "gray" "cac.washington.edu")) +> > ((NIL NIL "imap" "cac.washington.edu")) +> > ((NIL NIL "minutes" "CNRI.Reston.VA.US") +> > ("John Klensin" NIL "KLENSIN" "MIT.EDU")) NIL NIL +> > "") +> > BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 +> > 92)) +> > S: a003 OK FETCH completed +> > C: a004 fetch 12 body[header] +> > S: * 12 FETCH (BODY[HEADER] {342} +> > S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) +> > S: From: Terry Gray +> > S: Subject: IMAP4rev1 WG mtg summary and minutes +> > S: To: imap@cac.washington.edu +> > S: cc: minutes@CNRI.Reston.VA.US, John Klensin +> > S: Message-Id: +> > S: MIME-Version: 1.0 +> > S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII +> > S: +> > S: ) +> > S: a004 OK FETCH completed +> > +> >> From the layout and note that " A long line in this sample is broken +> > for editorial clarity." I'm deducing that the server response to a003 +> > is all on a single \r\n delimited line, but is the second actually +> > split over multiple \r\n delimited lines? +> > +> > If so, would it be possible for lines from separate fetch responses to +> > arrive together? Borrowing trouble from the future, but just got +> > worried when I saw that. +> > +> > Regards, +> > +> > Liam Clarke-Hutchinson +> > _______________________________________________ +> > Imap-protocol mailing list +> > Imap-protocol@u.washington.edu +> > https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> > +> +> -- Mark -- +> +> http://staff.washington.edu/mrc +> Science does not emerge from voting, party politics, or public debate. +> Si vis pacem, para bellum. +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22886.mbox:2,S new file mode 100644 index 00000000..02a008a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22886.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sat Dec 1 14:53:01 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Get message path +In-Reply-To: <182630.73203.qm@web55706.mail.re3.yahoo.com> +References: <182630.73203.qm@web55706.mail.re3.yahoo.com> +Message-ID: + +On Sat, 1 Dec 2007, Jader Augusto wrote: +> It is possible to get the system full path (linux) using the imap +> protocol? + +In general, the answer is no. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22889.mbox:2,S new file mode 100644 index 00000000..fd0ea458 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22889.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Nov 16 09:50:16 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> +References: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Fri, 16 Nov 2007, Dan Karp wrote: +> If there are 50 messages in the mailbox and a client requests +> A001 FETCH 52 (FLAGS) +> then what are the acceptable server responses? + +A001 BAD Invalid sequence number. + +> I'm currently +> treating it as an example of RFC 2180 section 4.1.2 and returning +> A001 NO Some of the requested messages no longer exist + +It's a BAD because there is no way that a compliant client can reference +an invalid sequence number. The rules for EXPUNGE preclude it. + +RFC 2180 section 4.1.2 was a terrible mistake and no server should ever do +that. 4.1.3 is also pretty bad, and indicates a buggy server (or at least +buggy mail store), but it is better than 4.1.2. A server should do either +4.1.1 or 4.1.4 instead. + +Note as well that RFC 2180 is Informational. The fact that an +Informational RFC says something does not make it normative. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22893.mbox:2,S new file mode 100644 index 00000000..51b25136 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22893.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Wed Oct 24 10:41:30 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] GMail +Message-ID: <1193247690.25921.367.camel@hurina> + +Since Dan mentioned GMail.. I'm more worried about the list of missing +IMAP features: + +http://mail.google.com/support/bin/answer.py?answer=78761&topic=12762 + + * \Answered and \Recent flags on messages. + * Folder subscriptions. All folders are always in the 'Subscribed' + list. + * Substring search. All searches are assumed to be words. + * Searching arbitrary headers. Only some headers are available for + searches: From/CC/BCC/To/Subject. + +Can they really even call their implementation IMAP-compliant? Will this +cause problems for other servers when clients start assuming GMail +behavior/limitations as the standard? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22896.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22896.mbox:2,S new file mode 100644 index 00000000..fec85510 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22896.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From richw at richw.org Wed Sep 19 09:46:59 2007 +To: imap-protocol@u.washington.edu +From: Rich Wales +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Shared group mailboxes and IMAP +In-Reply-To: <6A0572C0907CB8172BC6F693@tyrion.rrz.uni-koeln.de> +References: <46F01DF4.2060804@rde-richw-3.stanford.edu> + <6A0572C0907CB8172BC6F693@tyrion.rrz.uni-koeln.de> +Message-ID: <46F15283.5000909@rde-richw-3.stanford.edu> + +In the scenario I described earlier, the shared mailbox is treated +as a separate IMAP account. The group mailboxes/accounts are on a +separate IMAP server (not the same as any of the servers where the +users' individual accounts live) -- which is why I said that the +group mailbox(es) will end up in their own, completely separate name +space, with most mail clients showing a dummy "inbox" on the group +mailboxes' IMAP server. + +FWIW, all the IMAP servers here are using Cyrus. + +Each group account has its own, unique e-mail address, and the group +mailbox acts like the inbox for the corresponding e-mail address +(except, as I tried to explain earlier, they don't really LOOK like +regular INBOX'es to most mail clients, apparently since they are +stored in a name space starting with "group." instead of "user."). + +Aside from the fact that the group mailboxes are on a separate IMAP +server of their own, it's felt desirable to treat them as totally +separate "accounts" in any case because the users accessing one of +these group mailboxes generally want/need to assume a special group +identity / personality (e.g., if a group mailbox is used by the staff +of an office, and anyone in the office replies to a message sent to +the group e-mail address, the reply should be "From:" the group +address and NOT from the individual staff member sending the reply). +This also means the current model (wherein all group mailboxes that +a given user has rights to will all show up under a single account) +if NOT good, because it prevents the user from assuming a separate +persona for each separate group account. + +The main thing I was hoping to find by posting my original question +was whether anyone can point me to an authentication mechanism that +current IMAP clients could use to allow multiple users to log in to +a single account, with each user having his/her own separate password. + +-- +Rich Wales === Palo Alto, CA, USA === richw@richw.org +http://www.richw.org === http://en.wikipedia.org/wiki/User:Richwales + "The difference between theory and practice is that, in theory, +theory and practice are identical -- whereas in practice, they aren't." + diff --git a/demo/ermis-f/imap-protocol/cur/1600095102.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095102.22899.mbox:2,S new file mode 100644 index 00000000..d9450d6b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095102.22899.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Aug 2 11:04:47 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] NAMESPACE and LIST/LSUB wildcards +In-Reply-To: <1274724802.313211186077130557.JavaMail.root@dogfood.zimbra.com> +References: <1274724802.313211186077130557.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +You are correct. + +The whole point of namespaces is to have separate distinguishable +hierarchies. So, no, other namespaces should not be listed in the default +namespace (= "*" should not list mailboxes in other namespaces). + +The fundamental flaw of a namespace name like "Public Folders/", as +opposed to using the # convention described in RFC 3501 (for example, +"#public/"), is that it is not distinguishable. Such names create +ambiguity and cause the confusion over whether they are listed in the +default hierarchy (and why or why not). + +That's why I've told people, unsuccessfully, for years not to use such +names. Sometimes, the only way to learn is to experience the consequences +of a wrongheaded course of action. + +Use the RFC 3501 namespace convention and/or well-known breakout +characters (such as the hierarchy delimiter, or ~ in a UNIX filesystem) to +separate your hierarchies. Then you won't have this problem. + +Ignore this advice, and be forever doomed to confusion as to what the hell +a namespace is compared to a top-level hierarchical name, not to mention +the ongoing support problems. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22595.mbox:2,S new file mode 100644 index 00000000..b3faeb33 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22595.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 25 12:34:56 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> +Message-ID: <64e2246f-9d64-40bc-b373-ec6a45f6acfb@gulbrandsen.priv.no> + +Michael M Slusarz writes: +> This is inefficient. But it is perfectly acceptable IMAP. + +It's not acceptable: the modseq should change whenever the flags do. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22743.mbox:2,S new file mode 100644 index 00000000..6419c421 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22743.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From dave at cridland.net Tue Mar 27 15:26:30 2012 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] using a global CONDSTORE mod-sequence for + HIGHESTMODSEQ +In-Reply-To: +References: +Message-ID: <20897.1332887190.012640@puncture> + +On Tue Mar 27 22:49:55 2012, John Galton wrote: +> The RFC states that the mod-sequence represents the highest +> modification to +> a given mailbox. If a mailstore only stored a global +> (account-wide, across +> all mailboxes) mod-sequence, could one simply return the current +> value of +> such a global mod-sequence when the HIGHESTMODSEQ is called for +> (SELECT/EXAMINE/STATUS)? +> +> Obviously using this value would trigger the client to followup +> with a +> request to find out what has changed since it last sync'd, even if +> nothing +> has changed. Should a client be expected to behave reasonably if +> it's +> FETCH CHANGEDSINCE or SEARCH MODSEQ returned items where the highest +> mod-sequence was less than the advertised HIGHESTMODSEQ or worse, +> there +> were no results at all when some were expected? + +It'll work, it just might be less efficient. + +But if the client is using QRESYNC, it'll be no different at all, I +suspect. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22756.mbox:2,S new file mode 100644 index 00000000..34abcf3d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22756.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From David.Harris at pmail.gen.nz Mon Nov 14 15:13:41 2011 +To: imap-protocol@u.washington.edu +From: David Harris +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321311798.30750.140660998918417@webmail.messagingengine.com> +References: , + , + <1321311798.30750.140660998918417@webmail.messagingengine.com> +Message-ID: <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + +On 15 Nov 2011 at 0:03, Bron Gondwana wrote: + +> On Monday, November 14, 2011 2:46 PM, "Lyndon Nerenberg" wrote: +> +> > > If there are any unseen messages in the mailbox, an UNSEEN response must +> > > be sent, if not it MUST be omitted. +> > +> > Ship it. +> +> Not tonight... er, tomorrow. I gotta sleep. + +When you wake up and get back onto this, one more small correction: + + If there are any unseen messages in the mailbox, an UNSEEN + response MUST be sent, if not it MUST be omitted. + +We may as well be consistent with our MUSTs. + +Cheers! + +-- David -- + +------------------ David Harris -+- Pegasus Mail ---------------------- +Box 5451, Dunedin, New Zealand | e-mail: +David.Harris@pmail.gen.nz + Phone: +64 3 453-6880 | Fax: +64 3 453-6612 + +Newspaper headlines we wished we'd seen: + "Psychic pigmy escapes from jail: small medium at large." + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22772.mbox:2,S new file mode 100644 index 00000000..2c05a60e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22772.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu May 26 10:38:10 2011 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] RFC4551 text issues +In-Reply-To: <4DC7ADAE.3050807@fastmail.fm> +References: <4DC7ADAE.3050807@fastmail.fm> +Message-ID: <4DDE9002.1010800@isode.com> + +Greg Banks wrote: + +> G'day, + +Hi Greg, +Thanks for reporting this. + +> I've been reading RFC4551 and noticed the following issues. +> +> 1. The modifier UNCHANGEDSINCE is misspelt UNCHANGESINCE (note the +> missing 'D') four times in section 3.2. + +Good point. + +> 2. The abnf says +> +> resp-text-code =/ "HIGHESTMODSEQ" SP mod-sequence-value / +> "NOMODSEQ" / +> "MODIFIED" SP set +> +> There is no abnf rule for "set" in either RFC3501 or RFC4551. However +> the rule "sequence-set" in RFC3501 seems to match the examples given +> earlier in RFC4551 and the apparent intent. + +Indeed. + +Can you submit both of this using the Errata submission +? (Using the "Report New Errata" +button) + +Thanks, +Alexey + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22796.mbox:2,S new file mode 100644 index 00000000..e67a27c5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22796.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From mrc+imap at panda.com Fri Oct 22 17:54:16 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Session flags. +In-Reply-To: <4CC206A3.8010909@aol.com> +References: <4CC1E456.5050208@aol.com> + + <4CC1EFDD.3000606@aol.com> + + <4CC206A3.8010909@aol.com> +Message-ID: + +On Fri, 22 Oct 2010, John Snow wrote: +> But what about my question? + +Your question has been answered many times, most recently just now. + +Read-only mailboxes that only have a single writeable status, whether +newsgroups or the bboards of the 1980s, were in use and supported by IMAP +from inception. The user experience issue came up at once; as did the +fact that - even way back then - there were client implementations that +were not under my control. + +Specifically, these user experience facts came up very early, nearly 25 +years ago: + [1] No value is served by having STORE be a no-op. + [2] Negative value is served by having STORE return a NO. + +Without session flags, the only way for clients to present the desired +user experience is to implement these entirely in the client. Once client +display is disconnected from what the server says, the server loses the +ability to have external flag changes update on the client; the client has +no clear guidance on whether or not to believe anything the server says. + +If you don't like session flags, then don't use session flags in your +client. The server clearly indicates, via PERMANENTFLAGS, which flags are +session flags; the flags that are in FLAGS but not PERMANENTFLAGS are +session flags. Do not attempt to STORE \* or any flag other than what are +in PERMANENTFLAGS. Similarly, ignore any returned flag in FETCH that is +not in PERMANENTFLAGS. This is not a particularly challenging programming +task. + +Similarly, any competent server programmer will have no trouble +implementing session flags sufficiently to comply with the protocol. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22807.mbox:2,S new file mode 100644 index 00000000..8fce00db --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22807.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 10:25:14 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <1276274718.22134.138.camel@kurkku.sapo.corppt.com> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> +Message-ID: + +On Fri, 11 Jun 2010, Timo Sirainen wrote: +>> If MOVE is not atomic, then what is its point? +> 1) Allowing user to move messages between mailboxes in situations where +> a COPY would bring user over quota. + +That presupposes a mail store in which COPY would bring the user over +quota. As with a database, there's no reason why that should be the case +with a maildir type store. A maildir store can use hardlink to implement +COPY. + +> 2) Simplify the operation for clients, also drop one round trip wait. I +> guess this mainly would benefit some custom webmail developers that +> develop against a specific server.. + +Pipelining eliminates this, except perhaps for a protocol link over a +300bps modem where the extra chattiness might matter. + +> 3) Possibly improve performance with some server implementations. + +Most of this is with the idea of "just use rename", which breaks +atomicity. + +> Are these good enough reasons for the MOVE command? I don't know. Maybe +> 1) is helpful sometimes. + +I agree that (1) is the attraction. But, once again, I don't see how MOVE +can solve the problem, simply because the stores which have the problem +can't do MOVE. + +> It would behave essentially the same as COPY+STORE+EXPUNGE, except the +> STORE part could be optimized away: +> 1. The COPY part either atomically succeeds or fails. +> 2. Now the messages are visible in both mailboxes +> 3. Server starts expunging the moved messages. + +Then you don't have a MOVE command. You have a protocol macro that looks +like a command but actually is three separate commands. And the client +has to be aware of the split in the macro since failures can happen at +each stage. + +The complexities of this make the late unlamented VIEW proposal look +simple by comparison. + +> After the copying is successful, the only problem that can happen is if +> expunging messages somehow fails, or if the server crashes. The same +> problems exist with COPY already, there are short time windows when if +> Dovecot crashes it has succeeded in only partially copying messages. + +My mix format doesn't have those windows. + +Flat file formats are screwed in crashes, but don't have the windows for +error recovery. + +> Atomic MOVE sounds nice, but what benefit does it really have? I doubt +> clients or users care that much. + +I agree. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22866.mbox:2,S new file mode 100644 index 00000000..d692e581 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22866.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu Jul 10 18:16:19 2008 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +In-Reply-To: <4876B02E.3030507@verizon.net> +References: <4876A25B.8010503@verizon.net> + + <4876B02E.3030507@verizon.net> +Message-ID: <4876B463.6030909@verizon.net> + +Joshua Cranmer wrote: +> Mark Crispin wrote: +>> Such a list is ever changing, and listing what servers don't support +>> them correctly is likely to result in considerable hostility aimed at +>> the lister. It's easier to list servers that do things right: +>> UW/Panda, Dovecot, and Cyrus. The author of Dovecot has been quite +>> diligent in producing torture tests for servers, and he and the +>> author of UW/Panda (me) have had a friendly competition in who can +>> fix the problems uncovered first. +>> +> Pray tell, where might I find this list? +> +For clarification: I'm referring to the torture test list. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22871.mbox:2,S new file mode 100644 index 00000000..2b8050d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22871.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From robsiemb at google.com Mon Jun 23 08:59:47 2008 +To: imap-protocol@u.washington.edu +From: Rob Siemborski +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Proxy IP forwarding +In-Reply-To: <1212348043.3904.521.camel@hurina> +References: <1212341451.3904.500.camel@hurina> + <0i/azqanypELGcsgZG99yw.md5@lochnagar.oryx.com> + <1212348043.3904.521.camel@hurina> +Message-ID: <5b93232d0806230859i38008718sc2934fa228035cc9@mail.gmail.com> + +On Sun, Jun 1, 2008 at 12:20 PM, Timo Sirainen wrote: + +> On Sun, 2008-06-01 at 20:45 +0200, Arnt Gulbrandsen wrote: +> > Timo Sirainen writes: +> > > Has anyone implemented some kind of a IP forwarding extension? So +> > > backend servers could see the original IPs instead of the proxy's. So +> > > login would go something like: +> > > +> > > 1 XFORWARD lip 1.2.3.4 lport 143 rip 4.5.6.7 rport 35353 +> > > 2 LOGIN user pass +> > +> > Login referrals? +> +> No, not what I meant. +> +> > Cyrus Murder? +> +> Maybe. I tried to look into the Cyrus code but I couldn't find what +> commands it uses. + + +Its been a while but as far as I remember the murder code just uses normal +IMAP all the way (to do the proxy auth, it uses a SASL mech that supports +it), but the IP is not passed. + +-Rob + +-- +Rob Siemborski | PGP:0x5CE32FCC | robsiemb@google.com +Software Engineer | | 650-623-6925 +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22880.mbox:2,S new file mode 100644 index 00000000..d1d03be4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22880.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Feb 5 10:36:44 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <"08Feb5. 091040pst. 58696"@synergy1.parc.xerox.com> +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> + <"08Feb5. 091040pst. 58696"@synergy1.parc.xerox.com> +Message-ID: + +Bill Janssen writes: +>> No. LOGIN name password, etc. +> +> Forgive me for being dense, but I don't see how this could happen, +> according to the protocol spec. + +It happens if someone's password includes a non-ASCII letter. IMAP can +do it, more or less: + +a login "name" password {8+} +???? + +Sensible vendors don't want to tell German customers that anyone whose +passwords include ? cannot read mail. + +> In section 1.2: +> +> Characters are 7-bit US-ASCII unless otherwise specified. Other +> character sets are indicated using a "CHARSET", as described in +> [MIME-IMT] and defined in [CHARSET]. CHARSETs have important +> additional semantics in addition to defining character set; refer to +> these documents for more detail. +> +> And there's no "CHARSET" parameter anywhere in the LOGIN command. + +That's right. The better way to do this is to use AUTHENTICATE, which +has plentiful (and well-defined!) support for non-ASCII (search for +saslprep to find a starting point). But LOGIN too is used, not too +seldom. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22883.mbox:2,S new file mode 100644 index 00000000..e99c697c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22883.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From ml.cyresse at gmail.com Wed Jan 9 20:05:20 2008 +To: imap-protocol@u.washington.edu +From: Liam Clarke +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Re: Question on FETCH example in RFC3501 +In-Reply-To: <20080110040209.GA25060@toroid.org> +References: + <20080110040209.GA25060@toroid.org> +Message-ID: + +Oh dear, + +Thanjks Abhijit. I need to read more carefully. + +On Jan 10, 2008 5:02 PM, Abhijit Menon-Sen wrote: +> Hi Liam. +> +> At 2008-01-10 16:38:00 +1300, ml.cyresse@gmail.com wrote: +> > +> > C: a004 fetch 12 body[header] +> > S: * 12 FETCH (BODY[HEADER] {342} +> > S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) +> > S: From: Terry Gray +> > S: Subject: IMAP4rev1 WG mtg summary and minutes +> > S: To: imap@cac.washington.edu +> > S: cc: minutes@CNRI.Reston.VA.US, John Klensin +> > S: Message-Id: +> > S: MIME-Version: 1.0 +> > S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII +> > S: +> > S: ) +> > S: a004 OK FETCH completed +> +> > [...] but is the second actually split over multiple \r\n delimited +> > lines? +> +> Not exactly. It contains a literal that contains multiple CRLFs. +> +> > If so, would it be possible for lines from separate fetch responses to +> > arrive together? +> +> No. This response: +> +> > S: * 12 FETCH (BODY[HEADER] {342} +> +> promises to send you 342 bytes of literal data immediately following the +> CRLF (see RFC 3501 ?4.3 for an explanation of literals). +> +> -- ams +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22886.mbox:2,S new file mode 100644 index 00000000..cb10911a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22886.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Sat Dec 1 23:35:50 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FLAGS reply +Message-ID: <1196580950.9771.687.camel@hurina> + +I see that when adding a new keyword, most servers send: + +* FLAGS (hello \Answered \Flagged \Deleted \Draft \Seen) +* OK [PERMANENTFLAGS (hello \* \Answered \Flagged \Deleted \Draft \Seen)] Permanent flags + +before sending the FETCH FLAGS: + +* 1 FETCH (FLAGS (hello)) + +Is this really useful/required? RFC seems to say it's supposed to be +sent only on SELECT. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22889.mbox:2,S new file mode 100644 index 00000000..27bac531 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22889.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From dkarp at zimbra.com Fri Nov 16 10:01:19 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: <927149127.204621195236014312.JavaMail.root@dogfood.zimbra.com> +Message-ID: <554384819.204731195236079452.JavaMail.root@dogfood.zimbra.com> + +> Note as well that RFC 2180 is Informational. The fact that an +> Informational RFC says something does not make it normative. + +It may not mark it as normative, but it unquestionably marks it as acceptable. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22893.mbox:2,S new file mode 100644 index 00000000..f97cde93 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22893.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From dave at cridland.net Wed Oct 24 11:14:53 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] STATUS on a \NoSelect mailbox +In-Reply-To: <1289589251.146651193229245957.JavaMail.root@dogfood.zimbra.com> +References: <1289589251.146651193229245957.JavaMail.root@dogfood.zimbra.com> +Message-ID: <32551.1193249693.354094@peirce.dave.cridland.net> + +On Wed Oct 24 13:34:05 2007, Dan Karp wrote: +> We've always gone on the assumption that you should be able to ask +> for STATUS on any mailbox returned in a LIST response. The new +> Gmail IMAP implementation doesn't seem to play that way -- they +> have a base \NoSelect mailbox that's returned from LIST but that +> returns NO on STATUS: +> +> +I'm in agreement with Mark, but I would point out that in this case, +GMail is behaving badly: + + +> A3 LIST "" "*" +> * LIST () "/" "INBOX" +> * LIST () "/" "Trash" +> * LIST (\Noselect) "/" "[Gmail]" +> * LIST () "/" "[Gmail]/All Mail" +> * LIST () "/" "[Gmail]/Drafts" +> * LIST () "/" "[Gmail]/Sent Mail" +> * LIST () "/" "[Gmail]/Spam" +> * LIST () "/" "[Gmail]/Starred" +> * LIST () "/" "[Gmail]/Trash" +> A3 OK Success +> +That [Gmail] heirarchy point shouldn't be listed here - as Mark says, +it's not a mailbox, therefore shouldn't match. + +It should be returned for LIST "" "%", but not LIST "" "*". + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22899.mbox:2,S new file mode 100644 index 00000000..45686b61 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22899.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Wed Aug 8 07:39:32 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] More evil hierarchy delimiters +In-Reply-To: +References: <1182954665.3768.348.camel@hurina> + +Message-ID: <1186583972.29782.339.camel@hurina> + +On Wed, 2007-06-27 at 09:35 -0700, Mark Crispin wrote: +> On Wed, 27 Jun 2007, Timo Sirainen wrote: +> > The RFC says: +> > All children of a top-level hierarchy node MUST use +> > the same separator character. A NIL hierarchy delimiter means +> > that no hierarchy exists; the name is a "flat" name. +> > After first reading I thought that you couldn't mix NIL with another +> > delimiter, but I guess because the first sentence says "character", not +> > "delimiter" it is allowed (plus UW-IMAP does it). Maybe the next RFC +> > could clear that up. +> +> No. Your confusion here is that INBOX is in a class by itself. It is not +> part of the default namespace. That's why the RFC goes on to say that +> INBOX is included in the LIST results if it matches the pattern; that too +> is a special rule since otherwise INBOX would not be listed. + +So, based on that description I assume this is legal then: + +1 LIST "" * +* LIST () "/" INBOX +* LIST () "." foo +1 OK + +INBOX would be in a separate namespace, so: + +2 LIST "" INBOX/* +* LIST () "/" "INBOX/sub" +2 OK + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095103.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095103.22903.mbox:2,S new file mode 100644 index 00000000..74284c5b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095103.22903.mbox:2,S @@ -0,0 +1,79 @@ +MBOX-Line: From tss at iki.fi Mon Jul 2 10:23:26 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> + + <1182953618.3768.338.camel@hurina> + + <1182966301.3768.383.camel@hurina> + +Message-ID: <1183397006.3768.686.camel@hurina> + +On Wed, 2007-06-27 at 12:01 -0700, Mark Crispin wrote: +> On Wed, 27 Jun 2007, Timo Sirainen wrote: +> >> Any server that automatically lists all other users' mailboxes by default +> >> has huge privacy problem. +> > Not by default. I meant it lists all mailboxes where the mailbox owner +> > has given permission with ACLs (so filesystem permissions won't be +> > enough). +> +> That isn't enough. Most organizations consider it to be a privacy and +> security violation to reveal the identities of other users. There isn't +> any ACL that applies to the userid space. + +Only those users are visible to me who have shared a mailbox to me with +a +l ACL right. + +> What's more, you're presuming that "shared mailboxes" is a small enough +> set of names that is reasonable to list by default. Suppose this is a +> university, and every class list is in shared mailboxes. What if your +> client is accessed over wireless, or from a third world country in which +> the user pays by the KB? + +How's it any different from having a client show all of a separate +shared mailboxes namespace? Bad clients behave badly no matter what. :) + +> > Actually it looks like Cyrus is doing exactly what I was going to: +> > +> > 1 namespace +> > * NAMESPACE (("" "/")) (("Other Users/" "/")) (("Shared Folders/" "/")) +> > 1 OK Completed +> > 2 list "" * +> > * LIST (\Noinferiors) "/" "INBOX" +> > * LIST (\HasNoChildren) "/" "Other Users/foo/support" +> > 2 OK Completed (0.000 secs 10 calls) +> +> That is a design misfeature in Cyrus. A server which does that doesn't +> have namespaces. It's apparently just using the NAMESPACE extension to +> give a clue as to how to access those mailboxes in the default namespace. + +Unfortunately this is the only way that works with all clients. + +> > There you have a LIST that lists multiple namespaces. Do you consider +> > this bad as well? +> +> Yes, this is bad; although not as bad as mashing multiple namespaces with +> different hierarchy semantics together which is what you were talking +> about earlier. +> +> The bad thing is that it means that I, as the user, can not create a +> personal hierarchy called "Other Users" or "Shared Folders" that have +> entirely different purposes. For some reason, undisclosed to my client +> that does not do NAMESPACE, these name are stolen from me, and I as the +> user will be surprised when bad things happen. + +What if instead of calling it "Shared Folders" it was called "#shared" +but still listed with LIST? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22595.mbox:2,S new file mode 100644 index 00000000..35c1462a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22595.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From kmansoft at gmail.com Wed Mar 25 12:39:17 2015 +To: imap-protocol@u.washington.edu +From: Kostya Vasilyev +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: <55130CEA.7050608@isode.com> +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> + <55130CEA.7050608@isode.com> +Message-ID: + +2015-03-25 22:30 GMT+03:00 Alexey Melnikov : + +> Hi Michael, +> +> On 25/03/2015 19:21, Michael M Slusarz wrote: +> +>> Quoting Kostya Vasilyev : +>> +>> New state reported without \Answered first (wrong), then with it (right), +>>> and the MODSEQ is the same (which is also wrong). +>>> +>>> 21:54:31.077 [IMAP.5800] Sending: kman25 UID STORE 196290 +FLAGS +>>> (\Flagged) +>>> 21:54:31.672 [IMAP_RAW.5800] Data is <167>: +>>> 21:54:31.672 * 20927 FETCH (FLAGS (\Flagged \Seen) MODSEQ (20736711) UID +>>> 196290) +>>> 21:54:31.672 * 20927 FETCH (UID 196290 MODSEQ (20736711) FLAGS (\Answered +>>> \Flagged \Seen)) +>>> 21:54:31.672 kman25 OK Success +>>> +>> This is inefficient. But it is perfectly acceptable IMAP. +>> +> I think this is not correct, because the two responses should use 2 +> different MODSEQs, if they return different set of flags. + + +Yes, that's what I meant by "which is also wrong". + +Every change to message flags should bump the message's MODSEQ value. + +Now in this case, there was no actual change *between* the two lines in the +response, it's the server reporting wrong flags values first and correct +values next (the message already had \Answered and \Seen prior to my adding +\Flagged)... + +...and the real issue is new flags reported without \Answered first, then +with it, but... + +... the identical MODSEQ values make it harder to work around this real +issue. + +-- K +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22743.mbox:2,S new file mode 100644 index 00000000..00991c96 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22743.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Tue Mar 27 15:42:23 2012 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] using a global CONDSTORE mod-sequence for + HIGHESTMODSEQ +In-Reply-To: <20897.1332887190.012640@puncture> +References: + <20897.1332887190.012640@puncture> +Message-ID: + +On 28.3.2012, at 1.26, Dave Cridland wrote: + +> On Tue Mar 27 22:49:55 2012, John Galton wrote: +>> The RFC states that the mod-sequence represents the highest modification to +>> a given mailbox. If a mailstore only stored a global (account-wide, across +>> all mailboxes) mod-sequence, could one simply return the current value of +>> such a global mod-sequence when the HIGHESTMODSEQ is called for +>> (SELECT/EXAMINE/STATUS)? +>> Obviously using this value would trigger the client to followup with a +>> request to find out what has changed since it last sync'd, even if nothing +>> has changed. Should a client be expected to behave reasonably if it's +>> FETCH CHANGEDSINCE or SEARCH MODSEQ returned items where the highest +>> mod-sequence was less than the advertised HIGHESTMODSEQ or worse, there +>> were no results at all when some were expected? +> +> It'll work, it just might be less efficient. +> +> But if the client is using QRESYNC, it'll be no different at all, I suspect. + +Well, some QRESYNC capable clients might think that they're being smart and syncing only mailboxes that have changed, but in this server all of the mailboxes have changed, so the client might SELECT all of them.. Then again I don't know if any clients are really doing (or planning to do) that. + +Would work better if you kept a per-mailbox HIGHESTMODSEQ even if they point to one shared modseq counter. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22756.mbox:2,S new file mode 100644 index 00000000..ae423f52 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22756.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 15 00:48:42 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> +References: , + , + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> +Message-ID: <1321346922.6321.140660999083661@webmail.messagingengine.com> + +On Tuesday, November 15, 2011 12:13 PM, "David Harris" wrote: +> When you wake up and get back onto this, one more small correction: + +Yeah, it's fine for you. You already live in tomorrow! + +> If there are any unseen messages in the mailbox, an UNSEEN +> response MUST be sent, if not it MUST be omitted. +> +> We may as well be consistent with our MUSTs. + +Thanks for catching my late-night messup. Indeed. MUST keep our MUSTs +in line! + +I also re-ordered the paragraphs so the "what to do when writing a server" +parts were together before the "what clients have to do if it's not there". + +Submitted: + +http://www.rfc-editor.org/errata_search.php?rfc=3501&eid=3032 + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22772.mbox:2,S new file mode 100644 index 00000000..e2d16631 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22772.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From snowjn at aol.com Thu May 26 12:03:46 2011 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +Message-ID: <4DDEA412.6030305@aol.com> + + +Section 6.4.8 the UID command says: + + The number after the "*" in an untagged FETCH response is always a + message sequence number, not a unique identifier, even for a UID + command response. However, server implementations MUST implicitly + include the UID message data item as part of any FETCH response + caused by a UID command, regardless of whether a UID was specified + as a message data item to the FETCH. + + +My question is simply, why? Why is the sequence number needed when the +command +specified a UID, and the UID must be included in the response. Seems to +me the UID +command should have a UID response. + +snow. + + + + + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22796.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22796.mbox:2,S new file mode 100644 index 00000000..f87748ac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22796.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From snowjn at aol.com Fri Oct 22 17:59:14 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Session flags. +In-Reply-To: +References: <4CC1E456.5050208@aol.com> + + <4CC1EFDD.3000606@aol.com> + + <4CC206A3.8010909@aol.com> + +Message-ID: <4CC23362.9000005@aol.com> + +Thanks, that's what I wanted to know. + +Mark Crispin wrote: +> On Fri, 22 Oct 2010, John Snow wrote: +>> But what about my question? +> +> Your question has been answered many times, most recently just now. +> +> Read-only mailboxes that only have a single writeable status, whether +> newsgroups or the bboards of the 1980s, were in use and supported by IMAP +> from inception. The user experience issue came up at once; as did the +> fact that - even way back then - there were client implementations that +> were not under my control. +> +> Specifically, these user experience facts came up very early, nearly 25 +> years ago: +> [1] No value is served by having STORE be a no-op. +> [2] Negative value is served by having STORE return a NO. +> +> Without session flags, the only way for clients to present the desired +> user experience is to implement these entirely in the client. Once +> client +> display is disconnected from what the server says, the server loses the +> ability to have external flag changes update on the client; the client +> has +> no clear guidance on whether or not to believe anything the server says. +> +> If you don't like session flags, then don't use session flags in your +> client. The server clearly indicates, via PERMANENTFLAGS, which flags +> are +> session flags; the flags that are in FLAGS but not PERMANENTFLAGS are +> session flags. Do not attempt to STORE \* or any flag other than what +> are +> in PERMANENTFLAGS. Similarly, ignore any returned flag in FETCH that is +> not in PERMANENTFLAGS. This is not a particularly challenging +> programming +> task. +> +> Similarly, any competent server programmer will have no trouble +> implementing session flags sufficiently to comply with the protocol. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22807.mbox:2,S new file mode 100644 index 00000000..72f31ca3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22807.mbox:2,S @@ -0,0 +1,122 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 10:53:13 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111817.39761.witold.krecicki@firma.o2.pl> + +Message-ID: <201006111953.13490.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 19:06:00 Mark Crispin wrote: +> On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> >> Commands in IMAP are atomic; thus this MOVE operation must be atomic. +> >> It is simply impossible to do an atomic MOVE with many stores. +> > +> > That's why it's an option, not a requirement. +> +> Options are not a good thing +Looking at number of possible extensions to imap and number of ones supported +by popular IMAP servers +> >> Note that not even a one-file/one-message store (ala maildir) can do +> >> MOVE atomically. Each file has to be renamed separately. That's not +> >> atomic! +> > +> > In this way COPY is only atomic if destination mailbox is locked, so the +> > only problem with maildir store is locking two mailboxes simultanously +> +> All implementations of IMAP must implement COPY as atomic. That is a +> requirement of the protocol. +> +> The problem is more than just locking. The problem is also error +> recovery. +> +> In a last resort, you can undo a failed COPY by deleting all +> the copied messages. In the event of a failed MOVE, you have to move +> everything back. But whatever caused the MOVE to fail can also cause the +> move back to fail. Oh dear. Oh my. +Do any of IMAP servers implement COPY as atomic? +You're saying that you can undo a failed COPY by deleting copied messages and +you can't undo MOVE by moving everything back. Situations in which COPY using +maildirs is not atomic: +1. During COPYing filesystem error causes switch to read-only mode. Several +messages are copied, and cannot be deleted. +2. During COPYing server crashes. + +I am seeing Your point on how MOVE can fail to be atomic, but those are +exactly the same cases in which COPY can also fail to be atomic, so where's +the point? + +> Thus, the attractive idea of using rename for a maildir type store doesn't +> work. You have to use something like hardlink+delete. But even then you +> have error conditions. What if, for some reason, the delete doesn't work? +Again, what if after copying half of the messages, for some reason, delete +doesn't work? + +> > Also, the implementation of MOVE method in clients is, in most cases, not +> > a problem at all. +> +> "[It is], in most cases, not a problem at all" is the earmark of +> inexperience and not having thought all these issues through. Every +> separate code path for the same functionality adds 2^n complexity in +> overall code path. +It is already implemented in, at least, Thunderbird (for XAOL-MOVE). + +> >> Note that in the one case where you can implement MOVE (see above), +> >> there is no particular benefit (other than the atomic lock) over +> >> pipelining because in the database the COPY operation is also an index +> >> operation. +> > +> > Depends on DB design. +> +> MOVE is unimplementable as an atomic operation unless the DB works that +> way. +In any mail store in which mailbox membership is treated as 'mail label' it is +atomic. + +> > Maildirs can implement move (as an atomic operation) as long as locking +> > two mailboxes is permitted. +> +> No they can not. Atomicity is more than just locking. There is also +> error recovery, and that is a MUCH harder problem. +> +> The first thing is to realize that rename can't work. You have to use +> hardlink+delete. And that's non-atomic and has danger points where an +> error can mean that you can't go forward or back. +In this way COPY is also non-atomic, as mentioned before. + +> > Database-backed designs can implement atomic move easily. +> +> Not easily. It's possible with a database if the database is defined in a +> way to make it possible. But in such databases it's a pointless tweak +> over pipelining. +In such databases it guarantees atomicity - after MOVE and dropped connection +client is SURE that message is either in source or destination folder, and not +in both at the same time. + +> > the example of AOL (as mentioned by John Snow) shows that there is a need +> > for this functionality to be standarized so that clients that want to +> > use it won't need to check IMAP server domain name to figure out if it +> > can use eg. XAOL- MOVE. +> +> John is a smart guy, but I'll bet that I can discover atomicity and/or +> error recovery flaws in AOL's move functionality. +UPDATE messages set folder='Trash' where uid in ... - where is the atomicity +flaw here (assuming that database is ACID)? + +> It's easy enough to say "that's alright, we don't care about these edge +> cases" in a private implementation. +> +> The problem is that it isn't alright, and you have to care, in a public +> specification. +You are assuming that it's impossible to implement this operation properly +(eg. atomic), and this is obviously false statement. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22866.mbox:2,S new file mode 100644 index 00000000..772ef943 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22866.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From markrcrispin at live.com Thu Jul 10 18:32:13 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +In-Reply-To: <4876B2BF.4030406@atypon.com> +References: <4876A25B.8010503@verizon.net> + <4876B02E.3030507@verizon.net> + <4876B2BF.4030406@atypon.com> +Message-ID: + + +> As a side note, I see what once was uw-imapd has gotten a name change. I +> am happy to see development is continuing. + +Unfortunately, that's a bit over-optimistic. + +I have forked UW imapd for my own purposes on my private panda.com domain. I have made improvements to it since that time. However, without funding, I can not continue development, nor maintenance, nor open-source distribution for anyone other than myself. + +I do not know what plans UW may have to continue development, although I doubt very much that they will do so. + +I'm sorry. + +-- Mark -- + +_________________________________________________________________ +Making the world a better place one message at a time. +http://www.imtalkathon.com/?source=EML_WLH_Talkathon_BetterPlace diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22871.mbox:2,S new file mode 100644 index 00000000..c6fb6674 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22871.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From tss at iki.fi Tue Jun 24 03:03:28 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] rfc 2231 +Message-ID: <1214301808.3904.1795.camel@hurina> + +Do other IMAP servers implement RFC 2231 support for BODY/BODYSTRUCTURE? +It's been in my TODO for 5 years and today was the first time anyone +asked about it. Is it even a good idea to implement it, or why wasn't it +included in RFC 3501? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22880.mbox:2,S new file mode 100644 index 00000000..82706b32 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22880.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From MRC at Washington.EDU Tue Feb 5 12:13:56 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <08Feb5.112141pst."58696"@synergy1.parc.xerox.com> +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> <"08Feb5. + 091040pst. 58696"@synergy1.parc.xerox.com> + + <08Feb5.112141pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Tue, 5 Feb 2008, Bill Janssen wrote: +> Yes, I see what you mean. The "userid" and "password" arguments to +> LOGIN are "astring", which can be "literal", which can be a sequence +> of "CHAR8" (a binary blob without zero octets in it). + +The IMAP specification is being intentionally vague here. It didn't want +to say too much, for fear of having to have that be unsaid later. + +The idea was to define things such as "userid" and "password" as ASCII; +but (1) it was known a limitation to ASCII was going to be overturned, and +(2) that limitation was not in any way enforced by the specification. + +Otherwise they would have been atom or atom / quoted, since only atom or +quoted is limited to ASCII. But there is no such thing in IMAP. You +either find atom (which is a limited subset of ASCII) or astring (which +can include non-ASCII via literals). + +Now, here is where the IMAP specification is vague: the text about +defining the charset leaves open the question of how, precisely, the +charset is defined. In some cases, you have charsets given via MIME. In +other cases, the means is left for future specification. Or, the data can +be binary blobs with no meaningful charset at all. + +In my opinion, "userid" and "password" are binary blubs. The convention +seems to be that these blobs are UTF-8, replacing a previous convention +that they are ASCII. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22883.mbox:2,S new file mode 100644 index 00000000..456040d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22883.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jan 9 20:21:07 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: +References: + + +Message-ID: + +On Thu, 10 Jan 2008, Liam Clarke wrote: +> Thanks for that - my vague fear is that a poorly behaved server could +> mix responses to one request with responses for another + +It all depends upon what you mean by this. + +A server can not intertwine one response with another; that is, given +responses + +* 12 FOO BAR ZAP +* 13 GOLLY GEE WOW + +A server can not send + +* 12 FOO * 13 GOLLY GEE WOW +BAR ZAP + +However, a server most definitely MAY send ANY untagged response to ANY +command. A client MUST NOT assume that (for example) if it is sending a +SEARCH command that it will not receive a FETCH command. + +More to the point: a client MUST NOT be modal in its untagged response +processing based upon what command it is sending. + +For example, the following is the WRONG way to implement SEARCH: + send a SEARCH command + read an untagged SEARCH response and use it + read the tagged OK/NO/BAD response + +The following is the RIGHT way to implement SEARCH: + erase "list of searched messages" + send a SEARCH command + read and process some number of untagged responses + read the tagged OK/NO/BAD response + use the "list of searched messages" +with the following untagged response processor: + if response is ... then ... + else if response is SEARCH then + add value to the "list of searched messages" + else if response is ... then ... + +Now...under normal circumstances in today's protocol, you will not get a +SEARCH response except during a SEARCH command. But you MUST NOT assume +that, since maybe, just maybe, a protocol extension will cause SEARCH +responses to happen at other times. + +Most untagged responses can, and do, happen at any time in IMAP in real +life: OK, NO, BAD, BYE, FLAGS, EXISTS, RECENT, EXPUNGE (some exceptions +here), FETCH, CAPABILITY. + +Only a few responses seem to be limited to specific commands in the base +protocol: LIST, LSUB, SEARCH, STATUS. But this can change at any time, so +don't assume that it is so limited. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22886.mbox:2,S new file mode 100644 index 00000000..397cd36c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22886.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sat Dec 1 23:42:47 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FLAGS reply +In-Reply-To: <1196580950.9771.687.camel@hurina> +References: <1196580950.9771.687.camel@hurina> +Message-ID: + +On Sun, 2 Dec 2007, Timo Sirainen wrote: +> I see that when adding a new keyword, most servers send: +> * FLAGS (hello \Answered \Flagged \Deleted \Draft \Seen) +> * OK [PERMANENTFLAGS (hello \* \Answered \Flagged \Deleted \Draft \Seen)] Permanent flags +> before sending the FETCH FLAGS: +> * 1 FETCH (FLAGS (hello)) + +This confirms the creation of the flag and whether or not it is a +permanent flag. It needs to be sent. + +> Is this really useful/required? RFC seems to say it's supposed to be +> sent only on SELECT. + +Any response can be sent at any time. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22889.mbox:2,S new file mode 100644 index 00000000..453c4f72 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22889.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From dave at cridland.net Fri Nov 16 10:02:50 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> +References: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> +Message-ID: <6199.1195236170.977095@invsysm1> + +On Fri Nov 16 17:44:16 2007, Dan Karp wrote: +> If there are 50 messages in the mailbox and a client requests +> +> A001 FETCH 52 (FLAGS) +> +> then what are the acceptable server responses? I'm currently +> treating it as an example of RFC 2180 section 4.1.2 and returning +> +> A001 NO Some of the requested messages no longer exist + +BAD - the client knows a priori that there is no message 52. + +The exception would be if there was a message 52, but it has +subsequently been expunged without telling the client. In this +instance, you're technically breaking the specification, but many +servers will return empty data, no flags, etc, which seems to be the +least harmful way of coping. (ie, RFC2180 4.1.3). Note that even in +this case, you mustn't change the sequence numbers - ie, if message +51 were expunged but message 52 not, message 52 is still message 52 - +51 would return the empty data. + +4.1.2 is actually rather painful, because it's suggesting different +client behaviour from the base spec. It can, and will, either confuse +clients, or outright break them, including putting them into a loop, +asking for the same data continuously. + +4.1.3 is the least obtrusive of the "broken" behaviours, since it's +quite likely that the client will shortly do something allowing the +EXPUNGE to be sent. Ideally, 4.1.1 should be done, but I do +sympathize with the issues this can cause. 4.1.4 is likely to confuse +some clients, albeit to a lesser extent than 4.1.2, but I'd rather +4.1.3, in general - even if technically broken. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22893.mbox:2,S new file mode 100644 index 00000000..29d2afb2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22893.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From dkarp at zimbra.com Wed Oct 24 11:33:50 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] STATUS on a \NoSelect mailbox +In-Reply-To: <32551.1193249693.354094@peirce.dave.cridland.net> +Message-ID: <974430145.173071193250830003.JavaMail.root@dogfood.zimbra.com> + +> I'm in agreement with Mark, but I would point out that in this case, +> GMail is behaving badly: +> +> > A3 LIST "" "*" +> > * LIST () "/" "INBOX" +> > * LIST () "/" "Trash" +> > * LIST (\Noselect) "/" "[Gmail]" +> > * LIST () "/" "[Gmail]/All Mail" +> > * LIST () "/" "[Gmail]/Drafts" +> > * LIST () "/" "[Gmail]/Sent Mail" +> > * LIST () "/" "[Gmail]/Spam" +> > * LIST () "/" "[Gmail]/Starred" +> > * LIST () "/" "[Gmail]/Trash" +> > A3 OK Success +> +> That [Gmail] heirarchy point shouldn't be listed here - as Mark says, +> it's not a mailbox, therefore shouldn't match. +> +> It should be returned for LIST "" "%", but not LIST "" "*". + +Why? RFC 3501 section 6.3.4 has the following example: + + Examples: C: A682 LIST "" * + S: * LIST () "/" blurdybloop + S: * LIST (\Noselect) "/" foo + S: * LIST () "/" foo/bar + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22899.mbox:2,S new file mode 100644 index 00000000..2e386baf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22899.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Aug 8 08:48:52 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] More evil hierarchy delimiters +In-Reply-To: <1186583972.29782.339.camel@hurina> +References: <1182954665.3768.348.camel@hurina> + + <1186583972.29782.339.camel@hurina> +Message-ID: + +The simple answer to your question is yes, it is legal. But!! + +The fact that a specification does not flatly prohibit doing something +idiotic does not mean that it is a good thing for servers (or clients) to +do the idiotic thing. + +I doubt that very many clients would recognize a non-default namespace +rooted with INBOX/, much less cope with the situation of the default +namespace having a different hierarchy character than this non-default +INBOX/ namespace. + +Note too that the case-independent rules only apply for INBOX and not for +INBOX/ . Thus there is no reason to expect that INBOX/foo and inbox/foo +refer to the same object. Nor is there a reason to be surprised if they +do refer to the same object. This is this reason why hierarchies in the +default namespace rooted with INBOX are a bad idea; although not as bad as +a namespace rooted with INBOX. + +Please consider Postel's robustness principle: "be conservative in what +you send, and liberal in what you accept." + +That principle does NOT mean "accept protocol violations." + +It means that, to maximize interoperability, that you should not send +idiotic things EVEN IF they are in compliance with the specification. It +also means that you should be able to cope with reading idiotic things. + +RFC 3501 clearly lays out a model of namespaces using the # convention as +an identifiable breakout character. If you intend to have multiple +namespaces (and if you have simultaneous hierarchies with different +delimiters then you have multiple namespaces) then you should use this +model and not try to do something else that is ambiguous. + +On Wed, 8 Aug 2007, Timo Sirainen wrote: +> So, based on that description I assume this is legal then: +> +> 1 LIST "" * +> * LIST () "/" INBOX +> * LIST () "." foo +> 1 OK +> INBOX would be in a separate namespace, so: +> 2 LIST "" INBOX/* +> * LIST () "/" "INBOX/sub" +> 2 OK + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22903.mbox:2,S new file mode 100644 index 00000000..27105cf3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22903.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From bill.shannon at sun.com Mon Jul 2 11:49:37 2007 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP mutual exclusion +Message-ID: <468948C1.8040200@sun.com> + +I occasionally get questions from people who want to have multiple +clients process the messages in a single mailbox. Usually this +is done to balance load across multiple clients. Each message in +the mailbox needs to be processed by exactly one client. + +Is there a well-defined way for clients to coordinate the processing +of messages in the mailbox using the IMAP protocol? Is there an +equivalent of "test and set" in the IMAP protocol? Or is one of the +newer extensions required? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095104.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095104.22911.mbox:2,S new file mode 100644 index 00000000..44d31908 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095104.22911.mbox:2,S @@ -0,0 +1,98 @@ +MBOX-Line: From dave at cridland.net Fri Jun 1 01:16:03 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Subscriptions in IMAP +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <8046.1180599490.471444@peirce.dave.cridland.net> + +Message-ID: <3770.1180685763.825922@peirce.dave.cridland.net> + +On Thu May 31 21:45:42 2007, Mark Crispin wrote: +> On Thu, 31 May 2007, Dave Cridland wrote: +>> I'm not blaming Mark, or the others involved in RFC3501 here - +>> it's understandable that the semantics of a subscribed mailbox +>> weren't fully described in the original design, because the intent +>> was obvious - unfortunately, as time has moved on, it's less +>> obvious, and requires a certain degree of archeology to detirmine +>> what the intent was, and besides, we have multiple clients +>> gradually pulling the intent in different and contradictory +>> directions. +> +> There is a deeper problem. The idea of having a generic mechanism +> to support a common concept fails, more often than it succeeds, +> whenever it depends upon a cooperative use of that mechanism. All +> it needs is one bad actor to render the mechanism useless, and to +> cause all the other actors to flee back into a protected space that +> it controls. +> +> +In a lot of cases, even that's not too bad, as long as the protected +space is available. I think there's a general attitude toward trying +to use facilities and specifications interoperably, at least if at +all possible. + +Witness keywords and flags, for instance - that's certainly a shared +configuration situation, yet for the most part IMAP clients have a +tendancy to either ignore the flags they don't recognise, or present +them fairly neutrally. And that's even with the distinctly unclear +usages, like $LabelX, as used by the Mozilla Mail/News clients. + + +> The bad actor problem afflicts many areas. Consider what happens +> when you install a media player to play a specific file. It +> doesn't just install that program. It also sets that program as +> the default media player for all your other media files; puts an +> extra icon on the desktop, the start menu, the quick launch +> taskbar; and adds a launcher to the notification area. +> +> +Actually, I've noticed a distinct change over the years. This used to +be the case, but increasingly, applications are designed toward +cooperation. It's not helped by the general design of the desktop +systems which push toward a single application for a single task, and +I don't think it's entirely fair to blame the applications in this +instance. (Desktops such as GNOME seem to promote the concept of a +default application for a media type, plus lots of alternatives, yet +as far as I can tell, there's still a single application granted +responsibility for each URI scheme). + +> This, in my mind, is what doomed ACAP. + +Like so many things, don't knock it until you've tried it. :-) + +> It's easy to blame ACAP's overengineering (and it did have +> that!), but the more fundamental flaw was the notion that +> applications could share configuration without abusing it. + +Actually, there's very little of that flaw in evidence amongst the +(admittedly small) deployments I've seen. The only instance I can +recall is where Mulberry changes addressbook entries by deleting and +recreating them, thus losing all attributes it doesn't understand +(including some standard ones, as well as any vendor-private ones). I +happen to think that's bad ACAP whichever way you cut it - it'd be +like removing all user-defined keywords on a message if you set the +\Seen flag - and it breaks inheritance chains as well. + +In my opinion, ACAP is particularly well-designed in this respect, as +it provides the "protected space" that the applications can control +to handle their own requirements. (Of course, this also becomes +responsible for part of the over-engineering). Both ANNOTATE and +METADATA have this protected space too, of course, whereas +traditional IMAP flags are considerably more ad-hoc in this respect, +and there's only a one-size-fits-all subscription list - which is +perhaps why the latter suffers so much. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22595.mbox:2,S new file mode 100644 index 00000000..08afc7d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22595.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 25 13:00:57 2015 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> + <55130CEA.7050608@isode.com> + +Message-ID: <1427313657.1339157.245233101.46FE2F36@webmail.messagingengine.com> + +On Thu, Mar 26, 2015, at 06:39 AM, Kostya Vasilyev wrote: +> Yes, that's what I meant by "which is also wrong". +> +> Every change to message flags should bump the message's MODSEQ value. +> +> Now in this case, there was no actual change *between* the two lines +> in the response, it's the server reporting wrong flags values first +> and correct values next (the message already had \Answered and \Seen +> prior to my adding \Flagged)... +> +> ...and the real issue is new flags reported without \Answered first, +> then with it, but... +> +> ... the identical MODSEQ values make it harder to work around this +> real issue. + +I'm pretty sure this takes it from "annoying but legitimate" to +"strictly incorrect". That first line should not have the latest +MODSEQ value if it doesn't contain the flags that were set at the time +of that MODSEQ. + +I spent a lot of work getting the Cyrus internals right for this +years ago, because there were bugs with the way Cyrus handled +per-user \Seen and modseqs, as well as around expunges. It was a lot +of work, but a half-functioning implementation means that clients +can't rely on anything. + +Bron. + +-- +Bron Gondwana brong@fastmail.fm + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22743.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22743.mbox:2,S new file mode 100644 index 00000000..5e5d8b66 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22743.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From brong at fastmail.fm Wed Mar 28 00:48:48 2012 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:48 2018 +Subject: [Imap-protocol] using a global CONDSTORE mod-sequence for + HIGHESTMODSEQ +In-Reply-To: +References: + <20897.1332887190.012640@puncture> + +Message-ID: <20120328074848.GA2878@launde.brong.net> + +On Wed, Mar 28, 2012 at 01:42:23AM +0300, Timo Sirainen wrote: +> On 28.3.2012, at 1.26, Dave Cridland wrote: +> > It'll work, it just might be less efficient. +> > +> > But if the client is using QRESYNC, it'll be no different at all, I suspect. +> +> Well, some QRESYNC capable clients might think that they're being smart and syncing only mailboxes that have changed, but in this server all of the mailboxes have changed, so the client might SELECT all of them.. Then again I don't know if any clients are really doing (or planning to do) that. +> +> Would work better if you kept a per-mailbox HIGHESTMODSEQ even if they point to one shared modseq counter. + +That's what we're doing in conversations-enabled Cyrus at FastMail. I +haven't yet pushed it to master for 2.5, but it's probably what we'll do. +One counter across the entire user, but then keeping the actual HIGHESTMODSEQ +per folder. + +The more interesting bits are how to handle shared mailboxes in this case. +I suspect every one will be its own "modseqroot", rather than the shared +root per user. + +The good thing about the global counter is that we have a special call to +read just that, and if it hasn't changed then we know ALL folders are +unchanged. We also keep a global UIDVALIDITY counter per user, and any +rename, create or delete increments that counter, so we can just use the +single counter to know if a new LIST needs to be sent. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22756.mbox:2,S new file mode 100644 index 00000000..dc395125 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22756.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From snowjn at aol.com Tue Nov 15 05:27:45 2011 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321346922.6321.140660999083661@webmail.messagingengine.com> +References: , + , + <1321311798.30750.140660998918417@webmail.messagingengine.com> <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> +Message-ID: <4EC268D1.7010404@aol.com> + +I disagree with the "musts", or at least it's inconsistent. + +The first paragraph says the unseen response must be sent if there are +any unseen. This makes the second paragraph unnecessary. If the unseen +response is missing, the client doesn't have to assume anything. It can +know +that there are no unseen. + +To document existing behavior, is should read: + +OK [UNSEEN ] + The message sequence number of the first unseen + message in the mailbox. If there are no unseen + messages in the mailbox the UNSEEN response MUST + be omitted. + If this is missing, the client can not make any + assumptions about the first unseen message in the + mailbox, and needs to issue a SEARCH command if + it wants to find it. + + +or, alternatively make the existence of the unseen response a SHOULD. + +OK [UNSEEN ] + The message sequence number of the first unseen + message in the mailbox. If there are any unseen + messages in the mailbox, an UNSEEN response SHOULD + be sent, if not it MUST be omitted. + If this is missing, the client can not make any + assumptions about the first unseen message in the + mailbox, and needs to issue a SEARCH command if + it wants to find it. + + + +snow. + + + +Bron Gondwana wrote: +> On Tuesday, November 15, 2011 12:13 PM, "David Harris" wrote: +> +>> When you wake up and get back onto this, one more small correction: +>> +> +> Yeah, it's fine for you. You already live in tomorrow! +> +> +>> If there are any unseen messages in the mailbox, an UNSEEN +>> response MUST be sent, if not it MUST be omitted. +>> +>> We may as well be consistent with our MUSTs. +>> +> +> Thanks for catching my late-night messup. Indeed. MUST keep our MUSTs +> in line! +> +> I also re-ordered the paragraphs so the "what to do when writing a server" +> parts were together before the "what clients have to do if it's not there". +> +> Submitted: +> +> http://www.rfc-editor.org/errata_search.php?rfc=3501&eid=3032 +> +> Bron. +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22772.mbox:2,S new file mode 100644 index 00000000..a8ab7545 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22772.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu May 26 12:59:35 2011 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDEA412.6030305@aol.com> +References: <4DDEA412.6030305@aol.com> +Message-ID: + +On Thu, 26 May 2011, John Snow wrote: +> My question is simply, why? Why is the sequence number needed when the +> command specified a UID, and the UID must be included in the response. +> Seems to me the UID command should have a UID response. snow. + +Right now, a client can parse a FETCH response at any time, inserting it +into its cache without having to consider any context of pending commands. +Indeed, the server can send FETCH responses at any time (modulus TCP +flow-control/deadlock concerns), and it's *required* to do so for flag +changes. Sometimes using the UID and sometimes using msgno would make +such unsolicited FETCH responses ambiguous. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22807.mbox:2,S new file mode 100644 index 00000000..626a8dd6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22807.mbox:2,S @@ -0,0 +1,154 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 11:44:11 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006111953.13490.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111817.39761.witold.krecicki@firma.o2.pl> + + <201006111953.13490.witold.krecicki@firma.o2.pl> +Message-ID: + +On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +>> Options are not a good thing +> Looking at number of possible extensions to imap and number of ones supported +> by popular IMAP servers + +The vast majority of which were mistakes and should not have happened. + +Yes, there are open source servers which implement every goofy extension +under the sun. But when you look at the Real World and which extensions +have a business case, the set becomes very small indeed. + +> Do any of IMAP servers implement COPY as atomic? + +All compliant IMAP servers do. + +> You're saying that you can undo a failed COPY by deleting copied messages and +> you can't undo MOVE by moving everything back. Situations in which COPY using +> maildirs is not atomic: +> 1. During COPYing filesystem error causes switch to read-only mode. Several +> messages are copied, and cannot be deleted. +> 2. During COPYing server crashes. + +Yes, maildir has a problem complying with IMAP's atomicity requirements. +Maildir is not a particularly good store for IMAP. + +> I am seeing Your point on how MOVE can fail to be atomic, but those are +> exactly the same cases in which COPY can also fail to be atomic, so where's +> the point? + +The point is that it is a mistake to assume that maildir is a prototypical +store for IMAP. Any implementation using maildir is going to have +problems. + +MOVE doesn't solve those problems in maildir; it makes them worse. MOVE +doesn't solve those problems in other formats either. + +>> Thus, the attractive idea of using rename for a maildir type store doesn't +>> work. You have to use something like hardlink+delete. But even then you +>> have error conditions. What if, for some reason, the delete doesn't work? +> Again, what if after copying half of the messages, for some reason, delete +> doesn't work? + +You're still thinking in terms of maildir as being a prototypical IMAP +store. + +In an indexed store, the copied messages do not exist until the index is +updated, and the index update is the final step and is atomic. The worst +consequence of a crash prior to this is unindexed data occupying +inaccessible space that gets recovered in the next audit. Some stores +don't even have that problem. + +MOVE provides no real benefit to such stores; yet those stores are the +only ones that can actually implement it properly. + +>>> Also, the implementation of MOVE method in clients is, in most cases, not +>>> a problem at all. +>> "[It is], in most cases, not a problem at all" is the earmark of +>> inexperience and not having thought all these issues through. Every +>> separate code path for the same functionality adds 2^n complexity in +>> overall code path. +> It is already implemented in, at least, Thunderbird (for XAOL-MOVE). + +Think about what happens when some server implements XAOL-MOVE in a way +that is different than Thunderbird expects (since it has only ever seen an +AOL server do it). + +Experience says that this is a real (and quite expensive) problem. + +>> MOVE is unimplementable as an atomic operation unless the DB works that +>> way. +> In any mail store in which mailbox membership is treated as 'mail label' it is +> atomic. + +And in such a case MOVE has no benefit. There's no quota cost to COPY. + +>> The first thing is to realize that rename can't work. You have to use +>> hardlink+delete. And that's non-atomic and has danger points where an +>> error can mean that you can't go forward or back. +> In this way COPY is also non-atomic, as mentioned before. + +That is one of many reasons why Maildir is not a particularly good store +for IMAP. Timo's server had to extend Maildir. + +>> Not easily. It's possible with a database if the database is defined in a +>> way to make it possible. But in such databases it's a pointless tweak +>> over pipelining. +> In such databases it guarantees atomicity - after MOVE and dropped connection +> client is SURE that message is either in source or destination folder, and not +> in both at the same time. + +What is the client use case? What clients have expressed a need for move +atomicity (which is the only reason not to use pipelining)? + +So far, you've been talking about server-based benefits, which I (and +others) have shown are more illusory than real. Adding MOVE will/can not +fix a slow server implementation of COPY. + +Consider, in particular, a commercial client product in which implementing +this option costs real money and adds a support window of vulnerability +(suppose the server advertises XAOL-MOVE but the server implementation is +buggy?). + +These are REAL problems. Right now, as we speak, the IMAP world faces +client support issues because of servers that sends broken ENVELOPE and +BODYSTRUCTURE data. And, invariably, the answer is "it must be a bug in +the client since it works fine with Outlook." + +Multiple client code paths depending upon server is not a good thing. + +>> John is a smart guy, but I'll bet that I can discover atomicity and/or +>> error recovery flaws in AOL's move functionality. +> UPDATE messages set folder='Trash' where uid in ... - where is the atomicity +> flaw here (assuming that database is ACID)? + +If AOL uses a database that permits that kind of operation, then there is +no reason why COPY can not also work that way. + +There is no server benefit. MOVE does not solve the problem of servers +with slow COPY. It does create the temptation for server implementors +with slow COPY to create an unsafe, non-atomic, implementation of MOVE +(e.g., using rename()). + +The only benefit is client benefit, and specifically that of an atomic +operation. But no use case has been given for it. + +This is an "attractive nuisance". It's one of those ideas that sounds +really good on paper until you study the unintended consequences. + +>> It's easy enough to say "that's alright, we don't care about these edge +>> cases" in a private implementation. +>> The problem is that it isn't alright, and you have to care, in a public +>> specification. +> You are assuming that it's impossible to implement this operation properly +> (eg. atomic), and this is obviously false statement. + +That sounds like inexperience on your part. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22866.mbox:2,S new file mode 100644 index 00000000..c3c4b723 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22866.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Fri Jul 11 07:43:12 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Questions re RFC 3501 +In-Reply-To: <4876B463.6030909@verizon.net> +References: <4876A25B.8010503@verizon.net> + + <4876B02E.3030507@verizon.net> <4876B463.6030909@verizon.net> +Message-ID: <1215787392.31765.37.camel@hurina> + +On Thu, 2008-07-10 at 21:16 -0400, Joshua Cranmer wrote: +> Joshua Cranmer wrote: +> > Mark Crispin wrote: +> >> Such a list is ever changing, and listing what servers don't support +> >> them correctly is likely to result in considerable hostility aimed at +> >> the lister. It's easier to list servers that do things right: +> >> UW/Panda, Dovecot, and Cyrus. The author of Dovecot has been quite +> >> diligent in producing torture tests for servers, and he and the +> >> author of UW/Panda (me) have had a friendly competition in who can +> >> fix the problems uncovered first. +> >> +> > Pray tell, where might I find this list? +> > +> For clarification: I'm referring to the torture test list. + +http://imapwiki.org/ImapTest/ServerStatus + +Currently it just lists a boring n/34 number for servers. It wouldn't be +too difficult to have imaptest print out which problems are related to +which extensions (or base protocol, or combination of extensions). And I +guess the n/34 could be a link that lists all the issues with all the +specifics. But I haven't bothered yet. + +Anyway, feel free to create new tests and I'll add them to imaptest +distribution. It should be quite easy to create the tests (at least from +the syntax point of view - how to create comprehensive and correct tests +are another matter). +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22871.mbox:2,S new file mode 100644 index 00000000..f45b7ead --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22871.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Jun 24 03:49:10 2008 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] rfc 2231 +In-Reply-To: <1214301808.3904.1795.camel@hurina> +References: <1214301808.3904.1795.camel@hurina> +Message-ID: <4860D126.7030406@isode.com> + +Timo Sirainen wrote: + +>Do other IMAP servers implement RFC 2231 support for BODY/BODYSTRUCTURE? +> +> +Yes. I believe Cyrus Imapd implements it as well. + +>It's been in my TODO for 5 years and today was the first time anyone +>asked about it. Is it even a good idea to implement it, or why wasn't it +>included in RFC 3501? +> +Probably because it wasn't widely deployed back then. And I wouldn't be +surprised if there are bugs in handling parameter continuation. + +As a side note, CONVERT has support for RFC 2231 as a SHOULD. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22880.mbox:2,S new file mode 100644 index 00000000..9f58d317 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22880.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Feb 5 12:56:28 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> + <"08Feb5. 091040pst. 58696"@synergy1.parc.xerox.com> + +Message-ID: + +Btw. I meant to say it but somehow got bogged down in one example. + +8-bit occurs elsewhere too. LOGIN is just an example. Another reasonable +example is FETCH BODYSTRUCTURE: If the sender of a message includes +8-bit characters where none are permitted, a compliant and well-behaved +IMAP server asked to serve that message is often up the creek. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22883.mbox:2,S new file mode 100644 index 00000000..61709fba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22883.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From guenther+imap at sendmail.com Wed Jan 9 20:23:53 2008 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: +References: + + +Message-ID: + +On Thu, 10 Jan 2008, Liam Clarke wrote: +> Thanks for that - my vague fear is that a poorly behaved server could +> mix responses to one request with responses for another, which +> probably betrays my lack of experience with IMAP servers. + +It's not 100% clear to me what you mean by "mix responses to one requests +with responses for another". Can a server send back FETCH responses for +messages that you never asked about? Yes! Can it send back FETCH data +items that you never asked about? Yes! Indeed, those both commonly occur +for flags. For example, let's say the flags on messages 2 and 3 have +changed since the client last sent a command, and then it sends this: + + a042 FETCH 2 RFC822.SIZE + +The server may send back the following: + * 2 FETCH (RFC822.SIZE 123985 FLAGS (\seen \deleted)) + * 3 FETCH (FLAGS (\seen \recent \deleted)) + a042 Ok + + +IMAP FETCH is effectively a cache-filling protocol: the client asks for +whatever data that it wants but doesn't already have and is told when all +that data has been sent. However, the server may send additional, +unrequested data along the way in order to keep the client's cache up to +date. c.f. RFC 3501, section 5.2 for what servers are required and +expected to send without being asked. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22886.mbox:2,S new file mode 100644 index 00000000..397baf0b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22886.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From tss at iki.fi Sat Dec 1 23:53:43 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FLAGS reply +In-Reply-To: +References: <1196580950.9771.687.camel@hurina> + +Message-ID: <1196582023.9771.694.camel@hurina> + +On Sat, 2007-12-01 at 23:42 -0800, Mark Crispin wrote: +> On Sun, 2 Dec 2007, Timo Sirainen wrote: +> > I see that when adding a new keyword, most servers send: +> > * FLAGS (hello \Answered \Flagged \Deleted \Draft \Seen) +> > * OK [PERMANENTFLAGS (hello \* \Answered \Flagged \Deleted \Draft \Seen)] Permanent flags +> > before sending the FETCH FLAGS: +> > * 1 FETCH (FLAGS (hello)) +> +> This confirms the creation of the flag and whether or not it is a +> permanent flag. It needs to be sent. + +How about when keywords are removed? Is this valid: + +1 fetch 1 flags +* 1 FETCH (FLAGS (\Seen hello)) +1 ok +[[ here another connection expunges message 1 ]] +2 fetch 2 flags +* 2 FETCH (FLAGS ()) +* FLAGS (\Answered \Flagged \Deleted \Draft \Seen) +* OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)] Permanent flags +2 ok + +This session still sees that message 1 contains "hello", but it's no +longer in FLAGS. Should the server instead have sent: + +* 1 FETCH (FLAGS (\Seen)) +* 2 FETCH (FLAGS ()) +* FLAGS ... +* OK [PERMANENTFLAGS .. + +(Or just avoided sending FLAGS/PERMANENTFLAGS until message 1 was seen +expunged.) +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22889.mbox:2,S new file mode 100644 index 00000000..7b3033aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22889.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Nov 16 10:51:17 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: <554384819.204731195236079452.JavaMail.root@dogfood.zimbra.com> +References: <554384819.204731195236079452.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Fri, 16 Nov 2007, Dan Karp wrote: +>> Note as well that RFC 2180 is Informational. The fact that an +>> Informational RFC says something does not make it normative. +> It may not mark it as normative, but it unquestionably marks it as acceptable. + +Anyone can publish an Informative RFC. That doesn't mean that what it +says was valid then, or is balid today. + +I never considered 4.1.2 of RFC 2180 to be acceptable. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22893.mbox:2,S new file mode 100644 index 00000000..ad92f700 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22893.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Oct 24 12:16:18 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] STATUS on a \NoSelect mailbox +In-Reply-To: <32551.1193249693.354094@peirce.dave.cridland.net> +References: <1289589251.146651193229245957.JavaMail.root@dogfood.zimbra.com> + <32551.1193249693.354094@peirce.dave.cridland.net> +Message-ID: + +On Wed, 24 Oct 2007, Dave Cridland wrote: +> That [Gmail] heirarchy point shouldn't be listed here - as Mark says, it's +> not a mailbox, therefore shouldn't match. +> +> It should be returned for LIST "" "%", but not LIST "" "*". + +I disagree. It depends upon the semantics of the underlying mail store. + +In some mail stores, such as Cyrus, there is no such physical object as a +"directory" (which is typically what a \NoSelect name is); that is, a +bucket that holds mailboxes and other directories. In others, such as the +ones typically exported by UW, there is such a physical object. + +IMAP does NOT, repeat NOT!! dictate the semantics of the server's mail +store; rather, it provides a means to export the mail store's semantics. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22899.mbox:2,S new file mode 100644 index 00000000..cf08d919 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22899.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Wed Aug 8 13:01:12 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Best Practices for Implementing an IMAP Client +Message-ID: <1186603272.29782.355.camel@hurina> + +http://www.imapwiki.org/ClientImplementation + +Feel free to update. I was hoping that it would eventually include +pretty much all the information needed by a new IMAP client developer, +including possible server bugs and their workarounds. So if a client +does something badly, you could just point the developers to a page +which says how it should have been done instead. + +If you disagree with how something should be done, either let me know or +modify the Wiki directly. I've subscribed to .* pages so I get an email +if anything gets changed (you can do it too). Also see +http://www.imapwiki.org/About + +(The domain was just registered, if it doesn't work or shows a Gandi +page, you can use http://imap.dovecot.org/ also for now) + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22903.mbox:2,S new file mode 100644 index 00000000..fa4b33d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22903.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From alexey.melnikov at isode.com Mon Jul 2 11:54:27 2007 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP mutual exclusion +In-Reply-To: <468948C1.8040200@sun.com> +References: <468948C1.8040200@sun.com> +Message-ID: <468949E3.5020004@isode.com> + +Bill Shannon wrote: + +> I occasionally get questions from people who want to have multiple +> clients process the messages in a single mailbox. Usually this +> is done to balance load across multiple clients. Each message in +> the mailbox needs to be processed by exactly one client. +> +> Is there a well-defined way for clients to coordinate the processing +> of messages in the mailbox using the IMAP protocol? Is there an +> equivalent of "test and set" in the IMAP protocol? Or is one of the +> newer extensions required? + +You need a server that supports RFC 4551 (CONDSTORE). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22911.mbox:2,S new file mode 100644 index 00000000..52c8a326 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22911.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jun 1 13:55:38 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Subscriptions in IMAP +In-Reply-To: <3770.1180685763.825922@peirce.dave.cridland.net> +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <8046.1180599490.471444@peirce.dave.cridland.net> + + <3770.1180685763.825922@peirce.dave.cridland.net> +Message-ID: + +On Fri, 1 Jun 2007, Dave Cridland wrote: +> Witness keywords and flags, for instance - that's certainly a shared +> configuration situation, yet for the most part IMAP clients have a tendancy +> to either ignore the flags they don't recognise, or present them fairly +> neutrally. And that's even with the distinctly unclear usages, like $LabelX, +> as used by the Mozilla Mail/News clients. + +I think that is because keywords languished in obscurity for so long. +Throughout the 1990s and early 2000s people used multiple mailboxes to +categorize messages instead of using keywords. Now that Gmail has come +along, the pendulum is moving back. + +I await the first client that, observing the current 30 keyword per +mailbox limit in UW imapd, automatically creates $BlurdyBloopMail1 through +$BlurdyBloopMail30 to claim the space for itself. + +> Actually, I've noticed a distinct change over the years. This used to be the +> case, but increasingly, applications are designed toward cooperation. + +Such is still very much a work in progress, and by no means accomplished; +but this is not the appropriate forum for my grumbles on that topic. + +>> This, in my mind, is what doomed ACAP. +> Like so many things, don't knock it until you've tried it. :-) + +Don't get me wrong. ACAP was well-intentioned. After all, UW was a +primary instigator of ACAP, on the grounds that IMSP was unsatisfactory! + +>> It's easy to blame ACAP's overengineering (and it did have that!), but +>> the more fundamental flaw was the notion that applications could share +>> configuration without abusing it. +> Actually, there's very little of that flaw in evidence amongst the +> (admittedly small) deployments I've seen. + +You've just stated my point. ACAP does not demonstrate large-scale +sharing of configuration since it is little-used. + +Even more damning is your account of how Mulberry abuses ACAP. If a good +guy like Cyrus could screw up that way (and I consider him to be pretty +close to a "best case"), just think about what would happen when lesser +developers are in the game. + +> Both ANNOTATE and METADATA have this protected space +> too, of course, + +With little deployed use, and ending up becoming Experimental... + +> whereas traditional IMAP flags are considerably more ad-hoc +> in this respect, and there's only a one-size-fits-all subscription list - +> which is perhaps why the latter suffers so much. + +My personal belief is that subscription list abuse came about because of a +certain individual's misunderstanding of warning about not using the * +wildcard in LIST. Said individual interpreted "LIST * is inefficient" as +meaning "do the inefficient LIST * once, then put it in the subscription +list so it doesn't have to be done again." This represented a complete +misunderstanding as to why the * wildcard is bad. + +Subsequent clients copied this behavior as "this is what you have to do in +IMAP." + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095105.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095105.22914.mbox:2,S new file mode 100644 index 00000000..c4b28bc5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095105.22914.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From tss at iki.fi Fri May 18 13:43:55 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST + STATUS +Message-ID: <1179521035.32181.1029.camel@hurina> + +Are there any drafts / non-standard implementations for returning +mailbox list and STATUS replies for multiple mailboxes with a single +command? Such as: + +1 LIST () "" "%" RETURN (STATUS (UNSEEN MESSAGES)) + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22595.mbox:2,S new file mode 100644 index 00000000..20c569e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22595.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From slusarz at curecanti.org Wed Mar 25 13:56:27 2015 +To: imap-protocol@u.washington.edu +From: Michael M Slusarz +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: <64e2246f-9d64-40bc-b373-ec6a45f6acfb@gulbrandsen.priv.no> +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> + <64e2246f-9d64-40bc-b373-ec6a45f6acfb@gulbrandsen.priv.no> +Message-ID: <20150325145627.Horde.BnbIyKq__wNeZ750DElb2MD@bigworm.curecanti.org> + +Quoting Arnt Gulbrandsen : + +> Michael M Slusarz writes: +>> This is inefficient. But it is perfectly acceptable IMAP. +> +> It's not acceptable: the modseq should change whenever the flags do. + +It sounds like people are agreeing that: + +a001 SOME COMMAND +* 1 FETCH (FLAGS (\Foo) MODSEQ (2) UID 1) +[snapshot 1] +* 1 FETCH (FLAGS (\Foo \Bar) MODSEQ (2) UID 1) +[snapshot 2] +a001 OK +[snapshot 3] + +...means that the flags on message 1 supposedly "changed" twice. In +other words, people are updating internal modseq caches at [snapshot +1] and [snapshot 2]. + +I don't see it that way. I view this series of commands as telling me +"what is the mailbox state as of snapshot 3". I don't care about +snapshot 1 or snapshot 2. I only care that at the end of the command, +I look at this and say that MODSEQ 2 is associated with flags (\Foo +\Bar) since that is what the server reported. I don't care about +intermediate transport steps the server took to inform the client of +this; I only care about the final state. + +(I would agree that the Gmail example provided is incorrect *if* the +FETCH responses were received as unsolicited responses in an IDLE +command. But that wasn't the context of the example provided.) + +For example, I have definitely seen this before: + +a002 UID STORE [...] +* 1 FETCH (MODSEQ (2)) +* 1 FETCH (FLAGS (\Foo \Bar) MODSEQ (2) UID 1) +a002 OK + +A local synchronized mailbox would be in an invalid state if you +updated it after the first FETCH. This response may be broken from a +protocol standpoint, but it happens and I want/have to be able to deal +with it. + +I think my disconnect with the majority is looking at client commands +from a transactional perspective rather than each individual FETCH +component. I'm only interested in committing the changes if the client +command is fully completed. If an IMAP session terminates before the +command is complete, I would much rather toss that data to be on the +safe side, especially since there is no guarantee that the cached data +is correct when dealing with servers that may not be 100% protocol +correct. Not to mention there can be horrible performance issues with +a non-transactional approach, depending on the number of FETCH +responses involved and how the backend client cache storage is +configured - e.g. if that cache storage is not local. + +So just me again confusing strict semantics with implementation +details. I shall crawl back into the hole from whence I came and not +bother this thread any more. + +michael + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22756.mbox:2,S new file mode 100644 index 00000000..09303a09 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22756.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 15 05:48:00 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <4EC268D1.7010404@aol.com> +References: , + , + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> +Message-ID: <1321364880.3715.140660999182809@webmail.messagingengine.com> + +On Tuesday, November 15, 2011 8:27 AM, "John Snow" wrote: +> I disagree with the "musts", or at least it's inconsistent. + +My intention was to stick with the REQUIRED verbiage. But I'm happy +with SHOULD. + +> The first paragraph says the unseen response must be sent if there are +> any unseen. This makes the second paragraph unnecessary. If the unseen +> response is missing, the client doesn't have to assume anything. It can +> know that there are no unseen. + +Or that it's talking to pre-rfc3501 server. Mark said that the wording +about needing a search was added in response to a previous uncertainty +about how to respond to this field. I'd like his comment on how best +to handle that. + +I'd be happy to cut the "if this is missing" part, and say "you can assume +there are no unseen if this field isn't sent", but negative assumptions +suck. + +If I was starting from scratch: + +OK [UNSEEN NIL] + +But then if I was starting from scratch, and it was my "baby", I wouldn't +do it like this anyway. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22772.mbox:2,S new file mode 100644 index 00000000..747265a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22772.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 26 13:00:20 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDEA412.6030305@aol.com> +References: <4DDEA412.6030305@aol.com> +Message-ID: + +On Thu, 26 May 2011, John Snow wrote: +> My question is simply, why? Why is the sequence number needed when the +> command specified a UID, and the UID must be included in the response. +> Seems to me the UID command should have a UID response. + +You have already asked this "question" many times. + +Clients that use only UIDs and disregard message sequence numbers are +doomed to suck. + +IMAP can not prevent the creation of clients that suck; but it will +nonetheless continue to enable the creation of clients that do not suck. + +Nor will IMAP repeat the UID SEARCH command's mistake of command modality +in response interpretation. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22807.mbox:2,S new file mode 100644 index 00000000..26fd7758 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22807.mbox:2,S @@ -0,0 +1,179 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 12:13:56 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111953.13490.witold.krecicki@firma.o2.pl> + +Message-ID: <201006112113.56572.witold.krecicki@firma.o2.pl> + +On Friday 11 of June 2010 20:44:11 Mark Crispin wrote: +> On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> > You're saying that you can undo a failed COPY by deleting copied messages +> > and you can't undo MOVE by moving everything back. Situations in which +> > COPY using maildirs is not atomic: +> > 1. During COPYing filesystem error causes switch to read-only mode. +> > Several messages are copied, and cannot be deleted. +> > 2. During COPYing server crashes. +> +> Yes, maildir has a problem complying with IMAP's atomicity requirements. +> Maildir is not a particularly good store for IMAP. +Yet it is the very most popular store for small-to-medium servers. + +> > I am seeing Your point on how MOVE can fail to be atomic, but those are +> > exactly the same cases in which COPY can also fail to be atomic, so +> > where's the point? +> +> The point is that it is a mistake to assume that maildir is a prototypical +> store for IMAP. Any implementation using maildir is going to have +> problems. +> +> MOVE doesn't solve those problems in maildir; it makes them worse. MOVE +> doesn't solve those problems in other formats either. +No, MOVE keeps the problems in maildirs at the same level. It does not make +them worse. + +> >> Thus, the attractive idea of using rename for a maildir type store +> >> doesn't work. You have to use something like hardlink+delete. But +> >> even then you have error conditions. What if, for some reason, the +> >> delete doesn't work? +> > +> > Again, what if after copying half of the messages, for some reason, +> > delete doesn't work? +> +> You're still thinking in terms of maildir as being a prototypical IMAP +> store. +And you're still thinking in terms of one and only implementation as the only +correct one. + +> In an indexed store, the copied messages do not exist until the index is +> updated, and the index update is the final step and is atomic. The worst +> consequence of a crash prior to this is unindexed data occupying +> inaccessible space that gets recovered in the next audit. Some stores +> don't even have that problem. +> +> MOVE provides no real benefit to such stores; yet those stores are the +> only ones that can actually implement it properly. +Database-backed stores can implement it properly and can have performance +boost. + +> >>> Also, the implementation of MOVE method in clients is, in most cases, +> >>> not a problem at all. +> >> +> >> "[It is], in most cases, not a problem at all" is the earmark of +> >> inexperience and not having thought all these issues through. Every +> >> separate code path for the same functionality adds 2^n complexity in +> >> overall code path. +> > +> > It is already implemented in, at least, Thunderbird (for XAOL-MOVE). +> +> Think about what happens when some server implements XAOL-MOVE in a way +> that is different than Thunderbird expects (since it has only ever seen an +> AOL server do it). +That would mean that the specification is not clear enough. As I can see this +is pretty often in IMAP. + +> >> MOVE is unimplementable as an atomic operation unless the DB works that +> >> way. +> > +> > In any mail store in which mailbox membership is treated as 'mail label' +> > it is atomic. +> +> And in such a case MOVE has no benefit. There's no quota cost to COPY. +Yes, there is if there is only one 'mail label' per mail. Copying in this case +is equivalent to inserting new record and, if handled inproperly, can be non- +atomic (comparing to fully atomic move) + +> >> The first thing is to realize that rename can't work. You have to use +> >> hardlink+delete. And that's non-atomic and has danger points where an +> >> error can mean that you can't go forward or back. +> > +> > In this way COPY is also non-atomic, as mentioned before. +> +> That is one of many reasons why Maildir is not a particularly good store +> for IMAP. Timo's server had to extend Maildir. +Again, yet it is the very most popular store for small-to-medium servers. + +> >> Not easily. It's possible with a database if the database is defined in +> >> a way to make it possible. But in such databases it's a pointless +> >> tweak over pipelining. +> > +> > In such databases it guarantees atomicity - after MOVE and dropped +> > connection client is SURE that message is either in source or +> > destination folder, and not in both at the same time. +> +> What is the client use case? What clients have expressed a need for move +> atomicity (which is the only reason not to use pipelining)? +You are pursuing the goal of all IMAP operations to be atomic, not me. But +read few lines above - I have written client case (specifically on weak +connection clients such as GPRS/EDGE). + +> So far, you've been talking about server-based benefits, which I (and +> others) have shown are more illusory than real. Adding MOVE will/can not +> fix a slow server implementation of COPY. +No. Only You have tried to show me that server-based benefits are illusory, and +have shown no arguments to that except for examples from exisiting +implementation. + +> Consider, in particular, a commercial client product in which implementing +> this option costs real money and adds a support window of vulnerability +> (suppose the server advertises XAOL-MOVE but the server implementation is +> buggy?). +> +> These are REAL problems. Right now, as we speak, the IMAP world faces +> client support issues because of servers that sends broken ENVELOPE and +> BODYSTRUCTURE data. And, invariably, the answer is "it must be a bug in +> the client since it works fine with Outlook." +> +> Multiple client code paths depending upon server is not a good thing. +Well, it sounds pretty weird hearing it from You. You have created a protocol +that, by design, supported extensions. And the result is different capabilities +of different implementations +> >> John is a smart guy, but I'll bet that I can discover atomicity and/or +> >> error recovery flaws in AOL's move functionality. +> > +> > UPDATE messages set folder='Trash' where uid in ... - where is the +> > atomicity flaw here (assuming that database is ACID)? +> +> If AOL uses a database that permits that kind of operation, then there is +> no reason why COPY can not also work that way. +In this example COPY would create a need to insert new records, MOVE is just +update. How could COPY work that way? + +> There is no server benefit. MOVE does not solve the problem of servers +> with slow COPY. It does create the temptation for server implementors +> with slow COPY to create an unsafe, non-atomic, implementation of MOVE +> (e.g., using rename()). +So there is server benefit (as shown above) + +> The only benefit is client benefit, and specifically that of an atomic +> operation. But no use case has been given for it. +Read above. + +> This is an "attractive nuisance". It's one of those ideas that sounds +> really good on paper until you study the unintended consequences. +What consequences? + +> >> It's easy enough to say "that's alright, we don't care about these edge +> >> cases" in a private implementation. +> >> The problem is that it isn't alright, and you have to care, in a public +> >> specification. +> > +> > You are assuming that it's impossible to implement this operation +> > properly (eg. atomic), and this is obviously false statement. +> +> That sounds like inexperience on your part. +And that sounds like total inability to listen to your counterpart on Your +part. +I have gave you a good example of mail store (that I have seen) in which MOVE +is atomic and in which MOVE is much faster than COPY - and you have ignored +it. +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22866.mbox:2,S new file mode 100644 index 00000000..08fa2330 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22866.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From Pidgeot18 at verizon.net Mon Jul 14 19:59:21 2008 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] More questions re IMAP RFCs +Message-ID: <487C1289.7000902@verizon.net> + +First off, thanks to those of you who provided resources in my last +thread; I have found them of use, although the wiki looks like it could +use some work. + +I still have more questions related to the protocol, though: + +1. Is it required that there be a namespace consisting of ""? If not, +then what are the implications for INBOX? + +2. The explanation "CHECK" says +> The CHECK command requests a checkpoint of the currently selected +> mailbox. A checkpoint refers to any implementation-dependent +> housekeeping associated with the mailbox (e.g., resolving the +> server's in-memory state of the mailbox with the state on its disk) +> that is not normally executed as part of each command. A checkpoint +> MAY take a non-instantaneous amount of real time to complete. If a +> server implementation has no such housekeeping considerations, CHECK +> is equivalent to NOOP. + +Which, if any, other commands imply a housekeeping update? I presume +CLOSE and LOGOUT would have similar semantics, and another developer +suggested that EXPUNGE might. +Also, which data need not be saved? + +3. For testing purposes, would it be better to: + a) Return PREAUTH in the initial response + b) Fail to support LOGINDISABLED as a capability without using TLS + c) Blithely return OK to all AUTHENTICATE requests (again without TLS) + +4. How supported and/or stable is the EAI-IMAP-UTF8 spec? Folding in +some of my questions on this spec: + a) How does this interoperate with legacy modified UTF-7 mailbox names? + b) If a server treats mailbox names as case-insensitive, should it +treat the UTF-8 names as case-insensitive only with respect to ASCII, +similar to how the UTF-7 version treated it? + c) What is the rational behind forbidding UTF-8 non-ASCII characters +in "" strings? + d) Are literals assumed to be UTF-8 if not otherwise specified? (e.g., +C: 1 SELECT {6+} +C: mail? +should be considered a legal mailbox of the name "mail?" and not +semantically invalid) + +5. (Not related to RFCs or draft RFCs) Is there a public IMAP server +containing the imap-protocol archives as a mailbox or namespace that I +can use for searching? Mailman does not make using list archives easy... + +Once again, thanks in advance for your responses. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22871.mbox:2,S new file mode 100644 index 00000000..8779258c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22871.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jun 24 07:01:11 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] rfc 2231 +In-Reply-To: <1214301808.3904.1795.camel@hurina> +Message-ID: <1726241373.36641214316071101.JavaMail.root@dogfood.zimbra.com> + +> Do other IMAP servers implement RFC 2231 support for +> BODY/BODYSTRUCTURE? +> It's been in my TODO for 5 years and today was the first time anyone +> asked about it. Is it even a good idea to implement it, or why wasn't +> it included in RFC 3501? + +Yeah, Zimbra does. The main impetus is the growing number of Mac mail +clients out there. They're the only ones that really exercise it, +though we've also been seeing 2231 headers from some versions of +Thunderbird. (One Thunderbird build even does 2231 headers with out- +of-order continuations, which was a pain in the ass to handle.) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22880.mbox:2,S new file mode 100644 index 00000000..31fccfc6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22880.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From MRC at Washington.EDU Tue Feb 5 13:53:26 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> <"08Feb5. + 091040pst. 58696"@synergy1.parc.xerox.com> + + +Message-ID: + +On Tue, 5 Feb 2008, Arnt Gulbrandsen wrote: +> 8-bit occurs elsewhere too. LOGIN is just an example. Another reasonable +> example is FETCH BODYSTRUCTURE: If the sender of a message includes 8-bit +> characters where none are permitted, a compliant and well-behaved IMAP server +> asked to serve that message is often up the creek. + +I do not believe that a server which takes the position of "garbage in, +garbage out" fails in any way of being "compliant and well-behaved." + +I believe that FAR more harm is done by an implementation which, in a +well-intentioned effort to "fix" garbage, renders what was once usable +into non-usability. This opinion of mine predates IMAP by many years, +when I had to deal with sendmail implementations that "fixed" headers +(that did not need fixing, just that sendmail didn't grok the syntax in +question) into complete nonsense. + +The IMAP specification does NOT have any syntax that requires that text in +an ENVELOPE or BODYSTRUCTURE be ASCII; only that any octets greater than +0x7f be transmitted in a literal. + +Data in ENVELOPE and BODYSTRUCTURE is ASCII because that is the way it is +in the underlying specifications (2822 and MIME). But as news (foolishly) +took a "just send 8-bits" position in message headers, non-ASCII is going +to show up anyway. + +This is a case where Postel's robustness principle applies, but it must be +applied carefully: + +You SHOULD avoid sending non-ASCII for fields that are not defined to be +possibly non-ASCII. But don't "fix" non-ASCII data that you did not +originate into ASCII; better to pass the blame for the brokeness to the +originator than to risk breaking it yourself. + +You SHOULD expect non-ASCII for fields that are explicitly defined to be +ASCII; and you MUST expect non-ASCII for fields that are defined to be +possibly non-ASCII or where there is no explicit definition. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22883.mbox:2,S new file mode 100644 index 00000000..b7c5e4b2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22883.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From ams at oryx.com Wed Jan 9 20:35:56 2008 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Re: Question on FETCH example in RFC3501 +In-Reply-To: +References: + + + +Message-ID: <20080110043556.GA25217@toroid.org> + +At 2008-01-09 21:23:53 -0700, guenther+imap@sendmail.com wrote: +> +> It's not 100% clear to me what you mean by "mix responses to one +> requests with responses for another". + +I think he just meant this: + +S: * 1 FETCH (BODY[HEADER.FIELDS] {666} +S: From: foo bar +S: * 2 FETCH (UID 1 ... +S: To: bar foo <... + +But of course, that can never happen, because each response is +conceptually a single long line, though it may have embedded +literals. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22886.mbox:2,S new file mode 100644 index 00000000..ea264a91 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22886.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Dec 2 00:11:53 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] FLAGS reply +In-Reply-To: <1196582023.9771.694.camel@hurina> +References: <1196580950.9771.687.camel@hurina> + + <1196582023.9771.694.camel@hurina> +Message-ID: + +On Sun, 2 Dec 2007, Timo Sirainen wrote: +> How about when keywords are removed? + +There is no defined mechanism in IMAP to remove keywords. Every time the +question came up the result was a punt. + +Although it makes sense to send a FLAGS/PERMANENTFLAGS update to remove a +keyword, I do not recommend doing so for the following reasons: + (1) It may be a keyword which the user intends to use later. Note that + only STORE is defined to create keywords, and some servers won't in + APPEND and COPY. + (2) Clients probably are totally unprepared to handle keywords vanishing + in a session (and certainly would be for a keyword that is used in + an existing message). + +If there's a need to clean up old unused keywords, do so in a new session. +But you should avoid doing so without a definite need due to reason (1) +above. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22889.mbox:2,S new file mode 100644 index 00000000..4a3644ad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22889.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Nov 16 10:59:19 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: <6199.1195236170.977095@invsysm1> +References: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> + <6199.1195236170.977095@invsysm1> +Message-ID: + +On Fri, 16 Nov 2007, Dave Cridland wrote: +> 4.1.2 is actually rather painful, because it's suggesting different client +> behaviour from the base spec. It can, and will, either confuse clients, or +> outright break them, including putting them into a loop, asking for the same +> data continuously. + +Correct. All of these have been observed from 4.1.2. + +> 4.1.3 is the least obtrusive of the "broken" behaviours, since it's quite +> likely that the client will shortly do something allowing the EXPUNGE to be +> sent. + +Yes...but the problem is that 4.1.3 causes static data to change. + +> Ideally, 4.1.1 should be done, but I do sympathize with the issues this +> can cause. + +These issues are ONLY server-internal issues. + +> 4.1.4 is likely to confuse some clients, albeit to a lesser extent +> than 4.1.2, but I'd rather 4.1.3, in general - even if technically broken. + +Speaking as someone who has done 4.1.1, 4.1.3, and 4.1.4: + +4.1.1 is absolutely the best behavior for clients; and after all these +years all new server implementations should choose it. This has also been +the standard behavior in my server for current technology formats. + +4.1.3 has caused clients to crash in the past, and I have little doubt +that it would in the future. My server only does it for the legacy mh +format. The only good thing that you can say about 4.1.3 is that it is +not 4.1.2 which causes worse behavior. + +I have NEVER seen any client confusion due to 4.1.4. For YEARS, that was +the primary behavior in my server; and it remains the standard behavior +for some older formats. A client MUST handle 4.1.4, because 4.1.4 is +indistinguishable from a timing race where an external process turned off +the \Deleted flag. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22893.mbox:2,S new file mode 100644 index 00000000..6ae2f9dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22893.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Oct 24 19:54:00 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +Message-ID: + +If I had to rate Gmail's IMAP server by the standards of "ready for prime +time" my rating would be quite damning; it is non-compliant with the IMAP +specification and has demonstrable bugs in operation. + +Rather than do so, I prefer to consider Gmail's IMAP server to be a first +development test, and NOT something that is presented as being "ready for +prime time". + +I hope that Google feels the same way, and that Google will soon present +a server that is "ready for prime time". + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22899.mbox:2,S new file mode 100644 index 00000000..488910f1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22899.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Aug 8 13:11:29 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Best Practices for Implementing an IMAP Client +In-Reply-To: <1186603272.29782.355.camel@hurina> +References: <1186603272.29782.355.camel@hurina> +Message-ID: + +On Wed, 8 Aug 2007, Timo Sirainen wrote: +> http://www.imapwiki.org/ClientImplementation + +I glanced over it briefly. With the caveat that I did not review it +thoroughly, nothing immediately stood out as being wrong. Even if it +subsequently turns out that there is something that I disagree with +strongly, overall I feel that you have done an excellent job. Thank you! + +You might want to review + http://www.washington.edu/imap/documentation/commndmt.txt.html +and see if there are any points from that document that belong in your +document. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22903.mbox:2,S new file mode 100644 index 00000000..56304143 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22903.mbox:2,S @@ -0,0 +1,9 @@ +MBOX-Line: From dkarp at zimbra.com Fri Jul 6 21:00:46 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] \Recent and multi-accessed mailboxes +Message-ID: <935361765.24151183780846496.JavaMail.root@dogfood.zimbra.com> + +If there are 2 read-write sessions active on a mailbox to which a new message is added, one receives the message with \Recent set and one receives it without. If there is 1 read-only session and 1 read-write session on the mailbox, is the server permitted to return the message as \Recent to both? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22911.mbox:2,S new file mode 100644 index 00000000..de9b5536 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22911.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From tss at iki.fi Fri Jun 1 16:01:57 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Subscriptions in IMAP +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <8046.1180599490.471444@peirce.dave.cridland.net> + + <3770.1180685763.825922@peirce.dave.cridland.net> + +Message-ID: <8D664A9D-1676-4E53-87AB-4BBFB64D834A@iki.fi> + +On 1.6.2007, at 23.55, Mark Crispin wrote: + +> My personal belief is that subscription list abuse came about +> because of a certain individual's misunderstanding of warning about +> not using the * wildcard in LIST. Said individual interpreted +> "LIST * is inefficient" as meaning "do the inefficient LIST * once, +> then put it in the subscription list so it doesn't have to be done +> again." This represented a complete misunderstanding as to why the +> * wildcard is bad. + +Are you planning on updating IMAP4rev1 anytime soon? I joined this +list just before RFC 3501 was released, so I don't know how the +previous revisions have started. This and some other things could +probably be written a bit differently to be more easily +understandable. Some things could probably be even removed, such as +APPEND talking about requiring to preserve 8bit data. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095106.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095106.22914.mbox:2,S new file mode 100644 index 00000000..5210413d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095106.22914.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From guenther+imap at sendmail.com Mon May 21 03:02:56 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST + STATUS +In-Reply-To: <1179521035.32181.1029.camel@hurina> +References: <1179521035.32181.1029.camel@hurina> +Message-ID: + +On Fri, 18 May 2007, Timo Sirainen wrote: + +> Are there any drafts / non-standard implementations for returning +> mailbox list and STATUS replies for multiple mailboxes with a single +> command? Such as: +> +> 1 LIST () "" "%" RETURN (STATUS (UNSEEN MESSAGES)) + +What problem are you trying to solve? Making it easier for a client to +poll a large number of mailboxes is only a good idea if we want to +encourage polling for changes. Instead of doing that, shouldn't we work +towards providing a way for the client to request notifications from the +server for particular mailbox events? That's the direction the lemonade +working group is working on, as described in at least these +internet-drafts: + +http://www.ietf.org/internet-drafts/draft-ietf-lemonade-msgevent-02.txt +http://tools.ietf.org/html/draft-gulbrandsen-imap-notify-03 + + +Philip Guenther +Sendmail, Inc. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22595.mbox:2,S new file mode 100644 index 00000000..ca553a8d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22595.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 25 15:26:48 2015 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: <20150325145627.Horde.BnbIyKq__wNeZ750DElb2MD@bigworm.curecanti.org> +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> + <64e2246f-9d64-40bc-b373-ec6a45f6acfb@gulbrandsen.priv.no> + <20150325145627.Horde.BnbIyKq__wNeZ750DElb2MD@bigworm.curecanti.org> +Message-ID: <5a47eb13-566b-4062-bd13-e033e7d24719@gulbrandsen.priv.no> + +Michael M Slusarz answers me: +> It sounds like people are agreeing that: +> +> a001 SOME COMMAND +> * 1 FETCH (FLAGS (\Foo) MODSEQ (2) UID 1) +> [snapshot 1] +> * 1 FETCH (FLAGS (\Foo \Bar) MODSEQ (2) UID 1) +> [snapshot 2] +> a001 OK +> [snapshot 3] +> +> ...means that the flags on message 1 supposedly "changed" +> twice. + +No. The MODSEQ clause quite plainly says it changed once. The FLAGS clause +says twice. The two parts contradict each other. + +> ... I +> don't care about ... + +The server has to send coherent protocol precisely so that clients can take +liberties and don't have to care about everything all the time. + +Arnt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22756.mbox:2,S new file mode 100644 index 00000000..50c5515c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22756.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dave at cridland.net Tue Nov 15 05:59:06 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321364880.3715.140660999182809@webmail.messagingengine.com> +References: , + , + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> +Message-ID: <29330.1321365546.739429@puncture> + +On Tue Nov 15 13:48:00 2011, Bron Gondwana wrote: +> OK [UNSEEN NIL] +> +> +OK [ALLSEEN] + +Should be a simple RFC to write? + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22772.mbox:2,S new file mode 100644 index 00000000..7fe9e75d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22772.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 26 13:12:29 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> + +Message-ID: + +On Thu, 26 May 2011, Philip Guenther wrote: +> Right now, a client can parse a FETCH response at any time, inserting it +> into its cache without having to consider any context of pending commands. +> Indeed, the server can send FETCH responses at any time (modulus TCP +> flow-control/deadlock concerns), and it's *required* to do so for flag +> changes. Sometimes using the UID and sometimes using msgno would make +> such unsolicited FETCH responses ambiguous. + +This is the command modality in response interpretation mistake that was +made in UID SEARCH. That mistake was allowed, against my better +judgement, on the assumption that clients that do any form of search are +command-modal at that point anyway. + +That assumption turned out to be horribly wrong. It blocked a desirable +extension for mobile devices. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22807.mbox:2,S new file mode 100644 index 00000000..93bd801f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22807.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From snowjn at aol.com Fri Jun 11 12:49:12 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> <1276267479.22134.102.camel@kurkku.sapo.corppt.com> <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + +Message-ID: <4C129338.9030706@aol.com> + +I'm sure I must be missing something, but how is pipelining a +COPY+STORE+EXPUNGE a valid non-waiting command sequence? + +If the server has a problem and fails the COPY then successfully +processes the STORE and EXPUNGE commands, don't you end up +in a state where the messages are gone? + + + +> +> Pipelining eliminates this, except perhaps for a protocol link over a +> 300bps modem where the extra chattiness might matter. +> +> +>> It would behave essentially the same as COPY+STORE+EXPUNGE, except the +>> STORE part could be optimized away: +>> 1. The COPY part either atomically succeeds or fails. +>> 2. Now the messages are visible in both mailboxes +>> 3. Server starts expunging the moved messages. +> +> Then you don't have a MOVE command. You have a protocol macro that looks +> like a command but actually is three separate commands. And the client +> has to be aware of the split in the macro since failures can happen at +> each stage. +> +> The complexities of this make the late unlamented VIEW proposal look +> simple by comparison. +> +>> After the copying is successful, the only problem that can happen is if +>> expunging messages somehow fails, or if the server crashes. The same +>> problems exist with COPY already, there are short time windows when if +>> Dovecot crashes it has succeeded in only partially copying messages. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22866.mbox:2,S new file mode 100644 index 00000000..6f88d738 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22866.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From markrcrispin at live.com Mon Jul 14 20:12:45 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] More questions re IMAP RFCs +In-Reply-To: <487C1289.7000902@verizon.net> +References: <487C1289.7000902@verizon.net> +Message-ID: + + +> 1. Is it required that there be a namespace consisting of ""? + +No, although not having it is somewhat pointless. + +> If not, +> then what are the implications for INBOX? + +INBOX is not part of any namespace. It is a special reserved name + +> Which, if any, other commands imply a housekeeping update? I presume +> CLOSE and LOGOUT would have similar semantics, and another developer +> suggested that EXPUNGE might. + +SELECT and EXAMINE would as well. + +> Also, which data need not be saved? + +Data should always be saved. The whole point of CHECK is to assist mailbox formats such as the traditional UNIX mbox format in which saving a flag state involves a significant file rewrite. CHECK should be equivalent to NOOP with superior mail stores. + +> 3. For testing purposes, would it be better to: +> a) Return PREAUTH in the initial response +> b) Fail to support LOGINDISABLED as a capability without using TLS +> c) Blithely return OK to all AUTHENTICATE requests (again without TLS) + +That's up to you, but relatively few IMAP clients support PREAUTH (it's used primarily with UW's rsh/ssh IMAP functionality). + +> 4. How supported and/or stable is the EAI-IMAP-UTF8 spec? + +IMHO, it is too knew to rely upon + +> a) How does this interoperate with legacy modified UTF-7 mailbox names? + +A server that implements EAI-IMAP-UTF8 is responsible for doing all the necessary conversions, for the benefit of a client that does not implement it. That's a pretty heavy burden on a server. + +> b) If a server treats mailbox names as case-insensitive, should it +> treat the UTF-8 names as case-insensitive only with respect to ASCII, +> similar to how the UTF-7 version treated it? + +That's up to the server. + +However, IMHO, a server that offers case-insensitive mailbox names and UTF-8 mailbox names should be case-insensitive for all of Unicode. Note that a good IMAP server needs to suppose i;unicode-casemap, so that level of case-independent framework should already exist. + +> c) What is the rational behind forbidding UTF-8 non-ASCII characters +> in "" strings? + +Mostly legacy reasons, including the need to exterminate the unofficial ISO 8859-1 and Shift-JIS strings. Quoted strings are of relatively little value except for short ASCII strings. + +> d) Are literals assumed to be UTF-8 if not otherwise specified? (e.g., +> C: 1 SELECT {6+} +> C: mail? +> should be considered a legal mailbox of the name "mail?" and not +> semantically invalid) + +Literals have an undefined charset unless something defines it. This is because there are legacy servers that transmit ISO 8859-1 and Shift-JIS. There is a 12 year effort to exterminate all such usage. + +-- Mark -- + +_________________________________________________________________ +Need to know now? Get instant answers with Windows Live Messenger. +http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL_messenger_072008 diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22871.mbox:2,S new file mode 100644 index 00000000..992e5322 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22871.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From tss at iki.fi Tue Jun 24 07:11:08 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] rfc 2231 +In-Reply-To: <1726241373.36641214316071101.JavaMail.root@dogfood.zimbra.com> +References: <1726241373.36641214316071101.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1214316668.3904.1831.camel@hurina> + +On Tue, 2008-06-24 at 07:01 -0700, Dan Karp wrote: +> > Do other IMAP servers implement RFC 2231 support for +> > BODY/BODYSTRUCTURE? +> > It's been in my TODO for 5 years and today was the first time anyone +> > asked about it. Is it even a good idea to implement it, or why wasn't +> > it included in RFC 3501? +> +> Yeah, Zimbra does. The main impetus is the growing number of Mac mail +> clients out there. They're the only ones that really exercise it, +> though we've also been seeing 2231 headers from some versions of +> Thunderbird. (One Thunderbird build even does 2231 headers with out- +> of-order continuations, which was a pain in the ass to handle.) + +I went and implemented it now myself too. The specification wasn't too +clear as to how the merging was supposed to be done, but I guess with +the test case (worst I could think of): + +key*2=ba%; key2*0=a; key3*0*=us-ascii'en'xyz; + key*0="foo"; key2*1*=b%25; key3*1=plop%; key*1=baz + +the results should be: + + key = foobazba% + key2* = ''ab%25 + key3* = us-ascii'en'xyzplop%25 + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22880.mbox:2,S new file mode 100644 index 00000000..c04e29d9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22880.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From janssen at parc.com Tue Feb 5 14:18:09 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> <"08Feb5. + 091040pst. 58696"@synergy1.parc.xerox.com> + + +Message-ID: <08Feb5.141817pst."58696"@synergy1.parc.xerox.com> + +> 8-bit occurs elsewhere too. LOGIN is just an example. Another reasonable +> example is FETCH BODYSTRUCTURE: If the sender of a message includes +> 8-bit characters where none are permitted, a compliant and well-behaved +> IMAP server asked to serve that message is often up the creek. + +Assuming that such a message could somehow get into the server in the +first place :-). + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22883.mbox:2,S new file mode 100644 index 00000000..04cf0765 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22883.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From tss at iki.fi Wed Jan 9 20:36:32 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: +References: + + + +Message-ID: <1199939792.8850.111.camel@hurina> + +On Wed, 2008-01-09 at 21:23 -0700, Philip Guenther wrote: +> On Thu, 10 Jan 2008, Liam Clarke wrote: +> > Thanks for that - my vague fear is that a poorly behaved server could +> > mix responses to one request with responses for another, which +> > probably betrays my lack of experience with IMAP servers. +> +> It's not 100% clear to me what you mean by "mix responses to one requests +> with responses for another". Can a server send back FETCH responses for +> messages that you never asked about? Yes! Can it send back FETCH data +> items that you never asked about? Yes! Indeed, those both commonly occur +> for flags. + +Also if client sends two commands, the server may mix them: + +1 fetch 1:2 flags +2 fetch 1:2 uid +* 1 fetch (flags (\seen)) +* 1 fetch (uid 100) +* 2 fetch (flags ()) +* 2 fetch (uid 101) +2 ok +1 ok + +Although I'm not sure if this is allowed: + +1 fetch 1:2 flags +2 fetch 1:2 uid +* 1 fetch (flags (\seen) uid 100) +* 2 fetch (flags () uid 101) +2 ok +1 ok + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22886.mbox:2,S new file mode 100644 index 00000000..cc5133f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22886.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Sun Dec 2 03:49:08 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] idle and multi-mailbox access +Message-ID: + +Hello, + +I was possibly planning to implement IDLE on my IMAP client prototype +(http://www.etpanX.org) to know (mostly) real-time the count of unread +messages on the mailboxes but I fell on the following problem: +Theorically, if we suppose that any mail can be delivered to any +mailbox (especially because of server-side filters), you have to show +the the user for all subscribed mailboxes the status of the mailbox. +So that I have to make a connection for each mailbox to request IDLE +from the server. +I have more than 10 mailboxes. +In practice since many servers won't allow that much connections +(because of resource usage), this is not possible to do this. Many +servers will limit to 3 connections. +Then, use of IDLE is not possible to do this. + +The other possibility is to use the old-poll-sheme using STATUS. + +is the following draft supposed to solve that problem ? +http://tools.ietf.org/html/draft-ietf-lemonade-imap-notify-01 + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22889.mbox:2,S new file mode 100644 index 00000000..77e2aba8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22889.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Fri Nov 16 11:21:30 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: +References: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> + <6199.1195236170.977095@invsysm1> + +Message-ID: <1195240890.6039.172.camel@hurina> + +On Fri, 2007-11-16 at 10:59 -0800, Mark Crispin wrote: +> I have NEVER seen any client confusion due to 4.1.4. For YEARS, that was +> the primary behavior in my server; and it remains the standard behavior +> for some older formats. A client MUST handle 4.1.4, because 4.1.4 is +> indistinguishable from a timing race where an external process turned off +> the \Deleted flag. + +Even if clients can handle it, humans probably can't. I often have my +INBOX opened from two clients, and it would be really annoying if I had +to shut down the other one of them just to get messages expunged. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22893.mbox:2,S new file mode 100644 index 00000000..01218211 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22893.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Sat Oct 27 09:11:23 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: +Message-ID: + +On 10/25/07, Mark Crispin wrote: +> If I had to rate Gmail's IMAP server by the standards of "ready for prime +> time" my rating would be quite damning; it is non-compliant with the IMAP +> specification and has demonstrable bugs in operation. +> +> Rather than do so, I prefer to consider Gmail's IMAP server to be a first +> development test, and NOT something that is presented as being "ready for +> prime time". +> +> I hope that Google feels the same way, and that Google will soon present +> a server that is "ready for prime time". + +an other silly bug: + +http://www.colino.net/wordpress-1.5/archives/2007/10/25/dear-gmail/ + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22899.mbox:2,S new file mode 100644 index 00000000..7b6eeb83 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22899.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From leiba at watson.ibm.com Fri Aug 17 07:27:11 2007 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Best Practices for Implementing an IMAP Client +In-Reply-To: <1186603272.29782.355.camel@hurina> +References: <1186603272.29782.355.camel@hurina> +Message-ID: <46C5B03F.5010805@watson.ibm.com> + +> http://www.imapwiki.org/ClientImplementation +> +> Feel free to update. I was hoping that it would eventually include +> pretty much all the information needed by a new IMAP client developer, +> including possible server bugs and their workarounds. So if a client +> does something badly, you could just point the developers to a page +> which says how it should have been done instead. + +Let me also suggest that when you get it to a state where several of us +think it's mostly complete (realizing that it may always be changing), +you submit it to the IETF as a BCP document. I'm quite sure that Chris +Newman or Lisa Dusseault (currently the Applications Area Directors) +will be please to sponsor it and get it through the process, and I'll be +happy to be its PROTO shepherd. + +Let me know if/when you want to do that, and I'll help. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22903.mbox:2,S new file mode 100644 index 00000000..80cfa9aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22903.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Jul 6 21:43:49 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] \Recent and multi-accessed mailboxes +In-Reply-To: <935361765.24151183780846496.JavaMail.root@dogfood.zimbra.com> +References: <935361765.24151183780846496.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Fri, 6 Jul 2007, Dan Karp wrote: +> If there are 2 read-write sessions active on a mailbox to which a new +> message is added, one receives the message with \Recent set and one +> receives it without. If there is 1 read-only session and 1 read-write +> session on the mailbox, is the server permitted to return the message as +> \Recent to both? + +Yes. If the read-only session wins the race to be notified first, then +both sessions will see the message as \recent. If the read-write session +wins the race, then it'll be the only one to see it as \recent. + +I don't think there's anything to say that a server can't 'notify' a +client by inserting an EXISTS (and possibly RECENT) placeholder into its +output buffer but not actually sending it until it has received a command +from the client. The ordering between sessions of server-side actions +such as these are often unobservable by clients, so a client can't depend +on a particular ordering. A server that *always* 'notified' all the +read-only sessions before any read-write sessions would be odd (why +bother?**) but presumably compliant. + + +Philip Guenther + + +** Hmm. The read-only sessions could then represent the \recent flag with +a single unchanging number (the UID of the first \recent message) instead +of needing a bitmap. Nah: having completely different code for read-only +sessions would be a pessimization instead of an optimization + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22911.mbox:2,S new file mode 100644 index 00000000..ca2c6a60 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22911.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jun 1 16:45:43 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Subscriptions in IMAP +In-Reply-To: <8D664A9D-1676-4E53-87AB-4BBFB64D834A@iki.fi> +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <8046.1180599490.471444@peirce.dave.cridland.net> + + <3770.1180685763.825922@peirce.dave.cridland.net> + + <8D664A9D-1676-4E53-87AB-4BBFB64D834A@iki.fi> +Message-ID: + +On Sat, 2 Jun 2007, Timo Sirainen wrote: +> Are you planning on updating IMAP4rev1 anytime soon? I joined this list just +> before RFC 3501 was released, so I don't know how the previous revisions have +> started. This and some other things could probably be written a bit +> differently to be more easily understandable. Some things could probably be +> even removed, such as APPEND talking about requiring to preserve 8bit data. + +Yes, there will undoubtably be yet another IMAP base specification +Proposed Standard. + +This is not a light undertaking. Each revision of the base specification +takes at least a year of work. + + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22914.mbox:2,S new file mode 100644 index 00000000..8a009c6d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22914.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Mon May 21 04:12:44 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST + STATUS +In-Reply-To: +References: <1179521035.32181.1029.camel@hurina> + +Message-ID: <1179745964.32181.1398.camel@hurina> + +On Mon, 2007-05-21 at 04:02 -0600, Philip Guenther wrote: +> On Fri, 18 May 2007, Timo Sirainen wrote: +> +> > Are there any drafts / non-standard implementations for returning +> > mailbox list and STATUS replies for multiple mailboxes with a single +> > command? Such as: +> > +> > 1 LIST () "" "%" RETURN (STATUS (UNSEEN MESSAGES)) +> +> What problem are you trying to solve? + +I'm mostly thinking about these webmails that open a new connection for +each page refresh, but it would save a roundtrip with all clients when +they start up. + +> Making it easier for a client to +> poll a large number of mailboxes is only a good idea if we want to +> encourage polling for changes. Instead of doing that, shouldn't we work +> towards providing a way for the client to request notifications from the +> server for particular mailbox events? That's the direction the lemonade +> working group is working on, as described in at least these +> internet-drafts: +> +> http://www.ietf.org/internet-drafts/draft-ietf-lemonade-msgevent-02.txt +> http://tools.ietf.org/html/draft-gulbrandsen-imap-notify-03 + +Yes, Arnt already mentioned NOTIFY. I'd be happy with that too if it +just provided a way to get UNSEEN (and possibly RECENT) counters. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095107.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095107.22917.mbox:2,S new file mode 100644 index 00000000..59ce2d99 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095107.22917.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From murch at andrew.cmu.edu Fri Apr 6 08:49:31 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +Message-ID: <46166C0B.9080308@andrew.cmu.edu> + +I don't want to start another holy over whether we need to drop RENAME, +but I have a couple of questions regarding the intended/expected +behavior of RENAME Inbox. + +- I assume that \Seen state should follow the messages, just like any +other RENAME, correct? + +- Should mailbox annotations be copied or moved to the new mailbox? + +- Should the UIDVALIDITY, UIDNEXT, HIGHESTMODESEQ, etc of the Inbox be +reset? In other words, should Inbox look like it has been freshly CREATEd? + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22595.mbox:2,S new file mode 100644 index 00000000..7f17caed --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22595.mbox:2,S @@ -0,0 +1,165 @@ +MBOX-Line: From kmansoft at gmail.com Wed Mar 25 15:33:46 2015 +To: imap-protocol@u.washington.edu +From: Kostya Vasilyev +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: <20150325145627.Horde.BnbIyKq__wNeZ750DElb2MD@bigworm.curecanti.org> +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> + <64e2246f-9d64-40bc-b373-ec6a45f6acfb@gulbrandsen.priv.no> + <20150325145627.Horde.BnbIyKq__wNeZ750DElb2MD@bigworm.curecanti.org> +Message-ID: + +( below ) + +2015-03-25 23:56 GMT+03:00 Michael M Slusarz : + +> Quoting Arnt Gulbrandsen : +> +> Michael M Slusarz writes: +>> +>>> This is inefficient. But it is perfectly acceptable IMAP. +>>> +>> +>> It's not acceptable: the modseq should change whenever the flags do. +>> +> +> It sounds like people are agreeing that: +> +> a001 SOME COMMAND +> * 1 FETCH (FLAGS (\Foo) MODSEQ (2) UID 1) +> [snapshot 1] +> * 1 FETCH (FLAGS (\Foo \Bar) MODSEQ (2) UID 1) +> [snapshot 2] +> a001 OK +> [snapshot 3] +> +> ...means that the flags on message 1 supposedly "changed" twice. In other +> words, people are updating internal modseq caches at [snapshot 1] and +> [snapshot 2]. +> +> I don't see it that way. I view this series of commands as telling me +> "what is the mailbox state as of snapshot 3". I don't care about snapshot +> 1 or snapshot 2. I only care that at the end of the command, I look at +> this and say that MODSEQ 2 is associated with flags (\Foo \Bar) since that +> is what the server reported. I don't care about intermediate transport +> steps the server took to inform the client of this; I only care about the +> final state. +> + +RFC 4551 says: + +An IMAP server that supports this extension MUST associate a positive + unsigned 64-bit value called a modification sequence (mod-sequence) + with every IMAP message. This is an opaque value updated by the + server whenever a metadata item is modified. The server MUST + guarantee that each STORE command performed on the same mailbox + (including simultaneous stores to different metadata items from + different connections) will get a different mod-sequence value. + + +Since a MODSEQ is associated with each message, there is no valid way (that +I can see) for a message to have different flags and identical MODSEQ value. + + +> (I would agree that the Gmail example provided is incorrect *if* the FETCH +> responses were received as unsolicited responses in an IDLE command. But +> that wasn't the context of the example provided.) +> + +The most recent one was in the context of a STORE *and* it only works that +way with regards to \Answered and $Forwarded. + +For \Seen (original example), it works the other way, new state first, old +state next. + +Far too many "special cases" to view it as harmless, cute, and intended +implementation details. + + +> +> For example, I have definitely seen this before: +> +> a002 UID STORE [...] +> * 1 FETCH (MODSEQ (2)) +> * 1 FETCH (FLAGS (\Foo \Bar) MODSEQ (2) UID 1) +> a002 OK +> + + + + +> +> A local synchronized mailbox would be in an invalid state if you updated +> it after the first FETCH. This response may be broken from a protocol +> standpoint, but it happens and I want/have to be able to deal with it. +> +> I think my disconnect with the majority is looking at client commands from +> a transactional perspective rather than each individual FETCH component. +> I'm only interested in committing the changes if the client command is +> fully completed. + + +That's fine if you use CONDSTORE and have MODSEQ values to pick the most +current one, but if you don't... From my original message: + +14:39:06.189: [IMAP.5455] Sending: kman10 UID STORE 86 +FLAGS (\Seen) +{{{---}}} +14:39:06.490: [IMAP_RAW.5455] Data is <84>: +14:39:06.490: * 58 FETCH (FLAGS (\Seen) UID 86) +14:39:06.490: * 58 FETCH (UID 86 FLAGS ()) +14:39:06.490: kman10 OK Success + +No MODSEQ values here to choose one or the other (SELECT didn't have +CONDSTORE, turned off while investigating). + +In web mail and on later syncs, the message is \Seen, so the *first* +response line is correct, and the *second* one is not, and by the time you +get to "command fully completed", you've got wrong state. + + + +> If an IMAP session terminates before the command is complete, I would much +> rather toss that data to be on the safe side, especially since there is no +> guarantee that the cached data is correct when dealing with servers that +> may not be 100% protocol correct. + + +Agree, but none of my examples had a sudden connection loss. + + +> Not to mention there can be horrible performance issues with a +> non-transactional approach, depending on the number of FETCH responses +> involved and how the backend client cache storage is configured - e.g. if +> that cache storage is not local. +> + +I never said anything updating the database and the UI on every line +received from an IMAP server :) + +But I'll take your statement further -- for me personally, IMAP's view of +clients as state machines ready for pretty much any data at pretty much any +time -- seems strange, impractical, and I can't quite wrap my brain around +it. Maybe it's because I never learned LISP. + + +> +> So just me again confusing strict semantics with implementation details. +> I shall crawl back into the hole from whence I came and not bother this +> thread any more. + + +But sometimes one gets "reminders" that software is not made of strict +semantics, it's made of implementation details, and sometimes those details +misbehave. + +I shall crawl back into my cave too now and keep my fingers crossed for the +Gmail IMAP team to (eventually) fix what I've reported :) + +-- K +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22756.mbox:2,S new file mode 100644 index 00000000..8d40baa3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22756.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 15 06:06:18 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <29330.1321365546.739429@puncture> +References: , + , + <1321311798.30750.140660998918417@webmail.messagingengine.com><4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz><1321346922.6321.140660999083661@webmail.messagingengine.com><4EC268D1.7010404@aol.com><1321364880.3715.140660999182809@webmail.messagingengine.com> + <29330.1321365546.739429@puncture> +Message-ID: <1321365978.10151.140660999190461@webmail.messagingengine.com> + +On Tuesday, November 15, 2011 1:59 PM, "Dave Cridland" wrote: +> On Tue Nov 15 13:48:00 2011, Bron Gondwana wrote: +> > OK [UNSEEN NIL] +> > +> > +> OK [ALLSEEN] +> +> Should be a simple RFC to write? + +Hmm... I guess that would work - except, who actually wants it? Is there a +client out there which cares? + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22772.mbox:2,S new file mode 100644 index 00000000..de96e79e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22772.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From snowjn at aol.com Thu May 26 13:28:27 2011 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> + +Message-ID: <4DDEB7EB.2090508@aol.com> + +Philip Guenther wrote: +> On Thu, 26 May 2011, John Snow wrote: +> +>> My question is simply, why? Why is the sequence number needed when the +>> command specified a UID, and the UID must be included in the response. +>> Seems to me the UID command should have a UID response. snow. +>> +> +> Right now, a client can parse a FETCH response at any time, inserting it +> into its cache without having to consider any context of pending commands. +> Indeed, the server can send FETCH responses at any time (modulus TCP +> flow-control/deadlock concerns), and it's *required* to do so for flag +> changes. Sometimes using the UID and sometimes using msgno would make +> such unsolicited FETCH responses ambiguous. +> +> Philip Guenther +> + +A UID fetch response could just as easily be handled at any time. + + From the example: + + Example: C: A999 UID FETCH 4827313:4828442 FLAGS + S: * 23 FETCH (FLAGS (\Seen) UID 4827313) + S: * 24 FETCH (FLAGS (\Seen) UID 4827943) + S: * 25 FETCH (FLAGS (\Seen) UID 4828442) + S: A999 OK UID FETCH completed + + why not this instead? + + Example: C: A999 UID FETCH 4827313:4828442 FLAGS + S: * UID 4827313 FETCH (FLAGS (\Seen)) + S: * UID 4827943 FETCH (FLAGS (\Seen) ) + S: * UID 4828442 FETCH (FLAGS (\Seen) ) + S: A999 OK UID FETCH completed + + +snow. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22807.mbox:2,S new file mode 100644 index 00000000..f2b9d962 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22807.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 13:00:46 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + +Message-ID: <1276286446.22134.149.camel@kurkku.sapo.corppt.com> + +On pe, 2010-06-11 at 10:25 -0700, Mark Crispin wrote: +> On Fri, 11 Jun 2010, Timo Sirainen wrote: +> >> If MOVE is not atomic, then what is its point? +> > 1) Allowing user to move messages between mailboxes in situations where +> > a COPY would bring user over quota. +> +> That presupposes a mail store in which COPY would bring the user over +> quota. As with a database, there's no reason why that should be the case +> with a maildir type store. A maildir store can use hardlink to implement +> COPY. + +I once wondered about this. It would be nice if copied messages didn't +increase quota usage, because they really don't take much more of +physical disk space. But unless you're using filesystem quota, it's +difficult to calculate quota that way. + +For example commonly used Maildir++ quota requires recalculating quota +quite often. The only way a recalculation could avoid counting copied +messages twice would be to keep track of the inodes that have link count +higher than 1, and then count them only once. This wastes memory and +requires stat()ing all files, which becomes horribly slow. + +I guess with a database-type of storage where messages have refcounts +this would be easier. When message's refcount drops to zero, decrease +quota, if it gets back to non-zero, increase quota. When recalculating +quota, go through the message database and sum up non-zero refcounts. +I've a new mix-like mailbox format that actually could do that. I'd just +have to change the quota code to support this kind of a special case +format.. + +Anyway, even in such storage copied messages should increase the +MESSAGES count, and potentially fail the COPY if MESSAGES limit is +reached. This is probably pretty rare problem though. + +> > 2) Simplify the operation for clients, also drop one round trip wait. I +> > guess this mainly would benefit some custom webmail developers that +> > develop against a specific server.. +> +> Pipelining eliminates this, except perhaps for a protocol link over a +> 300bps modem where the extra chattiness might matter. + +Pipelining all of COPY+STORE+EXPUNGE doesn't really sound like a good +idea. If COPY fails, the messages are still expunged. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22866.mbox:2,S new file mode 100644 index 00000000..d1eaf62e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22866.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From janssen at parc.com Wed Jul 16 16:32:54 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] issue with the iPhone IMAP client +Message-ID: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> + +I'm testing the iPhone IMAP mail client against my UpLib IMAP server, +and it seems to be unhappy, for reasons I don't understand. + +My server is running on port 8143, and here's the server-side record +of the conversation: + +S: * OK [CAPABILITY IMAP4rev1 LOGINDISABLED STARTTLS] UpLib IMAP Server (V4r1) ready.\r\n +C: 1 STARTTLS\r\n + +[handshake takes place] + +S: 1 OK STARTTLS completed\r\n +C: 2 LOGOUT\r\n + +On the iPhone, I see "Cannot Get Mail / the connection to the server failed" + +Thunderbird and Apple Mail are happy with this server. + +Any ideas? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22871.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22871.mbox:2,S new file mode 100644 index 00000000..3a0be8cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22871.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Jun 24 12:19:42 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] rfc 2231 +In-Reply-To: <1214301808.3904.1795.camel@hurina> +References: <1214301808.3904.1795.camel@hurina> +Message-ID: <2hU2bR7D7nsCDHDrI9G6UQ.md5@lochnagar.oryx.com> + +Timo Sirainen writes: +> Do other IMAP servers implement RFC 2231 support for BODY/BODYSTRUCTURE? + +I implemented it last year, due to practical necessity. I don't remember +exact details. Something about MUA interoperability and non-ascii +filenames. + +> It's been in my TODO for 5 years and today was the first time anyone +> asked about it. Is it even a good idea to implement it, or why wasn't it +> included in RFC 3501? + +IMO it's a good idea to implement it now that someone uses it. +Personally I hoped that noone would ever use that syntax, and I think +Mark feels the same way. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22880.mbox:2,S new file mode 100644 index 00000000..2ce9187f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22880.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Feb 5 14:21:33 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> + <"08Feb5. 091040pst. 58696"@synergy1.parc.xerox.com> + + + +Message-ID: + +Mark Crispin writes: +> The IMAP specification does NOT have any syntax that requires that +> text in an ENVELOPE or BODYSTRUCTURE be ASCII; only that any octets +> greater than 0x7f be transmitted in a literal. + +I wasn't saying anything incompatible. What I said is that even though +there is no relevant CHARSET, 8-bit data may appear. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22883.mbox:2,S new file mode 100644 index 00000000..be000bc7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22883.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jan 9 20:38:10 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: <1199939792.8850.111.camel@hurina> +References: + + + + <1199939792.8850.111.camel@hurina> +Message-ID: + +On Thu, 10 Jan 2008, Timo Sirainen wrote: +> Although I'm not sure if this is allowed: +> 1 fetch 1:2 flags +> 2 fetch 1:2 uid +> * 1 fetch (flags (\seen) uid 100) +> * 2 fetch (flags () uid 101) +> 2 ok +> 1 ok + +This is allowed, although I don't know of any server that does it. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22886.mbox:2,S new file mode 100644 index 00000000..19bc5d03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22886.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From alexey.melnikov at isode.com Mon Dec 3 07:46:35 2007 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] idle and multi-mailbox access +In-Reply-To: +References: +Message-ID: <475424DB.3090509@isode.com> + +DINH Vi?t Ho? wrote: + +>Hello, +> +>I was possibly planning to implement IDLE on my IMAP client prototype +>(http://www.etpanX.org) to know (mostly) real-time the count of unread +>messages on the mailboxes but I fell on the following problem: +>Theorically, if we suppose that any mail can be delivered to any +>mailbox (especially because of server-side filters), you have to show +>the the user for all subscribed mailboxes the status of the mailbox. +>So that I have to make a connection for each mailbox to request IDLE +>from the server. +>I have more than 10 mailboxes. +>In practice since many servers won't allow that much connections +>(because of resource usage), this is not possible to do this. Many +>servers will limit to 3 connections. +>Then, use of IDLE is not possible to do this. +> +>The other possibility is to use the old-poll-sheme using STATUS. +> +>is the following draft supposed to solve that problem ? +>http://tools.ietf.org/html/draft-ietf-lemonade-imap-notify-01 +> +> +Yes. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22889.mbox:2,S new file mode 100644 index 00000000..6f5f0788 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22889.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Nov 16 13:22:02 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FETCH/STORE on out-of-range sequence number +In-Reply-To: <1195240890.6039.172.camel@hurina> +References: <2123708120.202451195235056495.JavaMail.root@dogfood.zimbra.com> + <6199.1195236170.977095@invsysm1> + + <1195240890.6039.172.camel@hurina> +Message-ID: + +On Fri, 16 Nov 2007, Timo Sirainen wrote: +>> I have NEVER seen any client confusion due to 4.1.4. +> Even if clients can handle it, humans probably can't. I often have my +> INBOX opened from two clients, and it would be really annoying if I had +> to shut down the other one of them just to get messages expunged. + +I can say that humans have handled 4.1.4 behavior for years. However, I +agree that they find it annoying. + +Fortunately, it is possible to upgrade 4.1.4 behavior to 4.1.1 behavior +fairly easily. Have a flag in the mail store that declares the messages +to be "invisible" if you can not actually remove them, and send your +untagged EXPUNGEs to the client; then as other IMAP sessions go +EXPUNGE-capable, they send an untagged EXPUNGE for each message that went +invisible. When the last concurrent session sends the untagged EXPUNGE, +you can then remove the invisible message. + +My server does this. Actually, it takes the cheap way out; it only +removes messages when it has exclusive access. Otherwise it marks +messages as invisible. It's been on my list to have a message share count +so I can remove messages even when there is shared access, but I haven't +gotten around to it yet. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22893.mbox:2,S new file mode 100644 index 00000000..cfe2b0e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22893.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Sat Oct 27 09:36:06 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + +Message-ID: + +On Sat, 27 Oct 2007, DINH Vi?t Ho? wrote: +> another silly bug: +> http://www.colino.net/wordpress-1.5/archives/2007/10/25/dear-gmail/ + +We definitely need to encourage them to Google these bugs. Microsoft too; +unfortunately it seems that Exchange server has regressed with protocol +syntax bugs (take a look at BODYSTRUCTURE, especially of nested messages). + +I exchanged a handful of messages with Google about their use of mailboxes +(instead of keywords) to represent GMail labels and the problems that +occur as a result of this. They have two problems; first that labels can +be UTF-8 and second that they worry about limited client support. + +IMHO, we should give a hum of concensus for a commuity statement that +keywords can be in modified UTF-7. I don't see any syntax reason why this +can not be done, although doubtless we'd all have to update our clients to +handle MUTF7 in keywords. That should not be a big deal for most of us. + +MUTF7 sucks. We all know that. We should move forward on IMAP UTF-8 +ASAP. I think that we should have a sweet, short, RFC in which a server +advertises a UTF8 capability which the client has to switch on. When on, +the server accepts and outputs UTF-8 instead of MUTF7. It is up to server +how the strings are stored internally, but if it stored in UTF-8 then it +must convert to/from MUTF7 when not in UTF-8 mode. + +We do need better client support for keywords. IMHO, we should do that +and drag Outlook along, screaming and kicking. That's better than the +current situation where Outlook is dragging us back. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22899.mbox:2,S new file mode 100644 index 00000000..c231c7bc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22899.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From murch at andrew.cmu.edu Wed Aug 22 12:05:18 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Private FETCH items +Message-ID: <46CC88EE.5040500@andrew.cmu.edu> + +Folks, + +I was recently given a patch to Cyrus IMAP which adds 3 new FETCH items +(GUID, RFC822.MD5, and RFC822.FILESIZE) for a message which helps with +consistency checking when a message store is replicated. + +I'm considering applying this patch, since it will be useful for CMU and +others, but I'd like to solicit opinions regarding adding new FETCH +items vs. making these items new ANNOTATE entries (although Cyrus +doesn't currently implement ANNOTATE). + +FYI, the difference between RFC822.SIZE and RFC822.FILESIZE is that the +former uses the cached size in the message index file, and the latter +stat()s for the file size at the time of the request. I'm not thrilled +with the name of this item, so I'd be open to suggestions. + + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22903.mbox:2,S new file mode 100644 index 00000000..48df55af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22903.mbox:2,S @@ -0,0 +1,158 @@ +MBOX-Line: From sebastien.spas at gmail.com Thu Jul 19 05:22:45 2007 +To: imap-protocol@u.washington.edu +From: Sebastien Spas +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP Server issue with Outlook 2003 +Message-ID: + +Hi, + +I'm implementing an IMAP server in Java (actually reading lotus notes +nsf archives files and making their content available through an IMAP +server), and am facing an issue when using (e.g. debugging) it with +Outlook 2003. + +I simply can't download any message :) everything behave as expected, +no error message, but outlook simply can't display the message. + +Most probably, my server is not fully following the IMAP protocol, I +read the RFC3501 couple of times but couldn't find anything wrong. + +Any help is more than welcome, below are the server and client log files. + + + +server log : + +* OK Welcome to a Lotus Notes IMAP4 Proxy Server. +xy19 CAPABILITY +* CAPABILITY CHILDREN IMAP4 IMAP4VER1 AUTH=LOGIN +xy19 OK CAPABILITY completed +9clf LOGIN "login" "password" +9clf OK User logged in +a5va SELECT "TestFolder" +* 1 EXISTS +* 1 RECENT +* OK [UIDVALIDITY 1] UIDs valid +* FLAGS (\Seen) +* OK [PERMANENTFLAGS (\*)] Limited +a5va OK [READ-ONLY] SELECT complete +reao UID FETCH 2:* (UID FLAGS RFC822.SIZE RFC822.HEADER INTERNALDATE) +reao OK FETCH complete +4az1 UID FETCH 1:1 (UID FLAGS) +* 1 FETCH (UID 1 FLAGS (\Seen)) +4az1 OK FETCH complete +0d3u UID FETCH 1 (UID FLAGS RFC822.PEEK INTERNALDATE) +* 1 FETCH (UID 1 FLAGS (\Seen) INTERNALDATE "Mon, 4 Jun 2007 02:02:24 ++1000" RFC822.PEEK {5027} + +X-LotusNotesDocumentUID: 627F87F9F3D90BA2482574328904328 +Date: Mon, 4 Jun 2007 02:02:24 +1000 +Received: Mon, 4 Jun 2007 02:02:24 +1000 +From: lucky.luke@western.com +To: "Bid Daddy" , "Homer Simpson" + +Subject: RE: Hello !!! +MIME-Version: 1.0 +Content-class: urn:content-classes:message +Content-Type: multipart/alternative; + boundary="----_=_NextPart_001_01C7A609.51CDB394" + +This is a multi-part message in MIME format. + +------_=_NextPart_001_01C7A609.51CDB394 +Content-Transfer-Encoding: quoted-printable +Content-Type: text/plain; + charset="us-ascii" + +Dear, +[...] + +------_=_NextPart_001_01C7A609.51CDB394-- +) +0d3u OK FETCH complete + + + + + +client log : + + +Microsoft Internet Messaging API 6.00.2900.3028 (xpsp_sp2_gdr.061107-0012) +IMAP Log started at 07/19/2007 22:08:22 +IMAP: 22:08:22 [db] Connecting to 'localhost' on port 143. +IMAP: 22:08:22 [db] OnNotify: asOld = 0, asNew = 4, ae = 0 +IMAP: 22:08:22 [db] OnNotify: asOld = 4, asNew = 5, ae = 2 +IMAP: 22:08:22 [db] OnNotify: asOld = 5, asNew = 5, ae = 4 +IMAP: 22:08:22 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:22 [rx] * OK Welcome to a Lotus Notes IMAP4 Proxy Server +IMAP: 22:08:22 [tx] xy19 CAPABILITY +IMAP: 22:08:22 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:22 [rx] * CAPABILITY CHILDREN IMAP4 IMAP4VER1 AUTH=LOGIN +IMAP: 22:08:22 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:22 [rx] xy19 OK CAPABILITY completed +IMAP: 22:08:22 [tx] LOGIN command sent +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] 9clf OK User logged in +IMAP: 22:08:23 [tx] a5va SELECT "TestFolder" +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * 1 EXISTS +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * 1 RECENT +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * OK [UIDVALIDITY 1] UIDs valid +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * FLAGS (\Seen) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * OK [PERMANENTFLAGS (\*)] Limited +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] a5va OK [READ-ONLY] SELECT complete +IMAP: 22:08:23 [tx] reao UID FETCH 2:* (UID FLAGS RFC822.SIZE +RFC822.HEADER INTERNALDATE) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] reao OK FETCH complete +IMAP: 22:08:23 [tx] 4az1 UID FETCH 1:1 (UID FLAGS) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * 1 FETCH (UID 1 FLAGS (\Seen)) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] 4az1 OK FETCH complete +IMAP: 22:08:23 [tx] 5ejz UID FETCH 1 (UID FLAGS RFC822.PEEK INTERNALDATE) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * 1 FETCH (UID 1 FLAGS (\Seen) INTERNALDATE "Mon, +4 Jun 2007 02:02:24 +1000" RFC822.PEEK {5027} +IMAP: 22:08:23 [rx] Buffer (literal) of length 5027 +IMAP: 22:08:23 [rx] ) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] 5ejz OK FETCH complete +IMAP: 22:08:23 [tx] zi30 UID FETCH 1 (UID FLAGS RFC822.PEEK INTERNALDATE) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] * 1 FETCH (UID 1 FLAGS (\Seen) INTERNALDATE "Mon, +4 Jun 2007 02:02:24 +1000" RFC822.PEEK {5027} +IMAP: 22:08:23 [rx] Buffer (literal) of length 5027 +IMAP: 22:08:23 [rx] ) +IMAP: 22:08:23 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:23 [rx] zi30 OK FETCH complete +IMAP: 22:08:23 [tx] kelh UID FETCH 1 (UID FLAGS RFC822.PEEK INTERNALDATE) +IMAP: 22:08:24 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:24 [rx] * 1 FETCH (UID 1 FLAGS (\Seen) INTERNALDATE "Mon, +4 Jun 2007 02:02:24 +1000" RFC822.PEEK {5027} +IMAP: 22:08:24 [rx] Buffer (literal) of length 5027 +IMAP: 22:08:24 [rx] ) +IMAP: 22:08:24 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:24 [rx] kelh OK FETCH complete +IMAP: 22:08:24 [tx] 0d3u UID FETCH 1 (UID FLAGS RFC822.PEEK INTERNALDATE) +IMAP: 22:08:24 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:24 [rx] * 1 FETCH (UID 1 FLAGS (\Seen) INTERNALDATE "Mon, +4 Jun 2007 02:02:24 +1000" RFC822.PEEK {5027} +IMAP: 22:08:24 [rx] Buffer (literal) of length 5027 +IMAP: 22:08:24 [rx] ) +IMAP: 22:08:24 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 22:08:24 [rx] 0d3u OK FETCH complete +IMAP: 22:08:50 [db] err: WSAGETSELECTEVENT = 0x20, WSAGETSELECTERROR = 10053 +IMAP: 22:08:50 [db] Connection to 'localhost' closed. +IMAP: 22:08:50 [db] OnNotify: asOld = 5, asNew = 0, ae = 5 + + +many thanks. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22911.mbox:2,S new file mode 100644 index 00000000..7ef22e54 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22911.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From mbarker at buni.org Thu Jun 7 08:36:05 2007 +To: imap-protocol@u.washington.edu +From: Michael Barker +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +In-Reply-To: +References: <46581509.7050201@buni.org> <1180182602.32181.1919.camel@hurina> + +Message-ID: <1181230565.6639.15.camel@mike-laptop> + +On a similar note, what is the preferred behaviour when another client +expunges a mailbox, then new messages are added? Should the EXISTS +response, indicating new message, be sent straight away or should it +wait until after the server has sent the EXPUNGE response? + +Regards, +Michael Barker. + +On Sat, 2007-05-26 at 08:09 -0700, Mark Crispin wrote: +> Note that the inventor of IMAP disagrees with the very last sentence of +> Timo's message (see below). He thinks that the preferred order of +> behavior is: +> (1) which everybody thinks is the best +> (5) which at least maintains consistant protocol state +> (4) annoying to users, but doesn't violate protocol state +> (2)/(3) which mislead some clients, breaks others, and +> violates protocol state, +> +> As far as the inventor of IMAP is concerned, (1) and (5) are the ONLY +> acceptable choices. +> +> On Sat, 26 May 2007, Timo Sirainen wrote: +> > This is discussed in RFC 2180. Summing up your possibilities: +> > +> > 1. Keep the message around until there are no sessions that see it. This +> > is the preferred behavior. +> > +> > 2. Give some dummy replies for the message. Such as empty flags, and +> > other fields being NILs or whatever is legal for the field. The downside +> > to this is that it violates the IMAP protocol if the client had already +> > asked something about this message. +> > +> > 3. Don't return the FETCH reply for the message at all and return a +> > tagged NO reply. Doing this makes some clients ask the same message +> > range over and over again infinitely. This could be avoided also: +> > http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-September/000= +> > 281.html +> > +> > 4. Disconnect the client anytime you can't handle the request. I used to +> > do this but it was annoying when it happened. +> > +> > 5. Don't allow EXPUNGE until there's only session. I think this is the +> > worst of the possibilities. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22914.mbox:2,S new file mode 100644 index 00000000..cce7e0e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22914.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon May 21 08:10:32 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST + STATUS +In-Reply-To: <1179745964.32181.1398.camel@hurina> +References: <1179521035.32181.1029.camel@hurina> + + <1179745964.32181.1398.camel@hurina> +Message-ID: + +On Mon, 21 May 2007, Timo Sirainen wrote: +> I'm mostly thinking about these webmails that open a new connection for +> each page refresh, + +This is of no concern to me. Such webmails are broken by design, and need +to be exterminated. The fact that such webmails do not work well now is a +feature. + +There are webmails which do NOT open a new connection for each page +refresh. Natural selection should be allowed to take its course. + +> but it would save a roundtrip with all clients when +> they start up. + +The latter is of greater concern, but I fail to see this as a major issue +especially as it introduces a potentially major performance burden with +some mail stores. There is a reason why STATUS does not allow wildcards, +and it is a terrible idea to move it into LIST. + +We are seeing numerous IMAP servers out there, running on major ISPs, +which do not implement mandatory-to-implement facilities of IMAP because +it is too costly on the server. + +You can NOT push excessive burdens on the server. I carefully designed +IMAP to have a balance between server and client requirements, yet the +history of this community has been to make the server do everything and +boost the perception of IMAP service as being "too expensive to run". + +I find it sadly amusing that most of the recent discussions are about +esoteric features (ANNOTATE being an egregious example) which will never +be generally adopted in a world where we can't even count upon SEARCH! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22917.mbox:2,S new file mode 100644 index 00000000..a6c6bfe3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22917.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Apr 6 09:16:00 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +In-Reply-To: <46166C0B.9080308@andrew.cmu.edu> +References: <46166C0B.9080308@andrew.cmu.edu> +Message-ID: + +On Fri, 6 Apr 2007, Ken Murchison wrote: +> I don't want to start another holy over whether we need to drop RENAME, but I +> have a couple of questions regarding the intended/expected behavior of RENAME +> Inbox. + +If IMAP5 ever happens, I will insist that RENAME is dropped. Nobody +implements it correctly. + +> - I assume that \Seen state should follow the messages, just like any other +> RENAME, correct? + +I think so. + +> - Should mailbox annotations be copied or moved to the new mailbox? + +I think that they move with the mailbox. + +> - Should the UIDVALIDITY, UIDNEXT, HIGHESTMODESEQ, etc of the Inbox be reset? +> In other words, should Inbox look like it has been freshly CREATEd? + +I think so, since a freshly-CREATEd INBOX is the intended effect. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095108.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095108.22920.mbox:2,S new file mode 100644 index 00000000..4d5bcd76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095108.22920.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From janssen at parc.com Thu Mar 8 11:25:40 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +Message-ID: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + +I'm watching Thunderbird 1.5.0.10 do bad things with a home-grown +(from RFC 3501) IMAP server. I think our (mine and Thunderbird's) +understanding of the BODY[MIME] request might differ... + +It seems that Thunderbird expects BODY[n.MIME] to return the entire +MIME part, while I think the spec says to return only a set of +headers, and only those headers specified in the MIME spec +("Content-Type", "MIME-Version", "Content-Transfer-Encoding", +"Content-Id", and "Content-Description"). In any case, TBird +seems to be building the message which it displays using the +headers as the body content! + +Here's what I see on the wire: + +It first fetches the BODYSTRUCTURE of the message, which in this +example has the UID 13. I've added a few newlines/spaces to make this +easier to read, but they aren't in the original. All lines are CR-LF +terminated. The {count} includes the CR-LFs. + +C: 10 uid fetch 13 (bodystructure) +S: * 13 FETCH (bodystructure (("text" "plain" () NIL NIL "7BIT" 299 7) + ("application" "pdf" ("name" "The_Noguchi_Filing_System.pdf") NIL NIL "base64" 824399) + "mixed" ("boundary" "13.0.xxx.xxxx.xxxx.4232.1161192893.766.2")) UID 13) +S: 10 OK UID FETCH completed + +Thunderbird then fetches the header information (again, I've elided +some of it, and added some whitespace to make it easier to read): + +C: 11 UID fetch 13 (BODY[HEADER] BODY[1.MIME] BODY[2.MIME]) +S: * 13 FETCH (BODY[header] {1306} + Return-Path: [...] + Delivery-Date: Wed Oct 18 10:40:18 2006 + Received: [...] + Received: [...] + Received: [...] + Received: [...] + Received: [...] + Received: [...] + Content-Type: multipart/mixed; + boundary="13.0.xxx.xxx.xxxx.4232.1161192893.766.2" + MIME-Version: 1.0 + Subject: The Noguchi Filing System + To: [...] + From: janssen@parc.com + Message-Id: <06Oct18.103519pdt."511362(2)"@alpha.xerox.com> + Date: Wed, 18 Oct 2006 10:35:13 PDT + X-PARC-Posted: "Wed, Oct 18 10:35:26 2006 PDT7" + X-PARC-Posted: "Wed, Oct 18 10:36:09 2006 PDT7" + + BODY[1.mime] {28} + Content-Type: text/plain + + BODY[2.mime] {104} + Content-Type: application/pdf; name=The_Noguchi_Filing_System.pdf + Content-Transfer-Encoding: base64 + + UID 13) +S: 11 OK UID FETCH completed + +Am I misunderstanding the meaning of BODY[1.MIME], and sending back +the wrong data? + +In this system, the mailbox message sequence numbers are the same as +the message UID numbers, so that's why you're seeing the same value in +both places. By the way, are there pitfalls with that design I'm not +seeing? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22595.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22595.mbox:2,S new file mode 100644 index 00000000..93240e6d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22595.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From dave at cridland.net Thu Mar 26 00:50:47 2015 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:54 2018 +Subject: [Imap-protocol] Gmail flags issue, timing-sensitive +In-Reply-To: <20150325145627.Horde.BnbIyKq__wNeZ750DElb2MD@bigworm.curecanti.org> +References: + + + + <20150325132119.Horde.H9br3-icKPf32c5xmMNhdfM@bigworm.curecanti.org> + <64e2246f-9d64-40bc-b373-ec6a45f6acfb@gulbrandsen.priv.no> + <20150325145627.Horde.BnbIyKq__wNeZ750DElb2MD@bigworm.curecanti.org> +Message-ID: + +On 25 Mar 2015 20:59, "Michael M Slusarz" wrote: +> (I would agree that the Gmail example provided is incorrect *if* the +FETCH responses were received as unsolicited responses in an IDLE command. +But that wasn't the context of the example provided.) +> + +There's nothing special about IDLE, it's just a convenient long running +command. The responses were unsolicited responses, just the same. Really, +the only magic about IDLE is that the syntax implies a long wait before the +DONE. In principle, any command with a literal could be used, except +servers reasonably assume the literal will follow shortly, plus you'd never +quite know whether you'd get expunges. + +> I think my disconnect with the majority is looking at client commands +from a transactional perspective rather than each individual FETCH +component. + +No, I think it's thinking that some responses are more unsolicited than +others. + +Dave. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22756.mbox:2,S new file mode 100644 index 00000000..079d1ae0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22756.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From mrc+imap at panda.com Tue Nov 15 14:45:38 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321364880.3715.140660999182809@webmail.messagingengine.com> +References: , + , + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> +Message-ID: + +On Tue, 15 Nov 2011, Bron Gondwana wrote: +> Or that it's talking to pre-rfc3501 server. Mark said that the wording +> about needing a search was added in response to a previous uncertainty +> about how to respond to this field. I'd like his comment on how best +> to handle that. + +"A little bit of common sense goes a long way." + +Any evolutionary process is going to have warts, resulting from changed +circumstances and requirements. The longer the evolution, the worse it +will get. A very large contributory factor to evolution is mutations +brought about from external influences. + +Even if you were to draw a line, and declare that everything on the other +side is to be abolished, you can not stop evolution. New warts will +quickly be created on your side of the line. + +Thus, it is better to apply triage to focus on those matters which are +serious problems, and not worry overmuch about inconsequential warts. In +this case, far more discussion has been made about a trivial wart than it +was worth. + +No matter how much you try, you can never abolish absurd interpretations +of a specification. You can't even abolish absurd and harmful +interpretations. Humans are incredibly creative in finding both. + +What you can do is apply common sense, such as: + +[1] That interpretation is absurd, and it would cause complete +dysfunction. + Example: "Since the [UNSEEN n] code is mandatory and n can not + be zero, it is impossible to SELECT a mailbox with no unseen + messages." + What to do: "That's nonsense. The only thing that makes sense + is to omit the [UNSEEN n] code in that case." + +[2] It seems absurd that the specification requires this, but it makes no +real difference. + Example: "The spec requires that there be a space and at least one + character after a [xxx] response code." + What to do: "That's stupid, but who cares. Just put in a space and + an x and call it good." + +It's a fool's dream to expect any specification to do the application of +common sense for you in all cases. The attempt bloats the specification +and, in the end, creates new warts and absurdities. At least half of the +current IMAP specification is such bloat. + +Perhaps no client uses [UNSEEN n] any more. It was spawned by one of the +"IMAP will die if this isn't done" flamefests of the past that I was not +able to block. :( + +Now you know why I always dig in my heels in an attempt to block "simple +little changes". I don't always succeed; and invariably end up regretting +the failures. + +> But then if I was starting from scratch, and it was my "baby", I wouldn't +> do it like this anyway. + +Even if you start from scratch, nothing you do (anyone does) will be +immune from evolutionary processes. + +Unless, that is, nobody ever uses your work. Then it will be pure and +unsullied as you set it down. Only then can you be sure that your vision +will be unaffected by external mutations. + +"Babies" have a way of developing in ways that you do not intend, and +even in ways that you actively oppose. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22772.mbox:2,S new file mode 100644 index 00000000..0e2260f8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22772.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From snowjn at aol.com Thu May 26 13:35:12 2011 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> + +Message-ID: <4DDEB980.4010806@aol.com> + +Mark Crispin wrote: +> On Thu, 26 May 2011, John Snow wrote: +>> My question is simply, why? Why is the sequence number needed when the +>> command specified a UID, and the UID must be included in the response. +>> Seems to me the UID command should have a UID response. +> +> You have already asked this "question" many times. +I may have, I don't remember. I do remember asking how other servers +deal with MSNs on a large mailbox. I remember saying I'd be happy for +MSNs to go away. I don't remember ever asking how it was decided. + +I don't expect that my question is going to change the protocol. I was +just wondering why the UID command doesn't have a matching UID +response. I assume there was some big discussion when this was hammered +out and wondered what the reasoning might have been. +> +> Clients that use only UIDs and disregard message sequence numbers are +> doomed to suck. +> +maybe, but I don't think it guaranteed. +> IMAP can not prevent the creation of clients that suck; but it will +> nonetheless continue to enable the creation of clients that do not suck. +> +> Nor will IMAP repeat the UID SEARCH command's mistake of command modality +> in response interpretation. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22807.mbox:2,S new file mode 100644 index 00000000..d43a893b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22807.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 14:13:11 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006110854.37969.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> +Message-ID: <201006112313.11799.witold.krecicki@firma.o2.pl> + +Ok, to sum up the discussion after one day: + +1. MOVE does not guarantee atomicity on some stores, but so does COPY. There +are stores on which atomicity of MOVE is guaranteed (most of those on which +COPY atomicity is also guaranteed) + +2. MOVE does not improve speed on some stores, but will never be slower than +the usual cp/st/ex routine. It can improve speed on some specific, database- +backed stores + +3. Pipelining of copy/store/expunge sequence seems like a good idea server- +side, but can be disastrous for client if the 'copy' fails (messages are lost +permanently), move is an all-or-nothing (atomic if there is no +filesystem/disk/etc. catastrophe on server side) command. + +4. MOVE allows users to move messages even if they are close to their quota +limits, which is (formally and often practically) impossible with regular +copy/store/expunge sequence. + +5. Move operation is already being implemented as an user extension (eg. XAOL- +MOVE) in both servers (AOL IMAP server) and clients (Thunderbird) + +Revised version of draft can be found +http://www.ietf.org/id/draft-krecicki-imap-move-01.txt +here. Mostly grammar + some clarifications about atomicity. + + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22866.mbox:2,S new file mode 100644 index 00000000..bb762ac9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22866.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Wed Jul 16 16:41:37 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] issue with the iPhone IMAP client +In-Reply-To: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> +References: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> +Message-ID: <99F27FFC-0305-43FC-A736-42C71A51FFAD@iki.fi> + +On Jul 17, 2008, at 2:32 AM, Bill Janssen wrote: + +> I'm testing the iPhone IMAP mail client against my UpLib IMAP server, +> and it seems to be unhappy, for reasons I don't understand. +> +> My server is running on port 8143, and here's the server-side record +> of the conversation: + +Is this correct? + +> S: * OK [CAPABILITY IMAP4rev1 LOGINDISABLED STARTTLS] UpLib IMAP +> Server (V4r1) ready.\r\n +> C: 1 STARTTLS\r\n +> +> [handshake takes place] +> +> S: 1 OK STARTTLS completed\r\n + +OK reply should be sent before the handshake, not after. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22880.mbox:2,S new file mode 100644 index 00000000..9ffcfe0d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22880.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From MRC at Washington.EDU Tue Feb 5 14:26:05 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> <"08Feb5. + 091040pst. 58696"@synergy1.parc.xerox.com> + + + + +Message-ID: + +On Tue, 5 Feb 2008, Arnt Gulbrandsen wrote: +> Mark Crispin writes: +>> The IMAP specification does NOT have any syntax that requires that text in +>> an ENVELOPE or BODYSTRUCTURE be ASCII; only that any octets greater than +>> 0x7f be transmitted in a literal. +> I wasn't saying anything incompatible. What I said is that even though there +> is no relevant CHARSET, 8-bit data may appear. + +You and I are loudly agreeing. + +As I told Bill in a private message, an astring falls into one of two +categories: + +1) It definitely can contain non-ASCII. + +2) Currently, it probably is ASCII-only, but you should accept non-ASCII + if it shows up. + +The point being that there is no such thing as an astring that "definitely +can not contain non-ASCII" even if many current astrings appear that way. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22883.mbox:2,S new file mode 100644 index 00000000..1b9c22e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22883.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From pruiter at ca.ibm.com Wed Jan 9 21:04:46 2008 +To: imap-protocol@u.washington.edu +From: Perry Ruiter +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: <1199939792.8850.111.camel@hurina> +Message-ID: + +>Also if client sends two commands, the server may mix them: +> +>1 fetch 1:2 flags +>2 fetch 1:2 uid +>* 1 fetch (flags (\seen)) +>* 1 fetch (uid 100) +>* 2 fetch (flags ()) +>* 2 fetch (uid 101) +>2 ok +>1 ok + +For someone new to the protocol this could be a confusing example since +the tags are the same as the message numbers and they may somehow think +the message numbers in the untagged responses tie back to the command with +that tag. Probably better as: +a fetch 1:2 flags +b fetch 1:2 uid +* 1 fetch (flags (\seen)) +* 1 fetch (uid 100) +* 2 fetch (flags ()) +* 2 fetch (uid 101) +b ok +a ok + +Perry Ruiter +250-658-6517 +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22886.mbox:2,S new file mode 100644 index 00000000..f5db4a5d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22886.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From dave at cridland.net Mon Dec 3 14:23:34 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] idle and multi-mailbox access +In-Reply-To: +References: +Message-ID: <2639.1196720614.306175@peirce.dave.cridland.net> + +On Sun Dec 2 11:49:08 2007, DINH Vi?t Ho? wrote: +> is the following draft supposed to solve that problem ? +> http://tools.ietf.org/html/draft-ietf-lemonade-imap-notify-01 + +Short answer: Yes. + +Long answer: Kind of - "unread" is not an IMAP "thing", as such, and +NOTIFY will tell you about "unseen", not "unread". Philip van Hoof, +amongst others, has been talking about the distinction recently, and +it's quite possible this is something that ought to be addressed. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22889.mbox:2,S new file mode 100644 index 00000000..d529f803 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22889.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From esh at alcatel-lucent.com Mon Nov 19 10:11:44 2007 +To: imap-protocol@u.washington.edu +From: "Esh, Thomas D" +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP4 section numbering algorithm +Message-ID: + + +Where would I find a document that describes how IMAP4 assigns section +numbers +to MIME msgs? I might be missing something because it doesn't seem +obvious to me. + +Thanks +Tom + + + + +Thomas D. Esh Email: esh@lucent.com +Lucent Technologies Work: 614-367-4390 +Room 4O05-1L Mobile: 740-334-2319 +6100 East Broad Street Home: 740-321-1245 +Columbus, OH 43213 MMS: 7403342319@vzwpix.com + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22893.mbox:2,S new file mode 100644 index 00000000..f01eba84 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22893.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From dave at cridland.net Sat Oct 27 15:21:48 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + +Message-ID: <5202.1193523708.069559@peirce.dave.cridland.net> + +On Sat Oct 27 17:36:06 2007, Mark Crispin wrote: +> I exchanged a handful of messages with Google about their use of +> mailboxes (instead of keywords) to represent GMail labels and the +> problems that occur as a result of this. They have two problems; +> first that labels can be UTF-8 and second that they worry about +> limited client support. +> +> IMHO, we should give a hum of concensus for a commuity statement +> that keywords can be in modified UTF-7. I don't see any syntax +> reason why this can not be done, although doubtless we'd all have +> to update our clients to handle MUTF7 in keywords. That should not +> be a big deal for most of us. +> +> MUTF7 sucks. We all know that. We should move forward on IMAP +> UTF-8 ASAP. I think that we should have a sweet, short, RFC in +> which a server advertises a UTF8 capability which the client has to +> switch on. When on, the server accepts and outputs UTF-8 instead +> of MUTF7. It is up to server how the strings are stored +> internally, but if it stored in UTF-8 then it must convert to/from +> MUTF7 when not in UTF-8 mode. + ++1 - I was just having this conversation with - apparently - the same +person you were. + +But I'd like to turn off all the legacy encoding at the same time. +Mailboxes, keywords, headers, bodies - the lot. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22899.mbox:2,S new file mode 100644 index 00000000..90b48267 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22899.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Aug 22 12:27:15 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Private FETCH items +In-Reply-To: <46CC88EE.5040500@andrew.cmu.edu> +References: <46CC88EE.5040500@andrew.cmu.edu> +Message-ID: <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> + + +On Aug 22, 2007, at 12:05 PM, Ken Murchison wrote: + +> FYI, the difference between RFC822.SIZE and RFC822.FILESIZE is that +> the former uses the cached size in the message index file, and the +> latter stat()s for the file size at the time of the request. + +.FILESIZE is just asking for trouble. Nobody cares what the on-disk +representation is, and comparing file sizes is NOT the same as +comparing message content. + +.MD5 is useful in the general sense as a fast way to compare messages +for equality, although I think it would be better served in that +context if you could MD5 the body content without the 822 headers to +be able to handle Received: differences for the same message +delivered to two or more folders via different [SL]MTP transactions. +It would probably make more sense to be able to generically MD5 by +MIME body part. + +What's a GUID? + +But overall I guess I have to question why it's necessary to burden +the protocol with this just because somebody wrote some broken code. +I have done an awful lot of server migrations over the years and I +have never yet come up against the problem this is trying to detect. +I realize you intend this as private data, but once it's in the wild, +it will get used, for better and worse. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22903.mbox:2,S new file mode 100644 index 00000000..f115d0c9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22903.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From dkarp at zimbra.com Thu Jul 19 05:32:06 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP Server issue with Outlook 2003 +In-Reply-To: +Message-ID: <1885369967.341391184848326985.JavaMail.root@dogfood.zimbra.com> + +> I'm implementing an IMAP server in Java (actually reading lotus notes +> nsf archives files and making their content available through an IMAP +> server), and am facing an issue when using (e.g. debugging) it with +> Outlook 2003. +> +> I simply can't download any message :) everything behave as expected, +> no error message, but outlook simply can't display the message. +> +> Most probably, my server is not fully following the IMAP protocol, I +> read the RFC3501 couple of times but couldn't find anything wrong. + +Among the issues here are that "FETCH 2:*" must match the last message in the mailbox (though it appears that Outlook is working around this) and that the format on your INTERNALDATE is incorrect. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22911.mbox:2,S new file mode 100644 index 00000000..ab91c369 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22911.mbox:2,S @@ -0,0 +1,114 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Jun 7 09:03:21 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +In-Reply-To: <1181230565.6639.15.camel@mike-laptop> +References: <46581509.7050201@buni.org> <1180182602.32181.1919.camel@hurina> + + <1181230565.6639.15.camel@mike-laptop> +Message-ID: + +What I think you may be missing is that event reports do not necessarily +follow the same announcement order as the events occurred. + +To elaborate on your example, let's suppose that there are five messages +in the mailbox. A session deletes and expunges messages 2 and 4. Then, +three new messages are added. + +Meanwhile, another client has the mailbox open, and the client does not do +a command (a NOOP in this example) that announces the expunge until the +new messages have been delivered. Here is what that other client will +see: + a001 FETCH ... + * n FETCH ... + a001 OK FETCH completed + a002 FETCH ... + * n FETCH ... + * 8 EXISTS + * 3 RECENT + a002 OK FETCH completed + a003 NOOP + * 2 EXPUNGE + * 3 EXPUNGE + * 6 EXISTS + * 3 RECENT + a003 OK NOOP completed + +In this example, the expunge happened during command a001, but the +announcement was deferred since FETCH can not announce EXPUNGE. + +The same deferral happened during command a002, but the three new messages +were noticed. Note the EXISTS count of 8; the other session probably has +an EXISTS count of 6 since it successfully expunged, but this one has an +EXISTS count of 8. In what I consider to be the correct implementation, +we can still FETCH the data for those two messages. + +Finally, command a003 causes the announcement of the expunge of messages 2 +and 4. Note that the second EXPUNGE event is for message 3; this is +because the effect of expunging message 2 is immediate and thus what was +message 4 becomes message 3. This is an important point to understand +IMAP expunge correctly. If you expunge every message in the mailbox you +will probably get a lot of "* 1 EXPUNGE".... + + +On Thu, 7 Jun 2007, Michael Barker wrote: + +> On a similar note, what is the preferred behaviour when another client +> expunges a mailbox, then new messages are added? Should the EXISTS +> response, indicating new message, be sent straight away or should it +> wait until after the server has sent the EXPUNGE response? +> +> Regards, +> Michael Barker. +> +> On Sat, 2007-05-26 at 08:09 -0700, Mark Crispin wrote: +>> Note that the inventor of IMAP disagrees with the very last sentence of +>> Timo's message (see below). He thinks that the preferred order of +>> behavior is: +>> (1) which everybody thinks is the best +>> (5) which at least maintains consistant protocol state +>> (4) annoying to users, but doesn't violate protocol state +>> (2)/(3) which mislead some clients, breaks others, and +>> violates protocol state, +>> +>> As far as the inventor of IMAP is concerned, (1) and (5) are the ONLY +>> acceptable choices. +>> +>> On Sat, 26 May 2007, Timo Sirainen wrote: +>>> This is discussed in RFC 2180. Summing up your possibilities: +>>> +>>> 1. Keep the message around until there are no sessions that see it. This +>>> is the preferred behavior. +>>> +>>> 2. Give some dummy replies for the message. Such as empty flags, and +>>> other fields being NILs or whatever is legal for the field. The downside +>>> to this is that it violates the IMAP protocol if the client had already +>>> asked something about this message. +>>> +>>> 3. Don't return the FETCH reply for the message at all and return a +>>> tagged NO reply. Doing this makes some clients ask the same message +>>> range over and over again infinitely. This could be avoided also: +>>> http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-September/000= +>>> 281.html +>>> +>>> 4. Disconnect the client anytime you can't handle the request. I used to +>>> do this but it was annoying when it happened. +>>> +>>> 5. Don't allow EXPUNGE until there's only session. I think this is the +>>> worst of the possibilities. +>> +>> -- Mark -- +>> +>> http://panda.com/mrc +>> Democracy is two wolves and a sheep deciding what to eat for lunch. +>> Liberty is a well-armed sheep contesting the vote. +> +> + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22914.mbox:2,S new file mode 100644 index 00000000..61dbd195 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22914.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From kroshka at atypon.com Mon May 21 16:24:42 2007 +To: imap-protocol@u.washington.edu +From: Jeroen van Aart +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST + STATUS +In-Reply-To: +References: <1179521035.32181.1029.camel@hurina> <1179745964.32181.1398.camel@hurina> + +Message-ID: <46522A3A.9030402@atypon.com> + +Mark Crispin wrote: +> On Mon, 21 May 2007, Timo Sirainen wrote: +>> I'm mostly thinking about these webmails that open a new connection for +>> each page refresh, +> +> This is of no concern to me. Such webmails are broken by design, and +> need to be exterminated. The fact that such webmails do not work well +> now is a feature. + +I fully agree with your sentiment. + +To the original poster: One solution might be to use an imapproxy and +configure your webmail client to use that instead. I have setup +squirrelmail to do that. I don't know if squirrelmail is one of the +"should be exterminated" webmails or not, I like it, but then many +things people like are broken by design, sadly... Just as a side note, a +large Dutch isp called xs4all uses it for their customers. + +Hope that helps. + +Best regards, +Jeroen + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22917.mbox:2,S new file mode 100644 index 00000000..0e8f7882 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22917.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From murch at andrew.cmu.edu Fri Apr 6 09:34:25 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +In-Reply-To: <87C9CB41-C741-43CE-81D6-8562110CBACD@goodserver.com> +References: <46166C0B.9080308@andrew.cmu.edu> + + <87C9CB41-C741-43CE-81D6-8562110CBACD@goodserver.com> +Message-ID: <46167691.2050605@andrew.cmu.edu> + +David Rauschenbach wrote: +> So you're saying it is OK if the INBOX's UIDVALIDITY goes from 3,000 +> down to 1? Keeping in mind the MUA doing the RENAME is not the only +> device checking INBOX and expecting UIDVALIDITY to actually mean something. + +If a client has Inbox SELECTED at the time of the RENAME, then it should +receive a "* OK [UIDVALIDITY 1]" response to the next command. Any +command on a msgno/uid is going to fail anyways, because all of the +messages have been removed by the RENAME. + + +> +> On Apr 6, 2007, at 12:16 PM, Mark Crispin wrote: +> +>> On Fri, 6 Apr 2007, Ken Murchison wrote: +>>> I don't want to start another holy over whether we need to drop +>>> RENAME, but I have a couple of questions regarding the +>>> intended/expected behavior of RENAME Inbox. +>> +>> If IMAP5 ever happens, I will insist that RENAME is dropped. Nobody +>> implements it correctly. +>> +>>> - I assume that \Seen state should follow the messages, just like any +>>> other RENAME, correct? +>> +>> I think so. +>> +>>> - Should mailbox annotations be copied or moved to the new mailbox? +>> +>> I think that they move with the mailbox. +>> +>>> - Should the UIDVALIDITY, UIDNEXT, HIGHESTMODESEQ, etc of the Inbox +>>> be reset? +>>> In other words, should Inbox look like it has been freshly CREATEd? +>> +>> I think so, since a freshly-CREATEd INBOX is the intended effect. +>> +>> -- Mark -- +>> +>> http://panda.com/mrc +>> Democracy is two wolves and a sheep deciding what to eat for lunch. +>> Liberty is a well-armed sheep contesting the vote. +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> +> + + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095109.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095109.22920.mbox:2,S new file mode 100644 index 00000000..65895b6c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095109.22920.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Mar 8 11:45:30 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Thu, 8 Mar 2007, Bill Janssen wrote: +> It seems that Thunderbird expects BODY[n.MIME] to return the entire +> MIME part, while I think the spec says to return only a set of +> headers, and only those headers specified in the MIME spec +> ("Content-Type", "MIME-Version", "Content-Transfer-Encoding", +> "Content-Id", and "Content-Description"). In any case, TBird +> seems to be building the message which it displays using the +> headers as the body content! + +The BODY[n.MIME] specification returns the entirety of the MIME part +mini-header; there is no list of "headers in the mini-header to include +and header in the mini-header to exclude." Note that MIME-Version is +normally not in the mini-header. + +If Thunderbird is really behaving as you say, then it is so broken that it +is unusable. Not that Thunderbird has ever impressed me as being IMAP +clueful (it hasn't); but I suspect that you have misinterpreted what it +actually does simply because it can't possibly work (even poorly) if it +assumed that the body part content was included in BODY[n.MIME]. + +The protocol snippet that you provide seems to indicate the server +is performing properly. I'll note that the message is malformed in that +the TEXT/PLAIN is missing the mandatory CHARSET. + +My suggestion is that you try your server against a known IMAP-clueful +client (such as Pine or Alpine, hint hint). That way, if there are +interoperability problems, it is much easier to diagnose. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22756.mbox:2,S new file mode 100644 index 00000000..ce2202ae --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22756.mbox:2,S @@ -0,0 +1,122 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 15 15:39:02 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + +Message-ID: <20111115233902.GA1071@brong.net> + +On Tue, Nov 15, 2011 at 02:45:38PM -0800, Mark Crispin wrote: +> Thus, it is better to apply triage to focus on those matters which are +> serious problems, and not worry overmuch about inconsequential warts. In +> this case, far more discussion has been made about a trivial wart than it +> was worth. + +It's not the first time this warty area of the specification has been +queried - and the fact that multiple implementors have asked exactly +the same questions suggests that the logicial inconsistency in that +part of the specification is a problem which impedes understanding. + +It confused me when I first came across it too. It confuses EVERYONE +when they come across it. + +> No matter how much you try, you can never abolish absurd interpretations +> of a specification. You can't even abolish absurd and harmful +> interpretations. Humans are incredibly creative in finding both. + +In this case, there's a REQUIRED on one line, and then a logical +absurdity where it's impossible to create said REQUIRED line +a few lines later. It forces the reader to go "what were they +smoking" and then make a choice to do something which clearly +violates the words they see printed in front of them. This is +a congnative dissonance which doesn't help anyone. + +> What you can do is apply common sense, such as: +> +> [1] That interpretation is absurd, and it would cause complete +> dysfunction. +> Example: "Since the [UNSEEN n] code is mandatory and n can not +> be zero, it is impossible to SELECT a mailbox with no unseen +> messages." + +That's what we call a joke. Patently absurd, because the wording it +was responding to leaves no scope for a better answer which isn't +"ignore the spec, it's broken here". + +> What to do: "That's nonsense. The only thing that makes sense +> is to omit the [UNSEEN n] code in that case." + +It's obviously the only possible response. But there are two choices +here. Fix it in ONE place, or explain it fresh to every new person +who trips over this nastily placed rock as if they're some sort of +idiot for not understanding the last time you explained it to someone +else. You might get some pleasure out of treating people like idiots, +but it doesn't actually help. + +> [2] It seems absurd that the specification requires this, but it makes no +> real difference. +> Example: "The spec requires that there be a space and at least one +> character after a [xxx] response code." +> What to do: "That's stupid, but who cares. Just put in a space and +> an x and call it good." + +I think that's how I responded to that one, yes. Though I think I said +"add another OK, so you don't confuse poor person reading the trace" - or +at least I would have if I'd been thinking straight at the time. + +> It's a fool's dream to expect any specification to do the application of +> common sense for you in all cases. The attempt bloats the specification +> and, in the end, creates new warts and absurdities. At least half of the +> current IMAP specification is such bloat. + +It's an arsehole's approach to leave known stones which have tripped many +others - then point and laugh at the clumsiness of those walking the same +well trodden path as they trip there. + +> Now you know why I always dig in my heels in an attempt to block "simple +> little changes". I don't always succeed; and invariably end up regretting +> the failures. + +Such is the way of all things. Things fail. + +> >But then if I was starting from scratch, and it was my "baby", I wouldn't +> >do it like this anyway. +> +> Even if you start from scratch, nothing you do (anyone does) will be +> immune from evolutionary processes. + +No, it's true. I had a boss at a previous job, he was a doctor by initial +training, and he said a very wise thing to me - I don't remember the exact +wording, but it was basically that the reason we breed new people all the +time is because you sometimes have to throw everything away and start with +just bits of what you had before. If you let the all the history build up +for ever you wind up with an old person living in their memories and unable +to adapt to the world. + +A baby is a reset on some of the complexity. They will build new complexity, +and it may not be better than their parents - it's always steps backwards +and forwards. They don't always listen to their parents either (I have kids, +I know this bit very well!) + +> Unless, that is, nobody ever uses your work. Then it will be pure and +> unsullied as you set it down. Only then can you be sure that your vision +> will be unaffected by external mutations. + +Yeah, true that. + +> "Babies" have a way of developing in ways that you do not intend, and +> even in ways that you actively oppose. + +Indeed - I wrote the above having not even read down this far yet. + +Bron. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22772.mbox:2,S new file mode 100644 index 00000000..784aaad3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22772.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 26 13:35:29 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDEB7EB.2090508@aol.com> +References: <4DDEA412.6030305@aol.com> + + <4DDEB7EB.2090508@aol.com> +Message-ID: + +On Thu, 26 May 2011, John Snow wrote: +> S: * UID 4827313 FETCH (FLAGS (\Seen)) + +The only benefit of this is to force clients to suck. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22807.mbox:2,S new file mode 100644 index 00000000..79c68b60 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22807.mbox:2,S @@ -0,0 +1,229 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 14:17:56 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006112113.56572.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006111953.13490.witold.krecicki@firma.o2.pl> + + <201006112113.56572.witold.krecicki@firma.o2.pl> +Message-ID: + +On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +>> Maildir is not a particularly good store for IMAP. +> Yet it is the very most popular store for small-to-medium servers. + +And your evidence for this is???? + +You don't know this. You're guessing, and making completely unfounded +assertations based upon thos guesses. + +>> MOVE doesn't solve those problems in maildir; it makes them worse. MOVE +>> doesn't solve those problems in other formats either. +> No, MOVE keeps the problems in maildirs at the same level. It does not make +> them worse. + +Yes, because MOVE introduces requirements and semantics that currently DO +NOT EXIST in IMAP. + +By its definition, MOVE must fufill the requirement of removing from the +source. There is no way that this can not be done; otherwise it would be +a COPY and not a MOVE. + +IMAP has no guaranteed means of removing a message. Study the semantics +of STORE and EXPUNGE carefully. MOVE, on the other hand, requires that +guarantee; and does not have the semantics of STORE and EXPUNGE. + +>> You're still thinking in terms of maildir as being a prototypical IMAP +>> store. +> And you're still thinking in terms of one and only implementation as the only +> correct one. + +I am thinking about at least four very different types of mail stores, and +various subdivisions of these. I have implementation experience with all +four and their subdivisions. + +>> MOVE provides no real benefit to such stores; yet those stores are the +>> only ones that can actually implement it properly. +> Database-backed stores can implement it properly and can have performance +> boost. + +So, you postulate a database which is designed to have a performance boost +in the case of this extension, yet can not implement the base +specification without a performance cost. + +>> Think about what happens when some server implements XAOL-MOVE in a way +>> that is different than Thunderbird expects (since it has only ever seen an +>> AOL server do it). +> That would mean that the specification is not clear enough. As I can see this +> is pretty often in IMAP. + +It is "pretty often" in every IETF specification ever written. + +Even clarity in specification isn't enough. IMAP has incredibly rigid +syntax, carefully spelled out in the formal syntax, that is designed to be +readable by a syntax parser. + +Yet time and time again we see people (at some Very Large Vendors) who +don't use the formal syntax (and thus do not use any syntax parsing code +generation tools) but instead hand-code parsers using examples as a guide +as if we were still back in the 1970s and using BASIC. + +>> And in such a case MOVE has no benefit. There's no quota cost to COPY. +> Yes, there is if there is only one 'mail label' per mail. Copying in this case +> is equivalent to inserting new record and, if handled inproperly, can be non- +> atomic (comparing to fully atomic move) + +Not "can be non-atomic"; rather "is non-atomic". + +Any failure anywhere in the chain leads to an indeterminate state on the +server from the client's perspective. + +>> That is one of many reasons why Maildir is not a particularly good store +>> for IMAP. Timo's server had to extend Maildir. +> Again, yet it is the very most popular store for small-to-medium servers. + +Prove it. + +> You are pursuing the goal of all IMAP operations to be atomic, not me. + +So you, a newcomer to the IMAP world, purpose to undo 25 years of IMAP +history by repealing the requirement that all IMAP operations are atomic? + +Are you ready to face the torches and pitchforks when client authors +suddenly discover that you've turned IMAP into CrapMAP; a protocol where +it is completely indeterminate on the client what happened in the server? + +> But +> read few lines above - I have written client case (specifically on weak +> connection clients such as GPRS/EDGE). + +I've used such environments (and far worse) for well over 15 years. + +We do not move forward by adding new capabilities to solve yesterday's +problems tomorrow. + +2G (and 1G before that) radio is yesterday's problem. And it wasn't that +much of a problem. The extra RTTs can be eliminated by pipelining, and it +is extremely rare that you have a sparse enough sequence that the byte +count becomes significant. + +Considering all the crap that gets transmitted over radio data, I find it +very hard to be sympathetic to claims that it is important to save 50 +bytes in a user-initiated transaction. + +>> So far, you've been talking about server-based benefits, which I (and +>> others) have shown are more illusory than real. Adding MOVE will/can not +>> fix a slow server implementation of COPY. +> No. Only You have tried to show me that server-based benefits are +> illusory, and have shown no arguments to that except for examples from +> exisiting implementation. + +Huh? Where did that come from? + +I discussed the impact on multiple major classes of store implementations. + +If you don't understand something, please ask questions instead of +insisting that you are right. There are severalpeople here with decades +of experience and some amount of wisdom. As tempting as it is to handle +complex situations with simple solutions, more often than not those simple +solutions backfire and lead to disaster. + +>> Multiple client code paths depending upon server is not a good thing. +> Well, it sounds pretty weird hearing it from You. You have created a protocol +> that, by design, supported extensions. And the result is different capabilities +> of different implementations + +Stop claiming that you know what other people think and do. + +If you look at the history of IMAP, you will discover that I did not +design IMAP with extensions, and that I opposed the addition of +extensions. + +>> If AOL uses a database that permits that kind of operation, then there is +>> no reason why COPY can not also work that way. +> In this example COPY would create a need to insert new records, MOVE is just +> update. How could COPY work that way? + +If MOVE can be done atomically by an update, there is no reason why COPY +can not be done that way too. + +Even if the database doesn't work that way, that doesn't mean that a new +functionality has to be added in IMAP for it. + +>> There is no server benefit. MOVE does not solve the problem of servers +>> with slow COPY. It does create the temptation for server implementors +>> with slow COPY to create an unsafe, non-atomic, implementation of MOVE +>> (e.g., using rename()). +> So there is server benefit (as shown above) + +No. We don't want unsafe, non-atomic, implementations. + +Nor do client implementors. + "Hey Mr. Client Implementor, we're going to give you + this wonderful MOVE command. But it won't always + actually do what you expect, and you won't know what + was actually done." + +>> This is an "attractive nuisance". It's one of those ideas that sounds +>> really good on paper until you study the unintended consequences. +> What consequences? + +A facility that is unimplementable with some stores, some of which +(notably Maildir) appear to be implementable albeit by a dangerous +implementation that can (and will!) cause indeterminate results to +clients. + +A facility that, on the stores where it is implementable, provides no +compelling advantage. You have to presuppose a store that is designed so +that COPY must be slow and MOVE must not be yet is atomic. + +IMAP has generally not added features whose sole purpose is to provide +support for a particular type of store. Far more common is that a +particular type of store has vetoed a proposed addition. + +> And that sounds like total inability to listen to your counterpart on Your +> part. + +This is not the first time this discussion has taken place. + +Every few years, a newcomer comes along and says "I have this simple +solution that you all should adopt." Then more experienced people try to +explain the complexities of the situation. + +There are several of these recurring discussions in IMAP. + +I first considered a MOVE command in the original IMAP protocol in 1986. +1986!! There were reasons then not to do it, even though it made other +tasks more difficult for me. + +Those reasons remain valid today; and additional reasons have come about +since then. + +I understand perfectly well why a MOVE command is desirable. You do not +need to repeat those reasons. I have known these reasons for nearly 25 +years. For the first 5 or so of those years I was the only implementor, +and it still annoyed me that it wasn't there. + +Unfortunately, the reasons that a MOVE command is undesirable are more +compelling. + +Don't assume that I (or anyone else) somehow don't understand your +brilliant insights as to why it would be nice to have MOVE, and that we +aren't listening when we tell you that there are problems with it. + +> I have gave you a good example of mail store (that I have seen) in which +> MOVE is atomic and in which MOVE is much faster than COPY - and you have +> ignored it. + +You offered an example of a poorly-designed database. + +Does IMAP have to change every time someone wants to deploy a poor +database in IMAP? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22866.mbox:2,S new file mode 100644 index 00000000..ea1507dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22866.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From ams at oryx.com Wed Jul 16 17:15:19 2008 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: issue with the iPhone IMAP client +Message-ID: <20080717001519.GA31158@toroid.org> + +At 2008-07-16 16:32:54 -0700, janssen@parc.com wrote: +> +> C: 1 STARTTLS\r\n +> +> [handshake takes place] +> +> S: 1 OK STARTTLS completed\r\n + +You should send this OK when you receive the STARTTLS command and before +you start the TLS negotiation. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22880.mbox:2,S new file mode 100644 index 00000000..026b50db --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22880.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Tue Feb 5 23:30:12 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] non-ASCII byte sequences in IMAP? +In-Reply-To: <08Feb5.141817pst."58696"@synergy1.parc.xerox.com> +References: <"08Feb3. 133012pst. 58696"@synergy1.parc.xerox.com> + <3/ZsgW8xag0zKO8asER9/Q.md5@libertango.oryx.com> + <"08Feb5. 091040pst. 58696"@synergy1.parc.xerox.com> + + + <08Feb5.141817pst."58696"@synergy1.parc.xerox.com> +Message-ID: <1202283012.3879.78.camel@hurina> + +On Tue, 2008-02-05 at 14:18 -0800, Bill Janssen wrote: +> > 8-bit occurs elsewhere too. LOGIN is just an example. Another reasonable +> > example is FETCH BODYSTRUCTURE: If the sender of a message includes +> > 8-bit characters where none are permitted, a compliant and well-behaved +> > IMAP server asked to serve that message is often up the creek. +> +> Assuming that such a message could somehow get into the server in the +> first place :-). + +Unless you've added explicit checks against it, I don't think anything +by default prevents it. I've gotten such mails from Hotmail before and +wouldn't be surprised if they still sent them. Although the problem was +the Subject field / ENVELOPE, not BODYSTRUCTURE. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22883.mbox:2,S new file mode 100644 index 00000000..bdd06cbc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22883.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From ml.cyresse at gmail.com Thu Jan 10 12:13:30 2008 +To: imap-protocol@u.washington.edu +From: Liam Clarke +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Question on FETCH example in RFC3501 +In-Reply-To: +References: + + + +Message-ID: + +Thanks all for greatly clarifying my understanding (or lack thereof) of this. + +> A server can not intertwine one response with another; that is, given responses + +That clears my main misconception. + +Regards, + +Liam Clarke + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22886.mbox:2,S new file mode 100644 index 00000000..90331dcd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22886.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From brendan at kublai.com Tue Dec 4 14:15:52 2007 +To: imap-protocol@u.washington.edu +From: Brendan Cully +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Interesting gmail IMAP RFC 2047 encoding +Message-ID: <20071204221552.GA8980@ventoux.cs.ubc.ca> + +I've just received a spate of complaints from mutt users that that +non-ascii addresses are not being decoded in the index view, but are +in the message view. Apparently gmail is encoding them differently +depending on whether BODY.PEEK is given a filter or not: + +7> a0007 FETCH 1:111 (UID FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS (DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL)]) +... +7< * 111 FETCH (UID 573 RFC822.SIZE 2233 INTERNALDATE "04-Dec-2007 21:51:57 +0000" FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM SUBJECT TO CC MESSAGE-ID REFERENCES CONTENT-TYPE CONTENT-DESCRIPTION IN-REPLY-TO REPLY-TO LINES LIST-POST X-LABEL)] {299} +Date: Tue, 4 Dec 2007 13:51:54 -0800 +To: =?ISO-8859-1?Q?Br=E9ndan_Cully_?= +Subject: RFC 2047 mangling test +Message-ID: <20071204215153.GC6026@xxxxxxx.xx.xxx.xx> +Content-Type: text/plain; charset=us-ascii +From: =?ISO-8859-1?Q?Br=E9ndan_Cully_?= + +7< ) +7< a0007 OK Success +6> a0024 UID FETCH 573 BODY[] +7< * 111 FETCH (UID 573 BODY[] {2273} +Delivered-To: xxxxxxxxxxxxxxx@gmail.com +Date: Tue, 4 Dec 2007 13:51:54 -0800 +To: =?iso-8859-1?Q?Br=E9ndan?= Cully +Subject: RFC 2047 mangling test +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +X-Operating-System: Linux 2.6.22-14-386 i686 +User-Agent: Mutt/1.5.17 (2007-11-15) +X-Delivery-Agent: TMDA/1.1.12 (Macallan) +From: =?iso-8859-1?Q?Br=E9ndan?= Cully + +See From: +7< ) +7< a0024 OK Success + +(I've snipped some of the headers). + +From my reading of RFC 2047 section 5.3, the first version is +performing illegal encoding on the From and To addresses: + ++ An 'encoded-word' MUST NOT appear in any portion of an 'addr-spec'. + +But I'd appreciate it if anyone could confirm my reading. If this is a +bug in google's IMAP server I'd rather not fix it in mutt. + +Comments? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22889.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22889.mbox:2,S new file mode 100644 index 00000000..8744ee49 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22889.mbox:2,S @@ -0,0 +1,96 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Nov 19 10:59:27 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP4 section numbering algorithm +In-Reply-To: +References: +Message-ID: + +On Mon, 19 Nov 2007, Esh, Thomas D (Tom) wrote: +> Where would I find a document that describes how IMAP4 assigns section +> numbers to MIME msgs? I might be missing something because it doesn't +> seem obvious to me. + +I assume that you have read the text in RFC 3501 section 6.4.5, +particularly on pages 55 and 56, and are still scratching your head. What +you need is there, but it often requires multiple re-readings. + +In the name of "a picture is worth 1000 words", take a look at the +infamous MIME Torture Test message at: + ftp://ftp.cac.washington.edu/mail/mime-examples/torture-test.mbox +It's horrible, and few MIME parsers pass it the first time. + +That message has a body structure numbering regime looking like: + 1 TEXT/PLAIN (Explanation);CHARSET=US-ASCII (3 lines) + 2 MESSAGE/RFC822 (Rich Text demo) (106 lines) + 2.1 TEXT/PLAIN;CHARSET=US-ASCII (16 lines) + 2.2.1 TEXT/RICHTEXT;CHARSET=US-ASCII (13 lines) + 2.3 APPLICATION/ANDREW-INSET (917 bytes) + 3 MESSAGE/RFC822 (Voice Mail demo) (7605 lines) + 3.1 AUDIO/BASIC (Hi Mark) (561308 bytes) + 4 AUDIO/BASIC (Flint phone) (36234 bytes) + 5 IMAGE/PBM (MTR's photo) (1814 bytes) + 6 MESSAGE/RFC822 (Star Trek Party) (4565 lines) + 6.1.1 TEXT/PLAIN;CHARSET=US-ASCII (16 lines) + 6.1.2 AUDIO/X-SUN (He's dead, Jim) (31472 bytes) + 6.2.1 IMAGE/GIF (Kirk/Spock/McCoy) (26000 bytes) + 6.2.2 IMAGE/GIF (Star Trek Next Generation) (18666 bytes) + 6.2.3 APPLICATION/X-BE2;VERSION=12 (46125 bytes) + 6.2.4 APPLICATION/ATOMICMAIL;VERSION=1.12 (9203 bytes) + 6.3 AUDIO/X-SUN (Distress calls) (47822 bytes) + 7 MESSAGE/RFC822 (Digitizer test) (483 lines) + 7.1 TEXT/PLAIN;CHARSET=US-ASCII (0 lines) + 7.2 IMAGE/PGM (Bellcore mug) (84174 bytes) + 7.3 TEXT/PLAIN;CHARSET=US-ASCII (8 lines) + 8 MESSAGE/RFC822 (More Imagery) (431 lines) + 8.1 TEXT/PLAIN;CHARSET=US-ASCII (26 lines) + 8.2 IMAGE/PBM (Mail architecture slide) (71686 bytes) + 9 MESSAGE/RFC822 (PostScript demo) (6438 lines) + 9.1 APPLICATION/POSTSCRIPT (Captain Picard) (397154 bytes) + 10 IMAGE/GIF (Quoted-Printable test) (78302 bytes) + 11 MESSAGE/RFC822 (q-p vs. base64 test) (1382 lines) + 11.1 AUDIO/BASIC (I'm sorry, Dave (q-p)) (62094 bytes) + 11.2 AUDIO/BASIC (I'm sorry, Dave (BASE64)) (40634 bytes) + 12 MESSAGE/RFC822 (Multiple encapsulation) (3282 lines) + 12.1 APPLICATION/POSTSCRIPT (The Simpsons!!) (53346 bytes) + 12.2 BINARY/UNKNOWN (Alice's PDP-10 w/ TECO & DDT);NAME=Alices_PDP-10 (18530 bytes) + 12.3 MESSAGE/RFC822 (Going deeper) (2094 lines) + 12.3.1 TEXT/PLAIN;CHARSET=US-ASCII (7 lines) + 12.3.2.1 IMAGE/GIF (Bunny) (3276 bytes) + 12.3.2.2 AUDIO/BASIC (TV Theme songs) (156706 bytes) + 12.3.3 APPLICATION/ATOMICMAIL (4924 bytes) + 12.3.4 MESSAGE/RFC822 (Yet another level deeper...) (1031 lines) + 12.3.4.1 AUDIO/X-SUN (I'm Twying...) (75682 bytes) + +Attached is telemetry showing what UW imapd will do in that message. + +Your implementation should do something essentially similar. + +For client code (assuming that you are not running in a "clean-room" +development environment where you're forbidden from looking at other +people's code), the UW IMAP toolkit includes a very basic demonstration +program called mtest, and in mtest.c there is a routine called +display_body() that runs down the body structure recursively. Many people +have found it quite instructive in understanding how IMAP's representation +of MIME structure works. + +It is one of these lightbulb type of experiences, where you muddle around +for a while, then suddenly it all becomes obvious and you can't imagine it +being any other way. + +Good luck, and if there's still some shading on the lightbulb feel free to +ask me further questions. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: uw.telemetry +Type: application/octet-stream +Size: 8444 bytes +Desc: UW IMAP telemetry of BODYSTRUCTURE fetching +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22893.mbox:2,S new file mode 100644 index 00000000..fe1c0dce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22893.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Sat Oct 27 16:10:23 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <5202.1193523708.069559@peirce.dave.cridland.net> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> +Message-ID: <1193526623.25921.536.camel@hurina> + +On Sat, 2007-10-27 at 23:21 +0100, Dave Cridland wrote: +> > MUTF7 sucks. We all know that. We should move forward on IMAP +> > UTF-8 ASAP. I think that we should have a sweet, short, RFC in +> > which a server advertises a UTF8 capability which the client has to +> > switch on. When on, the server accepts and outputs UTF-8 instead +> > of MUTF7. It is up to server how the strings are stored +> > internally, but if it stored in UTF-8 then it must convert to/from +> > MUTF7 when not in UTF-8 mode. +> +> +1 - I was just having this conversation with - apparently - the same +> person you were. +> +> But I'd like to turn off all the legacy encoding at the same time. +> Mailboxes, keywords, headers, bodies - the lot. + +What do you mean by header/body legacy encoding? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22899.mbox:2,S new file mode 100644 index 00000000..0e855644 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22899.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From dave at cridland.net Wed Aug 22 14:13:42 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Private FETCH items +In-Reply-To: <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> +References: <46CC88EE.5040500@andrew.cmu.edu> + <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> +Message-ID: <29508.1187817223.002157@peirce.dave.cridland.net> + +On Wed Aug 22 20:27:15 2007, Lyndon Nerenberg wrote: +> What's a GUID? +> +> +Past participle of the verb "to gooey". + + +> But overall I guess I have to question why it's necessary to burden +> the protocol with this just because somebody wrote some broken +> code. I have done an awful lot of server migrations over the +> years and I have never yet come up against the problem this is +> trying to detect. I realize you intend this as private data, but +> once it's in the wild, it will get used, for better and worse. + +I can understand why adding private fetchable data would be in some +way useful, though, irrespective of this particular case. + +I'd personally opt for an X- prefix, at the very least. X-CMU- might +be better. Then you have X-CMU-UID, X-CMU-CRC, X-CMU-STATSIZE, +perhaps. + +Note that I've proposed "CRC" instead of explicitly naming MD5, +partly in case people are tempted to use it in clients, and partly to +stop the flurry of emails you'll otherwise get telling you that MD5 +is insecure. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22903.mbox:2,S new file mode 100644 index 00000000..66044c7d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22903.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From dkarp at zimbra.com Thu Jul 19 06:09:02 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] IMAP Server issue with Outlook 2003 +In-Reply-To: +Message-ID: <1736746617.342041184850542732.JavaMail.root@dogfood.zimbra.com> + +> I'm implementing an IMAP server in Java (actually reading lotus notes +> nsf archives files and making their content available through an IMAP +> server), and am facing an issue when using (e.g. debugging) it with +> Outlook 2003. +> +> Most probably, my server is not fully following the IMAP protocol, I +> read the RFC3501 couple of times but couldn't find anything wrong. +> +> 0d3u UID FETCH 1 (UID FLAGS RFC822.PEEK INTERNALDATE) + +In which version of the protocol was "RFC822.PEEK" a valid FETCH fetch_att? + +(PS -- returning "RFC822" instead of "RFC822.PEEK" in your FETCH response may solve the problem.) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22911.mbox:2,S new file mode 100644 index 00000000..490e4886 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22911.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Jun 7 16:02:55 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +In-Reply-To: +References: <46581509.7050201@buni.org> <1180182602.32181.1919.camel@hurina> + + <1181230565.6639.15.camel@mike-laptop> + +Message-ID: + +On Thu, 7 Jun 2007, Mark Crispin wrote: +... +> Here is what that other client will see: +> a001 FETCH ... +> * n FETCH ... +> a001 OK FETCH completed +> a002 FETCH ... +> * n FETCH ... +> * 8 EXISTS +> * 3 RECENT +> a002 OK FETCH completed +> a003 NOOP +> * 2 EXPUNGE +> * 3 EXPUNGE +> * 6 EXISTS +> * 3 RECENT +> a003 OK NOOP completed + +Note that the final EXISTS response is not required here: the previous +EXISTS said eight and there have been exactly two EXPUNGE responses, so +the client already knows that exactly six messages remain. RFC 3501, +section 7.4.1, p2: + The EXPUNGE response also decrements the number of messages in the + mailbox; it is not necessary to send an EXISTS response with the + new value. + +The RECENT response clearly needs to be sent whenever the number messages +with the \recent flag has changed. It's probably technically legal to +suppress it when that count hasn't changed (say, if new messages have +arrived that aren't \recent or if an equal number of \recent messages have +been expunged as have arrived), but it may not be wise for a server to do +that. + + +Philip GUenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22914.mbox:2,S new file mode 100644 index 00000000..97265257 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22914.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Tue May 22 07:33:49 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] "SCAN" capability ? +Message-ID: + +my ISP server is answering this when I connect : + +<< +$ telnet imap.free.fr 143 +Trying x.x.x.x... +Connected to xxxxxxxxx +Escape character is '^]'. +* OK [CAPABILITY IMAP4REV1 X-NETSCAPE LOGIN-REFERRALS AUTH=LOGIN] +[x.x.x.x] IMAP4rev1 2001.315/xxxxx at Tue, 22 May 2007 14:24:53 +0000 +(UTC) +01 LOGIN xxxxxxxx xxxxxxxxxx +01 OK [CAPABILITY IMAP4REV1 X-NETSCAPE NAMESPACE MAILBOX-REFERRALS +SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND] User +xxxxxx authenticated +03 LOGOUT +* BYE xxxxxxxxx IMAP4rev1 server terminating connection +03 OK LOGOUT completed +>> + +Note that in capabilities, there is something called 'SCAN'. +I never heard about this. Does anyone know what it is ? + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22917.mbox:2,S new file mode 100644 index 00000000..13bc664f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22917.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Apr 6 09:39:38 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +In-Reply-To: <87C9CB41-C741-43CE-81D6-8562110CBACD@goodserver.com> +References: <46166C0B.9080308@andrew.cmu.edu> + + <87C9CB41-C741-43CE-81D6-8562110CBACD@goodserver.com> +Message-ID: + +On Fri, 6 Apr 2007, David Rauschenbach wrote: +> So you're saying it is OK if the INBOX's UIDVALIDITY goes from 3,000 down to +> 1? + +I didn't say that! + +Ken's question about UIDVALIDITY being "reset" meant "set to a new value". +I know Ken personally. He is far too intelligent and informed to propose +implementing a UIDVALIDITY going backwards. + +Nonetheless, I understand your concern; and thank you for bringing this +question up. We need to be careful about the words that we use. What was +obvious to Ken and me was clearly not-obvious to you, even though we all +knew that UIDVALIDITY can not ever go backwards. You were (rightfully!) +alarmed. + +We should keep in mind that not everyone is fully cognizant of the ins and +outs of IMAP; and we should not rely upon what is "obvious" to resolve +ambiguities in our wording. + +Thanks again for a good reminder! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22920.mbox:2,S new file mode 100644 index 00000000..ce9afcbb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22920.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From janssen at parc.com Thu Mar 8 14:12:32 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + +> The BODY[n.MIME] specification returns the entirety of the MIME part +> mini-header; there is no list of "headers in the mini-header to include +> and header in the mini-header to exclude." Note that MIME-Version is +> normally not in the mini-header. + +Ah, my mistake. I interpreted the language in the RFC: + +``The MIME part specifier refers to the [MIME-IMB] header for this part.'' + +to mean that only headers specified in [MIME-IMB] should be returned. + +> I'll note that the message is malformed in that +> the TEXT/PLAIN is missing the mandatory CHARSET. + +I don't believe it's required by RFC 2045 or 2046, and it's not in the +original message. I don't see a requirement for it in RFC 3501; could +you please cite the reference? Thanks. I'll add it to the server. + +On a related subject, the BODYSTRUCTURE requirements for extension +data for a multipart section are a bit unclear to me. If "body +disposition", "body language", and "body location" are not available, +can they be omitted, as I did in my example? If not, should NIL or "" +be used to indicate a null "body location"? + +> My suggestion is that you try your server against a known IMAP-clueful +> client (such as Pine or Alpine, hint hint). That way, if there are +> interoperability problems, it is much easier to diagnose. + +OK, I'll try that, and report back. My target clients are Apple +Mail and Thunderbird, so I've been working with them in an attempt to +understand their peculiarities. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095110.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095110.22938.mbox:2,S new file mode 100644 index 00000000..8fbbc1cb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095110.22938.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From tss at iki.fi Mon Jan 1 08:24:34 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + + + +Message-ID: <077244CE-5AA8-4524-9A77-27E14C934F84@iki.fi> + +On 31.12.2006, at 22.12, Arnt Gulbrandsen wrote: + +> Timo Sirainen writes: +>> On 15.9.2006, at 16.53, Arnt Gulbrandsen wrote: +>> +>>> (Btw, I changed our code today to use 4.1.2+loopbreaker. The first +>>> time a client fetches a message which another client has expunged, +>>> but whose expunge has not yet been reported in this session, the +>>> server issues a NO as in 4.1.2, and makes a note of the UID(s). If +>>> any of those UIDs are fetched again before the server can report +>>> the expunge, the server issues a BYE. When it reports expunges, it +>>> clears its UID set. I think that's as good as 4.1.1+period.) +>> +>> Has this been working? +> +> We haven't had a single complaint or bug report, and more than two +> months have passed, so it can't be terrible. +> +>> I was thinking about changing my current behavior of simply +>> disconnecting the client immediately when this happens (which is +>> annoying when it happens). There's currently no other real +>> alternatives for me than this 4.1.2+loopbreaker or 4.1.3. + +What was the problem with 4.1.3 anyway? Cyrus seems to be using it, +so it can't be that bad either. + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22756.mbox:2,S new file mode 100644 index 00000000..bd164ca8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22756.mbox:2,S @@ -0,0 +1,146 @@ +MBOX-Line: From mrc+imap at panda.com Tue Nov 15 17:21:35 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <20111115233902.GA1071@brong.net> +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> +Message-ID: + +On Wed, 16 Nov 2011, Bron Gondwana wrote: +> It's not the first time this warty area of the specification has been +> queried - and the fact that multiple implementors have asked exactly +> the same questions suggests that the logicial inconsistency in that +> part of the specification is a problem which impedes understanding. + +That is why there is an errata and the concept of "frequently asked +questions." This particular question is one that is simply answered; and +is usually answered simply without making a federal case out of it. + +These things happen. They always will happen. Should someone bother to +make an erratum on this matter and get it posted to the errata, it will +eventually get into a revision of the document. But there is no way that +anyone can prevent it from happening in the future. + +If you care so much, write the erratum and submit it. + +Nobody cares that you think that you are smarter than me and know how to +solve problems better than you. + +Just write the freaking erratum, submit it, and move on. + +Nobody will to issue a new version of the document just for this one +stupid dinky ambiguity. It takes approximately one man-year(!) to produce +a revised version of the IMAP specification. Multiple drafts, reviews, +updates, re-reviews, reformats, compliance, ... that all take place as +part of a revision. + +Errata collect for a while before such a task is launched. + +Within hours after the revision is issued, there are new errata. At that +point, everybody is too burned out to do anything more than start a new +errata list. + +> It's obviously the only possible response. + +The fact that it is obvious makes it of lower priority. + +As annoying as it is, there is only one answer. When resources are +limited (and resources are ALWAYS limited), they are focused on the +problems that are less easily resolved. + +> Fix it in ONE place, or explain it fresh to every new person +> who trips over this nastily placed rock as if they're some sort of +> idiot for not understanding the last time you explained it to someone +> else. + +The third alternative is simply to explain it and move on. "Yup, there's a +rock there, just step around it." It doesn't imply that the newbie is an +idiot. He wouldn't know that there is no deep dark secret, so he asked - +which is absolutely and unquestionably the intelligent thing to do. + +The only idiot in this entire foofaraw is you, for beating a dead horse. + +If it's so important to you, write the erratum and move on. + +> You might get some pleasure out of treating people like idiots, +> but it doesn't actually help. + +I don't treat newbies like idiots. + +I do get a teacher's pleasure in helping newbies learn. As time goes on, I +see ways to improve the text; but there will always be a need to help +newbies. + +> It's an arsehole's approach to leave known stones which have tripped many +> others - then point and laugh at the clumsiness of those walking the same +> well trodden path as they trip there. + +Maybe you should stop name-calling and accusations. + +I don't laugh at anyone who trips over the stone. I say "yup, there's a +rock there, just step around it." + +There's lots of other rocks to get rid of during the next repaving. Until +the repaving, we're stuck with telling people about the rocks. At least +this rock is visible with bright paint on it. Some rocks, not to mention +all the holes, are less obvious and more dangerous; and consequently get +more attention. + +If you care, write the erratum. That way, when the repaving is done, +people will remember to get rid of that rock. + +It's going to be a while before the repaving is done. Repaving is very +costly. We don't repave for one rock. On top of that, the paving +regulations keep on changing, so besides all the rock and hole removals, +there's also new regulatory compliance. + +Just don't be surprised when, after the repaving, brand new rocks and +holes show up. Some will be in text was that supposed to fix the previous +set of errata [*]. Others show up in the new regulatory compliance work +(intake of breath here) that was not required before. Still more is made +by the crew that comes in AFTER you're done to "proof" and "standardize" +it. God help you if you have the temerity to CHANGE the specification! + +[*] Such is the particular text that you are beating me over the head +about. Another person (I remember who, but won't say) wrote it. It's easy +to identify errata. It is much harder to write a replacement that doesn't +create new errata. A great source of this is unintended interactions with +some text in a completely different part of the document. + +> the reason we breed new people all the +> time is because you sometimes have to throw everything away and start with +> just bits of what you had before. If you let the all the history build up +> for ever you wind up with an old person living in their memories and unable +> to adapt to the world. + +If you think that you are smarter than me and can do a better job, then by +all means go ahead and do it. I've watched at least four IMAP-replacement +projects launch with great fanfare and bombast only to wither away into +nothing. There were probably more; I haven't bothered to count but the +four are the ones that I distinctly remember. + +Eventually one of these will succeed. + +It will NOT be one that launches with fanfare and bombast. It will be +something that nobody hears of for years. Its architect will be too busy +DOING to boast about how much better a job he will do. His time is going +to be spent, not in reacting to IMAP but rather in solving the completely +new problems encountered in the process of his own design. + +IMAP spent at least 5 years in that stage. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22772.mbox:2,S new file mode 100644 index 00000000..75c83b5a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22772.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu May 26 14:00:15 2011 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDEB7EB.2090508@aol.com> +References: <4DDEA412.6030305@aol.com> + + <4DDEB7EB.2090508@aol.com> +Message-ID: + +On Thu, 26 May 2011, John Snow wrote: +> Philip Guenther wrote: +... +> > Right now, a client can parse a FETCH response at any time, inserting +> > it into its cache without having to consider any context of pending +> > commands. Indeed, the server can send FETCH responses at any time +> > (modulus TCP flow-control/deadlock concerns), and it's *required* to +> > do so for flag changes. Sometimes using the UID and sometimes using +> > msgno would make such unsolicited FETCH responses ambiguous. +> +> A UID fetch response could just as easily be handled at any time. +... +> why not this instead? +> +> Example: C: A999 UID FETCH 4827313:4828442 FLAGS +> S: * UID 4827313 FETCH (FLAGS (\Seen)) +... + +And unsolicited FETCH responses would have used which format? How would +the server have decided that? + + +IMAP message data/metadata processing is basically a cache-fill/coherency +algorithm: the client says "yo, server, please fill in my cache with at +least the following bits" and the server does so, while concurrently +keeping the cache coherent when metadata (flags) are changed by other +clients...and those are handled consistently, with a single response +format. + +I take it you don't like that design. + + +Philip + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22807.mbox:2,S new file mode 100644 index 00000000..ae2db4cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22807.mbox:2,S @@ -0,0 +1,126 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 14:52:05 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112113.56572.witold.krecicki@firma.o2.pl> + +Message-ID: <201006112352.05642.witold.krecicki@firma.o2.pl> + +I don't want to address all the points in Your mail right now, so I'll address +just the most important to me: + +On Friday 11 of June 2010 23:17:56 Mark Crispin wrote: +> On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> >> MOVE doesn't solve those problems in maildir; it makes them worse. MOVE +> >> doesn't solve those problems in other formats either. +> > +> > No, MOVE keeps the problems in maildirs at the same level. It does not +> > make them worse. +> +> Yes, because MOVE introduces requirements and semantics that currently DO +> NOT EXIST in IMAP. +> +> By its definition, MOVE must fufill the requirement of removing from the +> source. There is no way that this can not be done; otherwise it would be +> a COPY and not a MOVE. +> +> IMAP has no guaranteed means of removing a message. Study the semantics +> of STORE and EXPUNGE carefully. MOVE, on the other hand, requires that +> guarantee; and does not have the semantics of STORE and EXPUNGE. + +The EXPUNGE command permanently removes all messages that have the + \Deleted flag set from the currently selected mailbox. Before + returning an OK to the client, an untagged EXPUNGE response is + sent for each message that is removed. + +I really don't get the point, please be more specific. + + +> >> MOVE provides no real benefit to such stores; yet those stores are the +> >> only ones that can actually implement it properly. +> > +> > Database-backed stores can implement it properly and can have performance +> > boost. +> +> So, you postulate a database which is designed to have a performance boost +> in the case of this extension, yet can not implement the base +> specification without a performance cost. +COPY is by definition a slow operation. Using hardlinks etc. is a performance +hack, not a normal method. + +> > But +> > read few lines above - I have written client case (specifically on weak +> > connection clients such as GPRS/EDGE). +> +> I've used such environments (and far worse) for well over 15 years. +> +> We do not move forward by adding new capabilities to solve yesterday's +> problems tomorrow. +> +> 2G (and 1G before that) radio is yesterday's problem. And it wasn't that +> much of a problem. The extra RTTs can be eliminated by pipelining, and it +> is extremely rare that you have a sparse enough sequence that the byte +> count becomes significant. +Pipelining that can cause (copy/store/expunge with failed copy) permanent loss +of data if COPY fails. +So we have a MOVE command that can be non-atomic in some rare, extreme (FS +failure) cases and pipelining copy/store/expunge with the risk of losing data +'with respect to the protocol and with full atomicity'. What do you think is +better from client point of view? + +> >> If AOL uses a database that permits that kind of operation, then there +> >> is no reason why COPY can not also work that way. +> > +> > In this example COPY would create a need to insert new records, MOVE is +> > just update. How could COPY work that way? +> +> If MOVE can be done atomically by an update, there is no reason why COPY +> can not be done that way too. +COPY creates NEW entity, MOVE only changes properties of an EXISTING entity. + +> >> This is an "attractive nuisance". It's one of those ideas that sounds +> >> really good on paper until you study the unintended consequences. +> > +> > What consequences? +> +> A facility that is unimplementable with some stores, some of which +> (notably Maildir) appear to be implementable albeit by a dangerous +> implementation that can (and will!) cause indeterminate results to +> clients. +If COPY is implementable then MOVE is implementable. period. + +In Maildir it can (and will!) cause indeterminate results to client only in +case of catastrophic failure. So will COPY in case of catastrophic failure. + +> A facility that, on the stores where it is implementable, provides no +> compelling advantage. You have to presuppose a store that is designed so +> that COPY must be slow and MOVE must not be yet is atomic. +read above. + +> IMAP has generally not added features whose sole purpose is to provide +> support for a particular type of store. Far more common is that a +> particular type of store has vetoed a proposed addition. +MOVE creates advantage for any kind of single-labeled flat store. + +> > And that sounds like total inability to listen to your counterpart on +> > Your part. +> +> This is not the first time this discussion has taken place. +> +> Every few years, a newcomer comes along and says "I have this simple +> solution that you all should adopt." Then more experienced people try to +> explain the complexities of the situation. +Currently You are the only one more experienced that is trying to explain the +complexities of the situation. Most of the people here (I'm silently assuming +that they are not all newcomers) agreed that it is in fact a needed feature. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22866.mbox:2,S new file mode 100644 index 00000000..7d014950 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22866.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From janssen at parc.com Wed Jul 16 17:54:25 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] issue with the iPhone IMAP client +In-Reply-To: <99F27FFC-0305-43FC-A736-42C71A51FFAD@iki.fi> +References: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> + <99F27FFC-0305-43FC-A736-42C71A51FFAD@iki.fi> +Message-ID: <08Jul16.175432pdt."58698"@synergy1.parc.xerox.com> + +> Is this correct? +> +> > S: * OK [CAPABILITY IMAP4rev1 LOGINDISABLED STARTTLS] UpLib IMAP +> > Server (V4r1) ready.\r\n +> > C: 1 STARTTLS\r\n +> > +> > [handshake takes place] +> > +> > S: 1 OK STARTTLS completed\r\n +> +> OK reply should be sent before the handshake, not after. + +Sorry, no, that was a cut-and-paste error. The OK reply is actually +sent before the handshake. + +Thanks! + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22880.mbox:2,S new file mode 100644 index 00000000..6aca74a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22880.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From MRC at Washington.EDU Wed Feb 6 17:18:03 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IETF no longer accepts free-format Internet-drafts +Message-ID: + +It seems that a consequence of the IETF's new service provider, it is no +longer possible to upload a free-format Internet-draft. Instead of just +emailing to internet-drafts@ietf.org, we're now supposed to use a web page + https://datatracker.ietf.org/idst/upload.cgi +which enforces the idnits requirements and spews forth: + Pages [sic] is not in numeric format. + +Bah, humbug. Pretty formatting is the RFC Editor's job. Requiring such +for drafts is a waste of time. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22883.mbox:2,S new file mode 100644 index 00000000..245c4047 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22883.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From janssen at parc.com Fri Jan 25 12:30:06 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IMAP servers with no INBOX -- any indicators? +Message-ID: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> + +I'm working on my IMAP server again (finally got STARTTLS working), +and one of the issues I see is that one client, Thunderbird, seems to +stubbornly insist on trying to select the inbox, to which I say "NO", +because I'm exporting a file system, so there's no INBOX. + +Here's what's on the wire: + +t-bird: 5 select "INBOX" +server: 5 NO SELECT completed + +which seems to be the appropriate response. Thunderbird seems to find +this so surprising that it pops up a message box which the user has to +click through. I'm wondering if there's some additional flag I should +be passing in, say, the CAPABILITIES response, or perhaps in the +response to the NAMESPACE extension, to indicate to the client that +this is a no-INBOX server? I should probably change "completed" to +"no such mailbox", I suppose. + +Here's the greeting string from my server, in case it's relevant: + +* OK [CAPABILITY IMAP4rev1 NAMESPACE UIDPLUS STARTTLS] UpLib IMAP Server (V4r1) ready. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22886.mbox:2,S new file mode 100644 index 00000000..ddd74050 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22886.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From guenther+imap at sendmail.com Tue Dec 4 17:00:07 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Interesting gmail IMAP RFC 2047 encoding +In-Reply-To: <20071204221552.GA8980@ventoux.cs.ubc.ca> +References: <20071204221552.GA8980@ventoux.cs.ubc.ca> +Message-ID: + +On Tue, 4 Dec 2007, Brendan Cully wrote: +> I've just received a spate of complaints from mutt users that that +> non-ascii addresses are not being decoded in the index view, but are +> in the message view. Apparently gmail is encoding them differently +> depending on whether BODY.PEEK is given a filter or not: +... +> To: =?ISO-8859-1?Q?Br=E9ndan_Cully_?= +> From: =?ISO-8859-1?Q?Br=E9ndan_Cully_?= +... +> 7< * 111 FETCH (UID 573 BODY[] {2273} +... +> To: =?iso-8859-1?Q?Br=E9ndan?= Cully +> From: =?iso-8859-1?Q?Br=E9ndan?= Cully +... +>> From my reading of RFC 2047 section 5.3, the first version is +> performing illegal encoding on the From and To addresses: +> +> + An 'encoded-word' MUST NOT appear in any portion of an 'addr-spec'. +> +> But I'd appreciate it if anyone could confirm my reading. If this is a +> bug in google's IMAP server I'd rather not fix it in mutt. + +Yes, that's broken. If nothing else, the data returned for +BODY[HEADER.FIELDS (...)] must match the data for BODY[]. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22893.mbox:2,S new file mode 100644 index 00000000..e498593d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22893.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sat Oct 27 17:10:55 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <5202.1193523708.069559@peirce.dave.cridland.net> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> +Message-ID: + +On Sat, 27 Oct 2007, Dave Cridland wrote: +> But I'd like to turn off all the legacy encoding at the same time. Mailboxes, +> keywords, headers, bodies - the lot. + +You mean that you want the server to translate charsets to UTF-8? I would +support doing that with an alternative form of FETCH, e.g., UTF8.FETCH. +But then there would have to be an error on a charset conversion failure, +and it begs the question as to why the CONVERT extension in Lemonade +doesn't do that. + +IIRC, the only IMAP specific things that are 7-bit are keywords and +mailbox names. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22899.mbox:2,S new file mode 100644 index 00000000..ce72d61a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22899.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Aug 22 14:14:14 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Private FETCH items +In-Reply-To: <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> +References: <46CC88EE.5040500@andrew.cmu.edu> + <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> +Message-ID: + +On Wed, 22 Aug 2007, Lyndon Nerenberg wrote: +> .FILESIZE is just asking for trouble. Nobody cares what the on-disk +> representation is, and comparing file sizes is NOT the same as comparing +> message content. + +I agree. The c-client library (the beating heart of UW imapd, Pine, etc.) +has a concept of an internal size, but that depends upon the mail store +and thus is only used by mail store drivers. It never gets as far as +imapd (or other application), much less exported in the protocol. + +Let us be clear here; any .FILESIZE value in any server which supports +multiple mail store formats could (and WOULD) vary depending upon the +mailbox format with no obvious indication to the user as to why. This, by +itself, should be enough cause to reject it. + +> .MD5 is useful in the general sense as a fast way to compare messages for +> equality, although I think it would be better served in that context if you +> could MD5 the body content without the 822 headers to be able to handle +> Received: differences for the same message delivered to two or more folders +> via different [SL]MTP transactions. It would probably make more sense to be +> able to generically MD5 by MIME body part. + +IMHO, this functionality belongs as part of CONVERT. An MD5 checksum is, +in effect, a conversion. + +> What's a GUID? + +Presumably this is a global UID which uniquely and permanently identifies +the message on the server. + +I think that IMAP should eventually have a GUID, but it needs careful +design and review. I don't think that we should take the first patch that +comes along. + +> But overall I guess I have to question why it's necessary to burden the +> protocol with this just because somebody wrote some broken code. I have done +> an awful lot of server migrations over the years and I have never yet come up +> against the problem this is trying to detect. I realize you intend this as +> private data, but once it's in the wild, it will get used, for better and +> worse. + +I agree with this sentiment. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22903.mbox:2,S new file mode 100644 index 00000000..57b45ae0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22903.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From ams at oryx.com Thu Jul 19 07:18:32 2007 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: IMAP Server issue with Outlook 2003 +In-Reply-To: <1736746617.342041184850542732.JavaMail.root@dogfood.zimbra.com> +References: + <1736746617.342041184850542732.JavaMail.root@dogfood.zimbra.com> +Message-ID: <20070719141832.GA21786@toroid.org> + +At 2007-07-19 06:09:02 -0700, dkarp@zimbra.com wrote: +> +> In which version of the protocol was "RFC822.PEEK" a valid FETCH +> fetch_att? + +It was in 1730 (i.e. IMAP4), and was obsoleted in 2060 (IMAP4rev1). I +suspect Outlook is trying to use it is because of the capability list +(quoting from the original message): + +> * CAPABILITY CHILDREN IMAP4 IMAP4VER1 AUTH=LOGIN + ^^^^^^^^^ +(i.e. "VER" instead of "rev") + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22911.mbox:2,S new file mode 100644 index 00000000..5bb5448d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22911.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Jun 7 16:11:10 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +In-Reply-To: +References: <46581509.7050201@buni.org> <1180182602.32181.1919.camel@hurina> + + <1181230565.6639.15.camel@mike-laptop> + + +Message-ID: + +On Thu, 7 Jun 2007, Philip Guenther wrote: +> Note that the final EXISTS response is not required here: the previous EXISTS +> said eight and there have been exactly two EXPUNGE responses, so the client +> already knows that exactly six messages remain. + +Correct. I included that EXISTS solely for clarity. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22914.mbox:2,S new file mode 100644 index 00000000..ea31efb3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22914.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From snowjn at aol.com Tue May 22 07:38:42 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] IMAP ID Extension +In-Reply-To: +References: +Message-ID: <46530072.1020500@aol.com> + +Are there any clients that issue the ID command? I would like to gather +statistics on client usage. If not the ID command, is there another way +to get client information? + +thanks, + +john snow. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22917.mbox:2,S new file mode 100644 index 00000000..e4225149 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22917.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Apr 6 09:46:13 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +In-Reply-To: <46167691.2050605@andrew.cmu.edu> +References: <46166C0B.9080308@andrew.cmu.edu> + + <87C9CB41-C741-43CE-81D6-8562110CBACD@goodserver.com> + <46167691.2050605@andrew.cmu.edu> +Message-ID: + +On Fri, 6 Apr 2007, Ken Murchison wrote: +> If a client has Inbox SELECTED at the time of the RENAME, then it should +> receive a "* OK [UIDVALIDITY 1]" response to the next command. Any command +> on a msgno/uid is going to fail anyways, because all of the messages have +> been removed by the RENAME. + +Yes, but in that case the server has to remember all the old UIDs and +UIDNEXT. This is more likely to be a server that used a constant +UIDVALIDITY of 1, rather than one that assigns other UIDVALIDITY values +(meaning that it tossed out the old UIDs and UIDNEXT) and then reusing a +UIDVALIDITY. Otherwise UIDs would become useless. + +We have to be careful about what we say here. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22920.mbox:2,S new file mode 100644 index 00000000..6cd72b68 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22920.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Mar 8 15:16:07 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Thu, 8 Mar 2007, Bill Janssen wrote: +>> The BODY[n.MIME] specification returns the entirety of the MIME part +>> mini-header; there is no list of "headers in the mini-header to include +>> and header in the mini-header to exclude." Note that MIME-Version is +>> normally not in the mini-header. +> Ah, my mistake. I interpreted the language in the RFC: +> ``The MIME part specifier refers to the [MIME-IMB] header for this part.'' +> to mean that only headers specified in [MIME-IMB] should be returned. + +Remember that new MIME-IMB header field names can be defined at any time, +and in fact some of the MIME-IMB header fields aren't defined in MIME-IMB. + +The sole purpose of the BODY[x.MIME] fetch is to allow S/MIME software +access to that data for S/MIME handling. The fact that Thunderbird uses +it (especially right after fetching a BODYSTRUCTURE) is one of many +reasons why it can not be considered an IMAP-clueful client. + +>> I'll note that the message is malformed in that +>> the TEXT/PLAIN is missing the mandatory CHARSET. +> I don't believe it's required by RFC 2045 or 2046, and it's not in the +> original message. I don't see a requirement for it in RFC 3501; could +> you please cite the reference? Thanks. I'll add it to the server. + +Hmm. You're right. I thought that back in MIME working group days we had +made CHARSET mandatory. I wonder when that changed. + +Anyway, as a general rule the IMAP server should fill in defaults rather +than requiring the client to do so. + +> On a related subject, the BODYSTRUCTURE requirements for extension +> data for a multipart section are a bit unclear to me. If "body +> disposition", "body language", and "body location" are not available, +> can they be omitted, as I did in my example? If not, should NIL or "" +> be used to indicate a null "body location"? + +The fields which are not in body-ext-1part and body-ext-mpart are +mandatory. + +Extension fields (those in body-ext-1part and body-ext-mpart) MAY be +omitted IF no subsequent extension field is non-NIL. Thus, if you have a +"body language", you MUST have a "body MD5" and "body disposition" because +they occur earlier in the list, but you MAY omit the "body location" or +anything after that. + +In addition, you may send NIL instead of omitting a field. This is what +my server does. + +Put another way, omitted extension fields are imputed to be of value NIL. + +>> My suggestion is that you try your server against a known IMAP-clueful +>> client (such as Pine or Alpine, hint hint). That way, if there are +>> interoperability problems, it is much easier to diagnose. +> OK, I'll try that, and report back. My target clients are Apple +> Mail and Thunderbird, so I've been working with them in an attempt to +> understand their peculiarities. + +IMHO, neither of those programs is good for debugging an IMAP server; +since when a problem comes up you have no good way of knowing if it is +something your server does wrong or a peculiarity in that client. + +Also IMHO, an attempt to work around client peculiarities in an undebugged +server is an exercise in futility and frustration that all too often leads +to a server which doesn't work well against proper IMAP clients. + +I recommend that you debug against proper IMAP clients first, then tackle +the peculiar ones... + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22938.mbox:2,S new file mode 100644 index 00000000..69a35266 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22938.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jan 1 16:22:23 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <077244CE-5AA8-4524-9A77-27E14C934F84@iki.fi> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + + + + <077244CE-5AA8-4524-9A77-27E14C934F84@iki.fi> +Message-ID: + +Timo Sirainen writes: +> What was the problem with 4.1.3 anyway? Cyrus seems to be using it, so +> it can't be that bad either. + +I don't think 4.1.3 is terrible. + +I chose 4.1.2+loopbreaker because 4.1.3 makes msg-att-static less than +entirely static, which I'd rather avoid if I have a decent alternative. +I cannot point to any concrete ill effects. Call it cargo-cultish +adherence to design principles. + +(What a pity that 4.1.2 and 4.1.3 don't specify a resp-text-code to let +smart clients identify the problem exactly.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095111.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095111.22957.mbox:2,S new file mode 100644 index 00000000..78c01916 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095111.22957.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Dec 6 09:23:26 2006 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] ESEARCH extension (RFC 4731) +In-Reply-To: +References: +Message-ID: <4576FC8E.2010102@isode.com> + +Mark Crispin wrote: + +> How many client implementations of RFC 4731 are there currently? + +Mark, I am not going to answer this question, but in the last month I +know that 3 more servers have added support for this RFC. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22756.mbox:2,S new file mode 100644 index 00000000..fdb49892 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22756.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Tue Nov 15 17:48:22 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + +Message-ID: + +On 16.11.2011, at 3.21, Mark Crispin wrote: + +> If you think that you are smarter than me and can do a better job, then by +> all means go ahead and do it. I've watched at least four IMAP-replacement +> projects launch with great fanfare and bombast only to wither away into +> nothing. There were probably more; I haven't bothered to count but the +> four are the ones that I distinctly remember. +> +> Eventually one of these will succeed. +> +> It will NOT be one that launches with fanfare and bombast. It will be +> something that nobody hears of for years. Its architect will be too busy +> DOING to boast about how much better a job he will do. His time is going +> to be spent, not in reacting to IMAP but rather in solving the completely +> new problems encountered in the process of his own design. +> +> IMAP spent at least 5 years in that stage. + +I've thought about this a few times, but so far I haven't thought of anything significantly better than IMAP. There are some specific features that I'd like, but most of those can be implemented with some simple (maybe non-standard) IMAP extensions.. MSNs still seem like a good idea, although UIDs possibly could be strings (but then can you copy the same mail into same mailbox to create a duplicate UID?) Keyword = mailbox mapping might be nice. Using more command pipelining would be nice (e.g. search | store ). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22772.mbox:2,S new file mode 100644 index 00000000..ac72ddfa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22772.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 26 14:34:43 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> + + <4DDEB7EB.2090508@aol.com> + +Message-ID: + +On Thu, 26 May 2011, Philip Guenther wrote: +> IMAP message data/metadata processing is basically a cache-fill/coherency +> algorithm + +Yes. That is the entire point of IMAP. + +> I take it you don't like that design. + +The IMAP3 debacle was because a certain person did not. The years pass, +and some things never change. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22807.mbox:2,S new file mode 100644 index 00000000..61876a1f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22807.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 15:23:02 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <1276274718.22134.138.camel@kurkku.sapo.corppt.com> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> +Message-ID: <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + +On 11.6.2010, at 17.45, Timo Sirainen wrote: + +>> If MOVE is not atomic, then what is its point? +> +> 1) Allowing user to move messages between mailboxes in situations where +> a COPY would bring user over quota. +> +> 2) Simplify the operation for clients, also drop one round trip wait. I +> guess this mainly would benefit some custom webmail developers that +> develop against a specific server.. +> +> 3) Possibly improve performance with some server implementations. + +Here's an idea that makes it possible for servers to implement 1) and 3), and also make 2) somewhat easier for clients: + +a COPY 1:100 elsewhere +b IF-OK STORE 1:100 +flags \deleted +c IF-OK EXPUNGE + +where IF-OK executes the command only if previous command returned OK, otherwise it fails with NO. + +As long as all of the commands are sent in one IP packet (pretty unlikely they would be broken), the server can read and parse the commands as one unit, and figure out that the client wants to move messages and optimize accordingly. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22866.mbox:2,S new file mode 100644 index 00000000..9714f4b9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22866.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From janssen at parc.com Thu Jul 17 09:33:00 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: issue with the iPhone IMAP client +In-Reply-To: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> +References: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> +Message-ID: <08Jul17.093304pdt."58698"@synergy1.parc.xerox.com> + +> My server is running on port 8143, and here's the server-side record +> of the conversation: +> +> S: * OK [CAPABILITY IMAP4rev1 LOGINDISABLED STARTTLS] UpLib IMAP Server (V4r1) ready.\r\n +> C: 1 STARTTLS\r\n +> S: 1 OK STARTTLS completed\r\n +> +> [handshake takes place] +> +> C: 2 LOGOUT\r\n +> +> On the iPhone, I see "Cannot Get Mail / the connection to the server failed" + +I've tried a few things: using the standard port, removing the +LOGINDISABLED, and sending all my capabilites up-front, instead of +waiting till after the STARTTLS, but nothing seems to help. + +My guess is that the phone is objecting to the self-signed certificate +that I use to "secure" the server. I installed the cert on the phone +as a "profile" (you convert it to DER, then mail it to yourself as an +attachment, then tap on the attachment), but that doesn't help. I'll +try a properly signed cert from some big root authority next. + +Any other ideas? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22880.mbox:2,S new file mode 100644 index 00000000..4ca47da4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22880.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Sat Feb 16 11:07:39 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] header.fields fetching +Message-ID: <1203188859.4901.147.camel@hurina> + +If I have a message: + +FROM: Foo +to :Bar + +And BODY.PEEK[HEADER.FIELDS (from to)] returns: + +From: Foo +To: Bar + +So it: + +1) Standardizes header name casing +2) Standardizes whitespace around ':' + +Any thoughts on how wrong these are? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22883.mbox:2,S new file mode 100644 index 00000000..e952efc8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22883.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Fri Jan 25 12:45:58 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IMAP servers with no INBOX -- any indicators? +In-Reply-To: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> +References: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> +Message-ID: <978EF551-4028-4CC6-972F-2BF8451706B2@iki.fi> + +On 25.1.2008, at 22.30, Bill Janssen wrote: + +> I'm working on my IMAP server again (finally got STARTTLS working), +> and one of the issues I see is that one client, Thunderbird, seems to +> stubbornly insist on trying to select the inbox, to which I say "NO", +> because I'm exporting a file system, so there's no INBOX. + +I think a lot of clients assume that INBOX exists. Easiest to just +create a dummy zero-message read-only virtual INBOX. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22886.mbox:2,S new file mode 100644 index 00000000..0bd827d6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22886.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From jkt at gentoo.org Thu Dec 6 02:31:29 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] INTERNALDATE and server's timezone +Message-ID: <4757CF81.2070004@gentoo.org> + +Hi, +when debugging my IMAP parser, I wanted to test my timezone parsing. +According to RFC3501, the INTERNALDATE parameter should be "immutable", +but it seems that with two IMAP server implementations I tested (dovecot +using maildir and uw-imapd using mbox), it isn't preserved literally. In +my test, my parser launches IMAP server directly (and talks to it +through pipes), so the IMAP process inherits its timezone settings. + +uw-imapd, mbox, TZ=Europe/Prague (+0100): +* 1 FETCH (INTERNALDATE "20-Mar-2005 11:12:55 +0100") + +uw-imapd, mbox, TZ=US/Central (-0600) +* 1 FETCH (INTERNALDATE "20-Mar-2005 11:12:55 -0600") + +dovecot (another data), maildir, TZ=Europe/Prague +* 1 FETCH (INTERNALDATE "03-Mar-2007 15:02:36 +0100") + +dovecot, maildir, TZ=US/Central: +* 1 FETCH (INTERNALDATE "03-Mar-2007 08:02:36 -0600") + +I realize this is kind of artificial problem (server administrators +don't change their timezone settings every day), but I'd like to ask if +this is correct behavior. + +Cheers, +-jkt + +-- +cd /local/pub && more beer > /dev/mouth + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 260 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22893.mbox:2,S new file mode 100644 index 00000000..733bdfa0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22893.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Sat Oct 27 17:23:49 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + +Message-ID: <1193531029.25921.561.camel@hurina> + +On Sat, 2007-10-27 at 17:10 -0700, Mark Crispin wrote: +> On Sat, 27 Oct 2007, Dave Cridland wrote: +> > But I'd like to turn off all the legacy encoding at the same time. Mailboxes, +> > keywords, headers, bodies - the lot. +> +> You mean that you want the server to translate charsets to UTF-8? I would +> support doing that with an alternative form of FETCH, e.g., UTF8.FETCH. +> But then there would have to be an error on a charset conversion failure, +> and it begs the question as to why the CONVERT extension in Lemonade +> doesn't do that. + +Converting message bodies would break cryptographic signatures. +Converting headers automatically might also do bad things. I guess +ENVELOPE, BODY and BODYSTRUCTURE could be returned converted, but I +don't know if that helps much. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22899.mbox:2,S new file mode 100644 index 00000000..765898be --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22899.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From murch at andrew.cmu.edu Thu Aug 23 07:32:53 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Private FETCH items +In-Reply-To: <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> +References: <46CC88EE.5040500@andrew.cmu.edu> + <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> +Message-ID: <46CD9A95.4030001@andrew.cmu.edu> + +Lyndon Nerenberg wrote: +> +> On Aug 22, 2007, at 12:05 PM, Ken Murchison wrote: +> +>> FYI, the difference between RFC822.SIZE and RFC822.FILESIZE is that +>> the former uses the cached size in the message index file, and the +>> latter stat()s for the file size at the time of the request. +> +> .FILESIZE is just asking for trouble. Nobody cares what the on-disk +> representation is, and comparing file sizes is NOT the same as comparing +> message content. + +True. The author of the patch may be using this for something other +than what I was thinking. I'll have to ask. + + +> .MD5 is useful in the general sense as a fast way to compare messages +> for equality, although I think it would be better served in that context +> if you could MD5 the body content without the 822 headers to be able to +> handle Received: differences for the same message delivered to two or +> more folders via different [SL]MTP transactions. It would probably make +> more sense to be able to generically MD5 by MIME body part. + +I probably wasn't clear in the use case. Cyrus now has the ability to +replicate a mailstore in near realtime. Several sites (including CMU in +the near future) are using this to have redundant mailstores in case of +a hardware failure. Rather than create a new tool or protocol to verify +the consistency of the mailstore pairs, extending IMAP with a couple of +new FETCH items seems like a reasonable thing to do. + + +> What's a GUID? + +As Mark deduced, its Global Unique ID + + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22903.mbox:2,S new file mode 100644 index 00000000..646a8e1d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22903.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Sun Jul 22 21:26:23 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Unordered FETCH replies +Message-ID: <1185164783.25618.157.camel@hurina> + +Has anyone tried how badly clients would break if FETCH didn't send +replies ordered by the sequence number? So for example: + +1 fetch 1:* body.peek[] +* 3 FETCH (BODY.PEEK[] "") +* 1 FETCH (BODY.PEEK[] "") +* 2 FETCH (BODY.PEEK[] "") +1 OK + +I guess this is a bad idea. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22911.mbox:2,S new file mode 100644 index 00000000..4735433c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22911.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Sun Jun 10 08:31:34 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +In-Reply-To: +References: <46581509.7050201@buni.org> <1180182602.32181.1919.camel@hurina> + + <1181230565.6639.15.camel@mike-laptop> + + +Message-ID: <1181489494.5181.1.camel@hurina> + +On Thu, 2007-06-07 at 17:02 -0600, Philip Guenther wrote: +> The RECENT response clearly needs to be sent whenever the number messages +> with the \recent flag has changed. It's probably technically legal to +> suppress it when that count hasn't changed (say, if new messages have +> arrived that aren't \recent or if an equal number of \recent messages have +> been expunged as have arrived), but it may not be wise for a server to do +> that. + +Dovecot has been doing that for years. Haven't heard any complains yet. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22914.mbox:2,S new file mode 100644 index 00000000..f4647458 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22914.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From dave at cridland.net Tue May 22 07:56:49 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] IMAP ID Extension +In-Reply-To: <46530072.1020500@aol.com> +References: + <46530072.1020500@aol.com> +Message-ID: <5253.1179845809.680684@peirce.dave.cridland.net> + +On Tue May 22 15:38:42 2007, John Snow wrote: +> Are there any clients that issue the ID command? I would like to +> gather statistics on client usage. + +Mine does, but the chances of anyone using it are pretty slim, and +besides which, it only does it if the user tries getting the +properties of the mail store. + +> If not the ID command, is there another way to get client +> information? + +You could try a fingerprinting technique, I suppose - I'm pretty sure +that nearly every client (or at least, IMAP library) out there uses +slightly different techniques. I've never looked at doing that, but +I'd have thought it'd be possible. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22917.mbox:2,S new file mode 100644 index 00000000..4d977e73 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22917.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From murch at andrew.cmu.edu Fri Apr 6 09:47:27 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +In-Reply-To: +References: <46166C0B.9080308@andrew.cmu.edu> + + <87C9CB41-C741-43CE-81D6-8562110CBACD@goodserver.com> + +Message-ID: <4616799F.2030003@andrew.cmu.edu> + +Mark Crispin wrote: +> On Fri, 6 Apr 2007, David Rauschenbach wrote: +>> So you're saying it is OK if the INBOX's UIDVALIDITY goes from 3,000 +>> down to 1? +> +> I didn't say that! +> +> Ken's question about UIDVALIDITY being "reset" meant "set to a new +> value". I know Ken personally. He is far too intelligent and informed +> to propose implementing a UIDVALIDITY going backwards. +> +> Nonetheless, I understand your concern; and thank you for bringing this +> question up. We need to be careful about the words that we use. What +> was obvious to Ken and me was clearly not-obvious to you, even though we +> all knew that UIDVALIDITY can not ever go backwards. You were +> (rightfully!) alarmed. + +Correct. Unfortunately, my response with the UIDVALIDITY response code +was incorrect. The response should include a UIVALIDITY > 3000. + +Cyrus uses time(0) as the UIDVALIDITY, so my code wouldn't have made my +careless mistake. + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22920.mbox:2,S new file mode 100644 index 00000000..ecfee096 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22920.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Mar 8 15:59:59 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + +Message-ID: + +On Thu, 8 Mar 2007, Mark Crispin wrote: +... +> Extension fields (those in body-ext-1part and body-ext-mpart) MAY be omitted +> IF no subsequent extension field is non-NIL. Thus, if you have a "body +> language", you MUST have a "body MD5" and "body disposition" because they +> occur earlier in the list, but you MAY omit the "body location" or anything +> after that. +> +> In addition, you may send NIL instead of omitting a field. This is what my +> server does. + +Note that there's a difference between omitting a trailing field and +returning it as NIL: in the latter case, the client knows that the +associated header field isn't present. If the server leaves it off +entirely then the client doesn't know whether the field exists or not and +will have to do a direct fetch of the missing fields if it's interested in +them. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22938.mbox:2,S new file mode 100644 index 00000000..c18288be --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22938.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jan 3 07:38:13 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + + + + <077244CE-5AA8-4524-9A77-27E14C934F84@iki.fi> + +Message-ID: + +On Tue, 2 Jan 2007, Arnt Gulbrandsen wrote: +> Timo Sirainen writes: +> > What was the problem with 4.1.3 anyway? Cyrus seems to be using it, so +> > it can't be that bad either. +> I don't think 4.1.3 is terrible. + +Only server implementors would say that. + +Client implementors would say that 4.1.2 and 4.1.3 are both terrible. +They cause the server to behave in completely unexpected ways. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095112.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095112.22957.mbox:2,S new file mode 100644 index 00000000..9087062c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095112.22957.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Dec 6 10:23:45 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] ESEARCH extension (RFC 4731) +In-Reply-To: <4576FC8E.2010102@isode.com> +References: + <4576FC8E.2010102@isode.com> +Message-ID: + +On Wed, 6 Dec 2006, Alexey Melnikov wrote: +> Mark Crispin wrote: +> > How many client implementations of RFC 4731 are there currently? +> Mark, I am not going to answer this question, but in the last month I +> know that 3 more servers have added support for this RFC. + +The reason why I asked is that I am considering adding support for it in +UW imapd. It seems easy enough to do in a server, but if it won't be +widely used then it will become a potential source of inexplicable bugs. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22756.mbox:2,S new file mode 100644 index 00000000..b4d4117e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22756.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From mrc+imap at panda.com Tue Nov 15 18:24:17 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + +Message-ID: + +On Wed, 16 Nov 2011, Timo Sirainen wrote: +> MSNs still seem like a +> good idea, although UIDs possibly could be strings (but then can you +> copy the same mail into same mailbox to create a duplicate UID?) + +That brings up the possibility of GUIDs (and possibly using uint64 instead +of uint32). Unfortunately, this also would cause the loss of strict +ascendency; a principle characteristic that makes IMAP UIDs more useful +than POP3 UIDs. + +> Keyword = mailbox mapping might be nice. + +If I were to do that, I abolish separate mailboxes as a concept entirely, +and go to named views ala Gmail. That, in turn, would infuriate everybody +that uses a timesharing system style mail store with multiple mailboxes as +separate filesystem objects. A major part of the design of IMAP was to +export pre-existing mail stores. + +There's always a tension between those who want a mail access protocol to +export something pre-existing, and those who want it to export their +notion of an ideal. + +On the other hand, replacing mailboxes with named views (and the resulting +abolition of COPY) makes GUIDs more viable. Synchronization would always +be with the "all" view, and thus we can keep strict ascendency even though +messages may come and go in a certain view. + +On the OTHER hand (three hands here?) doesn't that also preclude shared +mailboxes? Oh dear, oh my... + +Choices, choices... :) + +If we keep the facility of separate mailboxes, albeit for such +functionality as shared mailboxes, then keywords should evolve into named +views; and servers should use these and NOT mailbox naming for views. + +My understanding is that Google perceived keywords as not commonly +implemented, and thus needing to do view/mailbox mapping. It's been a +major problem; a classic case of kludge tower building because it was +perceived that they couldn't do it right to begin with. + +> Using more command pipelining would be +> nice (e.g. search | store ). + +I've thought of that, but in a more limited context of "apply search +criteria" as the sequence for a command. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22772.mbox:2,S new file mode 100644 index 00000000..5a0fce1f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22772.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From brong at fastmail.fm Thu May 26 15:36:37 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDEB7EB.2090508@aol.com> +References: <4DDEA412.6030305@aol.com> + + <4DDEB7EB.2090508@aol.com> +Message-ID: <20110526223637.GA29831@brong.net> + +On Thu, May 26, 2011 at 04:28:27PM -0400, John Snow wrote: +> Philip Guenther wrote: +> >On Thu, 26 May 2011, John Snow wrote: +> >>My question is simply, why? Why is the sequence number needed +> >>when the command specified a UID, and the UID must be included +> >>in the response. Seems to me the UID command should have a UID +> >>response. snow. +> > +> >Right now, a client can parse a FETCH response at any time, +> >inserting it into its cache without having to consider any context +> >of pending commands. Indeed, the server can send FETCH responses +> >at any time (modulus TCP flow-control/deadlock concerns), and it's +> >*required* to do so for flag changes. Sometimes using the UID and +> >sometimes using msgno would make such unsolicited FETCH responses +> >ambiguous. +> > +> >Philip Guenther +> +> A UID fetch response could just as easily be handled at any time. +> +> From the example: +> +> Example: C: A999 UID FETCH 4827313:4828442 FLAGS +> S: * 23 FETCH (FLAGS (\Seen) UID 4827313) +> S: * 24 FETCH (FLAGS (\Seen) UID 4827943) +> S: * 25 FETCH (FLAGS (\Seen) UID 4828442) +> S: A999 OK UID FETCH completed +> +> why not this instead? +> +> Example: C: A999 UID FETCH 4827313:4828442 FLAGS +> S: * UID 4827313 FETCH (FLAGS (\Seen)) +> S: * UID 4827943 FETCH (FLAGS (\Seen) ) +> S: * UID 4828442 FETCH (FLAGS (\Seen) ) +> S: A999 OK UID FETCH completed + +Apart from the more complex parser. Parsing IMAP is +hairy enough as it is. + +What I would like to see (if I was writing "IMAP" from +scratch) is putting the "UID" part as a generic search +expression. So you would either do: + +A999 FETCH 1:5 FLAGS + +or + +A999 FETCH (UID 4827313:4828442) FLAGS + +or indeed: + +A999 FETCH (OR UNSEEN FLAGGED) (WINDOW 1:20) FLAGS + +The ability to request the first "N" messages that match +a particular filter (even more so if you could apply a sort +upfront as well) would be very handy. + +And if you were doing something expensive like a full body +search, then being able to sort the result by something +trivial (like REVERSE SENTDATE) and then apply the search +only until you had filled your request window could +potentially save a lot of IO. + +But none of that is a good reason to have a conditionally +mutating response format. + +Bron ( though I'd love for it to be easier to require IDLE to + spit out UIDs on every response ) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22807.mbox:2,S new file mode 100644 index 00000000..70e549e0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22807.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Jun 11 16:16:36 2010 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006112352.05642.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112113.56572.witold.krecicki@firma.o2.pl> + + <201006112352.05642.witold.krecicki@firma.o2.pl> +Message-ID: + +On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> On Friday 11 of June 2010 23:17:56 Mark Crispin wrote: +> > On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> > >> MOVE provides no real benefit to such stores; yet those stores are +> > >> the only ones that can actually implement it properly. +> > > +> > > Database-backed stores can implement it properly and can have +> > > performance boost. +> > +> > So, you postulate a database which is designed to have a performance +> > boost in the case of this extension, yet can not implement the base +> > specification without a performance cost. +> +> COPY is by definition a slow operation. Using hardlinks etc. is a +> performance hack, not a normal method. + +Uh, what? It sounds like you're saying that you're going to build a +system where MOVE is fast (so single message rename is fast) but then +intentionally *not* take advantage of the design to use hardlinks to make +COPY fast. Claiming that using hardlinks is "not a normal method" when +it's been in use for better than a decade requires some justification. + + + +> > IMAP has generally not added features whose sole purpose is to provide +> > support for a particular type of store. Far more common is that a +> > particular type of store has vetoed a proposed addition. +> +> MOVE creates advantage for any kind of single-labeled flat store. + +So you agree with Mark that it's only for a particular type of store that +this helps. + + +> > This is not the first time this discussion has taken place. +> > +> > Every few years, a newcomer comes along and says "I have this simple +> > solution that you all should adopt." Then more experienced people try +> > to explain the complexities of the situation. +> +> Currently You are the only one more experienced that is trying to explain the +> complexities of the situation. Most of the people here (I'm silently assuming +> that they are not all newcomers) agreed that it is in fact a needed feature. + +You're claiming that silence is assent with your side and not the others'? +That's odd, as I believe I saw messages from two people (Dave and Arnt) +saying that it seems unnecessary. As a former mail store developer +(single-instance, file per message with DB indexes, style), I agree with +them that this seems unnecessary and not condusive to IMAP +interoperability. I.e., *this* part of the previous silence disagrees +with you. + + +Philip Guenther +Sendmail, Inc. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22866.mbox:2,S new file mode 100644 index 00000000..29146d29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22866.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jul 17 09:59:43 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: issue with the iPhone IMAP client +In-Reply-To: <"08Jul17. 093304pdt. 58698"@synergy1.parc.xerox.com> +References: <"08Jul16. 163302pdt. 58698"@synergy1.parc.xerox.com> <"08Jul17. + 093304pdt. 58698"@synergy1.parc.xerox.com> +Message-ID: + +Bill Janssen writes: +> Any other ideas? + +Sometimes clients want the cert to have specific properties. When I used +openssl to sign a cert for myself a month or two ago, I had to struggle +a little. I appear to have finished off with these properties: +keyUsage = nonRepudiation, digitalSignature, keyEncipherment, cRLSign, +keyCertSign + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22880.mbox:2,S new file mode 100644 index 00000000..22680230 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22880.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Feb 16 12:12:37 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] header.fields fetching +In-Reply-To: <1203188859.4901.147.camel@hurina> +References: <1203188859.4901.147.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> Any thoughts on how wrong these are? + +Obviously ;) + +It depends on what's being stored or displayed. What you see is a +changed ASCII string representing an unchanged RFC822 header field, so +it really depends on whether the system operates on ASCII/octet strings +or on the objects defined by RFC822 and its successors, and on whether +you (as user) want to operate on email messages or octet strings. + +The same issue occurs with domains, which IMO is simpler since there's +less syntax involved. Suppose you send + + From: tss@iki.fi + Cc: tss@Iki.Fi + +and one or more recipient(s) see(s) iki.fi written with the same casing +in both fields. The string has changed, the domain hasn't. Has there +been a change? + +The RFCs touch on this stuff a few times. RFC 3501 page 46 has a note, +the S/MIME RFCs mention it, and IIRC MIXER does, too. I haven't looked +at vcard in enough detail, but I wouldn't be surprised to see +something. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22883.mbox:2,S new file mode 100644 index 00000000..bc619c29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22883.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From MRC at Washington.EDU Fri Jan 25 15:44:50 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IMAP servers with no INBOX -- any indicators? +In-Reply-To: <978EF551-4028-4CC6-972F-2BF8451706B2@iki.fi> +References: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> + <978EF551-4028-4CC6-972F-2BF8451706B2@iki.fi> +Message-ID: + +On Fri, 25 Jan 2008, Timo Sirainen wrote: +> I think a lot of clients assume that INBOX exists. Easiest to just create a +> dummy zero-message read-only virtual INBOX. + +I agree with this advice. This very topic came up many years ago, and the +general concensus at the time was that clients are not out of line by +expecting an INBOX. The specification very strongly implies that clients +may make that assumption. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22886.mbox:2,S new file mode 100644 index 00000000..51f12087 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22886.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Dec 6 11:15:24 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] INTERNALDATE and server's timezone +In-Reply-To: <4757CF81.2070004@gentoo.org> +References: <4757CF81.2070004@gentoo.org> +Message-ID: + +On Thu, 6 Dec 2007, Jan Kundr?t wrote: +> when debugging my IMAP parser, I wanted to test my timezone parsing. +> According to RFC3501, the INTERNALDATE parameter should be "immutable", +> but it seems that with two IMAP server implementations I tested (dovecot +> using maildir and uw-imapd using mbox), it isn't preserved literally. + +The problem with mbox is that some forms of the mbox format internal +header does not include timezone information. Thus, the timezone has to +be inferred from the "local time zone", hence causing your seeming +discrepancy since you're running imapd with different "local time zones". + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22893.mbox:2,S new file mode 100644 index 00000000..9d10897a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22893.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Sat Oct 27 17:49:44 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <1193531029.25921.561.camel@hurina> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> +Message-ID: + +On Sun, 28 Oct 2007, Timo Sirainen wrote: +> Converting message bodies would break cryptographic signatures. +> Converting headers automatically might also do bad things. I guess +> ENVELOPE, BODY and BODYSTRUCTURE could be returned converted, but I +> don't know if that helps much. + +Right, which is why FETCH should remain unchanged. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22899.mbox:2,S new file mode 100644 index 00000000..3dcdbaf8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22899.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From murch at andrew.cmu.edu Thu Aug 23 07:34:06 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: Private FETCH items +In-Reply-To: +References: <46CC88EE.5040500@andrew.cmu.edu> + +Message-ID: <46CD9ADE.4090709@andrew.cmu.edu> + +Arnt Gulbrandsen wrote: +> Sounds to me as the patch author really wants a FETCH COOKIE instead of +> MD5/FILESIZE, returning an opaque cookie which should be the same if the +> same message is present in two mailboxes/servers and different otherwise. + +Correct. + + +> What does the GUID do? + +Uniquely identifies a message so that if the same message is present in +more than one mailbox, its contents only gets replicated once. + + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22903.mbox:2,S new file mode 100644 index 00000000..acd53656 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22903.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Sun Jul 22 21:31:28 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Unordered FETCH replies +In-Reply-To: <1185164783.25618.157.camel@hurina> +References: <1185164783.25618.157.camel@hurina> +Message-ID: + +On Mon, 23 Jul 2007, Timo Sirainen wrote: +> Has anyone tried how badly clients would break if FETCH didn't send +> replies ordered by the sequence number? So for example: +> +> 1 fetch 1:* body.peek[] +> * 3 FETCH (BODY.PEEK[] "") +> * 1 FETCH (BODY.PEEK[] "") +> * 2 FETCH (BODY.PEEK[] "") +> 1 OK + +No compliant client will break with this. + +Nor, for that matter, will a compliant client break if the response for a +message is broken into multiple FETCH responses. Under certain +circumstances, UW imapd will do that. + +Proper handling of this is a requirement of IMAP clients. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22911.mbox:2,S new file mode 100644 index 00000000..ff3a955c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22911.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From karl at hiramoto.org Wed Jun 13 05:39:08 2007 +To: imap-protocol@u.washington.edu +From: Karl Hiramoto +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +Message-ID: <466FE56C.7000900@hiramoto.org> + + +Hello all, + +I'm writing a IMAP client that is a virus/spam scanner. My plan is to +scan where i have write access, and to mark messages with a flag +MyScanner or something, to signify that it is scanned, and does not need +to be scanned again. If it is a positive spam or virus hit, i will +store changes to the message. + +My question is if anyone sees problems doing this, and how many servers +that are in use today do not support custom permanent flags? My +testing so far with courier looks like it will work.. + +If the server does not support custom permanent flags, what i could do, +is store changes to the email header. + +Thanks, +---- +Karl Hiramoto + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22914.mbox:2,S new file mode 100644 index 00000000..a1107d76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22914.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue May 22 08:13:23 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] "SCAN" capability ? +In-Reply-To: +References: +Message-ID: + +On Tue, 22 May 2007, DINH Vi?t Ho? wrote: +> Note that in capabilities, there is something called 'SCAN'. +> I never heard about this. Does anyone know what it is ? + +SCAN is a private extension in UW imapd. It's a LIST that takes a third +argument, and it filters out names that do not have that string in the +file contents. It's like fgrep through mailbox files, but is very crude +(too crude). + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22917.mbox:2,S new file mode 100644 index 00000000..8b9d0729 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22917.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From murch at andrew.cmu.edu Fri Apr 6 10:43:09 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +In-Reply-To: +References: <46166C0B.9080308@andrew.cmu.edu> + +Message-ID: <461686AD.5040800@andrew.cmu.edu> + +Mark Crispin wrote: +> On Fri, 6 Apr 2007, Ken Murchison wrote: +>> I don't want to start another holy over whether we need to drop +>> RENAME, but I have a couple of questions regarding the +>> intended/expected behavior of RENAME Inbox. +> +> If IMAP5 ever happens, I will insist that RENAME is dropped. Nobody +> implements it correctly. +> +>> - I assume that \Seen state should follow the messages, just like any +>> other RENAME, correct? +> +> I think so. +> +>> - Should mailbox annotations be copied or moved to the new mailbox? +> +> I think that they move with the mailbox. +> +>> - Should the UIDVALIDITY, UIDNEXT, HIGHESTMODESEQ, etc of the Inbox be +>> reset? +>> In other words, should Inbox look like it has been freshly CREATEd? +> +> I think so, since a freshly-CREATEd INBOX is the intended effect. + +Is there any problem if the UIDVALIDITY, UIDNEXT, HIGHESTMODSEQ, aren't +reset? Will mainstream clients have a problem one way or the other? + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22920.mbox:2,S new file mode 100644 index 00000000..5ac21455 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22920.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Mar 8 16:10:00 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + + +Message-ID: + +On Thu, 8 Mar 2007, Philip Guenther wrote: +> Note that there's a difference between omitting a trailing field and +> returning it as NIL: in the latter case, the client knows that the associated +> header field isn't present. If the server leaves it off entirely then the +> client doesn't know whether the field exists or not and will have to do a +> direct fetch of the missing fields if it's interested in them. + +Good point. I remembered that there was a reason why the server should +send NIL instead of omitting, but I had a brain fart and forgot. + +So, let me amend my previous statement: your server SHOULD process +extension fields and SHOULD send NIL in the BODYSTRUCTURE if the fields +are absent in the MIME-IMB header. It SHOULD NOT omit them; that behavior +is for legacy servers which do not implement the extension fields. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22938.mbox:2,S new file mode 100644 index 00000000..6f6717a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22938.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From stahl at soest.hawaii.edu Thu Jan 11 09:54:10 2007 +To: imap-protocol@u.washington.edu +From: Sharon Stahl +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Fw: FT_RETURNSTRINGSTRUCT in imap-2006d +Message-ID: <007501c735a9$7fd6d7c0$41b35f46@StahlHome> + + + + + Hello, + I am trying to upgrade to the imap-2006d imap and pop daemons from + imap-2004g which we have been running for some time. + + The new imapd does not appear to work with dtmail on Solaris. + Messages display but when you try to copy, print or save them, you + only get the header. Not sure what other mail client this happens on. + + I believe this is because of the new flag "FT_RETURNSTRINGSTRUCT". + In the RELNOTES it says...... + + "A new FT_RETURNSTRINGSTRUCT flag has been added for mail_fetch_body() and + mail_fetch_text() calls. If this flag is set, *and* if the function +returns + NIL, then the requested string data is available on a stringstruct on + stream->private.string. This is a special hack for the IMAP and POP +servers + and is subject to incompatible change. The result is a major performance + improvement in the servers with the mbx driver, particularly with large + messages." + + + I have tried to "unset" this flag but have not been able to come up with + a way to disable it so that the program still will compile. + + Is it possible to stop using this for the imapd? + + Aloha, Sharon Stahl + + *=========================================================* + | UH/SOEST-Research Computer Fac vox: (808) 956-2616 +| + | 1680 East West Rd- POST820 email: stahl@soest.hawaii.edu +| + | Honolulu, Hi 96822 fax: (808) 956-9256 +| +*=========================================================* + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22957.mbox:2,S new file mode 100644 index 00000000..ba3fcba3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22957.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From tss at iki.fi Tue Dec 19 19:49:00 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] REFERENCES2 threading +Message-ID: <1166586540.22214.282.camel@hurina> + +There are two annoying things with the standard REFERENCES threading: + +1. I think base subject merging is nowadays more annoying than it is +helpful. Pretty much all the clients generate References headers +properly. + +2. Root nodes should be sorted by the newest message in the thread, not +by the root node's date. The new messages should be easily found, not +lost somewhere among old messages. + +I've now implemented these as X-REFERENCES2 to Dovecot. Is anyone else +interested in getting this standardized? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095113.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095113.22960.mbox:2,S new file mode 100644 index 00000000..9dfa6369 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095113.22960.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From tss at iki.fi Fri Nov 3 05:51:26 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] rfc4549 +Message-ID: <1162561886.29374.42.camel@hurina> + +Why does it suggest fetching new messages with :*? Hasn't +this been discussed already several times here that it'll return the +last message also, unneededly wasting bandwidth and server resources? +Wouldn't :2147483647 be a better solution? +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22756.mbox:2,S new file mode 100644 index 00000000..e62d3c53 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22756.mbox:2,S @@ -0,0 +1,103 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 15 21:08:34 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + +Message-ID: <20111116050834.GA12266@brong.net> + +On Tue, Nov 15, 2011 at 05:21:35PM -0800, Mark Crispin wrote: +> On Wed, 16 Nov 2011, Bron Gondwana wrote: +> >It's not the first time this warty area of the specification has been +> >queried - and the fact that multiple implementors have asked exactly +> >the same questions suggests that the logicial inconsistency in that +> >part of the specification is a problem which impedes understanding. +> +> That is why there is an errata and the concept of "frequently asked +> questions." This particular question is one that is simply answered; and +> is usually answered simply without making a federal case out of it. +> +> These things happen. They always will happen. Should someone bother to +> make an erratum on this matter and get it posted to the errata, it will +> eventually get into a revision of the document. But there is no way that +> anyone can prevent it from happening in the future. +> +> If you care so much, write the erratum and submit it. +> +> Nobody cares that you think that you are smarter than me and know how to +> solve problems better than you. +> +> Just write the freaking erratum, submit it, and move on. + +% Intelligent and talented people, if they find that trivial matter to be +% annoying enough, will write an errata with proposed replacement wording, +% post it for review, and upon general concensus will submit it to the RFC +% 3501 errata for inclusion in a future revision. + +So I did. + +> Within hours after the revision is issued, there are new errata. At that +> point, everybody is too burned out to do anything more than start a new +> errata list. + +And meanwhile whenever anyone asks the question, you can point at the +errata. Problem solved. No debate. + +> >Fix it in ONE place, or explain it fresh to every new person +> >who trips over this nastily placed rock as if they're some sort of +> >idiot for not understanding the last time you explained it to someone +> >else. +> +> The third alternative is simply to explain it and move on. "Yup, there's a +> rock there, just step around it." It doesn't imply that the newbie is an +> idiot. He wouldn't know that there is no deep dark secret, so he asked - +> which is absolutely and unquestionably the intelligent thing to do. +> +> The only idiot in this entire foofaraw is you, for beating a dead horse. +> +> If it's so important to you, write the erratum and move on. + +Yeah, I did that first. + +> >the reason we breed new people all the +> >time is because you sometimes have to throw everything away and start with +> >just bits of what you had before. If you let the all the history build up +> >for ever you wind up with an old person living in their memories and unable +> >to adapt to the world. +> +> If you think that you are smarter than me and can do a better job, then by +> all means go ahead and do it. I've watched at least four IMAP-replacement +> projects launch with great fanfare and bombast only to wither away into +> nothing. There were probably more; I haven't bothered to count but the +> four are the ones that I distinctly remember. + +I don't know about "smarter" - but I think I probably will have a go at +a mail protocol at some point if I keep working with mail 100%. It's +not fully baked yet though. + +> Eventually one of these will succeed. +> +> It will NOT be one that launches with fanfare and bombast. It will be +> something that nobody hears of for years. Its architect will be too busy +> DOING to boast about how much better a job he will do. His time is going +> to be spent, not in reacting to IMAP but rather in solving the completely +> new problems encountered in the process of his own design. +> +> IMAP spent at least 5 years in that stage. + +We're not that far yet. We're still experimenting with a bunch of ajaxy +JSON nonsense which will probably go through plenty more revisions when +it has more than one user. Middleware first. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22772.mbox:2,S new file mode 100644 index 00000000..80864ce1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22772.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From dave at cridland.net Thu May 26 15:56:07 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <20110526223637.GA29831@brong.net> +References: <4DDEA412.6030305@aol.com> + + <4DDEB7EB.2090508@aol.com> <20110526223637.GA29831@brong.net> +Message-ID: <3054.1306450567.471110@puncture> + +On Thu May 26 23:36:37 2011, Bron Gondwana wrote: +> A999 FETCH (UID 4827313:4828442) FLAGS +> +> +SEARCHRES + +> A999 FETCH (OR UNSEEN FLAGGED) (WINDOW 1:20) FLAGS + ++ CONTEXT + +> And if you were doing something expensive like a full body +> search, then being able to sort the result by something +> trivial (like REVERSE SENTDATE) and then apply the search +> only until you had filled your request window could +> potentially save a lot of IO. + ++ ESORT + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22807.mbox:2,S new file mode 100644 index 00000000..6f437b4e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22807.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 16:24:53 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + +Message-ID: <201006120124.53714.witold.krecicki@firma.o2.pl> + +On Saturday 12 of June 2010 01:16:36 Philip Guenther wrote: +> On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> > On Friday 11 of June 2010 23:17:56 Mark Crispin wrote: +> > > On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> > > >> MOVE provides no real benefit to such stores; yet those stores are +> > > >> the only ones that can actually implement it properly. +> > > > +> > > > Database-backed stores can implement it properly and can have +> > > > performance boost. +> > > +> > > So, you postulate a database which is designed to have a performance +> > > boost in the case of this extension, yet can not implement the base +> > > specification without a performance cost. +> > +> > COPY is by definition a slow operation. Using hardlinks etc. is a +> > performance hack, not a normal method. +> +> Uh, what? It sounds like you're saying that you're going to build a +> system where MOVE is fast (so single message rename is fast) but then +> intentionally *not* take advantage of the design to use hardlinks to make +> COPY fast. Claiming that using hardlinks is "not a normal method" when +> it's been in use for better than a decade requires some justification. +Even if used for over a decade it is STILL a performance hack. + +> > > IMAP has generally not added features whose sole purpose is to provide +> > > support for a particular type of store. Far more common is that a +> > > particular type of store has vetoed a proposed addition. +> > +> > MOVE creates advantage for any kind of single-labeled flat store. +> +> So you agree with Mark that it's only for a particular type of store that +> this helps. +No, I'm showing that there is a store in which this helps. There may be other +types. + +> > > This is not the first time this discussion has taken place. +> > > +> > > Every few years, a newcomer comes along and says "I have this simple +> > > solution that you all should adopt." Then more experienced people try +> > > to explain the complexities of the situation. +> > +> > Currently You are the only one more experienced that is trying to explain +> > the complexities of the situation. Most of the people here (I'm silently +> > assuming that they are not all newcomers) agreed that it is in fact a +> > needed feature. +> +> You're claiming that silence is assent with your side and not the others'? +No, I'm simply assuming that those who are not willing to take part in this +discussion do not have an opinion. + +> That's odd, as I believe I saw messages from two people (Dave and Arnt) +> saying that it seems unnecessary. As a former mail store developer +> (single-instance, file per message with DB indexes, style), I agree with +> them that this seems unnecessary and not condusive to IMAP +> interoperability. I.e., *this* part of the previous silence disagrees +> with you. +I've talk with Arnt and he thinks that it it a good idea. + +Daves argument that the idea of 'trash can' is broken and people should just +delete their mails (or IMAP should create a 'trash can' model) it's IMHO +simply out of this world - people want to have a trash can and be able to +recover deleted e-mails. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22866.mbox:2,S new file mode 100644 index 00000000..d16afd7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22866.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From joel at panacea.null.org Thu Jul 17 17:35:54 2008 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] issue with the iPhone IMAP client +In-Reply-To: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> +References: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> +Message-ID: <5802.1216341354@succubus.panacea.null.org> + +> I'm testing the iPhone IMAP mail client against my UpLib IMAP server, +> and it seems to be unhappy, for reasons I don't understand. +> +> My server is running on port 8143, and here's the server-side record +> of the conversation: +> +> S: * OK [CAPABILITY IMAP4rev1 LOGINDISABLED STARTTLS] UpLib IMAP Server (V4r1 +> ) ready.\r\n +> C: 1 STARTTLS\r\n +> +> [handshake takes place] +> +> S: 1 OK STARTTLS completed\r\n +> C: 2 LOGOUT\r\n +> +> On the iPhone, I see "Cannot Get Mail / the connection to the server failed" + +This is sounding similar to a problem one of my users had with Apple Mail +recently, and the really strange thing is that other Apple Mail users +don't have the problem. + +She couldn't connect with STARTTLS even though her client was prompting +her to confirm acceptance of my self-signed certificate. + +Eventually I gave up and let her use IMAPS. I think the Apple STARTTLS +handling is buggy. Perhaps try IMAPS? + +Cheers, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22880.mbox:2,S new file mode 100644 index 00000000..aec14382 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22880.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Sat Feb 16 12:23:07 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] header.fields fetching +In-Reply-To: +References: <1203188859.4901.147.camel@hurina> + +Message-ID: <8782ACCD-1349-445D-BEAA-EB5409610D24@iki.fi> + +On Feb 16, 2008, at 10:12 PM, Arnt Gulbrandsen wrote: + +> Timo Sirainen writes: +>> Any thoughts on how wrong these are? +> +> Obviously ;) + +Note that I'm specifically talking about HEADER.FIELDS fetching. +Fetching the entire message, the header of the message or +HEADER.FIELDS.NOT would show the headers in their original form. Your +answer sounded more like you assumed the headers were permanently +changed for all of them. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22883.mbox:2,S new file mode 100644 index 00000000..28fa1af5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22883.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From janssen at parc.com Fri Jan 25 15:55:49 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +Message-ID: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + +I'm trying to figure out exactly how to implement PLAIN authentication +for IMAP. The spec seems less than clear to me. The example given in +RFC 2595, which is not for IMAP, illustrates a PLAIN exchange thusly: + +C: a003 AUTHENTICATE "PLAIN" {21+} +C: timtanstaaftanstaaf + +That is, it's one message, giving two parameters, "PLAIN" and the +authentication information. + +However, when I advertise AUTH=PLAIN, Thunderbird sends + +C: 4 authenticate plain + +without any authentication information. This is in accord with the +general description of the AUTHENTICATE message in RFC 3501, and with +the examples of non-PLAIN authentication given in RFC 3501, but not in +accord with RFC 2595, which explicitly says "a single message", or with +the example given. + +Bill + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22886.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22886.mbox:2,S new file mode 100644 index 00000000..7f849211 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22886.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Dec 27 14:16:07 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Private FETCH items +In-Reply-To: <20071227220934.GA10658@brong.net> +References: <46CC88EE.5040500@andrew.cmu.edu> + <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> + <20071227220934.GA10658@brong.net> +Message-ID: + + +On 2007-Dec-27, at 15:09 , Bron Gondwana wrote: + +> You're lucky if you've never seen file corruption due to bitrot on +> large +> drive arrays. We have about 30TB online at the moment and that's +> growing fairly rapidly. The research out there suggests we're +> likely to +> have a block level corruption every couple of months with the current +> level of affordable component reliability. + +But that's a local hardware issue, and should be handled locally to +the host. I.e. have the IMAP server checksum the files when writing to +disk, and verify that checksum when reading the data. Doing random +checks via the IMAP protocol won't prevent you from offering corrupted +data to clients. You have the right solution, but you're applying it +at the wrong layer. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22893.mbox:2,S new file mode 100644 index 00000000..be24d578 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22893.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Oct 28 02:38:19 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + +Message-ID: + +Mark Crispin writes: +> On Sun, 28 Oct 2007, Timo Sirainen wrote: +>> Converting message bodies would break cryptographic signatures. +>> Converting headers automatically might also do bad things. I guess +>> ENVELOPE, BODY and BODYSTRUCTURE could be returned converted, but I +>> don't know if that helps much. +> +> Right, which is why FETCH should remain unchanged. + +I haven't looked at CONVERT recently, but from what I remember, it can +handle charset conversion. That leaves ENVELOPE, BODY, BODYSTRUCTURE, +mailbox names and flags. So a new extension to say "give me those in +UTF-8" makes sense to me. + +But an extension to say only "use UTF-8 for mailboxes and flags (instead +of mUTF-7)" makes even more sense. UTF-8 flags have real value. But I +assume most clients need 8859-1 and 2047 support for other reason, +andso changing the way ENVELOPE, BODY and BODYSTRUCTURE works doesn't +really make life simpler for them. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22899.mbox:2,S new file mode 100644 index 00000000..b2c7dc97 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22899.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From murch at andrew.cmu.edu Fri Aug 24 13:42:18 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: Private FETCH items +In-Reply-To: <6JQK/Y9XpY9K0X8cuRALCQ.md5@[192.168.1.102]> +References: <46CC88EE.5040500@andrew.cmu.edu> + + <46CD9ADE.4090709@andrew.cmu.edu> + <6JQK/Y9XpY9K0X8cuRALCQ.md5@[192.168.1.102]> +Message-ID: <46CF42AA.5020706@andrew.cmu.edu> + +Arnt Gulbrandsen wrote: +> Ken Murchison writes: +>> Arnt Gulbrandsen wrote: +>>> What does the GUID do? +>> +>> Uniquely identifies a message so that if the same message is present +>> in more than one mailbox, its contents only gets replicated once. +> +> I'm afraid I phrased the question badly. What does the code do when +> asked for a GUID? + +Pulls the message GUID out of the index file for the mailbox. + + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22903.mbox:2,S new file mode 100644 index 00000000..fab06b0f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22903.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Jul 22 23:24:32 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Unordered FETCH replies +In-Reply-To: <1185164783.25618.157.camel@hurina> +References: <1185164783.25618.157.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> Has anyone tried how badly clients would break if FETCH didn't send +> replies ordered by the sequence number? + +Yes, and no breakage. Clients break on many things they should handle +(try sending lowercase OK/NO/BAD ;) but that one seems fine. + +(We changed to strict increasing order later because of testing constraints.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22911.mbox:2,S new file mode 100644 index 00000000..becaeed1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22911.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From tss at iki.fi Wed Jun 13 07:03:15 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: <466FE56C.7000900@hiramoto.org> +References: <466FE56C.7000900@hiramoto.org> +Message-ID: <1181743395.32078.161.camel@hurina> + +On Wed, 2007-06-13 at 14:39 +0200, Karl Hiramoto wrote: +> Hello all, +> +> I'm writing a IMAP client that is a virus/spam scanner. My plan is to +> scan where i have write access, and to mark messages with a flag +> MyScanner or something, to signify that it is scanned, and does not need +> to be scanned again. If it is a positive spam or virus hit, i will +> store changes to the message. +> +> My question is if anyone sees problems doing this, and how many servers +> that are in use today do not support custom permanent flags? My +> testing so far with courier looks like it will work.. + +All the widely used open source IMAP servers support keywords: Cyrus, +Courier, UW-IMAP and Dovecot. I don't know about the less commonly used +or commercial servers. + +> If the server does not support custom permanent flags, what i could do, +> is store changes to the email header. + +I don't think it's a very good idea. It requires downloading the message +and them uploading it back. Rather just report "Your IMAP server doesn't +support keywords, switch to a better one". + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22914.mbox:2,S new file mode 100644 index 00000000..3a3c3d10 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22914.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From snowjn at aol.com Tue May 22 09:59:41 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] "SCAN" capability ? +In-Reply-To: +References: + +Message-ID: <4653217D.7040504@aol.com> + +Aren't private extensions supposed to begin with an "X"? + +john. + +Mark Crispin wrote: +> On Tue, 22 May 2007, DINH Vi?t Ho? wrote: +>> Note that in capabilities, there is something called 'SCAN'. +>> I never heard about this. Does anyone know what it is ? +> +> SCAN is a private extension in UW imapd. It's a LIST that takes a +> third argument, and it filters out names that do not have that string +> in the file contents. It's like fgrep through mailbox files, but is +> very crude (too crude). +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> ------------------------------------------------------------------------ +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22917.mbox:2,S new file mode 100644 index 00000000..53650d1e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22917.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Apr 6 11:04:13 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] RENAME Inbox +In-Reply-To: <461686AD.5040800@andrew.cmu.edu> +References: <46166C0B.9080308@andrew.cmu.edu> + + <461686AD.5040800@andrew.cmu.edu> +Message-ID: + +On Fri, 6 Apr 2007, Ken Murchison wrote: +> Is there any problem if the UIDVALIDITY, UIDNEXT, HIGHESTMODSEQ, aren't +> reset? Will mainstream clients have a problem one way or the other? + +I don't see how any client could possibly care. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22920.mbox:2,S new file mode 100644 index 00000000..debea667 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22920.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From janssen at parc.com Fri Mar 9 09:07:05 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + + + +Message-ID: <07Mar9.090708pst."57996"@synergy1.parc.xerox.com> + +> So, let me amend my previous statement: your server SHOULD process +> extension fields and SHOULD send NIL in the BODYSTRUCTURE if the fields +> are absent in the MIME-IMB header. It SHOULD NOT omit them; that behavior +> is for legacy servers which do not implement the extension fields. + +I presume this is the case even for fields which are specified as +parenthesized lists, such as "body disposition"; instead of sending an +empty parenthesized list, one should send NIL. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22938.mbox:2,S new file mode 100644 index 00000000..4b6c6872 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22938.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Jan 11 11:15:56 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Fw: FT_RETURNSTRINGSTRUCT in imap-2006d +In-Reply-To: <007501c735a9$7fd6d7c0$41b35f46@StahlHome> +References: <007501c735a9$7fd6d7c0$41b35f46@StahlHome> +Message-ID: + +Hello Sharon - + +I received your message to imap-protocol, which is the list for discussion +about the IMAP protocol and not software support. Please send any further +messages on this issue either to imap-uw@u.washington.edu or to me +directly. I have set imap-protocol as a bcc to close out this thread in +its archive. + +I will be happy to work with you to resolve your problem with imapd and +dtmail. This should be done offline from the imap-protocol list. It can +be online on the imap-uw list if you prefer, or in direct communication +with me. + +I do not (yet) know what you are having this problem with dtmail; however, +I can tell you that your issue is *NOT* related to FT_RETURNSTRINGSTRUCT. +You have misinterpreted that release note. Please DO NOT attempt to use +code that is hacked to "unset" FT_RETURNSTRINGSTRUCT; you may cause +serious damage!!! + +Please revert back to unmodified imap-2006d, or try the imap-2006e +development snapshot to see if that resolves your issue. If the issue +remains unresolved, I'll help you. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22957.mbox:2,S new file mode 100644 index 00000000..1e0b6d57 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22957.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tss at iki.fi Wed Dec 20 00:31:19 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +Message-ID: <1166603479.22214.298.camel@hurina> + +RFC says: "In all search keys that use strings, a message matches the +key if the string is a substring of the field." + +Strictly reading this, it means that the SEARCH command can't really be +optimized with most of the normal search index algorithms/libraries, +because they support only matching from the beginning of words. + +So, in case I wanted to use such indexes, what do you think I should do? + +1) Just use it for BODY and TEXT searches. Probably won't really break +anything? I think some servers already do this. + +2) Add some X-NONEXACT-BODY search extension. Or use COMPARATOR somehow? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22960.mbox:2,S new file mode 100644 index 00000000..299aa31a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22960.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From dave at cridland.net Fri Nov 3 07:04:46 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] rfc4549 +In-Reply-To: <1162561886.29374.42.camel@hurina> +References: <1162561886.29374.42.camel@hurina> +Message-ID: <14025.1162566286.648724@peirce.dave.cridland.net> + +On Fri Nov 3 13:51:26 2006, Timo Sirainen wrote: +> Why does it suggest fetching new messages with :*? +> Hasn't +> this been discussed already several times here that it'll return the +> last message also, unneededly wasting bandwidth and server +> resources? +> Wouldn't :2147483647 be a better solution? + +This will only happen if UIDNEXT has changed, but there are no +messages with a UID equal or higher than lastseenuid+1 - the document +clearly states that "[...] the former command should only be issued +if the UIDNEXT value cached by the client differs from the one +returned by the server." + +In turn, this can only happen if new messages have arrived but have +also been expunged, and there are still messages in the mailbox. This +is pretty rare - in general, users don't expunge all the new messages +only, they either don't expunge many or else they expunge all the +messages in the mailbox entirely. + +I suspect that your suggestion is therefore optimizing for a rare +case. (Even if it weren't, : would be better). + +In fact, it's not only possible, but quite easy, to elide the FETCH +even in this rare case if you use SEARCH-based UID resynchronization, +since the client would detect earlier that the messages were expunged. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095114.22966.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095114.22966.mbox:2,S new file mode 100644 index 00000000..7a08cab2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095114.22966.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From richw at richw.org Wed Oct 18 16:41:46 2006 +To: imap-protocol@u.washington.edu +From: Rich Wales +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Delivery to folder whose name is current year and + month +Message-ID: <20061018234147.6ED803C36D@whodunit.richw.org> + +I run my own Cyrus server. I'm maintaining a backup archive of +e-mail sent to a particular address, in folders named after the +year and month when a given message was received. + +For example (simplifying the real situation just a bit), a message +received right now (October 2006) would be stored in a folder with +a name something like this: user.richw.Archive.2006-10 + +A new folder gets created automatically when archived mail shows +up for a new month. I'm also setting the \Seen flag on the archived +messages as I store them, so they won't be displayed as "unread". + +Right now, I'm accomplishing all this via a combination of Procmail +and a custom Perl script that uses the Net::IMAP module. It works, +but I'd like to consider replacing some or all of my custom stuff +with standard Cyrus tools if possible. However, I foresee some +serious snags if I were to try this, such as the following: + +(1) Sieve doesn't seem to be able to compute a mailbox name on the + fly (using shell environment variables) -- something I can do + easily in Procmail. If I switched to using Sieve to sort my + incoming mail, I would apparently be restricted to putting + all archived messages into a single, statically named folder, + instead of per-month/year folders. + +(2) Sieve apparently can't create a given folder if it doesn't + already exist -- meaning that messages for a new month would + end up in my default INBOX until I created a folder for the + new month by hand. Calling /usr/local/cyrus/bin/deliver from + Procmail would be even worse -- "deliver" apparently bounces + mail addressed to a nonexistent folder. I can create a new + folder without too much trouble in my custom Perl script + (using Net::IMAP calls). + +(3) Cyrus's "deliver" doesn't allow the setting of any flags, so + all the archived messages would show up in my IMAP store as + unread. It looks like Cyrus used to have a way to set flags + in its "deliver" command ("-F" flag), but this was taken out + for some reason. I realize I can set flags on incoming mail + in Sieve, but (as I said) it doesn't look like I can compute a + mailbox name on the fly (for the current month) in Sieve. + +Any suggestions? Would a different IMAP server implementation, +instead of Cyrus, allow me to do what I want? Or should I just +resign myself to sticking with Procmail and my custom Perl script? + +Rich Wales +Palo Alto, CA, USA +richw@richw.org +http://www.richw.org + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22756.mbox:2,S new file mode 100644 index 00000000..f779d35f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22756.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 15 21:27:57 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + +Message-ID: <20111116052757.GB12266@brong.net> + +On Tue, Nov 15, 2011 at 06:24:17PM -0800, Mark Crispin wrote: +> On the other hand, replacing mailboxes with named views (and the resulting +> abolition of COPY) makes GUIDs more viable. Synchronization would always +> be with the "all" view, and thus we can keep strict ascendency even though +> messages may come and go in a certain view. + +The other problems with strict ascendency is that it requires a global lock +for the duration of any append, over whatever scope you require the +ascendency in. As you expand out from a single mailbox to the scope of an +entire user, you expand the scope of that global lock. + +> On the OTHER hand (three hands here?) doesn't that also preclude shared +> mailboxes? Oh dear, oh my... + +Indeed it does. Any concept of "shared namespace" - either you still have +multiple separate ID "sets" still... or you get a global lock. + +> If we keep the facility of separate mailboxes, albeit for such +> functionality as shared mailboxes, then keywords should evolve into named +> views; and servers should use these and NOT mailbox naming for views. + +Which no longer have the strict ascendency property, rendering it somewhat +worthless. Some say this has already happened, because the preferred +view order for email of most users (at least of the ones I've dealt with) +is NOT ascending UID. + +> My understanding is that Google perceived keywords as not commonly +> implemented, and thus needing to do view/mailbox mapping. It's been a +> major problem; a classic case of kludge tower building because it was +> perceived that they couldn't do it right to begin with. +> +> >Using more command pipelining would be +> >nice (e.g. search | store ). +> +> I've thought of that, but in a more limited context of "apply search +> criteria" as the sequence for a command. + +MVCC on a search/sort rather than on the UID ordering (which is what +MID gives) is right at the top of my list - along with the ability to +reconnect said MVCC after session drop - which happens more and more +with the smartphoney things of today. + +Not requiring multiple parallel connections to be informed of changes. + +And of course the low handing fruit: UTF-8 throughout, a more regular +syntax which simplifies parsing and has space for extentions later so +that every command doesn't have its own unique, slightly different +parser. + +A test suite up-front (like Timo's excellent ImapTest) which server +makers can test their implementations against. + +A lot of it is basically "look at the insane things that client/server +authors have come up with to kludge around IMAP not expressing what +they needed" - which is the evolutionary approach... + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22772.mbox:2,S new file mode 100644 index 00000000..f8fcb619 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22772.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From dkonigsberg at logicprobe.org Thu May 26 16:10:14 2011 +To: imap-protocol@u.washington.edu +From: Derek Konigsberg +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDEA412.6030305@aol.com> +References: <4DDEA412.6030305@aol.com> +Message-ID: <4DDEDDD6.1040507@logicprobe.org> + +On 5/26/2011 3:03 PM, John Snow wrote: +> +> Section 6.4.8 the UID command says: +> +> The number after the "*" in an untagged FETCH response is always a +> message sequence number, not a unique identifier, even for a UID +> command response. However, server implementations MUST implicitly +> include the UID message data item as part of any FETCH response +> caused by a UID command, regardless of whether a UID was specified +> as a message data item to the FETCH. +> +> My question is simply, why? Why is the sequence number needed when +> the command +> specified a UID, and the UID must be included in the response. Seems +> to me the UID +> command should have a UID response. + +Or my related question (feel free to re-subject if too far OT)... Why do untagged responses in general (e.g. FETCH or EXPUNGE) always use the message sequence number, and not the UID? Seriously its a royal PITA to have to even care about a consistent map of message sequence numbers in the first place, when the protocol supports message UIDs. + +-- +---------------------------- + Derek Konigsberg + dkonigsberg@logicprobe.org +---------------------------- + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22807.mbox:2,S new file mode 100644 index 00000000..80dcddaf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22807.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 16:27:35 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006110854.37969.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> +Message-ID: <201006120127.35077.witold.krecicki@firma.o2.pl> + +Here is an open letter to Mark Crispin which includes all my thoughts about +the discussion that is happening here, I've included imap-protocol mailing +list here as it concerns everyone that took part in this discussion. + + +You believe that all IMAP operations should be atomic no matter what happens, +that even in case of fatal failure the server should respond in a consistent +manner so that there is mutual agreement over the state of mailboxes. + +I really respect that. + +If the computer located in the tail of A380 and controlling the whole +tailplane would not have state consistent with the state of the computer in +the cockpit - some lives could be lost. + +But checking mail is not flying an airliner. + +If the server detects a critical failure (eg. filesystem fault) it can always +break the connection, and user will at most be forced to click 'OK' on 'The +IMAP server unexpectedly closed the connection' message box. If the perfect +IMAP implementations would be run on a computer that has faulty RAM chip and +it would crash - it's ok, it's not its fault - then why it is its fault when +the HDD/FS fails (that is the only possibility that I can imagine in which +move fails in a way it cannot be recovered to the previous state, at least in +case of Maildir store)? + +Putting the argument that '25 years of IMAP history would be undone' is just +pure nonsense. During those 25 years the Internet community grew over 1000 +times (and ~3 times since RFC3501 was published). During those 25 years the +Web was born. During those 25 years the number of largest IMAP servers users +grew from at most few hundred users to over few million users. + +25 years ago people were checking mails using text terminals, now they're +checking mails using their cell phones - both using IMAP protocol as the best +and actually only way to do it without consuming too much bandwidth and +resources. + +What I'm saying is that it's not undoing the history, it's just simple +evolution that has to occur as the Internet and the way people access IMAP +servers changes. From what I've heard from people more experienced than me +'MOVE' command issue is coming up every 2-3 years - everytime with lots of +appreciation from community and a total contempt from You. Maybe it's finally +time to consider it as an useful feature? + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22866.mbox:2,S new file mode 100644 index 00000000..6175bee5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22866.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From janssen at parc.com Thu Jul 17 18:53:07 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] Re: issue with the iPhone IMAP client +In-Reply-To: <08Jul17.093304pdt."58698"@synergy1.parc.xerox.com> +References: <08Jul16.163302pdt."58698"@synergy1.parc.xerox.com> + <08Jul17.093304pdt."58698"@synergy1.parc.xerox.com> +Message-ID: <08Jul17.185317pdt."58698"@synergy1.parc.xerox.com> + +> > My server is running on port 8143, and here's the server-side record +> > of the conversation: +> > +> > S: * OK [CAPABILITY IMAP4rev1 LOGINDISABLED STARTTLS] UpLib IMAP Server (V4r1) ready.\r\n +> > C: 1 STARTTLS\r\n +> > S: 1 OK STARTTLS completed\r\n +> > +> > [handshake takes place] +> > +> > C: 2 LOGOUT\r\n +> > +> > On the iPhone, I see "Cannot Get Mail / the connection to the server failed" +> +> I've tried a few things: using the standard port, removing the +> LOGINDISABLED, and sending all my capabilites up-front, instead of +> waiting till after the STARTTLS, but nothing seems to help. +> +> My guess is that the phone is objecting to the self-signed certificate +> that I use to "secure" the server. I installed the cert on the phone +> as a "profile" (you convert it to DER, then mail it to yourself as an +> attachment, then tap on the attachment), but that doesn't help. I'll +> try a properly signed cert from some big root authority next. +> +> Any other ideas? + +I installed my self-signed server certificate as a root cert on my +iPhone, and now things are working. It just objected to the +certificate. + +By the way, to do this: + +1. Get the DER version of the cert. +2. Put it on a Web server with the MIME type "application/x-x509-ca-cert". +3. Browse the iPhone browser to it. +4. Tap on it to install it. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22880.mbox:2,S new file mode 100644 index 00000000..74506d83 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22880.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Feb 16 12:30:59 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] header.fields fetching +In-Reply-To: <8782ACCD-1349-445D-BEAA-EB5409610D24@iki.fi> +References: <1203188859.4901.147.camel@hurina> + + <8782ACCD-1349-445D-BEAA-EB5409610D24@iki.fi> +Message-ID: + +Timo Sirainen writes: +> Note that I'm specifically talking about HEADER.FIELDS fetching. +> Fetching the entire message, the header of the message or +> HEADER.FIELDS.NOT would show the headers in their original form. Your +> answer sounded more like you assumed the headers were permanently +> changed for all of them. + +I think it's the same issue. IMO it's (usually but not invariably) the +same issue even if the the strings are changed only by the display +agent before display. + +What matters is what the user sees. Or rather, what the user understands +(To: tss in times is the same as To: tss in courier, say I). + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22883.mbox:2,S new file mode 100644 index 00000000..7a799169 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22883.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From MRC at Washington.EDU Fri Jan 25 16:22:56 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Fri, 25 Jan 2008, Bill Janssen wrote: +> The example given in +> RFC 2595, which is not for IMAP, illustrates a PLAIN exchange thusly: +> C: a003 AUTHENTICATE "PLAIN" {21+} +> C: timtanstaaftanstaaf +> That is, it's one message, giving two parameters, "PLAIN" and the +> authentication information. + +It is a mistake to assume that an example for ACAP has any relationship to +IMAP. It does not. + +The other, more basic, mistake is in using to obsolete documents. +Please refer to: + RFC 3501 documentation on the syntax of the AUTHENTICATE + command in IMAP + RFC 4422 documentation of the SASL framework + RFC 4616 documentation of the PLAIN extension + RFC 4959 documentation of the SASL-IR extension in IMAP + +Within the framework of SASL (RFC 4422), there is an identification of the +mechansim and a challenge/response exchange. Depending upon the +mechanism, the challenge/response exchange may start with a challenge or a +response. + +The protocol used determines the syntax by how this works; thus the +determination of the syntax of SASL in IMAP is by IMAP (RFC 3501). IMAP +assumes an initial server challenge, so with a mechanism such as PLAIN +(RFC 4616) that requires an initial client response, the server MUST send +an empty initial server challenge in response to an AUTHENTICATE PLAIN +command in IMAP. + +Last, and absolutely least, RFC 4959 details a way that the initial +response can be sent in the AUTHENTICATE command IF, AND ONLY IF, the +server allows that facility. Note that the client is under no obligation +to use that facility even if the server allows it. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22893.mbox:2,S new file mode 100644 index 00000000..c6556e8b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22893.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Oct 28 09:34:46 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + +Message-ID: + +On Sun, 28 Oct 2007, Arnt Gulbrandsen wrote: +> I haven't looked at CONVERT recently, but from what I remember, it can handle +> charset conversion. That leaves ENVELOPE, BODY, BODYSTRUCTURE, mailbox names +> and flags. So a new extension to say "give me those in UTF-8" makes sense to +> me. + +IMHO, since CONVERT isn't done yet, it should be extended to do ENVELOPE, +BODY[STRUCTURE] for those people who want that functionality. The main +benefit that I see is that it allows clients to have less knowledge of +random charsets. Otherwise, clients need to know how to generate MIME +encoded words, and probably want to generate them in the same charset in +replies that the original message used. + +> But an extension to say only "use UTF-8 for mailboxes and flags (instead of +> mUTF-7)" makes even more sense. UTF-8 flags have real value. + +Well, there's several possible ways to go about doing all this. Consider +all of these to be strawmen. + +1) An "ENABLE UTF-8" command that throws a big switch. Rather unIMAPish. + +2) UTF8 FETCH, UTF8 LIST, UTF8 LSUB commands. IMAPish, but somewhat +pessimistic about the future of certain extensions. + +3) Make CONVERT do ENVELOPE/BODY[STRUCTURE] for those who want it, and add +a UTF8 option to LISTEXT. Somewhat optimistic about these extensions. + +Personally, I vote for 2, simply because this is easy to apply upon the +base specification. Exchange's server, which is rapidly taking over while +we're talking about ever-more esoteric extensions, only supports IDLE, +NAMESPACE, and LITERAL+. I don't see much future for a framework that +requires complex extensions such as CONVERT and LISTEXT. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22899.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22899.mbox:2,S new file mode 100644 index 00000000..185238e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22899.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From dot at dotat.at Mon Aug 27 03:31:20 2007 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Private FETCH items +In-Reply-To: <46CD9A95.4030001@andrew.cmu.edu> +References: <46CC88EE.5040500@andrew.cmu.edu> + <22D7E33A-FD12-4B76-8240-89A4690A03B6@orthanc.ca> + <46CD9A95.4030001@andrew.cmu.edu> +Message-ID: + +On Thu, 23 Aug 2007, Ken Murchison wrote: +> +> I probably wasn't clear in the use case. Cyrus now has the ability to +> replicate a mailstore in near realtime. Several sites (including CMU in the +> near future) are using this to have redundant mailstores in case of a hardware +> failure. Rather than create a new tool or protocol to verify the consistency +> of the mailstore pairs, extending IMAP with a couple of new FETCH items seems +> like a reasonable thing to do. + +I should note that the MD5 replica consistency check has been very useful +in finding lurking bugs in the code, both the original version and across +versions as the code has evolved. It's also good for discovering bit- +smashing hardware failures that haven't (yet) affected lower levels of the +os/driver/raid stack. You can only be sure of data integrity if you test +it end-to-end. + +Tony. +-- +f.a.n.finch http://dotat.at/ +IRISH SEA: SOUTHERLY, BACKING NORTHEASTERLY FOR A TIME, 3 OR 4. SLIGHT OR +MODERATE. SHOWERS. MODERATE OR GOOD, OCCASIONALLY POOR. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22903.mbox:2,S new file mode 100644 index 00000000..81b3c211 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22903.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Jul 23 09:23:05 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Unordered FETCH replies +In-Reply-To: +References: <1185164783.25618.157.camel@hurina> + +Message-ID: + +On Mon, 23 Jul 2007, Arnt Gulbrandsen wrote: +> Yes, and no breakage. Clients break on many things they should handle (try +> sending lowercase OK/NO/BAD ;) but that one seems fine. + +Which clients break on that? They and their vendors should be publicly +humiliated. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22911.mbox:2,S new file mode 100644 index 00000000..965a9b4e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22911.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jun 13 07:10:41 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: <1181743395.32078.161.camel@hurina> +References: <466FE56C.7000900@hiramoto.org> <1181743395.32078.161.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> All the widely used open source IMAP servers support keywords: Cyrus, +> Courier, UW-IMAP and Dovecot. I don't know about the less commonly +> used or commercial servers. + +I bet that if there were one that doesn't support permanent user-defined +flags, we'd have heard about it before now. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22914.mbox:2,S new file mode 100644 index 00000000..9dcacd58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22914.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue May 22 10:12:05 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] IMAP ID Extension +In-Reply-To: <5253.1179845809.680684@peirce.dave.cridland.net> +References: + <46530072.1020500@aol.com> + <5253.1179845809.680684@peirce.dave.cridland.net> +Message-ID: + +Dave Cridland writes: +> On Tue May 22 15:38:42 2007, John Snow wrote: +>> If not the ID command, is there another way to get client information? +> +> You could try a fingerprinting technique, I suppose - I'm pretty sure +> that nearly every client (or at least, IMAP library) out there uses +> slightly different techniques. I've never looked at doing that, but +> I'd have thought it'd be possible. + +It is. Combining the format of the tags with the first few commands +gives a very fair idea of which client is being used. The only reason I +haven't written code to do it is that I don't have much need for the +resulting data (gathering load data is my only reason so far, and +that's not urgent). + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22917.mbox:2,S new file mode 100644 index 00000000..c30f926c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22917.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From janssen at parc.com Mon Apr 9 09:33:50 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +Message-ID: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> + +I'm looking at the issues of supporting THREAD, and looking at +http://tools.ietf.org/wg/imapext/draft-ietf-imapext-sort/, there +appear to be two algorithms, ORDEREDSUBJECT and REFERENCES. +REFERENCES includes a flavor of ORDEREDSUBJECT as an element of its +algorithm. + +I'm looking at a collection of email mostly sent from Exchange +servers, and notice that it by and large does not support the +"References" or "In-Reply-To" headers, but does always contain headers +called "Thread-Topic" and "Thread-Index". The "Thread-Index" field +seems to contain a BASE64 string which contains the "Thread-Index" of +its parent message as a prefix. + +Has anyone tried to understand or reverse-engineer this Exchange +information to describe a thread computation algorithm that works +better for messages with this information? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22920.mbox:2,S new file mode 100644 index 00000000..dc0c5df2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22920.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Mar 9 13:20:14 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: <07Mar9.090708pst."57996"@synergy1.parc.xerox.com> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + + + + <07Mar9.090708pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Fri, 9 Mar 2007, Bill Janssen wrote: +>> So, let me amend my previous statement: your server SHOULD process +>> extension fields and SHOULD send NIL in the BODYSTRUCTURE if the fields +>> are absent in the MIME-IMB header. It SHOULD NOT omit them; that behavior +>> is for legacy servers which do not implement the extension fields. +> +> I presume this is the case even for fields which are specified as +> parenthesized lists, such as "body disposition"; instead of sending an +> empty parenthesized list, one should send NIL. + +Rule #1: you must follow the ABNF syntax at the bottom of RFC 3501. + +In that section we find this rule for the body disposition field of the +BODYSTRUCTURE FETCH response: + +body-fld-dsp = "(" string SP body-fld-param ")" / nil + +An empty parenthesized list does not match that syntax, but NIL does. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22938.mbox:2,S new file mode 100644 index 00000000..8d66edde --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22938.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From mbarker at buni.org Sun Jan 14 02:33:51 2007 +To: imap-protocol@u.washington.edu +From: Michael Barker +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Fetch Command Responses +Message-ID: <20070114103351.GA24318@cooper.buni.org> + +Hi, + +This is my first post to the imap protocol list. I am currently involed +in building an IMAP server as part of a groupware suite (www.buni.org). + +I have a question regarding the fetch body command. If we consider the +mime structure from rfc 3501 (below), what is the appropriate response +to the following command: + +1a fetch 1 BODY[4] + +Is it an empty string, nil or the content of all of the child mime +parts. + +Regards, +Michael Barker. + +HEADER ([RFC-2822] header of the message) +TEXT ([RFC-2822] text body of the message) MULTIPART/MIXED +1 TEXT/PLAIN +2 APPLICATION/OCTET-STREAM +3 MESSAGE/RFC822 +3.HEADER ([RFC-2822] header of the message) +3.TEXT ([RFC-2822] text body of the message) MULTIPART/MIXED +3.1 TEXT/PLAIN +3.2 APPLICATION/OCTET-STREAM +4 MULTIPART/MIXED +4.1 IMAGE/GIF +4.1.MIME ([MIME-IMB] header for the IMAGE/GIF) +4.2 MESSAGE/RFC822 +4.2.HEADER ([RFC-2822] header of the message) +4.2.TEXT ([RFC-2822] text body of the message) MULTIPART/MIXED +4.2.1 TEXT/PLAIN +4.2.2 MULTIPART/ALTERNATIVE +4.2.2.1 TEXT/PLAIN +4.2.2.2 TEXT/RICHTEXT + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22957.mbox:2,S new file mode 100644 index 00000000..39743eb4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22957.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From dave at cridland.net Wed Dec 20 00:37:14 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] REFERENCES2 threading +In-Reply-To: <1166586540.22214.282.camel@hurina> +References: <1166586540.22214.282.camel@hurina> +Message-ID: <15222.1166603835.091995@peirce.dave.cridland.net> + +On Wed Dec 20 03:49:00 2006, Timo Sirainen wrote: +> There are two annoying things with the standard REFERENCES +> threading: +> +> 1. I think base subject merging is nowadays more annoying than it is +> helpful. Pretty much all the clients generate References headers +> properly. +> +> 2. Root nodes should be sorted by the newest message in the thread, +> not +> by the root node's date. The new messages should be easily found, +> not +> lost somewhere among old messages. +> +> I've now implemented these as X-REFERENCES2 to Dovecot. Is anyone +> else +> interested in getting this standardized? +> +> +I think what you're describing is close to the REFS algorithm found +in Arnt Gulbrandsen's INTHREAD draft (which, I might add, would be +very useful to me as a client developer). + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22960.mbox:2,S new file mode 100644 index 00000000..1419e4fb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22960.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Fri Nov 3 07:28:10 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] rfc4549 +In-Reply-To: <14025.1162566286.648724@peirce.dave.cridland.net> +References: <1162561886.29374.42.camel@hurina> + <14025.1162566286.648724@peirce.dave.cridland.net> +Message-ID: <1A340D24-AEB2-4646-B5DB-3415C574F584@iki.fi> + +On 3.11.2006, at 17.04, Dave Cridland wrote: + +> On Fri Nov 3 13:51:26 2006, Timo Sirainen wrote: +>> Why does it suggest fetching new messages with :*? +>> Hasn't +>> this been discussed already several times here that it'll return the +>> last message also, unneededly wasting bandwidth and server resources? +>> Wouldn't :2147483647 be a better solution? +> +> This will only happen if UIDNEXT has changed, but there are no +> messages with a UID equal or higher than lastseenuid+1 - the +> document clearly states that "[...] the former command should only +> be issued if the UIDNEXT value cached by the client differs from +> the one returned by the server." +> +> In turn, this can only happen if new messages have arrived but have +> also been expunged, and there are still messages in the mailbox. +> This is pretty rare - in general, users don't expunge all the new +> messages only, they either don't expunge many or else they expunge +> all the messages in the mailbox entirely. +> +> I suspect that your suggestion is therefore optimizing for a rare +> case. (Even if it weren't, : would be better). + +OK, this sounds better. I don't think most people have thought it +this far though. The only reason I even asked about this was because +some client developer asked me if my server was broken because it +returned the last message, and then referred to rfc4549.. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095115.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095115.22974.mbox:2,S new file mode 100644 index 00000000..7f864f1d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095115.22974.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Sep 1 02:49:29 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] changed capabilities after login +In-Reply-To: +References: <20060901002118.GB16606@ventoux.cs.ubc.ca> + + +Message-ID: + +IMO, the Mirapoint server is at fault. What it does is legal according +to the RFC, I suppose, but it's not a great win wrt. interoperability. + +If the Mirapoint proxy advertises any capabilities that the proxied +server does not support, the Mirapoint proxy should deal with that. +Hiding being a part of the RFC that most people miss isn't acceptable. +One thing it could do is issue CAPABILITY on its own and report the +changed capability list in the response to LOGIN, or in any random +untagged OK. + +(Many years ago, when I worked at a company that no longer exists, I +wrote an IMAP proxy. It had a bug much like this. Legal according to +the RF, broke clients. The only difference is that my bug had a good +reason and was useful.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22756.mbox:2,S new file mode 100644 index 00000000..d464c199 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22756.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From mrc+imap at panda.com Tue Nov 15 21:29:58 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <20111116050834.GA12266@brong.net> +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + <20111116050834.GA12266@brong.net> +Message-ID: + +On Wed, 16 Nov 2011, Bron Gondwana wrote: +> % Intelligent and talented people, if they find that trivial matter to be +> % annoying enough, will write an errata with proposed replacement wording, +> % post it for review, and upon general concensus will submit it to the RFC +> % 3501 errata for inclusion in a future revision. +> So I did. + +I see that it is properly submitted and posted to the errata. Good. + +> And meanwhile whenever anyone asks the question, you can point at the +> errata. Problem solved. No debate. + +Whenever someone asks that particular question, we answer it. + +In order for a developer to have asked that question, he must already have +read the specification. That sufficies for any "RTFM" purpose. He does not +need to be put through additional hoops. + +If he asks if the document is going to be fixed, then we say "we already +have an errata on file for it." + +> I don't know about "smarter" - but I think I probably will have a go at +> a mail protocol at some point if I keep working with mail 100%. It's +> not fully baked yet though. + +Have at it. If nothing else, it will be educational. + +> We're not that far yet. We're still experimenting with a bunch of ajaxy +> JSON nonsense which will probably go through plenty more revisions when +> it has more than one user. Middleware first. + +At least you use JSON and not XML. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22772.mbox:2,S new file mode 100644 index 00000000..2c10355d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22772.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu May 26 16:34:28 2011 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDEDDD6.1040507@logicprobe.org> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> +Message-ID: + +On Thu, 26 May 2011, Derek Konigsberg wrote: +> Or my related question (feel free to re-subject if too far OT)... Why +> do untagged responses in general (e.g. FETCH or EXPUNGE) always use the +> message sequence number, and not the UID? Seriously its a royal PITA to +> have to even care about a consistent map of message sequence numbers in +> the first place, when the protocol supports message UIDs. + +This question was already answered for the FETCH case. Did you not see +how it applies to all message-data/metadata responses? + +(The teaching of history is completely overrated. Why would anyone want +to study how things came to be the way they are and the engineering +process that did so when they can just complain that things aren't how +they wish they were. We obviously understand everything better now and +*this time* we'll get it perfectly right, even without reflection on the +past. We should delete the imap-protocol mail archives. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22807.mbox:2,S new file mode 100644 index 00000000..9ea73d4f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22807.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 16:27:33 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> +Message-ID: + +On Fri, 11 Jun 2010, Timo Sirainen wrote: +> a COPY 1:100 elsewhere +> b IF-OK STORE 1:100 +flags \deleted +> c IF-OK EXPUNGE + +Presumably, the real life-example would be: + + a UID COPY 1:100 elsewhere + b IF-OK UID EXPUNGE 1:100 + +Other than the normal objections to new capabilities, there's nothing +really wrong with this idea. It's a fairly obvious improvement to +existing IMAP pipelining. + + +On the other hand, I think that it would be better to have an explicit +pipeline facility in IMAP: + +a PIPELINE 1:100 (b COPY $ elsewhere | c STORE $ +FLAGS \DELETED | EXPUNGE) + +a UID PIPELINE 1:100 (b UID COPY $ elsewhere | c UID EXPUNGE $) + +and deprecate the current way of pipelining. + +PIPELINE would have the additional semantic (not in UID PIPELINE) that +untagged expunge events are prohibited until the pipeline completes. +Thus, an EXPUNGE in the middle of a pipeline would simply set an "expunge +when pipeline completes" flag and not actually expunge. + +Note the $ to repeatedly apply the previous sequence set. + +You could mix UID and non-UID (e.g., UID commands could happen in a +PIPELINE and non-UID commands could happen in UID PIPELINE) but normally +this would not be done. + +Besides separating the portions of the pipeline, the | operator would be a +go/no-go point. The result would either be: + + a OK The pipeline worked + +which indicates full success, or + + a NO [TAG b] COPY failed + +which would be the tag of the failed pipelined command. + +Since there is (sub)tag error reporting, there is no need for the pipeline +to be atomic. + +IF-OK is only needed in pipelining, so it's obviated here. I guess that +we could have a second operator besides | if we really want a "don't care +if previous operation fails" functionality (but I don't see a need). + + +Another neat thing is that this completely eliminates the need for a MOVE +command. A server that somehow can do internal move fast but not copy +could recognize the above two idioms and implement them as an internal +move. Since it's a pipeline, it doesn't require atomicity, and it has an +error reporting mechanism. + + +Yet another neat thing is that this explicitly declares a pipeline, and we +can get rid of all the ridiculous client rules for pipelining that are in +IMAP now. + + +The question is: how many people would actually implement such a facility +if it were present? The normal objections to new capabilities applies as +much to this idea. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22866.mbox:2,S new file mode 100644 index 00000000..9acb6207 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22866.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From tss at iki.fi Wed Jul 23 10:42:34 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] ACLs and \Noinferiors +Message-ID: <1216834954.31765.790.camel@hurina> + +Any thoughts on if lack of "k" right for a mailbox without children +should LIST it with \Noinferiors flag? If not, what about if no-one has +"k" right for it and none is ever expected to be given? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 204 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22880.mbox:2,S new file mode 100644 index 00000000..630e3cff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22880.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From mrc at Washington.EDU Sat Feb 16 12:38:05 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] header.fields fetching +In-Reply-To: <1203188859.4901.147.camel@hurina> +References: <1203188859.4901.147.camel@hurina> +Message-ID: + +On Sat, 16 Feb 2008, Timo Sirainen wrote: +> If I have a message: +> FROM: Foo +> to :Bar +> And BODY.PEEK[HEADER.FIELDS (from to)] returns: +> From: Foo +> To: Bar + +There are two answers to this. + +First, if what BODY.PEEK[HEADER.FIELDS ... ] returns is any different +than what is returned in BODY[HEADER], then this is a violation of the +IMAP immutability rule. If the change is universal, so that it is as if +the delivery process rewrote the headers before it got to IMAP, then there +is no violation. + +Second, it probably does not matter even though it is a violation. It is +difficult to imagine a client depending upon the immutability of data in +partial header fetches, as typically this is used to augment ENVELOPE data +for parsing and/or presentation to the end user. + +Thus, IMHO, it's probably alright until such time as some client author +complains; and such complaints are highly unlikely. However, if there is +a complaint, the client author would be in the right and the server in the +wrong. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22883.mbox:2,S new file mode 100644 index 00000000..76e70a96 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22883.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From janssen at parc.com Fri Jan 25 16:55:25 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IMAP servers with no INBOX -- any indicators? +In-Reply-To: +References: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> + <978EF551-4028-4CC6-972F-2BF8451706B2@iki.fi> + +Message-ID: <08Jan25.165528pst."58696"@synergy1.parc.xerox.com> + +> > I think a lot of clients assume that INBOX exists. Easiest to just create a +> > dummy zero-message read-only virtual INBOX. +> +> I agree with this advice. This very topic came up many years ago, and the +> general concensus at the time was that clients are not out of line by +> expecting an INBOX. The specification very strongly implies that clients +> may make that assumption. + +OK, I'll make it so. Thanks. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22893.mbox:2,S new file mode 100644 index 00000000..daeffdec --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22893.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Oct 29 04:08:07 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + +Message-ID: + +Uh, we've gone from "need utf-8 flags" to "should convert message data +to utf-8 in the server" in a very short time, and personally I see very +little justification for the latter. + +Mark Crispin writes: +> On Sun, 28 Oct 2007, Arnt Gulbrandsen wrote: +>> But an extension to say only "use UTF-8 for mailboxes and flags +>> (instead of mUTF-7)" makes even more sense. UTF-8 flags have real +>> value. +> +> Well, there's several possible ways to go about doing all this. +> Consider all of these to be strawmen. + +I thought about the same options when I implemented mUTF-7, except that +your strawman for 2 is slightly better than what I had in mind. + +> 1) An "ENABLE UTF-8" command that throws a big switch. Rather unIMAPish. + +IFF a big switch is the right way to solve it, I like this, but... hm... +how shall I say this? IMO, the value of ENABLE is O(1/n), where n is +the number of times it is used, so I'd prefer to keep n small. + +> 2) UTF8 FETCH, UTF8 LIST, UTF8 LSUB commands. IMAPish, but somewhat +> pessimistic about the future of certain extensions. + +That also needs UTF8 SELECT (for the flag-related responses), UTF8 +LISTRIGHTS, UTF8 STATUS and perhaps UTF8 GENURLAUTH and UTF8 URLFETCH. + +I didn't like RLIST+RLSUB, so I find it hard to be charmed by this crowd. + +> 3) Make CONVERT do ENVELOPE/BODY[STRUCTURE] for those who want it, and +> add a UTF8 option to LISTEXT. Somewhat optimistic about these +> extensions. + +(This doesn't handle UTF-8 flag and mailbox names.) + +I speculate that the audience for doing message data conversion in the +server is the same as the audience for CONVERT. Most clients support +local mailboxes or POP, and so they don't get any benefit. + +So my tentative conclusion is to say that 1 is a lesser evil than 2, +make the change affect only LIST, FLAGS and PERMANENTFLAGS responses, +and leave message data conversion to the people who want convert. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22903.mbox:2,S new file mode 100644 index 00000000..851083ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22903.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jul 23 12:56:14 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Unordered FETCH replies +In-Reply-To: +References: <1185164783.25618.157.camel@hurina> + + +Message-ID: + +Mark Crispin writes: +> On Mon, 23 Jul 2007, Arnt Gulbrandsen wrote: +>> Yes, and no breakage. Clients break on many things they should handle +>> (try sending lowercase OK/NO/BAD ;) but that one seems fine. +> +> Which clients break on that? + +I don't remember. Some bug tracking system may remember, but I've left +the relevant company and no longer have access to that information. + +> They and their vendors should be publicly humiliated. + +It went like this: + +A fool made OK/NO/BAD lowercase sometimes and got it released. One day +later the first breaking client showed up. The fool saw that it was an +open source client (mutt, as it happens), and submitted a very simple +patch, and the patch was accepted at once. Over the next week, n more +clients showed up. + +I wish uw, cyrus or courier would send lowercase IMAP keywords to flush +these bugs out. + +Signed, +a fool + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22911.mbox:2,S new file mode 100644 index 00000000..b64c9abd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22911.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From dave at cridland.net Wed Jun 13 07:25:00 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: <466FE56C.7000900@hiramoto.org> +References: <466FE56C.7000900@hiramoto.org> +Message-ID: <14977.1181744700.583655@invsysm1> + +On Wed Jun 13 13:39:08 2007, Karl Hiramoto wrote: +> I'm writing a IMAP client that is a virus/spam scanner. My plan +> is to +> scan where i have write access, and to mark messages with a flag +> MyScanner or something, to signify that it is scanned, and does not +> need +> to be scanned again. If it is a positive spam or virus hit, i will +> store changes to the message. +> +> +Be aware that you'll be selecting the mailbox to do this, which will +change the \Recent flag on messages, which can be confusing. Also +note there's an expired draft with solid suggestions for keywords for +marking junk messages. (You want $AutoJunk and $AutoNonJunk, as I +recall, and you train off $Junk and $NonJunk). + + +> My question is if anyone sees problems doing this, and how many +> servers +> that are in use today do not support custom permanent flags? + +I seem to remember AOL doesn't, but that's the only instance. It's +actually a per-mailbox thing, so it's possible that some mailbox +drivers on UW-IMAP don't support permanent flags. Otherwise, most +servers do on all mailboxes, but some have a limited number, and the +ability to create new ones will vanish. + +> My +> testing so far with courier looks like it will work.. +> +> +You need to look at the specification carefully, rather than just +testing on one implementation. I'd suggest testing against many +implementations, and in particular UW-IMAP and Cyrus. + + +> If the server does not support custom permanent flags, what i could +> do, +> is store changes to the email header. +> +> +No, you can't - IMAP messages are immutable, so all you'd be able to +do, as Timo says, would be remove the original message and create a +new one. This is not a great idea. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22914.mbox:2,S new file mode 100644 index 00000000..62735e93 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22914.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue May 22 10:43:51 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] "SCAN" capability ? +In-Reply-To: <4653217D.7040504@aol.com> +References: + + <4653217D.7040504@aol.com> +Message-ID: + +On Tue, 22 May 2007, John Snow wrote: +> Aren't private extensions supposed to begin with an "X"? + +SCAN is from before that time. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22917.mbox:2,S new file mode 100644 index 00000000..afe572e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22917.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Apr 9 09:46:25 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +In-Reply-To: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> +References: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 9 Apr 2007, Bill Janssen wrote: +> Has anyone tried to understand or reverse-engineer this Exchange +> information to describe a thread computation algorithm that works +> better for messages with this information? + +I'm not aware of any such effort. IMHO it would be pointless to do so; +those Exchange headers are non-standard and proprietary, and IETF protocol +work is focused on non-proprietary standards. + +What's more, if Microsoft had intended for others to use these headers, +they would have submitted them to the standards process. Microsoft has +shown many times that it knows how to do so, is capable of doing so, and +will do so. We can only conclude that Microsoft considers these headers +to be for their internal use only, and that the semantics of those headers +can be changed at their whim at any time. That's the nature of +non-standard features. + +The In-Reply-To header has been a standard since the 1970s. References is +a "nice to have" but is not strictly necessary for threading (it just +makes threading easier, particularly if there are missing messages in the +thread). I strongly urge you to focus on standards, and disregard +non-standards. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22920.mbox:2,S new file mode 100644 index 00000000..6f945244 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22920.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 13:23:23 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] message sequence numbers vs. message UIDs +In-Reply-To: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> +Message-ID: <07Mar11.122327pst."57996"@synergy1.parc.xerox.com> + +> In this system, the mailbox message sequence numbers are the same as +> the message UID numbers, so that's why you're seeing the same value in +> both places. By the way, are there pitfalls with that design I'm not +> seeing? + +I think I've answered this myself. Yes, it's impossible to use the +same value for both, as message sequence numbers must reflect the +exact number of messages currently in a mailbox, while UIDs must be +continuously increasing. The message sequence number is simply the +current one-based index of the message in the mailbox. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22938.mbox:2,S new file mode 100644 index 00000000..de975d7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22938.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From ams at oryx.com Sun Jan 14 02:59:38 2007 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Re: Fetch Command Responses +In-Reply-To: <20070114103351.GA24318@cooper.buni.org> +References: <20070114103351.GA24318@cooper.buni.org> +Message-ID: <20070114105937.GA31768@penne.toroid.org> + +At 2007-01-14 04:33:51 -0600, mbarker@buni.org wrote: +> +> I have a question regarding the fetch body command. If we consider the +> mime structure from rfc 3501 (below), what is the appropriate response +> to the following command: +> +> 1a fetch 1 BODY[4] +> +> Is it an empty string, nil or the content of all of the child mime +> parts. + +The content of all the child MIME parts. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22957.mbox:2,S new file mode 100644 index 00000000..55458001 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22957.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From tss at iki.fi Wed Dec 20 01:05:04 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] REFERENCES2 threading +In-Reply-To: <15222.1166603835.091995@peirce.dave.cridland.net> +References: <1166586540.22214.282.camel@hurina> + <15222.1166603835.091995@peirce.dave.cridland.net> +Message-ID: <1166605504.22214.313.camel@hurina> + +On Wed, 2006-12-20 at 08:37 +0000, Dave Cridland wrote: +> On Wed Dec 20 03:49:00 2006, Timo Sirainen wrote: +> > There are two annoying things with the standard REFERENCES +> > threading: +> > +> > 1. I think base subject merging is nowadays more annoying than it is +> > helpful. Pretty much all the clients generate References headers +> > properly. +> > +> > 2. Root nodes should be sorted by the newest message in the thread, +> > not +> > by the root node's date. The new messages should be easily found, +> > not +> > lost somewhere among old messages. +> > +> > I've now implemented these as X-REFERENCES2 to Dovecot. Is anyone +> > else +> > interested in getting this standardized? +> > +> > +> I think what you're describing is close to the REFS algorithm found +> in Arnt Gulbrandsen's INTHREAD draft (which, I might add, would be +> very useful to me as a client developer). + +Ah. That looks like a nice extension. I guess I could comment it as well +in here: + + Open Issue 1: Should THREAD=REFS use In-Reply-To if there is no + References? + +Yes. I don't see what's the benefit of not doing it. I think the +algorithm should be kept as close to REFERENCES as possible. My +X-REFERENCES2 required pretty minimal code changes. + +Also it drops Date header. How is it going to sort the messages then? By +the UID? Maybe sorting with UIDs would be OK too. Or as a user I think +I'd like sorting with INTERNALDATEs the most, but as an implementor I'd +rather not do that.. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22960.mbox:2,S new file mode 100644 index 00000000..668af825 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22960.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Nov 9 07:19:47 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] As The Stomach Turns: AOL is clueless about SASL +Message-ID: + +AOL has introduced a new IMAP server on imap.aol.com with numerous +problems. + +This episode introduces AOL being SASL-clueless in IMAP, as seen in the +following transcript: + +Script started on Tue 07 Nov 2006 11:34:55 AM PST +% telnet imap.aol.com imap +Trying 64.12.138.215... +flushoutput character is 'off'. +escape character is '^]'. +Connected to imap-mtc2.mx.aol.com (64.12.138.215). +Escape character is '^]'. +* OK imap-m05 v51_b1.2 server ready +1 capability +* CAPABILITY IMAP4rev1 LITERAL+ XAOL-ENVELOPE XAOL-ENVELOPE-TF XAOL-NETMAIL XAOL-OPTION XAOL-FBR.OLD IDLE STARTTLS BINARY AUTH=PLAIN AUTH=XAOL-UAS-MB XAOL-FILTER QUOTA XAOL-REPORTSPAM XAOL-UNSEND XAOL.STATUS UIDPLUS NAMESPACE +1 OK CAPABILITY completed +2 authenticate plain ++ waiting for auth data +^]c + +Connection closed. +% +Script done on Tue 07 Nov 2006 11:35:19 AM PST + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22974.mbox:2,S new file mode 100644 index 00000000..b3097d36 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22974.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From bill.shannon at sun.com Mon Sep 11 16:36:30 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +Message-ID: <4505F2FE.8090807@sun.com> + +A JavaMail user encountered the following situations when another +client expunged a message being accessed by JavaMail. + +First, fetching the content of the message failed: + +A5 FETCH 1 (BODYSTRUCTURE) +* 1 FETCH (BODYSTRUCTURE ("TEXT" "PLAIN" ("charset" "UTF-8") NIL NIL "7BIT" 23 1 +NIL NIL NIL) FLAGS (\Deleted)) +A5 OK FETCH completed. +A6 FETCH 1 (BODY.PEEK[TEXT]<0.23>) +A6 NO Some messages in the mailbox had previously been expunged and could not be +returned. + +With no opportunity to report an untagged EXPUNGED response, the command +simply failed with a NO response. + +Second, fetching the BODYSTRUCTURE of an expunged message simply +failed to return the requested information although the command succeeded: + +A5 FETCH 1 (BODYSTRUCTURE) +* 1 FETCH (FLAGS (\Deleted)) +A5 OK FETCH completed. + +Is this allowed behavior for an IMAP server? + +Assuming it is, what is the recommended way for a client to detect this +situation so that it can distinguish a "message has been expunged" failure +from any other random failure? Should the client follow such failures +with a NOOP to allow the server to report that the message has been +expunged? + +It might be nice if there were a response code to indicate that the message +has been expunged, e.g., + +A6 FETCH 1 (BODY.PEEK[TEXT]<0.23>) +A6 NO [EXPUNGED 1] Some messages in the mailbox had previously been expunged and +could not be returned. + +A5 FETCH 1 (BODYSTRUCTURE) +* 1 FETCH (FLAGS (\Deleted)) +A5 OK [EXPUNGED 1] FETCH completed. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095116.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095116.22983.mbox:2,S new file mode 100644 index 00000000..1af9b393 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095116.22983.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From richard at ftgate.com Thu Aug 3 08:42:07 2006 +To: imap-protocol@u.washington.edu +From: Richard Bang +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +Message-ID: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + +Hi, + +I've been reworking my folder handling to allow for UTF-16 mail store names and I've come across a problem in the interaction between my server and Pine. + +I have a mail store that looks like this +/inbox +/folder1 +/folder2 +/folder2/folder3 + +Pine sends the query +LIST INBOX % + +Given the above folder list what would be the correct response? + +I believe it should be +x OK List Completed + +without any stores listed because there are none that match. However, at this point Pine stops looking for folders and doesn't list any. + +Any advice would be greatly appreciated. + +Regards + +Richard (http://www.ftgate.com) +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22756.mbox:2,S new file mode 100644 index 00000000..17602c74 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22756.mbox:2,S @@ -0,0 +1,95 @@ +MBOX-Line: From mrc+imap at panda.com Tue Nov 15 22:10:32 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <20111116052757.GB12266@brong.net> +References: <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <20111116052757.GB12266@brong.net> +Message-ID: + +On Wed, 16 Nov 2011, Bron Gondwana wrote: +> The other problems with strict ascendency is that it requires a global lock +> for the duration of any append, over whatever scope you require the +> ascendency in. As you expand out from a single mailbox to the scope of an +> entire user, you expand the scope of that global lock. + +Not necessarily. If the GUID is expanded to a uint64 then there's no +reason why the GUID assignment can't be simply: + + guid = ++lastguid; + +You don't care if the GUID space is holey; and with a uint64 you don't +even care if you end up losing some. + +There are even some systems where ++ is atomic (yes, even if multicore) +and you don't need the mutex. + +The real issue is MULTIAPPEND and its interaction with UIDPLUS. +Fortunately, you don't have to assign UIDs as messages are uploaded; you +can defer that until the uploads are completed. Since you now know how +many messages you are adding, you can claim an entire range of GUIDs via + + guid = lastguid += nappends; + +Then assign the already-claimed GUIDs at leisure while checking in the +append. + +Of course, the appended mailbox needs to be mutexed over all of this, but +that's less overall concern than the global mutex. + +>> If we keep the facility of separate mailboxes, albeit for such +>> functionality as shared mailboxes, then keywords should evolve into named +>> views; and servers should use these and NOT mailbox naming for views. +> Which no longer have the strict ascendency property, rendering it somewhat +> worthless. + +The purpose of strict ascendency is for synchronization. Because these are +multiple views on a single object, you don't need that at the level of a +view. + +A view should compromise either on ascendency or on prohibition of insert. +I would do the compromise on prohibition of insert, which already happens +if you have a view that focuses on a keywords. + +> Some say this has already happened, because the preferred +> view order for email of most users (at least of the ones I've dealt with) +> is NOT ascending UID. + +User view order is neither the point nor purpose of ascendency. + +> Not requiring multiple parallel connections to be informed of changes. + +Why on earth would any well written client require multiple parallel +connections? Never mind why poorly-written clients need it. + +> And of course the low handing fruit: UTF-8 throughout, a more regular +> syntax which simplifies parsing and has space for extentions later so +> that every command doesn't have its own unique, slightly different +> parser. + +Which will work great until someone wants to do something that doesn't fit +within the regular syntax (and/or wants to "improve" the syntax). Enter +the flames that your insistance upon syntax regularity is an evil plot to +hinder progress, cause loss of market window, and deny little girls their +very own pony. + +You will discover that phenomenum soon enough. Oh, and don't believe that +you can enforce protocol integrity. You'll learn what "being microsofted" +and "embrace, extend, destroy" means. + +-- Mark -- + +http://panda.com/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22772.mbox:2,S new file mode 100644 index 00000000..9fecadac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22772.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tss at iki.fi Thu May 26 16:47:41 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + +Message-ID: <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + +On 27.5.2011, at 1.34, Philip Guenther wrote: + +> (The teaching of history is completely overrated. Why would anyone want +> to study how things came to be the way they are and the engineering +> process that did so when they can just complain that things aren't how +> they wish they were. We obviously understand everything better now and +> *this time* we'll get it perfectly right, even without reflection on the +> past. We should delete the imap-protocol mail archives. + +I've noticed there are many people who want web 2.0 kind of interface to emails (xml/ajax/dunno), and I've been thinking maybe I might just as well do something like that. I'm sure the protocol will suck, but if it gets us better email clients maybe it's a good thing overall. (And why aren't they just using IMAP? Because they're scared of even trying to use it. Hmm. IMAP over XML maybe?..) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22807.mbox:2,S new file mode 100644 index 00000000..600622b6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22807.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Jun 11 16:45:43 2010 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006120124.53714.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + + <201006120124.53714.witold.krecicki@firma.o2.pl> +Message-ID: + +On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +> On Saturday 12 of June 2010 01:16:36 Philip Guenther wrote: +... +> > Uh, what? It sounds like you're saying that you're going to build a +> > system where MOVE is fast (so single message rename is fast) but then +> > intentionally *not* take advantage of the design to use hardlinks to +> > make COPY fast. Claiming that using hardlinks is "not a normal +> > method" when it's been in use for better than a decade requires some +> > justification. +> +> Even if used for over a decade it is STILL a performance hack. + +And hash tables have been a performance hack for 5 decades. + +Or do you have an *OBJECTIVE* criteria for what makes something a +performance hack that the rest of us can use to understand why you refuse +to use a supported feature of the data structures that we call a +filesystem? + + +> > > > IMAP has generally not added features whose sole purpose is to +> > > > provide support for a particular type of store. Far more common +> > > > is that a particular type of store has vetoed a proposed addition. +> > > +> > > MOVE creates advantage for any kind of single-labeled flat store. +> > +> > So you agree with Mark that it's only for a particular type of store +> > that this helps. +> +> No, I'm showing that there is a store in which this helps. There may be +> other types. + +That still sounds like you agree, even though you don't want to. "There +may be others" could be said about *anything*. If there's an example +that's significantly different than the "single-labelel flat store" for +which MOVE is an advantage, cite it. + + +> > > Most of the people here (I'm silently assuming that they are not all +> > > newcomers) agreed that it is in fact a needed feature. +... +> No, I'm simply assuming that those who are not willing to take part in this +> discussion do not have an opinion. + +I'll just quote those two sentences of yours and say that they are in +conflict. + + +> Daves argument that the idea of 'trash can' is broken and people should +> just delete their mails (or IMAP should create a 'trash can' model) it's +> IMHO simply out of this world - people want to have a trash can and be +> able to recover deleted e-mails. + +It's been discussed multiple times in the past (oh, why does no one +actually read the archives?) how to implement the Trash Can UI on top of +the IMAP \deleted+EXPUNGE model. And guess what, that can do something +the "trash can is a mailbox" model can't: undelete restores the message to +its original place in the mailbox. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22866.mbox:2,S new file mode 100644 index 00000000..f5ed84de --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22866.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jul 24 02:00:14 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] ACLs and \Noinferiors +In-Reply-To: <1216834954.31765.790.camel@hurina> +References: <1216834954.31765.790.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> Any thoughts on if lack of "k" right for a mailbox without children +> should LIST it with \Noinferiors flag? If not, what about if no-one has +> "k" right for it and none is ever expected to be given? + +I think there's a difference. \noinferiors is about the server's +ability, not the administrator's plans or expectations. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22880.mbox:2,S new file mode 100644 index 00000000..389b1887 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22880.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Feb 16 12:39:55 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] header.fields fetching +In-Reply-To: +References: <1203188859.4901.147.camel@hurina> + + <8782ACCD-1349-445D-BEAA-EB5409610D24@iki.fi> + +Message-ID: + +All that said, treating a header field differently in HEADER.FIELDS and +HEADER.FIELDS.NOT sounds dubious to me. Not necessaribly wrong by the +RFCs, but I can't imagine why it would be desirable. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22883.mbox:2,S new file mode 100644 index 00000000..4fcdfc2a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22883.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From janssen at parc.com Fri Jan 25 17:25:21 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Jan25.172524pst."58696"@synergy1.parc.xerox.com> + +> Please refer to: +> RFC 3501 documentation on the syntax of the AUTHENTICATE +> command in IMAP +> RFC 4422 documentation of the SASL framework +> RFC 4616 documentation of the PLAIN extension +> RFC 4959 documentation of the SASL-IR extension in IMAP + +Thanks, that's what I needed. + +Bill + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22893.mbox:2,S new file mode 100644 index 00000000..17a01c72 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22893.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From tjs at psaux.com Mon Oct 29 12:23:14 2007 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: <5202.1193523708.069559@peirce.dave.cridland.net> <1193531029.25921.561.camel@hurina> + +Message-ID: <47263322.7040702@psaux.com> + +Arnt Gulbrandsen wrote: +>> 1) An "ENABLE UTF-8" command that throws a big switch. Rather unIMAPish. +> +> +> IFF a big switch is the right way to solve it, I like this, but... hm... +> how shall I say this? IMO, the value of ENABLE is O(1/n), where n is the +> number of times it is used, so I'd prefer to keep n small. + +Agreed. + +On the off chance this is actually what's approved, "ENABLE" should be a +slider. '0' (default) is IMAP4, '1' should be IMAP4+UTF8, '2' should be +the next feature we can't live without. + +We should allow servers that require clients to support UTF8, although I +would expect this rollout to take quite a lot of time. + +I'm not endorsing this idea, but I do think there is an obvious way to +mitigate the exponential number of feature toggles. + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22903.mbox:2,S new file mode 100644 index 00000000..92ef238c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22903.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Jul 23 19:18:00 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Unordered FETCH replies +In-Reply-To: +References: <1185164783.25618.157.camel@hurina> + + + +Message-ID: + +On Mon, 23 Jul 2007, Arnt Gulbrandsen wrote: +> A fool made OK/NO/BAD lowercase sometimes and got it released. One day later +> the first breaking client showed up. The fool saw that it was an open source +> client (mutt, as it happens), and submitted a very simple patch, and the +> patch was accepted at once. Over the next week, n more clients showed up. + +You should have stuck to your guns. Had we known, we would have backed +you up. + +> I wish uw, cyrus or courier would send lowercase IMAP keywords to flush these +> bugs out. + +I would be willing to do this, but not at the cost of having the author of +Courier use this as FUD against my server. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22911.mbox:2,S new file mode 100644 index 00000000..d109119e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22911.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From snowjn at aol.com Wed Jun 13 08:52:18 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: <14977.1181744700.583655@invsysm1> +References: <466FE56C.7000900@hiramoto.org> <14977.1181744700.583655@invsysm1> +Message-ID: <467012B2.2010406@aol.com> + +Dave Cridland wrote: +> +> I seem to remember AOL doesn't, but that's the only instance. It's +> actually a per-mailbox thing, so it's possible that some mailbox +> drivers on UW-IMAP don't support permanent flags. Otherwise, most +> servers do on all mailboxes, but some have a limited number, and the +> ability to create new ones will vanish. +> + +You are correct. The AOL server does not support them. + +snow. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22914.mbox:2,S new file mode 100644 index 00000000..b2042fcb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22914.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From ams at oryx.com Wed May 23 18:24:01 2007 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] FLAGS response +Message-ID: <20070524012401.GA30894@penne.toroid.org> + +Hi. + +The description of the FLAGS response in RFC 3501, section 7.2.6 says it +"identifies the flags that are applicable for this mailbox". Our server +allows arbitrary flags to be created. What is an appropriate response? + +At the moment, I'm sending a list of flags that currently exist in the +mailbox, but that's a fairly expensive operation. Is this useful to the +client? Does it tell them anything that the \* in my PERMANENTFLAGS +response doesn't? + +What if I were to send only the system flags and omit any user-defined +flags altogether? Should I then send an unsolicited FLAGS response to +announce the new flag just before I send a FETCH response containing +one, or would that just confuse clients? + +(What do clients actually DO with the FLAGS response that they are +required to record?) + +Thanks. + +-- +Abhijit Menon-Sen +Oryx Mail Systems GmbH + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22917.mbox:2,S new file mode 100644 index 00000000..3ee4d940 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22917.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From janssen at parc.com Mon Apr 9 10:13:58 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +In-Reply-To: +References: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Apr9.101403pdt."57996"@synergy1.parc.xerox.com> + +> I strongly urge you to focus on standards, and disregard +> non-standards. + +Ah, but identifying what's really a standard is the hard part. :-) + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22920.mbox:2,S new file mode 100644 index 00000000..0e7b4c58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22920.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 13:36:31 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar11.123637pst."57996"@synergy1.parc.xerox.com> + +Mark Crispin wrote: +> On Thu, 8 Mar 2007, Bill Janssen wrote: +> >> The BODY[n.MIME] specification returns the entirety of the MIME part +> >> mini-header; there is no list of "headers in the mini-header to include +> >> and header in the mini-header to exclude." Note that MIME-Version is +> >> normally not in the mini-header. +> > Ah, my mistake. I interpreted the language in the RFC: +> > ``The MIME part specifier refers to the [MIME-IMB] header for this part.'' +> > to mean that only headers specified in [MIME-IMB] should be returned. +> +> Remember that new MIME-IMB header field names can be defined at any time, +> and in fact some of the MIME-IMB header fields aren't defined in MIME-IMB. +> +> The sole purpose of the BODY[x.MIME] fetch is to allow S/MIME software +> access to that data for S/MIME handling. + +So how is BODY[x.MIME] different from BODY[x.HEADER]? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22938.mbox:2,S new file mode 100644 index 00000000..cc1b9a7d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22938.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From tss at iki.fi Wed Jan 24 08:25:36 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] UIDPLUS and UID ordering +Message-ID: <1169655936.13714.342.camel@hurina> + +Do you think there will be any problems if COPY assigned UIDs to copied +messages in different order than they were copied? Can clients handle +that? For example: + +1 OK [COPYUID 123456789 1:4 2,1,3:4] Done + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22957.mbox:2,S new file mode 100644 index 00000000..896786af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22957.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Dec 20 03:09:22 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: <1166603479.22214.298.camel@hurina> +References: <1166603479.22214.298.camel@hurina> +Message-ID: <8j2+4TzX9tp2p0Ep9/IgQw.md5@libertango.oryx.com> + +Timo Sirainen writes: +> RFC says: "In all search keys that use strings, a message matches the +> key if the string is a substring of the field." +> +> Strictly reading this, it means that the SEARCH command can't really +> be optimized with most of the normal search index +> algorithms/libraries, because they support only matching from the +> beginning of words. +> +> So, in case I wanted to use such indexes, what do you think I should do? +> +> 1) Just use it for BODY and TEXT searches. Probably won't really break +> anything? I think some servers already do this. + +As a first try, I would scan for spaces in the search key and doing an +index-assisted search on whatever follows the first space, then looking +at the matches more closely. If the command is ?SEARCH SUBJECT "a b"?, +that implies that only messages whose subject contain a word starting +with b can match, so use that to narrow down the possibilities. If that +doesn't help your users enough, you could revisit the problem in a +later server version. + +> 2) Add some X-NONEXACT-BODY search extension. Or use COMPARATOR somehow? + +You could define a new collation whose substring operation only chops at +word boundaries, and then name that collation using COMPARATOR, but I +doubt that would help you. Which clients would do it? + +For me, the most important aspect of this problem is address searches. +After discussing that with Mark Crispin, I implemented a little bit of +address parsing: My code treats a ?SEARCH FROM "?, but it finds mail from you +really quickly. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22960.mbox:2,S new file mode 100644 index 00000000..773b891f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22960.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Nov 9 07:26:16 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] As The Stomach Turns: AOL creates new system flags +Message-ID: + +In our last episode, we saw imap.aol.com return a bogus + + waiting for auth data +as a SASL challenge in response to AUTHENTICATE PLAIN. + +In this episode, we learn that AOL's server sends a \Voicemail flag, in +violation of RFC 3501 which states: + +flag-extension = "\" atom + ; Future expansion. Client implementations + ; MUST accept flag-extension flags. Server + ; implementations MUST NOT generate + ; flag-extension flags except as defined by + ; future standard or standards-track + ; revisions of this specification. + +Let's be clear about this: only a future revision of the IMAP base +specification can add a flag that starts with \, and this is promised by +the IMAP base specification. + +So not only does AOL violate the specification, they are arbitrarily +making extensions in reserved portions of the protocol without permission. + +Stay tuned for future episodes of "As The Stomach Turns"! + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22974.mbox:2,S new file mode 100644 index 00000000..244abdd0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22974.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Sep 11 17:04:38 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <4505F2FE.8090807@sun.com> +References: <4505F2FE.8090807@sun.com> +Message-ID: + +Bill, + +Part of the server behavior that caused you such problems is described in +RFC 2180 section 4.1.2. + +I objected to that section being including in RFC 2180. In my opinion, +the behaviors of RFC 2180 sections 4.1.1 and 4.1.4 are the only acceptable +ones for the expunged message scenario. A server with an inferior mail +store may be forced to exhibit the 4.1.3 behavior; but this should not be +considered "acceptable" behavior. + +The best behavior is section 4.1.1, and this is what the mbx and mix mail +format support in UW imapd does. + +In any case, I consider any server that returns NO to a FETCH to be broken +in spite of RFC 2180 section 4.1.2. I deeply regret ever listing NO as a +possible response to a FETCH in the base specification; it was there "for +completeness" at a time before it was understood that some commands didn't +have to have all three responses. + +However, this is definitely a server bug: + A5 FETCH 1 (BODYSTRUCTURE) + * 1 FETCH (FLAGS (\Deleted)) + A5 OK FETCH completed. +since the server replied OK without returning a BODYSTRUCTURE (not even a +fake RFC 2180 section 4.1.3 one). + +Just about the only reasonable thing that you can do, following unexpected +responses to a FETCH, is to do a NOOP (which would allow untagged EXPUNGE +events) and see if that makes the world become sane again. + +As for an EXPUNGED response code, I would much rather abolish RFC 2180 +section 4.1.2 (and preferably also section 4.1.3) entirely than add +another complication to an already overly-complex protocol. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22983.mbox:2,S new file mode 100644 index 00000000..3a53477f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22983.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Aug 3 10:01:28 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +In-Reply-To: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> +Message-ID: + +Are you saying that your mail store does not have INBOX? /inbox is not +equivalent to INBOX. + +Or are you saying that your mail store has INBOX, but does not respond +with any data to the command + tag LIST INBOX % +If so, it should; that command matches INBOX. + +On Thu, 3 Aug 2006, Richard Bang wrote: + +> Hi, +> +> I've been reworking my folder handling to allow for UTF-16 mail store names and I've come across a problem in the interaction between my server and Pine. +> +> I have a mail store that looks like this +> /inbox +> /folder1 +> /folder2 +> /folder2/folder3 +> +> Pine sends the query +> LIST INBOX % +> +> Given the above folder list what would be the correct response? +> +> I believe it should be +> x OK List Completed +> +> without any stores listed because there are none that match. However, at this point Pine stops looking for folders and doesn't list any. +> +> Any advice would be greatly appreciated. +> +> Regards +> +> Richard (http://www.ftgate.com) + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095117.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095117.22987.mbox:2,S new file mode 100644 index 00000000..5576accf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095117.22987.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From johannes at sipsolutions.net Thu Jul 6 01:45:06 2006 +To: imap-protocol@u.washington.edu +From: Johannes Berg +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] multifolder notification +Message-ID: <1152175506.4995.51.camel@localhost> + +Hi, + +A lot of people seem to have a need for being notified as soon as +possible when mail arrives into one of their mail folders as opposed to +just using IDLE on a single one. + +I just found draft-melnikov-lemonade-imap-events-00.txt which tries to +give some guide on how to create untagged responses during IDLE for +message store changes in other folders than the currently selected one. + +However, I think that this is not enough. Currently, any server can +create such responses and clients must expect them and at least ignore +them. And the server need not send them, in which lies the problem. + +Should this be of use to clients, then the server needs to announce to +the client that such multifolder notification is supported. + +This can be made arbitrarily complex, ranging from announcing a new +ALLFOLDERNOTIFY capability that guarantees to the client that the server +will always send untagged STATUS responses whenever a mailbox status +changes (except for the one that the client is currently IDLE'ing in, if +any). + +Somewhere in the middle of the complexity spectrum there's the option of +using listext to announce a new capability and define a new list option +which indicates which folders are notified for. + +And on the upper end you can have a new command that enables/disables +the status updates for any folder, and a new list option indicating +which are selected for status updates (along, of course, with a new +capability telling clients that this is available). + +The first option might be problematic since apparently some clients are +in violation of the rules and don't cope with untagged responses well. + +In any case, I'm very much interested in having this capability of +notification across folders, but as pointed out it needs to be possible +for the client to tell that it will get such notification in order to +rely on it instead of polling the folders every few minutes. + +johannes +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 845 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22756.mbox:2,S new file mode 100644 index 00000000..52bc17b0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22756.mbox:2,S @@ -0,0 +1,108 @@ +MBOX-Line: From brong at fastmail.fm Tue Nov 15 22:51:54 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <20111116052757.GB12266@brong.net> + +Message-ID: <20111116065154.GA4452@brong.net> + +On Tue, Nov 15, 2011 at 10:10:32PM -0800, Mark Crispin wrote: +> On Wed, 16 Nov 2011, Bron Gondwana wrote: +> >The other problems with strict ascendency is that it requires a global lock +> >for the duration of any append, over whatever scope you require the +> >ascendency in. As you expand out from a single mailbox to the scope of an +> >entire user, you expand the scope of that global lock. +> +> Not necessarily. If the GUID is expanded to a uint64 then there's no +> reason why the GUID assignment can't be simply: +> +> guid = ++lastguid; +> +> You don't care if the GUID space is holey; and with a uint64 you don't +> even care if you end up losing some. + +No, it's not that easy. You need every view before to not include it, +and every view afterwards to include it. + +> There are even some systems where ++ is atomic (yes, even if multicore) +> and you don't need the mutex. + +That's cheap - making sure you never return these out of order is not. + +> The real issue is MULTIAPPEND and its interaction with UIDPLUS. +> Fortunately, you don't have to assign UIDs as messages are uploaded; you +> can defer that until the uploads are completed. Since you now know how +> many messages you are adding, you can claim an entire range of GUIDs via +> +> guid = lastguid += nappends; +> +> Then assign the already-claimed GUIDs at leisure while checking in the +> append. + +Only by blocking all reads while this is happening. + +> Of course, the appended mailbox needs to be mutexed over all of this, but +> that's less overall concern than the global mutex. + +The appended ID scope, if we're using keyword/flags instead of folders, yes. + +> >Which no longer have the strict ascendency property, rendering it somewhat +> >worthless. +> +> The purpose of strict ascendency is for synchronization. Because these are +> multiple views on a single object, you don't need that at the level of a +> view. + +This is valuable purely for a client that does a full synchronisation. For +something which uses MIDs (which only have value within a held TCP connection) + +> A view should compromise either on ascendency or on prohibition of insert. +> I would do the compromise on prohibition of insert, which already happens +> if you have a view that focuses on a keywords. + +Someone else can insert something which matches your view - unless you have +a non-updating view. + +> >Not requiring multiple parallel connections to be informed of changes. +> +> Why on earth would any well written client require multiple parallel +> connections? Never mind why poorly-written clients need it. + +How many clients make multiple parallel connections out there? Most of +them. For fucks sake - it's like you're trying to be obtuse. They +have multiple connections so they can keep IDLE on a folder or two while +they update the STATUS counts on other folders, amongst other things. + +And a separate connection to send email, and a separate connection to +get a contacts list, and ... + +> >And of course the low handing fruit: UTF-8 throughout, a more regular +> >syntax which simplifies parsing and has space for extentions later so +> >that every command doesn't have its own unique, slightly different +> >parser. +> +> Which will work great until someone wants to do something that doesn't fit +> within the regular syntax (and/or wants to "improve" the syntax). Enter +> the flames that your insistance upon syntax regularity is an evil plot to +> hinder progress, cause loss of market window, and deny little girls their +> very own pony. +> +> You will discover that phenomenum soon enough. Oh, and don't believe that +> you can enforce protocol integrity. You'll learn what "being microsofted" +> and "embrace, extend, destroy" means. + +Oh, it's bound to happen. That's when the next young buck comes along and +comes up with something "better". + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22772.mbox:2,S new file mode 100644 index 00000000..aafe8923 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22772.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From snowjn at aol.com Thu May 26 17:58:49 2011 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> + + <4DDEB7EB.2090508@aol.com> + +Message-ID: <4DDEF749.3030400@aol.com> + + + +Philip Guenther wrote: +> On Thu, 26 May 2011, John Snow wrote: +> +>> Philip Guenther wrote: +>> +> ... +> +>>> Right now, a client can parse a FETCH response at any time, inserting +>>> it into its cache without having to consider any context of pending +>>> commands. Indeed, the server can send FETCH responses at any time +>>> (modulus TCP flow-control/deadlock concerns), and it's *required* to +>>> do so for flag changes. Sometimes using the UID and sometimes using +>>> msgno would make such unsolicited FETCH responses ambiguous. +>>> +>> A UID fetch response could just as easily be handled at any time. +>> +> ... +> +>> why not this instead? +>> +>> Example: C: A999 UID FETCH 4827313:4828442 FLAGS +>> S: * UID 4827313 FETCH (FLAGS (\Seen)) +>> +> ... +> +> And unsolicited FETCH responses would have used which format? How would +> the server have decided that? +> +> +> IMAP message data/metadata processing is basically a cache-fill/coherency +> algorithm: the client says "yo, server, please fill in my cache with at +> least the following bits" and the server does so, while concurrently +> keeping the cache coherent when metadata (flags) are changed by other +> clients...and those are handled consistently, with a single response +> format. +> +> I take it you don't like that design. +> +> +> Philip +> +Whether I like it or not doesn't really matter. My problem was +understanding the need. + +I think I got it now. The problem is that's there's 2 ways to identify +a message. The absolute +UID and the relative MSN. I was thinking only the UID was really +needed. But, that doesn't +allow for a client to fetch only predetermined number of messages. +Sure, you could fetch a +range of UIDs, but there's no way to know how many and what end of the +mailbox they +might represent. So you need the MSN to fetch the user desired +messages, otherwise you'd +have fetch all the messages just to find the ones you want. That would +indeed suck. Since +you need both, and the client and server must be in sync, it must be +returned in the untagged +response. To be consistent, it seems that the UID should be returned on +all fetch responses. +Oh well... + +Thanks for the help. + + + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22807.mbox:2,S new file mode 100644 index 00000000..ce38146d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22807.mbox:2,S @@ -0,0 +1,128 @@ +MBOX-Line: From snowjn at aol.com Fri Jun 11 16:46:19 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:43 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> <1276267479.22134.102.camel@kurkku.sapo.corppt.com> <1276274718.22134.138.camel@kurkku.sapo.corppt.com> <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + +Message-ID: <4C12CACB.7030205@aol.com> + + + +Mark Crispin wrote: +> On Fri, 11 Jun 2010, Timo Sirainen wrote: +>> a COPY 1:100 elsewhere +>> b IF-OK STORE 1:100 +flags \deleted +>> c IF-OK EXPUNGE +> +> Presumably, the real life-example would be: +> +> a UID COPY 1:100 elsewhere +> b IF-OK UID EXPUNGE 1:100 +> +> Other than the normal objections to new capabilities, there's nothing +> really wrong with this idea. It's a fairly obvious improvement to +> existing IMAP pipelining. +> +> +> On the other hand, I think that it would be better to have an explicit +> pipeline facility in IMAP: +> +> a PIPELINE 1:100 (b COPY $ elsewhere | c STORE $ +FLAGS \DELETED | +> EXPUNGE) +> +> a UID PIPELINE 1:100 (b UID COPY $ elsewhere | c UID EXPUNGE $) +> +> and deprecate the current way of pipelining. +> +> PIPELINE would have the additional semantic (not in UID PIPELINE) that +> untagged expunge events are prohibited until the pipeline completes. +> Thus, an EXPUNGE in the middle of a pipeline would simply set an "expunge +> when pipeline completes" flag and not actually expunge. +> +> Note the $ to repeatedly apply the previous sequence set. +> +> You could mix UID and non-UID (e.g., UID commands could happen in a +> PIPELINE and non-UID commands could happen in UID PIPELINE) but normally +> this would not be done. +> +> Besides separating the portions of the pipeline, the | operator would +> be a +> go/no-go point. The result would either be: +> +> a OK The pipeline worked +> +> which indicates full success, or +> +> a NO [TAG b] COPY failed +> +> which would be the tag of the failed pipelined command. +> +> Since there is (sub)tag error reporting, there is no need for the +> pipeline +> to be atomic. +> +> IF-OK is only needed in pipelining, so it's obviated here. I guess that +> we could have a second operator besides | if we really want a "don't care +> if previous operation fails" functionality (but I don't see a need). +> +> +> Another neat thing is that this completely eliminates the need for a MOVE +> command. A server that somehow can do internal move fast but not copy +> could recognize the above two idioms and implement them as an internal +> move. Since it's a pipeline, it doesn't require atomicity, and it has an +> error reporting mechanism. +> +> +> Yet another neat thing is that this explicitly declares a pipeline, +> and we +> can get rid of all the ridiculous client rules for pipelining that are in +> IMAP now. +> +> +> The question is: how many people would actually implement such a facility +> if it were present? The normal objections to new capabilities applies as +> much to this idea. +> + +I've never understood how pipelining commands is useful. If I were +writing a client, I would +want to know the outcome of each command before issuing the next. It +seems that this +proposal just makes things more complicated just to eliminate the need +for a move command. + +The move command is an explicit indicator the the client intends for the +message to be somewhere +else. Why should I parse multiple commands to try and interpret the +client's intentions? + +Move is just easier to understand. I assume that's why Unix has +commands for both copy and +move. You can cp a file to a new directory then delete the original, or +you could just mv it. +mv may do the copy and delete under the covers but, as a user, I don't +really care how it happens. + +This same sort of optimization exists all through the IMAP protocol. +Why do we have the ability +to fetch anything less the the complete message? A client could fetch +the message and just throw out +the stuff it doesn't want. Instead, the client can ask for just what it +needs. That's an optimization. + +snow. + +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22866.mbox:2,S new file mode 100644 index 00000000..65e0e230 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22866.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jul 24 02:02:36 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] ACLs and \Noinferiors +In-Reply-To: <1216834954.31765.790.camel@hurina> +References: <1216834954.31765.790.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> Any thoughts on if lack of "k" right for a mailbox without children +> should LIST it with \Noinferiors flag? If not, what about if no-one has +> "k" right for it and none is ever expected to be given? + +But maybe they should be tied together differently: Granting "k" on a +\noinferiors mailbox is meaningless. It's not clear to me that setacl +should succeed if the rights grant what the server cannot do. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22880.mbox:2,S new file mode 100644 index 00000000..f8fd2364 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22880.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Sat Feb 16 12:54:58 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] header.fields fetching +In-Reply-To: +References: <1203188859.4901.147.camel@hurina> + + <8782ACCD-1349-445D-BEAA-EB5409610D24@iki.fi> + + +Message-ID: <54804692-077F-4D29-87DB-7F4BFA1B4A27@iki.fi> + +On Feb 16, 2008, at 10:39 PM, Arnt Gulbrandsen wrote: + +> All that said, treating a header field differently in HEADER.FIELDS +> and HEADER.FIELDS.NOT sounds dubious to me. Not necessaribly wrong +> by the RFCs, but I can't imagine why it would be desirable. + +I noticed that one server already does this, and started wondering +about doing something similar. This would allow caching headers by +header ID -> value instead of header ID -> "header: value", i.e. saves +a bit disk space. But since most mails use the same casing for header +names, I guess this could be done in a fully standard way by +allocating one bit to specify "header: is in its standardized +presentation and it's not included in the value". + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22883.mbox:2,S new file mode 100644 index 00000000..9a0d1be7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22883.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From MRC at Washington.EDU Fri Jan 25 17:34:14 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: <08Jan25.172524pst."58696"@synergy1.parc.xerox.com> +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.172524pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Fri, 25 Jan 2008, Bill Janssen wrote: +>> Please refer to: +>> RFC 3501 documentation on the syntax of the AUTHENTICATE +>> command in IMAP +>> RFC 4422 documentation of the SASL framework +>> RFC 4616 documentation of the PLAIN extension +>> RFC 4959 documentation of the SASL-IR extension in IMAP +> Thanks, that's what I needed. + +Good luck! + +Proper understanding of how all this works requires carefully going +through RFC 3501 section 6.2.2, and all of RFC 4422 and RFC 4616. + +Hopefully, though, you'll find it to be more understandable than the +earlier documents. + +Don't worry about RFC 4919 until the very end. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22893.mbox:2,S new file mode 100644 index 00000000..6af5f508 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22893.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Mon Oct 29 13:18:59 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <47263322.7040702@psaux.com> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> +Message-ID: <1193689139.25921.618.camel@hurina> + +On Mon, 2007-10-29 at 12:23 -0700, Tim Showalter wrote: +> Arnt Gulbrandsen wrote: +> >> 1) An "ENABLE UTF-8" command that throws a big switch. Rather unIMAPish. +> > +> > +> > IFF a big switch is the right way to solve it, I like this, but... hm... +> > how shall I say this? IMO, the value of ENABLE is O(1/n), where n is the +> > number of times it is used, so I'd prefer to keep n small. +> +> Agreed. +> +> On the off chance this is actually what's approved, "ENABLE" should be a +> slider. '0' (default) is IMAP4, '1' should be IMAP4+UTF8, '2' should be +> the next feature we can't live without. + +Client-side capabilities come to my mind. Has something like this been +discussed already? + +1 ENABLE UTF-8 UNSOLICITED-RESPONSES-WITHOUT-IDLE ETC + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22903.mbox:2,S new file mode 100644 index 00000000..e3745865 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22903.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Jul 24 06:04:51 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Unordered FETCH replies +In-Reply-To: +References: <1185164783.25618.157.camel@hurina> + + + + +Message-ID: + +Mark Crispin writes: +> On Mon, 23 Jul 2007, Arnt Gulbrandsen wrote: +>> I wish uw, cyrus or courier would send lowercase IMAP keywords to +>> flush these bugs out. +> +> I would be willing to do this, but not at the cost of having the +> author of Courier use this as FUD against my server. + +Similar considerations prevailed at the time. *shrug* + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22911.mbox:2,S new file mode 100644 index 00000000..83a5cf60 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22911.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From murch at andrew.cmu.edu Wed Jun 13 12:51:16 2007 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] BODYSTRUCTURE 'location' field +Message-ID: <46704AB4.8020803@andrew.cmu.edu> + +The text in section 7.4.2 of RFC 3501 states that the 'body location' +consists of a 'string list'. This statement runs contrary to the +description of the Content-Location header as defined in section 4.2 of +RFC 2557, and also conflicts with RFC 3501's own ABNF for 'body-fld-loc' +which shows it as 'nstring'. + +I'm assuming that the text in 7.4.2 is incorrect and should be read as +'string'. + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22914.mbox:2,S new file mode 100644 index 00000000..e4ce58a2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22914.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed May 23 18:47:20 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] FLAGS response +In-Reply-To: <20070524012401.GA30894@penne.toroid.org> +References: <20070524012401.GA30894@penne.toroid.org> +Message-ID: + +On Thu, 24 May 2007, Abhijit Menon-Sen wrote: +> The description of the FLAGS response in RFC 3501, section 7.2.6 says it +> "identifies the flags that are applicable for this mailbox". Our server +> allows arbitrary flags to be created. What is an appropriate response? + +All the system flags and currently-defined user-defined. + +> At the moment, I'm sending a list of flags that currently exist in the +> mailbox, but that's a fairly expensive operation. + +Why should that be expensive? That should be part of mailbox metadata. + +> Is this useful to the +> client? + +Yes. Some would say s/useful/essential + +> Does it tell them anything that the \* in my PERMANENTFLAGS +> response doesn't? + +Yes. + +> What if I were to send only the system flags and omit any user-defined +> flags altogether? + +Your server would be non-compliant with the IMAP specification. + +> Should I then send an unsolicited FLAGS response to +> announce the new flag just before I send a FETCH response containing +> one, or would that just confuse clients? + +No, you should not do that. Yes, it would confuse clients. + +> (What do clients actually DO with the FLAGS response that they are +> required to record?) + +Many possible things. + +It may load a menu of flags, e.g. + Meeting + Agenda + Plans + Friends + <> + +The c-client library loads a vector of flag names in stream metadata, and +on a per-message basis keeps a bitmap (indexed the same way the vector is) +instead of the names. + +It's fine and good to inquire, for curiosity's sake, "why was that put +there?". But you should avoid the temptation to consider whether it's +alright to disregard something; otherwise, sooner or later, you'll forget +to ask and find out the hard way that you broke something. + +Almost all of the IMAP base specification is mandatory-to-implement, and +some client depends upon everything that's there. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22917.mbox:2,S new file mode 100644 index 00000000..e0ab8274 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22917.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Apr 9 10:18:40 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +In-Reply-To: <07Apr9.101403pdt."57996"@synergy1.parc.xerox.com> +References: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> + + <07Apr9.101403pdt."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 9 Apr 2007, Bill Janssen wrote: +>> I strongly urge you to focus on standards, and disregard +>> non-standards. +> Ah, but identifying what's really a standard is the hard part. :-) + +Actually, it is not difficult at all within the Internet context. + +The IETF has a set of documents, called RFCs for historical reasons, which +are graded according to their standards level: informational, +experimental, proposed standard, draft standard, full standard. Documents +in one of the last three categories (with "standard" in their name) are +also called standards-track documents. + +Anything that is not in a standards-track document is not a standard. + +There are also Internet Drafts, some of which are destined to become +standards-track documents. However, Internet Drafts can (and do!) change +incompatibly before they are published as RFCs, so even if the effort +itself is aimed at standards-track an Internet Draft can not be used or +cited as anything other than a work in progress. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22920.mbox:2,S new file mode 100644 index 00000000..89aedb20 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22920.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From tss at iki.fi Sun Mar 11 13:51:00 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: <07Mar11.123637pst."57996"@synergy1.parc.xerox.com> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.123637pst."57996"@synergy1.parc.xerox.com> +Message-ID: <1173646260.17598.293.camel@hurina> + +On Sun, 2007-03-11 at 13:36 -0700, Bill Janssen wrote: +> +> So how is BODY[x.MIME] different from BODY[x.HEADER]? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22938.mbox:2,S new file mode 100644 index 00000000..c0532cad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22938.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From dave at cridland.net Wed Jan 24 09:17:42 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] UIDPLUS and UID ordering +In-Reply-To: <1169655936.13714.342.camel@hurina> +References: <1169655936.13714.342.camel@hurina> +Message-ID: <21165.1169659062.430590@peirce.dave.cridland.net> + +On Wed Jan 24 16:25:36 2007, Timo Sirainen wrote: +> Do you think there will be any problems if COPY assigned UIDs to +> copied +> messages in different order than they were copied? Can clients +> handle +> that? For example: +> +> 1 OK [COPYUID 123456789 1:4 2,1,3:4] Done +> +> +You're certainly technically allowed to do that, but I'd personally +have to check to see if my client would break or not, though. + +If clients did break, the breakage would be confusing to the user and +it could be difficult to find the cause for the developer. It might +be best to consider avoiding it, unless it's really likely to make a +difference. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22957.mbox:2,S new file mode 100644 index 00000000..4f0c1d02 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22957.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From tss at iki.fi Wed Dec 20 05:14:50 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: <8j2+4TzX9tp2p0Ep9/IgQw.md5@libertango.oryx.com> +References: <1166603479.22214.298.camel@hurina> + <8j2+4TzX9tp2p0Ep9/IgQw.md5@libertango.oryx.com> +Message-ID: <1166620490.22214.327.camel@hurina> + +On Wed, 2006-12-20 at 12:09 +0100, Arnt Gulbrandsen wrote: +> Timo Sirainen writes: +> > RFC says: "In all search keys that use strings, a message matches the +> > key if the string is a substring of the field." +> > +> > Strictly reading this, it means that the SEARCH command can't really +> > be optimized with most of the normal search index +> > algorithms/libraries, because they support only matching from the +> > beginning of words. +> > +> > So, in case I wanted to use such indexes, what do you think I should do? +> > +> > 1) Just use it for BODY and TEXT searches. Probably won't really break +> > anything? I think some servers already do this. +> +> As a first try, I would scan for spaces in the search key and doing an +> index-assisted search on whatever follows the first space, then looking +> at the matches more closely. If the command is ?SEARCH SUBJECT "a b"?, +> that implies that only messages whose subject contain a word starting +> with b can match, so use that to narrow down the possibilities. If that +> doesn't help your users enough, you could revisit the problem in a +> later server version. + +Normally people search only single words, so this doesn't help much. + +> > 2) Add some X-NONEXACT-BODY search extension. Or use COMPARATOR somehow? +> +> You could define a new collation whose substring operation only chops at +> word boundaries, and then name that collation using COMPARATOR, but I +> doubt that would help you. Which clients would do it? + +I mostly need it for one webmail installation where the webmail code can +be modified if needed, but getting it standardized would be nice. I +imagine other server implementors (and especially admins and users) +would be happy to have fast message body searches. At least I've +preferred grep for a long time since it was just too slow via IMAP (yea, +I should look into optimizing my search code too :). + +Perhaps related to this issue is the possibility to allow some kind of +fuzzy matching, where the server may decide to show results for strings +which sort-of match, but not completely. + +BTW. I did also implement Cyrus Squat like indexes which allow full +substring searches to be done fast, but they take more disk space and +they're slower to update than "normal" search indexes. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22960.mbox:2,S new file mode 100644 index 00000000..36a04249 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22960.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Nov 14 16:34:24 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] ESEARCH extension (RFC 4731) +Message-ID: + +How many client implementations of RFC 4731 are there currently? + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22974.mbox:2,S new file mode 100644 index 00000000..5db03f3b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22974.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From bill.shannon at sun.com Tue Sep 12 13:08:11 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + +Message-ID: <450713AB.4090601@sun.com> + +Mark Crispin wrote: +> Bill, +> +> Part of the server behavior that caused you such problems is described +> in RFC 2180 section 4.1.2. +> +> I objected to that section being including in RFC 2180. In my opinion, +> the behaviors of RFC 2180 sections 4.1.1 and 4.1.4 are the only +> acceptable ones for the expunged message scenario. A server with an +> inferior mail store may be forced to exhibit the 4.1.3 behavior; but +> this should not be considered "acceptable" behavior. + +I agree, 4.1.3 is the worst by far. There's just no reasonable way for +the client to know what's going on. + +> The best behavior is section 4.1.1, and this is what the mbx and mix +> mail format support in UW imapd does. +> +> In any case, I consider any server that returns NO to a FETCH to be +> broken in spite of RFC 2180 section 4.1.2. I deeply regret ever listing +> NO as a possible response to a FETCH in the base specification; it was +> there "for completeness" at a time before it was understood that some +> commands didn't have to have all three responses. +> +> However, this is definitely a server bug: +> A5 FETCH 1 (BODYSTRUCTURE) +> * 1 FETCH (FLAGS (\Deleted)) +> A5 OK FETCH completed. +> since the server replied OK without returning a BODYSTRUCTURE (not even +> a fake RFC 2180 section 4.1.3 one). + +Ok, I'll ask the customer to report it. The customer claims the server is: +Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.6944.0 + +> Just about the only reasonable thing that you can do, following +> unexpected responses to a FETCH, is to do a NOOP (which would allow +> untagged EXPUNGE events) and see if that makes the world become sane again. + +Yup, that looks like the best approach. + +> As for an EXPUNGED response code, I would much rather abolish RFC 2180 +> section 4.1.2 (and preferably also section 4.1.3) entirely than add +> another complication to an already overly-complex protocol. + +4.1.2 is tolerable since at least the client has some clue that something +is wrong, although an EXPUNGED response code would still be helpful in +this case. + +4.1.3 is completely unacceptable. If this remains allowed behavior, an +EXPUNGED response code should be *required* for this case. + +Thanks for your help. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22983.mbox:2,S new file mode 100644 index 00000000..e59c5d43 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22983.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Aug 3 10:03:15 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +In-Reply-To: +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + +Message-ID: + +Also, what are "UTF-16 mail store names"?!? + +UTF-16 is certainly not permitted in an IMAP mailbox name! Currently, +only modified UTF-7 is permitted for internationalized names, although in +the future there is an attempt to relax the restriction that precludes +UTF-8 mailbox names. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095118.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095118.22987.mbox:2,S new file mode 100644 index 00000000..311da1f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095118.22987.mbox:2,S @@ -0,0 +1,108 @@ +MBOX-Line: From hippie at uchicago.edu Thu Jul 6 20:54:01 2006 +To: imap-protocol@u.washington.edu +From: Jeff David Lowe +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] multifolder notification +In-Reply-To: <1152175506.4995.51.camel@localhost> +References: <1152175506.4995.51.camel@localhost> +Message-ID: <44ADDAD9.4040200@uchicago.edu> + +Hi, my name is Jeff Lowe and I am trying to get imapd to run on a Mac OS +X. I have been back and forth a couple of times and last thing I tried was +make clean +make oxp + +And this is the output plus errors that I recieved: + +Red_Faction:/Library/Webserver/Documents root# cd imap-2004g +Red_Faction:/Library/Webserver/Documents/imap-2004g root# make clean +Removing old processed sources and binaries... +sh -c 'rm -rf an ua OSTYPE SPECIALS c-client mtest imapd ipopd mailutil +mlock dmail tmail || true' +cd tools;make clean +sh -c 'rm -f *.o uahelper || true' +c-67-175-166-218:/Library/Webserver/Documents/imap-2004g root# make oxp +make sslnopwd ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++ Building in full compliance with RFC 3501 security ++ requirements: +++ TLS/SSL encryption is supported +++ Unencrypted plaintext passwords are prohibited ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Applying an process to sources... +tools/an "ln -s" src/c-client c-client +tools/an "ln -s" src/ansilib c-client +tools/an "ln -s" src/charset c-client +tools/an "ln -s" src/osdep/unix c-client +tools/an "ln -s" src/mtest mtest +tools/an "ln -s" src/ipopd ipopd +tools/an "ln -s" src/imapd imapd +tools/an "ln -s" src/mailutil mailutil +tools/an "ln -s" src/mlock mlock +tools/an "ln -s" src/dmail dmail +tools/an "ln -s" src/tmail tmail +ln -s tools/an . +make build EXTRACFLAGS='' EXTRALDFLAGS='' EXTRADRIVERS='mbox' +EXTRAAUTHENTICATORS='' PASSWDTYPE=std SSLTYPE=nopwd IP=4 +EXTRASPECIALS='' BUILDTYPE=osx \ +IP=6 EXTRAAUTHENTICATORS=" gss" \ +SPECIALS="SSLDIR=/System/Library/OpenSSL SSLINCLUDE=/usr/include/openssl +SSLLIB=/usr/lib PAMLDFLAGS=-lpam" \ +PASSWDTYPE=pam \ +EXTRACFLAGS=" -DMAC_OSX_KLUDGE=1" +Building c-client for osx... +echo `cat SPECIALS` > c-client/SPECIALS +cd c-client;make osx EXTRACFLAGS='-DMAC_OSX_KLUDGE=1'\ + EXTRALDFLAGS=''\ + EXTRADRIVERS='mbox'\ + EXTRAAUTHENTICATORS='gss'\ + PASSWDTYPE=pam SSLTYPE=nopwd IP=6\ + SSLDIR=/System/Library/OpenSSL SSLINCLUDE=/usr/include/openssl +SSLLIB=/usr/lib PAMLDFLAGS=-lpam +make build EXTRACFLAGS='-DMAC_OSX_KLUDGE=1' EXTRALDFLAGS='' +EXTRADRIVERS='mbox' EXTRAAUTHENTICATORS='gss' PASSWDTYPE=pam +SSLTYPE=nopwd IP=6 `cat SPECIALS` OS=osx \ + CRXTYPE=nfs \ + SPOOLDIR=/var/spool MAILSPOOL=/var/mail \ + BASECFLAGS="-g -O -Wno-pointer-sign" +sh -c 'rm -rf auths.c crexcl.c nfstest.c linkage.[ch] siglocal.c +osdep*.[ch] *.o ARCHIVE *FLAGS *TYPE c-client.a || true' +Once-only environment setup... +echo cc > CCTYPE +echo -g -O -Wno-pointer-sign '-DMAC_OSX_KLUDGE=1' > CFLAGS +echo -DCREATEPROTO=unixproto -DEMPTYPROTO=unixproto \ + -DMAILSPOOL=\"/var/mail\" \ + -DANONYMOUSHOME=\"/var/mail/anonymous\" \ + -DACTIVEFILE=\"/usr/lib/news/active\" -DNEWSSPOOL=\"/var/spool/news\" \ + -DRSHPATH=\"/usr/ucb/rsh\" -DLOCKPGM=\"/etc/mlock\" > OSCFLAGS +echo > LDFLAGS +echo "ar rc c-client.a osdep.o mail.o misc.o newsrc.o smanager.o utf8.o +siglocal.o dummy.o pseudo.o netmsg.o flstring.o fdstring.o rfc822.o +nntp.o smtp.o imap4r1.o pop3.o unix.o mbx.o mmdf.o tenex.o mtx.o news.o +phile.o mh.o mx.o;ranlib c-client.a" > ARCHIVE +echo osx > OSTYPE +./drivers mbox imap nntp pop3 mh mx mbx tenex mtx mmdf unix news phile dummy +./mkauths gss md5 pla log +echo -I/usr/local/include +-DGSS_C_NT_HOSTBASED_SERVICE=gss_nt_service_name >> OSCFLAGS +sh -c '(test -f /usr/local/lib/libk5crypto.a) && echo -L/usr/local/lib +-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err || echo -L/usr/local/lib +-lgssapi_krb5 -lkrb5 -lcrypto -lcom_err' >> LDFLAGS +echo "#include \"kerb_mit.c\"" >> auths.c +echo -DMD5ENABLE=\"/etc/cram-md5.pwd\" >> OSCFLAGS +ln -s os_osx.h osdep.h +ln -s os_osx.c osdepbas.c +ln -s log_std.c osdeplog.c +ln -s sig_bsd.c siglocal.c +ln -s crx_nfs.c crexcl.c +ln -s ip6_unix.c ip_unix.c +ln: ip_unix.c: File exists +make[3]: *** [onceenv] Error 1 +make[2]: *** [osx] Error 2 +make[1]: *** [OSTYPE] Error 2 +make: *** [oxp] Error 2 +Red_Faction:/Library/Webserver/Documents/imap-2004g root# + +Does anyone know what that means or what I am doing wrong? +Thanks. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22756.mbox:2,S new file mode 100644 index 00000000..25a35189 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22756.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From dave at cridland.net Wed Nov 16 00:33:08 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + +Message-ID: <29330.1321432388.123579@puncture> + +On Wed Nov 16 02:24:17 2011, Mark Crispin wrote: +> My understanding is that Google perceived keywords as not commonly +> implemented, and thus needing to do view/mailbox mapping. It's been +> a +> major problem; a classic case of kludge tower building because it +> was +> perceived that they couldn't do it right to begin with. + +I thought this at one point, but I recall seeing somewhere that the +limitation was that keywords are pure ASCII, compared to mailbox +names (and Google tags or whatever they're called) which are full +unicode, contain spaces, etc. + +Personally I think Google are big enough that fixing this problem +"properly" (ie, a more free-text naming of FLAGS via the standards +process) would have been viable, but the desire of many companies +(Google included) to assume that marketing splash always trumps +technical merit means that a kludge they can release without +consultation trumps revealing some portion of the plan, or releasing +incrementally, but with a better design. + +I do understand the pressure, and sympathize with it, but I still +find it annoying how little the technical argument counts for, +especially when it's a standardization issue, and these companies are +often too happy to talk about how much they support open standards. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22772.mbox:2,S new file mode 100644 index 00000000..53aec16c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22772.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 26 18:03:05 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> +Message-ID: + +On Fri, 27 May 2011, Timo Sirainen wrote: +> I've noticed there are many people who want web 2.0 kind of interface to +> emails (xml/ajax/dunno) + +Only now? + +> And why +> aren't they just using IMAP? Because they're scared of even trying to +> use it. + +To those who only know Web 2.0, solutions that don't look like Web 2.0 are +hostile and problematic. + +I think that it's the poor CS education that most students get these days: +Java as a first programming language, with cookbook software development +using large libraries and predefined templates. I've met graduates of CS +programs who don't comprehend pointers and recursion! + +There's a middle ground between the Scylla of being so mathematical that +real-world engineering is lost, and the Charybdis of making everything be +the assembly of Lego blocks. + +> Hmm. IMAP over XML maybe?.. + +That wasn't an earthquake you just felt. That was me shuddering in +horror. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22807.mbox:2,S new file mode 100644 index 00000000..1736874c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22807.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From snowjn at aol.com Fri Jun 11 16:52:23 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> <201006112352.05642.witold.krecicki@firma.o2.pl> <201006120124.53714.witold.krecicki@firma.o2.pl> + +Message-ID: <4C12CC37.2090200@aol.com> + + + +Philip Guenther wrote: +> On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +> +>> On Saturday 12 of June 2010 01:16:36 Philip Guenther wrote: +>> +> ... +> +>>> Uh, what? It sounds like you're saying that you're going to build a +>>> system where MOVE is fast (so single message rename is fast) but then +>>> intentionally *not* take advantage of the design to use hardlinks to +>>> make COPY fast. Claiming that using hardlinks is "not a normal +>>> method" when it's been in use for better than a decade requires some +>>> justification. +>>> +>> Even if used for over a decade it is STILL a performance hack. +>> +> +> And hash tables have been a performance hack for 5 decades. +> +> Or do you have an *OBJECTIVE* criteria for what makes something a +> performance hack that the rest of us can use to understand why you refuse +> to use a supported feature of the data structures that we call a +> filesystem? +> +> +> +>>>>> IMAP has generally not added features whose sole purpose is to +>>>>> provide support for a particular type of store. Far more common +>>>>> is that a particular type of store has vetoed a proposed addition. +>>>>> +>>>> MOVE creates advantage for any kind of single-labeled flat store. +>>>> +>>> So you agree with Mark that it's only for a particular type of store +>>> that this helps. +>>> +>> No, I'm showing that there is a store in which this helps. There may be +>> other types. +>> +> +> That still sounds like you agree, even though you don't want to. "There +> may be others" could be said about *anything*. If there's an example +> that's significantly different than the "single-labelel flat store" for +> which MOVE is an advantage, cite it. +> +> +> +>>>> Most of the people here (I'm silently assuming that they are not all +>>>> newcomers) agreed that it is in fact a needed feature. +>>>> +> ... +> +>> No, I'm simply assuming that those who are not willing to take part in this +>> discussion do not have an opinion. +>> +> +> I'll just quote those two sentences of yours and say that they are in +> conflict. +> +> +> +>> Daves argument that the idea of 'trash can' is broken and people should +>> just delete their mails (or IMAP should create a 'trash can' model) it's +>> IMHO simply out of this world - people want to have a trash can and be +>> able to recover deleted e-mails. +>> +> +> It's been discussed multiple times in the past (oh, why does no one +> actually read the archives?) how to implement the Trash Can UI on top of +> the IMAP \deleted+EXPUNGE model. And guess what, that can do something +> the "trash can is a mailbox" model can't: undelete restores the message to +> its original place in the mailbox. +> +> +I agree this is a great feature, but I haven't met a user who cares. +Thanks to the Mac, +Windows and Linux GUI's, users are used to the trash can model of +deleting things. +I think a user explicitly moving something from trash to wherever they +want is far +easier to understand than trying to remember where it was originally +deleted from. +But, of course, that's just my opinion. + +snow. +> Philip Guenther +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22866.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22866.mbox:2,S new file mode 100644 index 00000000..6d23258d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22866.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From softwaredeveloper99 at gmail.com Mon Jul 28 06:20:04 2008 +To: imap-protocol@u.washington.edu +From: softwaredeveloper +Date: Fri Jun 8 12:34:42 2018 +Subject: [Imap-protocol] imap client's +Message-ID: <6a51d2940807280620r42b3840eg4cb26f0a4496b09c@mail.gmail.com> + +This may have been discussed - however besides Outlook / Thunderbird can +anyone suggest a simple basic imap client for the Vista based systems + +thanks +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22880.mbox:2,S new file mode 100644 index 00000000..c51bf2b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22880.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From tss at iki.fi Wed Feb 20 10:32:43 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH and addresses +Message-ID: <1203532363.4901.178.camel@hurina> + +I'm adding support for verifying SEARCH correctness to my imaptest tool +and I'm wondering how I should verify FROM/TO/CC/BCC searches. Their +description in RFC 3501 clearly doesn't match what servers currently do: + + FROM + Messages that contain the specified string in the envelope + structure's FROM field. + +Envelope doesn't contain "user@domain" anywhere, but searching it works +fine with all servers and is used by clients (I assume). I did a few +tests with UW-IMAP: + +1) From: user@domain.org + +SEARCH FROM user@domain.org matches +SEARCH FROM doesn't match + +2) From: + +SEARCH FROM user@domain.org matches +SEARCH FROM doesn't match + +3) From: User Name + +SEARCH FROM "User Name " matches + +4) From: user@domain.org (User Name) + +SEARCH FROM "User Name " matches +SEARCH FROM "user@domain.org (User Name)" doesn't match + +I suppose not all servers have that exact same logic, so what would be +valid matching searches? I'd guess: + +1) user@domain +2) "User Name" +3) Group name + +And with comments removed from all of those in case they exist. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22883.mbox:2,S new file mode 100644 index 00000000..27242ed9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22883.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From janssen at parc.com Fri Jan 25 19:58:07 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.172524pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Jan25.195809pst."58696"@synergy1.parc.xerox.com> + +> Good luck! +> +> Proper understanding of how all this works requires carefully going +> through RFC 3501 section 6.2.2, and all of RFC 4422 and RFC 4616. + +From 6.2.2 of 3501: + + A server challenge consists of a + command continuation request response with the "+" token followed + by a BASE64 encoded string. The client response consists of a + single line consisting of a BASE64 encoded string. If the client + wishes to cancel an authentication exchange, it issues a line + consisting of a single "*". If the server receives such a + response, it MUST reject the AUTHENTICATE command by sending a + tagged BAD response. + +So I believe that a plain authentication challenge should look something +like this (for valid account with username "janssen", password "foo"): + +C: 4 authenticate plain\r\n +S: +\r\n +C: AGphbnNzZW4AZm9v\r\n +S: 4 OK authenticate\r\n + +D'accord? + +But what I see (from Thunderbird) is + +C: 4 authenticate plain\r\n +S: +\r\n +C: AGphbnNzZW4AZm9v + +so my server never knows when to stop waiting for the client to send +more data... + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22893.mbox:2,S new file mode 100644 index 00000000..5e2ebdb0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22893.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 13:59:00 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: [Alpine-alpha] Gmail + Alpine + IMAP keywords +In-Reply-To: +References: + + + +Message-ID: + +[Adding imap-protocol] + +On Mon, 29 Oct 2007, Benjamin R. Haskell wrote: +> As for flags, though, they seem to work fine via raw IMAP [see log below], +> but I think the FLAGS response: +> +> * FLAGS (\Answered \Flagged \Draft \Deleted \Seen \*) +> * OK [PERMANENTFLAGS (\Flagged \Draft \Deleted \Seen \*)] +> +> section of the SELECT response is broken. ("\*" shouldn't be in FLAGS, should +> it? + +Yes, that's definitely a bug. + +> Would that prevent Alpine from interpreting "\*" in PERMANENTFLAGS as a +> wildcard [since it's already been listed in FLAGS]) + +Fortunately, although \* is indeed invalid in FLAGS, Alpine ignores it +entirely. + +> Flags don't do anything via Gmail's interface, though. Gmail labels are +> indeed done via virtual folders. Creating "[Gmail]/TestFlagFolder" even made +> a bizarre "[Gmail]/TestFlagFolder" label. + +Yeah, I think that Gmail got themselves into a worse swamp by implementing +labels as mailboxes than if they had followed the straight and narrow and +used keywords. I'm still trying to convince them to change their minds; +and to make this viable, IMHO, the IMAP protocol community should +immediately agree that keywords can use Modified-UTF7 and push for UTF-8 +in keywords and flags. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22903.mbox:2,S new file mode 100644 index 00000000..9e224e28 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22903.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From shopik at inblock.ru Wed Jul 25 03:02:00 2007 +To: imap-protocol@u.washington.edu +From: Nikolay Shopik +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Drafts for IMAP server-side rule management +Message-ID: <46A71F98.8040605@inblock.ru> + +Hi everyone, + +I was searching if any standard or even draft exit for IMAP server-side +rule management extension from user client. Does anybody know about any +drafts already in works? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22911.mbox:2,S new file mode 100644 index 00000000..3f4270ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22911.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jun 13 13:03:10 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] BODYSTRUCTURE 'location' field +In-Reply-To: <46704AB4.8020803@andrew.cmu.edu> +References: <46704AB4.8020803@andrew.cmu.edu> +Message-ID: + +Thank you Ken. I have updated the RFC 3501 errata in + ftp://ftp.cac.washington.edu/mail/imap.rfcs/rfc3501-errata +and notified the RFC editor. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22914.mbox:2,S new file mode 100644 index 00000000..efda3164 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22914.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From ams at oryx.com Wed May 23 20:38:50 2007 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + +Message-ID: <20070524033850.GA31634@penne.toroid.org> + +At 2007-05-23 18:47:20 -0700, MRC@CAC.Washington.EDU wrote: +> +> Your server would be non-compliant with the IMAP specification. + +I wish the IMAP specification were clearer about what an "applicable" +flag is. Anyway, I'll try to speed up the current implementation, now +that I know it's doing what clients expect. + +> The c-client library loads a vector of flag names in stream metadata, +> and on a per-message basis keeps a bitmap (indexed the same way the +> vector is) instead of the names. + +And it adds to the vector if a FETCH response contains a flag that was +not announced in the FLAGS (because it was created after the current +session began, for example)? OK. + +> But you should avoid the temptation to consider whether it's alright +> to disregard something + +I was wondering only whether my interpretation was correct, not looking +for something to disregard. + +Thanks. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22917.mbox:2,S new file mode 100644 index 00000000..488c2475 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22917.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From janssen at parc.com Mon Apr 9 10:41:26 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +In-Reply-To: +References: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> + + <07Apr9.101403pdt."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Apr9.104129pdt."57996"@synergy1.parc.xerox.com> + +> On Mon, 9 Apr 2007, Bill Janssen wrote: +> >> I strongly urge you to focus on standards, and disregard +> >> non-standards. +> > Ah, but identifying what's really a standard is the hard part. :-) +> +> Actually, it is not difficult at all within the Internet context. + +Yeah, but... The (expired?) document at +http://tools.ietf.org/html/draft-ietf-imapext-sort-19 is attempting to +standardize two hacks that let possessors of a quantity of mail +organize it into threads that a human may recognize. While both of +these hacks are reasonable given the kinds of information usually +found in email headers in non-corporate environments, they are also +unreasonably fragile to the extent they are based on comparison of +"Subject" header strings, which are typically presented in an MUA in +an edit window for the responder to mung at will. + +However, in many email messages, there is additional machine-injected +information, not exposed to the whim of the human user, which may aid +in the determination of threads which actually make sense to the human +user. In particular, it may be possible to exploit this information +in order to correct for some of the fragility introduced by comparing +the "Subject" header. It doesn't seem out of the question for someone +to try to standardize a third or fourth or fifth hack based on this +information to add to the THREAD extension. Given that vast amounts +of corporate email may include these headers, might be worth looking +into. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22920.mbox:2,S new file mode 100644 index 00000000..65ea2160 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22920.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From RFC 3501: +To: imap-protocol@u.washington.edu + + The HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and TEXT part + specifiers can be the sole part specifier or can be prefixed by + one or more numeric part specifiers, provided that the numeric + part specifier refers to a part of type MESSAGE/RFC822. + +So, x.HEADER can be used only with message/rfc822 parts. The example +from RFC 3501: + + 4.2 MESSAGE/RFC822 + 4.2.HEADER ([RFC-2822] header of the message) + 4.2.TEXT ([RFC-2822] text body of the message) MULTIPART/MIXED + +Fetching 4.2.MIME could return something like: + +MIME-Version: 1.0 +Content-Type: message/rfc822 + +While 4.2.HEADER would fetch the actual message's headers. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22938.mbox:2,S new file mode 100644 index 00000000..36713e10 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22938.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Jan 24 18:25:11 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Microsoft Outlook IMAP non-compliance: negative UIDs +Message-ID: + +Microsoft Outlook sends a + tag UID FETCH n:* ...data items.... +command shortly after opening the mailbox. This is the typical idiom for +learning about messages that were delivered since the mailbox was last +opened, with n being the largest UID determined in the previous session +plus 1. + +There's a problem, though. Outlook sends n as a *signed* value. The IMAP +specification (RFC 3501) is very specific that UIDs are unsigned non-zero +32-bit values. + +Thus, Outlook ends up sending: + 5mwd UID FETCH -1065616957:* (UID FLAGS RFC822.SIZE BODY.PEEK[HEADER] INTERNALDATE) +when it really intended to send + 5mwd UID FETCH 3229350339:* (UID FLAGS RFC822.SIZE BODY.PEEK[HEADER] INTERNALDATE) + +Needless to say, the IMAP server objects to a negative number as a UID. + +This problem exists in "Microsoft Internet Messaging API 6.00.2900.3028 +(xpsp_sp2_gdr.061107-0012)", or at least that's what it calls itself in +the log. + +This sounds like a great way for a site administrator to ban use of +Outlook; just make the IMAP server assign UIDs starting at 0x80000000. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22957.mbox:2,S new file mode 100644 index 00000000..358eb484 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22957.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Dec 20 10:40:55 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: <1166603479.22214.298.camel@hurina> +References: <1166603479.22214.298.camel@hurina> +Message-ID: + +On Wed, 20 Dec 2006, Timo Sirainen wrote: +> RFC says: "In all search keys that use strings, a message matches the +> key if the string is a substring of the field." +> +> Strictly reading this, it means that the SEARCH command can't really be +> optimized with most of the normal search index algorithms/libraries, +> because they support only matching from the beginning of words. +> +> So, in case I wanted to use such indexes, what do you think I should do? + +Implement SEARCH according to the IMAP specification. If a library search +routine does not fufill the IMAP specification, then it is unsuitable for +use with IMAP SEARCH. + +If you are worried about performance, I suggest that you look into one of +the optimizing algorithms for fast search. UW and Cyrus use a Boyer-Moore +fast search which is quite a bit faster than the straightforward linear +search. + +> 1) Just use it for BODY and TEXT searches. Probably won't really break +> anything? I think some servers already do this. + +There are clients that depend upon substring searches. I also do +substring searches on a regular basis. Any server that does not do +substring searches is broken and non-compliant. + +I believe that you are a reasonable person, will accept this bad news with +grace, and will implement a compliant SEARCH in your server in spite of +the difficulty that it causes you. There needs to be at least one +compliant IMAP server that supports Maildir format (Courier is not +compliant). Please show that my belief is true. + +> 2) Add some X-NONEXACT-BODY search extension. Or use COMPARATOR somehow? + +The problem with one-server extensions is that nobody uses them. Feel +free to do so anyway, as long as you implement the standard SEARCH +correctly; but it will languish in obscurity. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22960.mbox:2,S new file mode 100644 index 00000000..6c33606d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22960.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Nov 15 13:38:16 2006 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] ESEARCH extension (RFC 4731) +In-Reply-To: +References: +Message-ID: <455B88C8.1020302@isode.com> + +Mark Crispin wrote: + +> How many client implementations of RFC 4731 are there currently? + +"1 is the new 0." +(Where 1 is Polymer, which implements every known IMAP extension in the +Universe ;-)) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22974.mbox:2,S new file mode 100644 index 00000000..d2fc6ead --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22974.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 12 13:27:14 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <450713AB.4090601@sun.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> +Message-ID: + +Hi Bill - + +I appreciate your feelings about 4.1.3 being worse than 4.1.2; but +empirical evidence over more than a decade shows that 4.1.3 actually +causes less problems for clients than 4.1.2. + +The problem with 4.1.2 is that most clients lack the slightest clue as to +what to do with a NO response to a FETCH. Some will loop, repeating the +FETCH. Others will crash. + +Clients generally don't handle 4.1.3 well either. But they don't loop or +crash. + +For what it's worth, one of the mail stores supported by UW imapd exhibits +4.1.3 behavior. That particular mail store has been deprecated for over a +decade. Almost all UW imapd sites use mail stores that do either 4.1.4 or +(in the case of modern mail stores) 4.1.1. + +However, rather than argue the point, let's agree to say that both 4.1.2 +and 4.1.3 are broken behaviors, and neither should be allowed. Since (in +my opinion, anyway) 4.1.2 and 4.1.3 are behaviors of old broken mail +stores, adding an EXPUNGED code won't help since old broken code isn't +going to get fixed. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22983.mbox:2,S new file mode 100644 index 00000000..375b6884 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22983.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Aug 3 10:59:35 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +In-Reply-To: +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + +Message-ID: + +Mark Crispin writes: +> Are you saying that your mail store does not have INBOX? /inbox is +> not equivalent to INBOX. + +Hm? + +On cyrus, user.arnt is equivalent to INBOX. On uw, /var/spool/mail/arnt +is equivalent to INBOX. The only thing I can see about /inbox that's +different from those two is that it contains 'inbox' as a level of +hierarchy, but is that forbidden? + +Artn + diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22987.mbox:2,S new file mode 100644 index 00000000..01b56274 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22987.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From johannes at sipsolutions.net Fri Jul 7 04:51:46 2006 +To: imap-protocol@u.washington.edu +From: Johannes Berg +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] multifolder notification +In-Reply-To: <1152175506.4995.51.camel@localhost> +References: <1152175506.4995.51.camel@localhost> +Message-ID: <1152273106.15068.44.camel@localhost> + +Hi, + +Alexey, for whatever stupid reason I forgot to CC you, if you aren't on +imap-protocol please see the original text here: +http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-July/000228.html + + +I notice that I didn't really ask any question just posted a few +statements. I realise that p-imap is probably going to refer to this +draft for the in-band notification it wants, but I think this should be +usable even without all of p-imap. + +I suggest to add something like I described (one of the options ranging +from low to high complexity) to this, and making p-imap refer only to +the part of this that clarifies the untagged responses. I'd be willing +to help with such a document once we can somehow get to a conclusion as +to what kind of complexity is wanted/needed. + +What are other people's opinions on this? Do you think this is useful? A +waste of time? Is a whole new strategy better? + +Thanks, +Johannes +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 845 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095119.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095119.22999.mbox:2,S new file mode 100644 index 00000000..8e9126fa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095119.22999.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From dave at cridland.net Wed Jun 21 04:05:48 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: [lemonade] Notifications for multiple devices + per user +In-Reply-To: +References: <0FA975F2D8295A448BE3ADC16124465754DC92@esebe199.NOE.Nokia.com> + <666.1150807794.041102@peirce.dave.cridland.net> + + +Message-ID: <1736.1150887949.021000@JOHN> + +On Wed Jun 21 07:14:38 2006, Lyndon Nerenberg wrote: +> Which leads me to conclude we desperately need a "Doh! Don't Do +> IMAP Trash This Way, And Here's Why" RFC. Written in little tiny +> syllables, with a lot of pictures. +> +> +Well, I basically agree, so whilst I've not done the pictures, I've +done my best to find and document the reasons why trash mailboxes are +a bad idea on IMAP. Strangely, while thinking about them, I found a +couple more (such as interaction with shared mailboxes, and reliance +on UIDPLUS for any reasonable efficiency). + +See +http://svn.dave.cridland.net/svn/ietf-drafts/draft-cridland-imap-trash.xml +for some XML2RFC source, or temporarily +http://dave.cridland.net/draft-cridland-imap-trash.txt + +I suggest that discussion of this, if anyone feels it's worthwhile, +should probably take place on the IMAP protocol list, rather than +here. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22756.mbox:2,S new file mode 100644 index 00000000..7b68fd1e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22756.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From tss at iki.fi Wed Nov 16 04:38:15 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <20111116065154.GA4452@brong.net> +References: <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <20111116052757.GB12266@brong.net> + + <20111116065154.GA4452@brong.net> +Message-ID: + +On 16.11.2011, at 8.51, Bron Gondwana wrote: + +> On Tue, Nov 15, 2011 at 10:10:32PM -0800, Mark Crispin wrote: +>> On Wed, 16 Nov 2011, Bron Gondwana wrote: +>>> The other problems with strict ascendency is that it requires a global lock +>>> for the duration of any append, over whatever scope you require the +>>> ascendency in. As you expand out from a single mailbox to the scope of an +>>> entire user, you expand the scope of that global lock. +>> +>> Not necessarily. If the GUID is expanded to a uint64 then there's no +>> reason why the GUID assignment can't be simply: +>> +>> guid = ++lastguid; +>> +>> You don't care if the GUID space is holey; and with a uint64 you don't +>> even care if you end up losing some. +> +> No, it's not that easy. You need every view before to not include it, +> and every view afterwards to include it. +> +>> There are even some systems where ++ is atomic (yes, even if multicore) +>> and you don't need the mutex. +> +> That's cheap - making sure you never return these out of order is not. +> +>> The real issue is MULTIAPPEND and its interaction with UIDPLUS. +>> Fortunately, you don't have to assign UIDs as messages are uploaded; you +>> can defer that until the uploads are completed. Since you now know how +>> many messages you are adding, you can claim an entire range of GUIDs via +>> +>> guid = lastguid += nappends; +>> +>> Then assign the already-claimed GUIDs at leisure while checking in the +>> append. +> +> Only by blocking all reads while this is happening. + +Sounds like you're talking about your specific implementation, since I can't really think of why any of the above would be a problem or why there would be any need of blocking. I've actually thought of a way to create zero-lock-waits IMAP-compliant mailbox format on POSIX filesystems that do atomic writes with O_APPEND (practically all apparently), so I'm sure any blockers can be worked around. diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22772.mbox:2,S new file mode 100644 index 00000000..3358c6e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22772.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From dkonigsberg at logicprobe.org Thu May 26 19:04:25 2011 +To: imap-protocol@u.washington.edu +From: Derek Konigsberg +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> + <4DDEDDD6.1040507@logicprobe.org> <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + +Message-ID: <4DDF06A9.2050608@logicprobe.org> + +On 05/26/2011 09:03 PM, Mark Crispin wrote: +> On Fri, 27 May 2011, Timo Sirainen wrote: +>> I've noticed there are many people who want web 2.0 kind of interface to +>> emails (xml/ajax/dunno) +> +> Only now? +> +>> And why +>> aren't they just using IMAP? Because they're scared of even trying to +>> use it. +> +> To those who only know Web 2.0, solutions that don't look like Web 2.0 are +> hostile and problematic. + +There's a saying I've seen somewhere that I love to mention in +discussions like this: +"Those who fail to understand network protocols are doomed to +reimplement them over port 80" + +> I think that it's the poor CS education that most students get these days: +> Java as a first programming language, with cookbook software development +> using large libraries and predefined templates. I've met graduates of CS +> programs who don't comprehend pointers and recursion! +I'm glad that I went to college before CS programs shifted to Java. +Sure, the majority of my post-college development work has been in Java +(or similar languages), but I think Java makes it too easy to gloss over +the fundamentals that you really do need to understand. + +> There's a middle ground between the Scylla of being so mathematical that +> real-world engineering is lost, and the Charybdis of making everything be +> the assembly of Lego blocks. +> +>> Hmm. IMAP over XML maybe?.. +> +> That wasn't an earthquake you just felt. That was me shuddering in +> horror. +I think the most painful part of implementing an E-Mail client is +dealing with all the legacy charsets and encodings, and the different +ways they're encoded in what is essentially 7-bit US-ASCII. If I could +make one change, I'd declare that all human-readable protocol text was +UTF-8 (and preferably that anything not intended to be human readable +was just raw bytes inside a literal block). + +It would also be nice if the IMAP grammar made more complete use of the +parenthesized list format used by the majority of it. + +To me, the biggest advantage of XML is that it allows for a standardized +parser/generator library that's maintained independently from the actual +data format. (Of course the disadvantages of XML itself are probably +obvious to everyone here.) + +-- +---------------------------- + Derek Konigsberg + dkonigsberg@logicprobe.org +---------------------------- + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22807.mbox:2,S new file mode 100644 index 00000000..e43fe33e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22807.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Fri Jun 11 16:56:01 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + +Message-ID: <493C7101-AC65-41BF-B222-E57A150BABB7@iki.fi> + +On 12.6.2010, at 0.27, Mark Crispin wrote: + +> On the other hand, I think that it would be better to have an explicit +> pipeline facility in IMAP: +> +> a PIPELINE 1:100 (b COPY $ elsewhere | c STORE $ +FLAGS \DELETED | EXPUNGE) +> +> a UID PIPELINE 1:100 (b UID COPY $ elsewhere | c UID EXPUNGE $) +> +> and deprecate the current way of pipelining. + +1) Why the messageset parameter? Seems unnecessary to me (along with UID PIPELINE command). + +Also it would be possible to avoid adding | to ATOM-SPECIALS by just using more parenthesis: + +a PIPELINE (b COPY 1:100 elsewhere) (c STORE $ +FLAGS \Deleted) (d EXPUNGE) + +> Note the $ to repeatedly apply the previous sequence set. + +This might conflict with SEARCHRES extension. Or maybe it could just "enhance" it. + +> Yet another neat thing is that this explicitly declares a pipeline, and we +> can get rid of all the ridiculous client rules for pipelining that are in +> IMAP now. + +That would be a good idea, yes. + +> The question is: how many people would actually implement such a facility +> if it were present? The normal objections to new capabilities applies as +> much to this idea. + +A simple IF-OK would be much easier for everyone to initially implement than PIPELINE, but maybe PIPELINE wouldn't be too difficult either.. diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22880.mbox:2,S new file mode 100644 index 00000000..362609f0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22880.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From MRC at Washington.EDU Wed Feb 20 10:50:00 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH and addresses +In-Reply-To: <1203532363.4901.178.camel@hurina> +References: <1203532363.4901.178.camel@hurina> +Message-ID: + +The only implementation that seemed to work well was one that +canonicalized the addresses into RFC 2822 normalized form, hence + user@domain + phrase + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22883.mbox:2,S new file mode 100644 index 00000000..a02cd5a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22883.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Jan 25 20:13:38 2008 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: <08Jan25.195809pst."58696"@synergy1.parc.xerox.com> +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.172524pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.195809pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Fri, 25 Jan 2008, Bill Janssen wrote: +... +> So I believe that a plain authentication challenge should look something +> like this (for valid account with username "janssen", password "foo"): +> +> C: 4 authenticate plain\r\n +> S: +\r\n +> C: AGphbnNzZW4AZm9v\r\n +> S: 4 OK authenticate\r\n +> +> D'accord? + +Nope. You didn't check the syntax for a command continuation request +response. On page 84 of RFC 3501 we find: + +continue-req = "+" SP (resp-text / base64) CRLF + +I.e., the space after the plus-sign is mandatory, even when the base64 is +empty. So make the first server line above: + S: + \r\n + +The rest of that looks correct to me. + +As a side-note, the server should consider including in the tagged OK +response to AUTHENTICATE a CAPABILITY response code that lists the +capaibilities that are useful after authentication. e.g., + + S: 4 OK [CAPABILITY IMAP4rev1 IDLE MULTIAPPEND X-MOTTO] Authentication succeeded\r\n + +(c.f. section 6.2.2p9 for details and when not bother) + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22893.mbox:2,S new file mode 100644 index 00000000..e8a78c38 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22893.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From guenther+imap at sendmail.com Mon Oct 29 14:18:25 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: [Alpine-alpha] Gmail + Alpine + IMAP keywords +In-Reply-To: +References: + + + + +Message-ID: + +On Mon, 29 Oct 2007, Mark Crispin wrote: +... +> Yeah, I think that Gmail got themselves into a worse swamp by implementing +> labels as mailboxes than if they had followed the straight and narrow and +> used keywords. I'm still trying to convince them to change their minds; and +> to make this viable, IMHO, the IMAP protocol community should immediately +> agree that keywords can use Modified-UTF7 and push for UTF-8 in keywords and +> flags. + +The characters in atom-specials can't be included directly in flag names +and they can't be encoded in modified-UTF-7, so simply saying "flag names +should be interpreted as being in modified-UTF-7" would not be sufficient +to let gmail represent all possible label names. + +("So I created a label of '\* \Drafts' and my IMAP client exploded...") + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22903.mbox:2,S new file mode 100644 index 00000000..f36ab316 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22903.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From dave at cridland.net Wed Jul 25 03:04:43 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Drafts for IMAP server-side rule management +In-Reply-To: <46A71F98.8040605@inblock.ru> +References: <46A71F98.8040605@inblock.ru> +Message-ID: <10915.1185357883.847263@peirce.dave.cridland.net> + +On Wed Jul 25 11:02:00 2007, Nikolay Shopik wrote: +> Hi everyone, +> +> I was searching if any standard or even draft exit for IMAP +> server-side rule management extension from user client. Does +> anybody know about any drafts already in works? + +It sounds like you mean SIEVE, which defines the syntax for mail +filtering, and ManageSIEVE, which defines a simple protocol for +managing scripts on the server. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22911.mbox:2,S new file mode 100644 index 00000000..914e02fa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22911.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Wed Jun 13 15:30:17 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] namespace ? +Message-ID: + +Hello, + +I would like to understand what is the point of namespace. +Since, for separator for the first level, it can be returned with +requesting LIST "" "%". +I don't understand how it should be shown in a user agent. +Why LIST would not be sufficient for that ? + +What I was planning to do for a user agent was to request NAMESPACE +and do a LIST on each namespace so that the user can choose which +mailbox of any NAMESPACE to subscribe. + +Since NAMESPACE won't give a description of what the namespace is, I +don't know how the user would choose a specific NAMESPACE to show for +the subscription. + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22914.mbox:2,S new file mode 100644 index 00000000..53158b57 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22914.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 23 21:22:16 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: <20070524033850.GA31634@penne.toroid.org> +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> +Message-ID: + +On Thu, 24 May 2007, Abhijit Menon-Sen wrote: +> I wish the IMAP specification were clearer about what an "applicable" +> flag is. Anyway, I'll try to speed up the current implementation, now +> that I know it's doing what clients expect. + +What is "applicable" is fundamentally implementation-dependent. It +includes at least the system flags defined in the base-specification. +It's said somewhat indirectly, but it also includes any keywords. But it +might include other things (see the formal syntax). + +> And it adds to the vector if a FETCH response contains a flag that was +> not announced in the FLAGS (because it was created after the current +> session began, for example)? OK. + +Before issuing that FETCH response, the server has to send a FLAGS +response with the new keyword. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22917.mbox:2,S new file mode 100644 index 00000000..089833df --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22917.mbox:2,S @@ -0,0 +1,85 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Apr 9 11:19:29 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +In-Reply-To: <07Apr9.104129pdt."57996"@synergy1.parc.xerox.com> +References: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> + + <07Apr9.101403pdt."57996"@synergy1.parc.xerox.com> + + <07Apr9.104129pdt."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 9 Apr 2007, Bill Janssen wrote: +> Yeah, but... The (expired?) document at +> http://tools.ietf.org/html/draft-ietf-imapext-sort-19 + +That document is NOT expired, HAS been approved for publication, and is +blocked for publication pending the IMAP internationalization document +which is in its final stages. + +> is attempting to +> standardize two hacks + +I take offense at that comment. + +> that let possessors of a quantity of mail +> organize it into threads that a human may recognize. While both of +> these hacks are reasonable given the kinds of information usually +> found in email headers in non-corporate environments, they are also +> unreasonably fragile to the extent they are based on comparison of +> "Subject" header strings, which are typically presented in an MUA in +> an edit window for the responder to mung at will. + +Within the IMAP context, only the sender of a message may alter the +Subject. They typically do this for a reason; a reason that is generally +not capricious, and with full knowledge of the impact of the change upon +the receipient's MUA. Subjects are used as primary mechanisms only by +those sorting and threading algorithms that are named to use Subject. + +The THREAD=REFERENCES mechanism uses Subjects only as a backup, to join +threads that are likely (albeit not certainly) to be related but had their +linkages broken. + +What you are suggesting is that this is to be abandoned in favor of some +arbitrary set of headers defined by Microsoft, but neither documented nor +submitted to the open standards community for consideration. + +I'll leave aside your comment about "non-corporate environments"; but +please take the time to research the history and traditions of the IETF +before making such comments in the future. + +> However, in many email messages, there is additional machine-injected +> information, not exposed to the whim of the human user, which may aid +> in the determination of threads which actually make sense to the human +> user. + +As the children say, "well, duh!" + +There is such a mechanism. It was defined in the days when Bill Gates was +an undergraduate at Harvard illicitly hacking on his BASIC interpreter on +their PDP-10. The THREAD=REFERENCES algorithm uses this mechanism. + +> In particular, it may be possible to exploit this information +> in order to correct for some of the fragility introduced by comparing +> the "Subject" header. It doesn't seem out of the question for someone +> to try to standardize a third or fourth or fifth hack based on this +> information to add to the THREAD extension. Given that vast amounts +> of corporate email may include these headers, might be worth looking +> into. + +Non-standard proprietary headers do not belong in standards documents. +If there is data in such headers that can not be found in the equivalent +standard headers, the fix for the problem is to induce the vendor to use +the standard headers. + +The fix is NOT to "reverse engineer" Microsoft's, or any other other +vendor's, undocumented proprietary headers. That is asking for trouble. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22920.mbox:2,S new file mode 100644 index 00000000..3498d2d0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22920.mbox:2,S @@ -0,0 +1,79 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Mar 11 13:58:23 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: <07Mar11.123637pst."57996"@synergy1.parc.xerox.com> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.123637pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 11 Mar 2007, Bill Janssen wrote: +> So how is BODY[x.MIME] different from BODY[x.HEADER]? + +BODY[HEADER] and BODY[x.HEADER] refers to an RFC [2]822 header. Thus, it +is only applicable to objects which are messages. BODY[x.MIME] are the +MIME-IMB headers. + +Consider this example message: +---------------------------------------------------------------------- +Date: Sun, 11 Mar 2007 13:47:36 -0700 (PDT) +From: Mark Crispin +To: "friends, Romans, and countrymen": ; +Subject: great truths +Message-ID: +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="0-862873250-1173646059=:20984" + + This message is in MIME format. The first part should be readable text, + while the remaining parts are likely unreadable without MIME-aware tools. + +--0-862873250-1173646059=:20984 +Content-Type: TEXT/PLAIN; CHARSET=US-ASCII + +More proof that TOPS-20 was a great improvement over its successors. + +--0-862873250-1173646059=:20984 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII + +Date: Sun, 11 Mar 2007 13:23:23 -0700 +From: Fred Foobar +To: Mark Crispin +Subject: my wish +Message-Id: <07Mar11.122327.198238@example.com> + +Gee, I wish that I could use TOPS-20 again! + +--0-862873250-1173646059=:20984-- +---------------------------------------------------------------------- + + BODY[2] is the text: +Date: Sun, 11 Mar 2007 13:23:23 -0700 +From: Fred Foobar +To: Mark Crispin +Message-Id: <07Mar11.122327.198238@example.com> + +Gee, I wish that I could use TOPS-20 again! + + BODY[2.MIME] is the text: +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII + + BODY[2.HEADER] is the text: +Date: Sun, 11 Mar 2007 13:23:23 -0700 +From: Fred Foobar +To: Mark Crispin +Subject: my wish +Message-Id: <07Mar11.122327.198238@example.com> + + BODY[2.TEXT] is the text: +Gee, I wish that I could use TOPS-20 again! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22938.mbox:2,S new file mode 100644 index 00000000..93f33012 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22938.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Thu Jan 25 02:06:04 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Microsoft Outlook IMAP non-compliance: + negative UIDs +In-Reply-To: +References: +Message-ID: <1169719564.13714.411.camel@hurina> + +On Wed, 2007-01-24 at 18:25 -0800, Mark Crispin wrote: +> This sounds like a great way for a site administrator to ban use of +> Outlook; just make the IMAP server assign UIDs starting at 0x80000000. + +Outlook isn't nearly the only client that has problems with it. Just a +couple of days ago I received a mail requesting that my server +automatically renumber all UIDs once they get over 31bit: + +> Some IMAP clients I've tested (Thunderbird 1.5.0.9, SquirrelMail +> 1.4.9a/PHP 4.3.2) appear to use signed 32 bit identifiers and request +> the above message as UID 2147483647 (max signed 32 bit integer). + +I'm sure there are a lot more. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22957.mbox:2,S new file mode 100644 index 00000000..38e5690b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22957.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From tss at iki.fi Wed Dec 20 11:34:18 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: +References: <1166603479.22214.298.camel@hurina> + +Message-ID: <1166643258.22214.350.camel@hurina> + +On Wed, 2006-12-20 at 10:40 -0800, Mark Crispin wrote: +> On Wed, 20 Dec 2006, Timo Sirainen wrote: +> > RFC says: "In all search keys that use strings, a message matches the +> > key if the string is a substring of the field." +> > +> > Strictly reading this, it means that the SEARCH command can't really be +> > optimized with most of the normal search index algorithms/libraries, +> > because they support only matching from the beginning of words. +> > +> > So, in case I wanted to use such indexes, what do you think I should do? +> +> Implement SEARCH according to the IMAP specification. If a library search +> routine does not fufill the IMAP specification, then it is unsuitable for +> use with IMAP SEARCH. + +That's what I was thinking, just wanted to make sure that I wouldn't +waste time on doing it in a more complex way than necessary. + +> If you are worried about performance, I suggest that you look into one of +> the optimizing algorithms for fast search. UW and Cyrus use a Boyer-Moore +> fast search which is quite a bit faster than the straightforward linear +> search. + +Optimizing the string search would help some, but for large mailboxes +it's still a bit too slow. People want instant search results +nowadays. :) + +> > 2) Add some X-NONEXACT-BODY search extension. Or use COMPARATOR somehow? +> +> The problem with one-server extensions is that nobody uses them. Feel +> free to do so anyway, as long as you implement the standard SEARCH +> correctly; but it will languish in obscurity. + +Perhaps. I think it depends on how badly mail admins want it. If it's +only a small s/BODY/X-NONEXACT-BODY/ replace for their webmail code, +it'll get usage at least within Dovecot community. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22960.mbox:2,S new file mode 100644 index 00000000..5c6f3c0e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22960.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From pruiter at ca.ibm.com Thu Nov 23 13:06:16 2006 +To: imap-protocol@u.washington.edu +From: Perry Ruiter +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +Message-ID: + + The subject section of the RFC states that if a server has an inactivity +autologout timer it can not be less than 30 minutes. I'd like to propose +that the 30 minute rule only apply to client connections that have entered +the authenticated state. Connections that have not authenticated could be +subject to a much shorter timeout value, perhaps 1 minute or less. +Thoughts/comments ... Perry + +Perry Ruiter +250-658-6517 +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22974.mbox:2,S new file mode 100644 index 00000000..e77481bf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22974.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From bill.shannon at sun.com Tue Sep 12 13:36:39 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + +Message-ID: <45071A57.5080406@sun.com> + +Mark Crispin wrote: +> Hi Bill - +> +> I appreciate your feelings about 4.1.3 being worse than 4.1.2; but +> empirical evidence over more than a decade shows that 4.1.3 actually +> causes less problems for clients than 4.1.2. + +Most clients are incredibly stupid. Most of my time spent supporting +JavaMail is spent finding bugs in servers that don't cause problems +for any other clients, which of course leads people to believe the +bug is in JavaMail. Most clients just treat IMAP as a glorified POP. + +4.1.3 is worst for clients that try to do the right thing. I guess +4.1.2 is worst for stupid clients, which sadly is the majority. + +I'd be happy to have both 4.1.2 and 4.1.3 declared as not allowed +behavior. + +What a shame there isn't a test suite to test conformance with the +IMAP spec... + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22983.mbox:2,S new file mode 100644 index 00000000..8023f10d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22983.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Aug 3 11:17:10 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +In-Reply-To: +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + + +Message-ID: + +On Thu, 3 Aug 2006, Arnt Gulbrandsen wrote: +> Mark Crispin writes: +>> Are you saying that your mail store does not have INBOX? /inbox is not +>> equivalent to INBOX. +> On cyrus, user.arnt is equivalent to INBOX. On uw, /var/spool/mail/arnt is +> equivalent to INBOX. + +No, they are not equivalent. These are names which may access the same +data in certain configurations of certain implementations, but they are +not INBOX. INBOX has a special meaning in IMAP. + +[Incidentally, /var/spool/mail/mrc does not access my INBOX on any +installation of UW imapd that I use.] + +> The only thing I can see about /inbox that's different +> from those two is that it contains 'inbox' as a level of hierarchy, but is +> that forbidden? + +/inbox is simply an ordinary name. It is not INBOX, even if it happens to +access the same data in a particular configuration on Richard's server. + +You also missed the point of my comment; I asked Richard if his mail store +did not have INBOX. I asked because he said that he felt that no untagged +LIST results should be returned for "tag LIST INBOX %", yet his hierarchy +had /inbox which suggested that there was, indeed, a mailbox that has the +role of INBOX in his server. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22987.mbox:2,S new file mode 100644 index 00000000..a9459de4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22987.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From rajdeep at noida.atrenta.com Mon Jul 10 08:01:12 2006 +To: imap-protocol@u.washington.edu +From: Rajdeep Sengupta +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] implementing IMAP 4 +Message-ID: <200607101452.k6AEqWHM016123@noida.atrenta.com> + +Hi Friends, + +I have a maill server in which I have implemented both POP3 and imap 2002 +server. I came to know that IMAP 4 version have the additional capability to +maintain the mails on the server in database format and the clients can get +offline view of mails, so that we can keep all mails on the server just like +MS Exchange native server. + +The present IMAP does not have all these capabilities, so that mail access +thru imap 2002 is slow as it does not maintain the mails in database or give +offline view. + + + +Can someone help me with the documents to install IMAP 4 with database +support and offline view in linux platform. + + + +Thanks in advance + + + +-Rajdeep + + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.22999.mbox:2,S new file mode 100644 index 00000000..24f02984 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.22999.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From dave at cridland.net Wed Jun 21 06:34:09 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: [lemonade] Notifications for multiple devices + per user +In-Reply-To: <3EFC3D2CFE5377EFDA5264A4@Cyrus-Daboo.local> +References: <0FA975F2D8295A448BE3ADC16124465754DC92@esebe199.NOE.Nokia.com> + <666.1150807794.041102@peirce.dave.cridland.net> + + + <1736.1150887949.021000@JOHN> + <3EFC3D2CFE5377EFDA5264A4@Cyrus-Daboo.local> +Message-ID: <666.1150896850.579833@peirce.dave.cridland.net> + +On Wed Jun 21 14:14:30 2006, Cyrus Daboo wrote: +> --On June 21, 2006 12:05:48 PM +0100 Dave Cridland +> wrote: +> +>> Well, I basically agree, so whilst I've not done the pictures, +>> I've done +>> my best to find and document the reasons why trash mailboxes are a +>> bad +>> idea on IMAP. +> +> I'm sorry but this is just wrong - if the Trash metaphor is what +> users are comfortable with then that's what the client should use. +> The protocol should not dictate how information is presented to the +> user and should be flexible enough (within limits) to provide ways +> for clients to do that. +> +> +But the protocol simply doesn't provide that, and without some quite +extraordinary server support, it won't. + +I'm sure it's possible, in principle, for a server to present a Trash +mailbox that is automatically populated with all messages marked with +the \Deleted flag in any mailbox the current user has access to, but +for the vast majority of implementations, I think that's impractical. + + +> Lets face it, the main reason clients do Trash with IMAP is that +> that's what POP clients typically did plus users are already +> familiar and comfortable with that UI metaphor because that is what +> most file system browsers also use. I doubt very much it was done +> just because that's what the developers wanted. + +Indeed, users are familiar with a trash container with a relatively +wide scope, and many client authors have provided such a container at +either client-wide or server-wide scope. + +The only mechanism I can see for providing that in client-side IMAP +would involve continuously searching all available mailboxes for +messages marked as \Deleted, and presenting the results as a locally +generated virtual mailbox, or else using a real mailbox as an +artificial trash mailbox, which has both interoperability and +(lesser) efficiency problems. + +The closest I can provide is a per-mailbox trash container, which is, +I agree, a considerably reduced scope by comparison to what's +typically implemented, and therefore expected, by the user. On the +plus side, such a mechanism is fully interoperable with any server or +client conforming to RFC3501 (Or, I think, even much older +specifications). + +You state in another message that what we should do in write a "best +common practises for implementing Trash properly with IMAP", and +that's one aim of what I've written - it may well be that there's a +much better method for providing a metaphor closer to the expectation +of the typical user, but I don't see it. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095120.23004.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095120.23004.mbox:2,S new file mode 100644 index 00000000..2361aa58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095120.23004.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Wed May 3 02:51:10 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] about folder differentiation +Message-ID: + +hi all, + +I would llike to know is there any way of differentiating Public and Private +folders? + +I found that when it comes to client it wont list up +the folders by same name, though it belongs to different category. For +example there is folder 'Test' under private as well as public folder. when +the client request the list and lsub response, server sends the list of +folders where there will be two entries of 'Test', but the client wont +display both it shows only one!!! + +Waiting for early response +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22756.mbox:2,S new file mode 100644 index 00000000..7bcd1994 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22756.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From brong at fastmail.fm Wed Nov 16 06:35:38 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <20111116052757.GB12266@brong.net> + + <20111116065154.GA4452@brong.net> + +Message-ID: <1321454138.23977.140660999695557@webmail.messagingengine.com> + + + +On Wednesday, November 16, 2011 2:38 PM, "Timo Sirainen" wrote: +> Sounds like you're talking about your specific implementation, since I can't really think of why any of the above would be a problem or why there would be any need of blocking. I've actually thought of a way to create zero-lock-waits IMAP-compliant mailbox format on POSIX filesystems that do atomic writes with O_APPEND (practically all apparently), so I'm sure any blockers can be worked around. + +Teah - allowing gappyness certainly offers some nice properties. + +But, I don't see how you can allow reads to see the messages until they are fully committed and indexed and "durable" for whatever level of guarantee you require. And because of that, I don't see how you can allow writes without ordering +enforcement of "this commit is guaranteed to complete". + +Consider: + +* session A starts a write, gets GUID 101 +* session B starts a write, gets GUID 102 +* session B completes the write and return GUID 102 to its caller. + +Suddenly session B is living in a world where 102 exists but 101 doesn't yet. + +So you can't allow session B to return until session A is committed, or if you +do - you can't allow it to READ anything (or any client which has a shared idea +of the mailbox state from session B for that matter) - or it will get an +inconsistent read. + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22772.mbox:2,S new file mode 100644 index 00000000..abfaad0a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22772.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From Pidgeot18 at verizon.net Thu May 26 19:49:36 2011 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDF06A9.2050608@logicprobe.org> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + + <4DDF06A9.2050608@logicprobe.org> +Message-ID: <4DDF1140.3030101@verizon.net> + +On 05/26/2011 10:04 PM, Derek Konigsberg wrote: +> I think the most painful part of implementing an E-Mail client is +> dealing with all the legacy charsets and encodings, and the different +> ways they're encoded in what is essentially 7-bit US-ASCII. If I +> could make one change, I'd declare that all human-readable protocol +> text was UTF-8 (and preferably that anything not intended to be human +> readable was just raw bytes inside a literal block). + +I have been told that there are some devices capable of reading email +that do not support UTF-8. Not as in "they can't display it correctly" +but as in "they can't decode it properly even when explicitly told this +text is UTF-8." I would much rather be able to go back and declare all +text to be UTF-8 and never have to worry about charsets ever again. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22807.mbox:2,S new file mode 100644 index 00000000..0a29e476 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22807.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 16:59:05 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120124.53714.witold.krecicki@firma.o2.pl> + +Message-ID: <201006120159.05366.witold.krecicki@firma.o2.pl> + +On Saturday 12 of June 2010 01:45:43 Philip Guenther wrote: +> On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +> > On Saturday 12 of June 2010 01:16:36 Philip Guenther wrote: +> > > Uh, what? It sounds like you're saying that you're going to build a +> > > system where MOVE is fast (so single message rename is fast) but then +> > > intentionally *not* take advantage of the design to use hardlinks to +> > > make COPY fast. Claiming that using hardlinks is "not a normal +> > > method" when it's been in use for better than a decade requires some +> > > justification. +> > +> > Even if used for over a decade it is STILL a performance hack. +> +> And hash tables have been a performance hack for 5 decades. +> +> Or do you have an *OBJECTIVE* criteria for what makes something a +> performance hack that the rest of us can use to understand why you refuse +> to use a supported feature of the data structures that we call a +> filesystem? +The fact that you have to do copy and delete to simply move an object in a +'filesystem' is dumb. +Quoting John Snow: + +Move is just easier to understand. I assume that's why Unix has +commands for both copy and move. You can cp a file to a new directory then +delete the original, or you could just mv it. mv may do the copy and delete +under the covers but, as a user, I don't really care how it happens. + +Is that objective enough? + +> > > > > IMAP has generally not added features whose sole purpose is to +> > > > > provide support for a particular type of store. Far more common +> > > > > is that a particular type of store has vetoed a proposed addition. +> > > > +> > > > MOVE creates advantage for any kind of single-labeled flat store. +> > > +> > > So you agree with Mark that it's only for a particular type of store +> > > that this helps. +> > +> > No, I'm showing that there is a store in which this helps. There may be +> > other types. +> +> That still sounds like you agree, even though you don't want to. "There +> may be others" could be said about *anything*. If there's an example +> that's significantly different than the "single-labelel flat store" for +> which MOVE is an advantage, cite it. +I assume that the fact that I assume that single-labeled flat store is the one +used for large IMAP deployments doesn't count? +John, I would really appreciate your help here. + +> > > > Most of the people here (I'm silently assuming that they are not all +> > > > newcomers) agreed that it is in fact a needed feature. +> +> ... +> +> > No, I'm simply assuming that those who are not willing to take part in +> > this discussion do not have an opinion. +> +> I'll just quote those two sentences of yours and say that they are in +> conflict. +No, this is just an assumption that 'people here' are 'people who take a part +in discussion'. I don't really care about dead souls. + + +> > Daves argument that the idea of 'trash can' is broken and people should +> > just delete their mails (or IMAP should create a 'trash can' model) it's +> > IMHO simply out of this world - people want to have a trash can and be +> > able to recover deleted e-mails. +> +> It's been discussed multiple times in the past (oh, why does no one +> actually read the archives?) how to implement the Trash Can UI on top of +> the IMAP \deleted+EXPUNGE model. And guess what, that can do something +> the "trash can is a mailbox" model can't: undelete restores the message to +> its original place in the mailbox. +And still there is no working implementation of this model. Wonder why... + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22880.mbox:2,S new file mode 100644 index 00000000..f6b0c83d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22880.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Thu Feb 21 11:43:43 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +Message-ID: <1203623023.4901.242.camel@hurina> + +SEARCH SUBJECT is defined to match to envelope's subject field. + +ENVELOPE's SUBJECT may not be an exact match to Subject: header itself. +RFC 3501 doesn't seem to give a clear definition how it should be +generated, so many servers at least compress LWSP to single spaces. + +SEARCH HEADER is defined to match to the header's value. + +So if we have a message: + +Subject: helloworld + +And the server returns ENVELOPE's subject field with the replaced +with a space ("hello world"). + +Now I think SEARCHes should work like: + +SEARCH SUBJECT "hello world" -> match +SEARCH SUBJECT "helloworld" -> non-match +SEARCH HEADER subject "hello world" -> non-match +SEARCH HEADER subject "helloworld" -> match + +Right? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22883.mbox:2,S new file mode 100644 index 00000000..98d9ea51 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22883.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From janssen at parc.com Fri Jan 25 21:18:48 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.172524pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.195809pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Jan25.211854pst."58696"@synergy1.parc.xerox.com> + +> Nope. You didn't check the syntax for a command continuation request +> response. On page 84 of RFC 3501 we find: +> +> continue-req = "+" SP (resp-text / base64) CRLF +> +> I.e., the space after the plus-sign is mandatory, even when the base64 is +> empty. So make the first server line above: +> S: + \r\n + +Ah, thanks! + +> As a side-note, the server should consider including in the tagged OK +> response to AUTHENTICATE a CAPABILITY response code that lists the +> capaibilities that are useful after authentication. e.g., +> +> S: 4 OK [CAPABILITY IMAP4rev1 IDLE MULTIAPPEND X-MOTTO] Authentication succeeded\r\n +> +> (c.f. section 6.2.2p9 for details and when not bother) + +OK, will do. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22893.mbox:2,S new file mode 100644 index 00000000..e2542295 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22893.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tjs at psaux.com Mon Oct 29 14:43:10 2007 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <1193689139.25921.618.camel@hurina> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> +Message-ID: <472653EE.9080102@psaux.com> + +Timo Sirainen wrote: +> Client-side capabilities come to my mind. Has something like this been +> discussed already? +> +> 1 ENABLE UTF-8 UNSOLICITED-RESPONSES-WITHOUT-IDLE ETC + +IMAP lore says this is what killed IMAP 3. + +I'm not opposed to client-side capabilities, as I think we need a way to +get rid of some of the cruft of the protocol eventually. But I do think +we ought to be able to specify a strict, increasing order for such +extensions. + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22903.mbox:2,S new file mode 100644 index 00000000..9217be9f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22903.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From pzbowen at gmail.com Fri Jul 27 18:30:04 2007 +To: imap-protocol@u.washington.edu +From: Peter Bowen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Parsing resp-text +Message-ID: + +I'm working on some IMAP client code, and hit the following portion of +ABNF grammer in RFC 3501: + +resp-text = ["[" resp-text-code "]" SP] text + +Should the following lines be considered protocol errors? + +* NO [UNSEEN] +* NO [TRYCREATE +* NO [FOO(BAR)] + +The resp-text rule says "[" must have a matching "]" and the +resp-text-code rule says UNSEEN must be followed by a nz-number and +the the first word after the [ must be an atom, so they would appear +to be errors. + +However, the first part of resp-text is optional, so should these just +be considered to have text ("[UNSEEN]", "[TRYCREATE", and "[FOO(BAR)]" +and no response code? + +Thanks. +Peter + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22911.mbox:2,S new file mode 100644 index 00000000..979cdb60 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22911.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jun 13 15:41:14 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] namespace ? +In-Reply-To: +References: +Message-ID: + +On Thu, 14 Jun 2007, DINH Vi?t Ho? wrote: +> I would like to understand what is the point of namespace. +> Since, for separator for the first level, it can be returned with +> requesting LIST "" "%". + +Not correct. + +Namespaces are independent hierarchies, and may even have a completely +different hierarchy delimiter. They are NOT top-level items in the +default hierarchy. + +For example, in UW imapd, the default namespace has a delimiter of "/" in +the default ("") hierarchy, but can also access newsgroups in the "#news." +hierarchy with the "." delimiter. + +> I don't understand how it should be shown in a user agent. +> Why LIST would not be sufficient for that ? + +LIST only lists within a single namespace. + +> What I was planning to do for a user agent was to request NAMESPACE +> and do a LIST on each namespace so that the user can choose which +> mailbox of any NAMESPACE to subscribe. + +Please don't. You should only list a namespace if the user specifically +asks to do so. Some namespaces may be huge. + +Just add the namespace to a menu, opened when the user requests it. + +> Since NAMESPACE won't give a description of what the namespace is, I +> don't know how the user would choose a specific NAMESPACE to show for +> the subscription. + +That's like writing a file browser that says "since the directory won't +give a description of what the directory is for, I should list all the +directories." + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22914.mbox:2,S new file mode 100644 index 00000000..4d18a369 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22914.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dkarp at zimbra.com Wed May 23 21:54:49 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +Message-ID: <1582938983.97731179982489618.JavaMail.root@dogfood.zimbra.com> + +> > And it adds to the vector if a FETCH response contains a flag that +> > was not announced in the FLAGS (because it was created after the +> > current session began, for example)? OK. +> +> Before issuing that FETCH response, the server has to send a FLAGS +> response with the new keyword. + +If this is the case, my implementation may not be doing the right thing. + +If PERMANENTFLAGS included "\*" and I do a "A001 STORE 1 +FLAGS (NEWFLAG)", is the server obliged to send back a new untagged FLAGS response before the unsolicited FETCH? + +If someone else does the STORE which added the NEWFLAG in my selected mailbox, is the server required to send me a new untagged FLAGS response? + +If the answer to either of these is "yes", can someone point me to the section of RFC 3501 that I should have read more closely? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22917.mbox:2,S new file mode 100644 index 00000000..8690d153 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22917.mbox:2,S @@ -0,0 +1,98 @@ +MBOX-Line: From janssen at parc.com Mon Apr 9 12:39:51 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +In-Reply-To: +References: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> + + <07Apr9.101403pdt."57996"@synergy1.parc.xerox.com> + + <07Apr9.104129pdt."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Apr9.123954pdt."57996"@synergy1.parc.xerox.com> + +> On Mon, 9 Apr 2007, Bill Janssen wrote: +> > Yeah, but... The (expired?) document at +> > http://tools.ietf.org/html/draft-ietf-imapext-sort-19 +> +> That document is NOT expired, HAS been approved for publication, and is +> blocked for publication pending the IMAP internationalization document +> which is in its final stages. + +Excellent, thanks. I found that hard to determine from the WG page. + +> > is attempting to standardize two hacks +> +> I take offense at that comment. + +I'm sorry to hear that, as I meant no offense. The two algorithms +described in the document are in fact effective ad-hoc ways of +grouping collections of email messages into threads, designed based on +observation of typical collections and knowledge of various email +clients, standards, and delivery mechanisms. Nothing wrong with that, +given that an email "thread" is not a particularly well-defined +concept (though most users think they know what it means). The very +names associated with the algorithms ("poor man's threading" and "used +in 'Netscape Mail and News' versions 2.0 through 3.0") seem (perhaps +only to me) to identify them as a particular class of algorithm. + +> Within the IMAP context, only the sender of a message may alter the +> Subject. They typically do this for a reason; a reason that is generally +> not capricious,... + +I think you must be working with a different set of users than I'm +working with. I find seemingly arbitrary and capricious changes to +the "Subject" header over and over again in my data sets. Usually +with a small edit distance from the original subject, but with odd +patterns -- usually capitalization or punctuation changes. That's why +I'm looking for a backup to the "Subject"-based backup. + +I guess I should also go back and review my code that calculates the +"base subject". Perhaps I've fat-fingered something. + +> ...and with full knowledge of the impact of the change upon +> the receipient's MUA. + +Hmmmm. I doubt that most users of email have an accurate model of the +effect of various changes on the recipient's MUA, particularly the +effect on something as loosey-goosey as message threading. I'd be +happy to be pointed to the results of user studies that show I'm +wrong, though. + +> The THREAD=REFERENCES mechanism uses Subjects only as a backup, to join +> threads that are likely (albeit not certainly) to be related but had their +> linkages broken. +> +> What you are suggesting is that this is to be abandoned in favor of some +> arbitrary set of headers defined by Microsoft, but neither documented nor +> submitted to the open standards community for consideration. + +I wasn't suggesting it be abandoned. I was suggesting that it be +augmented by introducing additional "backup" techniques that could +further, and perhaps more accurately, discover threads that have had +their linkages broken. + +> Non-standard proprietary headers do not belong in standards documents. + +I have a great deal of sympathy for this viewpoint (though I'm not +sure about the proprietary part; there seem to be various IANA +registries that keep track of proprietary mechanisms). + +> If there is data in such headers that can not be found in the equivalent +> standard headers, the fix for the problem is to induce the vendor to use +> the standard headers. + +I think that's a fine theoretical solution; I'm less sure anyone knows how +to "induce" this particular vendor to do that. + +> The fix is NOT to "reverse engineer" Microsoft's, or any other other +> vendor's, undocumented proprietary headers. That is asking for trouble. + +Sure, OK. I'm just trying to make my IMAP server provide threading +that users will perceive as being "as good" as that provided by the +Exchange server. I guess the right thing to do would be to figure out +the algorithm and submit it to the threading algorithms registry. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22920.mbox:2,S new file mode 100644 index 00000000..9675c015 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22920.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 14:37:45 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: <1173646260.17598.293.camel@hurina> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.123637pst."57996"@synergy1.parc.xerox.com> + <1173646260.17598.293.camel@hurina> +Message-ID: <07Mar11.133752pst."57996"@synergy1.parc.xerox.com> + +Thanks. So calling x.HEADER on a non-"message/rfc822" part should +raise an error. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22938.mbox:2,S new file mode 100644 index 00000000..b035ce38 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22938.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jan 30 17:52:20 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Correct BODY for this message? +Message-ID: <1161407087.33811170208340733.JavaMail.root@dogfood.zimbra.com> + +For the following accidentally-truncated message (also attached), what's the correct response to a " FETCH BODY"? + + Message-ID: <000b01c62655$065642f0$0aae3918@tyre> + From: "Thompson Rosemary" + To: foo@example.com + Subject: hey foo + Date: Tue, 31 Jan 2006 05:56:44 -0800 + MIME-Version: 1.0 + Content-Type: multipart/related; + type="multipart/alternative"; + boundary="----=_NextPart_000_0007_01C6262B.1D803AF0" + X-Priority: 3 + + ------=_NextPart_000_0007_01C6262B.1D803AF0 + Content-Type: multipart/alternative; + boundary="----=_NextPart_001_0008_01C6262B.1D803AF0" + + + ------=_NextPart_001_0008_01C6262B.1D803AF0 + Content-Type: text/plain; + charset="Windows-1252" + Content-Transfer-Encoding: quoted-printable +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: partial-multipart-5775 +Type: application/octet-stream +Size: 1999 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22957.mbox:2,S new file mode 100644 index 00000000..34f82a24 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22957.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Dec 20 11:43:57 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: +References: <1166603479.22214.298.camel@hurina> + +Message-ID: + +Mark Crispin writes: +> If you are worried about performance, I suggest that you look into one +> of the optimizing algorithms for fast search. UW and Cyrus use a +> Boyer-Moore fast search which is quite a bit faster than the +> straightforward linear search. + +Boyer-Moore is k*O(n) with an impressive k. People want k*O(log n) these +days, if possible with an impressive k. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22960.mbox:2,S new file mode 100644 index 00000000..1e24a6ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22960.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Nov 23 14:01:34 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: +References: +Message-ID: + +On Thu, 23 Nov 2006, Perry Ruiter wrote: +> The subject section of the RFC states that if a server has an inactivity +> autologout timer it can not be less than 30 minutes. I'd like to propose +> that the 30 minute rule only apply to client connections that have entered +> the authenticated state. Connections that have not authenticated could be +> subject to a much shorter timeout value, perhaps 1 minute or less. + +Section 5.4 was never intended to apply to non-authenticated sessions. + +I have made a note in the RFC 3501 errata to add "that applies to sessions +after authentication" before the comma. + ftp://ftp.cac.washington.edu/mail/imap.rfcs/rfc3501-errata + +This explicitly makes the specification be silent on the question of +autologout prior to authentication, and not imply that the 30-minute rule +applies to non-authenticated sessions. + +I believe that the specification should be silent on that point, as +otherwise it triggers security considerations. By being silent, it is +left up to implementation discretion, and possibly a future security rule +imposed by the IESG. + +For what it's worth, UW imapd has a 3 minute pre-authentication autologout +timer. There are actually two pre-authentication autologout timers: the +normal inactivity autologout timer, and an non-authenticated session age +time which is enforced at command completion. The latter is cancelled by +a successful authentication; a session could be over-age but still within +the 3 minute inactivity grace, but it must authenticate at that point. +The upshot is that a non-authenticated session will die between 3 and 6 +minutes from its startup. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22974.mbox:2,S new file mode 100644 index 00000000..9e7b5a1f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22974.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Sep 12 13:45:00 2006 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <45071A57.5080406@sun.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> +Message-ID: <20060912134217.X80085@orthanc.ca> + +> What a shame there isn't a test suite to test conformance with the +> IMAP spec... + +Conformance isn't the problem. Some of the worst behaviour imaginable is +exhibited by fully compliant clients and servers. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22983.mbox:2,S new file mode 100644 index 00000000..1f46c8d6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22983.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Aug 3 11:18:17 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +In-Reply-To: +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + + + +Message-ID: + +On Thu, 3 Aug 2006, Mark Crispin wrote: +> You also missed the point of my comment; I asked Richard if his mail store +> did not have INBOX. I asked because he said that he felt that no untagged +> LIST results should be returned for "tag LIST INBOX %", yet his hierarchy had +> /inbox which suggested that there was, indeed, a mailbox that has the role of +> INBOX in his server. + +That, in turn, means that his server should have INBOX, regardless of +whether there is this other name of /inbox that can access that data. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22987.mbox:2,S new file mode 100644 index 00000000..c38a1842 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22987.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From Mark.Whitmore.ctr at cisf.af.mil Fri Jul 21 07:35:46 2006 +To: imap-protocol@u.washington.edu +From: Whitmore Mark J Contr SMC/MCL +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LDAP authentication not working for IMAP +Message-ID: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> + +I'm running Solaris 9 - Sunone Directory Server 5.2 (SP4) - LDAP + + + +Users are defined with posix attributes enabled + + + +Hosts are defined in DNS and the local /etc/host file + + + +I'm trying to use the solaris dtmail, the linux thunderbird and Microsoft +outlook as clients to connect to + +A central solaris sendmail server via IMAP. + + + + + +I have the 2002 version of IMAP that came on the solaris CD's + + + + + +The only users that can authenticate through a mail client / IMAP are the +ones that have been locally + +Defined in the /etc/passwd file for testing. + + + + + +Does IMAP work with LDAP ???? + + + + + +Mark J. Whitmore + + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.22999.mbox:2,S new file mode 100644 index 00000000..34d4abd3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.22999.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Wed Jun 21 08:05:59 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: [lemonade] Notifications for multiple devices + per user +In-Reply-To: +References: <0FA975F2D8295A448BE3ADC16124465754DC92@esebe199.NOE.Nokia.com> + <666.1150807794.041102@peirce.dave.cridland.net> + + + <1736.1150887949.021000@JOHN> + <3EFC3D2CFE5377EFDA5264A4@Cyrus-Daboo.local> + <666.1150896850.579833@peirce.dave.cridland.net> + +Message-ID: <666.1150902364.794593@peirce.dave.cridland.net> + +On Wed Jun 21 14:42:53 2006, Cyrus Daboo wrote: +> Hi Dave, +> +> --On June 21, 2006 2:34:09 PM +0100 Dave Cridland +> wrote: +> +>> The only mechanism I can see for providing that in client-side +>> IMAP would +>> involve continuously searching all available mailboxes for messages +>> marked as \Deleted, and presenting the results as a locally +>> generated +>> virtual mailbox, or else using a real mailbox as an artificial +>> trash +>> mailbox, which has both interoperability and (lesser) efficiency +>> problems. +> +> But that is exactly what I am talking about as that's how clients +> have already implemented it and that's what all the complaints +> about interop have been about. I don't care about 'virtual' trash - +> just about making the copy-to-Trash work (which for the most part +> it does). + +I could suggest a method for finding the name of the mailbox to use, +I suppose, by using NAMESPACE, but that adds another extension. I +don't like relying on extensions to handle cases like deletion. Most +of the other problems are insoluble, and I'm not even sure that "for +the most part it does" is true, unless you only use clients that do a +compatible trash mailbox. + +Of course, there are especially poor ways to do trash mailboxes, and +I can add text to warn against them. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.23004.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.23004.mbox:2,S new file mode 100644 index 00000000..d672fcf0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.23004.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From mayuresh.patil at gmail.com Wed May 3 02:53:54 2006 +To: imap-protocol@u.washington.edu +From: MAYUR PATIL +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP implementation +Message-ID: <4f92b9010605030253w626ec6e5uf2a21869f7493a72@mail.gmail.com> + +Hi all. + + Any one know, where i will get IMAP source code for linux OS. + + +Thanks +Mayuresh +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095121.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095121.23014.mbox:2,S new file mode 100644 index 00000000..39040267 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095121.23014.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From dave at cridland.net Sat Apr 1 00:09:55 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: +References: <1143819932.8744.163.camel@localhost.localdomain> + + <1143843283.3985.18.camel@hurina> + + <1143847047.3985.42.camel@hurina> + +Message-ID: <14820.1143878996.313026@peirce.dave.cridland.net> + +On Sat Apr 1 00:30:03 2006, Mark Crispin wrote: +> On Sat, 1 Apr 2006, Timo Sirainen wrote: +>> I think two types of insertions would be enough: "insert as +>> sibling to +>> message n" and "insert as the first child to message n". +> +> You need to define the semantics when UID THREAD is used. Also, +> you need to define what happens if the new message has children +> (insertion as opposed to append). +> +> +I vaguely suspect that rather than single identifiers (sequence +numbers or UIDs), you want tree fragments. That handles both "gap +plugging", where a message arrives out of order (and I see a few of +those on some mailing lists, especially where there's a mixture of +replying direct to me and only replying to the list going on), and +actual "grafting", where two previously unrelated trees are joined. + +It also means you can unify most insertions down to a tree fragment +by the algorithm of finding the insertion point, and sending the tree +fragment starting at the parent, and ending at the first identified +descendent node. I'd imagine most server implementations would give +up and resend the whole tree in any complex cases. + + +>> I think that should be easy enough for the clients to handle? +> +> You'd be surprised at what people find to be "not easy". +> +> +True, but there's precious few clients which implement much more than +LITERAL+, CHILDREN, and perhaps one or two more. Better, these +messages are at least clear in their intent by a reasonable +application of common sense. ACL is fairly common, but I could only +find one client-side implementation of LISTRIGHTS. + + +>> Well, I'm still mostly just interested in optimizing this +>> internally in +>> my server so that the reply gets sent near instantly, but these are +>> somewhat related goals in that if I can figure out rules how to +>> quickly +>> update the thread list internally, I can easily send out +>> incremental +>> updates to clients as well. +> +> I don't understand. A thread should be nearly instantaneous, even +> for a very large mailbox, if you use a hash table. It's probably +> also a good idea to cache the data needed to thread so it's +> available the next time you thread. + +JWZ's description of speeds on now fairly ancient hardware would +suggest that. In any case, optimizing to the level Mark suggests +would be a clearly useful first step. + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22756.mbox:2,S new file mode 100644 index 00000000..8807880d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22756.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Wed Nov 16 06:43:45 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321454138.23977.140660999695557@webmail.messagingengine.com> +References: <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <20111116052757.GB12266@brong.net> + + <20111116065154.GA4452@brong.net> + + <1321454138.23977.140660999695557@webmail.messagingengine.com> +Message-ID: <1321454625.21919.548.camel@hurina> + +On Wed, 2011-11-16 at 15:35 +0100, Bron Gondwana wrote: +> +> On Wednesday, November 16, 2011 2:38 PM, "Timo Sirainen" wrote: +> > Sounds like you're talking about your specific implementation, since I can't really think of why any of the above would be a problem or why there would be any need of blocking. I've actually thought of a way to create zero-lock-waits IMAP-compliant mailbox format on POSIX filesystems that do atomic writes with O_APPEND (practically all apparently), so I'm sure any blockers can be worked around. +> +> Teah - allowing gappyness certainly offers some nice properties. + +There's no gappyness. + +> But, I don't see how you can allow reads to see the messages until they are fully committed and indexed and "durable" for whatever level of guarantee you require. And because of that, I don't see how you can allow writes without ordering +> enforcement of "this commit is guaranteed to complete". +> +> Consider: +> +> * session A starts a write, gets GUID 101 +> * session B starts a write, gets GUID 102 + +The messages don't get a (G)UID until they are complete and being +committed. + +> * session B completes the write and return GUID 102 to its caller. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22772.mbox:2,S new file mode 100644 index 00000000..3b85d21a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22772.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 26 21:11:43 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDF06A9.2050608@logicprobe.org> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + + <4DDF06A9.2050608@logicprobe.org> +Message-ID: + +On Thu, 26 May 2011, Derek Konigsberg wrote: +> "Those who fail to understand network protocols are doomed to +> reimplement them over port 80" + +Yeah, that's been the nightmare for the past decade or so. + +> I think Java makes it too easy to gloss over +> the fundamentals that you really do need to understand. + +My point exactly. + +Then there are individuals who believe that a kid fresh out of college +with nothing but Java is a superior Java programmer to an experienced +individual that spends a week reading the Java book. Thus, we have mobile +phones (are you paying attention, RIM?) that issue the message "Uncaught +Java language exception" prior to turning the phone into a pocket warmer. + +> I think the most painful part of implementing an E-Mail client is +> dealing with all the legacy charsets and encodings, and the different +> ways they're encoded in what is essentially 7-bit US-ASCII. If I could +> make one change, I'd declare that all human-readable protocol text was +> UTF-8 (and preferably that anything not intended to be human readable +> was just raw bytes inside a literal block). + +Indeed. The problem is that email predates UTF-8 - and for that matter +Unicode - by about two decades. Email had largely been cast in stone in +the mid 1970s; and that casting was complete by the early 1980s. + +The first non-ASCII email was Japanese; and they played ball with the +ASCII world by using ISO 2022 to shift between ASCII and JIS. ISO 8859-1 +(Latin 1) wasn't until 1987. + +I was one of a group of individuals who tried to prevent the charset +disaster in the early 1990s. We failed utterly. Our plan was to status +quo of ASCII, ISO 8859-1, and Japan's ISO 2022 encoding; and then move on +with ISO 10646 (Unicode) as the One True Character Set For The Internet. + +Certain individuals did not share that vision... + +> It would also be nice if the IMAP grammar made more complete use of the +> parenthesized list format used by the majority of it. + +Yes. There should be a single syntax rule for all commands and responses, +and fewer types: atom, number, string, and list. Atoms should be used +exclusively for protocol tokens (thus abolishing the astring/nstring mess) + +I would also reform IMAP's Hollerith strings (literals) to send the entire +command first (thus one complete line) and then the string payloads. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22807.mbox:2,S new file mode 100644 index 00000000..10192fd6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22807.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From guenther+imap at sendmail.com Fri Jun 11 17:15:51 2010 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C12CACB.7030205@aol.com> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + + <4C12CACB.7030205@aol.com> +Message-ID: + +On Fri, 11 Jun 2010, John Snow wrote: +... +> I've never understood how pipelining commands is useful. If I were +> writing a client, I would want to know the outcome of each command +> before issuing the next. + +The core bits of IMAP are that of a cache fill protocol. The client +decides it needs something and requests it, and then goes on and does +whatever else it wants while the server sends the requested data. Why do +you want to block for each command's status when there's useful things you +could be doing? Yes, there are protocol operations where you don't want +to continue until you know the result. So you wait for those. But for +the majority of IMAP operations there's no need and no benefit. Why do +you want to know the result of a FETCH command before you issue another +one? How would you react that you cannot just do after you send the next +FETCH? + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22880.mbox:2,S new file mode 100644 index 00000000..eb01f06a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22880.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From leiba at watson.ibm.com Thu Feb 21 12:37:06 2008 +To: imap-protocol@u.washington.edu +From: Barry Leiba +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +In-Reply-To: <1203623023.4901.242.camel@hurina> +References: <1203623023.4901.242.camel@hurina> +Message-ID: <47BDE0F2.4070704@watson.ibm.com> + +My opinion is that most searches are user-originated. A few, like flag +searches, are used in server processes (to discover all the unseen +messages, for instance, or to limit retrieval to a certain date +threshold), but most are user-originated. Because of that, the point is +more to do what's likely to make users happy, to give them what they +expect... than it is to exactly match some picky spec. + +Therefore, I'd say that any server that normalized white space in a text +search would be doing everyone a favour, whether or not it's +to-the-letter "compliant" to anything. The same for a search that +spanned "lines" (CRLF boundaries), treated email addresses +intelligently, or normalized parts of speech or conjugations (treating +"swim", "swims", and "swam" as the same word, say). + +None of that sort of thing is likely to have any interoperability +effect. It's just likely to help users find what they're looking for. + +Barry + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22883.mbox:2,S new file mode 100644 index 00000000..b09b55e6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22883.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From janssen at parc.com Fri Jan 25 23:10:50 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: <08Jan25.195809pst."58696"@synergy1.parc.xerox.com> +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.172524pst."58696"@synergy1.parc.xerox.com> + + <08Jan25.195809pst."58696"@synergy1.parc.xerox.com> +Message-ID: <08Jan25.231054pst."58696"@synergy1.parc.xerox.com> + +> But what I see (from Thunderbird) is +> +> C: 4 authenticate plain\r\n +> S: +\r\n +> C: AGphbnNzZW4AZm9v +> +> so my server never knows when to stop waiting for the client to send +> more data... + +Ah! Got it. T-bird was sending the right thing; my server framework was +eating the CRLF. Now the handshake looks like + +C: 4 authenticate plain\r\n +S: + \r\n +C: AGphbnNzZW4AZm9v\r\n +S: 4 OK [CAPABILITY IMAP4rev1 NAMESPACE UIDPLUS AUTH=PLAIN] AUTHENTICATE completed\r\n + +which I believe is correct. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22893.mbox:2,S new file mode 100644 index 00000000..ac947bfe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22893.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 14:47:16 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: [Alpine-alpha] Gmail + Alpine + IMAP keywords +In-Reply-To: +References: + + + + + +Message-ID: + +On Mon, 29 Oct 2007, Philip Guenther wrote: +> The characters in atom-specials can't be included directly in flag names and +> they can't be encoded in modified-UTF-7, so simply saying "flag names should +> be interpreted as being in modified-UTF-7" would not be sufficient to let +> gmail represent all possible label names. + +Since we are defining as-yet non-existant new semantics for keywords, we +can do with them as we please. + +The rules of MUTF7 are basically restrictions for MUTF7 in mailbox names +which are astrings. We could remove those restrictions for MUTF7 flags. + +Granted, this is a mess; but it's a message to not break old clients while +we move forward to UTF-8. + +IMHO, UTF-8 flags should probably be astrings. Since clients will have to +be updated anyway to use them, this wouldn't break anything. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22903.mbox:2,S new file mode 100644 index 00000000..1f91f48d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22903.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Jul 27 20:37:50 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Parsing resp-text +In-Reply-To: +References: +Message-ID: + +On Fri, 27 Jul 2007, Peter Bowen wrote: +> However, the first part of resp-text is optional, so should these just +> be considered to have text ("[UNSEEN]", "[TRYCREATE", and "[FOO(BAR)]" +> and no response code? + +Yes. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22911.mbox:2,S new file mode 100644 index 00000000..ccea33ac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22911.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Wed Jun 13 15:52:15 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] namespace ? +In-Reply-To: +References: + +Message-ID: + +On 6/14/07, Mark Crispin wrote: +> > What I was planning to do for a user agent was to request NAMESPACE +> > and do a LIST on each namespace so that the user can choose which +> > mailbox of any NAMESPACE to subscribe. +> +> Please don't. You should only list a namespace if the user specifically +> asks to do so. Some namespaces may be huge. +> +> Just add the namespace to a menu, opened when the user requests it. + +ok, that's mostly the same as what I described. + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22914.mbox:2,S new file mode 100644 index 00000000..a7906582 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22914.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From ams at oryx.com Wed May 23 22:24:07 2007 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + +Message-ID: <20070524052407.GA32366@penne.toroid.org> + +At 2007-05-23 21:22:16 -0700, mrc@CAC.Washington.EDU wrote: +> +> Before issuing that FETCH response, the server has to send a FLAGS +> response with the new keyword. + +Er, I'm sorry, but isn't that what you said would confuse clients in +response to my earlier message? Or am I missing something important? + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22917.mbox:2,S new file mode 100644 index 00000000..f2f1b2b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22917.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From johannes at sipsolutions.net Mon Apr 9 13:12:37 2007 +To: imap-protocol@u.washington.edu +From: Johannes Berg +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] thread computation algorithms and Exchange +In-Reply-To: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> +References: <07Apr9.093358pdt."57996"@synergy1.parc.xerox.com> +Message-ID: <1176149558.8459.40.camel@johannes.berg> + +On Mon, 2007-04-09 at 09:33 -0700, Bill Janssen wrote: + +> I'm looking at a collection of email mostly sent from Exchange +> servers, and notice that it by and large does not support the +> "References" or "In-Reply-To" headers, but does always contain headers +> called "Thread-Topic" and "Thread-Index". The "Thread-Index" field +> seems to contain a BASE64 string which contains the "Thread-Index" of +> its parent message as a prefix. +> +> Has anyone tried to understand or reverse-engineer this Exchange +> information to describe a thread computation algorithm that works +> better for messages with this information? + +Look at the evolution source code, it contains quite a bit of +information on this. + +johannes +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 197 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22920.mbox:2,S new file mode 100644 index 00000000..60491e09 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22920.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 14:45:00 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +Message-ID: <07Mar11.134508pst."57996"@synergy1.parc.xerox.com> + +It would be useful to have a pseudo-client that exercised an IMAP +server, to check for implementation errors, to do regression testing, +to stress-test. It would also be useful to have this client exercise +the typical patterns that various specific existing client +implementations use, to make sure all the combinations that a server +would normally experience are considered. + +Anyone have, or know of, such a beast? + +Thanks. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22938.mbox:2,S new file mode 100644 index 00000000..ba6fecf2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22938.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Jan 30 18:07:31 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Correct BODY for this message? +In-Reply-To: <1161407087.33811170208340733.JavaMail.root@dogfood.zimbra.com> +References: <1161407087.33811170208340733.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +There really is no "correct" answer since the message is truncated. +IMHO, the GIGO (Garbage In, Garbage Out) rule applies here. Given that +the MIME is invalid, what the IMAP server returns depends entirely upon +what amount of sense the IMAP server's MIME parser was able to make of the +message. + +Here is what UW imapd returns (assuming that is newline is appended at the +end of the last line; as you have it it ends in the middle of a line): + +* 1 FETCH (BODY ((("TEXT" "PLAIN" ("CHARSET" "Windows-1252") NIL NIL +"QUOTED-PRINTABLE" 0 0) "ALTERNATIVE") "RELATED")) + +That is, UW imapd recognized the two levels of MULTIPART, that the +TEXT/PLAIN part has no content; and it implicitly closed the levels. + +I would not criticize another server from reporting something different. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22957.mbox:2,S new file mode 100644 index 00000000..3f557db9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22957.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Wed Dec 20 11:49:18 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Command cancellation +Message-ID: <1166644158.22214.365.camel@hurina> + +Continuing with my newly implemented extensions: + +I wanted an ability to stop an ongoing SEARCH command, so that it'd be +possible to add a "Cancel search" button in the client. So I went and +finally implemented support for running multiple commands in parallel, +and added a new command: + +X-CANCEL + +If a running command is found with the given tag, X-CANCEL replies +immediately with OK and causes the running command to stop at the next +possible moment, possibly truncating its output. So for example a FETCH +command would stop after it has sent the current untagged FETCH reply, +and a SEARCH command might send a partial untagged SEARCH reply. The +cancelled command will then reply with "NO Command cancelled.". + +If a running command wasn't found with given tag, X-CANCEL replies with +NO. + +Comments? + +BTW. Has anyone implemented the parallel running of commands before? So +that two FETCH commands could send replies mixed together? I'm just +wondering if there are clients that are going to break. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22960.mbox:2,S new file mode 100644 index 00000000..223976bf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22960.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Nov 23 14:20:45 2006 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: +References: +Message-ID: <20061123140532.C1467@gollum.dev.gmi-mr.com> + +On Thu, 23 Nov 2006, Mark Crispin wrote: + +> For what it's worth, UW imapd has a 3 minute pre-authentication autologout +> timer. There are actually two pre-authentication autologout timers: the +> normal inactivity autologout timer, and an non-authenticated session age time +> which is enforced at command completion. The latter is cancelled by a +> successful authentication; a session could be over-age but still within the 3 +> minute inactivity grace, but it must authenticate at that point. The upshot +> is that a non-authenticated session will die between 3 and 6 minutes from its +> startup. + +This addresses a concern that immediately came to mind, that of someone +setting a 30 second timeout. Remember that the client can't prompt for a +password until it knows which authentication mechanism is to be used. So +we wind up with a scenario like: + +C: 0 authenticate digest-md5 +[client asynchronously prompts user for password] +S: + mumblefooetc ... +[user fumbles for scrap of paper with password, then slowly types it in, +backspacing and correcting along the way ...] +S: * BYE you type too slowly +[server closes connection] +[client terminates login attempt due to server error] + +I admit this is a bit contrived, but people will do stupid things in the +name of "security." And too often people assume best case behaviour of +the network (and software, for that matter). Instead of a slow typer, +imagine a BGP route flap, or just plain old router conjestion induced +packet loss that forces the TCP session into exponential backoff. Voila, +you cannot log in. + +So, if you do change the errata, please mandate a minimum 5 minute timer +in pre-authenticated state so that we can retain some robustness in the +protocol + + +--lyndon + + NT as a file server is faster than a dead bat carrying Post-It notes + underwater. But not by much. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22974.mbox:2,S new file mode 100644 index 00000000..8be5e445 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22974.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From bill.shannon at sun.com Tue Sep 12 13:46:06 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <20060912134217.X80085@orthanc.ca> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> +Message-ID: <45071C8E.4010909@sun.com> + +Lyndon Nerenberg wrote: +>> What a shame there isn't a test suite to test conformance with the +>> IMAP spec... +> +> +> Conformance isn't the problem. Some of the worst behaviour imaginable +> is exhibited by fully compliant clients and servers. + +It's the difference between "good" and "correct". I'd start with +"correct" and work up to "good". + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22983.mbox:2,S new file mode 100644 index 00000000..741e9067 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22983.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From richard at ftgate.com Thu Aug 3 21:53:05 2006 +To: imap-protocol@u.washington.edu +From: Richard Bang +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + +Message-ID: <08fa01c6b781$dfcc4c10$8710e0c3@ftgate.lan> + + +----- Original Message ----- +From: "Mark Crispin" +> Or are you saying that your mail store has INBOX, but does not respond +> with any data to the command +> tag LIST INBOX % +> If so, it should; that command matches INBOX. +> + +Thank you Mark. This is what I was missing in my reading of the spec. +In a query for LIST xxx % I was returning everything that matched xxxyyy but +not xxx itself. +My bad. + +Thanks for the clarification. + +..Richard.. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22987.mbox:2,S new file mode 100644 index 00000000..0de1ae89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22987.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Jul 21 10:14:57 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LDAP authentication not working for IMAP +In-Reply-To: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> +References: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> +Message-ID: + +On Fri, 21 Jul 2006, Whitmore Mark J Contr SMC/MCL wrote: +> Does IMAP work with LDAP ???? + +Just as a friendly reminder, the imap-protocol list is for discussions +about the IMAP protocol, not any particular IMAP software. Since your +question is about UW's IMAP server, the appropriate list for such +questions is the imap-uw list. + +The answer below applies to the UW IMAP server. Other IMAP servers may +behave differently, and you would need to contact the appropriate +lists/support for those servers if you are interested in learning their +behavior. + +You can use LDAP authentication via PAM. but all IMAP users must be +defined in the passwd file since they must be assigned UNIX user ids and +UNIX home directories. The only thing that comes from LDAP would be the +password. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.22999.mbox:2,S new file mode 100644 index 00000000..0c4143a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.22999.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From spatankar at starentnetworks.com Thu Jun 22 00:16:45 2006 +To: imap-protocol@u.washington.edu +From: "Patankar, Sujay" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] questions regarding number of replies to an + IMAPv4rev1 request. +Message-ID: + +Hi, +1: Since there can be multiple untagged replies to an IMAP request, and + I've seen in the field that sometimes there is no tagged response at + + all, how do I make sure that there will be no more replies to a + particular IMAP request? + e.g. I have seen a LIST request getting three untagged LIST +responses, + and no tagged response at all. +2: Is there only one tagged response to a request, or can there be more + than one? +3: When there are two or more requests in the pipeline, and I receive +an + untagged response, to which of the requests does it belong? + +Thanks, +Sujay. + + +"This email message and any attachments are confidential information of Starent Networks, Corp. The information transmitted may not be used to create or change any contractual obligations of Starent Networks, Corp. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this e-mail and its attachments by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify the sender immediately -- by replying to this message or by sending an email to postmaster@starentnetworks.com -- and destroy all copies of this message and any attachments without reading or disclosing their contents. Thank you." + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.23004.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.23004.mbox:2,S new file mode 100644 index 00000000..62730794 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.23004.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Wed May 3 03:50:05 2006 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP implementation +In-Reply-To: <4f92b9010605030253w626ec6e5uf2a21869f7493a72@mail.gmail.com> +References: <4f92b9010605030253w626ec6e5uf2a21869f7493a72@mail.gmail.com> +Message-ID: <6F44DE01-12C9-4465-AE18-3502A3394AB0@free.fr> + + +On 03 May 2006, at 11:53, MAYUR PATIL wrote: + +> Any one know, where i will get IMAP source code for linux OS. + +search : +UW-IMAP, libetpan, GNU Mail Utils or Javamail if you use java. + +-- +DINH Vi?t Ho? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095122.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095122.23014.mbox:2,S new file mode 100644 index 00000000..bbe439bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095122.23014.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Apr 1 00:50:05 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: <1143843283.3985.18.camel@hurina> +References: <1143819932.8744.163.camel@localhost.localdomain> + + <1143843283.3985.18.camel@hurina> +Message-ID: <3qTXSmifRKnU9Fm0eQf0og.md5@libertango.oryx.com> + +I wrote this sort of code six years ago, for an offline reader. I +remember mrc telling me it was difficult, and then when I did it it was +not much more than 400 lines of code. + +First, you need some threading code. The algorithm I used originally +came from trn, I think, although I pinched it from a friend of mine. + +Once you have your threading algorithm (maybe half of my code back +then), you've two options for persistence: + +1. Store everything. Use something like the THREAD=REFERENCES algorithm, +but leaving out steps 3 and 5, and make the main data structure +persistent. This is what I did in 2000. + +2. Just store thread membership, not position. This is simpler. Make +your persistent data structure store a thread ID (e.g. an integer) and +the messages it has seen belonging to that thread. It should be able to +find the thread ID for a message-id quickly, and find all messages for +a thread ID. Updating this structure at injection time is easy. At read +time, you have to determine the detailed relationships within the +thread. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22756.mbox:2,S new file mode 100644 index 00000000..722a8854 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22756.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From brong at fastmail.fm Wed Nov 16 06:49:06 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321454625.21919.548.camel@hurina> +References: <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <20111116052757.GB12266@brong.net> + + <20111116065154.GA4452@brong.net> + + <1321454138.23977.140660999695557@webmail.messagingengine.com> + <1321454625.21919.548.camel@hurina> +Message-ID: <1321454946.28208.140660999703561@webmail.messagingengine.com> + + + +On Wednesday, November 16, 2011 4:43 PM, "Timo Sirainen" wrote: +> On Wed, 2011-11-16 at 15:35 +0100, Bron Gondwana wrote: +> > +> > On Wednesday, November 16, 2011 2:38 PM, "Timo Sirainen" wrote: +> > > Sounds like you're talking about your specific implementation, since I can't really think of why any of the above would be a problem or why there would be any need of blocking. I've actually thought of a way to create zero-lock-waits IMAP-compliant mailbox format on POSIX filesystems that do atomic writes with O_APPEND (practically all apparently), so I'm sure any blockers can be worked around. +> > +> > Teah - allowing gappyness certainly offers some nice properties. +> +> There's no gappyness. + +That's not the model Mark was proposing, where you allocate a GUID under a mutex, but then the append can still abort for whatever reason. + +If you're not doing that, my lockyness concerns don't apply. + +> > But, I don't see how you can allow reads to see the messages until they are fully committed and indexed and "durable" for whatever level of guarantee you require. And because of that, I don't see how you can allow writes without ordering +> > enforcement of "this commit is guaranteed to complete". +> > +> > Consider: +> > +> > * session A starts a write, gets GUID 101 +> > * session B starts a write, gets GUID 102 +> +> The messages don't get a (G)UID until they are complete and being +> committed. + +Fair enough. You still need ordering guarantees of the commits themselves though. How are you allocating GUIDs locklessly? Are they based on the order in which your writes actually happened by reading back? + +Bron. +-- + Bron Gondwana + brong@fastmail.fm + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22772.mbox:2,S new file mode 100644 index 00000000..1ead42d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22772.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc+imap at panda.com Thu May 26 21:19:45 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <4DDF1140.3030101@verizon.net> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + + <4DDF06A9.2050608@logicprobe.org> <4DDF1140.3030101@verizon.net> +Message-ID: + +On Thu, 26 May 2011, Joshua Cranmer wrote: +> I have been told that there are some devices capable of reading email +> that do not support UTF-8. Not as in "they can't display it correctly" +> but as in "they can't decode it properly even when explicitly told this +> text is UTF-8." + +There is no excuse for a lack of UTF-8 support in any email device +produced after 1996, and especially after the publication of RFC 2130 in +1997. + +Sadly, there is no enforcement. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22807.mbox:2,S new file mode 100644 index 00000000..43dbdd49 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22807.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 17:21:12 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <493C7101-AC65-41BF-B222-E57A150BABB7@iki.fi> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + + <493C7101-AC65-41BF-B222-E57A150BABB7@iki.fi> +Message-ID: + +On Sat, 12 Jun 2010, Timo Sirainen wrote: +> 1) Why the messageset parameter? Seems unnecessary to me (along with UID +> PIPELINE command). + +Syntactic sugar. The idea was that the set would be defined by the +pipeline rather than through the first command. But yes, if you get rid +of that parameter then you don't need a separate UID PIPELINE. + +> Also it would be possible to avoid adding | to ATOM-SPECIALS by just +> using more parenthesis: +> a PIPELINE (b COPY 1:100 elsewhere) (c STORE $ +FLAGS \Deleted) (d EXPUNGE) + +Not tweaking ATOM-SPECIALS is a good idea. This is good sugar. + +>> Note the $ to repeatedly apply the previous sequence set. +> +> This might conflict with SEARCHRES extension. Or maybe it could just +> "enhance" it. + +I forget how SEARCHRES works (and I don't want to look it up), but it +might be nice to do something like + +tag PIPELINE (b UID SEARCH ...) (c UID COPY $ elsewhere) (d UID EXPUNGE $) + +>> The question is: how many people would actually implement such a facility +>> if it were present? The normal objections to new capabilities applies as +>> much to this idea. +> A simple IF-OK would be much easier for everyone to initially implement +> than PIPELINE, but maybe PIPELINE wouldn't be too difficult either.. + +Yup. The question is whether PIPELINE provides sufficient added value +over IF-OK; and of course whether IF-OK provides sufficient added value to +justify doing it. + +The main benefit to PIPELINE over IF-OK is that PIPELINE allows a compiler +on a server to recognize the pipelined operation, and in those few cases +where the server can do an internal move better it could compile it as +that operation. The significant difference is that, being a pipelined +operation, it isn't required to be atomic; and there is a well-understood +set of error cases. + +Unless MOVE is atomic (and a Maildir based one would not be), it creates +completely new error cases that are not covered within the IMAP framework. + +I'd probably abstain on both PIPELINE and IF-OK, although I might help +write the specification if it were to happen. MOVE on the other hand has +too many problems. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22880.mbox:2,S new file mode 100644 index 00000000..82ab9681 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22880.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From MRC at Washington.EDU Thu Feb 21 13:56:21 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +In-Reply-To: <47BDE0F2.4070704@watson.ibm.com> +References: <1203623023.4901.242.camel@hurina> + <47BDE0F2.4070704@watson.ibm.com> +Message-ID: + +I agree. I feel that a server is allowed to implement fuzzy string +searching, with case-independence being the only absolute requirement. + +More specifically, I never intended to forbid fuzzy matching, and +deliberately left it open-ended to allow implementations to experiment +with what worked best. [Google considered it good news when I told them +this was something in their server that I thought did NOT need fixing!] + +This means that SEARCH compliance testing can only test for false +negatives; that is, for failure to match cases that both a rigid and a +fuzzy server would catch. + +Clearly, if a message has + Subject: Helloworld +then + tag SEARCH SUBJECT "Helloworld" +and + tag SEARCH HEADER "SUBJECT" "Helloworld" +and + tag SEARCH SUBJECT "HELLOWORLD" +and + tag SEARCH HEADER "SUBJECT" "helloWoRlD" + +should all match, but it is server-dependent if + + tag SEARCH SUBJECT "Hello world" +and + tag SEARCH HEADER "SUBJECT" "Hello, world" +and + tag SEARCH SUBJECT "hi, planet!" +and + tag SEARCH HEADER "SUBJECT" "konnichi ha, seikai" +match. [The last two being extreme examples that I wouldn't expect to +work.] + +On Thu, 21 Feb 2008, Barry Leiba wrote: +> My opinion is that most searches are user-originated. A few, like flag +> searches, are used in server processes (to discover all the unseen messages, +> for instance, or to limit retrieval to a certain date threshold), but most +> are user-originated. Because of that, the point is more to do what's likely +> to make users happy, to give them what they expect... than it is to exactly +> match some picky spec. +> +> Therefore, I'd say that any server that normalized white space in a text +> search would be doing everyone a favour, whether or not it's to-the-letter +> "compliant" to anything. The same for a search that spanned "lines" (CRLF +> boundaries), treated email addresses intelligently, or normalized parts of +> speech or conjugations (treating "swim", "swims", and "swam" as the same +> word, say). +> +> None of that sort of thing is likely to have any interoperability effect. +> It's just likely to help users find what they're looking for. +> +> Barry +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22883.mbox:2,S new file mode 100644 index 00000000..0c0a68c7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22883.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dave at cridland.net Sun Jan 27 01:24:19 2008 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IMAP servers with no INBOX -- any indicators? +In-Reply-To: +References: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> + <978EF551-4028-4CC6-972F-2BF8451706B2@iki.fi> + +Message-ID: <19909.1201425859.710608@peirce.dave.cridland.net> + +On Fri Jan 25 23:44:50 2008, Mark Crispin wrote: +> On Fri, 25 Jan 2008, Timo Sirainen wrote: +>> I think a lot of clients assume that INBOX exists. Easiest to just +>> create a dummy zero-message read-only virtual INBOX. +> +> I agree with this advice. This very topic came up many years ago, +> and the general concensus at the time was that clients are not out +> of line by expecting an INBOX. The specification very strongly +> implies that clients may make that assumption. + +I agree with the advice, but I have to say I thought that the +consensus was to do this because of common client limitations, rather +than with any real blessing from the spec, nor because clients were +anything but out of line. + +The specification merely says that if a mailbox looks like INBOX, +then it is. (ie, if its path is case-insensitively equal to "INBOX", +then it must behave like INBOX). I don't think there's anything +stating that it must exist, nor any real implication, is there? + +That said, if we revved IMAP, I'd be in favour of making the +existence of INBOX a SHOULD, if not a MUST, on the grounds of running +code and interop. (Or at least not against). + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22893.mbox:2,S new file mode 100644 index 00000000..83b45658 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22893.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 15:05:37 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <472653EE.9080102@psaux.com> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> +Message-ID: + +On Mon, 29 Oct 2007, Tim Showalter wrote: +>> 1 ENABLE UTF-8 UNSOLICITED-RESPONSES-WITHOUT-IDLE ETC +> IMAP lore says this is what killed IMAP 3. + +There was quite a bit that killed IMAP3; a total misunderstanding the +unsolicited data model of IMAP, an incorrect understanding of how to +handle MIME, and some truly silly facilities like SET.EOL. + +Then there are such obtuse statements as "this allows the client not to +have to block on some complex predicate that involves watching to see an +update in a cache cell" which make no sense until you you realize that it +refers to one particular client written in Common Lisp. + +> I'm not opposed to client-side capabilities, as I think we need a way to get +> rid of some of the cruft of the protocol eventually. But I do think we ought +> to be able to specify a strict, increasing order for such extensions. + +I am of two minds here. + +I very much agree with getting rid of cruft. On the other hand, a strict, +increasing order of extensions opens a wide avenue for mischief in which a +desirable facility can not be added without first adding other cruft that +was slipped in the mandatory upgrade path. + +If I knew a way to steer between this Scylla and Charybdis, I would offer +it. + +Perhaps we should just punt doing the right thing to IMAP5, and add +UTF8.FLAGS as a FETCH command and UTF8.LIST/UTF8.LSUB as basic commands +(with perhaps something for LISTEXT if you like...but I don't want a +dependency on LISTEXT). + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22903.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22903.mbox:2,S new file mode 100644 index 00000000..5177395d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22903.mbox:2,S @@ -0,0 +1,117 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Jul 31 19:23:48 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: [Alpine-alpha] problem with "expunge" +In-Reply-To: +References: + + +Message-ID: + +Thank you for reporting this problem and sending me a debug log. I +apologize for the delay in replying, due to being on vacation. + +The underlying problem is with the Exchange server, which is not +implementing the IMAP protocol correctly. The code in Alpine, and the +c-client library called by Alpine, was insufficiently defensive against +invalid protocol from the server. + +I am bcc'ing this message to a colleague at Microsoft who used to work on +the IMAP code in Exchange and knows who needs to act on this problem. I +am also cc'ing the IMAP protocol mailing list, so that other IMAP software +developers are aware of the issue. + +From your log, early in the session, the Exchange server sent the +following: + +IMAP DEBUG 23:44:14.281: * 609 EXISTS + +which indicates that there are 609 messages in the mailbox. Later, when +you go to expunge the following happens: + + +IMAP DEBUG 23:44:35.265: 00000009 EXPUNGE +IMAP DEBUG 23:44:35.343: * 608 EXISTS +IMAP DEBUG 23:44:35.343: * 609 EXPUNGE +IMAP DEBUG 23:44:35.343: 00000009 OK EXPUNGE completed. + +This is a big whoops. The + * 608 EXISTS +from the server is invalid, as it shrinks the mailbox. Only an EXPUNGE +can do this. EXISTS can only be sent with a size that is greater than or +equal to the current size. Unfortunately, the c-client library innocently +accepted the shrunken value. + +Then, along comes the + * 609 EXPUNGE +which refers to a message that does not exist (since the EXISTS said that +there are only 608 messages). That's why you got the "Unknown message +data: 609 EXPUNGE"; that was defensive code added earlier to defend +against expunging non-existent messages. + +A correct scenario would be: + 00000009 EXPUNGE + * 609 EXPUNGE + * 608 EXISTS + 00000009 OK EXPUNGE completed. +Here, the EXPUNGE removes message 609, and the EXISTS simply confirms that +there are only 608 messages. An equally valid scenario would be: + 00000009 EXPUNGE + * 609 EXPUNGE + 00000009 OK EXPUNGE completed. + +Although the code in c-client protected against the bogus EXPUNGE, it +didn't protect against the bogus EXISTS. Other parts of Alpine still used +the 609 value (remember, the EXPUNGE got disregarded due to the EXISTS). +Thus Alpine and the c-client library disagreed about how many messages +there were, and presently this skew caused the crash (probably something +like "Bad msgno 609 in mail_elt"). + +The attached patch to alpine/imap/src/c-client/imap4r1.c should protect +against the bogus EXISTS. + +However, in order to fully solve the problem, this bug needs to be fixed +in Exchange pronto. It is a bad one, and is likely to foul other IMAP +clients. Hopefully, our friends in Redmond are listening and will get +someone to act on it soon. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. +-------------- next part -------------- +*** imap4r1.c 2007/06/05 21:39:37 1.23 +--- imap4r1.c 2007/08/01 02:01:13 +*************** +*** 967,972 **** +--- 967,973 ---- + ambx.type = ASTRING; + ambx.text = (void *) mb.mailbox; + args[0] = &ambx; args[1] = NIL; ++ stream->nmsgs = 0; + if (imap_OK (stream,reply = imap_send (stream,stream->rdonly ? + "EXAMINE": "SELECT",args))) { + strcat (tmp,mb.mailbox);/* mailbox name */ +*************** +*** 3684,3691 **** + t = strtok_r (NIL,"\n",&r); + /* now take the action */ + /* change in size of mailbox */ +! if (!strcmp (s,"EXISTS")) mail_exists (stream,msgno); +! else if (!strcmp (s,"RECENT")) mail_recent (stream,msgno); + else if (!strcmp (s,"EXPUNGE") && msgno && (msgno <= stream->nmsgs)) { + mailcache_t mc = (mailcache_t) mail_parameters (NIL,GET_CACHE,NIL); + MESSAGECACHE *elt = (MESSAGECACHE *) (*mc) (stream,msgno,CH_ELT); +--- 3685,3694 ---- + t = strtok_r (NIL,"\n",&r); + /* now take the action */ + /* change in size of mailbox */ +! if (!strcmp (s,"EXISTS") && (msgno >= stream->nmsgs)) +! mail_exists (stream,msgno); +! else if (!strcmp (s,"RECENT") && (msgno <= stream->nmsgs)) +! mail_recent (stream,msgno); + else if (!strcmp (s,"EXPUNGE") && msgno && (msgno <= stream->nmsgs)) { + mailcache_t mc = (mailcache_t) mail_parameters (NIL,GET_CACHE,NIL); + MESSAGECACHE *elt = (MESSAGECACHE *) (*mc) (stream,msgno,CH_ELT); diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22911.mbox:2,S new file mode 100644 index 00000000..f972a3ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22911.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Jun 13 16:07:34 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] namespace ? +In-Reply-To: +References: + + +Message-ID: + +On Thu, 14 Jun 2007, DINH Vi?t Ho? wrote: +>> Just add the namespace to a menu, opened when the user requests it. +> ok, that's mostly the same as what I described. + +OK, great! As a further refinement, you may want to split the namespaces +by the categories and have an option to turn off namespace support +entirely. + +Note that UW imapd shows the namespaces that the software supports, but +that doesn't necessarily mean that those namespaces are in use in a +particular installation. It's sort of like a listing of /dev on UNIX; +/dev/fd7 doesn't mean that there are 8 floppy drives! ;-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22914.mbox:2,S new file mode 100644 index 00000000..ff579f06 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22914.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Wed May 23 22:26:46 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + +Message-ID: <1179984406.32181.1730.camel@hurina> + +On Wed, 2007-05-23 at 21:22 -0700, Mark Crispin wrote: +> > And it adds to the vector if a FETCH response contains a flag that was +> > not announced in the FLAGS (because it was created after the current +> > session began, for example)? OK. +> +> Before issuing that FETCH response, the server has to send a FLAGS +> response with the new keyword. + +And I suppose it's OK for server to drop unused keywords from a FLAGS +reply and announce that to clients at any point? + +Is it a good idea to drop unused keywords whenever their last user +(message) went away? Or should I bother adding some kind of a "unused +for one month (or so)" timeout too? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22917.mbox:2,S new file mode 100644 index 00000000..a569edd7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22917.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From dkarp at zimbra.com Tue Apr 10 14:28:27 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] ACL: GETACL and "always granted" rights +Message-ID: <1766087308.133811176240507094.JavaMail.root@dogfood.liquidsys.com> + +If a user has rights that "will always be granted" on a mailbox (e.g. that show up in the first rights set in a LISTRIGHTS untagged response), is that user/rights pair to be listed in the GETACL response on that mailbox? + + The GETACL command returns the access control list for mailbox in an + untagged ACL response. + + The LISTRIGHTS response occurs as a result of a LISTRIGHTS command. + The first two strings are the mailbox name and identifier for which + this rights list applies. Following the identifier is a string + containing the (possibly empty) set of rights the identifier will + always be granted in the mailbox. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22920.mbox:2,S new file mode 100644 index 00000000..f79036b4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22920.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Mar 11 15:08:42 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +In-Reply-To: <"07Mar11. 134508pst. 57996"@synergy1.parc.xerox.com> +References: <"07Mar11. 134508pst. 57996"@synergy1.parc.xerox.com> +Message-ID: <5aK4EfZGxwhHX3617xc/FQ.md5@libertango.oryx.com> + +Bill Janssen writes: +> It would be useful to have a pseudo-client that exercised an IMAP +> server, to check for implementation errors, to do regression testing, +> to stress-test. It would also be useful to have this client exercise +> the typical patterns that various specific existing client +> implementations use, to make sure all the combinations that a server +> would normally experience are considered. +> +> Anyone have, or know of, such a beast? + +Every IMAP server author? But people generally don't publish it, perhaps +because it tests a specific server rather than IMAP generally and +extending it would be more work than it's worth. + +You might try mstone. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22938.mbox:2,S new file mode 100644 index 00000000..55e73d44 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22938.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jan 30 19:29:32 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] A few MAILBOX-REFERRALS and NAMESPACE questions +Message-ID: <1616193014.36111170214172038.JavaMail.root@dogfood.zimbra.com> + +I was hoping that some folks more knowledgeable than I about RFC 2193 (mailbox referrals) and RFC 2342 (namespaces) might be able to explain a few things to me. + +Let's assume that the server's response to the NAMESPACE command is + + * NAMESPACE (("" "/")) (("/user/" "/")) NIL + + +First quick question: Under IMAP4rev1, would the "\Noselect" mailbox name attribute be required on the untagged responses to RFC 2342's example 5.7 (all of which are on the local server)? + + C: A002 LIST "" "/user/%" + S: * LIST () "/" "/user/Mike" + S: * LIST () "/" "/user/Karen" + S: * LIST () "/" "/user/Matthew" + S: * LIST () "/" "/user/Tesa" + S: A002 OK LIST command completed + + +RFC 2193 states that + + Remote mailboxes and their inferiors, that are accessible only via + referrals SHOULD NOT appear in LIST and LSUB responses issued against + the user's home server. They MUST appear in RLIST and RLSUB + responses issued against the user's home server. + +For RLIST, must the server *validate* the existence of mailboxes belonging to remote accounts? In other words, if "Biff" is on a remote host and the client issues the command + + A003 RLIST "" "/user/Biff/nosuchfolder" + +may the server blindly return a corresponding untagged LIST response + + * LIST () "/" "/user/Biff/nosuchfolder" + +or does the server have to verify the existence of the "nosuchfolder" mailbox in Biff's namespace before returning such a LIST response? + + +Similarly, RFC 2193 states that + + Hierarchy referrals, + in which a client would be required to connect to the remote server + to issue a LIST to discover the inferiors of a mailbox are not + addressed in this document. + +Did a consensus develop as to what should be returned when a user issues + + A004 RLIST "" /user/Biff/INBOX/%" + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22957.mbox:2,S new file mode 100644 index 00000000..c61f414f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22957.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Dec 20 11:59:19 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Command cancellation +In-Reply-To: <1166644158.22214.365.camel@hurina> +References: <1166644158.22214.365.camel@hurina> +Message-ID: <0kbiJ9w45mLNxYjlJRoZdQ.md5@libertango.oryx.com> + +Timo Sirainen writes: +> X-CANCEL +> ... +> Comments? + +None now - I'm really in pack-and-leave mode. + +> BTW. Has anyone implemented the parallel running of commands before? +> So that two FETCH commands could send replies mixed together? + +Yes. + +> I'm just wondering if there are clients that are going to break. + +Some mutt breakage was the worst I've seen, and the mutt developers +fixed it quickly when I reported it. There's breakage in 1.5.x, where x +is 12 and a little smaller. Generally the clients that send multiple +commands handle the responses. + +STORE+STORE and STATUS+STATUS are common. I posted a longer list a month +or two ago. Can't remember more now. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22960.mbox:2,S new file mode 100644 index 00000000..030e7a0d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22960.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Nov 23 16:48:16 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: <20061123140532.C1467@gollum.dev.gmi-mr.com> +References: + <20061123140532.C1467@gollum.dev.gmi-mr.com> +Message-ID: + +On Thu, 23 Nov 2006, Lyndon Nerenberg wrote: +> So, if you do change the errata, please mandate a minimum 5 minute timer +> in pre-authenticated state so that we can retain some robustness in the +> protocol + +Sadly, just about every attempt to legislate against stupidity in protocol +specifications have been miserable failures... :-( + +Isn't 5 minutes excessive? Nobody has ever complained about UW imapd's 3 +minute timer. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22974.mbox:2,S new file mode 100644 index 00000000..33b663c3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22974.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Sep 12 13:55:57 2006 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <45071C8E.4010909@sun.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> +Message-ID: <20060912134901.F80085@orthanc.ca> + +> It's the difference between "good" and "correct". I'd start with +> "correct" and work up to "good". + +I'd start with defining "good." The problem with a protocol as complex +(some would say bloated) as IMAP is that -- from the client's perspective +-- there is no one "right" way to use it. Different client +implementations have different goals, and thus different demands of the +server. In some cases it makes sense for the client to (say) talk to the +server using a restricted feature set that, when examined without context, +makes it look like the client is just a glorified POP engine. + +And if you do ever manage to define "good" you then get to solve the +problem of determining what constitutes "compliant" behaviour when faced +with the n! permutations of extensions interacting with and without each +other. + +This isn't going to happen in my lifetime. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22983.mbox:2,S new file mode 100644 index 00000000..3dfc9a5b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22983.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Aug 4 00:35:20 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +In-Reply-To: +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + +Message-ID: + +Mark Crispin writes: +> Are you saying that your mail store does not have INBOX? /inbox is +> not equivalent to INBOX. +> +> Or are you saying that your mail store has INBOX, but does not respond +> with any data to the command +> tag LIST INBOX % +> If so, it should; that command matches INBOX. + +RFC 3501, page 41, says this on the subject: + + If the reference argument is not a level of mailbox + hierarchy (that is, it is a \NoInferiors name), and/or + the reference argument does not end with the hierarchy + delimiter, it is implementation-dependent how this is + interpreted. For example, a reference of "foo/bar" and + mailbox name of "rag/baz" could be interpreted as + "foo/bar/rag/baz", "foo/barrag/baz", or "foo/rag/baz". + +Pine's reference name does not end with a hierarchy separator and +Richard's server's empty response fits two of the three explicitly +sanctioned possibilities. Sounds OK to me. + +As for pine, it is a client and page 41 continues: + + A client SHOULD NOT use such a reference argument except + at the explicit request of the user. + +(I'll reply to your other email later.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22987.mbox:2,S new file mode 100644 index 00000000..8631194d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22987.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From jkt at gentoo.org Fri Jul 21 10:20:24 2006 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LDAP authentication not working for IMAP +In-Reply-To: +References: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> + +Message-ID: <44C10CD8.8030602@gentoo.org> + +Mark Crispin wrote: +> You can use LDAP authentication via PAM. but all IMAP users must be +> defined in the passwd file since they must be assigned UNIX user ids and +> UNIX home directories. The only thing that comes from LDAP would be the +> password. + +Nope. Please see the nss_ldap [1] package for uids; homes are usually +defined via pam_ldap. + +[1] http://www.padl.com/OSS/nss_ldap.html + +Cheers, +-jkt + +-- +cd /local/pub && more beer > /dev/mouth + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 260 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.22999.mbox:2,S new file mode 100644 index 00000000..6d87ce91 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.22999.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From ams at oryx.com Thu Jun 22 00:53:22 2006 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: questions regarding number of replies to an + IMAPv4rev1 request. +In-Reply-To: +References: +Message-ID: <20060622075322.GB19797@penne.toroid.org> + +At 2006-06-22 12:46:45 +0530, spatankar@starentnetworks.com wrote: +> +> I have seen a LIST request getting three untagged LIST responses, and +> no tagged response at all. + +That's just plain broken. Which server is generating that? + +> 2: Is there only one tagged response to a request, or can there be +> more than one? + +Every command must have exactly one tagged response, and it tells you +that processing of the command has completed. + +> 3: When there are two or more requests in the pipeline, and I receive +> an untagged response, to which of the requests does it belong? + +In general, you can't tell. (Why do you need to?) + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.23004.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.23004.mbox:2,S new file mode 100644 index 00000000..43548331 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.23004.mbox:2,S @@ -0,0 +1,106 @@ +MBOX-Line: From tss at iki.fi Wed May 10 01:39:50 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] SEARCH +In-Reply-To: +References: <1145029156.10727.81.camel@hurina> + +Message-ID: <1147250390.17524.39.camel@localhost.localdomain> + +Sorry for a late reply, I just seem to get more and more lagged nowadays +with replying to emails.. + +On Fri, 2006-04-14 at 11:30 -0700, Mark Crispin wrote: +> > If the search key is invalid for the given character set, should server +> > return BAD error to client? Are non-ASCII characters in search key +> > invalid for US-ASCII charset? +> +> I'm not certain what you mean by "invalid". +> +> Do you mean "contain a codepoint that is not in that charset"? If so, I +> think a failed match is better than a BAD, since it may be that the server +> has an obsolete version of that charset's definition. + +I think most character sets don't change anymore (ASCII and ISO-8859-* +especially), but I guess it's nicer for clients to not get BAD replies. + +> > What about if search key contains non-ASCII characters but no charset +> > parameter is given? Currently I assume this means just doing a substring +> > search from messages without doing any charset conversions (i;octet +> > comparator). +> +> It can mean whatever you want, although perhaps a failed match is best. +> Or maybe a BAD in this case, because the specification does denounce use +> of 8-bit strings without a charset identification in section 4.3.1 + +I understood that section to only mean message bodies sent as reply to +FETCH. + +> > More interesting are MIME footer and trailer sections. Should they be +> > searched? UW-IMAP skips them. +> +> I consider these not to be part of a message at all for any MIME-savvy +> application. + +OK, this is mostly what I was concerned about. The RFC doesn't say +anything about if they should or shouldn't be searched. + +> > What about MIME boundary lines? UW-IMAP +> > searches these, but not if you include its "--" prefix in search key. +> +> Are you certain that you aren't confusing BODY and TEXT searches? A TEXT +> search would find them, because they appear in the MIME header. + +Right, sorry, that must be it. + +> > Is "Header: value" searching required to work? I think it is, and works +> > with UW-IMAP. +> +> What do you mean by this? If you're talking about a TEXT search, then it +> may or may not work depending upon the octets in a message. You should be +> using a "HEADER Header: value" search instead. + +Yes, I mean TEXT search. I know HEADER is the correct way, but since I +was going to fix my SEARCH code, I thought I'd make it work correctly in +all cases (if there were correct ways for cases like this). + +> > Is "line\r\nline2" (as literal of course with real CR+LF) +> > searching required to work in message body? Again, I think so and works +> > with UW-IMAP. +> +> Yes, it should in a TEXT search. But see below. +> +> > But then is "Header: value\r\nHeader2: value2" searching +> > required to work? I don't see why not, but this doesn't work anymore +> > with UW-IMAP. +> +> Once again, I'd like to understand what you mean by this. +> +> If you're talking about a TEXT search, I don't see why it shouldn't work, +> although it might be that you have a mailbox format that uses UNIX-style +> newlines and the data was not CRLF-converted. + +Yes, TEXT search. If it's supposed (required) to work, then I think it +shouldn't matter if the data is in LF or CRLF format in the mailbox, +because client always sees the mails CRLF-terminated. + +> I don't think that it is useful for a client to have newlines in a search +> key. Some servers try to do fuzzy matching, so for example if you search +> for "Joe's trip to Paris" there will be a match even if it was broken by a +> newline. + +And do you think this is still allowed by RFC? + +I was thinking about allowing some text search engines to be used with +my server, but I thought about creating some new extension for it, since +I thought using them with SEARCH would break the RFC (because eg. they +couldn't find "imo" from "timo" string and in general the matches +wouldn't be exact). +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.23014.mbox:2,S new file mode 100644 index 00000000..2bdd6cab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.23014.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Apr 1 00:52:32 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: <1143847047.3985.42.camel@hurina> +References: <1143819932.8744.163.camel@localhost.localdomain> + + <1143843283.3985.18.camel@hurina> + + <1143847047.3985.42.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> With my 787 message INBOX it found one non-insertion and with a 2000 +> mail mailing list it found 3 non-insertions. + +Let me guess: Mailing list threads where some thread participants are +cc'd, and mail servers delivering several messages in a thread +practically at the same time when a network connection comes up after +downtime. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095123.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095123.23031.mbox:2,S new file mode 100644 index 00000000..ecd27e03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095123.23031.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From frantz at info.univ-angers.fr Wed Mar 15 01:29:00 2006 +To: imap-protocol@u.washington.edu +From: Frantz de Germain +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem with imaps +Message-ID: <20060315102900.d419b50d.frantz@info.univ-angers.fr> + +I've installed uw-imap on a linux server which worked well for several months +with imaps protocol. But since a few days, it doesn't work any more with +imaps (only with imap) and I don't remember having changed anything... + +If I do : + +telnet imaphost 993 +Trying 172.xxx.xxx.xxx... +Connected to imaphost.mydomain (172.xxx.xxx.xxx). +Escape character is '^]'. + +It does nothing more. + +In maillog, there is : + +06/3/15@10:14:37: START: imaps pid=10270 from=172.xxx.xxx.xxx + + +Here is my /etc/xinetd.d/servers : + +service imap +{ + socket_type = stream + wait = no + user = root + disable = no + server = /usr/local/imap-2004g/imapd/imapd + log_type = FILE /var/log/imapd.log + log_on_success = PID HOST + log_on_failure = HOST +} +service imaps +{ + socket_type = stream + wait = no + user = root + disable = no + server = /usr/local/imap-2004g/imapd/imapd + log_type = FILE /var/log/simapd.log + log_on_success = PID HOST + log_on_failure = HOST +} + +Any idea ? how can I debug the problem ? + +Regards + +-- +Frantz de Germain +Web : http://www.info.univ-angers.fr/pub/frantz +Membre de la Soci?t? d'Astronomie de Nantes : http://www.san-fr.com/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22756.mbox:2,S new file mode 100644 index 00000000..7808bc2d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22756.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From tss at iki.fi Wed Nov 16 06:57:33 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <1321454946.28208.140660999703561@webmail.messagingengine.com> +References: <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <20111116052757.GB12266@brong.net> + + <20111116065154.GA4452@brong.net> + + <1321454138.23977.140660999695557@webmail.messagingengine.com> + <1321454625.21919.548.camel@hurina> + <1321454946.28208.140660999703561@webmail.messagingengine.com> +Message-ID: <1321455456.21919.552.camel@hurina> + +On Wed, 2011-11-16 at 15:49 +0100, Bron Gondwana wrote: + +> > > But, I don't see how you can allow reads to see the messages until they are fully committed and indexed and "durable" for whatever level of guarantee you require. And because of that, I don't see how you can allow writes without ordering +> > > enforcement of "this commit is guaranteed to complete". +> > > +> > > Consider: +> > > +> > > * session A starts a write, gets GUID 101 +> > > * session B starts a write, gets GUID 102 +> > +> > The messages don't get a (G)UID until they are complete and being +> > committed. +> +> Fair enough. You still need ordering guarantees of the commits themselves though. How are you allocating GUIDs locklessly? Are they based on the order in which your writes actually happened by reading back? + +Well, depends on what we're talking about now :) To me GUIDs are 128 bit +identifiers that have no ordering and can easily be generated +locklessly. I don't see much point in having smaller ascending GUID +numbers. + +For the 32 bit IMAP UIDs yes, the idea was to simply append records to a +transaction log and read them back to see how they got ordered, which +gives the messages their UIDs. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22772.mbox:2,S new file mode 100644 index 00000000..2fe7e192 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22772.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From brong at fastmail.fm Thu May 26 22:00:35 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <3054.1306450567.471110@puncture> +References: <4DDEA412.6030305@aol.com> + + <4DDEB7EB.2090508@aol.com> <20110526223637.GA29831@brong.net> + <3054.1306450567.471110@puncture> +Message-ID: <20110527050035.GA17613@brong.net> + +On Thu, May 26, 2011 at 11:56:07PM +0100, Dave Cridland wrote: +> On Thu May 26 23:36:37 2011, Bron Gondwana wrote: +> >A999 FETCH (UID 4827313:4828442) FLAGS +> > +> > +> SEARCHRES +> +> >A999 FETCH (OR UNSEEN FLAGGED) (WINDOW 1:20) FLAGS +> +> + CONTEXT +> +> >And if you were doing something expensive like a full body +> >search, then being able to sort the result by something +> >trivial (like REVERSE SENTDATE) and then apply the search +> >only until you had filled your request window could +> >potentially save a lot of IO. +> +> + ESORT + +Yeah, we got there eventually. + +Bron ( still have to implement these in Cyrus ) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22807.mbox:2,S new file mode 100644 index 00000000..dd0f088e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22807.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 17:24:45 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + + <4C12CACB.7030205@aol.com> + +Message-ID: + +On Fri, 11 Jun 2010, Philip Guenther wrote: +> The core bits of IMAP are that of a cache fill protocol. + +Unfortunately most people do not understand that. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22880.mbox:2,S new file mode 100644 index 00000000..7d8250ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22880.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Thu Feb 21 14:07:36 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +In-Reply-To: +References: <1203623023.4901.242.camel@hurina> + <47BDE0F2.4070704@watson.ibm.com> + +Message-ID: <1203631656.4901.270.camel@hurina> + +On Thu, 2008-02-21 at 13:56 -0800, Mark Crispin wrote: +> I agree. I feel that a server is allowed to implement fuzzy string +> searching, with case-independence being the only absolute requirement. +> +> More specifically, I never intended to forbid fuzzy matching, and +> deliberately left it open-ended to allow implementations to experiment +> with what worked best. [Google considered it good news when I told them +> this was something in their server that I thought did NOT need fixing!] + +So, how is this related to what you said about substring searches a year +ago? + +http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-December/000328.html + +I doubt Google (or anyone else implementing fuzzy matching) supports +substring matching. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22883.mbox:2,S new file mode 100644 index 00000000..67884ad8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22883.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From dave at cridland.net Sun Jan 27 01:24:06 2008 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] example of authentication PLAIN with imap? +In-Reply-To: +References: <08Jan25.155553pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <19909.1201425846.570755@peirce.dave.cridland.net> + +On Sat Jan 26 00:22:56 2008, Mark Crispin wrote: +> Last, and absolutely least, RFC 4959 details a way that the initial +> response can be sent in the AUTHENTICATE command IF, AND ONLY IF, +> the server allows that facility. Note that the client is under no +> obligation to use that facility even if the server allows it. + +ACAP always offers this facility, but likewise does not mandate that +clients avail themselves of it - it cannot, in fact; there's text in +the SASL base spec saying so. So Mark's note above could be clarified + further by adding "[...] and the client understands the extension". +(That said, where the server offers it and the client does understand +it, it's likely to be used wherever possible - it's a most trivial +extension on both ends). + +ACAP's challenges and responses are binary, not base64 encoded, so +it's very often used in SASL mechanism examples for readability, +since it's the only SASL profile which does this in a text-based +protocol. + +ACAP can also supply completion data on success - a final SASL +response in the tagged OK response - and I seem to remember seeing +occasional examples in documents showing IMAP doing the same, but +I've never found a specification saying so - I suspect this is a case +of people transcribing examples from ACAP to IMAP in order to use a +more popular protocol. A minor case of caveat lector - the examples +can be wrong. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22893.mbox:2,S new file mode 100644 index 00000000..150824ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22893.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From dave at cridland.net Mon Oct 29 15:39:41 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: [Alpine-alpha] Gmail + Alpine + IMAP keywords +In-Reply-To: +References: + + + + + +Message-ID: <1040.1193697581.624584@peirce.dave.cridland.net> + +On Mon Oct 29 21:18:25 2007, Philip Guenther wrote: +> The characters in atom-specials can't be included directly in flag +> names and they can't be encoded in modified-UTF-7, so simply saying +> "flag names should be interpreted as being in modified-UTF-7" would +> not be sufficient to let gmail represent all possible label names. + +An alternative would be a standard mechanism for descriptive names of +keywords, which a clever client could then use in lieu of the atoms +in its UI. Clients could then query the server for the human-readable +label for the keyword - everything is, of course, soluble given an +additional layer of indirection. + +I'm not saying I prefer this, but it might be easier to go this +route, and it doesn't preclude a UTF-8 variant of the FLAGS fetch +item from using this directly in the future. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22911.mbox:2,S new file mode 100644 index 00000000..2c9c734b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22911.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Wed Jun 13 23:48:43 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: <466FE56C.7000900@hiramoto.org> +References: <466FE56C.7000900@hiramoto.org> +Message-ID: + +On 6/13/07, Karl Hiramoto wrote: +> +> Hello all, +> +> I'm writing a IMAP client that is a virus/spam scanner. My plan is to +> scan where i have write access, and to mark messages with a flag +> MyScanner or something, to signify that it is scanned, and does not need +> to be scanned again. If it is a positive spam or virus hit, i will +> store changes to the message. + +FYI, that's what Apple Mail.app already does. + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22914.mbox:2,S new file mode 100644 index 00000000..b61318ec --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22914.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 23 23:13:11 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: <1582938983.97731179982489618.JavaMail.root@dogfood.zimbra.com> +References: <1582938983.97731179982489618.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Wed, 23 May 2007, Dan Karp wrote: +> If PERMANENTFLAGS included "\*" and I do a "A001 STORE 1 +FLAGS +> (NEWFLAG)", is the server obliged to send back a new untagged FLAGS +> response before the unsolicited FETCH? + +Yes + +> If someone else does the STORE which added the NEWFLAG in my selected +> mailbox, is the server required to send me a new untagged FLAGS +> response? + +Yes. + +> If the answer to either of these is "yes", can someone point me to the +> section of RFC 3501 that I should have read more closely? + +The FLAGS response lists the flags which are applicable to a mailbox. A +FETCH response that contains flags can only contain flags which are +applicable to the mailbox. Therefore, if a FETCH response desires to +contain a flag which is not in the current FLAGS response, a new FLAGS +response must be issued that lists that flag. + +There is no other interpretation that gives a purpose or point for the +untagged FLAGS response to exist. Nothing in IMAP is there out of +caprice; there is always a reason even if that reason is subtle. + +This is one of the reasons why I did NOT want to say "such-and-such +response occurs as a result of such-and-such command" (I was forced to do +so against my wishes); I knew that people would falsely presume that +stating such implies that such-and-such response only occurs as a result +of such-and-such command. The fact that the text says "this response +occurs as a result of that command" does NOT mean that the response can +not occur at another time. + +The unsolicited data model of IMAP requires that ANY response can occur as +the result of ANY command. Clients MUST be prepared to accept an untagged +SEARCH even if you are not doing a SEARCH command, untagged LIST even if +you are not doing a LIST command, etc. + +Understanding the unsolicited data model of IMAP is key to understanding +IMAP itself. IMAP is two protocols; a command/response protocol that is +client initiated (section 6, and tagged 7.1.1 - 7.1.3), and a +data-transmission protocol that is server initiated (section 7). + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22917.mbox:2,S new file mode 100644 index 00000000..ddf59a2d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22917.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From dave at cridland.net Wed Apr 11 03:51:51 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] ACL: GETACL and "always granted" rights +In-Reply-To: <1766087308.133811176240507094.JavaMail.root@dogfood.liquidsys.com> +References: <1766087308.133811176240507094.JavaMail.root@dogfood.liquidsys.com> +Message-ID: <6701.1176288711.978094@peirce.dave.cridland.net> + +On Tue Apr 10 22:28:27 2007, Dan Karp wrote: +> If a user has rights that "will always be granted" on a mailbox +> (e.g. that show up in the first rights set in a LISTRIGHTS untagged +> response), is that user/rights pair to be listed in the GETACL +> response on that mailbox? +> +> +In principle, that would be a reasonable reading of RFC4314, and you +would not be non-compliant for doing so. + +In practise, it might be silly under some circumstances. + +The LISTRIGHTS response tells you two things - and note I'm +deliberately using a different wording: + +1) The groups of rights that may be granted to the identifier. + +2) The set of inalienable rights the identifier implicitly has. + +I'd personally say that you should examine *why* the identifiers have +these implicit rights, and decide on that basis whether to include +them in the ACL - and in some cases, whether to admit they have +implicit rights in LISTRIGHTS. + +I don't think you'd confuse clients by having a degree of discrepency +between LISTRIGHTS and GETACL, but you might confuse clients by +including entries in the ACL if they're not really needed. (For +example, Thunderbird decides whether a mailbox is shared according to +the contents of the ACL.) + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22920.mbox:2,S new file mode 100644 index 00000000..89755ff4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22920.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Sun Mar 11 15:34:07 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +In-Reply-To: <07Mar11.134508pst."57996"@synergy1.parc.xerox.com> +References: <07Mar11.134508pst."57996"@synergy1.parc.xerox.com> +Message-ID: <1173652447.17598.314.camel@hurina> + +On Sun, 2007-03-11 at 14:45 -0700, Bill Janssen wrote: +> It would be useful to have a pseudo-client that exercised an IMAP +> server, to check for implementation errors, to do regression testing, +> to stress-test. It would also be useful to have this client exercise +> the typical patterns that various specific existing client +> implementations use, to make sure all the combinations that a server +> would normally experience are considered. + +I've a tool that does stress testing. Just last night I updated it to do +a lot of new things: + +http://dovecot.org/list/dovecot/2007-March/020503.html + +It's compatible with all IMAP servers, but if the server doesn't send +CAPABILITY reply in the banner it assumes that it supports LITERAL+ and +MULTIAPPEND capabilities, which may not be true with all servers. + +It does some simple sanity checks, but it could do a lot more. It also +prints an error whenever a command fails with NO or BAD, or if the +connection hangs. + +It also works as a pretty nice benchmarking tool. :) + +If you do want to try it, you'll first need to compile Dovecot's +sources. I just found one bug because of it, so use +http://dovecot.org/nightly/dovecot-latest.tar.gz instead of the last +release. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22938.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22938.mbox:2,S new file mode 100644 index 00000000..9b2f8ba7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22938.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From robsiemb at google.com Tue Jan 30 19:42:59 2007 +To: imap-protocol@u.washington.edu +From: Rob Siemborski +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] A few MAILBOX-REFERRALS and NAMESPACE questions +In-Reply-To: <1616193014.36111170214172038.JavaMail.root@dogfood.zimbra.com> +References: <1616193014.36111170214172038.JavaMail.root@dogfood.zimbra.com> +Message-ID: <5b93232d0701301942j66a9f184h485b50a99aa464d4@mail.gmail.com> + +On Jan 30, 2007 7:29 PM, Dan Karp wrote: + +> RFC 2193 states that +> +> Remote mailboxes and their inferiors, that are accessible only via +> referrals SHOULD NOT appear in LIST and LSUB responses issued against +> the user's home server. They MUST appear in RLIST and RLSUB +> responses issued against the user's home server. +> +> For RLIST, must the server *validate* the existence of mailboxes belonging to remote accounts? In other words, if "Biff" is on a remote host and the client issues the command +> +> A003 RLIST "" "/user/Biff/nosuchfolder" +> +> may the server blindly return a corresponding untagged LIST response +> +> * LIST () "/" "/user/Biff/nosuchfolder" +> +> or does the server have to verify the existence of the "nosuchfolder" mailbox in Biff's namespace before returning such a LIST response? + +I'd argue that the correct thing to do is, indeed, verify that +nosuchfolder exists before returning it. However, since clients have +to deal with the race where a folder is presented and then deleted +before the SELECT command can be issued anyway, this isn't as big a +deal as it seems. + +Do other servers implement MAILBOX-REFERRALS? The only server I know +of that does this is the Cyrus server, which doesn't distinguish much, +because it is willing to proxy if the client doesn't do an RLIST +anyway, so its all the same. + +> Similarly, RFC 2193 states that +> +> Hierarchy referrals, +> in which a client would be required to connect to the remote server +> to issue a LIST to discover the inferiors of a mailbox are not +> addressed in this document. +> +> Did a consensus develop as to what should be returned when a user issues +> +> A004 RLIST "" /user/Biff/INBOX/%" + +The server would just return what it knew about, no? + +-Rob + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22957.mbox:2,S new file mode 100644 index 00000000..b5222a02 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22957.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Dec 20 12:07:57 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Command cancellation +In-Reply-To: <0kbiJ9w45mLNxYjlJRoZdQ.md5@libertango.oryx.com> +References: <1166644158.22214.365.camel@hurina> + <0kbiJ9w45mLNxYjlJRoZdQ.md5@libertango.oryx.com> +Message-ID: + +Arnt Gulbrandsen writes: +> Timo Sirainen writes: +>> BTW. Has anyone implemented the parallel running of commands before? +>> So that two FETCH commands could send replies mixed together? +> +> Yes. + +Some Christmas fun for you: + +a select mailbox1 +b fetch * uid +c select mailbox2 +d fetch * uid + +I didn't care much about that sequence - it's both invalid and AFAICT unused. + +a seach body a +b logout +c noop + +You must execute those in order: Either a, b or a, b, c (NOOP is in +command-any, and command-any is valid after LOGOUT). I like this one ;) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22960.mbox:2,S new file mode 100644 index 00000000..575d756b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22960.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Nov 23 18:14:21 2006 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: +References: + <20061123140532.C1467@gollum.dev.gmi-mr.com> + +Message-ID: + +> Isn't 5 minutes excessive? Nobody has ever complained about UW +> imapd's 3 minute timer. + +I guess I'm sensitive to this right now as I've been battling some +horrible network conditions at work for the last week. The OpenSSH +default timeout of 45 seconds makes it impossible for me to try to +fix the problem, because I can't stay logged in long enough to even +begin to find out where the problem is. This ranks right up there +with the five-minute TCP session state timeouts in most of the low +budget home wifi/nat/router appliances. + +Given that an IMAP server doesn't have a problem with sitting idle in +selected state for 30 minutes, I really don't see an argument why it +can't cope with 5 minutes in pre-auth state. + +If the server is really starved for resources and has to start +killing off connections then all bets are off anyway, and I would +expect a smart server to blow off pre-auth sessions first, down to a +certain idle time, and then attack authenticated connections in a +similar manner. There are lots of ways to decide how, and many +depend on what resources are important to the server. + +But in the absence of server resource starvation, it is not +unreasonable to ask for five minutes grace to accommodate problems +the server has no knowledge of. This is just good defensive protocol +design. + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22974.mbox:2,S new file mode 100644 index 00000000..f46711b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22974.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 12 14:10:59 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <45071A57.5080406@sun.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> +Message-ID: + +On Tue, 12 Sep 2006, Bill Shannon wrote: +> Most clients are incredibly stupid. Most of my time spent supporting +> JavaMail is spent finding bugs in servers that don't cause problems +> for any other clients, which of course leads people to believe the +> bug is in JavaMail. Most clients just treat IMAP as a glorified POP. + +All true, especially the last point. + +> 4.1.3 is worst for clients that try to do the right thing. I guess +> 4.1.2 is worst for stupid clients, which sadly is the majority. + +Actually, 4.1.2 is troublesome for many clients simply because a NO +response to a FETCH isn't particularly meaningful or sensible. + +4.1.3 has a compliance problem, since it generally creates an +inconsistency with sizes that were reported earlier. But it's less +difficult for many clients to cope with. + +> I'd be happy to have both 4.1.2 and 4.1.3 declared as not allowed +> behavior. + +Sold! ;-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22983.mbox:2,S new file mode 100644 index 00000000..071f9e8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22983.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Aug 4 00:40:35 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +In-Reply-To: +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + + + + +Message-ID: + +Mark Crispin writes: +> On Thu, 3 Aug 2006, Mark Crispin wrote: +>> You also missed the point of my comment; I asked Richard if his mail +>> store did not have INBOX. I asked because he said that he felt that +>> no untagged LIST results should be returned for "tag LIST INBOX %", +>> yet his hierarchy had /inbox which suggested that there was, indeed, +>> a mailbox that has the role of INBOX in his server. +> +> That, in turn, means that his server should have INBOX, regardless of +> whether there is this other name of /inbox that can access that data. + +Absolutely. "select INBOX" must work, no question about it. That doesn't +mean that INBOX has any special meaning when used as reference name - +there's nothing which says that the "foo/bar" example doesn't apply to +INBOX just as to any other mailbox name or level of hierarchy. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22987.mbox:2,S new file mode 100644 index 00000000..57a14fe9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22987.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Jul 21 10:38:28 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LDAP authentication not working for IMAP +In-Reply-To: <44C10CD8.8030602@gentoo.org> +References: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> + + <44C10CD8.8030602@gentoo.org> +Message-ID: + +On Fri, 21 Jul 2006, Jan Kundrt wrote: +>> You can use LDAP authentication via PAM. but all IMAP users must be +>> defined in the passwd file since they must be assigned UNIX user ids and +>> UNIX home directories. The only thing that comes from LDAP would be the +>> password. +> Nope. Please see the nss_ldap [1] package for uids; homes are usually +> defined via pam_ldap. + +That's only if UW imapd is built so that the getpwnam() and getpwuid() +interfaces are both made to use that package. As distributed, it is not. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.22999.mbox:2,S new file mode 100644 index 00000000..43ac3e2c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.22999.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Jun 22 08:33:51 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] questions regarding number of replies to an + IMAPv4rev1 request. +In-Reply-To: +References: +Message-ID: + +On Thu, 22 Jun 2006, Patankar, Sujay wrote: +> 1: Since there can be multiple untagged replies to an IMAP request, and +> I've seen in the field that sometimes there is no tagged response at +> all, how do I make sure that there will be no more replies to a +> particular IMAP request? +> e.g. I have seen a LIST request getting three untagged LIST responses, +> and no tagged response at all. + +A server that operates the way that you claim would not work at all with +most IMAP clients. + +A more likely explanation is that either your observations are incomplete +(perhaps due to a bug in the program recording those observations) or you +misinterpreted what you observed. Please review both your recording +program and your observations. + +Note that TCP is a stream. There is no reason to believe that the tagged +OK would be in the same segment as the untagged responses. It may be in a +later segment. Thus, it is generally incorrect to look at TCP segments at +all, and instead to consider the overall stream. + +> 2: Is there only one tagged response to a request, or can there be more +> than one? + +There is one, and only one, tagged response to a request. + +> 3: When there are two or more requests in the pipeline, and I receive an +> untagged response, to which of the requests does it belong? + +You can not do so, and in general there is no reason why you need to do +so. The entire point of the untagged data model in IMAP is that the +client maintain a state of the mailbox, possibly incomplete. Untagged +responses are effectively commands from the server to the client to +load/update that state in the client. + +This does mean that there are some commands, most notably LIST, LSUB, +SEARCH, SORT, and THREAD, in which you probably do not want to have more +than one such command in progress at a time unless you desire that the +effective output be combined. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.23004.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.23004.mbox:2,S new file mode 100644 index 00000000..87608a71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.23004.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From tss at iki.fi Thu May 11 03:47:12 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Test mailbox for THREAD testing +Message-ID: <1147344432.17524.88.camel@localhost.localdomain> + +Has anyone created a mailbox which contains messages for testing that +THREAD=REFERENCES implementation works correctly in all cases (not just +the common cases)? If not, I'll try to do that in a couple of days. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.23014.mbox:2,S new file mode 100644 index 00000000..a557f9d7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.23014.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From adibuciuman at gmail.com Tue Apr 4 09:10:44 2006 +To: imap-protocol@u.washington.edu +From: Adrian Buciuman +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] question about BAD +Message-ID: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> + +Hi, + +Can an IMAP server send a BAD before the client finished sending the command? + +The attached ethereal capture contains this example: + +C: "zxc select inbox " +S: "zxc BAD Unexpected extra arguments to Select\r\n" +C: "\r\n" /* client finshed sending zxc */ +C: "vbn copy a" +C: " " +S: "vbn BAD Invalid sequence in Copy\r\n" +C: "\r\n" +C: "qwe dhsads " +S: "qwe BAD Unrecognized command\r\n" +C: "gfhg" +C: "\r\n" /* client finished sending qwe */ + + +Thanks, + +Adrian Buciuman +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: imap-ethereal +Type: application/octet-stream +Size: 1543 bytes +Desc: not available +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.23031.mbox:2,S new file mode 100644 index 00000000..e60a8839 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.23031.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From bilen at metu.edu.tr Wed Mar 15 01:48:58 2006 +To: imap-protocol@u.washington.edu +From: Burak Bilen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem with imaps +In-Reply-To: <20060315102900.d419b50d.frantz@info.univ-angers.fr> +References: <20060315102900.d419b50d.frantz@info.univ-angers.fr> +Message-ID: <4417E30A.6070302@metu.edu.tr> + +Hi, +You can test imaps with openssl s_client, the exact command is: + +openssl s_client -connect imaphost:993 + +After then you should see more helpful debug data in your log files. + +Frantz de Germain wrote: + +>I've installed uw-imap on a linux server which worked well for several months +>with imaps protocol. But since a few days, it doesn't work any more with +>imaps (only with imap) and I don't remember having changed anything... +> +>If I do : +> +>telnet imaphost 993 +>Trying 172.xxx.xxx.xxx... +>Connected to imaphost.mydomain (172.xxx.xxx.xxx). +>Escape character is '^]'. +> +>It does nothing more. +> +>In maillog, there is : +> +>06/3/15@10:14:37: START: imaps pid=10270 from=172.xxx.xxx.xxx +> +> +>Here is my /etc/xinetd.d/servers : +> +>service imap +>{ +> socket_type = stream +> wait = no +> user = root +> disable = no +> server = /usr/local/imap-2004g/imapd/imapd +> log_type = FILE /var/log/imapd.log +> log_on_success = PID HOST +> log_on_failure = HOST +>} +>service imaps +>{ +> socket_type = stream +> wait = no +> user = root +> disable = no +> server = /usr/local/imap-2004g/imapd/imapd +> log_type = FILE /var/log/simapd.log +> log_on_success = PID HOST +> log_on_failure = HOST +>} +> +>Any idea ? how can I debug the problem ? +> +>Regards +> +> +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095124.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095124.23036.mbox:2,S new file mode 100644 index 00000000..377c1740 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095124.23036.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From rjh at theinter.com Wed Feb 22 13:10:22 2006 +To: imap-protocol@u.washington.edu +From: Ron Hartman +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] UWImap / True64 / Existing Accounts Question +Message-ID: <002001c637f4$64753a70$180fa8c0@Gentelco.com> + +Hi - + +We recently installed UW Imap via the True64 Internet Express installation +application. All appears to be working exceptionally well except for one +thing: + +Accounts that existed on our server prior to the install will not +authenticate. Any new accounts that are created authenticate just fine. My +assumption is that I have to run some type of script to modify / create +something on the accounts that are not working - but I've been unable to +get it figured out. + +We are running qpopper and sendmail as well. Mail resides in +/var/spool/mail/username, user accounts exist at /data/IASS_Usr/username + +My personal account is working great. I did however, remove it completely +and re-created it. I'd appreciate any thoughts/help you all might have. + +Thank You +Ron Hartman +Geneseo Communications + +------------------------------------------------ +No Virus Found In This Message +Scanned at barracuda.geneseo.net + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22756.mbox:2,S new file mode 100644 index 00000000..63c954a8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22756.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From blong at google.com Wed Nov 16 10:58:49 2011 +To: imap-protocol@u.washington.edu +From: Brandon Long +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <29330.1321432388.123579@puncture> +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <29330.1321432388.123579@puncture> +Message-ID: + +On Wed, Nov 16, 2011 at 12:33 AM, Dave Cridland wrote: +> On Wed Nov 16 02:24:17 2011, Mark Crispin wrote: +>> +>> My understanding is that Google perceived keywords as not commonly +>> implemented, and thus needing to do view/mailbox mapping. It's been a +>> major problem; a classic case of kludge tower building because it was +>> perceived that they couldn't do it right to begin with. +> +> I thought this at one point, but I recall seeing somewhere that the +> limitation was that keywords are pure ASCII, compared to mailbox names (and +> Google tags or whatever they're called) which are full unicode, contain +> spaces, etc. + +It was never really considered a viable option, because it wasn't +technically possible with the standard, and because almost no client +we looked at had any support for keywords (the most we saw was +Thunderbird which uses like 6 keywords that mean various things, but +doesn't even store them in IMAP as anything more than +keyword1...keyword6, others only used it for things like spam). + +I'm sure there are some clients with better support for keywords, but +they weren't common enough to make a difference in our decision. + +> Personally I think Google are big enough that fixing this problem "properly" +> (ie, a more free-text naming of FLAGS via the standards process) would have +> been viable, but the desire of many companies (Google included) to assume +> that marketing splash always trumps technical merit means that a kludge they +> can release without consultation trumps revealing some portion of the plan, +> or releasing incrementally, but with a better design. +> +> I do understand the pressure, and sympathize with it, but I still find it +> annoying how little the technical argument counts for, especially when it's +> a standardization issue, and these companies are often too happy to talk +> about how much they support open standards. + +There are two separate things here: supporting the current standard +and working to extend it. + +Our goal was supporting the current standard. Our primary motivation +was access from mobile devices, where the IMAP clients are probably +never going to receive an update. Designing our system to require +extensive client changes to support us, even if those changes were +"standard", was not a viable option. + +We would have essentially had to have a client which: +1) Only had a single folder (INBOX) which corresponds to ... every +message in the system, spam included. +2) Export all of our labels as IMAP keywords hacked into each being an +atom, or alternatively, each being a UTF8 astring perhaps with some +ENABLE called +3) Reject any attempt to create/rename/delete folders + +In that scenario, IMAP would have looked worse than POP to most +clients, because all of the users spam would be visible with no +indication that it was spam. Eventually, some clients would have +started to support this, and they probably would have shoe-horned +keywords into working similar to folders, giving users an experience +that's nearly identical to what they get now anyways. + +We could have made spam special and put it in a separate folder, but +then you start going down the path to what we actually did. + +Also, there were specific popular clients which would fail outright or +eventually badly if they were unable to create folders like their +draft folder. + +We could have also always returned labels as keywords on top of what +we did, but that would have increased the amount of data to sync a +folder in many clients by up to 2x, and the amount of data to do a +folder sync on a 100k message folder is already on the order of 6MB of +data using the UID FLAGS method. Doubling that to 12MB for data for +99% of clients which don't care about it, not pretty. + +Our goal was interoperability, which meant making Gmail look like IMAP +as used by current clients. At the end of the day, the point of our +service is to let people read their mail using the tools available to +them. + +Brandon +-- +?Brandon Long +?Staff Engineer +?Gmail Delivery TLM + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22772.mbox:2,S new file mode 100644 index 00000000..95067b10 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22772.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From dave at cridland.net Fri May 27 00:50:25 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + + <4DDF06A9.2050608@logicprobe.org> + +Message-ID: <3054.1306482625.167799@puncture> + +On Fri May 27 05:11:43 2011, Mark Crispin wrote: +>> It would also be nice if the IMAP grammar made more complete use +>> of the +>> parenthesized list format used by the majority of it. +> +> Yes. There should be a single syntax rule for all commands and +> responses, +> and fewer types: atom, number, string, and list. Atoms should be +> used +> exclusively for protocol tokens (thus abolishing the +> astring/nstring mess) +> +> +I'd note that ACAP essentially did this. You're free to slate ACAP +for all sorts of reasons, but it had a much simpler and more +consistent syntax, and the tagged intermediates meant that the UID +SEARCH/SEARCH issue could be engineered around cleanly in some cases. +(That said, had this existed in IMAP people would have tried to +misuse it, of course, but SEARCH is one case where association with +the command is pretty much essential). + +> I would also reform IMAP's Hollerith strings (literals) to send the +> entire +> command first (thus one complete line) and then the string payloads. + +I'm not following the motivation for this. Parse a token at a time +off the wire until you find a CRLF token - seems simple enough to me. +It's not as if anyone uses fgets to parse anyway. What am I missing? + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22807.mbox:2,S new file mode 100644 index 00000000..b5a44521 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22807.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 17:27:33 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006120159.05366.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120124.53714.witold.krecicki@firma.o2.pl> + + <201006120159.05366.witold.krecicki@firma.o2.pl> +Message-ID: + +On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +>> It's been discussed multiple times in the past (oh, why does no one +>> actually read the archives?) how to implement the Trash Can UI on top of +>> the IMAP \deleted+EXPUNGE model. And guess what, that can do something +>> the "trash can is a mailbox" model can't: undelete restores the message to +>> its original place in the mailbox. +> And still there is no working implementation of this model. Wonder why... + +You don't seriously intend to say that nobody uses undelete in IMAP? + +If you do believe that, then you are wrong. I know of multiple clients, +including at least one with millions of users, that have undelete as +Philip describes. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22880.mbox:2,S new file mode 100644 index 00000000..9a9f03cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22880.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From MRC at Washington.EDU Thu Feb 21 14:14:08 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +In-Reply-To: <1203631656.4901.270.camel@hurina> +References: <1203623023.4901.242.camel@hurina> + <47BDE0F2.4070704@watson.ibm.com> + + <1203631656.4901.270.camel@hurina> +Message-ID: + +On Fri, 22 Feb 2008, Timo Sirainen wrote: +> So, how is this related to what you said about substring searches a year +> ago? +> http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-December/000328.html + +That dealt with false *negatives* due to failure to do substring matching. + +I don't object to fuzzy matching that adds positives that a non-fuzzy +search would not match. + +But that is a good question. It deserves clarification in the +specification. The principle should be "match what you are required to +match, but if you have some fuzzy algorithms that produce useful +additional matches, then go for it." + +In spam filtering, we want to err on the side of false negatives. But in +IMAP searches, we err on the side of false positives. + +> I doubt Google (or anyone else implementing fuzzy matching) supports +> substring matching. + +They claimed that it works. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22883.mbox:2,S new file mode 100644 index 00000000..22ea66d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22883.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From janssen at parc.com Sun Jan 27 13:00:18 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IMAP servers with no INBOX -- any indicators? +In-Reply-To: <19909.1201425859.710608@peirce.dave.cridland.net> +References: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> + <978EF551-4028-4CC6-972F-2BF8451706B2@iki.fi> + + <19909.1201425859.710608@peirce.dave.cridland.net> +Message-ID: <08Jan27.130026pst."58696"@synergy1.parc.xerox.com> + +> The specification merely says that if a mailbox looks like INBOX, +> then it is. (ie, if its path is case-insensitively equal to "INBOX", +> then it must behave like INBOX). I don't think there's anything +> stating that it must exist, nor any real implication, is there? + +I think there's a pretty clear implication that it may not exist. + +It's the text in 6.3.8, the LIST command, + + ``The special name INBOX is included in the output from LIST, if + INBOX is supported by this server for this user and if the + uppercase string "INBOX" matches the interpreted reference and + mailbox name arguments with wildcards as described above. The + criteria for omitting INBOX is whether SELECT INBOX will return + failure...'' + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22893.mbox:2,S new file mode 100644 index 00000000..dfe4a9df --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22893.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From swilkin at apple.com Mon Oct 29 15:43:58 2007 +To: imap-protocol@u.washington.edu +From: Sarah Wilkin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + +Message-ID: + +On Oct 29, 2007, at 3:05 PM, Mark Crispin wrote: + +> Perhaps we should just punt doing the right thing to IMAP5, and add +> UTF8.FLAGS as a FETCH command and UTF8.LIST/UTF8.LSUB as basic +> commands (with perhaps something for LISTEXT if you like...but I +> don't want a dependency on LISTEXT). + +Is there a single place that summarizes goals of future IMAP proposals +or extensions? I've seen several ideas come up on this list; are these +captured publicly anywhere? I don't see anything on http:// +www.imap.org/, and the ietf-imapext list looks a bit too specific. + +Thanks, +--Sarah + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22911.mbox:2,S new file mode 100644 index 00000000..f351c41b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22911.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Jun 14 00:33:45 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: +References: <466FE56C.7000900@hiramoto.org> + +Message-ID: <20070614003209.E9774@orthanc.ca> + +> FYI, that's what Apple Mail.app already does. + +Mail.app gets a few things wrong. But now that their developers are +participating with the IMAP community we are getting those bugs fixed. + +--lyndon + + We've heard that a million monkeys at a million keyboards could produce + the Complete Works of Shakespeare; now, thanks to the Internet, we know + this is not true. + -- Robert Wilensky, University of California + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22914.mbox:2,S new file mode 100644 index 00000000..e5998dd5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22914.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 23 23:13:54 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: <20070524052407.GA32366@penne.toroid.org> +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <20070524052407.GA32366@penne.toroid.org> +Message-ID: + +On Thu, 24 May 2007, Abhijit Menon-Sen wrote: +> At 2007-05-23 21:22:16 -0700, mrc@CAC.Washington.EDU wrote: +>> Before issuing that FETCH response, the server has to send a FLAGS +>> response with the new keyword. +> Er, I'm sorry, but isn't that what you said would confuse clients in +> response to my earlier message? Or am I missing something important? + +You asked about a FLAGS response that listed only the new flag. + +The FLAGS response must list all the flags. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22917.mbox:2,S new file mode 100644 index 00000000..91964cc4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22917.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From dkarp at zimbra.com Wed Apr 11 08:04:45 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] ACL: GETACL and "always granted" rights +In-Reply-To: <6701.1176288711.978094@peirce.dave.cridland.net> +Message-ID: <1998622862.168451176303885705.JavaMail.root@dogfood.liquidsys.com> + +> > If a user has rights that "will always be granted" on a mailbox +> > (e.g. that show up in the first rights set in a LISTRIGHTS untagged +> > response), is that user/rights pair to be listed in the GETACL +> > response on that mailbox? +> +> I don't think you'd confuse clients by having a degree of discrepency +> between LISTRIGHTS and GETACL, but you might confuse clients by +> including entries in the ACL if they're not really needed. (For +> example, Thunderbird decides whether a mailbox is shared according to +> the contents of the ACL.) + +OK. So a reasonable implementation might, say, fail to include the authenticated user's default rights on their own mailboxes? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22920.mbox:2,S new file mode 100644 index 00000000..5750e011 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From guenther+imap at sendmail.com Sun Mar 11 15:46:57 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] question on BODY[n.MIME]? +In-Reply-To: <07Mar11.133752pst."57996"@synergy1.parc.xerox.com> +References: <07Mar8.112542pst."57996"@synergy1.parc.xerox.com> + + <07Mar8.141232pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.123637pst."57996"@synergy1.parc.xerox.com> + <1173646260.17598.293.camel@hurina> + <07Mar11.133752pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 11 Mar 2007, Bill Janssen wrote: +> Thanks. So calling x.HEADER on a non-"message/rfc822" part should +> raise an error. + +It's an error for the client to request it; AFAICT, the server's behavior +is not constrained. The obvious and relatively client-friendly behaviors +are to either return a tagged BAD response or return NIL for the requested +part. E.g.: + +tag fetch 1 body[1.header] +tag BAD Invalid section specifier for message(s) + +tag fetch 1 body[1.header] +* 1 FETCH (BODY[1.HEADER] NIL) +tag OK Completed + + +A server that treated such a request as an undocumented extension that set +the \deleted flag on the message would still conform, though the QoI of +that server would generally be considered very low... + + +Philip Guenther + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22957.mbox:2,S new file mode 100644 index 00000000..7b736f86 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22957.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Dec 20 12:50:16 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: +References: <1166603479.22214.298.camel@hurina> + + +Message-ID: + +On Wed, 20 Dec 2006, Arnt Gulbrandsen wrote: +> Boyer-Moore is k*O(n) with an impressive k. People want k*O(log n) these +> days, if possible with an impressive k. + +I question that assumption for IMAP searches. Even with large mailboxes, +Boyer-Moore causes no user-visible delay in search time. + +What causes search time delays is I/O time; and that is the attraction +behind such things as indexed searching. However, indexing can have its +own costs (I turned off Spotlight on my Mac due to its indexing consuming +most of the CPU for hours on end!), and it doesn't do any good if it +violates the specification and leads to the failure of a client that +relies upon the specification. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22960.mbox:2,S new file mode 100644 index 00000000..4898e0dc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22960.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From tss at iki.fi Fri Nov 24 01:26:50 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: +References: + + <20061123140532.C1467@gollum.dev.gmi-mr.com> + +Message-ID: <1164360410.8783.383.camel@hurina> + +On Thu, 2006-11-23 at 16:48 -0800, Mark Crispin wrote: +> On Thu, 23 Nov 2006, Lyndon Nerenberg wrote: +> > So, if you do change the errata, please mandate a minimum 5 minute timer +> > in pre-authenticated state so that we can retain some robustness in the +> > protocol +> +> Sadly, just about every attempt to legislate against stupidity in protocol +> specifications have been miserable failures... :-( +> +> Isn't 5 minutes excessive? Nobody has ever complained about UW imapd's 3 +> minute timer. + +Dovecot has 1 minute and no-one's ever complained about that either. But +I hadn't thought too much about that value, I guess I'll increase it to +3 minutes as well. + +I think most people use clients which save the password so this isn't an +issue for more than a couple of people, and those are probably fast +enough typers anyway since they're willing to write their password every +time. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22974.mbox:2,S new file mode 100644 index 00000000..5a81f3b6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22974.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From bill.shannon at sun.com Tue Sep 12 14:10:06 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <20060912134901.F80085@orthanc.ca> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> <20060912134901.F80085@orthanc.ca> +Message-ID: <4507222E.7050706@sun.com> + +Lyndon Nerenberg wrote: +>> It's the difference between "good" and "correct". I'd start with +>> "correct" and work up to "good". +> +> +> I'd start with defining "good." The problem with a protocol as complex +> (some would say bloated) as IMAP is that -- from the client's +> perspective -- there is no one "right" way to use it. Different client +> implementations have different goals, and thus different demands of the +> server. In some cases it makes sense for the client to (say) talk to +> the server using a restricted feature set that, when examined without +> context, makes it look like the client is just a glorified POP engine. + +Exactly, "good" is a value judgement, which makes it harder to define. + +The spec should be very clear on what "correct" behavior is. + +> And if you do ever manage to define "good" you then get to solve the +> problem of determining what constitutes "compliant" behaviour when faced +> with the n! permutations of extensions interacting with and without each +> other. +> +> This isn't going to happen in my lifetime. + +Neither the spec nor the test suite need to be perfect to deliver great +value. I see a lot of basic functionality that's broken. A test suite +that tested those cases would make a huge difference. Specifying, and +testing, the esoteric corner cases can be done later. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22983.mbox:2,S new file mode 100644 index 00000000..920021d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22983.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From richard at ftgate.com Fri Aug 4 01:10:49 2006 +To: imap-protocol@u.washington.edu +From: Richard Bang +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP/Pine List query +References: <089601c6b713$60732ba0$8710e0c3@ftgate.lan> + + +Message-ID: <09c301c6b79d$7f3f9660$8710e0c3@ftgate.lan> + +----- Original Message ----- +From: "Mark Crispin" +> Also, what are "UTF-16 mail store names"?!? +> +> UTF-16 is certainly not permitted in an IMAP mailbox name! Currently, +> only modified UTF-7 is permitted for internationalized names, although in +> the future there is an attempt to relax the restriction that precludes +> UTF-8 mailbox names. + +The upgrades to the next version of my server incorporate UTF-16 at all +levels including folders. +I translate the UTF-16 to modUTF7 for sending to IMAP. + +Given this: +&BB4EPwQ7BDAERwQ4BDIEMAQ1BEIENQ- + +Some mail clients only show the utf-7 encoding (Pine!) +Some show the true conversion (Thunderbird). +Some show only western European (German etc) (Outlook/Express) + +This is what I meant and what I'm testing. + +..Richard.. + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22987.mbox:2,S new file mode 100644 index 00000000..601056f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22987.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From jkt at gentoo.org Fri Jul 21 11:19:03 2006 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LDAP authentication not working for IMAP +In-Reply-To: +References: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> + + <44C10CD8.8030602@gentoo.org> + +Message-ID: <44C11A97.1020304@gentoo.org> + +Mark Crispin wrote: +> On Fri, 21 Jul 2006, Jan Kundrt wrote: +>>> You can use LDAP authentication via PAM. but all IMAP users must be +>>> defined in the passwd file since they must be assigned UNIX user ids and +>>> UNIX home directories. The only thing that comes from LDAP would be the +>>> password. +>> Nope. Please see the nss_ldap [1] package for uids; homes are usually +>> defined via pam_ldap. +> +> That's only if UW imapd is built so that the getpwnam() and getpwuid() +> interfaces are both made to use that package. As distributed, it is not. + +Well, provided the uw-imapd uses the standard glibc calls, a properly +configured nss (/etc/nsswitch.conf) should be enough. It's a system's +configuration, not the imapd's one. I'm not familiar with the uw-imapd +internals, though, and we're off-topic here :). + +Cheers, +-jkt + +-- +cd /local/pub && more beer > /dev/mouth + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 260 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.22999.mbox:2,S new file mode 100644 index 00000000..7bde4263 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.22999.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Fri Jun 30 08:53:20 2006 +To: imap-protocol@u.washington.edu +From: DINH =?utf-8?Q?Vi=C3=AAt_Ho=C3=A0?= +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +Message-ID: + +I am using a Cyrus Server and what is occuring is that +LOGOUT command can take some time. + +As I am writing a user interface, when the user will quit the +application, all connections will be stopped. For IMAP connections, I +was sending LOGOUT command. And it is unacceptable for a user to wait +much time when quitting especially when it is doing nothing more than +notifying the server that we are going to disconnect from it. As I +maintain one connection for each folder, when we have several folders, +it takes age (in some case, I have to wait 30 seconds). +I tested a TCP disconnection without sending LOGOUT command and it is +much more faster (less than one second). +Is something will be breaking if we don't send the LOGOUT command ? + +Is there a recommended behavior to adopt to avoid that problem ? + +-- +DINH V. Hoa, + +"un joint tu vas pas avoir ton cerveau d?truit ? la longue" -- b + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.23014.mbox:2,S new file mode 100644 index 00000000..14e3788b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.23014.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Apr 4 09:20:16 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] question about BAD +In-Reply-To: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> +References: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> +Message-ID: <3U7SPhfQsmhufeOzNE9EZQ.md5@libertango.oryx.com> + +Adrian Buciuman writes: +> Can an IMAP server send a BAD before the client finished sending the command? + +Yes. + +In principle, a BAD results when there _isn't_ a recognizable command. +You can't ask the server to wait until the end of something it doesn't +recognize. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.23031.mbox:2,S new file mode 100644 index 00000000..252ba958 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.23031.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Mar 15 02:06:04 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem with imaps +In-Reply-To: <20060315102900.d419b50d.frantz@info.univ-angers.fr> +References: <20060315102900.d419b50d.frantz@info.univ-angers.fr> +Message-ID: + +On Wed, 15 Mar 2006, Frantz de Germain wrote: +> If I do : +> telnet imaphost 993 +> Trying 172.xxx.xxx.xxx... +> Connected to imaphost.mydomain (172.xxx.xxx.xxx). +> Escape character is '^]'. +> +> It does nothing more. + +This is normal and expected behavior. You can't telnet to an IMAPS +service since it is SSL-encrypted. + +If you will give me the true DNS name or IP address of your server, I can +try to connect to it and see if it is responding correctly. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.23036.mbox:2,S new file mode 100644 index 00000000..0b9fdc8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.23036.mbox:2,S @@ -0,0 +1,155 @@ +MBOX-Line: From hatem.elhannachi at telnet.com.tn Thu Feb 23 01:06:29 2006 +To: imap-protocol@u.washington.edu +From: Hatem El Hannachi +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem in receiving mail using imap +Message-ID: <7FEBB30F0CE41B419B38295024A58EE34D63B9@oxygen.mail.telnet.tunis> + +Hi, + +I am using imap for receiving mail. I used the following source code to receive mail: + +//To open a pop session for receiving mail : + +mail_link(&pop3driver); /* link in the pop3 driver */ +MAILSTREAM* l_mstream = NIL; +l_mstream=mail_open(NIL,g_a_cOpenMailString,T); + + +//To receive a mail with an attached file, I use these functions: + +l_env=mail_fetchstructure(l_mstream,1,&l_body); +l_p_szBodyPart=mail_fetchbody(l_mstream,1, "1", &l_ulBodyPartLen); + + +I have the problem in deleting the received mail to avoid to receive it again, for this I used these functions: +mail_setflag(l_mstream,"1","\\DELETED"); +mail_expunge(l_mstream); + + +But this not work, because I receive the same mail another time. + +Can any one tell me how can i delete the mail after receiving it to avoid that I receive it many times. + + +Here there is the source code I used to receive mail: + +void RecieveMail(long debug) +{ + FILE* l_pFile; + int l_iMail=0; + + //ajouter les drivers n?cessire + mail_link(&pop3driver); /* link in the pop3 driver */ + + printf("Ouverture de la boite mail\n"); + MAILSTREAM* l_mstream = NIL; + + ENVELOPE *l_env; + BODY* l_body; + + //param?tres contenant les ?l?ments cod?s du mail + char* l_p_szBodyPart=0; + unsigned long l_ulBodyPartLen; + + //param?tres contenant les ?l?ments d?cod?s du mail + unsigned char* l_p_uszFileContenant=0; + unsigned long l_ulFileLen; + long l_nAlive = 1; + l_mstream=mail_open(NIL,g_a_cOpenMailString,T); + + while(TRUE) + { + + if (l_mstream ) + { + if(!l_mstream->nmsgs ) + { + //reouverture + l_mstream=mail_open(l_mstream,g_a_cOpenMailString,T); + printf("**************** (%d) mails received *********\n", l_iMail); + + } + + if (l_mstream) + { + + while(l_mstream->nmsgs > 0) + { + l_env=mail_fetchstructure(l_mstream,1,&l_body); + + + l_p_szBodyPart=mail_fetchbody(l_mstream,1, "1", &l_ulBodyPartLen); + + printf(l_p_szBodyPart); + + //v?rifier s'il existe un fichier attach? + if(l_body->type==TYPEMULTIPART) + { + //voir s'il ya un fichier join + //on ne s'interesse qu'au 1er + PART* l_part= l_body->nested.part; + l_part=l_part->next; + + if(l_part!=NULL) + { + //si le fichier set de type application + if(l_part->body.type == TYPEAPPLICATION && l_part->body.encoding == ENCBASE64) + { + l_p_szBodyPart=mail_fetchbody(l_mstream,1, "2", &l_ulBodyPartLen); + + //conversion du fichier binaire et sauvegarde + l_p_uszFileContenant=(unsigned char*)rfc822_base64((unsigned char*)l_p_szBodyPart,l_ulBodyPartLen,&l_ulFileLen); + + + printf("**************** Reception mail %d*********\n", l_iMail); + l_iMail++; + l_pFile=fopen(g_a_cFilePath,"wb"); + fwrite(l_p_uszFileContenant,1,l_ulFileLen,l_pFile); + fclose(l_pFile); + free(l_p_uszFileContenant); + } + } + } + //suppression du mail trait? + mail_setflag(l_mstream,"1","\\DELETED"); + mail_expunge(l_mstream); + + //reouverture + l_mstream=mail_open(l_mstream,g_a_cOpenMailString,T); + //raifraichissement + l_mstream=mail_open(l_mstream,g_a_cOpenMailString,T); + if(!l_mstream) + break; + + } + } + else + { + l_mstream=mail_open(l_mstream,g_a_cOpenMailString,T); + printf("**************** (%d) mails received *********\n", l_iMail); + } + } + else + { + l_mstream=mail_open(l_mstream,g_a_cOpenMailString,T); + printf("**************** (%d) mails received *********\n", l_iMail); + } + } + + //fermeture de la boite mail + mail_close(l_mstream); + +} + + + + + +Thanks for any help +Hatem + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095125.23040.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095125.23040.mbox:2,S new file mode 100644 index 00000000..97f72a12 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095125.23040.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From daan.rijnders at chronotech.nl Fri Jan 20 01:28:36 2006 +To: imap-protocol@u.washington.edu +From: Daan Rijnders +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Telnet IMAP on Exchange 5.5 +Message-ID: + +Hello, + +I might be on the complete wrong list, but I still hope their might be +someone who can send me into the right direction. + +I'm trying to connect to my exchange server using Telnet on port 143 (IMAP). +I'm getting the mail servers welcome message, but then I need to enter my +login credentials. +I enter: "? Login domain/username password" (without the quotes) +this results in an error: one of the requested permissions is not assigned +to the client. I checked this on the Exchange server to see if my user is +IMAP enabled and did the same thing in Active Directory. Both state that my +user is able to use IMAP. + +Question: is this case sensitive? Should I use all CAPS? forward slashes? + +Is there any kind of guide on IMAP using telnet? Microsoft has 1 KB article +but I already noticed that they misspelled the login line, and they expect +that the login works. + +Can anyone shine a light on this one? + +Cheers, +Daan + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22756.mbox:2,S new file mode 100644 index 00000000..c1b267c7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22756.mbox:2,S @@ -0,0 +1,128 @@ +MBOX-Line: From dave at cridland.net Wed Nov 16 12:58:40 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <29330.1321432388.123579@puncture> + +Message-ID: <29330.1321477120.891382@puncture> + +On Wed Nov 16 18:58:49 2011, Brandon Long wrote: +> On Wed, Nov 16, 2011 at 12:33 AM, Dave Cridland +> wrote: +> > On Wed Nov 16 02:24:17 2011, Mark Crispin wrote: +> >> +> >> My understanding is that Google perceived keywords as not +> commonly +> >> implemented, and thus needing to do view/mailbox mapping. It's +> been a +> >> major problem; a classic case of kludge tower building because +> it was +> >> perceived that they couldn't do it right to begin with. +> > +> > I thought this at one point, but I recall seeing somewhere that +> the +> > limitation was that keywords are pure ASCII, compared to mailbox +> names (and +> > Google tags or whatever they're called) which are full unicode, +> contain +> > spaces, etc. +> +> It was never really considered a viable option, because it wasn't +> technically possible with the standard, and because almost no client +> we looked at had any support for keywords (the most we saw was +> Thunderbird which uses like 6 keywords that mean various things, but +> doesn't even store them in IMAP as anything more than +> keyword1...keyword6, others only used it for things like spam). +> +> I'm sure there are some clients with better support for keywords, +> but +> they weren't common enough to make a difference in our decision. +> +> +Right, and I understand where you're coming from, which is why I +explicitly spelt out the mismatch here. + + +> > Personally I think Google are big enough that fixing this problem +> "properly" +> > (ie, a more free-text naming of FLAGS via the standards process) +> would have +> > been viable, but the desire of many companies (Google included) +> to assume +> > that marketing splash always trumps technical merit means that a +> kludge they +> > can release without consultation trumps revealing some portion of +> the plan, +> > or releasing incrementally, but with a better design. +> > +> > I do understand the pressure, and sympathize with it, but I still +> find it +> > annoying how little the technical argument counts for, especially +> when it's +> > a standardization issue, and these companies are often too happy +> to talk +> > about how much they support open standards. +> +> There are two separate things here: supporting the current standard +> and working to extend it. +> +> +Absolutely, and they're not in conflict. + + +> Our goal was supporting the current standard. Our primary +> motivation +> was access from mobile devices, where the IMAP clients are probably +> never going to receive an update. Designing our system to require +> extensive client changes to support us, even if those changes were +> "standard", was not a viable option. +> +> +No, you're missing my point. + +I'm not saying that Google should have mandated a bunch of private +extensions bulldozered through a mockery of a standards process. + +What I am saying is that had you offered a (potentially more basic) +IMAP service, but with an additional, well-designed extension to +handle the extended abilities of your message store, that would have +both enabled access, and in addition pushed the boundaries a bit (in, +I might add, a very sensible direction). + +The fact is that if GMail supports something, clients are going to +follow - and demonstrably have done, implementing your quasi-LISTEXT +thing quite widely, I understand. + +> Our goal was interoperability, which meant making Gmail look like +> IMAP +> as used by current clients. At the end of the day, the point of our +> service is to let people read their mail using the tools available +> to +> them. + +Yes, but I don't see that the goal of providing reasonable service to +existing tools is in conflict with pushing to improve those existing +tools. And because Google is big, you can actually provide sufficient +encouragement to do so. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22772.mbox:2,S new file mode 100644 index 00000000..5312c85e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22772.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From dave at cridland.net Fri May 27 00:51:40 2011 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + + <4DDF06A9.2050608@logicprobe.org> <4DDF1140.3030101@verizon.net> + +Message-ID: <3054.1306482700.081469@puncture> + +On Fri May 27 05:19:45 2011, Mark Crispin wrote: +> On Thu, 26 May 2011, Joshua Cranmer wrote: +>> I have been told that there are some devices capable of reading +>> email +>> that do not support UTF-8. Not as in "they can't display it +>> correctly" +>> but as in "they can't decode it properly even when explicitly told +>> this +>> text is UTF-8." +> +> There is no excuse for a lack of UTF-8 support in any email device +> produced after 1996, and especially after the publication of RFC +> 2130 in +> 1997. +> +> Sadly, there is no enforcement. + +But who cares? + +If a device only understands ASCII, send them UTF-8 anyway and the +worst that can happen is that a fully non-ASCII message is +unreadable, which it would be anyway. + +Of course, if these devices only understand one of the non-ASCII +charsets (ie, those which are not ASCII subset compatible), then +you're doomed anyway. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22807.mbox:2,S new file mode 100644 index 00000000..c4145a39 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22807.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 17:51:24 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120159.05366.witold.krecicki@firma.o2.pl> + +Message-ID: <201006120251.24779.witold.krecicki@firma.o2.pl> + +On Saturday 12 of June 2010 02:27:33 Mark Crispin wrote: +> On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +> >> It's been discussed multiple times in the past (oh, why does no one +> >> actually read the archives?) how to implement the Trash Can UI on top of +> >> the IMAP \deleted+EXPUNGE model. And guess what, that can do something +> >> the "trash can is a mailbox" model can't: undelete restores the message +> >> to its original place in the mailbox. +> > +> > And still there is no working implementation of this model. Wonder why... +> +> You don't seriously intend to say that nobody uses undelete in IMAP? +They use it, mostly by means of moving the messages back from trash to the +respective mailbox. +Most of clients use EXPUNGE instead of UID EXPUNGE and trash all of the +messages that would otherwise be undeletable. +> If you do believe that, then you are wrong. I know of multiple clients, +> including at least one with millions of users, that have undelete as +> Philip describes. +Name at least the one with millions of users. +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22880.mbox:2,S new file mode 100644 index 00000000..235c2dfb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22880.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From tss at iki.fi Thu Feb 21 16:35:14 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +In-Reply-To: +References: <1203623023.4901.242.camel@hurina> + <47BDE0F2.4070704@watson.ibm.com> + + <1203631656.4901.270.camel@hurina> + +Message-ID: <1203640514.4901.280.camel@hurina> + +On Thu, 2008-02-21 at 14:14 -0800, Mark Crispin wrote: +> On Fri, 22 Feb 2008, Timo Sirainen wrote: +> > So, how is this related to what you said about substring searches a year +> > ago? +> > http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-December/000328.html +> +> That dealt with false *negatives* due to failure to do substring matching. +> +> I don't object to fuzzy matching that adds positives that a non-fuzzy +> search would not match. +> +> But that is a good question. It deserves clarification in the +> specification. The principle should be "match what you are required to +> match, but if you have some fuzzy algorithms that produce useful +> additional matches, then go for it." + +What do you think the fuzzy matching fields could be? + + - SUBJECT, TEXT, BODY at least + - FROM, TO, CC, BCC real name fields, user@domain maybe? + - HEADER x y? HEADER message-id, in-reply-to, references (and maybe +others?) probably a bad idea. + - SMALLER, LARGER probably not? (So server couldn't decide that 1MB+1 +wouldn't match with SMALLER 1048576) + - Date searches not(?) + - Keywords not + +> > I doubt Google (or anyone else implementing fuzzy matching) supports +> > substring matching. +> +> They claimed that it works. + +Not at least in the current public implementation: + +x search subject different +x* SEARCH 1 +x OK SEARCH completed (Success) + search subject ifferent +* SEARCH +x OK SEARCH completed (Success) + +x search body thanks +* SEARCH 1 5 8 +x OK SEARCH completed (Success) +x search body hanks +* SEARCH +x OK SEARCH completed (Success) + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22883.mbox:2,S new file mode 100644 index 00000000..458be71b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22883.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From MRC at Washington.EDU Sun Jan 27 13:10:29 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] IMAP servers with no INBOX -- any indicators? +In-Reply-To: <08Jan27.130026pst."58696"@synergy1.parc.xerox.com> +References: <08Jan25.123007pst."58696"@synergy1.parc.xerox.com> + <978EF551-4028-4CC6-972F-2BF8451706B2@iki.fi> + + <19909.1201425859.710608@peirce.dave.cridland.net> + <08Jan27.130026pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 27 Jan 2008, Bill Janssen wrote: +> I think there's a pretty clear implication that it may not exist. + +Putting on my historical hat: + +It was the intent from the inception of IMAP that INBOX always exist. It +was not until 6 or 7 years later that there was any hint that there might +be such a thing as a server that didn't have an INBOX. + +The text that you quote in 6.3.8 comes from the latter time, and was an +intent to back off from stating that INBOX was a MUST. + +I, personally, never found the arguments for such a non-INBOX IMAP server +to be particularly compelling. Those arguments generally revolve around +shared mailboxes servers, such as servers that support newsgroups. + +I, personally, feel that even though INBOX may not be particularly +meaningful on such a server, such servers are administrative special cases +where INBOX is always empty as opposed to something that the protocol must +define. Otherwise, we could end up with servers that require user fred to +do + tag SELECT /var/spool/mail/fred +because, for some reason, it did not offer INBOX. + +Hence what we ended up with that text in 6.3.8; an obscure reference to a +server that might not have INBOX, but nothing that actually promotes such +a thing. + +If there is a clear majority concensus, I would strongly support making +INBOX mandatory and deleting that text in 6.3.8 entirely. However, I +suspect that this is a sleeping dog that is best allowed to lie. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22893.mbox:2,S new file mode 100644 index 00000000..fe6dfd5c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22893.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From tjs at psaux.com Mon Oct 29 16:14:11 2007 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + +Message-ID: <47266943.2010409@psaux.com> + +Mark Crispin wrote: +>> IMAP lore says this is what killed IMAP 3. +> +> There was quite a bit that killed IMAP3; a total misunderstanding the +> unsolicited data model of IMAP, an incorrect understanding of how to +> handle MIME, and some truly silly facilities like SET.EOL. +> +> Then there are such obtuse statements as "this allows the client not to +> have to block on some complex predicate that involves watching to see an +> update in a cache cell" which make no sense until you you realize that +> it refers to one particular client written in Common Lisp. + +I withdraw the comment. (I made it based on something I read on this +list some number of years ago, and I've never read the IMAP3 document. +Good thing, too. :-) ) + +>> I'm not opposed to client-side capabilities, as I think we need a way +>> to get rid of some of the cruft of the protocol eventually. But I do +>> think we ought to be able to specify a strict, increasing order for +>> such extensions. + +> Perhaps we should just punt doing the right thing to IMAP5, and add +> UTF8.FLAGS as a FETCH command and UTF8.LIST/UTF8.LSUB as basic commands +> (with perhaps something for LISTEXT if you like...but I don't want a +> dependency on LISTEXT). + +What's the real difference between having strictly-increasing client +capabilities, or revising the base spec? In both cases, we're bundling +some arbitrary set of protocol changes and requiring client/server +support for all of them. + + +Thinking about this a little more, I think there's an argument to be +made for limiting capabilities and trying to decrease the number of +different available capability sets, but we probably also need some +amount of forking near the cutting-edge of protocol. + +But if UTF8 is the first one, and it's successful and widely adopted, +whatever the next wave is, should require UTF8. + +But I'm very concerned about the complexity here. It's apparently hard +to implement correct IMAP clients and servers now. + +I'm not at all convinced of the wisdom of any of these approaches, but I +am enjoying the discussion. + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22911.mbox:2,S new file mode 100644 index 00000000..9ae5c566 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22911.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Thu Jun 14 01:26:25 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: <20070614003209.E9774@orthanc.ca> +References: <466FE56C.7000900@hiramoto.org> + + <20070614003209.E9774@orthanc.ca> +Message-ID: + +On 6/14/07, Lyndon Nerenberg wrote: +> > FYI, that's what Apple Mail.app already does. +> +> Mail.app gets a few things wrong. But now that their developers are +> participating with the IMAP community we are getting those bugs fixed. + +Do you have any example(s) of this ? +I do not see anything wrong in using flags for marking messages as Junk. + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22914.mbox:2,S new file mode 100644 index 00000000..0ab4a298 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22914.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 23 23:36:50 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: <1179984406.32181.1730.camel@hurina> +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> +Message-ID: + +On Thu, 24 May 2007, Timo Sirainen wrote: +> And I suppose it's OK for server to drop unused keywords from a FLAGS +> reply and announce that to clients at any point? + +I would not remove flags, nor change the order of flags in the FLAGS +response, during a session. + +> Is it a good idea to drop unused keywords whenever their last user +> (message) went away? + +Simple answer: "probably not" + +See below for more discussion. + +> Or should I bother adding some kind of a "unused +> for one month (or so)" timeout too? + +Simple answer: "probably" + +More discussion: + +The IMAP specification is silent on the matter because there was no clear +understanding on anyone's part what is right. + +I think that it is alright (from a protocol point of view) to remove +unused flags in a new session (but NOT during a session!). That's one +reason why flags are announced; to show what is there. + +Put another way: a subsequent FLAGS response in a session should only add +flags at the end of the list, but a FLAGS response in a new session can +reorder/remove flags. + +From a usability point of view (as opposed to protocol point of view), I +think that unused flags should be retained for a reasonable period of +time, and perhaps not removed at all unless there is some good reason +(such as an excessive number of unused flags). + +For example, UW imapd has a limit (inherited from the 1980s when it was +quite generous) of 30 unique keywords per mailbox. That limit is quite +inadequate today, especially if people want to do a gmail style mail +organization. I plan to remove this limit for mix format mailboxes (older +legacy formats will keep the limit), sooner rather than later. + +Anyway, if the mailbox uses up its 30 keywords, and there's a bunch of +unused ones, it's reasonable to clean those up. That hasn't been done by +any automated mechanism yet. It's on my to-do list; and even if mix +repeals the limit there will need to be some sort of garbage collection. + +A server which has no limit, but finds itself with 3000 keywords in the +mailbox of which only 8 have been used in the past 3 years, is IMHO quite +adequately provoked into doing some recycling! + +I use only 6 keywords myself. I would be *very* unhappy with an IMAP +server that deleted any of my keywords due to disuse, no matter how long +the period. A mere 6 keywords is not (should not be) costly to keep +around! + +I think the key here is "use some common sense". I can't say what numbers +are "good" numbers since I think we're all groping towards a "sweet spot". +6 is "obviously small enough to be left alone", and 3000 is "obviously +huge enough to clean up"; so the threshold is somewhere in the middle. + +UW imapd has only heard the first rumblings of "30 isn't enough" (but +there *are* rumblings). So I think that a "sweet spot" for cleaning up +unused keywords is somewhere in the 2-digit range. + +The best thing is to try something that appears reasonable and see. + +Eventually, there will probably be enough collective community knowledge +that we can provide more precise guidelines to future implementors. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22917.mbox:2,S new file mode 100644 index 00000000..fcd29a69 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22917.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From dave at cridland.net Wed Apr 11 08:16:32 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] ACL: GETACL and "always granted" rights +In-Reply-To: <1998622862.168451176303885705.JavaMail.root@dogfood.liquidsys.com> +References: <1998622862.168451176303885705.JavaMail.root@dogfood.liquidsys.com> +Message-ID: <6701.1176304592.256996@peirce.dave.cridland.net> + +On Wed Apr 11 16:04:45 2007, Dan Karp wrote: +> > > If a user has rights that "will always be granted" on a mailbox +> > > (e.g. that show up in the first rights set in a LISTRIGHTS +> untagged +> > > response), is that user/rights pair to be listed in the GETACL +> > > response on that mailbox? +> > > I don't think you'd confuse clients by having a degree of +> discrepency +> > between LISTRIGHTS and GETACL, but you might confuse clients by > +> including entries in the ACL if they're not really needed. (For > +> example, Thunderbird decides whether a mailbox is shared according +> to +> > the contents of the ACL.) +> +> OK. So a reasonable implementation might, say, fail to include the +> authenticated user's default rights on their own mailboxes? + +Actually, you probably want to include that. I'd not be surprised if +Thunderbird would get confused otherwise. It's other things you +probably don't want to include, such as any rights that +administrative users or system users have. + +Arguably, you don't want those to be listed in LISTRIGHTS either. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22920.mbox:2,S new file mode 100644 index 00000000..fc1fffc1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22920.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Mar 11 15:50:03 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +In-Reply-To: <5aK4EfZGxwhHX3617xc/FQ.md5@libertango.oryx.com> +References: <"07Mar11. 134508pst. 57996"@synergy1.parc.xerox.com> + <5aK4EfZGxwhHX3617xc/FQ.md5@libertango.oryx.com> +Message-ID: + +On Sun, 11 Mar 2007, Arnt Gulbrandsen wrote: +> Every IMAP server author? But people generally don't publish it, perhaps +> because it tests a specific server rather than IMAP generally and extending +> it would be more work than it's worth. + +That's been the general problem all alone. Another problem with test +suites is that it leads to servers which pass the test suite, but are +otherwise broken. A server vendor should not have advance access to what +is in the test suite, but rather should be given a list of the tests that +the server failed. Also, the tests should change over time (no memorizing +the exam!). + +The old-time servers were tested by hand by people who were intimately +familiar with every aspect of the protocol, and only afterwards were +clients developed. This has one advantage in that you reduce the +unknowns; since the server is known to work then problems must be with the +client code. + +Unfortunately, that "oldtimer" practice didn't help the second generation +much, nor did it help the third generation at all; especially for those +server developers who resolved questions about the protocol via empirical +testing with a client. + +Anyway,... + +Try Pine/Alpine, since it uses almost all of IMAP's facilties and does so +in advanced ways that many other IMAP clients do not. Pine/Alpine is the +closest thing we have today to an IMAP server "acid test". Be sure to try +searching, complex filters, and detaching of nested attachments. + +Pay close attention to the ABNF in the formal syntax. IMAP is quite rigid +on matters of syntax. Read the specification carefully; there are many +subtle but important details that you will miss if you skim through it. + +Good luck! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22957.mbox:2,S new file mode 100644 index 00000000..158a5a2a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22957.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Dec 20 14:12:30 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Command cancellation +In-Reply-To: <1166644158.22214.365.camel@hurina> +References: <1166644158.22214.365.camel@hurina> +Message-ID: + +On Wed, 20 Dec 2006, Timo Sirainen wrote: +> I wanted an ability to stop an ongoing SEARCH command, so that it'd be +> possible to add a "Cancel search" button in the client. + +How long do searches take in your server? + +Once messages are parsed, I've never had a search in my server fail to +outrun anything like a CANCEL operation. The only time I've seen a search +of a large mailbox take a noticable amount of real time is when a large +number of messages haven't been parsed for MIME structure yet. That will +be resolved in a forthcoming update to the mix format that caches +envelopes and bodystructures. + +Due to IMAP's stateful nature, in most cases the only choices are to wait +or to abandon the session. SEARCH, SORT, and THREAD are the only obvious +commands that could benefit from CANCEL; and in all three cases it should +be possible to resolve performance problems. + +In general, I think that it's preferable to remedy performance problems +rather than to create a complex mechanism (and the necessary semantics of +CANCEL are complex) to work around performance problems. + +With that in mind, CANCEL seems to me to be a solution in search of a +problem. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22960.mbox:2,S new file mode 100644 index 00000000..4bbfe286 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22960.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Fri Nov 24 01:29:25 2006 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: <20061123140532.C1467@gollum.dev.gmi-mr.com> +References: + <20061123140532.C1467@gollum.dev.gmi-mr.com> +Message-ID: + +On 23 Nov 2006, at 23:20, Lyndon Nerenberg wrote: + +> On Thu, 23 Nov 2006, Mark Crispin wrote: +> +>> For what it's worth, UW imapd has a 3 minute pre-authentication +>> autologout timer. There are actually two pre-authentication +>> autologout timers: the normal inactivity autologout timer, and an +>> non-authenticated session age time which is enforced at command +>> completion. The latter is cancelled by a successful +>> authentication; a session could be over-age but still within the 3 +>> minute inactivity grace, but it must authenticate at that point. +>> The upshot is that a non-authenticated session will die between 3 +>> and 6 minutes from its startup. +> +> This addresses a concern that immediately came to mind, that of +> someone setting a 30 second timeout. Remember that the client can't +> prompt for a password until it knows which authentication mechanism +> is to be used. So we wind up with a scenario like: +> +> C: 0 authenticate digest-md5 +> [client asynchronously prompts user for password] +> S: + mumblefooetc ... +> [user fumbles for scrap of paper with password, then slowly types it +> in, backspacing and correcting along the way ...] +> S: * BYE you type too slowly +> [server closes connection] +> [client terminates login attempt due to server error] + +But the client will store (securely) the password locally and send it +automatically without the user has to type the password. +The alternative for the client is to reconnect to send the password +that was typed if the session disconnected (it will occur once while +the password is still valid if the password is stored on client-side +(hopefully passwords don't change too often)). + +-- +DINH Vi?t Ho? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22974.mbox:2,S new file mode 100644 index 00000000..f00a1e25 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22974.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 12 14:25:59 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <20060912134901.F80085@orthanc.ca> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> <20060912134901.F80085@orthanc.ca> +Message-ID: + +On Tue, 12 Sep 2006, Lyndon Nerenberg wrote: +> I'd start with defining "good." The problem with a protocol as complex (some +> would say bloated) as IMAP is that -- from the client's perspective -- there +> is no one "right" way to use it. + +I would disagree... ;-) + +RFC 1064 and 1176 had some text outlining the right way to go about +looking at the roles of client and server in IMAP. But I took so much +criticism about how I did not "understand" the architecture of IMAP(!) +that I removed that text in RFC 1730. [The critics in question are no +longer active members of the IMAP community.] + +Briefly: + +There is a mailbox "state", of which the server has full knowledge. The +server has the ability, at will, to update and add to the client's state. +The client can also request the server to send updates/additions, and the +server sends back a done response when it has finished doing so. + +Once the client establishes a session with a mailbox on the server, the +server immediately starts sending some updates (e.g., EXISTS). The +client, on an as-needed basis, references data from its state and when a +hole is encountered requests a state addition from the server. The client +may also request state additions on an anticipatory basis. Think of how +page fault handling works in a demand-paged system. + +In the online model, a client starts with empty state. In the +disconnected model, the client has some remembered state and has to +synchronize that remembered state with the server's state. + + +Anyway, most clients don't do all this. They just download-and-delete +(pure offline model POP-style). A few are online, but don't keep a state +so they are constantly re-FETCHing the same static data. + +> Different client implementations have +> different goals, and thus different demands of the server. In some cases it +> makes sense for the client to (say) talk to the server using a restricted +> feature set that, when examined without context, makes it look like the +> client is just a glorified POP engine. + +True. However, even such clients can still implement the underlying IMAP +architecture properly. I have to wonder when I see clients that +repeatedly re-fetch the same static data in a single session. + +> And if you do ever manage to define "good" you then get to solve the problem +> of determining what constitutes "compliant" behaviour when faced with the n! +> permutations of extensions interacting with and without each other. +> This isn't going to happen in my lifetime. + +Sadly, all true. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22983.mbox:2,S new file mode 100644 index 00000000..7f7b2b2b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22983.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From spatankar at starentnetworks.com Fri Aug 25 03:44:33 2006 +To: imap-protocol@u.washington.edu +From: "Patankar, Sujay" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] ABNF grammar for email header fields.. +Message-ID: + +Hi, +Where can I find ABNF grammar for email header fields like From, To, +Date, Content-Class, etc? I could find grammar for Content-Type in RFC +2045, but I can't seem to find the other ones. +Thanks, +Sujay. + + +"This email message and any attachments are confidential information of Starent Networks, Corp. The information transmitted may not be used to create or change any contractual obligations of Starent Networks, Corp. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this e-mail and its attachments by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify the sender immediately -- by replying to this message or by sending an email to postmaster@starentnetworks.com -- and destroy all copies of this message and any attachments without reading or disclosing their contents. Thank you." + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22987.mbox:2,S new file mode 100644 index 00000000..33306902 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22987.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Jul 21 11:26:43 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LDAP authentication not working for IMAP +In-Reply-To: <44C11A97.1020304@gentoo.org> +References: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> + + <44C10CD8.8030602@gentoo.org> + + <44C11A97.1020304@gentoo.org> +Message-ID: + +On Fri, 21 Jul 2006, Jan Kundrt wrote: +> Well, provided the uw-imapd uses the standard glibc calls, a properly +> configured nss (/etc/nsswitch.conf) should be enough. It's a system's +> configuration, not the imapd's one. I'm not familiar with the uw-imapd +> internals, though, and we're off-topic here :). + +UW imapd uses getpwnam() and getpwuid(). It also, if configured for PAM +authentication, uses PAM for password validation. It has no internal +knowledge of LDAP. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.22999.mbox:2,S new file mode 100644 index 00000000..a8a8ecf9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.22999.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jun 30 09:36:34 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: +Message-ID: + +On Fri, 30 Jun 2006, DINH Vi?t Ho? wrote: +> Is something will be breaking if we don't send the LOGOUT command ? + +It's not a good idea. + +(1) Some servers may perform a cleanup or checkpoint operation during +LOGOUT. Of course, the server will try to trap disconnect, and do the +checkpoint anyway in the trap handler. However, a few (thankfully, rare) +OS environments send mandatory (non-trappable) kills to servers on +disconnect. Thus, the disconnect can actually cause a loss of cleanups or +mailbox updates! + +This is a real problem in some mailbox formats (e.g., traditional UNIX +mailbox format). It is very expensive to update the mailbox file, so flag +changes are deferred until a checkpoint. + +(2) The server is going to log the disconnect as a non-LOGOUT session +termination event. It has no way of knowing that the client intended to +do this. This, in turn, leads to false bug reports. + +> Is there a recommended behavior to adopt to avoid that problem ? + +Yes. There is no reason why your client must block waiting for the server +to LOGOUT. All it has to do is send the LOGOUT command and defer closing +the TCP connection until the BYE and OK response comes back. In the +meantime, it can do something else. + +In a multithreaded environment, the LOGOUT could be given to a thread. +Alternatively, the client can fork off another instance of itself +(invisible to the user), let the fork have the sockets and go off on its +own, and the parent fork which has the user interface forgets the sockets. + +This way, the user sees an immediate termination, whereas behind the +curtain the funny man is busy pulling the levers and twirling the dials. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.23014.mbox:2,S new file mode 100644 index 00000000..6a182751 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.23014.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From adibuciuman at gmail.com Tue Apr 4 11:05:30 2006 +To: imap-protocol@u.washington.edu +From: Adrian Buciuman +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] question about BAD +In-Reply-To: <3U7SPhfQsmhufeOzNE9EZQ.md5@libertango.oryx.com> +References: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> + <3U7SPhfQsmhufeOzNE9EZQ.md5@libertango.oryx.com> +Message-ID: <35e353d50604041105r348528fo425936204763871c@mail.gmail.com> + +On 4/4/06, Arnt Gulbrandsen wrote: +> You can't ask the server to wait until the end of something it doesn't +> recognize. + +Why not? I belive it can wait until a LF is received from the client. diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.23031.mbox:2,S new file mode 100644 index 00000000..c0fb54eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.23031.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From frantz at info.univ-angers.fr Wed Mar 15 02:08:06 2006 +To: imap-protocol@u.washington.edu +From: Frantz de Germain +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem with imaps +In-Reply-To: <4417E30A.6070302@metu.edu.tr> +References: <20060315102900.d419b50d.frantz@info.univ-angers.fr> + <4417E30A.6070302@metu.edu.tr> +Message-ID: <20060315110806.1755fbc3.frantz@info.univ-angers.fr> + +Le Wed, 15 Mar 2006 11:48:58 +0200 +Burak Bilen ?crivait: + +> Hi, +> You can test imaps with openssl s_client, the exact command is: +> +> openssl s_client -connect imaphost:993 +> +> After then you should see more helpful debug data in your log files. + +I've tried and I can connect this way (strange). Here is a part of the result +(without the certificate I've seen) : + +CONNECTED(00000003) + +(...) + +--- +* OK [CAPABILITY IMAP4REV1 LITERAL+ SASL-IR LOGIN-REFERRALS AUTH=PLAIN AUTH=LOGIN] imaphost.mydomain IMAP4rev1 2004.357 at Wed, 15 Mar 2006 10:56:40 +0100 (CET) + + +After that, I can use different imap commands + +Nothing very interesting in the logs : + +==> imapd.log <== +06/3/15@10:56:36: START: imap pid=10953 from=172.xxx.xxx.xxx + +==> simapd.log <== +06/3/15@10:56:40: START: imaps pid=10955 from=172.xx.xxx.xxx + + +Regards + +-- +Frantz de Germain +Web : http://www.info.univ-angers.fr/pub/frantz +Membre de la Soci?t? d'Astronomie de Nantes : http://www.san-fr.com/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.23036.mbox:2,S new file mode 100644 index 00000000..7df0fb02 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.23036.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Feb 22 14:12:39 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] UWImap / True64 / Existing Accounts Question +In-Reply-To: <002001c637f4$64753a70$180fa8c0@Gentelco.com> +References: <002001c637f4$64753a70$180fa8c0@Gentelco.com> +Message-ID: + +Hello Ron - + +For future reference, usage questions about the UW IMAP software should go +to the imap-uw (and/or imap-use) list instead of the imap-protocol list. +I'm redirecting this thread there. + +How did you build the software ("make osf", "make sos", "make os4")? + +The "make os4" build uses the SIA calls (sia_validate_user() and +sia_become_user()). This SIA code was supplied to us by Digital/Compaq +several years ago, but we never got it to work right for us. I also have +received reports from other sites saying that the os4 build's usage of +sia_become_user() causes the user not to get proper file access and the +job can't be killed. However, Digital/Compaq insisted that the SIA +support code was correct. + +Back when we still used that operating system, we always used "make sos", +which uses the SecureWare getespwnam() call instead. We still have a +couple of Tru64 systems for testing, but we've pretty much abandoned it in +favor of Linux (let's just say that we had some problems with AdvFS). + +So, if you used the "make os4" build, try the "make sos" build and see if +that resolves your problem. + +On Wed, 22 Feb 2006, Ron Hartman wrote: +> We recently installed UW Imap via the True64 Internet Express installation +> application. All appears to be working exceptionally well except for one +> thing: +> Accounts that existed on our server prior to the install will not +> authenticate. Any new accounts that are created authenticate just fine. My +> assumption is that I have to run some type of script to modify / create +> something on the accounts that are not working - but I've been unable to +> get it figured out. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.23040.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.23040.mbox:2,S new file mode 100644 index 00000000..3176d7c8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.23040.mbox:2,S @@ -0,0 +1,117 @@ +MBOX-Line: From miguel at mtelleria.com Fri Jan 20 02:18:41 2006 +To: imap-protocol@u.washington.edu +From: Miguel Telleria de Esteban +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Telnet IMAP on Exchange 5.5 +In-Reply-To: +References: +Message-ID: <1137752321.7151.8.camel@ines> + +Hello Daan, + +El vie, 20-01-2006 a las 10:28 +0100, Daan Rijnders escribi?: +> Hello, +> +> I might be on the complete wrong list, but I still hope their might be +> someone who can send me into the right direction. +> +> I'm trying to connect to my exchange server using Telnet on port 143 +> (IMAP). + +[Note: I have never used Exchange and I am not familiar with its +particularities]. + +> I'm getting the mail servers welcome message, but then I need to enter +> my login credentials. + +This proves that as far as telnet is concerned the connection is +correctly established. + +> I enter: "? Login domain/username password" (without the quotes) + +I don't know if maybe the character '?' would create a problem. Use a +normal text label by typing something like: + + a001 login + +> this results in an error: one of the requested permissions is not +> assigned to the client. + +Can you send us the exact error message? (this might help seeing the +problem). + +Maybe for some reason the server does not succeed to create/read the +possibly needed mail storage area... + +> I checked this on the Exchange server to see if my user is IMAP +> enabled and did the same thing in Active Directory. Both state that my +> user is able to use IMAP. + +I have never used Exchange but I have heard that indeed the user's IMAP +access needs to be explicitly enabled. Apparently this is the case. + +> Question: is this case sensitive? Should I use all CAPS? forward +> slashes? + +AFAIK IMAP protocol is case insesitive to the commands. Of course +login and password values are system dependent. + +> +> Is there any kind of guide on IMAP using telnet? + +As I said above, I think that the problem is not related to telnet. +Exchange or any other server does not have the capacity to know whether +the connection comes from Outlook, Mozilla thunderbird or a telnet +process. + +If you want to know the exact commands to send and the possible expected +responses I don't know of an available out-of-the-box guide (maybe +somebody here knows). + +I would suggest the following approaches: + +A) Grab the IMAP standard (RFC3501) and give it a global overview. + +B) If you have access to a working IMAP server with an IMAP client, + capture a session with Ethereal and try to reproduce it in the + telnet connection. + +> Microsoft has 1 KB article but I already noticed that they misspelled +> the login line, and they expect that the login works. +> + +Microsoft is well known for not following standards in their products. + +And besides, having their own exchange protocol I don't think they are +interested in promoting IMAP support beyond some basic needs (like +importing emails from an existing IMAP account). + +So I wouldn't expect any help from them in this matter. + +> Can anyone shine a light on this one? +> +> Cheers, +> Daan +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +-- + + (O-O) +---oOO-(_)-OOo----------------------------------------------------- + Miguel TELLERIA DE ESTEBAN Personal Homepage: + Email: Miguel at mtelleria.com http://www.mtelleria.com + + Miembro de http://www.linuca.org Tel home: +32 2 280 1614 + Membre de http://www.bxlug.be GSM: +32 497 038804 +------------------------------------------------------------------- +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095126.23045.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095126.23045.mbox:2,S new file mode 100644 index 00000000..c27169b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095126.23045.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From ganesh.takawle at solversa.com Mon Dec 12 21:01:14 2005 +To: imap-protocol@u.washington.edu +From: Ganesh +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Regarding Implementing IMAP +Message-ID: <001801c5ffa2$50e49670$1500a8c0@Ganesh> + + +Hi + I need some help regarding the IMAP protocol. + Can you prvid some help for constructing the protocol as IMAP. Or +how the IMAP is constructed . I know all the functionality supported by IMAP +but need to know actuallly how it is constructed... + +Any kind of help is appreciated, + +Cheers +Ganesh + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22756.mbox:2,S new file mode 100644 index 00000000..5869ac2d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22756.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From mrc+imap at panda.com Wed Nov 16 13:53:20 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] SELECT/EXAMINE clarification of UNSEEN +In-Reply-To: <29330.1321477120.891382@puncture> +References: + + <1321311798.30750.140660998918417@webmail.messagingengine.com> + <4EC1A0A5.8051.EFC2A39@David.Harris.pmail.gen.nz> + <1321346922.6321.140660999083661@webmail.messagingengine.com> + <4EC268D1.7010404@aol.com> + <1321364880.3715.140660999182809@webmail.messagingengine.com> + + <20111115233902.GA1071@brong.net> + + + + <29330.1321432388.123579@puncture> + + <29330.1321477120.891382@puncture> +Message-ID: + +On Wed, 16 Nov 2011, Dave Cridland wrote: +> What I am saying is that had you offered a (potentially more basic) +> IMAP service, but with an additional, well-designed extension to +> handle the extended abilities of your message store, that would have +> both enabled access, and in addition pushed the boundaries a bit (in, +> I might add, a very sensible direction). + ++1 + +The status quo is that presents an IMAP server that violates several of +the semantics of IMAP, and confuses the hell out of some clients that +expect GMail to obey those semantics; all in the name of confusing some +other clients in a (desirable?) way. + +Then there are the (many) bugs, having nothing to do with message store +semantics, which remain unfixed. GMail's performance on Timo's compliance +test suite is mediocre at best. + +The result is that the best thing to do with GMail is use fetchmail to +download the messages to the client, and then operate on them as local +files. That, coincidentally(?), is mostly equivalent to the internal +workings of the clients that GMail targets. + +> Yes, but I don't see that the goal of providing reasonable service to +> existing tools is in conflict with pushing to improve those existing +> tools. And because Google is big, you can actually provide sufficient +> encouragement to do so. + ++1 + +Kludge towers and unfixed bugs don't help the world move forward. Correct +basic implementations, plus well-considered extensions, do. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22772.mbox:2,S new file mode 100644 index 00000000..1e87bc59 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22772.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From koug at intracom.gr Fri May 27 01:53:40 2011 +To: imap-protocol@u.washington.edu +From: John Kougoulos +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> +Message-ID: + + + +On Fri, 27 May 2011, Timo Sirainen wrote: + +> I've noticed there are many people who want web 2.0 kind of interface to +> emails (xml/ajax/dunno), and I've been thinking maybe I might just as +> well do something like that. I'm sure the protocol will suck, but if it +> gets us better email clients maybe it's a good thing overall. (And why +> aren't they just using IMAP? Because they're scared of even trying to +> use it. Hmm. IMAP over XML maybe?..) +> + +Communigate has done something similar, see: +http://www.communigate.com/cgatepro/XMLAPI.html#Mailbox + + +Regards, +John + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22807.mbox:2,S new file mode 100644 index 00000000..9ae957a8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22807.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 17:59:28 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006120251.24779.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120159.05366.witold.krecicki@firma.o2.pl> + + <201006120251.24779.witold.krecicki@firma.o2.pl> +Message-ID: + +On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +>> If you do believe that, then you are wrong. I know of multiple clients, +>> including at least one with millions of users, that have undelete as +>> Philip describes. +> Name at least the one with millions of users. + +Pine/Alpine. There were several tens of thousands of users at UW alone. +Other institutions of comparable size had similar numbers. + +UW also kept statistics, in part through a phone-home. And yes, +duplicates were filtered. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22880.mbox:2,S new file mode 100644 index 00000000..82d42fda --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22880.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From MRC at Washington.EDU Thu Feb 21 17:31:47 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +In-Reply-To: <1203640514.4901.280.camel@hurina> +References: <1203623023.4901.242.camel@hurina> + <47BDE0F2.4070704@watson.ibm.com> + + <1203631656.4901.270.camel@hurina> + + <1203640514.4901.280.camel@hurina> +Message-ID: + +On Fri, 22 Feb 2008, Timo Sirainen wrote: +> - SUBJECT, TEXT, BODY at least + +Yes. + +> - FROM, TO, CC, BCC real name fields, user@domain maybe? + +Yes. For the address list, I canonicalize the names into RFC 2822 +shortest form. I probably should always use phrase route-addr form in +order to make "" always match. + +> - HEADER x y? HEADER message-id, in-reply-to, references (and maybe +> others?) probably a bad idea. + +You're probably right here, but I don't want to commit to any definite +statement here since I haven't thoroughly considered all the +possibilities. + +> - SMALLER, LARGER probably not? (So server couldn't decide that 1MB+1 +> wouldn't match with SMALLER 1048576) +> - Date searches not(?) +> - Keywords not + +Probably not for all of these. The client can easily broaden these if it +wanted a bit of fuzz. + +>>> I doubt Google (or anyone else implementing fuzzy matching) supports +>>> substring matching. +> Not at least in the current public implementation: + +Oh well... I hope that they fix that. I think that they would have a +difficult time arguing that a search for "tokyo" should not match +"neotokyo"... ;-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22883.mbox:2,S new file mode 100644 index 00000000..021adfeb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22883.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From janssen at parc.com Sun Jan 27 16:27:44 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +Message-ID: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> + +I've updated my table of client capabilities, which is now at + + http://uplib.parc.com/misc/imapclients.html + +I've also added a link to it from Timo's wiki. + +I'll appreciate updates to it, as well, particularly on new clients +like the iPhone's email client. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22893.mbox:2,S new file mode 100644 index 00000000..5cb6883a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22893.mbox:2,S @@ -0,0 +1,104 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 16:16:23 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + +Message-ID: + +On Mon, 29 Oct 2007, Sarah Wilkin wrote: +> Is there a single place that summarizes goals of future IMAP proposals or +> extensions? I've seen several ideas come up on this list; are these captured +> publicly anywhere? I don't see anything on http://www.imap.org/, and the +> ietf-imapext list looks a bit too specific. + +IMHO, most of the people who've done IMAP over the years would rather +curtail further IMAP extensions. IMAP has too many extensions, and +although every one has a passionate set of defenders the fact is that most +clients and servers implement few (if any) of these. Then there are the +servers which misimplement extensions (such as Courier doing so for SORT +and THREAD). + +In case someone would like to put together such a list, here is a strawman +(to throw to the wolves!) of how I would rate the currently published set +of extensions. Other people undoubtably have much different opinions and +will vehemently disagree with this list. + +(0) Needed. Now. Should drop everything else to address: + + IMAP internationalization + UTF-8 mailbox names + UTF-8 flag names + +(1) Should go into any major revision (e.g., IMAP5) of the base +specification, either because it is essential or is "low-hanging fruit" +that fixes an obvious deficiency: + +rfc5051.txt i;unicode-casemap comparator +rfc2177.txt IDLE +rfc3502.txt MULTIAPPEND +rfc4959.txt SASL-IR +rfc4315.txt UIDPLUS + +(2) Nice to have, not strictly necessary, but for the most part +low-hanging fruit: + +rfc3516.txt BINARY +rfc3348.txt CHILDREN +rfc4731.txt ESEARCH +rfc2088.txt LITERAL+ +rfc3691.txt UNSELECT + +(3) Nice to have, but sometimes misimplemented, and so may not make the +cut: + +rfc2342.txt NAMESPACE + SORT/THREAD (in RFC Editor queue) + +(4) Ideas that never really got off the ground for various reasons and +are likely to fade into obscurity (sorry...): + +rfc4314.txt ACL +rfc4551.txt CONDSTORE +rfc2971.txt ID +rfc2221.txt LOGIN-REFERRALS +rfc2193.txt MAILBOX-REFERRALS +rfc2087.txt QUOTA + +(5) May become mandatory if IMAP on mobile devices takes off (as opposed +to being killed), otherwise doomed to category (4): + +rfc4469.txt CATENATE +rfc4978.txt COMPRESS +rfc4467.txt URLAUTH + convert + +(6) Much-discussed ideas that I don't see going anywhere (sorry...) but +category (4) if they make it to publication: + + annotations + LIST extensions + +(7) Everything else bandied about on IMAPEXT, a group that should have +dissolved years ago... + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22911.mbox:2,S new file mode 100644 index 00000000..75e25c5f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22911.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From lyndon at orthanc.ca Thu Jun 14 13:58:34 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: +References: <466FE56C.7000900@hiramoto.org> + + <20070614003209.E9774@orthanc.ca> + +Message-ID: <20070614135814.E17807@orthanc.ca> + +> I do not see anything wrong in using flags for marking messages as Junk. + +There isn't, as long as all the clients agree on the same set of flags. + +--lyndon + + We've heard that a million monkeys at a million keyboards could produce + the Complete Works of Shakespeare; now, thanks to the Internet, we know + this is not true. + -- Robert Wilensky, University of California + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22914.mbox:2,S new file mode 100644 index 00000000..2d10e9f5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22914.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dkarp at zimbra.com Thu May 24 00:08:09 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +Message-ID: <1738689467.102591179990489448.JavaMail.root@dogfood.zimbra.com> + +> The FLAGS response lists the flags which are applicable to a mailbox. +> A FETCH response that contains flags can only contain flags which are +> applicable to the mailbox. Therefore, if a FETCH response desires to +> contain a flag which is not in the current FLAGS response, a new FLAGS +> response must be issued that lists that flag. + +It certainly makes sense that changes in FLAGS elicit unsolicited +responses in much the same way as changes in EXISTS and RECENT do. +Along those lines, should the server be sending untagged notifications +with the appropriate response codes when the next message UID [UIDNEXT] +and lowest-sequenced unseen message [UNSEEN] change? + +> I think that it is alright (from a protocol point of view) to remove +> unused flags in a new session (but NOT during a session!). That's one +> reason why flags are announced; to show what is there. +> +> Put another way: a subsequent FLAGS response in a session should only add +> flags at the end of the list, but a FLAGS response in a new session can +> reorder/remove flags. + +Will any clients fail if either of these two suggestions are not followed +by the server? They both seem reasonable, but there doesn't appear to be +anything in RFC 3501 that requires that servers behave in that manner. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22917.mbox:2,S new file mode 100644 index 00000000..990ec6ae --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22917.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From bill.shannon at sun.com Wed Apr 11 14:15:15 2007 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] AppleMail contact? +Message-ID: <461D4FE3.8070706@sun.com> + +Somewhat off topic, but... + +Does anyone here have any contacts in the AppleMail organization? +I'm getting more and more complaints about JavaMail being unable +to parse messages that turn out to be incorrectly formatted messages +created by AppleMail. I'd like to find someone to fix the problem +at the source rather than continue to add workarounds for their bugs. + +Thanks. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22920.mbox:2,S new file mode 100644 index 00000000..6f053581 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22920.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 16:48:40 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +Message-ID: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + +Now I'm curious about the various mailbox hierarchy conventions that +may exist. + +I'm reading a lot on the Web about Apple Mail and its notion that all +mailboxes be sub-mailboxes of INBOX, apparently because a popular IMAP +server does it that way. + +I'm re-exporting an MH mail folder setup, with a structure that looks a lot +like + + ... + DL/python + DL/python/dev + DL/python/email + ... + work/meetings + work/papers + work/projects + work/projects/imap-server + ... + +and so on and so forth. The MH message ID numbers are the UIDs for IMAP, +I'm using a PyLucene index of all the mail for searching, etc. + +My plan was to basically represent each of these MH folders as an IMAP +mailbox, and add another top-level mailbox called "INBOX", which would +normally be empty (there's a procmail daemon that sorts the mail). So +there's a single namespace and there's no root for reference names. + + C: 2 list "" "" + S: * LIST (\Noselect) "/" "" + S: 2 OK LIST completed + C: 3 list "INBOX" "" + S: * LIST (\Noselect) "/" "" + S: 3 OK LIST completed + +This seems like a valid setup, from RFC 3501. But am I setting myself +up for grief from clients? Would life be simpler if I made everything +be a sub-mailbox of INBOX? + +Bill + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22957.mbox:2,S new file mode 100644 index 00000000..e892f798 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22957.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Dec 20 14:19:24 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: <1166643258.22214.350.camel@hurina> +References: <1166603479.22214.298.camel@hurina> + + <1166643258.22214.350.camel@hurina> +Message-ID: + +On Wed, 20 Dec 2006, Timo Sirainen wrote: +> Optimizing the string search would help some, but for large mailboxes +> it's still a bit too slow. People want instant search results +> nowadays. :) + +Please define what you mean by "large" and "instant". + +It took some effort for me to construct a mailbox that was pathologically +large enough for a search in UW imapd to take a whole 2 seconds. + +> Perhaps. I think it depends on how badly mail admins want it. If it's +> only a small s/BODY/X-NONEXACT-BODY/ replace for their webmail code, +> it'll get usage at least within Dovecot community. + +By the way, are you doing charset and i18n case-mapping in your +"non-exact" search? That, and not the searching, is what takes time. + +IMAP2 searches didn't have any of that; but for some reason the people in +non-English speaking countries didn't think that it was good enough. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22960.mbox:2,S new file mode 100644 index 00000000..09c9a222 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22960.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Nov 24 10:16:10 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: +References: + <20061123140532.C1467@gollum.dev.gmi-mr.com> + + +Message-ID: + +Hi Lyndon - + +I agree with you *completely* about the excessive propensity of certain +modern network software to destroy sessions in the face of temporary +network conditions. + +Please remember that I was dragged from the TOPS-20 world, kicking and +screaming. I remember well the good old days where, if the network got +cut (and that happened a lot in the "good" old days) for a few hours, I +could just keep paws off the TELNET client; once the network was restored, +my session to the TOPS-20 server would still be there. Even if the +connection was declared lost, the session would merely be detached, not +killed, and could be reattached to a new session. + +But the world went a different way. Ultimately HTTP will be the only +protocol. :-( + +I don't think that extending an IMAP server's non-authenticated timeout +will changing the tide; nor does anecdotal evidence suggest otherwise. I +am surprised to learn that the Dovecot server got away with a 1 minute +timeout (but note that he's changing it to match UW's 3 minute). + +I just don't see how 3 minutes for non-authenticated sessions is a +problem, or why 5 minutes would be a benefit. I oppose the proposal to +stipulate 5 minutes on the grounds that it's unnecessary and it renders +currently-compliant implementations non-compliant. + +I also think that it's a bad idea to put security policy in a protocol +without input from the security wonks. For all I know, the SWs may turn +around and say that 3 minutes is too long and it needs to be shortened. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22974.mbox:2,S new file mode 100644 index 00000000..4c9f03d6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22974.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Sep 12 14:32:38 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <45071A57.5080406@sun.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> +Message-ID: <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + +Bill Shannon writes: +> I'd be happy to have both 4.1.2 and 4.1.3 declared as not allowed behavior. + +That would leave us with only 4.1.1 and 4.1.4, which make it practically +impossible to delete a message. I don't like the security implications +of that. + +> What a shame there isn't a test suite to test conformance with the +> IMAP spec... + +Indeed. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22983.mbox:2,S new file mode 100644 index 00000000..5fcbfe7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22983.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From ams at oryx.com Fri Aug 25 03:59:42 2006 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: ABNF grammar for email header fields.. +In-Reply-To: +References: +Message-ID: <20060825105942.GB450@penne.toroid.org> + +At 2006-08-25 16:14:33 +0530, spatankar@starentnetworks.com wrote: +> +> Where can I find ABNF grammar for email header fields like From, To, +> Date + +RFC 2822. + +(MIME fields are specified in RFC 2045 and successors, but Content-Class +isn't one of those as far as I know.) + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22987.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22987.mbox:2,S new file mode 100644 index 00000000..c771441f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22987.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From jkt at gentoo.org Fri Jul 21 12:03:37 2006 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LDAP authentication not working for IMAP +In-Reply-To: +References: <4BFB6FF40EDF44418F01C60A094D1E7009C80A7A@FSTDKA98> + + <44C10CD8.8030602@gentoo.org> + + <44C11A97.1020304@gentoo.org> + +Message-ID: <44C12509.4070300@gentoo.org> + +Mark Crispin wrote: +> UW imapd uses getpwnam() and getpwuid(). It also, if configured for PAM +> authentication, uses PAM for password validation. It has no internal +> knowledge of LDAP. + +Then it should support LDAP out-of-the-box, IMHO. I've just verified and +both getpwnam() and getpwuid() are controlled by the NSS configuration, +test at [1]. You just need the nss_ldap package and a proper +/etc/nsswitch.conf. + +[1] http://dev.gentoo.org/~jkt/tmp/nss-test.c + +Cheers, +-jkt + +-- +cd /local/pub && more beer > /dev/mouth + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 260 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.22999.mbox:2,S new file mode 100644 index 00000000..64455cbf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.22999.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 30 09:49:01 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: +Message-ID: + +My suggestion: + +Send LOGOUT at the same time on all your connections, wait for one +second (you need not listen for responses), and quit. + +The connection close packets will arrive at the server about 0.8-1.2 +seconds after the LOGOUT commands, so the servers have started +processing LOGOUT by that time, and most servers will only discover +that the connection was closed when they've finished doing the logout +processing. (There are exceptions. At least one server discovers it +sooner.) + +This won't hurt the servers. You're behaving much like a random laptop, +so any server which has a problem with your behaviour has a problem +with normal laptop clients, too. (When a user closes the lid, the +laptop has to sleep right there and then. Not 30 seconds later.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.23014.mbox:2,S new file mode 100644 index 00000000..2d8b6f72 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.23014.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 4 11:11:54 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] question about BAD +In-Reply-To: <35e353d50604041105r348528fo425936204763871c@mail.gmail.com> +References: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> + <3U7SPhfQsmhufeOzNE9EZQ.md5@libertango.oryx.com> + <35e353d50604041105r348528fo425936204763871c@mail.gmail.com> +Message-ID: + +On Tue, 4 Apr 2006, Adrian Buciuman wrote: +> > On 4/4/06, Arnt Gulbrandsen wrote: +> > You can't ask the server to wait until the end of something it doesn't +> > recognize. +> Why not? I belive it can wait until a LF is received from the client. + +Nothing in the IMAP protocol requires the server to do so. Most servers +probably do, especially if they implement the LITERAL+ extension. + +However, your client should not care. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.23031.mbox:2,S new file mode 100644 index 00000000..c652fa27 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.23031.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From bilen at metu.edu.tr Wed Mar 15 03:20:07 2006 +To: imap-protocol@u.washington.edu +From: Burak Bilen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem with imaps +In-Reply-To: <20060315110806.1755fbc3.frantz@info.univ-angers.fr> +References: <20060315102900.d419b50d.frantz@info.univ-angers.fr> <4417E30A.6070302@metu.edu.tr> + <20060315110806.1755fbc3.frantz@info.univ-angers.fr> +Message-ID: <4417F867.4080104@metu.edu.tr> + +Ok, it seems that your imaps server is working. Do you have problems in +the authentication phase? +Did you try reading your mails with thunderbird or other mail clients +which support SSL? + +Frantz de Germain wrote: + +>Le Wed, 15 Mar 2006 11:48:58 +0200 +>Burak Bilen ?crivait: +> +> +> +>>Hi, +>>You can test imaps with openssl s_client, the exact command is: +>> +>>openssl s_client -connect imaphost:993 +>> +>>After then you should see more helpful debug data in your log files. +>> +>> +> +>I've tried and I can connect this way (strange). Here is a part of the result +>(without the certificate I've seen) : +> +>CONNECTED(00000003) +> +>(...) +> +>--- +>* OK [CAPABILITY IMAP4REV1 LITERAL+ SASL-IR LOGIN-REFERRALS AUTH=PLAIN AUTH=LOGIN] imaphost.mydomain IMAP4rev1 2004.357 at Wed, 15 Mar 2006 10:56:40 +0100 (CET) +> +> +>After that, I can use different imap commands +> +>Nothing very interesting in the logs : +> +>==> imapd.log <== +>06/3/15@10:56:36: START: imap pid=10953 from=172.xxx.xxx.xxx +> +>==> simapd.log <== +>06/3/15@10:56:40: START: imaps pid=10955 from=172.xx.xxx.xxx +> +> +>Regards +> +> +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.23036.mbox:2,S new file mode 100644 index 00000000..69589ef2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.23036.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Feb 23 09:06:06 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem in receiving mail using imap +In-Reply-To: <7FEBB30F0CE41B419B38295024A58EE34D63B9@oxygen.mail.telnet.tunis> +References: <7FEBB30F0CE41B419B38295024A58EE34D63B9@oxygen.mail.telnet.tunis> +Message-ID: + +For future reference, please send questions involving the UW IMAP software +to the imap-uw mailing list. The imap-protocol mailing list is for +questions dealing with the IMAP protocol architecture and not for software +questions. Thank you. + +There are several problems. + +First, you MUST NOT call mail_link() directly, and especially you should +not do it in a subroutine. Instead, at the very start of your main() +function, you should have: + #include "linkage.c" + +It is unpredictable what would happen if you fail to use the proper +linkage.c, or if you call mail_link() for the same driver multiple times. + +Second, I observe that you are doing: + //reouverture + l_mstream=mail_open(l_mstream,g_a_cOpenMailString,T); + //raifraichissement + l_mstream=mail_open(l_mstream,g_a_cOpenMailString,T); +immediately after the mail_expunge() call. I don't know why these +statements are there, but they are definitely wrong. + +Also note that in POP3, the action of an expunge does not actually happen +until a proper close. That is because the POP3 protocol does not remove +messages until QUIT time. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.23040.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.23040.mbox:2,S new file mode 100644 index 00000000..8f930714 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.23040.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From dave at cridland.net Fri Jan 20 07:23:05 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Telnet IMAP on Exchange 5.5 +In-Reply-To: +References: +Message-ID: <22231.1137770586.028491@peirce.dave.cridland.net> + +On Fri Jan 20 09:28:36 2006, Daan Rijnders wrote: +> I enter: "? Login domain/username password" (without the quotes) +> this results in an error: one of the requested permissions is not +> assigned +> to the client. I checked this on the Exchange server to see if my +> user is +> IMAP enabled and did the same thing in Active Directory. Both state +> that my +> user is able to use IMAP. +> +Right. Exchange's IMAP support is, contrary to popular belief, +actually quite reasonable, as far as I'm aware. The client support in +Outlook and Outlook Express is notoriously terrible, but credit where +credit's due. + + +> Question: is this case sensitive? Should I use all CAPS? forward +> slashes? +> +> +I can't remember - it's been ages since I messed about with IMAP on +Exchange. What I do remember is that you also need to specify the +alias, or at least used to need to. Officially, this isn't needed (or +wasn't then), but it won't login without it. This might even have +been on Exchange 5.5, but I couldn't honestly tell you. + +So for my case, it was something vaguely like Dave/FELSPAR/dac as a +username - where Dave was my NT login, FELSPAR the domain, and dac my +alias - that is, the local-part of the email address. The slashes +might have been the other way around, hence Dave\FELSPAR\dac - I'm +really not sure. + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.23045.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.23045.mbox:2,S new file mode 100644 index 00000000..3d6430de --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.23045.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Dec 12 21:04:46 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Regarding Implementing IMAP +In-Reply-To: <001801c5ffa2$50e49670$1500a8c0@Ganesh> +References: <001801c5ffa2$50e49670$1500a8c0@Ganesh> +Message-ID: + +On Tue, 13 Dec 2005, Ganesh wrote: +> I need some help regarding the IMAP protocol. +> Can you prvid some help for constructing the protocol as IMAP. Or +> how the IMAP is constructed . I know all the functionality supported by IMAP +> but need to know actuallly how it is constructed... +> Any kind of help is appreciated, + +I recommend that you get a copy of the book: + Internet Email Protocols: A Developer's Guide +by Kevin Johnson, published by Addison Wesley, ISBN 0-201-43288-9. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095127.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095127.23051.mbox:2,S new file mode 100644 index 00000000..df8d6c8f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095127.23051.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From davidmaxwaterman at fastmail.co.uk Wed Nov 2 19:49:45 2005 +To: imap-protocol@u.washington.edu +From: Max Waterman +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +Message-ID: <436988D9.8040106@fastmail.co.uk> + +Hi, + +Can anyone tell me if there is a way of NOT asking for a password for +various usernames? + +The situation is as follows : + +1) we're using a server that has many users +2) some use SSL, some don't +3) some users want to only be able to use SSL + +This is set up and works fine. + +However, if a users who wants to only be able to use SSL tries to use a +regular port without SSL, then their username and password are +transmitted in plain text. + +I want to configure the server to not even ask for a password for those +users who have to use SSL. + +Max. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22756.mbox:2,S new file mode 100644 index 00000000..102e8408 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22756.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 20 06:48:40 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] fetch envelope charset? +Message-ID: + +Hello, + +Given a fetch envelope command, what character set encoding can the response be in? + +For example, say the subject is originally encoded as =?iso-8859-1?Q?H=F3la!?=, which is H?la! in UTF-8. + +What can one put in the subject part of the envelope? + +Does it have to be the original value (=?iso-8859-1?Q?H=F3la!?=)? + +Could it be the literal UTF-8 value (H?la!)? + +Could it be the q-encoded UTF-8 value (=?UTF-8?Q?H=C3=83=C2=B3la!?=)? + +Could it be the UTF-7 encoded UTF-8 value (H+APM-la+ACE-)? + +I'm really confused about what character set encoding IMAP is expecting and where. Is there perhaps a FAQ to complement the RFC that summarizes what applies where? + +Thanks in advance. + + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22772.mbox:2,S new file mode 100644 index 00000000..723d9b01 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22772.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From brong at fastmail.fm Fri May 27 04:37:47 2011 +To: imap-protocol@u.washington.edu +From: Bron Gondwana +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + +Message-ID: <20110527133747.058ae231@arbre.eng.oslo.osa> + +On Fri, 27 May 2011 11:53:40 +0300 (EEST) +John Kougoulos wrote: + +> On Fri, 27 May 2011, Timo Sirainen wrote: +> +> > I've noticed there are many people who want web 2.0 kind of interface to +> > emails (xml/ajax/dunno), and I've been thinking maybe I might just as +> > well do something like that. I'm sure the protocol will suck, but if it +> > gets us better email clients maybe it's a good thing overall. (And why +> > aren't they just using IMAP? Because they're scared of even trying to +> > use it. Hmm. IMAP over XML maybe?..) +> > +> +> Communigate has done something similar, see: +> http://www.communigate.com/cgatepro/XMLAPI.html#Mailbox + +We have a JSON API that may get polished up into something releasable +at some point. I tried to keep it mirroring QRESYNC as closely as +possible, but unfortunately message sequence numbers are pretty useless +when your basic unit isn't a message, it's a cross-folder conversation. + +Bron. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22807.mbox:2,S new file mode 100644 index 00000000..f17e36f6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22807.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Fri Jun 11 18:06:47 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120251.24779.witold.krecicki@firma.o2.pl> + +Message-ID: <201006120306.47168.witold.krecicki@firma.o2.pl> + +On Saturday 12 of June 2010 02:59:28 Mark Crispin wrote: +> On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +> >> If you do believe that, then you are wrong. I know of multiple clients, +> >> including at least one with millions of users, that have undelete as +> >> Philip describes. +> > +> > Name at least the one with millions of users. +> +> Pine/Alpine. There were several tens of thousands of users at UW alone. +> Other institutions of comparable size had similar numbers. +> +> UW also kept statistics, in part through a phone-home. And yes, +> duplicates were filtered. +You are silently assuming that all of pine/alpine users were using IMAP. I was +using pine, then alpine myself but I have never used IMAP in it, only local +mailboxes. So there is still no 'millions of users' of an IMAP client (using +IMAP service) that is using undelete capability (at least not for 'long +undelete' - undeleting message that has been deleted few seconds ago can be +resolved even with a simple delete delay (altough that would break +atomicity...), and with real store +flags (\Deleted) each access to this +mailbox with eg. Thunderbird would cause those \Deleted messages to be +permanently lost) +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22880.mbox:2,S new file mode 100644 index 00000000..16c2714a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22880.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Feb 22 04:26:04 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] SEARCH SUBJECT +In-Reply-To: <1203640514.4901.280.camel@hurina> +References: <1203623023.4901.242.camel@hurina> + <47BDE0F2.4070704@watson.ibm.com> + + <1203631656.4901.270.camel@hurina> + + <1203640514.4901.280.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> What do you think the fuzzy matching fields could be? +> +> ... +> - FROM, TO, CC, BCC real name fields, user@domain maybe? + +Both fuzzy, inexact and exact matching is useful. Addresses are +important in email, which means there are many different useful things +one can do with them ;) + +> - HEADER x y? + +I like the idea of fuzzy matching on unstructured fields. Not so keen on +fuzzily matching structured fields. + +> ... +> - Date searches not(?) + +Date searches are slightly fuzzy now. I'm not sure my code handles +timezone the way the RFC says to. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22883.mbox:2,S new file mode 100644 index 00000000..bde2525d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22883.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc at Washington.EDU Sun Jan 27 16:42:33 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +References: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +Pine / Alpine: + +Yes: STARTTLS, SASL (GSSAPI, CRAM-MD5, PLAIN, LOGIN, EXTERNAL), + SSL, NAMESPACE, MULTIAPPEND, UIDPLUS, CHILDREN, SORT, THREAD + +No: SASL-IR, ESEARCH, IDLE, LITERAL+, LEMONADE + ;;; For the purposes of Pine/Alpine: + ;;; + ;;; SASL-IR adds complexity just to save one RTT. We have + ;;; enough problems with servers getting SASL right as it is. + ;;; ESEARCH has no constituency within our user community. + ;;; IDLE is unnecessary except for mobile devices, and has + ;;; problems when NAT is in use. + ;;; LITERAL+ is not needed since MULTIAPPEND is used instead, + ;;; and MULTIAPPEND solves problems that LITERAL+ does not. + ;;; LEMONADE support is under consideration. + +UW imapd implements all of the above except for LEMONADE. LEMONADE +support is under consideration. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22893.mbox:2,S new file mode 100644 index 00000000..140929cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22893.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 16:34:29 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <47266943.2010409@psaux.com> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + <47266943.2010409@psaux.com> +Message-ID: + +On Mon, 29 Oct 2007, Tim Showalter wrote: +> I withdraw the comment. (I made it based on something I read on this list +> some number of years ago, and I've never read the IMAP3 document. Good thing, +> too. :-) ) + +It's instructive to read the IMAP3 document (RFC 1203), if only to see a +dead-end branch in IMAP's evolution. + +RFC 1176 was a very minor update from RFC 1064, basically adding the FIND +command (a nascent form of LIST). Much of RFC 1203 is a strong reaction +against the IMAP architecture (complete with a diatribe to the effect that +IMAP will die unless IMAP3 is adopted), especially the unsolicited data +model (e.g., it tags FETCH responses). + +As far as I know, no IMAP3 implementations were ever written. + +> What's the real difference between having strictly-increasing client +> capabilities, or revising the base spec? In both cases, we're bundling some +> arbitrary set of protocol changes and requiring client/server support for all +> of them. + +I think that there is much more opposition to adding to a base +specification than to a service level. A new base specification purported +kills the previous one; whereas a service level might get ignored at a +particular point. + +Sometimes how you call things does matter! + +> Thinking about this a little more, I think there's an argument to be made for +> limiting capabilities and trying to decrease the number of different +> available capability sets, but we probably also need some amount of forking +> near the cutting-edge of protocol. + +I agree completely! + +> But if UTF8 is the first one, and it's successful and widely adopted, +> whatever the next wave is, should require UTF8. + +I think that upgrading IMAP for UTF-8 is essential, and was foreseen with +the publication of RFC 2060. + +> But I'm very concerned about the complexity here. It's apparently hard to +> implement correct IMAP clients and servers now. + +I agree completely! + +> I'm not at all convinced of the wisdom of any of these approaches, but I am +> enjoying the discussion. + +I think that we are all groping towards something that will address the +problem without causing the Law of Unintended Consequences to come down +hard upon us... ;-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22911.mbox:2,S new file mode 100644 index 00000000..85c12fa1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22911.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 15 05:25:54 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] FLAGS & PERMANENTFLAGS in IMAP4rev1 +In-Reply-To: <20070614135814.E17807@orthanc.ca> +References: <466FE56C.7000900@hiramoto.org> + + <20070614003209.E9774@orthanc.ca> + + <20070614135814.E17807@orthanc.ca> +Message-ID: + +Lyndon Nerenberg writes: +>> I do not see anything wrong in using flags for marking messages as Junk. +> +> There isn't, as long as all the clients agree on the same set of flags. + +Hm... what happened to the imap-keywords draft? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22914.mbox:2,S new file mode 100644 index 00000000..cd0ac718 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22914.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From tss at iki.fi Thu May 24 00:35:21 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + +Message-ID: <1179992121.32181.1744.camel@hurina> + +On Wed, 2007-05-23 at 23:36 -0700, Mark Crispin wrote: +> I use only 6 keywords myself. I would be *very* unhappy with an IMAP +> server that deleted any of my keywords due to disuse, no matter how long +> the period. A mere 6 keywords is not (should not be) costly to keep +> around! + +So I suppose your client shows a list of those 6 keywords somewhere so +you can easily add them to messages? + +Would you be upset if you had accidentally typoed one of the keywords +and now it would stay there forever? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22917.mbox:2,S new file mode 100644 index 00000000..601f259b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22917.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From dkarp at zimbra.com Wed Apr 11 15:31:14 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] AppleMail contact? +In-Reply-To: <461D4FE3.8070706@sun.com> +Message-ID: <695752686.196811176330674108.JavaMail.root@dogfood.liquidsys.com> + +> Does anyone here have any contacts in the AppleMail organization? +> I'm getting more and more complaints about JavaMail being unable +> to parse messages that turn out to be incorrectly formatted messages +> created by AppleMail. I'd like to find someone to fix the problem +> at the source rather than continue to add workarounds for their bugs. + +Other than RFC 2231 issues (and we're happy to provide a 2231-capable header parser in Java if you want one), what brokenness have you been seeing from AppleMail? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22920.mbox:2,S new file mode 100644 index 00000000..7ed01b80 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22920.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Mar 11 17:11:20 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 11 Mar 2007, Bill Janssen wrote: +> I'm reading a lot on the Web about Apple Mail and its notion that all +> mailboxes be sub-mailboxes of INBOX, apparently because a popular IMAP +> server does it that way. + +I suggest that you concern yourself with complying with IMAP, and not +try to program for the whims of an individual client. I did not find +Apple Mail to be a satifactory IMAP client. + +> I'm re-exporting an MH mail folder setup + +One caution is that UIDs need to be immutable, or at least you need to +change the UIDVALIDITY when they change. This is a problem if you use MH +message ID numbers for UIDs, because the mh pack and sort operations will +renumber the message ID numbers. + +As distributed, UW imapd simply returns a new UIDVALIDITY with each new +session for an mh mailbox. This is a problem for disconnected clients +which use the UIDs to determine if it must download the message or if it +already has it cached. + +Lauren Weinstein has a hacked version of UW imapd, although with a hacked +version of mh, that I helped him with that has sticky UIDs and changes the +UIDVALIDITY only when a pack/sort is done. I don't know his current +status; he was using a mobile client that was quite embryonic and had lots +of growing pains, thus there were multiple unknowns when debugging all +this. + +> My plan was to basically represent each of these MH folders as an IMAP +> mailbox, and add another top-level mailbox called "INBOX", which would +> normally be empty (there's a procmail daemon that sorts the mail). So +> there's a single namespace and there's no root for reference names. + +As I understand it, this is alright. + +Have you thought about trying UW imapd, even if you plan to deploy your +own implementation, just so you have reference to compare? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22957.mbox:2,S new file mode 100644 index 00000000..09d25646 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22957.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Thu Dec 21 07:13:04 2006 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] REFERENCES2 threading +In-Reply-To: <1166605504.22214.313.camel@hurina> +References: <1166586540.22214.282.camel@hurina> + <15222.1166603835.091995@peirce.dave.cridland.net> + <1166605504.22214.313.camel@hurina> +Message-ID: + +On Dec 20, 2006, at 10:05 AM, Timo Sirainen wrote: + +> Yes. I don't see what's the benefit of not doing it. I think the +> algorithm should be kept as close to REFERENCES as possible. My +> X-REFERENCES2 required pretty minimal code changes. + +I agree. + +In my mail client implementation (etpan(-ng)), I used for at least +two years REFERENCES implementation and I also found this was too bad +that new messages were lost in old threads. So that in etpanX (a new +implementation), I focused immediately on something that looks like X- +REFERENCES2. + +-- +DINH Vi?t Ho? + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22960.mbox:2,S new file mode 100644 index 00000000..c1bb085f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22960.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From snowjn at aol.com Fri Nov 24 15:30:04 2006 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] As The Stomach Turns: AOL creates new system flags +In-Reply-To: <45534A8C.7090709@aol.com> +References: + <45534A8C.7090709@aol.com> +Message-ID: <4567807C.60909@aol.com> + + +Hello All, + +I am the current developer of AOL's IMAP server. There have been 2 +recent issues on this list regarding my server. + +1. The invalid response to the Authenticate Plain command. This has +been corrected, and has been confirmed by Mark that it now works +correctly with Pine. I never use Pine, so I never noticed. Mozilla +Thunderbird did not have a problem with it. + +2. The \Voicemail flag. This never existed. There was a documentation +error that described this flag incorrectly. The correct flag for +voicemail is and always has been XAOL-VOICEMAIL. + +If there are other issues with AOL's IMAP implementation, feel free to +let me know either directly or through this list. + +thanks, + +john snow. + + + + +> +> +> mrc@cac.washington.edu wrote: +>> In our last episode, we saw imap.aol.com return a bogus +>> + waiting for auth data +>> as a SASL challenge in response to AUTHENTICATE PLAIN. +>> +>> In this episode, we learn that AOL's server sends a \Voicemail flag, +>> in violation of RFC 3501 which states: +>> +>> flag-extension = "\" atom +>> ; Future expansion. Client implementations +>> ; MUST accept flag-extension flags. Server +>> ; implementations MUST NOT generate +>> ; flag-extension flags except as defined by +>> ; future standard or standards-track +>> ; revisions of this specification. +>> +>> Let's be clear about this: only a future revision of the IMAP base +>> specification can add a flag that starts with \, and this is promised +>> by the IMAP base specification. +>> +>> So not only does AOL violate the specification, they are arbitrarily +>> making extensions in reserved portions of the protocol without +>> permission. +>> +>> Stay tuned for future episodes of "As The Stomach Turns"! +>> +>> -- Mark -- +>> +>> http://staff.washington.edu/mrc +>> Science does not emerge from voting, party politics, or public debate. +>> Si vis pacem, para bellum. +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22974.mbox:2,S new file mode 100644 index 00000000..ef1e217c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22974.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 12 14:36:43 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <4507222E.7050706@sun.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> <20060912134901.F80085@orthanc.ca> + <4507222E.7050706@sun.com> +Message-ID: + +On Tue, 12 Sep 2006, Bill Shannon wrote: +> The spec should be very clear on what "correct" behavior is. + +The base spec supposedly is very clear on that point. Most of the +arguments are not about what is correct, but rather about what is good. + +> Neither the spec nor the test suite need to be perfect to deliver great +> value. I see a lot of basic functionality that's broken. A test suite +> that tested those cases would make a huge difference. Specifying, and +> testing, the esoteric corner cases can be done later. + +Unfortunately, "the esoteric corner cases can be done later" covers a +great many sins. What is an "esoteric corner case" to some people is an +essential functionality to others. + +Much of the problem comes from individuals who claim that IMAP is too +complicated to implement from the spec, and thus it is alright to look at +the examples and implement empirically to work with whatever server they +have access to (client implementors) or Outlook and Netscape (server +implementors). + +A common server defies the specification in multiple places; when the +violations are pointed out its author's answer is "yawn" or accusations of +FUD-spreading. There isn't much can be done in that case. If a test +suite was produced, such people would attack the motivations of the +authors of the test suite rather than fix the problems. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22983.mbox:2,S new file mode 100644 index 00000000..2c12f474 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22983.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From kuruganti at att.com Tue Aug 29 06:55:51 2006 +To: imap-protocol@u.washington.edu +From: "KURUGANTI, LAKSHMI, INFOT" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP question +Message-ID: <26B0071CDBC3434698C7C31443EAEA860C660E66@ACCLUST03EVS1.ugd.att.com> + +All, + +We are running Solaris environment and need to replace pop3 with IMAP.We +can't find any documentation of IMAP on internet , except for installing +the package that is downloaded from sunfreeware.com.We assume that there +must be lot of procedure to activate IMAP , but have no clue. + +We have to use IMAP for only reading e-mails. + +Thanks +-Lakshmi +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.22999.mbox:2,S new file mode 100644 index 00000000..e78f3e10 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.22999.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 30 09:53:51 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + +Message-ID: + +Mark Crispin writes: +> (1) Some servers may perform a cleanup or checkpoint operation during +> LOGOUT. Of course, the server will try to trap disconnect, and do +> the checkpoint anyway in the trap handler. However, a few +> (thankfully, rare) OS environments send mandatory (non-trappable) +> kills to servers on disconnect. Thus, the disconnect can actually +> cause a loss of cleanups or mailbox updates! + +Don't you think the servers on such platforms should deal with it, +instead of expecting all clients on all platforms to do so? + +For example, a server on such a platform can fork off another intance of +itself (invisible to the client), close the IMAP connection, and let +the client go on its way? Instead of expecting the client to - + +> fork off another instance of itself (invisible to the user), let the +> fork have the sockets and go off on its own, and the parent fork +> which has the user interface forgets the sockets. + +Your next paragraph describes both: + +> This way, the user sees an immediate termination, whereas behind the +> curtain the funny man is busy pulling the levers and twirling the +> dials. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.23014.mbox:2,S new file mode 100644 index 00000000..6cf5facb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.23014.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Apr 4 11:20:56 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] question about BAD +In-Reply-To: <35e353d50604041105r348528fo425936204763871c@mail.gmail.com> +References: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> + <3U7SPhfQsmhufeOzNE9EZQ.md5@libertango.oryx.com> + <35e353d50604041105r348528fo425936204763871c@mail.gmail.com> +Message-ID: + +Adrian Buciuman writes: +> On 4/4/06, Arnt Gulbrandsen wrote: +>> You can't ask the server to wait until the end of something it +>> doesn't recognize. +> +> Why not? I belive it can wait until a LF is received from the client. + +(CRLF ends a line, not a command. A command can be much longer than one line.) + +There's nothing to be gained (as far as I can imagine) from requiring +the server to do that. It wouldn't help anyone access their mail +better/faster/etc. Therefore, it would be a bad requirement. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.23031.mbox:2,S new file mode 100644 index 00000000..729307e3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.23031.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From frantz at info.univ-angers.fr Wed Mar 15 04:22:38 2006 +To: imap-protocol@u.washington.edu +From: Frantz de Germain +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Problem with imaps +In-Reply-To: <4417F867.4080104@metu.edu.tr> +References: <20060315102900.d419b50d.frantz@info.univ-angers.fr> + <4417E30A.6070302@metu.edu.tr> + <20060315110806.1755fbc3.frantz@info.univ-angers.fr> + <4417F867.4080104@metu.edu.tr> +Message-ID: <20060315132238.c10190b5.frantz@info.univ-angers.fr> + +Le Wed, 15 Mar 2006 13:20:07 +0200 +Burak Bilen ?crivait: + +> Ok, it seems that your imaps server is working. Do you have problems in +> the authentication phase? +> Did you try reading your mails with thunderbird or other mail clients +> which support SSL? +> + +Thanks. We've solved our problem : there were no gateway declared on the +server so it couldn't answer to impap requests. It was set manually so it was +no more set after a reboot. + +regards + +-- +Frantz de Germain +Web : http://www.info.univ-angers.fr/pub/frantz +Membre de la Soci?t? d'Astronomie de Nantes : http://www.san-fr.com/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.23036.mbox:2,S new file mode 100644 index 00000000..76918b2c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.23036.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From murch at andrew.cmu.edu Tue Feb 28 05:46:58 2006 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: Superior hierarchical mailbox creation.... +In-Reply-To: +References: +Message-ID: <44045452.2050407@andrew.cmu.edu> + +nikhil BS wrote: +> Hi all, +> We are developing a client for IMAP server. +> I tried to create mailbox of the form x.y.z where '.' is the heirarchy +> separator. +> According to the RFC, +> +> -- +> If the server's hierarchy separator character appears elsewhere in +> the name, the server SHOULD create any superior hierarchical names +> that are needed for the CREATE command to be successfully +> completed. In other words, an attempt to create "foo/bar/zap" on +> a server in which "/" is the hierarchy separator character SHOULD +> create foo/ and foo/bar/ if they do not already exist +> -- +> +> But the mailbox x.y.z was created and not the superior hierarchical +> mailboxes x, x.y weren't. +> This is the output of the LIST command... + +The text in RFC 3501 says that the server SHOULD create any superior +*hierarchical names*, which Cyrus does. It doesn't say that it must +create the hierarchical mailboxes. I believe that Cyrus is and has been +compliant in this regard. + +I've CC'd this to the IMAP protocol list to see if others agree/disagree. + +-- +Kenneth Murchison +Systems Programmer +Project Cyrus Developer/Maintainer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.23040.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.23040.mbox:2,S new file mode 100644 index 00000000..ab78d5c4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.23040.mbox:2,S @@ -0,0 +1,88 @@ +MBOX-Line: From jjthomas at sbandcompany.com Fri Jan 20 11:51:04 2006 +To: imap-protocol@u.washington.edu +From: "Jason J. Thomas" +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Telnet IMAP on Exchange 5.5 +Message-ID: <3769A1FB7698BB498DA17F14CFF7C889107B43@sbacs0001.sbandcompany.local> + +I am unsure of this being the case with Exchange 5.5, but with Exchange +2003 you merely supply your alias (if you have one) along with your +password. I have actually had this working pretty easily for +alternative access to email if our users cannot access it via the usual +Outlook client (and dislike OWA). + +Jason + + +> + +-------------------------------------------------------- + +Jason J. Thomas +SB & Company, LLC +200 International Circle +Suite 5500 +Hunt Valley, MD 21030 +http://www.sbandcompany.com +T: 410-584-9308 + +F: 410-584-0061 + +E: jjthomas@sbandcompany.com + + + + +-----Original Message----- + +> From: imap-protocol-bounces@mailman1.u.washington.edu +> [mailto:imap-protocol-bounces@mailman1.u.washington.edu] On +> Behalf Of Dave Cridland +> Sent: Friday, January 20, 2006 10:23 AM +> To: Daan Rijnders +> Cc: imap-protocol@u.washington.edu +> Subject: Re: [Imap-protocol] Telnet IMAP on Exchange 5.5 +> +> On Fri Jan 20 09:28:36 2006, Daan Rijnders wrote: +> > I enter: "? Login domain/username password" (without the quotes) +> > this results in an error: one of the requested permissions is not +> > assigned +> > to the client. I checked this on the Exchange server to see if my +> > user is +> > IMAP enabled and did the same thing in Active Directory. Both state +> > that my +> > user is able to use IMAP. +> > +> Right. Exchange's IMAP support is, contrary to popular belief, +> actually quite reasonable, as far as I'm aware. The client support in +> Outlook and Outlook Express is notoriously terrible, but credit where +> credit's due. +> +> +> > Question: is this case sensitive? Should I use all CAPS? forward +> > slashes? +> > +> > +> I can't remember - it's been ages since I messed about with IMAP on +> Exchange. What I do remember is that you also need to specify the +> alias, or at least used to need to. Officially, this isn't needed (or +> wasn't then), but it won't login without it. This might even have +> been on Exchange 5.5, but I couldn't honestly tell you. +> +> So for my case, it was something vaguely like Dave/FELSPAR/dac as a +> username - where Dave was my NT login, FELSPAR the domain, and dac my +> alias - that is, the local-part of the email address. The slashes +> might have been the other way around, hence Dave\FELSPAR\dac - I'm +> really not sure. +> +> Dave. +> -- +> You see things; and you say "Why?" +> But I dream things that never were; and I say "Why not?" +> - George Bernard Shaw +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.23045.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.23045.mbox:2,S new file mode 100644 index 00000000..7f06336c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.23045.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From ganesh.takawle at solversa.com Tue Dec 13 02:22:30 2005 +To: imap-protocol@u.washington.edu +From: Ganesh +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] IMAP protocol +Message-ID: <006801c5ffcf$35676990$1500a8c0@Ganesh> + +Hi + i received the link for book for INternet Protocol development but i +didn't get the actual content on net. + Can you prvide me the useful link which can help me in solving my +problem.I will try to get the book but when i searched it was not available +near to me. + +Plz forwadr me some links which can help me in the same. + + +I look forward to your reply, + +Thank You, +Cheers +Ganesh +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.23051.mbox:2,S new file mode 100644 index 00000000..aec2f689 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.23051.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Nov 2 20:18:43 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: <436988D9.8040106@fastmail.co.uk> +References: <436988D9.8040106@fastmail.co.uk> +Message-ID: + +Your question is difficult to answer, because it makes an incorrect +premise. That premise is that the server "asks" for a password. + +The server does not "ask" for a password in IMAP; rather, the client +chooses to provide one. + +The server MAY announce that it refuses passwords on a global basis via +the LOGINDISABLED capability. Any client which sends a password to a +server which has announced LOGINDISABLED is non-compliant with the IMAP +specification and should not be used. + +The standard configuration of UW imapd, in accordance with the IMAP +specification (RFC 3501), makes such an announcement on non-SSL/TLS +sessions; and in that state will reject any password even if the password +is correct. In that state, UW imapd allows other means of authentication +that do not involve passwords. If the session negotiates TLS encryption, +the UW imapd will retract the LOGINDISABLED announcement and allow +password authentication. + +For other servers, you will need to read the vendor's documentation. + +When announced, LOGINDISABLED is a global restriction. It is not possible +to allow passwords for some users and disallow passwords for other users. +This is because the user name and password are sent together. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095128.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095128.23055.mbox:2,S new file mode 100644 index 00000000..81a8b04e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095128.23055.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From kkapp at rambler.ru Mon Oct 17 07:04:54 2005 +To: imap-protocol@u.washington.edu +From: Alex Kapranoff +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +Message-ID: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> + +Good day! + +Is there a way to get envelope "From" information for a mail via IMAP? +Specifically, "ENVELOPE" fetch item does not seem to return it. + +-- +AA KK. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22756.mbox:2,S new file mode 100644 index 00000000..fdb321fe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22756.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Sun Nov 20 08:22:30 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] fetch envelope charset? +In-Reply-To: +References: +Message-ID: + +On 20.11.2011, at 16.48, Petite Abeille wrote: + +> Given a fetch envelope command, what character set encoding can the response be in? +> +> For example, say the subject is originally encoded as =?iso-8859-1?Q?H=F3la!?=, which is H?la! in UTF-8. +> +> What can one put in the subject part of the envelope? +> +> Does it have to be the original value (=?iso-8859-1?Q?H=F3la!?=)? + +This is what all servers I know of do. + +> Could it be the literal UTF-8 value (H?la!)? + +Not without IMAP UTF8 extension enabled. + +> Could it be the q-encoded UTF-8 value (=?UTF-8?Q?H=C3=83=C2=B3la!?=)? + +I suppose it could be. + +> Could it be the UTF-7 encoded UTF-8 value (H+APM-la+ACE-)? + +No. + +> I'm really confused about what character set encoding IMAP is expecting and where. Is there perhaps a FAQ to complement the RFC that summarizes what applies where? + +Mailbox names are mUTF7, SEARCH command has an optional CHARSET parameter, elsewhere there are no charset conversions. diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22772.mbox:2,S new file mode 100644 index 00000000..1a19cc04 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22772.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From Pidgeot18 at verizon.net Fri May 27 07:32:48 2011 +To: imap-protocol@u.washington.edu +From: Joshua Cranmer +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <3054.1306482700.081469@puncture> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + + <4DDF06A9.2050608@logicprobe.org> <4DDF1140.3030101@verizon.net> + + <3054.1306482700.081469@puncture> +Message-ID: <4DDFB610.1080707@verizon.net> + +On 05/27/2011 03:51 AM, Dave Cridland wrote: +> If a device only understands ASCII, send them UTF-8 anyway and the +> worst that can happen is that a fully non-ASCII message is unreadable, +> which it would be anyway. + +In this case, the device was a Japanese mobile phone, so ASCII-only +support is a non-starter. + +-- +Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald E. Knuth + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22807.mbox:2,S new file mode 100644 index 00000000..ed7fd0db --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22807.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From tony at att.com Fri Jun 11 18:41:56 2010 +To: imap-protocol@u.washington.edu +From: Tony Hansen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C129338.9030706@aol.com> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> <1276267479.22134.102.camel@kurkku.sapo.corppt.com> <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <4C129338.9030706@aol.com> +Message-ID: <4C12E5E4.6000609@att.com> + +No, I don't suppose that COPY+STORE+EXPUNGE can be pipelined together. +However, STORE and EXPUNGE can certainly be pipelined with the +subsequent command: + +COPY +wait for response +pipelined STORE + EXPUNGE + next COPY +wait for responses +pipelined STORE + EXPUNGE + next command +wait for responses + + Tony Hansen + tony@att.com + +On 6/11/2010 3:49 PM, John Snow wrote: +> I'm sure I must be missing something, but how is pipelining a +> COPY+STORE+EXPUNGE a valid non-waiting command sequence? +> +> If the server has a problem and fails the COPY then successfully +> processes the STORE and EXPUNGE commands, don't you end up +> in a state where the messages are gone? +> +> +> +>> +>> Pipelining eliminates this, except perhaps for a protocol link over a +>> 300bps modem where the extra chattiness might matter. +>> +>> +>>> It would behave essentially the same as COPY+STORE+EXPUNGE, except the +>>> STORE part could be optimized away: +>>> 1. The COPY part either atomically succeeds or fails. +>>> 2. Now the messages are visible in both mailboxes +>>> 3. Server starts expunging the moved messages. +>> +>> Then you don't have a MOVE command. You have a protocol macro that +>> looks +>> like a command but actually is three separate commands. And the client +>> has to be aware of the split in the macro since failures can happen at +>> each stage. +>> +>> The complexities of this make the late unlamented VIEW proposal look +>> simple by comparison. +>> +>>> After the copying is successful, the only problem that can happen is if +>>> expunging messages somehow fails, or if the server crashes. The same +>>> problems exist with COPY already, there are short time windows when if +>>> Dovecot crashes it has succeeded in only partially copying messages. +> +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22880.mbox:2,S new file mode 100644 index 00000000..90d0675c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22880.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From tss at iki.fi Wed Feb 27 22:50:07 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] imaptest update +Message-ID: <1204181407.11220.53.camel@hurina> + +I've finally added support for "normal" command/reply tests for my +imaptest program (http://imapwiki.org/ImapTest). imaptest will include +generic tests that should work with all IMAP servers, but it would be +easy for servers to implement their own private tests that check things +more carefully (but less portably). It would be nice if others could +provide some generic test cases as well. + +I haven't yet had time to implement all the features that I'd like (e.g. +unordered list handling needs support), but I think the current features +will allow testing quite a lot already. +http://imapwiki.org/ImapTest/Tests explains how it works. + +A couple of examples to show what's possible: + +# Check that EXAMINE and STATUS return same UIDVALIDITY +examine $mailbox +* ok [uidvalidity $uidvalidity] +ok [read-only] +ok status $mailbox (uidvalidity) +* status $mailbox (uidvalidity $uidvalidity) + +# Test EXPUNGE handling with 2 connections: +connections: 2 + +1 ok fetch * uid +* $seq fetch (uid $uid) +1 ok store $seq flags \deleted +* $seq fetch (flags (\deleted \recent)) +1 ok expunge +* $seq expunge + +2 ok fetch $seq uid +* $seq fetch (uid $uid) +2 ok noop +* $seq expunge + +# LIST testing: +state: auth + +ok list "" "" +* list (\noselect) $sep "" + +delete $mailbox${sep}test +"" +delete $mailbox${sep}test2 +"" +ok create $mailbox${sep}test +ok create $mailbox${sep}test2 + +ok list "" $mailbox$sep% +* list (\hasnochildren) $sep $mailbox${sep}test +* list (\hasnochildren) $sep $mailbox${sep}test2 + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22883.mbox:2,S new file mode 100644 index 00000000..5d70eb07 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22883.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From janssen at parc.com Sun Jan 27 17:18:42 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: +References: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Jan27.171846pst."58696"@synergy1.parc.xerox.com> + +> Yes: STARTTLS, SASL (GSSAPI, CRAM-MD5, PLAIN, LOGIN, EXTERNAL), +> SSL, NAMESPACE, MULTIAPPEND, UIDPLUS, CHILDREN, SORT, THREAD +> +> No: SASL-IR, ESEARCH, IDLE, LITERAL+, LEMONADE +> ;;; For the purposes of Pine/Alpine: +> ;;; +> ;;; SASL-IR adds complexity just to save one RTT. We have +> ;;; enough problems with servers getting SASL right as it is. +> ;;; ESEARCH has no constituency within our user community. +> ;;; IDLE is unnecessary except for mobile devices, and has +> ;;; problems when NAT is in use. +> ;;; LITERAL+ is not needed since MULTIAPPEND is used instead, +> ;;; and MULTIAPPEND solves problems that LITERAL+ does not. +> ;;; LEMONADE support is under consideration. +> + +Thanks, I've updated the table. + +> UW imapd implements all of the above except for LEMONADE. LEMONADE +> support is under consideration. + +It would be interesting to do another table for servers, I suppose. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22893.mbox:2,S new file mode 100644 index 00000000..697d9ba6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22893.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From swilkin at apple.com Mon Oct 29 16:46:07 2007 +To: imap-protocol@u.washington.edu +From: Sarah Wilkin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + +Message-ID: <45EC73D8-9862-48F6-8929-B27B320CF006@apple.com> + +> IMHO, most of the people who've done IMAP over the years would +> rather curtail further IMAP extensions. IMAP has too many +> extensions, and although every one has a passionate set of defenders +> the fact is that most clients and servers implement few (if any) of +> these. Then there are the servers which misimplement extensions +> (such as Courier doing so for SORT and THREAD). +> +> In case someone would like to put together such a list, here is a +> strawman (to throw to the wolves!) of how I would rate the currently +> published set of extensions. + +This is great, thanks. Is there any timeline proposed for IMAP5, or +something earlier for internationalization/UTF-8? + +It would be great to have a base specification that covered many of +the more popular extensions (especially IDLE, UIDPLUS, LITERAL+, +UNSELECT), but I'm sure every client implementor has a different +shortlist. + +--Sarah + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22911.mbox:2,S new file mode 100644 index 00000000..c7ce67ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22911.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From myimaplist at gmail.com Mon Jun 18 14:37:34 2007 +To: imap-protocol@u.washington.edu +From: Jamie L +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] MS Exchange "Search Folders" +Message-ID: <58d0fece0706181437w688eeed1s378040afbc7c1a45@mail.gmail.com> + +Does anyone know if we could access the "Search Folders" on Exchange (2003) +via IMAP? +Are the rules for "Search Folders" client rules? If so, there's probably +no way to accomplish that. + +Thanks, +J +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22914.mbox:2,S new file mode 100644 index 00000000..a27f2dcb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22914.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu May 24 08:32:31 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: <1179992121.32181.1744.camel@hurina> +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + + <1179992121.32181.1744.camel@hurina> +Message-ID: + +On Thu, 24 May 2007, Timo Sirainen wrote: +> So I suppose your client shows a list of those 6 keywords somewhere so +> you can easily add them to messages? + +Yes. In a menu. In multiple clients. + +> Would you be upset if you had accidentally typoed one of the keywords +> and now it would stay there forever? + +In my client(s), the only way that I can do that is if I "add a keyword" +rather than select one of the existing keywords. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22917.mbox:2,S new file mode 100644 index 00000000..d9e53349 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22917.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From bill.shannon at sun.com Wed Apr 11 16:44:04 2007 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] AppleMail contact? +In-Reply-To: <695752686.196811176330674108.JavaMail.root@dogfood.liquidsys.com> +References: <695752686.196811176330674108.JavaMail.root@dogfood.liquidsys.com> +Message-ID: <461D72C4.2060507@sun.com> + +Dan Karp wrote: +>> Does anyone here have any contacts in the AppleMail organization? I'm +>> getting more and more complaints about JavaMail being unable to parse +>> messages that turn out to be incorrectly formatted messages created by +>> AppleMail. I'd like to find someone to fix the problem at the source +>> rather than continue to add workarounds for their bugs. +> +> Other than RFC 2231 issues (and we're happy to provide a 2231-capable header +> parser in Java if you want one), what brokenness have you been seeing from +> AppleMail? + +A Content-Disposition header of this form: + +Content-Disposition: filename="Scan1852.pdf"; + filename="Scan1852.pdf" + +(Again, claimed by a user of JavaMail, not seen by me personally.) + +See the end of this discussion thread: +http://forum.java.sun.com/thread.jspa?forumID=43&threadID=5145629 + +JavaMail parses most RFC 2231 headers, and I'll update it to handle the +missing cases, but the problems there have been that AppleMail doesn't +quote parameter values when it should. I have hacks to handle the simplest +case of that error. + +Do you have a contact in the AppleMail group? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22920.mbox:2,S new file mode 100644 index 00000000..f73b6dfb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22920.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Sun Mar 11 17:22:06 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> +Message-ID: <25058044-27CA-4FF9-81F0-294AA4D81AEF@iki.fi> + +On 12.3.2007, at 1.48, Bill Janssen wrote: + +> I'm reading a lot on the Web about Apple Mail and its notion that all +> mailboxes be sub-mailboxes of INBOX, apparently because a popular IMAP +> server does it that way. + +I'm not completely sure what you mean by this. If the server lists +all mailboxes under INBOX and you haven't set "IMAP Path Prefix" to +INBOX/ in Apple Mail, then it will list all the mailboxes under +INBOX. But I don't think this is the intended way to use it. + +My server doesn't put mailboxes under INBOX, and I'm using Apple Mail +just fine. The non-INBOXes are listed under a separate "tss@iki.fi" +item. + +One Apple Mail bug that I have heard of is that it uses '/' as the +hierarchy separator even though server uses something else. But I +haven't been able to reproduce that bug for some reason. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22957.mbox:2,S new file mode 100644 index 00000000..f2af18c5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22957.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tss at iki.fi Thu Dec 21 15:08:00 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Command cancellation +In-Reply-To: +References: <1166644158.22214.365.camel@hurina> + +Message-ID: <1166742480.22214.496.camel@hurina> + +On Wed, 2006-12-20 at 14:12 -0800, Mark Crispin wrote: +> On Wed, 20 Dec 2006, Timo Sirainen wrote: +> > I wanted an ability to stop an ongoing SEARCH command, so that it'd be +> > possible to add a "Cancel search" button in the client. +> +> How long do searches take in your server? + +Actually the search itself isn't really the problem here, it's the text +search index building which is much slower than the search. + +Because most users don't use SEARCH in all of their mailboxes (if any), +I'm delaying the initial building until the user does SEARCH for the +first time. If the mailbox is large, it's going to take time. With my +computer it's currently indexing only 1,5MB/s (CPU limited). + +I did think about simply doing a normal search first, and then start +building the indexes on the background so the future searches will be +fast. Maybe I'll do that also later. + +(I'm here talking about an indexer that supports substring searches so +it'll work with standard TEXT and BODY searches) +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22960.mbox:2,S new file mode 100644 index 00000000..5b64dda8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22960.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Nov 24 15:41:04 2006 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: +References: + <20061123140532.C1467@gollum.dev.gmi-mr.com> + +Message-ID: <20061124154020.E1247@gollum.dev.gmi-mr.com> + +> But the client will store (securely) the password locally and send it +> automatically without the user has to type the password. + +Please point out the text in RFC 3501 that mandates that client behaviour. + + +--lyndon + + If you were plowing a field what would you rather use, 2 strong oxen or + 1024 chickens? + -- Seymour Cray (apocryphal) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22974.mbox:2,S new file mode 100644 index 00000000..fc85a8bb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22974.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dave at cridland.net Tue Sep 12 14:34:35 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> <20060912134901.F80085@orthanc.ca> + +Message-ID: <17095.1158096876.091729@peirce.dave.cridland.net> + +On Tue Sep 12 22:25:59 2006, Mark Crispin wrote: +> RFC 1064 and 1176 had some text outlining the right way to go about +> looking at the roles of client and server in IMAP. But I took so +> much criticism about how I did not "understand" the architecture of +> IMAP(!) that I removed that text in RFC 1730. [The critics in +> question are no longer active members of the IMAP community.] +> +> +If it makes you feel better, I went back to those descriptions when +designing Polymer, and found them very useful. + +> In the online model, a client starts with empty state. In the +> disconnected model, the client has some remembered state and has to +> synchronize that remembered state with the server's state. + +FWIW, Polymer does both, in as much as it's an online client that +manages to persist its cache between sessions. It still doesn't do +anticipatory fetching, although I keep meaning to start putting that +in. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22983.mbox:2,S new file mode 100644 index 00000000..6ba32dad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22983.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Aug 29 10:58:28 2006 +To: imap-protocol@u.washington.edu +From: "Mark Crispin" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP question +In-Reply-To: <26B0071CDBC3434698C7C31443EAEA860C660E66@ACCLUST03EVS1.ugd.att.com> +References: <26B0071CDBC3434698C7C31443EAEA860C660E66@ACCLUST03EVS1.ugd.att.com> +Message-ID: + +On Tue, 29 Aug 2006, KURUGANTI, LAKSHMI, INFOT wrote: +> We are running Solaris environment and need to replace pop3 with IMAP.We +> can't find any documentation of IMAP on internet , except for installing +> the package that is downloaded from sunfreeware.com.We assume that there +> must be lot of procedure to activate IMAP , but have no clue. +> We have to use IMAP for only reading e-mails. + +It all depends upon which package that you download. + +Usually, the default IMAP server that sites offer is UW imapd (which I +wrote). + +UW imapd is more or less plug-and-play with a standard UNIX configuration. +You just install the server binary, make sure that [x]inetd invokes it, +and create any necessary certificates for SSL/TLS sessions. + +You can also get UW imapd directly from UW: + ftp://ftp.cac.washington.edu/mail/imap.tar.Z + +If you get the source tarball, there is a "docs" directory which contains +various files that outline the installation procedure. + +There is also information in that directory on how you can modify UW imapd +if you wish to use it in a non-standard configuration. Many sites do make +local modifications; the standard configuration is generic and easy to +install, but is rarely the best (or even a particularly good) choice. + +If you choose UW imapd and have further questions about it, please direct +them to the imap-uw@u.washington.edu mailing list. The imap-protocol +mailing list is for discussions about the IMAP protocol and not for +questions about IMAP software or usage. + +There are several other IMAP servers, some of which are easier to +configure and install than others. Most servers provide documentation on +what is necessary; these servers usually have affiliated mailing lists for +their own user communities. + +In addition, there is a generic "IMAP usage" mailing list hosted by UW; +imap-use@u.washington.edu. That's a good list to use if you aren't +certain as to which list to use. Another good resource is the +comp.mail.imap newsgroup. + +Good luck! + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.22999.mbox:2,S new file mode 100644 index 00000000..5c40005a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.22999.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jun 30 10:05:17 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + +Message-ID: + +On Fri, 30 Jun 2006, Arnt Gulbrandsen wrote: +> (When a user closes the lid, the laptop has to sleep +> right there and then. Not 30 seconds later.) + +Not so! I've seen sleep-on-lid close take quite a bit longer than 30 +seconds on some laptops; each running running application must respond to +a system sleep event. To further muddy the waters, a running application +has the right to cancel the sleep! + +The only true "SHUT DOWN NOW!!" operation is to hold down the power button +long enough that a hard power-off happens. But, I've seen laptops that +were recalcitrant even with that, and thus it became necessary to pull the +battery. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23014.mbox:2,S new file mode 100644 index 00000000..fa6d354a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23014.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From tjs at psaux.com Tue Apr 4 11:28:16 2006 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] question about BAD +In-Reply-To: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> +References: <35e353d50604040910u514a83c8h508a40fc3b0edb45@mail.gmail.com> +Message-ID: <4432BAC0.2090809@psaux.com> + +Adrian Buciuman wrote: +> Can an IMAP server send a BAD before the client finished sending the command? + +For what it's worth, Cyrus has never bothered to wait for CRLF before +sending command responses in a failure case like this. It's never been +a problem (except, occasionally, when telnetting to the server from a +client that doesn't support tty-style line editing). + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23031.mbox:2,S new file mode 100644 index 00000000..4dd79869 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23031.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Sun Mar 19 21:41:00 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Error in implementing imap +Message-ID: + +Client: Outlook Express 6 +Implementing Server in java + +Scenario: I am able to list the folders but not able to list the mails when +i select a particular mail folder say customised or Sent/Trash.. etc + +Problem: Select and UID Fetch command +Question: +1. can i have UIDVALIDITY 1 as uid next will always be unique. If not how +and when should i change UIDVALIDITY ? can i toggle with 0 or 1? +2. in the log below;UIDNEXT is 3158 but when client issues the UID Fetch +command its 1:* WHY?? +3. PARSE ERROR: hr=2148322516. what is the cause for this error?? how can +i rectify?? Is there any syntax mistake is Response??? +4. Buffer(literal) length is same for all its {2}. Do i need to calculate +this ??i have hard coded this. If needs calculation how?? +5. Because of above problems I am unable to get the list of mails when i +select a particular mail folder. How can i proceed further?? + +Client Log is as below: + +k9ri SELECT "INBOX." +IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 17:09:42 [rx] * 3 EXISTS +IMAP: 17:09:42 [rx] * 0 RECENT +IMAP: 17:09:42 [rx] * OK [UIDVALIDITY 1]UID validity status +IMAP: 17:09:42 [rx] * OK [UIDNEXT 3158] Predicted next UID. +IMAP: 17:09:42 [rx] * FLAGS (\Answered \Flagged \Deleted \Recent \Draft +\Seen). +IMAP: 17:09:42 [rx] * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted +\Recent \Draft \Seen)] Permanent flags +IMAP: 17:09:42 [rx] * OK [UNSEEN 0]. +IMAP: 17:09:42 [rx] k9ri OK [READ-WRITE] SELECT completed +IMAP: 17:09:42 [tx] wo9i IDLE +IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 17:09:42 [rx] + Waiting for DONE. +IMAP: 17:09:42 [tx] DONE +IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 17:09:42 [rx] wo9i OK IDLE completed. +IMAP: 17:09:42 [tx] qse6 UID FETCH 1:* (BODY.PEEK[HEADER.FIELDS (References +X-Ref X-Priority X-MSMail-Priority X-MSOESRec Newsgroups)] ENVELOPE +RFC822.SIZE UID FLAGS INTERNALDATE) +IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 17:09:42 [rx] * 1 FETCH (BODY[HEADER.FIELDS ("REFERENCES" "X-REF" +"X-PRIORITY" "X-MSMAIL-PRIORITY" "X-MSOESREC" "NEWSGROUPS")]{2} +IMAP: 17:09:42 [rx] Buffer (literal) of length 2 +IMAP: 17:09:42 [rx] ENVELOPE ("Wed, 1 Mar 2006 17:32:03 +0530 (GMT)" +"testmail1" ((NIL NIL "guest" "archimedes.co.in")) ((NIL NIL "guest" " +archimedes.ampersand.co.in")) ((NIL NIL "guest" "archimedes.co.in")) ((NIL +NIL "lk" "192.168.11.21")) NIL NIL NIL "< +8755816.1141214523971.JavaMail.root@pythagorus>") RFC822.SIZE 432 FLAGS () +INTERNALDATE " 1-Mar-2006 17:32:03 +0530") +IMAP: 17:09:42 [db] PARSE ERROR: hr=2148322516 +IMAP: 17:09:42 [rx] * 2 FETCH (BODY[HEADER.FIELDS ("REFERENCES" "X-REF" +"X-PRIORITY" "X-MSMAIL-PRIORITY" "X-MSOESREC" "NEWSGROUPS")]{2} +IMAP: 17:09:42 [rx] Buffer (literal) of length 2 +IMAP: 17:09:42 [rx] ENVELOPE ("Wed, 1 Mar 2006 18:16:20 +0530 (GMT)" +"testmail2" ((NIL NIL "guest" "archimedes.co.in")) ((NIL NIL "guest" " +archimedes.co.in")) ((NIL NIL "guest" "archimedes.co.in")) ((NIL NIL "lk" " +192.168.11.21")) NIL NIL NIL "< +12468716.1141217181025.JavaMail.root@pythagorus>") RFC822.SIZE 433 FLAGS () +INTERNALDATE " 1-Mar-2006 18:16:20 +0530") +IMAP: 17:09:42 [db] PARSE ERROR: hr=2148322516 +IMAP: 17:09:42 [rx] * 3 FETCH (BODY[HEADER.FIELDS ("REFERENCES" "X-REF" +"X-PRIORITY" "X-MSMAIL-PRIORITY" "X-MSOESREC" "NEWSGROUPS")]{2} +IMAP: 17:09:42 [rx] Buffer (literal) of length 2 +IMAP: 17:09:42 [rx] ENVELOPE ("Fri, 3 Mar 2006 16:51:40 +0530 (GMT)" +"testmail3" ((NIL NIL "guest" "archimedes.co.in")) ((NIL NIL "guest" " +archimedes.ampersand.co.in")) ((NIL NIL "guest" "archimedes.co.in")) ((NIL +NIL "lk" "192.168.11.21")) NIL NIL NIL "< +11733267.1141384902172.JavaMail.root@pythagorus>") RFC822.SIZE 433 FLAGS () +INTERNALDATE " 3-Mar-2006 16:51:40 +0530") +IMAP: 17:09:42 [db] PARSE ERROR: hr=2148322516 +IMAP: 17:09:42 [rx] qse6 OK UID FETCH completed. +IMAP: 17:09:42 [tx] bfzr IDLE +IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 17:09:42 [rx] + Waiting for DONE. +IMAP: 17:19:31 [tx] Dropping connection, LOGOUT sent +IMAP: 17:19:31 [db] Connection to '192.168.11.21' closed. +IMAP: 17:19:31 [db] OnNotify: asOld = 5, asNew = 0, ae = 5 + + +Eagerly waiting for solution, +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23036.mbox:2,S new file mode 100644 index 00000000..5cb959be --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23036.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Tue Feb 28 06:22:06 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: Superior hierarchical mailbox creation.... +In-Reply-To: <44045452.2050407@andrew.cmu.edu> +References: + <44045452.2050407@andrew.cmu.edu> +Message-ID: <2488.1141136528.074000@dark> + +On Tue Feb 28 13:46:58 2006, Ken Murchison wrote: +> nikhil BS wrote: +>> Hi all, +>> We are developing a client for IMAP server. +>> I tried to create mailbox of the form x.y.z where '.' is the +>> heirarchy separator. +>> According to the RFC, +>> +>> -- +>> If the server's hierarchy separator character appears elsewhere in +>> the name, the server SHOULD create any superior hierarchical +>> names +>> that are needed for the CREATE command to be successfully +>> completed. In other words, an attempt to create +>> "foo/bar/zap" on +>> a server in which "/" is the hierarchy separator character +>> SHOULD +>> create foo/ and foo/bar/ if they do not already exist +>> -- +>> +>> But the mailbox x.y.z was created and not the superior +>> hierarchical mailboxes x, x.y weren't. +>> This is the output of the LIST command... +> +> The text in RFC 3501 says that the server SHOULD create any +> superior *hierarchical names*, which Cyrus does. It doesn't say +> that it must create the hierarchical mailboxes. I believe that +> Cyrus is and has been compliant in this regard. +> +> +Yes, I agree - specifically, it says "foo/" and "foo/bar/", which, if +used as the argument to CREATE, will create 'things' which can +contain mailboxes, but may not be mailboxes themselves. + +One quirk of Cyrus is that if one issues 'CREATE x.y.', then it +creates a mailbox x.y, but no mailbox x. Entirely legal, however. + +An IMAP server which actually created mailboxes foo and foo/bar (or x +and x.y) in this instance would also be correct, of course. + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23040.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23040.mbox:2,S new file mode 100644 index 00000000..9bbc3b34 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23040.mbox:2,S @@ -0,0 +1,90 @@ +MBOX-Line: From daan.rijnders at chronotech.nl Mon Jan 23 00:42:30 2006 +To: imap-protocol@u.washington.edu +From: Daan Rijnders +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Telnet IMAP on Exchange 5.5 +Message-ID: + +Hi Larry, + +Thanks for the tip. The server which is running Exchange 5.5 SP4 is a +Windows 2000 Server incl SP4. It might be an exotic combination, but I got +it running for quite some time without a problem. The Exchange Administrator +user is set to "act as part of the OS" in the local security settings on the +Exchange server (not through GP). I also made the user which needs to read +out it's mailbox through IMAP with an 3rd party tool to "act as part of the +OS" but this to no avail. +I login with "? Login domain/user_name password" +Still getting error: "? NO one of the requested permissions is not assigned +to the client" + +I got the suggestion to use 001 Login domain/user_name password. Is this +another way to log in to a working IMAP server? +I cannot test IMAP connectivity because i only have one mailserver which is +an Exchange 5.5 server. + +Thanks for any help. +Daan + +-----Oorspronkelijk bericht----- +Van: Larry Osterman [mailto:Larry.Osterman@microsoft.com] +Verzonden: vrijdag 20 januari 2006 20:26 +Aan: 'Dave Cridland'; Daan Rijnders +CC: imap-protocol@u.washington.edu +Onderwerp: RE: [Imap-protocol] Telnet IMAP on Exchange 5.5 + +Passwords are case sensitive. In addition, the server's account needs to +have the "Act as part of the operating system" privilege, I believe (to call +LogonUser). On Win2K, I believe that restriction was relaxed, but I suspect +you're running Exchange on a pre-win2K server (which isn't supported, but +you know that). + + +Larry Osterman + +-----Original Message----- +From: imap-protocol-bounces@mailman1.u.washington.edu +[mailto:imap-protocol-bounces@mailman1.u.washington.edu] On Behalf Of Dave +Cridland +Sent: Friday, January 20, 2006 7:23 AM +To: Daan Rijnders +Cc: imap-protocol@u.washington.edu +Subject: Re: [Imap-protocol] Telnet IMAP on Exchange 5.5 + +On Fri Jan 20 09:28:36 2006, Daan Rijnders wrote: +> I enter: "? Login domain/username password" (without the quotes) this +> results in an error: one of the requested permissions is not assigned +> to the client. I checked this on the Exchange server to see if my user +> is IMAP enabled and did the same thing in Active Directory. Both state +> that my user is able to use IMAP. +> +Right. Exchange's IMAP support is, contrary to popular belief, actually +quite reasonable, as far as I'm aware. The client support in Outlook and +Outlook Express is notoriously terrible, but credit where credit's due. + + +> Question: is this case sensitive? Should I use all CAPS? forward +> slashes? +> +> +I can't remember - it's been ages since I messed about with IMAP on +Exchange. What I do remember is that you also need to specify the alias, or +at least used to need to. Officially, this isn't needed (or wasn't then), +but it won't login without it. This might even have been on Exchange 5.5, +but I couldn't honestly tell you. + +So for my case, it was something vaguely like Dave/FELSPAR/dac as a username +- where Dave was my NT login, FELSPAR the domain, and dac my alias - that +is, the local-part of the email address. The slashes might have been the +other way around, hence Dave\FELSPAR\dac - I'm really not sure. + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw +_______________________________________________ +Imap-protocol mailing list +Imap-protocol@u.washington.edu +https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23045.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23045.mbox:2,S new file mode 100644 index 00000000..84045a7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23045.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Dec 13 08:34:02 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] IMAP protocol +In-Reply-To: <006801c5ffcf$35676990$1500a8c0@Ganesh> +References: <006801c5ffcf$35676990$1500a8c0@Ganesh> +Message-ID: + +On Tue, 13 Dec 2005, Ganesh wrote: +> i received the link for book for INternet Protocol development but i +> didn't get the actual content on net. +> Can you prvide me the useful link which can help me in solving my +> problem.I will try to get the book but when i searched it was not available +> near to me. + +I do not know of any pedagogical resource on IMAP (and other Internet +email protocols) other than Kevin Johnson's book. + +The resources that exist online are the RFCs which specify the protocols, +but these specifications are not aimed at beginners. Some people have +drawn up notes of "mistakes to avoid" when writing an IMAP implementation, +but those notes will make no sense unless you already understand the IMAP +protocol specification. + +It is a large and complex task to build a quality IMAP implementation, +even for an expert programmer. It is also a large and complex task to +learn enough about IMAP (and other email protocols) to build a quality +implementation. + +As a practical matter, if you are not familiar with the various email +protocols (effectively, you have to memorize all these 100+ pages +specifications), this will be a multi-year project. It may not be +difficult to produce something that "works", but it is quite difficult to +produce something that "works well". + +There is no "shortcut" for this task. Kevin Johnson's book will give you +a basic overview of the various protocols, but you will still need to +spend a long time studying the RFCs. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23051.mbox:2,S new file mode 100644 index 00000000..6fb4f2f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23051.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From davidmaxwaterman at fastmail.co.uk Wed Nov 2 20:26:58 2005 +To: imap-protocol@u.washington.edu +From: Max Waterman +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: +References: <436988D9.8040106@fastmail.co.uk> + +Message-ID: <43699192.2040701@fastmail.co.uk> + +Thanks for the prompt response and clear explanation. + +It seems that the options are : + +1) propose a new RFC to split the username/password, which can then be +implemented +2) use a separate servers for secure and insecure users (I suppose a +second NIC would suffice?) + +Is that correct? + +Max. + +Mark Crispin wrote: +> Your question is difficult to answer, because it makes an incorrect +> premise. That premise is that the server "asks" for a password. +> +> The server does not "ask" for a password in IMAP; rather, the client +> chooses to provide one. +> +> The server MAY announce that it refuses passwords on a global basis via +> the LOGINDISABLED capability. Any client which sends a password to a +> server which has announced LOGINDISABLED is non-compliant with the IMAP +> specification and should not be used. +> +> The standard configuration of UW imapd, in accordance with the IMAP +> specification (RFC 3501), makes such an announcement on non-SSL/TLS +> sessions; and in that state will reject any password even if the +> password is correct. In that state, UW imapd allows other means of +> authentication that do not involve passwords. If the session negotiates +> TLS encryption, the UW imapd will retract the LOGINDISABLED announcement +> and allow password authentication. +> +> For other servers, you will need to read the vendor's documentation. +> +> When announced, LOGINDISABLED is a global restriction. It is not +> possible to allow passwords for some users and disallow passwords for +> other users. This is because the user name and password are sent together. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23055.mbox:2,S new file mode 100644 index 00000000..fdb08555 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23055.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From tss at iki.fi Mon Oct 17 07:18:55 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +In-Reply-To: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> +References: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> +Message-ID: <1129558735.1214.360.camel@hurina> + +On Mon, 2005-10-17 at 18:04 +0400, Alex Kapranoff wrote: +> Is there a way to get envelope "From" information for a mail via IMAP? +> Specifically, "ENVELOPE" fetch item does not seem to return it. + +No, unless it was written to some header by your MDA. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095129.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095129.23059.mbox:2,S new file mode 100644 index 00000000..17c8ef6e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095129.23059.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From ingo.schurr at schlund.de Fri Sep 2 00:43:58 2005 +To: imap-protocol@u.washington.edu +From: Ingo Schurr +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Req. for clarification: RENAME and DELETE in + selected state +Message-ID: <20050902074358.GJ1330@fone> + +Hi all, + +this for sure is an unusual scenario. But anyway, maybe someone can +clarify... + +Assume we are in selected state, the selected folder being foo. What +would be the approriate behaviour for the commands +c DELETE foo +c RENAME foo bar +(assuming they would succeed in authenticated state)? + +I'm mainly concerned with: + o The untagged responses (e.g., EXPUNGE) + o The state (authenticated, selected; if selected, which folder) + +More concretely: + +Should DELETE foo be read as + c1 CLOSE + c2 DELETE foo +(meaning: Delete everything without untagged EXPUNGE respones and +change into authenticated state) + +or as + c1 STORE 1:* +FLAGS \Deleted + c2 EXPUNGE + c3 CLOSE + c4 DELETE foo +(meaning: Delete everything with untagged EXPUNGE responses for _all_ +mails and change into authenticated state) + +or as + c1 STORE 1:* +FLAGS \Deleted + c2 EXPUNGE +(meaning: Delete everything with untagged EXPUNGE responses for _all_ +mails, but do _not_ delete folder and stay in selected state) + +or should one elete everything without untagged EXPUNGE responses, +_not_ delete folder and stay in selected state? + +Or should we not allow it at all? + +Simillarly, RENAME foo bar could be read as: + c1 EXAMINE foo + c2 CLOSE + c3 RENAME foo bar + c4 SELECT bar +or, altenatively c4 could be omitted. Or we could just rename folders +without giving any untagged response, meaning, we would be in selected +state on folder bar afterwards. + +Best, +Ingo + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22756.mbox:2,S new file mode 100644 index 00000000..996cb035 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22756.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 20 09:03:55 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] fetch envelope charset? +In-Reply-To: +References: + +Message-ID: <2F810292-3C18-4E0F-A570-6888E0FC3B39@mac.com> + + +On Nov 20, 2011, at 5:22 PM, Timo Sirainen wrote: + +>> Could it be the q-encoded UTF-8 value (=?UTF-8?Q?H=C3=83=C2=B3la!?=)? +> +> I suppose it could be. + +Excellent. + +> Mailbox names are mUTF7, SEARCH command has an optional CHARSET parameter, elsewhere there are no charset conversions. + +Thanks for the clarification. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22772.mbox:2,S new file mode 100644 index 00000000..e5dc2c1b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22772.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From mrc+imap at panda.com Fri May 27 09:24:54 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <3054.1306482625.167799@puncture> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + + <4DDF06A9.2050608@logicprobe.org> + + <3054.1306482625.167799@puncture> +Message-ID: + +On Fri, 27 May 2011, Dave Cridland wrote: +>> I would also reform IMAP's Hollerith strings (literals) to send the +>> entire command first (thus one complete line) and then the string +>> payloads. +> I'm not following the motivation for this. Parse a token at a time +> off the wire until you find a CRLF token - seems simple enough to me. +> It's not as if anyone uses fgets to parse anyway. What am I missing? + +The switch in modality between line and sized buffer in commands turns out +to be a problem in some server frameworks, particularly if multiple +literals appear in the same command. A related issue is that you need to +read the literals before you know that the command is syntactically valid +and can be done. + +Consider a framework in which you only get a thread at I/O complete +events, the thread is given up when it goes into I/O wait, and you get a +different thread each time. You have to save complete, increasingly +complex, context at each mode switch for a state machine. You can't rely +upon implied code state in the parser, which is the obvious way to handle +literals and what UW/Panda imapd do. + +MULTIAPPEND and CATENATE are particularly extreme examples. + +Literals done as I suggest wouldn't be particularly hard for the lexical +token-at-a-time parser; you just build a list of literals to fill in, then +fill them in. It would be a lifesaver in cases where it's really painful +to break the parse across multiple threads. [Guess who had to implement +an IMAP server in such an environment.] + +If I could take a time machine and change one, but only one, thing in the +basic design of IMAP, this would be it. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22807.mbox:2,S new file mode 100644 index 00000000..032e1eff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22807.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 18:44:49 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006120306.47168.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120251.24779.witold.krecicki@firma.o2.pl> + + <201006120306.47168.witold.krecicki@firma.o2.pl> +Message-ID: + +On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +> You are silently assuming that all of pine/alpine users were using IMAP. +> I was using pine, then alpine myself but I have never used IMAP in it, +> only local mailboxes. + +After the early 1990s, the many tens of thousands of users at UW were all +IMAP users, not local file users. Nor was UW the only institution which +configured its email infrastructure in that way. + +Furthermore, you are making a false dichotomy. + +The same engine (literally) used by Pine for local mailboxes was also in +the UW IMAP server. There was no difference in Pine between a local +mailbox operation and an IMAP operation in the user interface. The Pine +user interface did not even know whether it was IMAP or POP or NNTP or +local. In that implementation, IMAP was nothing more than an RPC between +the two instances of the engines. + +Everything in Pine used the delete/expunge model with undelete. I can +also assure you that the save command (which did the "move" operation) was +a copy+delete+expunge, including with Maildir type stores. I should know. +I wrote that code. + +We have heard that you want a MOVE command. You apparently are not +particularly concerned that it is unimplementable on some servers; nor +that on many others the resulting state of both source and destination +mailbox in the event of a failure is indeterminate. + +If you don't have any further technical details (as opposed to simply +being argumentative) to add, then please stop wasting any more time. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22880.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22880.mbox:2,S new file mode 100644 index 00000000..cb06558d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22880.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From tss at iki.fi Thu Feb 28 14:06:23 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] imaptest update +In-Reply-To: <1204181407.11220.53.camel@hurina> +References: <1204181407.11220.53.camel@hurina> +Message-ID: <1204236384.11220.83.camel@hurina> + +On Thu, 2008-02-28 at 08:50 +0200, Timo Sirainen wrote: +> A couple of examples to show what's possible: + +I added a few more features to make it support pretty much any test I +can think of: + +# $n maps to sequences at the beginning of a command: +connections: 2 + +1 ok store 1,3 +flags \deleted +1 ok expunge +* $1 expunge +* $3 expunge + +2 ok uid fetch 2,4 uid +* $1 expunge +* $2 fetch (uid 2) +* $3 expunge +* $4 fetch (uid 4) + +The second matches regardless of in what order server sends the +fetch/expunge replies. + +# $!directives to specify ordering rules in lists: +ok status $mailbox (messages recent) +* status $mailbox ($!unordered=2 messages 2 recent 2) + +The above matches any of: +* status mailbox (messages 2 recent 2) +* status mailbox (recent 2 messages 2) +* status mailbox (recent 2 extension () messages 2 more stuff) + +# If the extra isn't wanted: +ok fetch 1 flags +* 1 fetch ($unordered=2 flags ($!unordered $noextra \seen \draft)) + +These $!directives aren't actually required for the above standard +untagged replies (fetch, fetch flags, status, list) because they're +added by default. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22883.mbox:2,S new file mode 100644 index 00000000..e7a266e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22883.mbox:2,S @@ -0,0 +1,12 @@ +MBOX-Line: From dkarp at zimbra.com Sun Jan 27 17:32:56 2008 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: <08Jan27.171846pst."58696"@synergy1.parc.xerox.com> +Message-ID: <1387975724.1521201483976090.JavaMail.root@dogfood.zimbra.com> + +> It would be interesting to do another table for servers, I suppose. + +http://www.melnikov.ca/mel/devel/ServerReference.html + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22893.mbox:2,S new file mode 100644 index 00000000..3436d071 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22893.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 16:58:13 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <45EC73D8-9862-48F6-8929-B27B320CF006@apple.com> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <45EC73D8-9862-48F6-8929-B27B320CF006@apple.com> +Message-ID: + +On Mon, 29 Oct 2007, Sarah Wilkin wrote: +> This is great, thanks. Is there any timeline proposed for IMAP5, or something +> earlier for internationalization/UTF-8? + +IMAP5 is "just talk". I do not know if it will progress beyond "just +talk", or will end up as the dumping ground for all the "we should do this +if we ever redesign from the ground up" stuff. + +I'm sure that Apple has something similar, called "the new operating +system that will replace Mac OS X." Similarly Microsoft has "the new +operating system that will replace NT." etc. etc. :-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22911.mbox:2,S new file mode 100644 index 00000000..2aabd8b0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22911.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From tss at iki.fi Mon Jun 25 06:58:32 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Mailbox root name +Message-ID: <1182779912.3768.174.camel@hurina> + +What exactly is the use for mailbox root names? It seems like it should +be exactly the same as the namespace prefix. UW-IMAP anyway does +something weird: + +1 LIST hello/world/ "" + +It returns "hello/" as the mailbox root, even if hello doesn't exist. +Why? Does Pine really depend on this? I remember I changed Dovecot to do +this a few years ago because Pine wouldn't work otherwise correctly with +~/mail/ or mail/ or similar folder collection paths (I used to return "" +as root). Now that I'm looking over the code I'm just wondering why. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22914.mbox:2,S new file mode 100644 index 00000000..91b28cff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22914.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu May 24 08:52:17 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: <1738689467.102591179990489448.JavaMail.root@dogfood.zimbra.com> +References: <1738689467.102591179990489448.JavaMail.root@dogfood.zimbra.com > +Message-ID: + +On Thu, 24 May 2007, Dan Karp wrote: +> It certainly makes sense that changes in FLAGS elicit unsolicited +> responses in much the same way as changes in EXISTS and RECENT do. +> Along those lines, should the server be sending untagged notifications +> with the appropriate response codes when the next message UID [UIDNEXT] +> and lowest-sequenced unseen message [UNSEEN] change? + +A reasonable question. + +IMHO, UIDNEXT and UNSEEN are uniquely useful at SELECT time: UIDNEXT to +tell a disconnected client if there are possible new messages since the +last session (saves an RTT) and UNSEEN to allow some clients to position +their message index browser at the "first unread message" (again to save +an RTT). + +Both of these are late add-ons to IMAP, with relatively little +justification. Some have argued their abolition. But on the other hand, +there was a client that did a STATUS to get UIDNEXT separate from the +SELECT, because it wanted to know if there was new mail but it had been +deleted and expunged. I don't think that we want to go back there. + +Anyway, I see little point to sending UIDNEXT and UNSEEN updates. + +>> Put another way: a subsequent FLAGS response in a session should only add +>> flags at the end of the list, but a FLAGS response in a new session can +>> reorder/remove flags. +> Will any clients fail if either of these two suggestions are not followed +> by the server? + +Yes. This was even discussed on the IMAP mailing list many years ago. + +> They both seem reasonable, but there doesn't appear to be +> anything in RFC 3501 that requires that servers behave in that manner. + +RFC 3501, like all human endeavors, is not perfect. We have spent about +20 years in trying to get IMAP beyond Proposed Standard status. We are +probably going to fall back yet again with another Proposed Standard RFC +for IMAP. + +You can't assume that the specification is going to tell you everything +that you need to know. It will never happen. We can address this +particular question, but I can guarantee that someone will find another +one after the publication of the new RFC. + +Each IMAP specification update consumes a couple of years of my time. +Invariably, there are months of "last calls" and inactivity, only to have +someone call a "wait, we need to do this" at the last minute that pulls +everything back. Requests to review drafts don't work. + +And, with the addition of more expository text to say (what is obvious to +some people), we get a larger and more bloated document that people won't +read. There are already many IMAP implementations written by people who +looked at the examples but never the formal syntax or the expository text, +because their implementations blatantly violate both. + +I understand -- and sympathize -- with the desire to remove reliance upon +folklore and common sense. I see no hope of that ever being accomplished. + +The sad fact is that we are running out of time. Given past history, +there is little hope that it will reach full standard status under my +tenure. + +I don't think that it's a good use of the next decade or so to make a +futile attempt to perfect the base specification. It needs to be made +good enough, and there needs to be general understanding of the +architecture so that people don't blame their silly decisions on the base +specification. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22917.mbox:2,S new file mode 100644 index 00000000..8086153e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22917.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From dkarp at zimbra.com Wed Apr 18 21:23:29 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] SURVEY: How does SEARCH match in your IMAP server? +Message-ID: <827372203.32641176956609326.JavaMail.root@dogfood.liquidsys.com> + +We're collecting hard data to help refine an upcoming IMAP extension +(http://www.ietf.org/internet-drafts/draft-ietf-imapext-i18n-10.txt). +If you're developing an IMAP server, it would be a *great* help if you +could take 3 minutes to answer a few questions about your server +implementation. If you email responses back to me along with your +server's name and version, I'll compile the results. + + +Assume that you've just injected the following message into an empty +INBOX: + +---------------------------------------------------------------------- +Subject: Music +Date: Tue, 17 Apr 2007 16:53:02 -0700 (PDT) +From: user1@example.com +To: user2@example.com +Content-Type: text/plain; charset="iso-8859-1" + +I love M?tley Cr?e ! +---------------------------------------------------------------------- + +For each of the following SEARCH requests, would your server match the +message, not match the message, return NO [BADCHARSET], or return some +other NO or BAD response? + +A001 SEARCH BODY "love" + +A002 SEARCH BODY "LOVE" + +A003 SEARCH CHARSET "iso-8859-1" BODY {4} +Cr?e + +A004 SEARCH CHARSET "utf-8" BODY {5} +Cr??e + +A005 SEARCH CHARSET "iso-8859-1" BODY {4} +CR?E + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22920.mbox:2,S new file mode 100644 index 00000000..e9b41ca4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 17:24:47 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> + +Mark Crispin writes: +> On Sun, 11 Mar 2007, Bill Janssen wrote: +> > I'm reading a lot on the Web about Apple Mail and its notion that all +> > mailboxes be sub-mailboxes of INBOX, apparently because a popular IMAP +> > server does it that way. +> +> I suggest that you concern yourself with complying with IMAP, and not +> try to program for the whims of an individual client. I did not find +> Apple Mail to be a satifactory IMAP client. + +I certainly understand your feelings here, but Apple Mail is the +client I'm trying to support, with all its imperfections. As for +complying with IMAP, sure, I do indeed want to do just that; but where +there are unspecified things (like how to arrange mailboxes), I'd just +as soon do it the way that some other folks do it, to smooth the path. + +> One caution is that UIDs need to be immutable, or at least you need to +> change the UIDVALIDITY when they change. This is a problem if you use MH +> message ID numbers for UIDs, because the mh pack and sort operations will +> renumber the message ID numbers. + +Thanks for that reminder. + +> Have you thought about trying UW imapd, even if you plan to deploy your +> own implementation, just so you have reference to compare? + +Good idea. I hadn't realized that it supported MH folders. I'll do that. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22957.mbox:2,S new file mode 100644 index 00000000..8fa949c1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22957.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From tss at iki.fi Thu Dec 21 15:35:38 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: +References: <1166603479.22214.298.camel@hurina> + + <1166643258.22214.350.camel@hurina> + +Message-ID: <1166744138.22214.523.camel@hurina> + +On Wed, 2006-12-20 at 14:19 -0800, Mark Crispin wrote: +> On Wed, 20 Dec 2006, Timo Sirainen wrote: +> > Optimizing the string search would help some, but for large mailboxes +> > it's still a bit too slow. People want instant search results +> > nowadays. :) +> +> Please define what you mean by "large" and "instant". + +Some people would want to see the results as they keep typing the search +keyword. For that kind of a user interface the search can't really take +much longer than 0.1 seconds or it'll look slow. + +> It took some effort for me to construct a mailbox that was pathologically +> large enough for a search in UW imapd to take a whole 2 seconds. + +But I guess that's for a mailbox that's already in file cache? I'd think +that in a real mail server most users' mailboxes need to be read from +the disk as they're searched, and for a loaded server that can be even +slower. I've also heard of users whose INBOX is over 2 gigabytes.. + +> > Perhaps. I think it depends on how badly mail admins want it. If it's +> > only a small s/BODY/X-NONEXACT-BODY/ replace for their webmail code, +> > it'll get usage at least within Dovecot community. +> +> By the way, are you doing charset and i18n case-mapping in your +> "non-exact" search? That, and not the searching, is what takes time. + +The "non-exact" naming means just that the text/body searching can +implement different search string matching rules than what IMAP RFC +defines. I couldn't think of a good name for it. Maybe +X-NONRFC-TEXT/BODY :) + +But for a standard search, yes, I'm converting mails to UTF-8 before +doing any searching. I should add support for case-insensitive UTF-8 +searches also, but for now I'm doing it only for ASCII. No-one's +complained yet though :) + +Anyway, yes, I could probably get my standard search code a lot faster +(UW-IMAP searches mboxes 2-3 times faster), but that won't help with +disk I/O usage. Usually there's enough CPU to go around, but not that +much available disk I/O. Indexing helps a lot with that. So it's not +just for bringing down search times from a few seconds to zero, but also +lowering the system load in general. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22960.mbox:2,S new file mode 100644 index 00000000..35c69fa4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22960.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Nov 24 15:52:11 2006 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 3501 section 5.4 Autologout timer +In-Reply-To: +References: + <20061123140532.C1467@gollum.dev.gmi-mr.com> + + + +Message-ID: <20061124155103.H1280@gollum.dev.gmi-mr.com> + +> I just don't see how 3 minutes for non-authenticated sessions is a problem, +> or why 5 minutes would be a benefit. I oppose the proposal to stipulate 5 +> minutes on the grounds that it's unnecessary and it renders +> currently-compliant implementations non-compliant. + +Okay, I'm not going to beat this to death. But I am going to set the +pre-auth idle timeout to 1 second on everyone's IMAP servers :-P + + +--lyndon + + >What about all the people who hoarded tonnes of spam in their bunkers? + + I hoard spam on my hard drive. When I heard about the coming + Y2K worries, I downloaded a lifetime supply from the net. + -- Charlie Gibbs in alt.folklore.computers + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22974.mbox:2,S new file mode 100644 index 00000000..dd513e80 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22974.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 12 14:43:13 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> +Message-ID: + +On Tue, 12 Sep 2006, Arnt Gulbrandsen wrote: +> Bill Shannon writes: +>> I'd be happy to have both 4.1.2 and 4.1.3 declared as not allowed behavior. +> That would leave us with only 4.1.1 and 4.1.4, which make it practically +> impossible to delete a message. I don't like the security implications of +> that. + +It would require an extremely abusive client to cause that result; one +that was active but only did FETCH, STORE, and SEARCH commands for an +extended period of time, thus blocking the untagged EXPUNGE. + +To date, this has not been a problem. + +If this were to become a problem, a server would be perfectly within its +rights to set a maximum time that this could go on, and when the time is +exceeded it issues an untagged BYE. + +I would not mind adding text to that effect to the base specification if +there is concensus that such text is a good idea. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22983.mbox:2,S new file mode 100644 index 00000000..921c4848 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22983.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From brendan at kublai.com Thu Aug 31 17:21:18 2006 +To: imap-protocol@u.washington.edu +From: Brendan Cully +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] changed capabilities after login +Message-ID: <20060901002118.GB16606@ventoux.cs.ubc.ca> + +Hi, + +I wonder if anyone can point me to the part of the IMAP standard that +deals with changing capability lists. I know the client should recheck +capabilities after STARTTLS, but I'm not sure when else it should +expect the capability list to change. I've also seen the following +text in the AUTHENTICATE and LOGIN sections: + + A server MAY include a CAPABILITY response code in the tagged OK + response of a successful AUTHENTICATE command in order to send + capabilities automatically. It is unnecessary for a client to + send a separate CAPABILITY command if it recognizes these + automatic capabilities. + +which implies that the client should recheck capabilities after +AUTHENTICATE and LOGIN, but I don't see where in the RFC this is +explicitly stated, and I don't understand the motivation for this case +(in the STARTTLS case I believe the idea was to discover stronger +authentication methods -- of course this doesn't apply after +authentication). + +I'd like to avoid the round trip if possible, so I'm tempted to regard +the following protocol snippet (filed as a bug against mutt) as a +server bug: + +* OK Mirapoint IMAP4PROXY 3.5.8-GR server ready +a0000 CAPABILITY +* CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS +a0000 OK Completed +a0001 LOGIN xxx xxx +a0001 OK LOGIN completed. +a0002 LIST "" ""^M +* LIST (\Noselect) "/" "" +a0002 OK LIST completed. +a0003 MYRIGHTS "INBOX"^M +a0004 STATUS "INBOX.Drafts" (MESSAGES)^M +a0005 SELECT "INBOX"^M +a0003 BAD Protocol Error: "Unidentifiable command specified". + +Apparently if CAPABILITY were issued after LOGIN on this server, the +response would have been: + +CAPABILITY IMAP4 IMAP4rev1 IDLE LOGIN-REFERRALS MAILBOX-REFERRALS NAMESPACE LITERAL+ UIDPLUS CHILDREN + +(ACL is deleted). + +Is it kosher for the server to silently drop support for a +previously-advertised capability? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.22999.mbox:2,S new file mode 100644 index 00000000..15530d5d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.22999.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jun 30 10:12:07 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + + +Message-ID: + +On Fri, 30 Jun 2006, Arnt Gulbrandsen wrote: +> Don't you think the servers on such platforms should deal with it, instead of +> expecting all clients on all platforms to do so? +> For example, a server on such a platform can fork off another intance of +> itself (invisible to the client), close the IMAP connection, and let the +> client go on its way? + +That makes no sense. I said that the server gets a non-maskable kill from +the OS. The server has no notice, nor any opportunity to react; it is +instantly destroyed. + +Fortunately, this is rare (and arguably broken) OS behavior. Most OS +developers realize that a server should get a proper maskable signal on +disconnect so that the server can undertake its cleanup action. + +The LOGOUT command exists in IMAP for a reason. Clients which do not send +the LOGOUT command are broken. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.23014.mbox:2,S new file mode 100644 index 00000000..cd166b5e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.23014.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 4 14:15:01 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] authentication condition reporting extensions +Message-ID: + +The question has come up about possible extensions to what may optionally +be reported by the server due to authentication conditions. Obviously, +there is substantial security sensitivity here. + +The conditions in question are: + . password will expire at such-and-such future time (or interval) + . password has expired + . account will expire at such-and-such future time (or interval) + . account has expired + . account has been disabled + +It is desired to include a URL that will provide more information. + +Currently, the only way to do this is with ALERT, but perhaps it would be +useful if the client could know about some of these. + +Example (with both ALERT for compatibility and new response code) + +* NO [EXPIRED http://imap.example.com/expired] +tag NO [ALERT] Your account has expired, contact the help desk + +Comments? + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.23031.mbox:2,S new file mode 100644 index 00000000..89e59133 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.23031.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Sun Mar 19 21:57:48 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: Error in implementing imap +In-Reply-To: +References: +Message-ID: + +> Client: Outlook Express 6 +> Implementing Server in java +> +> Scenario: I am able to list the folders but not able to list the mails +> when i select a particular mail folder say customised or Sent/Trash.. etc +> +> Problem: Select and UID Fetch command +> Question: +> 1. can i have UIDVALIDITY 1 as uid next will always be unique. If not +> how and when should i change UIDVALIDITY ? can i toggle with 0 or 1? +> 2. in the log below;UIDNEXT is 3158 but when client issues the UID Fetch +> command its 1:* WHY?? +> 3. PARSE ERROR: hr=2148322516. what is the cause for this error?? how +> can i rectify?? Is there any syntax mistake is Response??? +> 4. Buffer(literal) length is same for all its {2}. Do i need to +> calculate this ??i have hard coded this. If needs calculation how?? +> 5. Because of above problems I am unable to get the list of mails when i +> select a particular mail folder. How can i proceed further?? +> +> Client Log is as below: +> +> k9ri SELECT "INBOX." +> IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +> IMAP: 17:09:42 [rx] * 3 EXISTS +> IMAP: 17:09:42 [rx] * 0 RECENT +> IMAP: 17:09:42 [rx] * OK [UIDVALIDITY 1]UID validity status +> IMAP: 17:09:42 [rx] * OK [UIDNEXT 3158] Predicted next UID. +> IMAP: 17:09:42 [rx] * FLAGS (\Answered \Flagged \Deleted \Recent \Draft +> \Seen). +> IMAP: 17:09:42 [rx] * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted +> \Recent \Draft \Seen)] Permanent flags +> IMAP: 17:09:42 [rx] * OK [UNSEEN 0]. +> IMAP: 17:09:42 [rx] k9ri OK [READ-WRITE] SELECT completed +> IMAP: 17:09:42 [tx] wo9i IDLE +> IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +> IMAP: 17:09:42 [rx] + Waiting for DONE. +> IMAP: 17:09:42 [tx] DONE +> IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +> IMAP: 17:09:42 [rx] wo9i OK IDLE completed. +> IMAP: 17:09:42 [tx] qse6 UID FETCH 1:* (BODY.PEEK[HEADER.FIELDS(References X-Ref X-Priority X-MSMail-Priority X-MSOESRec Newsgroups)] +> ENVELOPE RFC822.SIZE UID FLAGS INTERNALDATE) +> IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +> IMAP: 17:09:42 [rx] * 1 FETCH (BODY[HEADER.FIELDS ("REFERENCES" "X-REF" +> "X-PRIORITY" "X-MSMAIL-PRIORITY" "X-MSOESREC" "NEWSGROUPS")]{2} +> IMAP: 17:09:42 [rx] Buffer (literal) of length 2 +> IMAP: 17:09:42 [rx] ENVELOPE ("Wed, 1 Mar 2006 17:32:03 +0530 (GMT)" +> "testmail1" ((NIL NIL "guest" " archimedes.co.in")) ((NIL NIL "guest" " +> archimedes.ampersand.co.in")) ((NIL NIL "guest" "archimedes.co.in ")) +> ((NIL NIL "lk" "192.168.11.21")) NIL NIL NIL "<8755816.1141214523971.JavaMail.root@pythagorus +> >") RFC822.SIZE 432 FLAGS () INTERNALDATE " 1-Mar-2006 17:32:03 +0530") +> IMAP: 17:09:42 [db] PARSE ERROR: hr=2148322516 +> IMAP: 17:09:42 [rx] * 2 FETCH (BODY[HEADER.FIELDS ("REFERENCES" "X-REF" +> "X-PRIORITY" "X-MSMAIL-PRIORITY" "X-MSOESREC" "NEWSGROUPS")]{2} +> IMAP: 17:09:42 [rx] Buffer (literal) of length 2 +> IMAP: 17:09:42 [rx] ENVELOPE ("Wed, 1 Mar 2006 18:16:20 +0530 (GMT)" +> "testmail2" ((NIL NIL "guest" " archimedes.co.in")) ((NIL NIL "guest" " +> archimedes.co.in")) ((NIL NIL "guest" "archimedes.co.in")) ((NIL NIL "lk" +> " 192.168.11.21")) NIL NIL NIL "< +> 12468716.1141217181025.JavaMail.root@pythagorus>") RFC822.SIZE 433 FLAGS +> () INTERNALDATE " 1-Mar-2006 18:16:20 +0530") +> IMAP: 17:09:42 [db] PARSE ERROR: hr=2148322516 +> IMAP: 17:09:42 [rx] * 3 FETCH (BODY[HEADER.FIELDS ("REFERENCES" "X-REF" +> "X-PRIORITY" "X-MSMAIL-PRIORITY" "X-MSOESREC" "NEWSGROUPS")]{2} +> IMAP: 17:09:42 [rx] Buffer (literal) of length 2 +> IMAP: 17:09:42 [rx] ENVELOPE ("Fri, 3 Mar 2006 16:51:40 +0530 (GMT)" +> "testmail3" ((NIL NIL "guest" " archimedes.co.in")) ((NIL NIL "guest" " +> archimedes.ampersand.co.in")) ((NIL NIL "guest" "archimedes.co.in ")) +> ((NIL NIL "lk" "192.168.11.21")) NIL NIL NIL "<11733267.1141384902172.JavaMail.root@pythagorus +> >") RFC822.SIZE 433 FLAGS () INTERNALDATE " 3-Mar-2006 16:51:40 +0530") +> IMAP: 17:09:42 [db] PARSE ERROR: hr=2148322516 +> IMAP: 17:09:42 [rx] qse6 OK UID FETCH completed. +> IMAP: 17:09:42 [tx] bfzr IDLE +> IMAP: 17:09:42 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +> IMAP: 17:09:42 [rx] + Waiting for DONE. +> IMAP: 17:19:31 [tx] Dropping connection, LOGOUT sent +> IMAP: 17:19:31 [db] Connection to ' 192.168.11.21' closed. +> IMAP: 17:19:31 [db] OnNotify: asOld = 5, asNew = 0, ae = 5 +> +> +> Eagerly waiting for solution, +> +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.23036.mbox:2,S new file mode 100644 index 00000000..05ec9ae2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.23036.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From bill.shannon at sun.com Tue Feb 28 10:54:01 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] APPEND flags +Message-ID: <44049C49.9010607@sun.com> + +When using JavaMail to copy messages from one IMAP server to a different +IMAP server, JavaMail will use the APPEND command and will include the +flags that were present on the message in the source server. What +should a server do if it gets flags in an APPEND command that it does +not support? At least one server is returning BAD in such a case. + +Assuming that's allowed behavior, how should a client react to such a +response? Since APPEND can be applied to a mailbox that hasn't been +selected, the client may not know what flags are supported by that +mailbox. Should the client SELECT the destination mailbox, get the +permanent flags, and perform an intersection between that set and the +set in the source message and use that set for another APPEND command? +Or should the client simply try the APPEND again with only the system +flags, or no flags? + +Yes, I know, "it depends". I'm interested in your advice. + +Thanks. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.23051.mbox:2,S new file mode 100644 index 00000000..ddec3f7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.23051.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Nov 2 20:44:37 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: <43699192.2040701@fastmail.co.uk> +References: <436988D9.8040106@fastmail.co.uk> + + <43699192.2040701@fastmail.co.uk> +Message-ID: + +On Thu, 3 Nov 2005, Max Waterman wrote: +> 1) propose a new RFC to split the username/password, which can then be +> implemented + +The chances of such a document being accepted for publication as an RFC, +much less being implemented, are about as close to nil as you can get +without being completely impossible. + +> 2) use a separate servers for secure and insecure users (I suppose a second +> NIC would suffice?) + +That is more likely. You could use a different port number instead of a +separate IP address. + +I question the need to use a client which does not negotiate SSL or TLS. +All modern IMAP clients support SSL and/or TLS, and have done so for +years. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.23055.mbox:2,S new file mode 100644 index 00000000..edc9d483 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.23055.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Oct 17 07:24:38 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +In-Reply-To: <1129558735.1214.360.camel@hurina> +References: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> + <1129558735.1214.360.camel@hurina> +Message-ID: + +On Mon, 17 Oct 2005, Timo Sirainen wrote: +> On Mon, 2005-10-17 at 18:04 +0400, Alex Kapranoff wrote: +> > Is there a way to get envelope "From" information for a mail via IMAP? +> > Specifically, "ENVELOPE" fetch item does not seem to return it. +> No, unless it was written to some header by your MDA. + +I was confused when I first read this message. + +I assume that you are talking about the internal "From " line that appears +in the traditional UNIX mailbox format, and *not* the RFC 2822 "From:" +header line? If so, then Timo's response is correct. + +The "From " line is an artifact of traditional UNIX mailbox format; it +does not appear in other mailbox formats. This generally contains the +return address, which is not necessarily the same as the originator or +reply address. + +Many MDAs will write a Return-Path: header with this data. If yours does +not, there many be a switch in your mail delivery configuration to enable +it. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095130.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095130.23059.mbox:2,S new file mode 100644 index 00000000..791e2059 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095130.23059.mbox:2,S @@ -0,0 +1,115 @@ +MBOX-Line: From dave at cridland.net Fri Sep 2 02:04:39 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Req. for clarification: RENAME and DELETE in + selected state +In-Reply-To: <20050902074358.GJ1330@fone> +References: <20050902074358.GJ1330@fone> +Message-ID: <13633.1125651879.236369@peirce.dave.cridland.net> + +On Fri Sep 2 08:43:58 2005, Ingo Schurr wrote: +> Assume we are in selected state, the selected folder being foo. What +> would be the approriate behaviour for the commands +> c DELETE foo +> c RENAME foo bar +> (assuming they would succeed in authenticated state)? +> +> +A correct behaviour is to return "NO". That's certainly what some +implementations do. + +> Should DELETE foo be read as +> c1 CLOSE +> c2 DELETE foo +> (meaning: Delete everything without untagged EXPUNGE respones and +> change into authenticated state) +> +> +No, it can't - DELETE does not change state. + +> c1 STORE 1:* +FLAGS \Deleted +> c2 EXPUNGE +> c3 CLOSE +> c4 DELETE foo +> (meaning: Delete everything with untagged EXPUNGE responses for +> _all_ +> mails and change into authenticated state) +> +> +Likewise here - DELETE doesn't change state, therefore it can't do +this. + + +> or as +> c1 STORE 1:* +FLAGS \Deleted +> c2 EXPUNGE +> (meaning: Delete everything with untagged EXPUNGE responses for +> _all_ +> mails, but do _not_ delete folder and stay in selected state) +> +> +That would be legitimate. A subsequent SELECT (even in another +session) of the mailbox would presumably fail - the mailbox has +effectively been DELETEd. Any STORE would fail, because there are no +messages, and any APPEND would fail (because there's no mailbox). + +The emulated STORE there could be +FLAGS.SILENT - there's no need to +notify the client of the flag change, or even to have one. + +> or should one elete everything without untagged EXPUNGE responses, +> _not_ delete folder and stay in selected state? +> +> +After doing this, you're going to confuse the client, somewhat. The +client will believe there are messages. So many commands would have +to elicit an untagged NO with an ALERT response code to try to ensure +that the user could try to deal with the situation. I don't think +this is ideal. + +Or, you can pretend the mailbox is deleted, but still allow all FETCH +operations, actually physically deleteing it when the last client +leaves the selected state on it. This is similar to the situation of +deleting an open file on UNIX, say - the file still exists, but has +no name anymore, no applications with it open can still use it, no no +new applications can open it. + +One of the three above situations must occur if the mailbox is +deleted by another client, of course. I would personally opt for +either of the first [EXPUNGE all messages] or the third [Physical +deletion occurs after last client closes, but no new SELECT/APPEND +etc commands will operate]. + + +> Or should we not allow it at all? +> +> +As I said, that's certainly done by some implementations, and would +seem quite sensible, but for DELETEs from other sessions, something +else needs to happen. + + +> Simillarly, RENAME foo bar could be read as: +> c1 EXAMINE foo +> c2 CLOSE +> c3 RENAME foo bar +> c4 SELECT bar +> or, altenatively c4 could be omitted. Or we could just rename +> folders +> without giving any untagged response, meaning, we would be in +> selected +> state on folder bar afterwards. +> +> +I'd assume either a NO, or else we would effectively be in SELECTed +state on the "new" mailbox afterward, entirely silently. Remember +that nothing in the selected state refers to the mailbox by name, +hence the mailbox can change name without having to tell the client. + +What you can't do is change state for DELETE or RENAME. The only +commands which changed state from selected are SELECT (whether it +works or not), EXAMINE (likewise), CLOSE, and UNSELECT (if +available). Clients rely on this behaviour. + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22756.mbox:2,S new file mode 100644 index 00000000..b3e14652 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22756.mbox:2,S @@ -0,0 +1,130 @@ +MBOX-Line: From mrc+imap at panda.com Sun Nov 20 09:34:59 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] fetch envelope charset? +In-Reply-To: +References: +Message-ID: + +Timo gave a very good, albeit brief answer. Here is a more detailed one. + +On Sun, 20 Nov 2011, Petite Abeille wrote: +> Given a fetch envelope command, what character set encoding can the +> response be in? + +The only IMAP texts which are not ASCII are BODY[] parts other than the +message header. Everything else is in ASCII. An extension may relax this +requirement; but in general all implementations must assume ASCII and must +certainly handle an ASCII-only IMAP world. + +This means that UTF-8 personal name and message subjects are transmitted +as MIME encoded-words, as there is no other way to represent these in +ASCII. + +> For example, say the subject is originally encoded as +> =?iso-8859-1?Q?H=F3la!?=, which is H?la! in UTF-8. + +> Does it have to be the original value (=?iso-8859-1?Q?H=F3la!?=)? + +It may. + +> Could it be the literal UTF-8 value (H?la!)? + +Not without an extension. You can not assume that to be the case. + +> Could it be the q-encoded UTF-8 value (=?UTF-8?Q?H=C3=83=C2=B3la!?=)? + +Possibly. IMAP does not prevent server implementations from transforming +the text of header fields into a canonical form. In fact, it encourages +this practice (e.g., taking multi-line subject fields with continuation +and rendering them as a single line) in servers. + +However, servers may NOT canonicalize BODY[] parts. Those MUST be as in +the message. + +> Could it be the UTF-7 encoded UTF-8 value (H+APM-la+ACE-)? + +It can only be that if is encoded within a MIME encoded-word, e.g. +something like + =?UTF-7?Q?H+APM-la+ACE-?= +However, UTF-7 has been deprecated for many years and should not be used. +That example should demonstrate the pointlessness of using UTF-7. + +> I'm really confused about what character set encoding IMAP is expecting +> and where. Is there perhaps a FAQ to complement the RFC that summarizes +> what applies where? + +The IMAP specification, on page 5, says: + + Characters are 7-bit US-ASCII unless otherwise specified. + +Barring explicit text that allows a non-ASCII CHARSET (either in the base +specification or via some negotiated extension), this means that: + +(1) ALL message and MIME header texts MUST be in ASCII. Any non-ASCII + characters must be represented using MIME encoded-words. This is a + requirement of the email header and MIME specifications. Usenet + netnews violated this rule, but Usenet is moribund. + +(2) If, and ONLY if, the message body text is 8-bit non-ASCII in the + actual message, it is permitted for BODY[] fetches to transmit + 8-bit in that character set. This is a specific exemption to what + is otherwise an ASCII-only rule. + +(3) If the actual message body text is 7-bit with BASE64 or + QUOTED-PRINTABLE encoding of a non-ASCII character set, then a + BODY[] fetch MUST be transmitted in that form. The server MUST + NOT decode it into 8-bit for you or otherwise transform it from + the EXACT representation in the actual message. + + The corrolary to this is that if such transformation is desired, + it MUST be done by the mail delivery system (SMTP receiver) so + that the "actual message" is in this form to the IMAP server. At + that point, the IMAP server can send the transformed form under + (2) above. + +Extensions to IMAP MAY relax these rules. Don't assume this unless both +client AND server agree to this extension, and both implementations comply +with the added rules of the extension. + +To put it simply and more brutally: + + All the email world is still based in ASCII. + + We still have to do disgusting kludges to do non-ASCII text in + email. + + It's taken 20 years, and progress to do non-ASCII in email still + moves at a snail's pace. + + It's taken 15 years, and progress to standardize on UTF-8 and + abolish all other character sets (including ASCII) still moves at + a snail's pace. + + There are reasons why this is the case. They are not good reasons. + Several unfortunate decisions, made 20 years ago (and bitterly + opposed by me and a few others...sadly we lost that debate), + created those reasons. + + One of those decisions, in particular (and especially opposed by + me), made IMAP's ASCII-only rule necessary. Otherwise, IMAP could + have deployed UTF-8 as its one and only character set many years + ago. + + This is not the place to discuss that history. The individuals + responsible are not in this group to be flamed over their idiocy + and be told "I told you so." Nor do I wish to be flamed over + decisions that were not mine, and especially not the consequences. + + Life sucks. + + Nobody is more unhappy about this situation than I am. + + We do the best that we can, given what we have. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22772.mbox:2,S new file mode 100644 index 00000000..3cf91fdf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22772.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From janssen at parc.com Tue May 31 08:45:56 2011 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> +Message-ID: <78614.1306856756@parc.com> + +Timo Sirainen wrote: + +> IMAP over XML maybe?..) + +I'm sure it had been a long week when you wrote this, Timo. + +A: IMAP over HTTP, I suppose, though, why? But nothing is "over" XML -- +it's just a syntax. Microsoft SOAP, for instance, is XML-encrypted DCE +RPC over HTTP, designed because circa 1997 people were willing to poke +holes in their firewalls for port 80. HTTP is the key, not XML. + +B: The problem with the "runs in a browser" solution is that Javascript +can only make calls to other processes (or servers) by doing HTTP +requests back to the server it was downloaded from. So it can't speak +any ordinary IETF ASCII protocol. That's the key weakness of "web" +approaches. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22807.mbox:2,S new file mode 100644 index 00000000..36adee3b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22807.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dwhite at olp.net Fri Jun 11 18:54:50 2010 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <201006120251.24779.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120159.05366.witold.krecicki@firma.o2.pl> + + <201006120251.24779.witold.krecicki@firma.o2.pl> +Message-ID: <20100612015450.GA4440@dan.olp.net> + +On Sat, 12 Jun 2010 01:24:53 +0200 Witold Kr?cicki wrote: +> On Saturday 12 of June 2010 01:16:36 Philip Guenther wrote: +>> Uh, what? It sounds like you're saying that you're going to build a +>> system where MOVE is fast (so single message rename is fast) but then +>> intentionally *not* take advantage of the design to use hardlinks to +>> make COPY fast. Claiming that using hardlinks is "not a normal method" +>> when it's been in use for better than a decade requires some +>> justification. +> Even if used for over a decade it is STILL a performance hack. + +The relevance of a performance hack is not really on topic when discussing +the merits of a change in the protocol, especially if that hack has no +detrimental effect on how the server interacts with clients. + +A proposal which does also have performance benefits might make for a good +argument, but debasing server implementations that have found their own +fixes for performance issues is not a good defense. + +>> You're claiming that silence is assent with your side and not the +>> others'? +> No, I'm simply assuming that those who are not willing to take part in +> this discussion do not have an opinion. + +With policy or standards based organizations, I've found the burden is on +the sponsor of the proposal to garner support. I would assume silence as +being indifferent or against change. + +On Sat, 12 Jun 2010 02:51:24 +0200 Witold Kr?cicki: +> On Saturday 12 of June 2010 02:27:33 Mark Crispin wrote: +>> If you do believe that, then you are wrong. I know of multiple clients, +>> including at least one with millions of users, that have undelete as +>> Philip describes. +> Name at least the one with millions of users. + +You appear to be attacking server and client implementation choices that +you either don't agree with, or that partially void the need for your +proposed change. + +I would suggest focusing your arguments on the benefit of the change to the +protocol itself. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22883.mbox:2,S new file mode 100644 index 00000000..e6da6c11 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22883.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From brendan at kublai.com Sun Jan 27 18:19:26 2008 +To: imap-protocol@u.washington.edu +From: Brendan Cully +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +References: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +Message-ID: <20080128021926.GA62365@xanadu.lan> + +On Sunday, 27 January 2008 at 16:27, Bill Janssen wrote: +> I've updated my table of client capabilities, which is now at +> +> http://uplib.parc.com/misc/imapclients.html + +mutt also supports SASL and SASL-IR. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22893.mbox:2,S new file mode 100644 index 00000000..c5520277 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22893.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From tss at iki.fi Mon Oct 29 17:11:50 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + +Message-ID: <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> + +On 30.10.2007, at 1.16, Mark Crispin wrote: + +> (4) Ideas that never really got off the ground for various reasons +> and are likely to fade into obscurity (sorry...): +> +> rfc4314.txt ACL +> rfc2087.txt QUOTA + +My list would look pretty much the same, except for these. A lot of +people want shared mailboxes and besides administrator configuring +them manually ACL is the only possibility. Clients don't currently +have much support for it, but it doesn't really need support from +normal clients. Just having some special "ACL (web)client" is enough. +I hoped to have implemented ACL for my server this summer, but looks +like it didn't happen. + +I think quota is already pretty widely supported by clients, although +in very limited form. If people have quota, they really want to know +how much they have left (when they've reached the limit once..). +Quota root is a pretty weird concept though and I don't think clients +handle multiple ones well. Maybe QUOTA2 extension could do a better +job with those. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22911.mbox:2,S new file mode 100644 index 00000000..8a12883d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22911.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tss at iki.fi Mon Jun 25 07:24:10 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Mailbox root name +In-Reply-To: <1182779912.3768.174.camel@hurina> +References: <1182779912.3768.174.camel@hurina> +Message-ID: <1182781450.3768.176.camel@hurina> + +On Mon, 2007-06-25 at 16:58 +0300, Timo Sirainen wrote: +> 1 LIST hello/world/ "" +> +> It returns "hello/" as the mailbox root, even if hello doesn't exist. +> Why? Does Pine really depend on this? I remember I changed Dovecot to do +> this a few years ago because Pine wouldn't work otherwise correctly with +> ~/mail/ or mail/ or similar folder collection paths (I used to return "" +> as root). Now that I'm looking over the code I'm just wondering why. + +Looks like I can't reproduce this anymore. Maybe there were other things +that caused Pine to break. So is it OK then if I return mailbox root = +namespace prefix, and if there is no prefix then just return ""? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22914.mbox:2,S new file mode 100644 index 00000000..a4977843 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22914.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From tss at iki.fi Thu May 24 09:09:03 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + + <1179992121.32181.1744.camel@hurina> + +Message-ID: + +On 24.5.2007, at 18.32, Mark Crispin wrote: + +>> Would you be upset if you had accidentally typoed one of the keywords +>> and now it would stay there forever? +> +> In my client(s), the only way that I can do that is if I "add a +> keyword" rather than select one of the existing keywords. + +Right, but my point was that if you added a new keyword, but +accidentally miswrote it the first time. Then it stays there forever +unless the server removes it automatically at some point. I think +there needs to be a way to get rid of unwanted keywords, if only as +"automatically remove the keyword after 30 days of non-use". + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22917.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22917.mbox:2,S new file mode 100644 index 00000000..24acf2e5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22917.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Apr 18 22:49:37 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: [lemonade] SURVEY: How does SEARCH match in + your IMAP server? +In-Reply-To: <827372203.32641176956609326.JavaMail.root@dogfood.liquidsys.com> +References: <827372203.32641176956609326.JavaMail.root@dogfood.liquidsys.co m> +Message-ID: + +Your test examples aren't any good, because your message is in UTF-8 but +you have texts that are claimed to be ISO 8859-1. I will try to answer +what I *think* you intended. + +If my presumptions are wrong, then I reserve the right to change my +answers. + +On Wed, 18 Apr 2007, Dan Karp wrote: +> server's name and version + +UW imapd, version imap-2006 series unless noted otherwise. + +> I love M?tley Cr?e ! + +Presumably, you mean "I love M" 0xf6 "tley Cr" 0xfc "e" + +> A001 SEARCH BODY "love" + +matches + +> A002 SEARCH BODY "LOVE" + +matches + +> A003 SEARCH CHARSET "iso-8859-1" BODY {4} +> Cr?e + +Presumably, you mean "Cr" 0xfc "e" + +matches in all versions since imap-4.1 + +error in imap-4 and earlier (10+ year old US-ASCII only version) + +> A004 SEARCH CHARSET "utf-8" BODY {5} +> Cr??e + +Presuably, you mean "Cr" 0xc3 0xbc "e" + +matches in all versions since imap-4.1 + +error in imap-4 and earlier (10+ year old US-ASCII only version) + +> A005 SEARCH CHARSET "iso-8859-1" BODY {4} +> CR?E + +Presumably, you mean "CR" 0xdc "E" + +matches in imap-2006 series. + +does not match in earlier versions (earlier versions did i;ascii-casemap). + +error in imap-4 and earlier (10+ year old US-ASCII only version) + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22920.mbox:2,S new file mode 100644 index 00000000..616344c1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22920.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Mar 11 17:37:20 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 11 Mar 2007, Bill Janssen wrote: +> I certainly understand your feelings here, but Apple Mail is the +> client I'm trying to support, with all its imperfections. + +I guess that I wasn't clear. The problem with implementing a server for a +particular client, as opposed to the specification, is that the server +ends up complying with the server author's understanding of what the +client does. That is not necessarily the same as what the client actually +does; and it tends to compound mistakes. + +> where +> there are unspecified things (like how to arrange mailboxes), I'd just +> as soon do it the way that some other folks do it, to smooth the path. + +This is a good example. What you stated was your understanding (and +perhaps others' understanding) of what Apple Mail does. As unsatisfactory +as I find Apple Mail to be, the fact is that if it really worked that way +it would not work at all with multiple widely-deployed servers. + +Put another way, you expressed a misunderstanding. This happens all the +time. + +That's why I advise that you disregard all such (mis)understandings and +implement only according to the specification. You'll find that the +majority of the (mis)understandings are overtaken by events -- the "that's +strong, I thought it did such-and-such and I was going to have to do this +workaround for it. Well, it seems to work the way it is, so I'm leaving +it alone!" scenario. + +Undoubtably, when you finish the server there will be interoperability +issues. However, I recommend that you first consult with this mailing +list, since it might be a bug at your end. Only after we get through all +of that, then you can start thinking about workaround for a particular +client. + +It's the whole notion of avoiding going into the swamp unh + +>> Have you thought about trying UW imapd, even if you plan to deploy your +>> own implementation, just so you have reference to compare? +> Good idea. I hadn't realized that it supported MH folders. I'll do that. + +Yup. mh names are in the #mh/ namespace, and the #mhinbox (with snarfing +from the spool directory) is #mhinbox. It's armed by the .mh_profile +file. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22957.mbox:2,S new file mode 100644 index 00000000..6b5eecc2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22957.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Dec 21 18:29:51 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Command cancellation +In-Reply-To: <1166742480.22214.496.camel@hurina> +References: <1166644158.22214.365.camel@hurina> + + <1166742480.22214.496.camel@hurina> +Message-ID: + +On Fri, 22 Dec 2006, Timo Sirainen wrote: +> I did think about simply doing a normal search first, and then start +> building the indexes on the background so the future searches will be +> fast. Maybe I'll do that also later. + +That sounds like an excellent idea. Any advanced IMAP implementation will +try to anticipate what it will be called upon to do next, and prepare +itself. Doing this stuff in the background and/or piggybacked on other +stuff (such as a client doing anticipatory aggregate FETCHing to avoid an +RTT later) saves a lot of time. + +Good luck! + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22960.mbox:2,S new file mode 100644 index 00000000..b8499b4b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22960.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From lyndon at orthanc.ca Fri Nov 24 15:59:07 2006 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] As The Stomach Turns: AOL creates new system flags +In-Reply-To: <4567807C.60909@aol.com> +References: + <45534A8C.7090709@aol.com> <4567807C.60909@aol.com> +Message-ID: <20061124155744.D1280@gollum.dev.gmi-mr.com> + +> 1. The invalid response to the Authenticate Plain command. This has been +> corrected, and has been confirmed by Mark that it now works correctly with +> Pine. I never use Pine, so I never noticed. Mozilla Thunderbird did not have +> a problem with it. + +A word of advice: test your server against any and every client you can +get your hands on. + + +--lyndon + + /* Pre-C-Preprocessor to translate ANSI trigraph idiocy in BUF + before main CCCP processing. Name `pcp' is also in honor of the + drugs the trigraph designers must have been on. */ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22974.mbox:2,S new file mode 100644 index 00000000..2980e118 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22974.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From bill.shannon at sun.com Tue Sep 12 15:09:31 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> <20060912134901.F80085@orthanc.ca> + <4507222E.7050706@sun.com> + +Message-ID: <4507301B.5040601@sun.com> + +Mark Crispin wrote: +> On Tue, 12 Sep 2006, Bill Shannon wrote: +> +>> The spec should be very clear on what "correct" behavior is. +> +> +> The base spec supposedly is very clear on that point. Most of the +> arguments are not about what is correct, but rather about what is good. + +I'm sure that's true on this mailing list, but the problems I deal +with day to day are about correctness. + +>> Neither the spec nor the test suite need to be perfect to deliver great +>> value. I see a lot of basic functionality that's broken. A test suite +>> that tested those cases would make a huge difference. Specifying, and +>> testing, the esoteric corner cases can be done later. +> +> +> Unfortunately, "the esoteric corner cases can be done later" covers a +> great many sins. What is an "esoteric corner case" to some people is an +> essential functionality to others. + +A test suite that tested the consensus essential functionality would +find a great many server bugs and would be of great benefit to customers +evaluating and using IMAP servers. + +> Much of the problem comes from individuals who claim that IMAP is too +> complicated to implement from the spec, and thus it is alright to look +> at the examples and implement empirically to work with whatever server +> they have access to (client implementors) or Outlook and Netscape +> (server implementors). +> +> A common server defies the specification in multiple places; when the +> violations are pointed out its author's answer is "yawn" or accusations +> of FUD-spreading. There isn't much can be done in that case. If a test +> suite was produced, such people would attack the motivations of the +> authors of the test suite rather than fix the problems. + +I already don't even waste time debugging problems related to *that* +server, because they always turn out to be bugs in the server. A test +suite would allow customers to apply some pressure to the server vendor. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22983.mbox:2,S new file mode 100644 index 00000000..5455d0f0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22983.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Aug 31 17:45:42 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] changed capabilities after login +In-Reply-To: <20060901002118.GB16606@ventoux.cs.ubc.ca> +References: <20060901002118.GB16606@ventoux.cs.ubc.ca> +Message-ID: + +On Thu, 31 Aug 2006, Brendan Cully wrote: +> Is it kosher for the server to silently drop support for a +> previously-advertised capability? + +The short answer is yes. + +Longer answer: + +Although RFC 3501 doesn't go out and say so directly, a client should +obtain a new capability list after a successful authentication as well as +after a successful TLS negotiation. + +One reason is that a server may choose, in Not Authenticated state, not to +disclose capabilities which are only of use in Authenticated state. + +For example, prior to authentication UW imapd auto-announces only those +capabilities which are useful in Not Authenticates state, and after +authentication auto-announces only those capabilities which are useful in +Authenticated and Selected states. The only common capabilities in these +two sets are IMAP4REV1 and LITERAL+. + +The untagged CAPABILITY response to a CAPABILITY command always announces +all capabilities in UW imapd. Mirapoint, on the other hand, seems to +suppress inappropriate capabilities. + +Another reason is that there may be differential capabilities depending +upon the userid that authenticated. Anonymous is an obvious example of a +userid that may have more limited capabilities than other userids. + +I sympathize with the desire to reduce RTTs; that's why I added +auto-announce when I observed that STARTTLS resulted in three RTTs just +for CAPABILITY. With auto-announce, only one CAPABILITY command is needed +(after the STARTTLS). However, in the case you mentioned, I don't see how +it can be avoided; the Mirapoint server doesn't auto-announce. + +The Mirapoint server has one strange behavior; it only announces +LOGIN-REFERRALS after authentication. Since that's only useful prior to +authentication, it seems a bit strange. + +The Mirapoint server could also avoid the "revoked capability" problem by +not advertising ACL until after authentication. However, that would still +cause a problem for your client if it does not re-issue the CAPABILITY +command after authentication. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.22999.mbox:2,S new file mode 100644 index 00000000..ec3ea82f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.22999.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 30 10:32:20 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + + +Message-ID: + +Mark Crispin writes: +> On Fri, 30 Jun 2006, Arnt Gulbrandsen wrote: +>> (When a user closes the lid, the laptop has to sleep right there and +>> then. Not 30 seconds later.) +> +> Not so! I've seen sleep-on-lid close take quite a bit longer than 30 +> seconds on some laptops; each running running application must +> respond to a system sleep event. To further muddy the waters, a +> running application has the right to cancel the sleep! + +Yes, any laptop vendor can specify most of the timeouts in ACPI, up to +65534 ms, and OSes can go beyond that limit in many ways. The OSes I +looked at even give the application some freedom, e.g. asking "how long +will it take you to save state?". Back when I looked at this, I didn't +see find case where OS code seriously allowed applications to cancel +the OS response to events like lid close - the choice was really +between suspending the nice way or suffer a worse fate when the the +nice processes are done. + +> The only true "SHUT DOWN NOW!!" operation is to hold down the power +> button long enough that a hard power-off happens. But, I've seen +> laptops that were recalcitrant even with that, and thus it became +> necessary to pull the battery. + +(IIRC, that's indicative that some ACPI variable is set to 65535 by the +vendor, and the OS wedged.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.23014.mbox:2,S new file mode 100644 index 00000000..5ee7e221 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.23014.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From dave at cridland.net Tue Apr 4 14:33:08 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] authentication condition reporting extensions +In-Reply-To: +References: +Message-ID: <4142.1144186388.432464@peirce.dave.cridland.net> + +On Tue Apr 4 22:15:01 2006, Mark Crispin wrote: +> The conditions in question are: +> . password will expire at such-and-such future time (or interval) +> . password has expired +> . account will expire at such-and-such future time (or interval) +> . account has expired +> . account has been disabled +> +> +That last is definitely a security issue, isn't it? + +It'd be useful to be able to signal all the SASL codes that are in +ACAP - TRANSITION-NEEDED, for instance, or AUTH-TOO-WEAK. + +> Example (with both ALERT for compatibility and new response code) +> +> * NO [EXPIRED http://imap.example.com/expired] +> tag NO [ALERT] Your account has expired, contact the help desk +> +> Comments? + +I'm not convinced all clients will understand untagged responses +inside an AUTHENTICATE command - I think Alexey and Corby abandoned +that syntax style for the RECONNECT work a while back at least partly +due to that concern. + +Also, I don't think that the alert is needed here - clients typically +report the text of the error after a failure, so I suspect you're +safe using the terminal response: + +tag NO [EXPIRED http://imap.example.com/expired] Your account has +expired, contact the help desk. + +However, the better alternative would be to combine this proposal +with an update to the AUTHENTICATE command which both explicitly +added untagged responses during its execution, and supported both +initial response and final success SASL data from the server. You +could make it use literal8 instead of base64, too + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.23031.mbox:2,S new file mode 100644 index 00000000..4f14d918 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.23031.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Sun Mar 19 22:25:22 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Error in implementing imap +In-Reply-To: +References: +Message-ID: + +On Mon, 20 Mar 2006, Lakshmi Kiran Pai wrote: +> 1. can i have UIDVALIDITY 1 as uid next will always be unique. + +What happens if you delete the mailbox, then later create a new mailbox +with the same name? + +Unless you guarantee that a new mailbox will ALWAYS remember the UIDLAST +from any past mailbox with the same name, and will never use UIDs from +such a past mailbox, then the new mailbox MUST have a higher UIDVALIDITY. + +> If not how +> and when should i change UIDVALIDITY ? can i toggle with 0 or 1? + +UIDVALIDITY can not be zero. + +> 2. in the log below;UIDNEXT is 3158 but when client issues the UID Fetch +> command its 1:* WHY?? + +Why not? UIDNEXT doesn't tell you the UID of the last message; all we +know is that UIDNEXT is higher than the UID of the last message. + +> 3. PARSE ERROR: hr=2148322516. what is the cause for this error?? how can +> i rectify?? Is there any syntax mistake is Response??? + +There is a missing space before the {2} literal designator. Please refer +to the Formal Syntax in RFC 3501. There may be other syntax errors, but +fix that one first. + +Speaking as someone who hand-coded the syntax rules (because the rules +didn't exist when I wrote the code!) I recommend that you do not +hand-code. Instead, you should use one of the excellent syntax generators +that read ABNF. + +> 4. Buffer(literal) length is same for all its {2}. Do i need to calculate +> this ??i have hard coded this. If needs calculation how?? + +This does not make sense to me. How can you be hard-coding a literal +length, when the literal itself is variable? + +> 5. Because of above problems I am unable to get the list of mails when i +> select a particular mail folder. How can i proceed further?? + +Fix the bugs which have been identified to you, and try again. Repeat +until there are no more bugs. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.23036.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.23036.mbox:2,S new file mode 100644 index 00000000..7d2a2318 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.23036.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Feb 28 12:17:50 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] APPEND flags +In-Reply-To: <44049C49.9010607@sun.com> +References: <44049C49.9010607@sun.com> +Message-ID: + +On Tue, 28 Feb 2006, Bill Shannon wrote: +> What +> should a server do if it gets flags in an APPEND command that it does +> not support? At least one server is returning BAD in such a case. + +A BAD is definitely wrong behavior. + +A server should either: + . create the flag(s) as needed + . disregard the flag(s) and append anyway (perhaps issuing a warning in + an untagged NO) + . reject the command with a NO (not a BAD; there is no syntax error). + +It may be reasonable for a STORE command to return a BAD for unknown flags +if the server does not advertise \*. But in the case of APPEND, the +client has never been alerted with a FLAGS response as to what flags the +mailbox offers (including \*) and thus BAD (which indicates syntax +problems) is inappropriate. + +Retry the command with only the predefined "system" flags. + +> Should the client SELECT the destination mailbox, get the +> permanent flags, and perform an intersection between that set and the +> set in the source message and use that set for another APPEND command? + +I think that is more work than is called for, all to deal with a broken +server. + +> Or should the client simply try the APPEND again with only the system +> flags, or no flags? + +Retrying with just the system flags seems right. + +And complain to the server vendor about its "BAD" behavior... + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.23051.mbox:2,S new file mode 100644 index 00000000..413601ae --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.23051.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From guenther+imap at sendmail.com Wed Nov 2 20:49:49 2005 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: <43699192.2040701@fastmail.co.uk> +References: <436988D9.8040106@fastmail.co.uk> + + <43699192.2040701@fastmail.co.uk> +Message-ID: <200511030449.jA34nnMn087966@lab.smi.sendmail.com> + +Max Waterman writes: +>It seems that the options are : +> +>1) propose a new RFC to split the username/password, which can then be +>implemented + +Given the rabid desire of many client implementors to minimize the +number of round-trips required by IMAP, my guess is that such a +proposal would be a virtual non-starter, especially given that +support for STARTTLS is now mandatory. That is, there already is +a standardized method of eliminating the problem: require use of +STARTTLS or an authentication mechanism that's safe from passive +attacks, so why come up with a workaround for this problem when it +would just delay support for the mandated methods? + +I will note that no direct protocol change is required for what you +want: clients would merely need to use a (synchronizing) literal +for the password argument to the LOGIN command, while server +implementors would need to trigger any "is this user permitted to +use cleartext logins" check immediately after the username is +received and condition whether to send a tagged NO or a continuation +response on that check. For some servers, moving the check there +may be trivial, and perhaps should be encouraged, but the ease +depends on the design of the server. A security analysis of the +effects of moving the check there would be in order as well. + + +>2) use a separate servers for secure and insecure users (I suppose a +>second NIC would suffice?) + +If you must support insecure logins, then restricting them to a +separate IP or port may be the most easily deployed way to prevent +accidental leaking of passwords. It's certainly something you can +do now without waiting for client and servers implementations to +change. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.23055.mbox:2,S new file mode 100644 index 00000000..2628a95a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.23055.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Oct 17 07:32:37 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +In-Reply-To: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> +References: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> +Message-ID: + +Alex Kapranoff writes: +> Is there a way to get envelope "From" information for a mail via IMAP? +> Specifically, "ENVELOPE" fetch item does not seem to return it. + +Use "uid fetch n body.peek[header.fields (return-path)]" to fetch the +envelope sender. RFC 2821 (and earlier RFCs) require that the envelope +sender address is stored in return-path when making final delivery. +Some MTAs get it wrong, though. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.23059.mbox:2,S new file mode 100644 index 00000000..f1dcd330 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.23059.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 7 07:09:56 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +Message-ID: + +Hi, + +I have a situation where SELECT is issued twice for the same mailbox. +The second SELECT is superfluous. But does it end the session and start +a new one? + +In RFC I see text to support both possibilities. On page 33: + + The SELECT command automatically deselects any + currently selected mailbox before attempting the new selection. + Consequently, if a mailbox is selected and a SELECT command that + fails is attempted, no mailbox is selected. + +By that description, messages that were \recent before the second SELECT +no longer are, and any outstanding EXPUNGE messages can be forgotten. +But on page 5 I also see this, which implies that a SELECT of the same +mailbox does not clear any \recent flags, and that the server cannot +forget any outstnading EXPUNGEs: + + "Session" refers to the sequence of client/server interaction from + the time that a mailbox is selected (SELECT or EXAMINE command) until + the time that selection ends (SELECT or EXAMINE of another mailbox, + CLOSE command, or connection termination). + +Opinions? + +My (strong) preference is that SELECT of a valid mailbox should start a +new session, no matter whether it's the same mailbox as the previous +one. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095131.23064.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095131.23064.mbox:2,S new file mode 100644 index 00000000..310bdb42 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095131.23064.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From philip at xms.co.za Thu Aug 4 01:17:32 2005 +To: imap-protocol@u.washington.edu +From: Philip Wege +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Imapd and pop3d errors +Message-ID: <1123143452.4105.6.camel@linux.site> + +Hi + +New user to imap , i have installed imap on a basic postfix flat file +mailer. + +Imapd and pop3d is running through xinetd. + +When trying to access the mailbox the logs show the following errors fir +imap and pop3: + +Aug 4 03:26:48 xmstest ipop3d[4469]: pop3 service init from 127.0.0.1 +Aug 4 03:26:48 xmstest ipop3d[4469]: Logout user=??? host=xmstest.co.za +[127.0.0.1] +Aug 4 03:26:57 xmstest imapd[4470]: imap service init from 127.0.0.1 +Aug 4 03:27:00 xmstest imapd[4470]: Command stream end of file, while +reading line user=test host=xmstest.co.za [127.0.0.1] + +The box is running suse 9.3 Server. +Also unable to telnet to port 143 or 110 and xinetd is running with imap +and pop3 enabled. + +Can anybody help me with these errors. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22756.mbox:2,S new file mode 100644 index 00000000..0c6496ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22756.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 20 09:46:05 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] fetch envelope charset? +In-Reply-To: +References: + +Message-ID: <824701B3-0A10-4C5B-B8FB-9F49C4B89AD0@mac.com> + + +On Nov 20, 2011, at 6:34 PM, Mark Crispin wrote: + +> Timo gave a very good, albeit brief answer. Here is a more detailed one. + +Thanks, that was very helpful. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22772.mbox:2,S new file mode 100644 index 00000000..21baa853 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22772.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tss at iki.fi Tue May 31 09:05:45 2011 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <78614.1306856756@parc.com> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + <78614.1306856756@parc.com> +Message-ID: <521DFEC0-1333-4244-B062-D8779F6396DB@iki.fi> + +On 31.5.2011, at 18.45, Bill Janssen wrote: + +> Timo Sirainen wrote: +> +>> IMAP over XML maybe?..) +> +> I'm sure it had been a long week when you wrote this, Timo. +> +> A: IMAP over HTTP, I suppose, though, why? But nothing is "over" XML -- +> it's just a syntax. + +I meant changing the IMAP syntax to XML. For example instead of: + +a FETCH 2:5 (RFC822.SIZE BODY.PEEK[HEADER.FIELDS (From To)]) + +it could be: + + + +
From
+
To
+
+ +But that probably still wouldn't be big enough of a change. + +> Microsoft SOAP, for instance, is XML-encrypted DCE +> RPC over HTTP, designed because circa 1997 people were willing to poke +> holes in their firewalls for port 80. HTTP is the key, not XML. + + +Sure, running it over HTTP would probably be required too, but I think that's a smaller problem. diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22807.mbox:2,S new file mode 100644 index 00000000..c956b40f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22807.mbox:2,S @@ -0,0 +1,128 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 20:15:20 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <20100612015450.GA4440@dan.olp.net> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120159.05366.witold.krecicki@firma.o2.pl> + + <201006120251.24779.witold.krecicki@firma.o2.pl> + <20100612015450.GA4440@dan.olp.net> +Message-ID: + +On Fri, 11 Jun 2010, Dan White wrote: +> I would suggest focusing your arguments on the benefit of the change to the +> protocol itself. + +The demerits of the proposal: + +[1] It adds complexity to any implementation that uses it. In the history +of IMAP, other extensions that solved far more serious problems ended up +with little implementation. + +[2] This will be the first command other than EXPUNGE that expunges a +message. + +[3] It can not be implemented on many stores as anything better than an +internal COPY + UID EXPUNGE. The disk quota and performance benefits do +not happen in this case. Failure is indeterminate because the failure +could happen in the second step, possibly resulting in messages staying in +the source mailbox (which violates the claimed semantics of MOVE). This +is what killed MOVE in 1986. + +[4] With Maildir class stores: + [a] One obvious (wrong) implementation is to use rename. This creates + an indeterminate failure in which some, but not all, messages were + moved. In addition, if the source and destination are on + different filesystems, then rename actually degenerates to [3]. + [b] A better but still wrong implementation is to use hardlink then + expunge from source. This is actually just a form of [3], but + with better performance for COPY. It still has the same + indeterminate failure. Also, if the source and destination are + on different filesystems, you can't hardlink. + +[5] With indexed stores, including Maildir extended with an index (the +filesystem directory isn't really good enough to be an index), move can be +properly implemented IF and ONLY IF it is possible to commit the update to +both indices simultaneously and the commit operation is guaranteed atomic +all-success or all-fail. Otherwise, once again, you end up with an +indeterminate failure. + +There are further complications if, as in Maildir, you actually have to +move the message data to another directory instead of just writing updated +pointers in the indices. It's much easier with a CAstor type storage +layout, especially since you can just drop file pointers that you no +longer want (CAstor abolishes the filesystem - whoo hoo!). + + +In conclusion: + +The underlying idea of MOVE is (as it has been since the advent of +Maildir) to "just do rename" with a Maildir class store. It's a tempting +idea, but this is a temptation that needs to be resisted. It's all fine +and good to talk about databases, but speaking as someone who actually +does it (including without a filesystem, which is a truly wonderful +solution for many problems), there aren't easy solutions there. + +Rename is traditionally a nasty operation in any data store. It is +invariably the most fragile and buggy user operation in a filesystem. +Rename has semantic problems as well; the IMAP RENAME command is +totally broken in its design. No server implements it correctly. If I +had dictatorial power I would have abolished RENAME from the specification +long ago. + +A correct implementation of MOVE must either place ALL requested messages +in the target and remove them from the source, OR do nothing. There is no +way in the framework of IMAP for a MOVE command to say: + "some messages were moved, but not all" + or "some (or all) messages are duplicated in both" + or "some messages vanished into thin air" + +All of these are possible unless there is a simultaneous all-or-none +commit on both sides. The only one of these three errors that you can +abolish is the third; by not using rename and by putting yourself at +greater risk of the first two. + +Put another way, any error, including a commit error, on either end has to +stop the commit on the other end. It's a chicken-and-egg problem; neither +end can safely commit until the other end has successfully committed. So +both indices have to be part of the same commit. That's doable, but it's +not something that normal DBs do. But if you don't do it, then you have a +timing race and one of the error states in the previous paragraph (none of +which have an expression within IMAP) occur. + +The safest operation is a copy (which can be done by hardlink if the +filesystem permits) followed by source expunge. But that isn't a MOVE; +that's a faster COPY. And nothing prevents the implementation from doing +a faster COPY. + +COPY does not have this problem. COPY succeeds or fails when the commit +to check the messages in to the destination succeeds or fails. If the +commit fails, then either COPY truncates away what it copied or it just +drops the pointers and lets whatever underlying cleanup of ownerless data +recover the space (if you care; in CAstor you don't). + +I fear that if MOVE advances, it WILL be implemented by means of rename in +Maildir type stores, with the result that clients WILL encounter +surprising results. If the server implementor isn't damn careful, those +surprises will include vanished messages. A Maildir implementor with IMAP +has enough problems (Timo can elaborate on this somewhat) avoiding +messages vanishing as it is. + +A further complication is with multiple simultaneous access to the same +mailbox (either source or destination). It is easy enough to handwave and +say "use locks". How many people have actually programmed complex +databases with simultaneous access and locks? + +According to Timo's IMAP test results page, he and I are the only ones who +have ever gotten it right in IMAP; and that was only because he and I +played a jolly game of one-upsmanship with each other that ended in a (I +hope) mutually satisfying tie. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22883.mbox:2,S new file mode 100644 index 00000000..61e72bd5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22883.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From dave at cridland.net Mon Jan 28 01:10:42 2008 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +References: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +Message-ID: <9661.1201511442.498499@peirce.dave.cridland.net> + +On Sun Jan 27 16:27:44 2008, Bill Janssen wrote: +> I'll appreciate updates to it, as well, particularly on new clients +> like the iPhone's email client. + +Polymer... + +SEARCH yes (including ESEARCH, CONTEXT=SEARCH, WITHIN, etc). +STARTTLS yes. +SASL DIGEST-MD5 CRAM-MD5 PLAIN ANONYMOUS +SSL As before. +SASL-IR Yes +ESEARCH Yes +NAMESPACE Yes +IDLE Yes [Although Polymer can handle out-of-order commands and +responses when no command is in progress, too] +MULTIAPPEND Yes +UIDPLUS Yes +LITERAL+ Yes (Not used for the first "large" append part, to detect +early failures) +CHILDREN Yes [And LISTEXT/LIST-EXTENDED CHILDREN return option] +SORT/THREAD No +Lemonade Yes, full profile 1, plus selected Profile bis extensions. + +FWIW, you can technically put Yes into every box under Lemonade, +since any IMAP client is, by definition, a Lemonade MUA. I assumed +you meant that it takes reasonable advantage of the facilities +available. + +And another client, Modest (n800 mobile client) - I'm not a +developer, and I'm probably wrong, so I've copied Philip, who is: + +SEARCH: Yes (Not sure if full functionality is exposed or used) +STARTTLS: Yes +SASL: Yes, unsure of the mechs. +SSL: Yes +SASL-IR: ? +ESEARCH: Yes (As for SEARCH). +NAMESPACE: Yes +IDLE: Yes (Distinct session used, which can lead to inconsistency) +MULTIAPPEND: No +UIDPLUS: ? +LITERAL+: Yes +CHILDREN: Yes +SORT/THREAD: ? +Lemonade: CONDSTORE/QRESYNC supported. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22893.mbox:2,S new file mode 100644 index 00000000..1340de36 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22893.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From Hagedorn at spinfo.uni-koeln.de Mon Oct 29 17:30:35 2007 +To: imap-protocol@u.washington.edu +From: Sebastian Hagedorn +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> + <1193689139.25921.618.camel@hurina> <472653EE.9080102@psaux.com> + + + + <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> +Message-ID: + +--On 30. Oktober 2007 02:11:50 +0200 Timo Sirainen wrote: + +> On 30.10.2007, at 1.16, Mark Crispin wrote: +> +>> (4) Ideas that never really got off the ground for various reasons +>> and are likely to fade into obscurity (sorry...): +>> +>> rfc4314.txt ACL +>> rfc2087.txt QUOTA +> +> My list would look pretty much the same, except for these. A lot of +> people want shared mailboxes and besides administrator configuring them +> manually ACL is the only possibility. Clients don't currently have much +> support for it, but it doesn't really need support from normal clients. +> Just having some special "ACL (web)client" is enough. + +I agree. Both extensions are essential for us. I use Mulberry, which of +course supports both extensions, but the majority of our users uses IMP as +webmail. We have added a quota display to IMP and provide Shawn Sivy's IMAP +ACL Manager as a web frontend for ACL management. +-- + .:.Sebastian Hagedorn - RZKR-R1 (Geb?ude 52), Zimmer 18.:. +Zentrum f?r angewandte Informatik - Universit?tsweiter Service RRZK +.:.Universit?t zu K?ln / Cologne University - ? +49-221-478-5587.:. + .:.:.:.Skype: shagedorn.:.:.:. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22911.mbox:2,S new file mode 100644 index 00000000..a632a1ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22911.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Mon Jun 25 08:01:21 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +Message-ID: <1182783681.3768.187.camel@hurina> + +Hand written, hopefully didn't leave errors: + +1 namespace +* NAMESPACE (("" "/")) NIL (("news/" ".")) +1 OK +2 list "" % +* LIST (\HasNoChildren) "/" "INBOX" +* LIST (\HasChildren) "/" "news" +2 OK +3 list "" news/% +* LIST () "." "news/comp" +* LIST () "." "news/alt" +3 OK +4 list "" news/comp.% +* LIST () "." "news/comp.mail" +4 OK + +Is it valid for news/ to change the separator? + +I guess many clients don't like it, but should I allow such +configuration anyway? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22914.mbox:2,S new file mode 100644 index 00000000..6f771076 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22914.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tss at iki.fi Thu May 24 09:52:06 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + + <1179992121.32181.1744.camel@hurina> + + +Message-ID: <1180025526.32181.1812.camel@hurina> + +On Thu, 2007-05-24 at 19:09 +0300, Timo Sirainen wrote: +> On 24.5.2007, at 18.32, Mark Crispin wrote: +> +> >> Would you be upset if you had accidentally typoed one of the keywords +> >> and now it would stay there forever? +> > +> > In my client(s), the only way that I can do that is if I "add a +> > keyword" rather than select one of the existing keywords. +> +> Right, but my point was that if you added a new keyword, but +> accidentally miswrote it the first time. Then it stays there forever +> unless the server removes it automatically at some point. I think +> there needs to be a way to get rid of unwanted keywords, if only as +> "automatically remove the keyword after 30 days of non-use". + +Or would there be a point in adding a new "-" namespace for keywords? So +"-keyword" or "-$keyword" would remove it (probably only if it's +unused)? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22920.mbox:2,S new file mode 100644 index 00000000..d473e473 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22920.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From tss at iki.fi Sun Mar 11 18:08:46 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <1173661726.17598.331.camel@hurina> + +On Sun, 2007-03-11 at 17:37 -0700, Mark Crispin wrote: +> Undoubtably, when you finish the server there will be interoperability +> issues. However, I recommend that you first consult with this mailing +> list, since it might be a bug at your end. Only after we get through all +> of that, then you can start thinking about workaround for a particular +> client. + +My server allows enabling client workarounds individually (default is +only outlook-idle, which is the same as what UW-IMAP also does). There +aren't all that many, here's a list of all of them: + + # delay-newmail: + # Send EXISTS/RECENT new mail notifications only when replying to NOOP + # and CHECK commands. Some clients ignore them otherwise, for example + # OSX Mail. Outlook Express breaks more badly though, without this it + # may show user "Message no longer in server" errors. Note that OE6 still + # breaks even with this workaround if synchronization is set to + # "Headers Only". + # outlook-idle: + # Outlook and Outlook Express never abort IDLE command, so if no mail + # arrives in half a hour, Dovecot closes the connection. This is still + # fine, except Outlook doesn't connect back so you don't see if new mail + # arrives. + # netscape-eoh: + # Netscape 4.x breaks if message headers don't end with the empty "end of + # headers" line. Normally all messages have this, but setting this + # workaround makes sure that Netscape never breaks by adding the line if + # it doesn't exist. This is done only for FETCH BODY[HEADER.FIELDS..] + # commands. Note that RFC says this shouldn't be done. + # tb-extra-mailbox-sep: + # With mbox storage a mailbox can contain either mails or submailboxes, + # but not both. Thunderbird separates these two by forcing server to + # accept '/' suffix in mailbox names in subscriptions list. + +The "OSX Mail" in delay-newmail was added quite a long time ago. I don't +know if it has been fixed since, maybe I should check. + +One workaround that there used to be was that several clients (kmail, +Thunderbird at least) didn't like if UID field wasn't the first field in +FETCH replies. After a while I gave up and just put it back to begin +first. + +I'm not aware of any other client bugs that can be worked around. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22957.mbox:2,S new file mode 100644 index 00000000..fdc22d8f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22957.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Dec 21 18:49:07 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Searching +In-Reply-To: <1166744138.22214.523.camel@hurina> +References: <1166603479.22214.298.camel@hurina> + + <1166643258.22214.350.camel@hurina> + + <1166744138.22214.523.camel@hurina> +Message-ID: + +On Fri, 22 Dec 2006, Timo Sirainen wrote: +> But I guess that's for a mailbox that's already in file cache? I'd think +> that in a real mail server most users' mailboxes need to be read from +> the disk as they're searched, and for a loaded server that can be even +> slower. + +All true. But a loaded server is in for a world of hurt no matter what +steps you take. Calling upon it to do things, and abandoning the work in +progress, makes the problem worse rather than better. + +The solution to loaded servers is to do things that make them less loaded. +Indexing is certainly one such measure, although I think that I mentioned +in a previous message that it can be a double-edged sword. + +> I've also heard of users whose INBOX is over 2 gigabytes.. + +The current UW imapd version won't let you get above 2GB for the flat +files. Some sysadmins consider that to be a feature, not a bug. ;-) + +mix doesn't have that limit (although I haven't tested messages above +2GB). + +> But for a standard search, yes, I'm converting mails to UTF-8 before +> doing any searching. I should add support for case-insensitive UTF-8 +> searches also, but for now I'm doing it only for ASCII. No-one's +> complained yet though :) + +OK, so you're doing i;ascii-casemap which is what the COMPARATOR draft +suggests. I'm promoting i;unicode-casemap (I have an I-D on that) as +something that better servers should do, and trying to see if we can make +it a server option to do i;unicode-casemap even if the client doesn't +know any better and asks for i;ascii-casemap. + +FWIW, UW imapd switched from i;ascii-casemap to i;unicode-casemap during +imap-2006 development. + +> Anyway, yes, I could probably get my standard search code a lot faster +> (UW-IMAP searches mboxes 2-3 times faster), + +Just for what it's worth, I don't promote UW imapd as being an example of +the ultimate in search performance. Rather, as a reference implementation +it's intended to be a baseline, as in "your implementation should perform +at least as well as UW imapd". + +UW imapd does a rather basic Boyer-Moore search. The real cost in its +search code is in preparing the strings; it first converts both the +pattern and the search string into a canonicalized UTF-8 that has been +decomposed and coerced into titlecase. The current implementation of that +code is far more costly than the search code, and almost certainly can be +improved upon. + +So, if UW imapd searches 2-3 times faster than your standard search code +that's an indication that it's worth putting in some work into search +performance. You should be able to beat UW imapd's times. + +> but that won't help with +> disk I/O usage. Usually there's enough CPU to go around, but not that +> much available disk I/O. Indexing helps a lot with that. So it's not +> just for bringing down search times from a few seconds to zero, but also +> lowering the system load in general. + +I agree. Don't let me talk you out of indexing. I'm just suggesting that +you cast a wider net, and hopefully bring in a lot more fish... ;-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22960.mbox:2,S new file mode 100644 index 00000000..f74b3129 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22960.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Nov 24 16:03:49 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] As The Stomach Turns: AOL creates new system flags +In-Reply-To: <4567807C.60909@aol.com> +References: + <45534A8C.7090709@aol.com> <4567807C.60909@aol.com> +Message-ID: + +This is great news! Thanks! + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22974.mbox:2,S new file mode 100644 index 00000000..2a3cf3a6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22974.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 12 15:23:03 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <4507301B.5040601@sun.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> <20060912134901.F80085@orthanc.ca> + <4507222E.7050706@sun.com> + + <4507301B.5040601@sun.com> +Message-ID: + +On Tue, 12 Sep 2006, Bill Shannon wrote: +> A test suite that tested the consensus essential functionality would +> find a great many server bugs and would be of great benefit to customers +> evaluating and using IMAP servers. + +Ah, but if the "essential functionality" is anything less than the full +capability of RFC 3501 you will have to find "concensus". I think that +you will encounter vigorous objection to any subset, no matter what you +pick from RFC 3501 to leave out. I'd be one of the objectors... + +>> A common server defies the specification in multiple places; when the +>> violations are pointed out its author's answer is "yawn" or accusations of +>> FUD-spreading. There isn't much can be done in that case. If a test suite +>> was produced, such people would attack the motivations of the authors of +>> the test suite rather than fix the problems. +> I already don't even waste time debugging problems related to *that* +> server, because they always turn out to be bugs in the server. + +Ha! Note how nobody needs to name the server in question, we just all +know which one it is. That server is the Voldemort of the IMAP world... + +> A test +> suite would allow customers to apply some pressure to the server vendor. + +Perhaps. I'm a bit more pessimistic. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22983.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22983.mbox:2,S new file mode 100644 index 00000000..ee7c265c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22983.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Aug 31 23:31:03 2006 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] changed capabilities after login +In-Reply-To: +References: <20060901002118.GB16606@ventoux.cs.ubc.ca> + +Message-ID: + +On Thu, 31 Aug 2006, Mark Crispin wrote: +... +> The untagged CAPABILITY response to a CAPABILITY command always announces all +> capabilities in UW imapd. Mirapoint, on the other hand, seems to suppress +> inappropriate capabilities. + +The word "PROXY" in the Mirapoint banner makes me guess (haha) that while +the first CAPABILITY response is generated by Mirapoint's software, once +you log in it just goes into a 'pass through' mode talking to some other +IMAP server. Thus the different capabilities before and after +authentication. + +You should consult the Mirapoint documentation: there may be a way to +configure the (pre-authentication) capabilities that it announces. +Removing ACL from that set would be a more friendly behavior by the +server. + + +> The Mirapoint server has one strange behavior; it only announces +> LOGIN-REFERRALS after authentication. Since that's only useful prior to +> authentication, it seems a bit strange. + +Not if it's the server 'behind' Mirapoint's proxy that supports +LOGIN-REFERRALS... + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.22999.mbox:2,S new file mode 100644 index 00000000..eaadccfe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.22999.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 30 10:34:18 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + + + +Message-ID: + +Mark Crispin writes: +> On Fri, 30 Jun 2006, Arnt Gulbrandsen wrote: +>> Don't you think the servers on such platforms should deal with it, +>> instead of expecting all clients on all platforms to do so? +>> For example, a server on such a platform can fork off another intance +>> of itself (invisible to the client), close the IMAP connection, and +>> let the client go on its way? +> +> That makes no sense. I said that the server gets a non-maskable kill +> from the OS. The server has no notice, nor any opportunity to react; +> it is instantly destroyed. + +It has the opportunity to fork when it receives LOGOUT. The fork would +be finished before the connection close arrives. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.23014.mbox:2,S new file mode 100644 index 00000000..fbbbdb58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.23014.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From tss at iki.fi Thu Apr 6 00:26:46 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Non-strict searching +Message-ID: <1144308406.15330.122.camel@hurina> + +Is there interest in creating a SEARCH extension which allows the server +to be less strict in which results it shows, making it better for +user-made searches? For example the searched word could be found in a +bit different form. + +The results could also show some relevancy percentage and also a string +highlighting the searched words (because they're not necessarily the +exact search keys). + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 198 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.23031.mbox:2,S new file mode 100644 index 00000000..0209a938 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.23031.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Mon Mar 20 04:38:43 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] listing folder issue +Message-ID: + +Hi, + +I am implementing imap server, have been successfull in listing the folders +but if folder name contains space than only first word of the folder name is +displayed why?? how can i overcome this +example: if name is "My mails" than while listing at client it shows only +"My" as the folder name. + + +waiting for reply +thank you in advance, +regards +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.23051.mbox:2,S new file mode 100644 index 00000000..c4f6c1cd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.23051.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From davidmaxwaterman at fastmail.co.uk Wed Nov 2 21:11:27 2005 +To: imap-protocol@u.washington.edu +From: Max Waterman +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: +References: <436988D9.8040106@fastmail.co.uk> + + <43699192.2040701@fastmail.co.uk> + +Message-ID: <43699BFF.6090100@fastmail.co.uk> + +Mark Crispin wrote: +> On Thu, 3 Nov 2005, Max Waterman wrote: +>> 1) propose a new RFC to split the username/password, which can then be +>> implemented +> +> The chances of such a document being accepted for publication as an RFC, +> much less being implemented, are about as close to nil as you can get +> without being completely impossible. + +Indeed. I wasn't suggesting it was a realistic option. + +> +>> 2) use a separate servers for secure and insecure users (I suppose a +>> second NIC would suffice?) +> +> That is more likely. You could use a different port number instead of a +> separate IP address. + +Well, no. That is the problem really. Port numbers are just too easy to +get wrong. + +> +> I question the need to use a client which does not negotiate SSL or TLS. +> All modern IMAP clients support SSL and/or TLS, and have done so for years. + +Indeed, but, again, this is the problem. It is just too easy to get wrong. + +I am trying to *ensure* that my users *always* have a secure connection. +This isn't so difficult, and, in fact, this is what we have. However, +other users of the system (it's a 3rd party running it), don't want to +use SSL/TLS, and so the standard ports are still open and will allow +authentication attempts. Thus, my users, if, by mistake, configure their +email clients to use the standard ports, will transmit their username +and password in clear text and so anyone snooping could intercept it and +use it to access the email server themselves. + +It seems that the only solution is to have a completely separate server +which only allows authentication after SSL/TLS has been set up. + +Or, perhaps, all that is needed is separate server processes running on +a separate NIC? + +...or am I missing something. + +Max. + +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.23055.mbox:2,S new file mode 100644 index 00000000..06b685e1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.23055.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From kkapp at rambler.ru Mon Oct 17 10:08:23 2005 +To: imap-protocol@u.washington.edu +From: Alex Kapranoff +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +In-Reply-To: +References: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> + <1129558735.1214.360.camel@hurina> + +Message-ID: <981898297.1129568903.151266908.97949@mcgi3.rambler.ru> + +* Mark Crispin [Mon, 17 Oct 2005 07:24:38 +-0700 (PDT)]: +> I assume that you are talking about the internal "From " line that +appears +> in the traditional UNIX mailbox format, and *not* the RFC 2822 "From:" +> header line? If so, then Timo's response is correct. +> +> The "From " line is an artifact of traditional UNIX mailbox format; it +> does not appear in other mailbox formats. This generally contains the +> return address, which is not necessarily the same as the originator or +> reply address. +> +> Many MDAs will write a Return-Path: header with this data. If yours +does +> not, there many be a switch in your mail delivery configuration to +enable +> it. + +Yes, that's the answer I expected, thank you. I am going to use +Return-Path: header for my goals now. +Didn't know though that "From " is an artifact of one specific mailbox +format and therefore not universally available. +I wanted to know whether there's a special FETCH item or something. My +IMAP server uses mboxes so it somehow +seemed natural to be able to fetch the data that is stored with the +mails :) + +I need this info to detect DSNs, btw. + +-- +Alex Kapranoff. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.23059.mbox:2,S new file mode 100644 index 00000000..1c2d795c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.23059.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Sep 7 07:44:31 2005 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: +Message-ID: <431EFCCF.9040308@isode.com> + +Arnt Gulbrandsen wrote: + +> My (strong) preference is that SELECT of a valid mailbox should start +> a new session, no matter whether it's the same mailbox as the previous +> one. + +I agree. Isode code certainly doesn't check if the new mailbox name is +the same as the old one. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.23064.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.23064.mbox:2,S new file mode 100644 index 00000000..85f96d72 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.23064.mbox:2,S @@ -0,0 +1,80 @@ +MBOX-Line: From imap at tlinx.org Sun Aug 7 16:51:06 2005 +To: imap-protocol@u.washington.edu +From: Linda Walsh +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Imapd and pop3d errors +In-Reply-To: <1123143452.4105.6.camel@linux.site> +References: <1123143452.4105.6.camel@linux.site> +Message-ID: <42F69E6A.4040509@tlinx.org> + +What does your xinet.conf look like for the IMAP (and POP) entries: + +I have: +(from xinetd.conf) +defaults +{ + log_type = SYSLOG daemon info + log_on_success = HOST EXIT DURATION + log_on_failure = HOST ATTEMPT + bind = imap-server.tlinx.org +} + enabled = imaps + enabled = imap +service imaps +{ + socket_type = stream + protocol = tcp + wait = no + user = root + server = /usr/sbin/imapds +} + +service imap +{ + socket_type = stream + protocol = tcp + wait = no + user = root + flags = NOLIBWRAP + server = /usr/sbin/imapd +} +---------- + +(note, /usr/sbin/imapds is a softlink to imapd). +Hope this helps... +Linda + + +Philip Wege wrote: + +>Hi +> +>New user to imap , i have installed imap on a basic postfix flat file +>mailer. +> +>Imapd and pop3d is running through xinetd. +> +>When trying to access the mailbox the logs show the following errors fir +>imap and pop3: +> +>Aug 4 03:26:48 xmstest ipop3d[4469]: pop3 service init from 127.0.0.1 +>Aug 4 03:26:48 xmstest ipop3d[4469]: Logout user=??? host=xmstest.co.za +>[127.0.0.1] +>Aug 4 03:26:57 xmstest imapd[4470]: imap service init from 127.0.0.1 +>Aug 4 03:27:00 xmstest imapd[4470]: Command stream end of file, while +>reading line user=test host=xmstest.co.za [127.0.0.1] +> +>The box is running suse 9.3 Server. +>Also unable to telnet to port 143 or 110 and xinetd is running with imap +>and pop3 enabled. +> +>Can anybody help me with these errors. +> +> +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095132.23084.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095132.23084.mbox:2,S new file mode 100644 index 00000000..9bb68d99 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095132.23084.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From tss at iki.fi Fri Jul 1 16:06:25 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SEARCH messagesets +Message-ID: + +If mailbox has 10 messages and client does SEARCH 1:11, is it valid to +give a BAD reply as most servers do if the same is done with FETCH, or +should it just be treated as 1:10? Thoughts? +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22756.mbox:2,S new file mode 100644 index 00000000..a5294a7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22756.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 27 02:57:54 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] test suite? +Message-ID: + +Hello, + +Is there some test suites out there to exercise various aspect of the protocol? + +I found Timo Sirainen's imaptest [1], which is very helpful. + +Courrier also sports a handy test suite [2]. + +Is there anything else along the same lines? Namely, sample requests with their expected responses? + +Thanks in advance. + +-- + +[1] http://www.imapwiki.org/ImapTest +[2] https://courier.svn.sourceforge.net/svnroot/courier/trunk/courier-imap/imap/testsuite + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22772.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22772.mbox:2,S new file mode 100644 index 00000000..5166111d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22772.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From mrc+imap at panda.com Tue May 31 09:12:48 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:46 2018 +Subject: [Imap-protocol] History question. +In-Reply-To: <521DFEC0-1333-4244-B062-D8779F6396DB@iki.fi> +References: <4DDEA412.6030305@aol.com> <4DDEDDD6.1040507@logicprobe.org> + + <2CB073A1-B421-4CFB-AE30-B17005C876A0@iki.fi> + <78614.1306856756@parc.com> + <521DFEC0-1333-4244-B062-D8779F6396DB@iki.fi> +Message-ID: + +On Tue, 31 May 2011, Timo Sirainen wrote: +> I meant changing the IMAP syntax to XML. + +JSON. Please. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22807.mbox:2,S new file mode 100644 index 00000000..c5751368 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22807.mbox:2,S @@ -0,0 +1,145 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 11 22:53:55 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006112352.05642.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112113.56572.witold.krecicki@firma.o2.pl> + + <201006112352.05642.witold.krecicki@firma.o2.pl> +Message-ID: + +On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +>> IMAP has no guaranteed means of removing a message. Study the semantics +>> of STORE and EXPUNGE carefully. MOVE, on the other hand, requires that +>> guarantee; and does not have the semantics of STORE and EXPUNGE. +> I really don't get the point, please be more specific. + +Neither STORE, nor EXPUNGE, promise that they will store or expunge +anything. They do, or not do, whatever seems fit according to their +discretion. Generally, what they decide to more corresponds to what the +user intended. But there's no promises. + +Because of this, both STORE and EXPUNGE send back untagged responses +stating what they actually did. The client uses this to update its cached +state of what is on the server. If it were not for these untagged +responses, the client wouldn't have a clue as to what is going on. + +There are certain circumstances, such as when closing a mailbox in a +client that does not cache offline state, that the client does not care +what the server did beyond a vague presumption that that the server did +more or less reasonably was what the user wanted. For this reason, there +STORE's .SILENT form, and the CLOSE command, exist. + +A successful MOVE, on the other hand, is an unconditional guarantee that +all the requested message(s) were moved. But it it? Similarly, a failed +MOVE ought to be an unconditional guarantee that none of the requested +messages(s) were moved. But, once again, is it? + +What happens when there is an error in the middle of the move? Is there a +state in which some messages were moved and others were not? Is there a +state in which some messages appear in both places (so it was a copy after +all)? Is there a state in which some messages vanished completely? + +The only way that you can prevent all of these states is with a +simultaneous commit in which a failure of either side (remove from source, +insert in destination) completely undoes everything. Locking by itself +isn't good enough; locking only prevents external races. You still have +a chicken-and-egg situation in which neither side can safely commit +without confirmation that the other side has committed. + +There are ways to do it. But these are not simple nor commonly +understood. If I talk about this stuff with most programmers their eyes +glaze over. + +Not even the (much simpler) synchronization timing requirements of IMAP +are well-implemented. Timo's server and my Panda server are the only ones +that do it correctly in all circumstances (I'm hoping to add my new server +to the list). + +So let's say that we punt and say that an error is an error and we'll +break the all-of-nothing guarantee of IMAP. + +There's now the problem of how what was actually done is communicated to +the client. The untagged responses from FETCH and EXPUNGE won't do it. + +So now you have to add a whole new framework of new untagged responses to +your "simple" MOVE command to convey all the possible error conditions. +And it's just not what happens in your server. It's what can happen in +any server. + +That is the problem with response to complex situations with simple +solutions; it backfires. + +> COPY is by definition a slow operation. Using hardlinks etc. is a performance +> hack, not a normal method. + +Nowhere in the definition of COPY does it say that it is a slow operation. +I should know. I wrote it. + +Furthermore, your calling the use of hardlinks a "performance hack" is a +personal insult to me. I anticipated the use of hardlinks in IMAP from +the very beginning, influenced by a pioneering mail store of the early +1980s. I am designing a new store that carries that technique to a new +level. I already added stubbing to my 2006 store design last year; but +the new design is far more advanced. + +Last but not least, it betrays a lack of understanding of how modern +filesystems work. Rename uses hardlinks internally when the target is on +the system filesystem (when it isn't, it has to copy+delete). Rename is a +world of hurt on a filesystem without hardlinks; and ultimately the +problem is left for the disk auditor to resolve after a crash. + +> COPY creates NEW entity, MOVE only changes properties of an EXISTING entity. + +Now you are presupposing that the message itself knows where it is +located. That's fine if you are developing Gmail. But all the world is +not Gmail. + +Nor is that how modern filesystems work. The inode has no clue where it +is in the filesystem tree. + +The next step is the abolish the filesystem. + +> If COPY is implementable then MOVE is implementable. period. + +Wrong. There are many mail stores in which MOVE is completely +unimplementable. The only thing that you can do is simulate the effect of +MOVE by using COPY then delete. + +> In Maildir it can (and will!) cause indeterminate results to client only in +> case of catastrophic failure. + +Maildir has numerous failure modes short of catastrophic failure. Timo +can go into this in quite a bit of detail. + +> So will COPY in case of catastrophic failure. + +Not at all. A mail store can be designed so that there is only a single +operation: commit updated index. It's much easier to do safe commit of a +single object than two simultaneous objects. + +> MOVE creates advantage for any kind of single-labeled flat store. + +So all the world is all designed around Gmail? + +> Currently You are the only one more experienced that is trying to explain the +> complexities of the situation. Most of the people here (I'm silently assuming +> that they are not all newcomers) agreed that it is in fact a needed feature. + +Now you're talking like the cretins who changed the formerly predictable +and deterministic behavior of the motion keys (e.g., CTRL/A, CTRL/E, +CTRL/N, and CTRL/P) in emacs 23. Apparently it was a "needed feature" to +make emacs more like a word processor instead of a text editor. + +It is a typical "response to complex situations with simple solutions that +backfires." The backfire here is that 34 years worth of scripts no longer +work correctly, with resulting subtle file corruption depending upon the +window width. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22883.mbox:2,S new file mode 100644 index 00000000..43b4206f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22883.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From swilkin at apple.com Mon Jan 28 09:34:58 2008 +To: imap-protocol@u.washington.edu +From: Sarah Wilkin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: <08Jan27.162746pst.58696@synergy1.parc.xerox.com> +References: <08Jan27.162746pst.58696@synergy1.parc.xerox.com> +Message-ID: + +Mail 3 is the current version (Leopard). + +SEARCH - yes, UID SEARCH internally (i.e. used by the app but not +available to users) +STARTTLS - yes, no restrictions +SASL - GSSAPI, CRAM-MD5, PLAIN, NTML +SSL - yes, no restrictions +SASL-IR - no +ESEARCH - no +NAMESPACE - yes, internally +IDLE - yes +MULTIAPPEND - no +UIDPLUS - yes +LITERAL+ - yes +CHILDREN - no +SORT - no +THREAD - no +Lemonade - no + +On Jan 27, 2008, at 4:27 PM, Bill Janssen wrote: + +> I've updated my table of client capabilities, which is now at +> +> http://uplib.parc.com/misc/imapclients.html +> +> I've also added a link to it from Timo's wiki. +> +> I'll appreciate updates to it, as well, particularly on new clients +> like the iPhone's email client. +> +> Bill +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22893.mbox:2,S new file mode 100644 index 00000000..85b0aad2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22893.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 17:59:42 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> +Message-ID: + +On Tue, 30 Oct 2007, Timo Sirainen wrote: +> A lot of people +> want shared mailboxes and besides administrator configuring them manually ACL +> is the only possibility. Clients don't currently have much support for it, +> but it doesn't really need support from normal clients. Just having some +> special "ACL (web)client" is enough. I hoped to have implemented ACL for my +> server this summer, but looks like it didn't happen. + +I'm not convinced that this needs to be part of IMAP as opposed to an +external facility (such as you note is already done). + +> I think quota is already pretty widely supported by clients, although in very +> limited form. If people have quota, they really want to know how much they +> have left (when they've reached the limit once..). Quota root is a pretty +> weird concept though and I don't think clients handle multiple ones well. +> Maybe QUOTA2 extension could do a better job with those. + +I don't think that many IMAP clients (as opposed to webmails) report +quota. Again, this seems to be an external facility. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22911.mbox:2,S new file mode 100644 index 00000000..148a5114 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22911.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Jun 25 08:15:15 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Mailbox root name +In-Reply-To: <1182781450.3768.176.camel@hurina> +References: <1182779912.3768.174.camel@hurina> + <1182781450.3768.176.camel@hurina> +Message-ID: + +On Mon, 25 Jun 2007, Timo Sirainen wrote: +> > 1 LIST hello/world/ "" +> > It returns "hello/" as the mailbox root, even if hello doesn't exist. +> > Why? Does Pine really depend on this? + +That's because that form of LIST is a syntax-only operation. What it's +telling you here is that the top-level of "hello/world/" is "hello/". +Pine is probably more likely to do + tag LIST hello/world "" + +> > I remember I changed Dovecot to do +> > this a few years ago because Pine wouldn't work otherwise correctly with +> > ~/mail/ or mail/ or similar folder collection paths (I used to return "" +> > as root). Now that I'm looking over the code I'm just wondering why. + +Uh-oh, you had better be careful here!!!!!! + +~/mail is a very different case from mail/ because ~ serves as a hierarchy +breakout character. The root in + tag LIST ~fred/mail/ "" +is most certainly *not* ""! It is "~fred/". + +In fact, that's probably what is going on here. Since ~fred/ is a +namespace reference, that form of LIST is actually used, whereas + tag LIST fred/mail/ "" +probably isn't actually used but is "fred/" for consistency. I don't dare +change it (see below). + +> Looks like I can't reproduce this anymore. Maybe there were other things +> that caused Pine to break. So is it OK then if I return mailbox root +> namespace prefix, and if there is no prefix then just return ""? + +I would recommend that you not do so. It is safer to you copy what UW +imapd does, even if it doesn't seem to make sense. I don't pretend to +understand or remember hierarchy in its full, hideous, glory. + +You weren't around during the hierarchy wars (nearly 15 years ago); but +everybody who was has evil memories. I have the most evil memories of +all, as I was caught in the middle. Nobody was really happy with the +result; but what came out was a carefully-balanced compromise between two +very different views of how hierarchy and hierarchy navigation should +work. + +The underlying purpose of the reference argument in LIST is to provide the +information for a client to have the concept of "connected directory" even +though the server has no such thing. Basically, the reference is either +"I am connected to this directory" or "I am connected to the directory +that contains this name", depending upon if there is a trailing hierarchy +delimiter. + +I forget why getting the root of the hierarchy was important, but it was. +If I were to alter the status quo, I am sure that someone will call me to +task for betraying the Great Compromise.... ;-( + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22914.mbox:2,S new file mode 100644 index 00000000..3f194cea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22914.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu May 24 10:02:56 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + + <1179992121.32181.1744.camel@hurina> + + +Message-ID: + +On Thu, 24 May 2007, Timo Sirainen wrote: +> Right, but my point was that if you added a new keyword, but accidentally +> miswrote it the first time. Then it stays there forever unless the server +> removes it automatically at some point. I think there needs to be a way to +> get rid of unwanted keywords, if only as "automatically remove the keyword +> after 30 days of non-use". + +I do not dispute that point. I'm not so sure that this is an IMAP feature +as opposed to a server implementation feature. + +The difficulty is in determining whether this is a typo or just a keyword +that the user wants to define but not use right away. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22920.mbox:2,S new file mode 100644 index 00000000..df3bb080 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22920.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 20:56:51 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: <1173661726.17598.331.camel@hurina> +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> + + <1173661726.17598.331.camel@hurina> +Message-ID: <07Mar11.195659pst."57996"@synergy1.parc.xerox.com> + +Thanks, that's a nice list. + +> One workaround that there used to be was that several clients (kmail, +> Thunderbird at least) didn't like if UID field wasn't the first field in +> FETCH replies. After a while I gave up and just put it back to begin +> first. + +Didn't like it, how? I'm sending it last (on a UID FETCH if it's not +explicitly specified), and Thunderbird seems happy. I send the specified +items on a FETCH in the order they were requested. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22957.mbox:2,S new file mode 100644 index 00000000..437e1117 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22957.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From tss at iki.fi Thu Dec 28 09:24:23 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + +Message-ID: + +On 15.9.2006, at 16.53, Arnt Gulbrandsen wrote: + +> (Btw, I changed our code today to use 4.1.2+loopbreaker. The first +> time a client fetches a message which another client has expunged, +> but whose expunge has not yet been reported in this session, the +> server issues a NO as in 4.1.2, and makes a note of the UID(s). If +> any of those UIDs are fetched again before the server can report +> the expunge, the server issues a BYE. When it reports expunges, it +> clears its UID set. I think that's as good as 4.1.1+period.) + +Has this been working? I was thinking about changing my current +behavior of simply disconnecting the client immediately when this +happens (which is annoying when it happens). There's currently no +other real alternatives for me than this 4.1.2+loopbreaker or 4.1.3. +Making it admin-configurable is probably a bad idea too. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22960.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22960.mbox:2,S new file mode 100644 index 00000000..84e1dceb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22960.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Fri Nov 24 23:47:24 2006 +To: imap-protocol@u.washington.edu +From: DINH =?utf-8?Q?Vi=C3=AAt_Ho=C3=A0?= +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Re: RFC 3501 section 5.4 Autologout timer +In-Reply-To: <20061124154020.E1247@gollum.dev.gmi-mr.com> +References: <20061124154020.E1247@gollum.dev.gmi-mr.com> +Message-ID: + +Lyndon Nerenberg wrote: + +> > But the client will store (securely) the password locally and send it +> > automatically without the user has to type the password. +> +> Please point out the text in RFC 3501 that mandates that client +> behaviour. + +That's implementation details. At least, RFC 3501 don't disallow this. +Similarly, RFC 3501 does not disallow you to use a hard drive to store +your messages on server side. + +-- +DINH V. Hoa + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22974.mbox:2,S new file mode 100644 index 00000000..427d6a2c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22974.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From bill.shannon at sun.com Tue Sep 12 15:44:15 2006 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> <20060912134217.X80085@orthanc.ca> + <45071C8E.4010909@sun.com> <20060912134901.F80085@orthanc.ca> + <4507222E.7050706@sun.com> + + <4507301B.5040601@sun.com> + +Message-ID: <4507383F.5090308@sun.com> + +Mark Crispin wrote: +> On Tue, 12 Sep 2006, Bill Shannon wrote: +> +>> A test suite that tested the consensus essential functionality would +>> find a great many server bugs and would be of great benefit to customers +>> evaluating and using IMAP servers. +> +> +> Ah, but if the "essential functionality" is anything less than the full +> capability of RFC 3501 you will have to find "concensus". I think that +> you will encounter vigorous objection to any subset, no matter what you +> pick from RFC 3501 to leave out. I'd be one of the objectors... + +I was suggesting a consensus on what to include. Perhaps I should've +said "majority opinion". Any reasonable decision making process that +avoids deadlock will do. If there's something you want in but no one +else wants in, you lose. But at least we end up with a test suite that +has stuff that "everyone" wants in, which is infinitely better than the +complete lack of a test suite we have today. + +>> A test +>> suite would allow customers to apply some pressure to the server vendor. +> +> +> Perhaps. I'm a bit more pessimistic. + +Test suites have been very beneficial to the success of Java technology. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.22999.mbox:2,S new file mode 100644 index 00000000..049ee948 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.22999.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jun 30 10:47:47 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + + + +Message-ID: + +On Fri, 30 Jun 2006, Arnt Gulbrandsen wrote: +> Back when I looked at this, I didn't see find case where OS +> code seriously allowed applications to cancel the OS response to events like +> lid close - the choice was really between suspending the nice way or suffer a +> worse fate when the the nice processes are done. + +It must have changed since you last looked at it. A certain well-known +financial application from a certain well-known vendor will (for reasons +that I can not fathom) cancel any attempt to sleep or hiberate; you are +required to exit the application first. + +Also, laptop lid close is a software controllable event, and it can be set +in the OS to be "ignore completely". + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23014.mbox:2,S new file mode 100644 index 00000000..1092bda3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23014.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From dave at cridland.net Thu Apr 6 00:56:39 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Non-strict searching +In-Reply-To: <1144308406.15330.122.camel@hurina> +References: <1144308406.15330.122.camel@hurina> +Message-ID: <7905.1144310200.216155@peirce.dave.cridland.net> + +On Thu Apr 6 08:26:46 2006, Timo Sirainen wrote: +> Is there interest in creating a SEARCH extension which allows the +> server +> to be less strict in which results it shows, making it better for +> user-made searches? For example the searched word could be found in +> a +> bit different form. +> +> The results could also show some relevancy percentage and also a +> string +> highlighting the searched words (because they're not necessarily the +> exact search keys). +> +> +There's at least some curiosity from me. + +I'm particularly curious as to how Mark's SCAN extension might look +if taken in this direction. (Mark, do you have a specification for +SCAN as-is?) + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23031.mbox:2,S new file mode 100644 index 00000000..abc326fd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23031.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From dave at cridland.net Mon Mar 20 05:51:42 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] listing folder issue +In-Reply-To: +References: +Message-ID: <10128.1142862703.247473@peirce.dave.cridland.net> + +On Mon Mar 20 12:38:43 2006, Lakshmi Kiran Pai wrote: +> I am implementing imap server, have been successfull in listing the +> folders +> but if folder name contains space than only first word of the +> folder name is +> displayed why?? how can i overcome this +> example: if name is "My mails" than while listing at client it +> shows only +> "My" as the folder name. + +My suspicion is that some clients may do this if you're not sending +the mailbox name as a quoted string or literal in the LIST response. + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23051.mbox:2,S new file mode 100644 index 00000000..4fb185af --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23051.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Nov 2 21:16:02 2005 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: <43699BFF.6090100@fastmail.co.uk> +References: <436988D9.8040106@fastmail.co.uk> + + <43699192.2040701@fastmail.co.uk> + + <43699BFF.6090100@fastmail.co.uk> +Message-ID: <31F31EAE-32E4-44B2-8BAF-17A9EFC8B5E1@orthanc.ca> + + +On Nov 2, 2005, at 9:11 PM, Max Waterman wrote: + +> It seems that the only solution is to have a completely separate +> server which only allows authentication after SSL/TLS has been set up. + +If security is that critical to you then I don't think you have much +choice other than to a) bring the service in house where you can +control it, or b) find an outsourced provider who can meet your +policy requirements. + +Given the number of providers who insist on 'security by Microsoft', +I think a) is your only realistic solution. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23055.mbox:2,S new file mode 100644 index 00000000..f864fa22 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23055.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From kkapp at rambler.ru Mon Oct 17 10:11:28 2005 +To: imap-protocol@u.washington.edu +From: Alex Kapranoff +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +References: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> +Message-ID: <950098575.1129569088.151952412.97946@mcgi3.rambler.ru> + +* Arnt Gulbrandsen [Mon, 17 Oct 2005 +16:32:37 +0200]: +> Alex Kapranoff writes: +> > Is there a way to get envelope "From" information for a mail via +IMAP? +> > Specifically, "ENVELOPE" fetch item does not seem to return it. +> +> Use "uid fetch n body.peek[header.fields (return-path)]" to fetch the +> envelope sender. RFC 2821 (and earlier RFCs) require that the envelope +> sender address is stored in return-path when making final delivery. +> Some MTAs get it wrong, though. + +Thanks, that's the way I'll go. Do you know MTAs that do wrong things +with Return-Path:? + +-- +Alex Kapranoff. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23059.mbox:2,S new file mode 100644 index 00000000..6874820d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23059.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 7 07:51:03 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <431EFCCF.9040308@isode.com> +References: + <431EFCCF.9040308@isode.com> +Message-ID: + +Alexey Melnikov writes: +> Arnt Gulbrandsen wrote: +> +>> My (strong) preference is that SELECT of a valid mailbox should start +>> a new session, no matter whether it's the same mailbox as the +>> previous one. +> +> I agree. Isode code certainly doesn't check if the new mailbox name is +> the same as the old one. + +(That also might not be sufficient. Does Isode have another name for +INBOX? InBoX? users.alexey.inbox?) + +Mark - is there any specific reason for the presence of those three +words, ?of another mailbox?? Or can we forget them? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23064.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23064.mbox:2,S new file mode 100644 index 00000000..b3d20775 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23064.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From imap at tlinx.org Sun Aug 7 18:40:13 2005 +To: imap-protocol@u.washington.edu +From: Linda Walsh +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Protocol Q: IMAP(s) svr (want tcp)-> IMAP client +Message-ID: <42F6B7FD.2000408@tlinx.org> + +Under what circumstances, or why would an IMAP(s) server try to +open a connection back to a client? + +I currently have firewall rules setup to allow outgoing connections +from my clients to an external imaps (secure) server. This seems +to work just fine, but I'm wondering if I am creating some inefficiency +in downloading IMAPS email. + +I notice (have for a long time) entries in my firewall' "denied" +traffic log that my ISP's imap server is attempting to initiate +an inbound TCP connection from server port 993 to a high numbered +(>50000) client port. + +I'm wondering under what circumstances an IMAP server might try +to open a new secure connection back to a client server. I don't +know what server they are using, but I am using fetchmail as a +daemon running in poll mode using idle. Why doesn't send it +back on the already open connection? + +I've been hesitant to allow incoming requests do to the increased +possibility of 'spoofing'. I'm not even sure what process on my +end should even be "listening" for such a request. I am unsure about +what credentials it would try to use, though, presumably (?) the +credentials I used to connect to it? But I don't know that 'fetchmail' +is even configurable to listen to 'random' ports coming from semi-random +mail servers (mail1, mail2...mail25, mail26...). + +I've never seen the u.washington IMAP server try to connect back +to any of the clients I use with it -- and I would an immediate +popup notification if my imap server tried to open an IMAP connection +to the client (as my client system is setup to notify me of +non-whitelisted traffic). + +Thanks for any insight... + +Linda + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23084.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23084.mbox:2,S new file mode 100644 index 00000000..464ee0a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23084.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jul 1 16:25:58 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SEARCH messagesets +In-Reply-To: +References: +Message-ID: + +On Sat, 2 Jul 2005, Timo Sirainen wrote: +> If mailbox has 10 messages and client does SEARCH 1:11, is it valid to +> give a BAD reply as most servers do if the same is done with FETCH, or +> should it just be treated as 1:10? Thoughts? + +In my opinion, either is valid. + +It is an error to reference a non-existent sequence number, but SEARCH +criteria are arguably not referencing the sequence number but merely +"searching". + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095133.23090.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095133.23090.mbox:2,S new file mode 100644 index 00000000..aadd9c33 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095133.23090.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From bill.shannon at sun.com Mon Jun 20 10:58:49 2005 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] handling of bad addresses +Message-ID: <42B703D9.5060803@sun.com> + +It's always been my understanding that an IMAP server is required to +return valid ENVELOPE information even if the message it's processing +fails to meet RFC822 requirements. + +What may an IMAP server do with a message that includes a header of +the form: + +From: SPAMIS: + +Is the IMAP server allowed to return an address list that includes a +"start of group" element but no "end of group" element? + +Must an IMAP client be prepared for unmatched start/end group elements? +If so, how should it handle them? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22756.mbox:2,S new file mode 100644 index 00000000..1a995df4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22756.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 27 03:34:57 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] test suite? +In-Reply-To: +References: +Message-ID: <4FBEE821-B901-46CC-AB11-45715CD2018C@mac.com> + + +On Nov 27, 2011, at 11:57 AM, Petite Abeille wrote: + +> Is there some test suites out there to exercise various aspect of the protocol? + +I found some references to something called "ProtoVer Sample IMAP testsuite": + +http://www.securityfocus.com/archive/1/426580 + +Unfortunately, the URL is 404: + +http://www.gleg.net/downloads/p/PROTOVER_SAMPLE_IMAP.tgz + +Would someone have a copy of that test suite? + +Thanks in advance. + +-- + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22807.mbox:2,S new file mode 100644 index 00000000..1e0b9d1a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22807.mbox:2,S @@ -0,0 +1,202 @@ +MBOX-Line: From snowjn at aol.com Fri Jun 11 23:58:47 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> <201006112113.56572.witold.krecicki@firma.o2.pl> <201006112352.05642.witold.krecicki@firma.o2.pl> + +Message-ID: <4C133027.1080603@aol.com> + + + +Mark Crispin wrote: +> On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +>>> IMAP has no guaranteed means of removing a message. Study the +>>> semantics +>>> of STORE and EXPUNGE carefully. MOVE, on the other hand, requires that +>>> guarantee; and does not have the semantics of STORE and EXPUNGE. +>> I really don't get the point, please be more specific. +> +> Neither STORE, nor EXPUNGE, promise that they will store or expunge +> anything. They do, or not do, whatever seems fit according to their +> discretion. Generally, what they decide to more corresponds to what the +> user intended. But there's no promises. +> +> Because of this, both STORE and EXPUNGE send back untagged responses +> stating what they actually did. The client uses this to update its +> cached +> state of what is on the server. If it were not for these untagged +> responses, the client wouldn't have a clue as to what is going on. +> +> There are certain circumstances, such as when closing a mailbox in a +> client that does not cache offline state, that the client does not care +> what the server did beyond a vague presumption that that the server did +> more or less reasonably was what the user wanted. For this reason, there +> STORE's .SILENT form, and the CLOSE command, exist. +> +> A successful MOVE, on the other hand, is an unconditional guarantee that +> all the requested message(s) were moved. But it it? Similarly, a failed +> MOVE ought to be an unconditional guarantee that none of the requested +> messages(s) were moved. But, once again, is it? +> + +Why does that have to be true? If it's ok for store and expunge to send +back untagged +responses and since you describe the move as another command that can +expunge, +wouldn't the move result in untagged expunge responses? I think it +does. At least that's +how my implementation works. In the event that some moves failed the +client would +know where. + +> What happens when there is an error in the middle of the move? Is +> there a +> state in which some messages were moved and others were not? Is there a +> state in which some messages appear in both places (so it was a copy +> after +> all)? Is there a state in which some messages vanished completely? +> +> The only way that you can prevent all of these states is with a +> simultaneous commit in which a failure of either side (remove from +> source, +> insert in destination) completely undoes everything. Locking by itself +> isn't good enough; locking only prevents external races. You still have +> a chicken-and-egg situation in which neither side can safely commit +> without confirmation that the other side has committed. +> +> There are ways to do it. But these are not simple nor commonly +> understood. If I talk about this stuff with most programmers their eyes +> glaze over. +> +> Not even the (much simpler) synchronization timing requirements of IMAP +> are well-implemented. Timo's server and my Panda server are the only +> ones +> that do it correctly in all circumstances (I'm hoping to add my new +> server +> to the list). +> +> So let's say that we punt and say that an error is an error and we'll +> break the all-of-nothing guarantee of IMAP. +> +> There's now the problem of how what was actually done is communicated to +> the client. The untagged responses from FETCH and EXPUNGE won't do it. +> +> So now you have to add a whole new framework of new untagged responses to +> your "simple" MOVE command to convey all the possible error conditions. +> And it's just not what happens in your server. It's what can happen in +> any server. +> +> That is the problem with response to complex situations with simple +> solutions; it backfires. +> +>> COPY is by definition a slow operation. Using hardlinks etc. is a +>> performance +>> hack, not a normal method. +> +> Nowhere in the definition of COPY does it say that it is a slow +> operation. +> I should know. I wrote it. +> +> Furthermore, your calling the use of hardlinks a "performance hack" is a +> personal insult to me. I anticipated the use of hardlinks in IMAP from +> the very beginning, influenced by a pioneering mail store of the early +> 1980s. I am designing a new store that carries that technique to a new +> level. I already added stubbing to my 2006 store design last year; but +> the new design is far more advanced. +> +> Last but not least, it betrays a lack of understanding of how modern +> filesystems work. Rename uses hardlinks internally when the target is on +> the system filesystem (when it isn't, it has to copy+delete). Rename +> is a +> world of hurt on a filesystem without hardlinks; and ultimately the +> problem is left for the disk auditor to resolve after a crash. +> +>> COPY creates NEW entity, MOVE only changes properties of an EXISTING +>> entity. +> +> Now you are presupposing that the message itself knows where it is +> located. That's fine if you are developing Gmail. But all the world is +> not Gmail. +> +> Nor is that how modern filesystems work. The inode has no clue where it +> is in the filesystem tree. +> +> The next step is the abolish the filesystem. +> +>> If COPY is implementable then MOVE is implementable. period. +> +> Wrong. There are many mail stores in which MOVE is completely +> unimplementable. The only thing that you can do is simulate the +> effect of +> MOVE by using COPY then delete. +> +>> In Maildir it can (and will!) cause indeterminate results to client +>> only in +>> case of catastrophic failure. +> +> Maildir has numerous failure modes short of catastrophic failure. Timo +> can go into this in quite a bit of detail. +> +>> So will COPY in case of catastrophic failure. +> +> Not at all. A mail store can be designed so that there is only a single +> operation: commit updated index. It's much easier to do safe commit of a +> single object than two simultaneous objects. +> +>> MOVE creates advantage for any kind of single-labeled flat store. +> +> So all the world is all designed around Gmail? +> +>> Currently You are the only one more experienced that is trying to +>> explain the +>> complexities of the situation. Most of the people here (I'm silently +>> assuming +>> that they are not all newcomers) agreed that it is in fact a needed +>> feature. +> +> Now you're talking like the cretins who changed the formerly predictable +> and deterministic behavior of the motion keys (e.g., CTRL/A, CTRL/E, +> CTRL/N, and CTRL/P) in emacs 23. Apparently it was a "needed feature" to +> make emacs more like a word processor instead of a text editor. +> +> It is a typical "response to complex situations with simple solutions +> that +> backfires." The backfire here is that 34 years worth of scripts no +> longer +> work correctly, with resulting subtle file corruption depending upon the +> window width. + +I get the impression that your main objection to a move is that it may +be difficult or even impossible to implement depending on the storage +system. Should +that really be considered when designing the protocol? If you assume +that it would be +easy for everyone to add, would the feature be a good idea or not? + +I have already implemented a move command. It was done as extension command + to support our webmail client and several desktop clients. We have +found it to be +very useful and I do recommend that we find a way to add it. I have my +version for my clients, but I'd rather have an accepted standard that +other clients +might choose to use it. + + +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> ------------------------------------------------------------------------ +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22883.mbox:2,S new file mode 100644 index 00000000..7d21e1b6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22883.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From alexey.melnikov at isode.com Mon Jan 28 10:13:05 2008 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +References: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> +Message-ID: <479E1B31.8060204@isode.com> + +Hi Bill, + +Bill Janssen wrote: + +>I've updated my table of client capabilities, which is now at +> +> http://uplib.parc.com/misc/imapclients.html +> +>I've also added a link to it from Timo's wiki. +> +>I'll appreciate updates to it, as well, particularly on new clients +>like the iPhone's email client. +> +> +Thunderbird supports both PLAIN and CRAM-MD5. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22893.mbox:2,S new file mode 100644 index 00000000..8febaf28 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22893.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tjs at psaux.com Mon Oct 29 18:27:40 2007 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + <47266943.2010409@psaux.com> + +Message-ID: <4726888C.6010409@psaux.com> + +Mark Crispin wrote: +> I think that there is much more opposition to adding to a base +> specification than to a service level. A new base specification +> purported kills the previous one; whereas a service level might get +> ignored at a particular point. +> +> Sometimes how you call things does matter! + +Well, I think that's true, but it's clear that base specifications get +ignored, too. + +I don't have a feel for which is the easier path, but I am fearful of +the work involved in IMAP5, because I think it will bring out the trolls. + +If we were to add a single client-side capability, we could provide a +general mechanism. I think it's desirable if we encourage client +capabilities to be bundled, but I think requiring it is a mistake. + +I don't believe IMAP5 would provide this flexibility. + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22911.mbox:2,S new file mode 100644 index 00000000..d264f478 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22911.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Jun 25 08:29:59 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: <1182783681.3768.187.camel@hurina> +References: <1182783681.3768.187.camel@hurina> +Message-ID: + +Simple answer: this is why we have the # convention for alternative +namespaces, especially those which change the hierarchy delimiter. + +What you have here is an ambiguity brought about by not using the # +convention and listing a namespace at the root. Both of these are bad +things to do, and will undoubtably confuse clients. + +Mixing hierarchy delimiters is definitely a no-no. There is one, and only +one, hierarchy delimiter in a name. Thus, your second untagged response +to command 2 is bad, since it lies and says that the delimiter for news is +"/", and then commands 3 and 4 compound the issue. + +You might have been able to get away with 3 and 4 had you not responded as +you did in command 2. In that case, "news/comp" and "news/alt" would +actually be top-level names, with "/" being an ordinary character. +Command 2 would not list "news" since there is no such name; and in any +case it shouldn't list news since that's a separate namespace. + +Let me emphasize this: only ONE namespace is listed in a LIST command +command. Namespaces are NOT the same as root level names. By defining a +separate namespace you declare those names to be OUTSIDE of the space +listed in other namespaces!!! + +In any case, I think that you should use the # convention, and keep your +delimiters separate; and not come up with oddballs and hope that they +work. + +Here is the scenario that I think you should use: + +1 namespace +* NAMESPACE (("" "/")) NIL (("#news." ".")) +1 OK done +2 list "" % +* LIST (\HasNoChildren) "/" "INBOX" +2 OK done +3 LIST #news. % +* LIST (\NoSelect) "." "#news.comp" +* LIST (\NoSelect) "." "#news.alt" +3 OK done +4 list "" #news.comp.% +* LIST (\NoSelect) "." "news/comp.mail" +4 OK done + + +On Mon, 25 Jun 2007, Timo Sirainen wrote: +> Hand written, hopefully didn't leave errors: +> +> 1 namespace +> * NAMESPACE (("" "/")) NIL (("news/" ".")) +> 1 OK +> 2 list "" % +> * LIST (\HasNoChildren) "/" "INBOX" +> * LIST (\HasChildren) "/" "news" +> 2 OK +> 3 list "" news/% +> * LIST () "." "news/comp" +> * LIST () "." "news/alt" +> 3 OK +> 4 list "" news/comp.% +> * LIST () "." "news/comp.mail" +> 4 OK +> +> Is it valid for news/ to change the separator? +> +> I guess many clients don't like it, but should I allow such +> configuration anyway? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22914.mbox:2,S new file mode 100644 index 00000000..89b04511 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22914.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu May 24 10:04:18 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: <1180025526.32181.1812.camel@hurina> +References: <20070524012401.GA30894@penne.toroid.org> + + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + + <1179992121.32181.1744.camel@hurina> + + + <1180025526.32181.1812.camel@hurina> +Message-ID: + +On Thu, 24 May 2007, Timo Sirainen wrote: +> Or would there be a point in adding a new "-" namespace for keywords? So +> "-keyword" or "-$keyword" would remove it (probably only if it's +> unused)? + +I think that this probably belongs with mailbox metadata manipulation. +Too bad the ANNOTATE extension got so badly sidetracked. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22920.mbox:2,S new file mode 100644 index 00000000..81ad8b28 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22920.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From janssen at parc.com Sun Mar 11 22:02:39 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] body size in BODYSTRUCTURE: include headers? +Message-ID: <07Mar11.210244pst."57996"@synergy1.parc.xerox.com> + +It's not clear (to me) from RFC 3501 whether the following "body size" +value in BODYSTRUCTURE include's the part's headers, or not. I'm assuming +it does. + + body size + + A number giving the size of the body in octets. Note that + this size is the size in its transfer encoding and not the + resulting size after any decoding. + +Similarly, I assume that this other size, in lines, includes the +part's headers. + + A body type of type TEXT contains, immediately after the basic + fields, the size of the body in text lines. Note that this + size is the size in its content transfer encoding and not the + resulting size after any decoding. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22957.mbox:2,S new file mode 100644 index 00000000..275c8e83 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22957.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From tss at iki.fi Thu Dec 28 09:29:51 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + +Message-ID: <7649676B-5A1C-42A7-88D2-CC86B01F81CB@iki.fi> + +On 15.9.2006, at 16.53, Arnt Gulbrandsen wrote: + +>>> IMO, it depends on the precise text. Requiring that all clients +>>> offer the server an opportunity to send EXPUNGE every so often +>>> can't be all that bad, but how often? "EXPUNGE may not take +>>> effect completely until half an hour after the tagged OK" sounds +>>> overly long to me. "Clients must give the server the opportunity +>>> to send EXPUNGE at two-minute intervals or more often" sounds +>>> much too short. Ten minutes sounds both too short and too long. +>>> All partly subjective of course. +>> +>> In my opinion, the minimum period should be between 5 and 30 +>> minutes. NAT has pretty much made it non-viable to go idle for +>> more than 5 minutes. +> +> Then five minutes. + +5 minutes sounds pretty short to me. Have you tried adding such a +check yet and see what it does to clients? I was thinking something +like 15-30 minutes. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22974.mbox:2,S new file mode 100644 index 00000000..c7d9abd6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22974.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From ams at oryx.com Wed Sep 13 23:04:31 2006 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] what if / were my server's "home directory"? +Message-ID: <20060914060431.GA15997@penne.toroid.org> + +Our IMAP server uses a conventional mailbox hierarchy, where each user's +"home directory" is /users/name (that is, an empty reference argument to +LIST is intepreted as /users/name), and a user's personal mailboxes may +be accessed either as foo or /users/name/foo. + +What would happen if we started interpreting an empty reference as "/"? + +That is, every mailbox would have just one name. /users/foo/bar, or +/archives/imap-protocol, or whatever. Would clients be able to cope +with not being able to "CREATE Drafts" or whatever? (I'm told that +isn't possible with Cyrus anyway, so it should be OK, but I haven't +tested.) + +Does anyone see a problem with such a layout? + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.22999.mbox:2,S new file mode 100644 index 00000000..0fbcb00b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.22999.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Jun 30 10:49:40 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + + + + +Message-ID: + +On Fri, 30 Jun 2006, Arnt Gulbrandsen wrote: +> It has the opportunity to fork when it receives LOGOUT. The fork would be +> finished before the connection close arrives. + +That is beside the point. The problem is with clients that don't even +send a LOGOUT. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23014.mbox:2,S new file mode 100644 index 00000000..3e3b66c4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23014.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Apr 6 08:02:59 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Non-strict searching +In-Reply-To: <7905.1144310200.216155@peirce.dave.cridland.net> +References: <1144308406.15330.122.camel@hurina> + <7905.1144310200.216155@peirce.dave.cridland.net> +Message-ID: + +On Thu, 6 Apr 2006, Dave Cridland wrote: +> I'm particularly curious as to how Mark's SCAN extension might look if taken +> in this direction. (Mark, do you have a specification for SCAN as-is?) + +SCAN is nothing more than a LIST with a third argument that filters out +any files that do not contain the string. It doesn't even try to do any +mailbox handling. It was, and remains, a kludge to answer the people who +wanted an equivalent to fgrep for a string in a mailbox file. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23031.mbox:2,S new file mode 100644 index 00000000..4d33fa2c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23031.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Tue Mar 21 20:56:39 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] UID FETCH (BODY.PEEL[] UID) Error +Message-ID: + +Client log is as follows: + +IMAP: 10:17:44 [tx] xgcz UID FETCH 3176 (BODY.PEEK[] UID) +IMAP: 10:17:44 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 10:17:44 [rx] * 2 FETCH (UID 3176 BODY[] {2} +IMAP: 10:17:44 [rx] Buffer (literal) of length 2 +IMAP: 10:17:44 [rx] llMessage-ID: < +1744155.1142856823231.JavaMail.root@pythagorus> +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322516 +IMAP: 10:17:44 [rx] Date: Mon, 20 Mar 2006 17:43:42 +0530 (IST) +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] From: System Administrator +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] Reply-to: System Administrator +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] To: laxmi@192.168.11.21 +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] Subject: tesing imap +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] Mime-Version: 1.0 +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] Content-Type: text/html +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] Content-Transfer-Encoding: 7bit +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] X-Priority: 3 +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] X-Mailer: Chorus by zeroCode, Version 2.0 +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx]

Regards

+IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx]

Chengappa

Thanks

+IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx]

Chengappa

+IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] ) +IMAP: 10:17:44 [db] PARSE ERROR: hr=2148322522 +IMAP: 10:17:44 [rx] xgcz OK UID FETCH completed. +IMAP: 10:17:44 [tx] mhmi IDLE +IMAP: 10:17:44 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +IMAP: 10:17:44 [rx] + Waiting for DONE. + +i think there is syntax mistake in the response from server; near the +literal{2}. this literal is not dynamically calculated its hand coded. I +need to know how to calculate it. +And also if any one has been through this error kindly guide. + +Thank you in advance +Regards. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23051.mbox:2,S new file mode 100644 index 00000000..d04aff6e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23051.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From harald at arcada.fi Wed Nov 2 23:33:12 2005 +To: imap-protocol@u.washington.edu +From: Harald Hannelius +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: +References: <436988D9.8040106@fastmail.co.uk> + + <43699192.2040701@fastmail.co.uk> + +Message-ID: + + +On Wed, 2 Nov 2005, Mark Crispin wrote: +> On Thu, 3 Nov 2005, Max Waterman wrote: + + +> > 2) use a separate servers for secure and insecure users (I suppose a second +> > NIC would suffice?) +> +> That is more likely. You could use a different port number instead of a +> separate IP address. + +What I have done is patching uw-imapd to support plain-text passwords +taken from a file in the users homedirectory. This imapd runs on the +standard imap4 port. I did this by modifying the cram-md5 code in +uw-imapd. + +The reason for this radical decision to decrease security is mobile +phones. It's quite expensive to do SSL on a mobile phone (batterywise). + +Then we have another imapd that speaks on the imaps port. + +This combination works fine for us. So far :) + +> I question the need to use a client which does not negotiate SSL or TLS. All +> modern IMAP clients support SSL and/or TLS, and have done so for years. + +Well, mobile devices, such as some mobile phones don't do SSL/TLS, it +has to do with the required hardware and available batterypower. Although +the phone speaks some kind of imap... + + +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + +-- +A: Top Posters +Q: What is the most annoying thing on mailing lists? + +Harald H Hannelius | harald/a\arcada.fi | GSM +358 50 594 1020 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23055.mbox:2,S new file mode 100644 index 00000000..5f898a81 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23055.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Oct 18 00:51:19 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +In-Reply-To: <950098575.1129569088.151952412.97946@mcgi3.rambler.ru> +References: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> + <950098575.1129569088.151952412.97946@mcgi3.rambler.ru> +Message-ID: + +Alex Kapranoff writes: +> Thanks, that's the way I'll go. Do you know MTAs that do wrong things +> with Return-Path:? + +If it matters I suppose I could find some in my mail archive. What I've +heard of were odd and little-used programs, anyway. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23059.mbox:2,S new file mode 100644 index 00000000..e5492d8f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23059.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From robsiemb at google.com Wed Sep 7 07:58:35 2005 +To: imap-protocol@u.washington.edu +From: Rob Siemborski +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: +Message-ID: <5b93232d050907075812659c02@mail.google.com> + +On 9/7/05, Arnt Gulbrandsen wrote: +> Opinions? +> +> My (strong) preference is that SELECT of a valid mailbox should start a +> new session, no matter whether it's the same mailbox as the previous +> one. + +This strikes me as the most consistent behavior. It is also what Cyrus does. + +The second paragraph you quote could probably be more clearly stated +with "SELECT or EXAMINE of any valid mailbox" or similar, which is how +I find myself reading "another" in this case. + +-Rob + +-- +Rob Siemborski | PGP:0x5CE32FCC | robsiemb@google.com +Software Engineer | | 650-623-6925 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23064.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23064.mbox:2,S new file mode 100644 index 00000000..51a6224d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23064.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From rra at stanford.edu Sun Aug 7 19:05:34 2005 +To: imap-protocol@u.washington.edu +From: Russ Allbery +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Protocol Q: IMAP(s) svr (want tcp)-> IMAP client +In-Reply-To: <42F6B7FD.2000408@tlinx.org> (Linda Walsh's message of "Sun, 07 + Aug 2005 18:40:13 -0700") +References: <42F6B7FD.2000408@tlinx.org> +Message-ID: <8764uhgp3l.fsf@windlord.stanford.edu> + +Linda Walsh writes: + +> I notice (have for a long time) entries in my firewall' "denied" traffic +> log that my ISP's imap server is attempting to initiate an inbound TCP +> connection from server port 993 to a high numbered (>50000) client port. + +This is generally caused by confused firewalls that terminate a connection +too quickly and then deny the final TCP ack from the server. Check to see +if these denied packets happen immediately after the end of a legitimate +connection. + +-- +Russ Allbery (rra@stanford.edu) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23084.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23084.mbox:2,S new file mode 100644 index 00000000..1649f833 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23084.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tss at iki.fi Sat Jul 23 06:39:50 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] DELETE +Message-ID: <09f60ca2b6755b2ede231d31ee4ce55e@iki.fi> + +RFC says: + + It is permitted to delete a name that has inferior hierarchical + names and does not have the \Noselect mailbox name attribute. In + this case, all messages in that mailbox are removed, and the name + will acquire the \Noselect mailbox name attribute. + +But is it really wanted that the mailbox still exists and has +\Noselect? I'm guessing this should mean that when doing LIST "" %, it +shows up as \Noselect since it has children, but LIST "" * shouldn't +need to show the mailbox at all since it shows its children anyway? +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23090.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23090.mbox:2,S new file mode 100644 index 00000000..4bf67fd0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23090.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Jun 20 11:28:57 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] handling of bad addresses +In-Reply-To: <42B703D9.5060803@sun.com> +References: <42B703D9.5060803@sun.com> +Message-ID: + +On Mon, 20 Jun 2005, Bill Shannon wrote: +> It's always been my understanding that an IMAP server is required to +> return valid ENVELOPE information even if the message it's processing +> fails to meet RFC822 requirements. + +This is correct. However, the principle of GIGO (garbage in, garbage out) +applies; as long as the IMAP protocol that you generate is valid you +aren't required to handle bogus incoming RFC 2822 data in any particular +way. + +> What may an IMAP server do with a message that includes a header of +> the form: +> From: SPAMIS: + +I would return a two-address list, one with the start of group and the +other with an end of group. + +> Is the IMAP server allowed to return an address list that includes a +> "start of group" element but no "end of group" element? +> Must an IMAP client be prepared for unmatched start/end group elements? + +The IMAP specification is silent on this point; but I would recommend that +the IMAP server supply the missing end of group. Otherwise, an RFC 2822 +generator using the IMAP address list as a source will re-generate the +invalid RFC 2822 address list. + +Note that a group without an end of group indicator commonly appears in +messages in the 1970s (as do messages which use " at " instead of "@"). +So, it's reasonable to recognize such things and represent them in the +modern form. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095134.23093.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095134.23093.mbox:2,S new file mode 100644 index 00000000..8a9f8218 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095134.23093.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From oleung at traversenetworks.com Tue May 10 12:00:44 2005 +To: imap-protocol@u.washington.edu +From: Otto Leung +Date: Fri Jun 8 12:34:35 2018 +Subject: [Imap-protocol] copy messages from one folder to another +Message-ID: <3D9D02497026344DB100E7D18A6C06E3821971@nbexch01.neubond.com> + +Hi all, + + + +I am currently trying to port a C++ mail program to java. Are there any +javamail experts here? + +Using javamail, if I copy a message from one folder to another, how do +you get the new UID of the message? + + + +Thanks in advance, + +o + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22756.mbox:2,S new file mode 100644 index 00000000..a0a9aa20 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22756.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From petite_abeille at mac.com Sun Nov 27 06:36:39 2011 +To: imap-protocol@u.washington.edu +From: Petite Abeille +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] fetch command with repeating attributes? +Message-ID: + +Hello, + +Can the fetch command contain the same attribute multiple times? + +For example, the following request , curtesy of dbmail test suite [1], sports the BODY.PEEK attribute twice, for two different header fields: + +C0000A UID FETCH 1:* (BODY.PEEK[HEADER.FIELDS (Subject)] BODY.PEEK[HEADER.FIELDS (Message-Id)] ENVELOPE RFC822.SIZE UID FLAGS INTERNALDATE) + +Is such fetch request compliant? Can the fetch attributes be repeated multiple times? + +If yes, what's the expected response? Two BODYs, one for each header? One BODY with the two requested fields? Either? + +Thanks in advance. + +[1] testfetch.txt + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22807.mbox:2,S new file mode 100644 index 00000000..64c218e4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22807.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Jun 12 00:01:11 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + + <4C12CACB.7030205@aol.com> + + +Message-ID: <4C1330B7.9030106@gulbrandsen.priv.no> + +On 06/12/2010 02:24 AM, Mark Crispin wrote: +> On Fri, 11 Jun 2010, Philip Guenther wrote: +>> The core bits of IMAP are that of a cache fill protocol. +> +> Unfortunately most people do not understand that. + +Aside: They might understand it better if the RFC were to mention +phrases like "cache" and "cache fill protocol" here and there, and talk +more about such usage of the protocol, and less about other usage. + +In general, this thread seems to be turning away from an extension +client authors want and (in the guise of xaol-move) use, to something +rather different. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22883.mbox:2,S new file mode 100644 index 00000000..0be96de0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22883.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From janssen at parc.com Mon Jan 28 11:34:21 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] updated table of IMAP client capabilities +In-Reply-To: <479E1B31.8060204@isode.com> +References: <08Jan27.162746pst."58696"@synergy1.parc.xerox.com> + <479E1B31.8060204@isode.com> +Message-ID: <08Jan28.113424pst."58696"@synergy1.parc.xerox.com> + +Thanks for all the updates, folks. I've updated the table, and +included a link to Alexey's server capabilities table. + +Still curious about iPhone email (thanks to Dave for the pointer to +Modest)... + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22893.mbox:2,S new file mode 100644 index 00000000..686bbacc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22893.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Oct 29 19:00:52 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <4726888C.6010409@psaux.com> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + <47266943.2010409@psaux.com> + + <4726888C.6010409@psaux.com> +Message-ID: + +On Mon, 29 Oct 2007, Tim Showalter wrote: +>> I think that there is much more opposition to adding to a base +>> specification than to a service level. A new base specification purported +>> kills the previous one; whereas a service level might get ignored at a +>> particular point. +>> Sometimes how you call things does matter! +> Well, I think that's true, but it's clear that base specifications get +> ignored, too. + +Sigh, only too true! + +> I don't have a feel for which is the easier path, but I am fearful of the +> work involved in IMAP5, because I think it will bring out the trolls. + +That is my fear too; but trolls are possible with service levels too. +From the very earliest days of IMAP, the "IMAP will die unless IMAP adopts +my favorite functionality" argument has been made. + +> If we were to add a single client-side capability, we could provide a general +> mechanism. I think it's desirable if we encourage client capabilities to be +> bundled, but I think requiring it is a mistake. +> I don't believe IMAP5 would provide this flexibility. + +The idea with IMAP5 was NOT to have any client-side capabilities, but +allow breaking assumptions of the past. + +I think that the path of client-side capabilities leads to madness. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22911.mbox:2,S new file mode 100644 index 00000000..460d38d9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22911.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Mon Jun 25 08:59:50 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: +References: <1182783681.3768.187.camel@hurina> + +Message-ID: <1182787190.3768.198.camel@hurina> + +On Mon, 2007-06-25 at 08:29 -0700, Mark Crispin wrote: +> Simple answer: this is why we have the # convention for alternative +> namespaces, especially those which change the hierarchy delimiter. + +I find this # thing also a bit weird. The client can't know about those +namespaces without NAMESPACE command, and if it does then there's really +no need for # because it can find out the exact prefixes anyway. So why +should the client do anything differently if there's #? + +> Let me emphasize this: only ONE namespace is listed in a LIST command +> command. Namespaces are NOT the same as root level names. By defining a +> separate namespace you declare those names to be OUTSIDE of the space +> listed in other namespaces!!! + +I've understood that many commonly used clients ignore namespaces and +only show what is visible with LIST "" *, so I'd want to keep it +possible to list contents of all namespaces with it. + +Dovecot actually allows the admin to configure any kind of namespaces. +I'm currently just wondering what kind of configurations I should +prevent. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22914.mbox:2,S new file mode 100644 index 00000000..6b622080 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22914.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From dinh.viet.hoa at free.fr Thu May 24 10:35:50 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?DINH_Vi=EAt_Ho=E0?= +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + + <1179992121.32181.1744.camel@hurina> + + + <1180025526.32181.1812.camel@hurina> + +Message-ID: + +On 5/24/07, Mark Crispin wrote: +> +> I think that this probably belongs with mailbox metadata manipulation. +> Too bad the ANNOTATE extension got so badly sidetracked. + +What's the problem with ANNOTATE extension ? + +-- +DINH Vi?t Ho? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22920.mbox:2,S new file mode 100644 index 00000000..e62cec82 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22920.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Mar 11 22:25:09 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] body size in BODYSTRUCTURE: include headers? +In-Reply-To: <07Mar11.210244pst."57996"@synergy1.parc.xerox.com> +References: <07Mar11.210244pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Sun, 11 Mar 2007, Bill Janssen wrote: +> It's not clear (to me) from RFC 3501 whether the following "body size" +> value in BODYSTRUCTURE include's the part's headers, or not. I'm assuming +> it does. + +You are mistaken, and I am completely bewildered as to how you could make +that assumption. + +After all, you quoted text from the specification that says that both the +body size and size in lines are "the size in its transfer encoding and not +the resulting size after any decoding". The MIME headers are neither +encoded or decoded, that that statement would be ludicrous if headers were +included. + +It would also be extraordinarily silly for the protocol to include the +MIME headers in these sizes. MIME headers are not included in the BODY +content which you fetch it, so why would you want a number that is the +added size of two items (the MIME headers and the BODY content)? And if +it did that, why wouldn't it include the delimiter? Or whoknowswhatelse? + +Now, the reason why the size of the body in octets is so important is that +when you do a partial fetch of, say, BODY[2] (which does not include the +MIME headers) you know how many bytes you have to fetch (since it's a +partial fetch and not a full-fetch where you could just swallow whatever +the server shoves at you). If the MIME headers were included in the size, +then you would first have to fetch the MIME headers, calculate that string +length, and then subtract that value from the body size in order to get +the number that you actually need. + +Maybe this will help you. Consider how a message is represented in the +native IMAP constructs of ENVELOPE, BODYSTRUCTURE, and BODY[n] (ignore +those HEADER, TEXT, and MIME addons). Now, consider what makes sense in +that context. It seems that IMAP is a protocol that goes to considerable +effort to free a client from having to deal with skanky things like +headers. Perhaps IMAP might even represent messages in other formats +(this doesn't actually happen, but it *was* part of the original +architecture). + +Once you understand that, you will have a pretty good razor to help you +resolve these kinds of questions. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22957.mbox:2,S new file mode 100644 index 00000000..b3e29cde --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22957.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Dec 31 12:12:35 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + + +Message-ID: + +Timo Sirainen writes: +> On 15.9.2006, at 16.53, Arnt Gulbrandsen wrote: +> +>> (Btw, I changed our code today to use 4.1.2+loopbreaker. The first +>> time a client fetches a message which another client has expunged, +>> but whose expunge has not yet been reported in this session, the +>> server issues a NO as in 4.1.2, and makes a note of the UID(s). If +>> any of those UIDs are fetched again before the server can report +>> the expunge, the server issues a BYE. When it reports expunges, it +>> clears its UID set. I think that's as good as 4.1.1+period.) +> +> Has this been working? + +We haven't had a single complaint or bug report, and more than two +months have passed, so it can't be terrible. + +> I was thinking about changing my current behavior of simply +> disconnecting the client immediately when this happens (which is +> annoying when it happens). There's currently no other real +> alternatives for me than this 4.1.2+loopbreaker or 4.1.3. + +All rather difficult, isn't it? + +> Making it admin-configurable is probably a bad idea too. + +I agree. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22974.mbox:2,S new file mode 100644 index 00000000..6af6d2d7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22974.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Sep 13 23:15:04 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] what if / were my server's "home directory"? +In-Reply-To: <20060914060431.GA15997@penne.toroid.org> +References: <20060914060431.GA15997@penne.toroid.org> +Message-ID: + +Your change would effectively put IMAP sessions at the root. I don't +think that this a particularly good idea, especially given that there are +so many clients that do a * wildcard lists. + +It should work, but you may end up deciding that it was a bad idea. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.22999.mbox:2,S new file mode 100644 index 00000000..34b488c9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.22999.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From jkt at gentoo.org Fri Jun 30 13:14:43 2006 +To: imap-protocol@u.washington.edu +From: =?UTF-8?B?SmFuIEt1bmRyw6F0?= +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: +References: + + +Message-ID: <44A58633.6000601@gentoo.org> + +Mark Crispin wrote: +> On Fri, 30 Jun 2006, Arnt Gulbrandsen wrote: +>> Don't you think the servers on such platforms should deal with it, +>> instead of expecting all clients on all platforms to do so? +>> For example, a server on such a platform can fork off another intance +>> of itself (invisible to the client), close the IMAP connection, and +>> let the client go on its way? +> +> That makes no sense. I said that the server gets a non-maskable kill +> from the OS. The server has no notice, nor any opportunity to react; it +> is instantly destroyed. + +The server might have forked and the original process exited to avoid +such behavior, but that would be rather dumb, of course :) + +Cheers, +-jkt + +-- +cd /local/pub && more beer > /dev/mouth + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 262 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23014.mbox:2,S new file mode 100644 index 00000000..20206c3d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23014.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From nevon_brake at consilient.com Mon Apr 10 08:30:53 2006 +To: imap-protocol@u.washington.edu +From: Nevon Brake +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +Message-ID: <443A7A2D.2070708@consilient.com> + +I am seeking clarification on the following paragraph that appears in +the LIST command section of RFC3501: + +"The special name INBOX is included in the output from LIST, if INBOX is +supported by this server for this user and if the uppercase string +"INBOX" matches the interpreted reference and mailbox name arguments +with wildcards as described above. The criteria for omitting INBOX is +whether SELECT INBOX will return failure; it is not relevant whether the +user's real INBOX resides on this or some other server." + + From this, can one conclude that a server implementation MAY not return +the INBOX in a LIST such as: + +C: a004 LIST "" Inbox +S: a004 OK LIST completed + +when it does return it in a LIST such as: + +C: a004 LIST "" INBOX +S: * LIST (\Unmarked) "/" INBOX +S: a004 OK LIST completed + +Secondly, take a scenario where there are three mailboxes: INBOX, INBOX1 +and InBox1, and the client does a LIST: + +C: a004 LIST "" In%B% + +Assuming the implementation is case-sensitive, what must the server +return? More importantly, can it NOT return the INBOX? I realize this +example is a bit contrived, but it may help in the clarification. + +Thank you, + +Nevon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23031.mbox:2,S new file mode 100644 index 00000000..6518bcff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23031.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From guenther+imap at sendmail.com Tue Mar 21 21:30:24 2006 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] UID FETCH (BODY.PEEL[] UID) Error +In-Reply-To: +References: +Message-ID: <200603220530.k2M5UOHY099031@lab.smi.sendmail.com> + +Lakshmi Kiran Pai writes: +>Client log is as follows: +> +>IMAP: 10:17:44 [tx] xgcz UID FETCH 3176 (BODY.PEEK[] UID) +>IMAP: 10:17:44 [db] OnNotify: asOld = 5, asNew = 5, ae = 3 +>IMAP: 10:17:44 [rx] * 2 FETCH (UID 3176 BODY[] {2} +>IMAP: 10:17:44 [rx] Buffer (literal) of length 2 +>IMAP: 10:17:44 [rx] llMessage-ID: <1744155.1142856823231.JavaMail.root@pythagorus> +... +>i think there is syntax mistake in the response from server; near the +>literal{2}. + +Yep. + + +>this literal is not dynamically calculated its hand coded. + +That is completely broken. + +You cannot write an IMAP server simply by guessing at what it needs +to send. You must read RFC 3501 and understand it. + +If you have not read the RFC, stop everything and read it now. + +If you have read the RFC, please say what is unclear about the +section describing literals. + + +>I need to know how to calculate it. + +It's all in the RFC. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23051.mbox:2,S new file mode 100644 index 00000000..cba89850 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23051.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From dave at cridland.net Thu Nov 3 01:20:19 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: +References: <436988D9.8040106@fastmail.co.uk> + + <43699192.2040701@fastmail.co.uk> + + +Message-ID: <8521.1131009620.555949@peirce.dave.cridland.net> + +On Thu Nov 3 07:33:12 2005, Harald Hannelius wrote: +> The reason for this radical decision to decrease security is mobile +> phones. It's quite expensive to do SSL on a mobile phone +> (batterywise). + +I keep hearing this rumour, but it's confusing on two counts: + +1) The single biggest drain on the battery is the radio transmitter, +not the CPU, which is generally reasonably efficient. +2) If crypto really was such a major drain on the battery, then given +that battery life is so crucial to the market, why on earth haven't +they got crypto processors (which have a markedly lower power usage +for crypto work than a generic CPU). + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23055.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23055.mbox:2,S new file mode 100644 index 00000000..b11b2d00 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23055.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From kkapp at rambler.ru Tue Oct 18 04:01:23 2005 +To: imap-protocol@u.washington.edu +From: Alex Kapranoff +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Envelope "From" via IMAP +References: <858610995.1129557894.146542220.97946@mcgi3.rambler.ru> + <950098575.1129569088.151952412.97946@mcgi3.rambler.ru> +Message-ID: <975127036.1129633283.152581328.8954@mcgi3.rambler.ru> + +* Arnt Gulbrandsen [Tue, 18 Oct 2005 +09:51:19 +0200]: +> > Thanks, that's the way I'll go. Do you know MTAs that do wrong things +> > with Return-Path:? +> If it matters I suppose I could find some in my mail archive. What I've +> heard of were odd and little-used programs, anyway. + +Thanks, I don't think it really matters then. If big players seem to +be ok, that's enough. + +-- +Alex Kapranoff. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23059.mbox:2,S new file mode 100644 index 00000000..f18ca71d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23059.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From robsiemb at google.com Wed Sep 7 08:03:09 2005 +To: imap-protocol@u.washington.edu +From: Rob Siemborski +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <5b93232d050907075812659c02@mail.google.com> +References: + <5b93232d050907075812659c02@mail.google.com> +Message-ID: <5b93232d05090708031a898592@mail.google.com> + +On 9/7/05, Rob Siemborski wrote: +> On 9/7/05, Arnt Gulbrandsen wrote: +> > Opinions? +> > +> > My (strong) preference is that SELECT of a valid mailbox should start a +> > new session, no matter whether it's the same mailbox as the previous +> > one. +> +> This strikes me as the most consistent behavior. It is also what Cyrus does. +> +> The second paragraph you quote could probably be more clearly stated +> with "SELECT or EXAMINE of any valid mailbox" or similar, which is how +> I find myself reading "another" in this case. + +Actually, this isn't quite right either, because of the possibility of +failure of a SELECT command, which implies to me the entire paragraph +is bogus (since the original text didn't address this case). + +Perhaps "a SELECT or EXAMINE command is issued (regardless of if it +succeeds or fails)" is closer. Really, the important part of the +second paragraph is "until the time that selection ends" which is +immediately upon the next SELECT command (which deselects the mailbox +first) + +-Rob + +-- +Rob Siemborski | PGP:0x5CE32FCC | robsiemb@google.com +Software Engineer | | 650-623-6925 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23064.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23064.mbox:2,S new file mode 100644 index 00000000..44bdb904 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23064.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Aug 7 23:58:29 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Protocol Q: IMAP(s) svr (want tcp)-> IMAP client +In-Reply-To: <8764uhgp3l.fsf@windlord.stanford.edu> +References: <42F6B7FD.2000408@tlinx.org> <8764uhgp3l.fsf@windlord.stanford.edu> +Message-ID: + +On Sun, 7 Aug 2005, Russ Allbery wrote: +> Linda Walsh writes: +>> I notice (have for a long time) entries in my firewall' "denied" traffic +>> log that my ISP's imap server is attempting to initiate an inbound TCP +>> connection from server port 993 to a high numbered (>50000) client port. +> This is generally caused by confused firewalls that terminate a connection +> too quickly and then deny the final TCP ack from the server. Check to see +> if these denied packets happen immediately after the end of a legitimate +> connection. + +Note as well that a NAT box that times out a session too quickly can do +this. An IMAP session in IDLE can stay open for up to 30 minutes without +any traffic, and the server can break the inactivity. + +Most NAT boxes are stupid and assume that only clients break inactivity. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23084.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23084.mbox:2,S new file mode 100644 index 00000000..1fa20781 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23084.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From guenther+imap at sendmail.com Sat Jul 23 07:18:03 2005 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] DELETE +In-Reply-To: <09f60ca2b6755b2ede231d31ee4ce55e@iki.fi> +References: <09f60ca2b6755b2ede231d31ee4ce55e@iki.fi> +Message-ID: <200507231418.j6NEI3MW043522@lab.smi.sendmail.com> + +Timo Sirainen writes: +>RFC [3501, section 6.3.4] says: +> +> It is permitted to delete a name that has inferior hierarchical +> names and does not have the \Noselect mailbox name attribute. In +> this case, all messages in that mailbox are removed, and the name +> will acquire the \Noselect mailbox name attribute. +> +>But is it really wanted that the mailbox still exists and has +>\Noselect? I'm guessing this should mean that when doing LIST "" %, it +>shows up as \Noselect since it has children, but LIST "" * shouldn't +>need to show the mailbox at all since it shows its children anyway? + +Correct. This is already corrected via an erratum. The RFC editor +keeps errata lists for RFCs; their list for RFC 3501 can be found at + http://www.rfc-editor.org/cgi-bin/errataSearch.pl?rfc=3501 + +However, that's slightly out of date; the current list can be snagged +from + ftp://ftp.cac.washington.edu/imap/rfc3501-errata + + +Mark: the rfc3502-errata file in that same directory has the same +text for old vs new. 1988 -> 1998? + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23093.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23093.mbox:2,S new file mode 100644 index 00000000..6b955b80 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23093.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu May 19 00:49:18 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] BINARY.SIZE for a multipart +In-Reply-To: <7B822F730F822147977ED5B684ACE490241504@xmb-sjc-21b.amer.cisco.com> +References: <7B822F730F822147977ED5B684ACE490241504@xmb-sjc-21b.amer.cisco.com> +Message-ID: + +In RFC 3516, the one problem I ran into was the meaning of BINARY.SIZE +for bodyparts that don't have an encoding, i.e. Content-Type: +multipary/*, message/rfc822 or message/external. + +Any opinions about the right BINARY.SIZE for such things? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095135.23102.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095135.23102.mbox:2,S new file mode 100644 index 00000000..be3318a5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095135.23102.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Apr 24 10:50:39 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:35 2018 +Subject: [Imap-protocol] Searching for a given address +Message-ID: + +Hi, + +I'm struggling a little with address searches. + +In IMAP, I can say + + a search from weber@example.com + +and find all the messages from Herrn Weber, whose address is +weber@example.com. As an extra added bonus, completely free of charge, +I also get all the messages from Frau Weber, whose address is +lieschen.weber@example.com.qa. Not desirable at the moment. + +I don't see any safe way to search for an exact address. The best I can +think of is 'from ', but that looks like it might +fail on some servers if the from field is just 'From: +weber@example.com'. + +Suggestions? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22756.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22756.mbox:2,S new file mode 100644 index 00000000..98bb5295 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22756.mbox:2,S @@ -0,0 +1,82 @@ +MBOX-Line: From mrc+imap at panda.com Sun Nov 27 08:34:40 2011 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:47 2018 +Subject: [Imap-protocol] [noob] fetch command with repeating + attributes? +In-Reply-To: +References: +Message-ID: + +On Sun, 27 Nov 2011, Petite Abeille wrote: +> Can the fetch command contain the same attribute multiple times? + +Yes. + +> For example, the following request , curtesy of dbmail test suite [1], +> sports the BODY.PEEK attribute twice, for two different header fields: +> C0000A UID FETCH 1:* (BODY.PEEK[HEADER.FIELDS (Subject)] BODY.PEEK[HEADER.FIELDS (Message-Id)] ENVELOPE RFC822.SIZE UID FLAGS INTERNALDATE) +> Is such fetch request compliant? + +Yes. + +> Can the fetch attributes be repeated multiple times? + +Yes, but that is not a repeated fetch attribute. + +BODY[HEADER.FIELDS (Subject)] and BODY.PEEK[HEADER.FIELDS (Message-Id)] +are two entirely different FETCH attributes. The stuff in the [] is part +of the fetch attribute, and thus makes the two different. By special +dispensation, ".PEEK" is not part of the attribute and does not appear in +the response. + +An example of a repeated fetch attribute is this pointless example: + tag FETCH 1 (UID RFC822.SIZE UID) + +In this case, UID is repeated. This is valid/compliant but pointless. The +server may respond by sending the UID twice, or it may send it just once; +either way satisfies the request. On the other hand, nothing prevents a +server from (pointlessly) sending UID twice. So, in the end, the effect is +identical to: + tag FETCH 1 (UID RFC822.SIZE) +even if some servers may be babble more + +Also, consider this pointless example: + tag fetch 1 (BODY.PEEK[HEADER.FIELDS (Subject)] BODY[HEADER.FIELDS (Message-Id)] + +The response and effect is identical to + tag fetch 1 (BODY[HEADER.FIELDS (Subject)] BODY[HEADER.FIELDS (Message-Id)] + +This is because the same attributes are fetched, and the second BODY +(without the .PEEK) causes the \Seen flag to be updated as if the first +.PEEK was not there. + +IMAP does not prevent pointless client commands; however the server is +supposed to behave sensibly. + +> If yes, what's the expected response? Two BODYs, one for each header? + +Yes. + +BODY[HEADER.FIELDS (Subject)] and BODY.PEEK[HEADER.FIELDS (Message-Id)] + +> One BODY with the two requested fields? Either? + +No. That would be a response with a different FETCH attribute. The server +must respond with the requested attributes. + +If the client requested Subject and Message-Id separately like that, it +wants them returned separately. If it wanted them together, it would have +requested them together: + tag fetch 1 (BODY[HEADER.FIELDS (Subject Message-Id)] + +In this case, the server MUST return attribute + BODY[HEADER.FIELDS (Subject Message-Id)] +with a single string containing both. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22807.mbox:2,S new file mode 100644 index 00000000..2672151d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22807.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc+imap at panda.com Sat Jun 12 00:29:08 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C1330B7.9030106@gulbrandsen.priv.no> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + + <4C12CACB.7030205@aol.com> + + + <4C1330B7.9030106@gulbrandsen.priv.no> +Message-ID: + +On Sat, 12 Jun 2010, Arnt Gulbrandsen wrote: +> Aside: They might understand it better if the RFC were to mention +> phrases like "cache" and "cache fill protocol" here and there, and talk +> more about such usage of the protocol, and less about other usage. + +Sigh. Once upon a time, the IMAP specification did. + +That text triggered a major flame war. It was the worst in IMAP's history +and nearly derailed IMAP completely. A certain individual (long vanished +from the scene) was utterly enraged by the idea of a cache. + +The only way to stop it was to remove all reference to the cache and cache +fill from the specification. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22883.mbox:2,S new file mode 100644 index 00000000..a6a1c406 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22883.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From janssen at parc.com Mon Jan 28 11:45:29 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Thunderbird confused by post-authenticate + CAPABILITY change? +Message-ID: <08Jan28.114539pst."58696"@synergy1.parc.xerox.com> + +Interesting problem. I'm sending three distinct sets of CAPABILITY +now. Before the channel is encrypted, I send + +(1) IMAP4rev1 LOGINDISABLED STARTTLS + +After the channel is encrypted, but before any authentication, I send + +(2) IMAP4rev1 SASL-IR AUTH=PLAIN + +By the way, is this legal? The server still supports STARTTLS, but it +will fail if used on an already-encrypted channel, so I figured I'd +omit it. + +Anyway, after authentication, I send + +(3) IMAP4rev1 NAMESPACE UIDPLUS IDLE + +on the theory that an unauthorized client doesn't need to know that. +But I noticed that Thunderbird is never taking advantage of IDLE, even +though I've got the T-bird config box for it checked. + +If I change (2) to be + +(4) IMAP4rev1 SASL-IR AUTH=PLAIN NAMESPACE UIDPLUS IDLE + +Thunderbird suddenly starts using IDLE. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22893.mbox:2,S new file mode 100644 index 00000000..55cb3120 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22893.mbox:2,S @@ -0,0 +1,118 @@ +MBOX-Line: From dave at cridland.net Tue Oct 30 03:22:41 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + <47266943.2010409@psaux.com> + +Message-ID: <1040.1193739761.374080@peirce.dave.cridland.net> + +On Mon Oct 29 23:34:29 2007, Mark Crispin wrote: +> On Mon, 29 Oct 2007, Tim Showalter wrote: +>> I withdraw the comment. (I made it based on something I read on +>> this list some number of years ago, and I've never read the IMAP3 +>> document. Good thing, too. :-) ) +> +> It's instructive to read the IMAP3 document (RFC 1203), if only to +> see a dead-end branch in IMAP's evolution. +> +> RFC 1176 was a very minor update from RFC 1064, basically adding +> the FIND command (a nascent form of LIST). Much of RFC 1203 is a +> strong reaction against the IMAP architecture (complete with a +> diatribe to the effect that IMAP will die unless IMAP3 is adopted), +> especially the unsolicited data model (e.g., it tags FETCH +> responses). +> +> +I think that tagged intermediate responses can be useful, as it +happens, but not for FETCH - this does, as you say, break the data +model. They'd have been useful for SEARCH, SORT and THREAD, though. + +>> What's the real difference between having strictly-increasing +>> client capabilities, or revising the base spec? In both cases, +>> we're bundling some arbitrary set of protocol changes and +>> requiring client/server support for all of them. +> +> I think that there is much more opposition to adding to a base +> specification than to a service level. A new base specification +> purported kills the previous one; whereas a service level might get +> ignored at a particular point. +> +> Sometimes how you call things does matter! +> +> +Calling things a Profile can work too. + + +>> Thinking about this a little more, I think there's an argument to +>> be made for limiting capabilities and trying to decrease the +>> number of different available capability sets, but we probably +>> also need some amount of forking near the cutting-edge of protocol. +> +> I agree completely! +> +> +As do I, but I'm wary of discarding extensions as well. Extensions +can be developed incrementally, whereas profiles, service levels, etc +take a lot more effort. + + +>> But if UTF8 is the first one, and it's successful and widely +>> adopted, whatever the next wave is, should require UTF8. +> +> I think that upgrading IMAP for UTF-8 is essential, and was +> foreseen with the publication of RFC 2060. +> +> +Mostly foreseen - certainly the lack of any encoding for keywords has +bitten us. Otherwise, we have a relatively clear upgrade path, and +EAI has taken advantage of some of this. + + +>> But I'm very concerned about the complexity here. It's apparently +>> hard to implement correct IMAP clients and servers now. +> +> I agree completely! +> +> +I don't think it's hard to implement a client correctly; although I +do think it'd hard to take full advantage of the protocol. But this +is largely a result of the lack of design documentation in the later +IMAP specifications. Reading the earlier ones, whilst they're not as +polished as the later specifications, was very useful to me. (In +particular, the unsolicited data model is not adequately explained in +RFC3501, but is better explained in RFC1176 and RFC1064 - the fourth +paragraph of RFC1064's "The Protocol" section ought to be required +reading.). + + +>> I'm not at all convinced of the wisdom of any of these approaches, +>> but I am enjoying the discussion. +> +> I think that we are all groping towards something that will address +> the problem without causing the Law of Unintended Consequences to +> come down hard upon us... ;-) + +Certainly anything we do requires a significant amount of thought. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22911.mbox:2,S new file mode 100644 index 00000000..1ac4550f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22911.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Mon Jun 25 09:37:12 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: <1182787190.3768.198.camel@hurina> +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> +Message-ID: <1182789432.3768.205.camel@hurina> + +On Mon, 2007-06-25 at 18:59 +0300, Timo Sirainen wrote: +> > Let me emphasize this: only ONE namespace is listed in a LIST command +> > command. Namespaces are NOT the same as root level names. By defining a +> > separate namespace you declare those names to be OUTSIDE of the space +> > listed in other namespaces!!! +> +> I've understood that many commonly used clients ignore namespaces and +> only show what is visible with LIST "" *, so I'd want to keep it +> possible to list contents of all namespaces with it. + +Another question about weird namespace configurations: + +* NAMESPACE (("#mbox/" "/") ("#maildir." ".")) NIL NIL + +If LIST "" % returns nothing, should LIST "" "" return something? Or +should some namespace always be assigned visible to root so LIST "" % +works? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22914.mbox:2,S new file mode 100644 index 00000000..6805114a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22914.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu May 24 10:44:41 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Re: FLAGS response +In-Reply-To: +References: <20070524012401.GA30894@penne.toroid.org> + <20070524033850.GA31634@penne.toroid.org> + + <1179984406.32181.1730.camel@hurina> + + <1179992121.32181.1744.camel@hurina> + + + <1180025526.32181.1812.camel@hurina> + + +Message-ID: + +On Thu, 24 May 2007, DINH Vi?t Ho? wrote: +> What's the problem with ANNOTATE extension ? + +ANNOTATE suffered a similar fate to ACAP. + +It went off the deep end early on. Years of effort were expended in an +attempt to salvage it, culminating with everybody throwing in the towel +and it being published as Experimental instead of Standards-track. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22920.mbox:2,S new file mode 100644 index 00000000..b44ec7eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22920.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tss at iki.fi Sun Mar 11 23:14:24 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: <07Mar11.195659pst."57996"@synergy1.parc.xerox.com> +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> + + <1173661726.17598.331.camel@hurina> + <07Mar11.195659pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On 12.3.2007, at 5.56, Bill Janssen wrote: + +> Thanks, that's a nice list. +> +>> One workaround that there used to be was that several clients (kmail, +>> Thunderbird at least) didn't like if UID field wasn't the first +>> field in +>> FETCH replies. After a while I gave up and just put it back to begin +>> first. +> +> Didn't like it, how? I'm sending it last (on a UID FETCH if it's not +> explicitly specified), and Thunderbird seems happy. I send the +> specified +> items on a FETCH in the order they were requested. + +Hmm. It probably was enough if the UID was in the "* FETCH" line. At +least if the message body was before UID it didn't like that. And by +not liking I mean it somehow mixed it up with previous message, +causing at least the message's size field to be wrong. + +Looks like I'm now sending the items also in the requested order, +except message headers and body come last always. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22957.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22957.mbox:2,S new file mode 100644 index 00000000..ae628653 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22957.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Dec 31 12:12:58 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <7649676B-5A1C-42A7-88D2-CC86B01F81CB@iki.fi> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + + <7649676B-5A1C-42A7-88D2-CC86B01F81CB@iki.fi> +Message-ID: + +Timo Sirainen writes: +> On 15.9.2006, at 16.53, Arnt Gulbrandsen wrote: +>>>> IMO, it depends on the precise text. Requiring that all clients +>>>> offer the server an opportunity to send EXPUNGE every so often +>>>> can't be all that bad, but how often? "EXPUNGE may not take +>>>> effect completely until half an hour after the tagged OK" sounds +>>>> overly long to me. "Clients must give the server the opportunity +>>>> to send EXPUNGE at two-minute intervals or more often" sounds +>>>> much too short. Ten minutes sounds both too short and too long. +>>>> All partly subjective of course. +>>> +>>> In my opinion, the minimum period should be between 5 and 30 +>>> minutes. NAT has pretty much made it non-viable to go idle for +>>> more than 5 minutes. +>> +>> Then five minutes. +> +> 5 minutes sounds pretty short to me. Have you tried adding such a +> check yet and see what it does to clients? I was thinking something +> like 15-30 minutes. + +I think I'll follow rather than lead on this one. Now that I have the +loopbreaker it's not much of a problem from my viewpoint. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22974.mbox:2,S new file mode 100644 index 00000000..f5a09971 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22974.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From ams at oryx.com Thu Sep 14 00:53:30 2006 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: what if / were my server's "home directory"? +In-Reply-To: +References: <20060914060431.GA15997@penne.toroid.org> + +Message-ID: <20060914075330.GA17958@penne.toroid.org> + +At 2006-09-13 23:15:04 -0700, mrc@CAC.Washington.EDU wrote: +> +> I don't think that this a particularly good idea, especially given +> that there are so many clients that do a * wildcard lists. + +Indeed. That's the only thing I could think of. +Can you see any other potential problems? + +(The whole idea makes me slightly uncomfortable, which is why I'm +posting to ask if anyone can think of objections to it.) + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.22999.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.22999.mbox:2,S new file mode 100644 index 00000000..cc84c447 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.22999.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Jun 30 13:46:32 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] IMAP disconnection +In-Reply-To: <44A58633.6000601@gentoo.org> +References: + + + + <44A58633.6000601@gentoo.org> +Message-ID: + +On Fri, 30 Jun 2006, Jan Kundrt wrote: +> The server might have forked and the original process exited to avoid +> such behavior, but that would be rather dumb, of course :) + +The process that is using the socket gets the kill. So the server has to +fork, the fork has to somehow stay in communication with its parent but +not get hit by the kill, and yet still have control over the necessary +resources to clean up... And of course this has to be verified against +the OS that does the kill. + +All just so some poorly-written client can avoid obeying the IMAP +protocol. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23014.mbox:2,S new file mode 100644 index 00000000..8d03e406 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23014.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Apr 10 08:40:57 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: <443A7A2D.2070708@consilient.com> +References: <443A7A2D.2070708@consilient.com> +Message-ID: + +In the case of + a004 LIST "" Inbox +the case-insensitivity of INBOX overrides everything else. + +However, in the case of + a004 LIST "" In%B% +it is arguable given the wording in RFC 3501 that this could be +interpreted as not matching INBOX. However, I think that an +implementation should. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23031.mbox:2,S new file mode 100644 index 00000000..c252d691 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23031.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Fri Mar 31 07:45:32 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +Message-ID: <1143819932.8744.163.camel@localhost.localdomain> + +The "sort threads by their first message's date" behavior is bad because +new messages can't be easily noticed in the mailbox. So, there should be +some way to specify "sort thread by their latest message's received +date" (and date-header?). + +There has been talk about this before, but I guess no-one's done +anything about this? How about a new extension, eg. THREADEXT which +allows specifying the thread sorting in some way, eg: + +1 thread (references) (internaldate) us-ascii all + +Also another separate thing related to threads: Has anyone tried +optimizing the THREAD command in a way that after the initial threading, +the results would be stored somewhere and later when a new mail arrives, +the new thread list could be generated without having to rebuild +everything? + +I haven't thought about this much yet, but I was hoping to find out a +way where I could just store the final thread reply and insert the new +mail in there with a single scan through all the messages in the mailbox +(looking at their message-id, in-reply-to, references and subject +headers but without actually having to store most of them to memory). + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23051.mbox:2,S new file mode 100644 index 00000000..2ce160aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23051.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Nov 3 03:53:19 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] username/password +In-Reply-To: <8521.1131009620.555949@peirce.dave.cridland.net> +References: <436988D9.8040106@fastmail.co.uk> + + <43699192.2040701@fastmail.co.uk> + + + <8521.1131009620.555949@peirce.dave.cridland.net> +Message-ID: + +Dave Cridland writes: +> On Thu Nov 3 07:33:12 2005, Harald Hannelius wrote: +>> The reason for this radical decision to decrease security is mobile +>> phones. It's quite expensive to do SSL on a mobile phone +>> (batterywise). +> +> I keep hearing this rumour, but it's confusing on two counts: + +It makes perfect sense if you think HTTP, not IMAP. + +Think about short-lived HTTP-like connections and imperfect session +caching. Lots of connections being opened, lots of number crunching and +transmission for each connection establishment. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23059.mbox:2,S new file mode 100644 index 00000000..f93d0725 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23059.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Sep 7 09:01:31 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <5b93232d050907075812659c02@mail.google.com> +References: + <5b93232d050907075812659c02@mail.google.com> +Message-ID: + +On Wed, 7 Sep 2005, Rob Siemborski wrote: +> The second paragraph you quote could probably be more clearly stated +> with "SELECT or EXAMINE of any valid mailbox" or similar, which is how +> I find myself reading "another" in this case. + +That was the intended meaning. I admit that the case of selecting the +same mailbox was never considered. My server also always starts a new +session even on an extraneous SELECT. + +However, I do not think that we should require either behavior. I'm also +worried about declaring as "broken" servers which appear to comply now. +What's more, I'm thinking that the ambiguity is a feature, not a bug. + +Suppose a popular client appears that does repetitive unnecessary SELECTs +(maybe because its programmer doesn't understand selected state and thinks +that this is the only way to acquire mailbox metadata), and in defense the +server management decides to no-op extraneous SELECT other than pooting +out the metadata normally announced at SELECT time. This would have the +effect of breaking the behavior that extraneous SELECT clears the \Recent +flags; but if the ambiguity persists then a client can not count upon that +behavior. + +That point, I think, is important: clients should NOT use extraneous +SELECT to clear \Recent flags. If a client really wants that, it could +LOGOUT and start a new session (or use UNSELECT if that extension is +available). But it really should use different internal algorithms that +do not impact the server this way. + +My preference would be either to: + . leave the current wording as-is +or + . change it to an explicit statement that server behavior (and subsequent + state of \Recent flags) with extraneous SELECT is undefined and + implementation dependent. +That way, existing servers are not declared broken, and clients are put on +notice not to use this as a hack to clear \Recent flags. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23064.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23064.mbox:2,S new file mode 100644 index 00000000..297b42cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23064.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From imap at tlinx.org Mon Aug 8 12:11:03 2005 +To: imap-protocol@u.washington.edu +From: Linda Walsh +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Protocol Q: IMAP(s) svr (want tcp)-> IMAP client +In-Reply-To: +References: <42F6B7FD.2000408@tlinx.org> <8764uhgp3l.fsf@windlord.stanford.edu> + +Message-ID: <42F7AE47.7080403@tlinx.org> + +I'll check the session timeout -- I should have thought of that as my +"client" starts fetchmail in "poll" mode, and I believe that involves +not closing the connection. + +It's actually a regular HW firewall box, not NAT, but this is likely +the problem as the fw-box has "default TCP session timeoutssame problem +likely exists as TCP sessions are set with 'default' timeouts of 30 minutes. + +Thank you for pointing out the obvious likely problem. (*sigh*) + +Linda + +Mark Crispin wrote: + +> On Sun, 7 Aug 2005, Russ Allbery wrote: +> +>> Linda Walsh writes: +>> +>>> I notice (have for a long time) entries in my firewall' "denied" +>>> traffic +>>> log that my ISP's imap server is attempting to initiate an inbound TCP +>>> connection from server port 993 to a high numbered (>50000) client +>>> port. +>> +>> This is generally caused by confused firewalls that terminate a +>> connection +>> too quickly and then deny the final TCP ack from the server. Check +>> to see +>> if these denied packets happen immediately after the end of a legitimate +>> connection. +> +> +> Note as well that a NAT box that times out a session too quickly can +> do this. An IMAP session in IDLE can stay open for up to 30 minutes +> without any traffic, and the server can break the inactivity. +> +> Most NAT boxes are stupid and assume that only clients break inactivity. +> +> -- Mark -- +> +> http://staff.washington.edu/mrc +> Science does not emerge from voting, party politics, or public debate. +> Si vis pacem, para bellum. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23093.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23093.mbox:2,S new file mode 100644 index 00000000..fd06d439 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23093.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From dave at cridland.net Thu May 19 02:14:35 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] BINARY.SIZE for a multipart +In-Reply-To: +References: <7B822F730F822147977ED5B684ACE490241504@xmb-sjc-21b.amer.cisco.com> + +Message-ID: <10845.1116494075.615509@peirce.gestalt.entity.net> + +On Thu May 19 08:49:18 2005, Arnt Gulbrandsen wrote: +> In RFC 3516, the one problem I ran into was the meaning of +> BINARY.SIZE for bodyparts that don't have an encoding, i.e. +> Content-Type: multipary/*, message/rfc822 or message/external. +> +> Any opinions about the right BINARY.SIZE for such things? + +I have two: + +1) The size of the decoded part. + +Given that there *is* an encoding for multipart/* etc - it's mandated +to always be 7bit, which being the default, doesn't need to be +specified - then the same algorithm applies, and effectively reduces +to the same as BODY.SIZE would be if it existed. + +2) The server *also* decodes the subparts, producing a multipart, +message, etc that contains binary, 7bit, or 8bit encoded subparts +only, and then presents *that* size to the client. + +My general feeling is that (1) is correct, but the converse of (2) - +that RFC822.SIZE needs to encode any parts to avoid a NIL octet - is +probably true as well. + +I don't think that it's the IMAP server's job, ever, to handle +message/external for the client, though. As far as I can tell, the +current trend for message/external is to effectively ignore it +anyway, though. + +However, I'm perfectly willing to have my mind changed on this - I +currently don't use BINARY.SIZE at all, only BINARY itself, and not +on multipart or message type message parts anyway. + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23102.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23102.mbox:2,S new file mode 100644 index 00000000..21271277 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23102.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Sun Apr 24 11:01:51 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:35 2018 +Subject: [Imap-protocol] Searching for a given address +In-Reply-To: +References: +Message-ID: + +Searches were always intended to be more or less fuzzy; that is, searching +for "weber" as opposed to "weber@example.com". + +You are right that some servers, such as UW imapd, canonicalize search +addresses so that a search for "" will do what you +want. But the specification does not require this. + +If you really care for an exact match, you will have to get the envelopes +of the messages that were searched and exclude those that do not match +your criteria. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095136.23105.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095136.23105.mbox:2,S new file mode 100644 index 00000000..19b104e7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095136.23105.mbox:2,S @@ -0,0 +1,11 @@ +MBOX-Line: From hugh at u.washington.edu Tue Mar 29 14:38:55 2005 +To: imap-protocol@u.washington.edu +From: Hugh Sheets +Date: Fri Jun 8 12:34:35 2018 +Subject: [Imap-protocol] test post +Message-ID: + +test post by sending to imap-protocol@u.washington.edu + +Hugh + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.22807.mbox:2,S new file mode 100644 index 00000000..42b931ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.22807.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Sat Jun 12 00:58:13 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + +Message-ID: <201006120958.13649.witold.krecicki@firma.o2.pl> + +On Saturday 12 of June 2010 07:53:55 Mark Crispin wrote: +> On Fri, 11 Jun 2010, Witold Kr?cicki wrote: +> >> IMAP has no guaranteed means of removing a message. Study the semantics +> >> of STORE and EXPUNGE carefully. MOVE, on the other hand, requires that +> >> guarantee; and does not have the semantics of STORE and EXPUNGE. +> > +> > I really don't get the point, please be more specific. +> +> Neither STORE, nor EXPUNGE, promise that they will store or expunge +> anything. They do, or not do, whatever seems fit according to their +> discretion. Generally, what they decide to more corresponds to what the +> user intended. But there's no promises. +> +> Because of this, both STORE and EXPUNGE send back untagged responses +> stating what they actually did. The client uses this to update its cached +> state of what is on the server. If it were not for these untagged +> responses, the client wouldn't have a clue as to what is going on. +> +> There are certain circumstances, such as when closing a mailbox in a +> client that does not cache offline state, that the client does not care +> what the server did beyond a vague presumption that that the server did +> more or less reasonably was what the user wanted. For this reason, there +> STORE's .SILENT form, and the CLOSE command, exist. +> +> A successful MOVE, on the other hand, is an unconditional guarantee that +> all the requested message(s) were moved. But it it? Similarly, a failed +> MOVE ought to be an unconditional guarantee that none of the requested +> messages(s) were moved. But, once again, is it? +> +> What happens when there is an error in the middle of the move? Is there a +> state in which some messages were moved and others were not? Is there a +> state in which some messages appear in both places (so it was a copy after +> all)? Is there a state in which some messages vanished completely? +> +> The only way that you can prevent all of these states is with a +> simultaneous commit in which a failure of either side (remove from source, +> insert in destination) completely undoes everything. Locking by itself +> isn't good enough; locking only prevents external races. You still have +> a chicken-and-egg situation in which neither side can safely commit +> without confirmation that the other side has committed. +> +> There are ways to do it. But these are not simple nor commonly +> understood. If I talk about this stuff with most programmers their eyes +> glaze over. +> +> Not even the (much simpler) synchronization timing requirements of IMAP +> are well-implemented. Timo's server and my Panda server are the only ones +> that do it correctly in all circumstances (I'm hoping to add my new server +> to the list). +> +> So let's say that we punt and say that an error is an error and we'll +> break the all-of-nothing guarantee of IMAP. +This guarantee is a myth that is not working in eg. Maildirs. +The same problems that appear with COPY or EXPUNGE in those critical +situations but nobody is thinking about removing COPY or EXPUNGE from the +protocol. + +This is an option so if you cannot implement it properly - don't. If you can - +why not? +And about uncertainity: + + The EXPUNGE command permanently removes all messages that have the + \Deleted flag set from the currently selected mailbox. Before + returning an OK to the client, an untagged EXPUNGE response is + sent for each message that is removed. + +What if the server deletes 3 out of 10 messages and then is struck by a +filesystem failure (cannot delete remaining 7, cannot undelete of the first 3)? +This situation is (formally) not covered in the protocol, server cannot send +untagged EXPUNGE responses for those 3 messages (because then it would have to +send OK) and it cannot send OK because EXPUNGE after a success removes ALL +messages with \Deleted flags... It should send NO but then the client would +think that no messages were deleted permanently... + + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.22883.mbox:2,S new file mode 100644 index 00000000..f23cc1c9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.22883.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From JohnD at cciu.org Wed Jan 30 22:13:51 2008 +To: imap-protocol@u.washington.edu +From: John DeMillion +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent message? +Message-ID: + + +I'm stuck between two interpretations of the function of APPEND by +different vendors, and my reading of RFC 3501 doesn't make it extremely +clear which vendor is correct, so I thought I'd bring it to this list +for an opinion/clarification. + +* The first vendor (the developer of my groupware system) maintains +that the APPEND command should create an *unsent* message in the user's +mailbox. This message has all of the information present, and appears +to the user as an unsent message, allowing them to use a "Send" action +in the client interface. + +* The second vendor (developer of a mobile device email/sync suite) +maintains that the APPEND command should create a *sent* message, just +as if the message had been sent using the first vendor's normal +groupware client. This second vendor uses APPEND to create a message +in a "Mail Sent" folder, representing in the main groupware system all +mail that has been sent from the mobile device. They expect that +APPENDed messages will be as immutable as any other sent messages would +be: they are a record of already-sent mail, not an unsent message that +could (accidentally or purposefully) be sent a second time. + +In my research, I've found conflicting interpretations of APPEND, with +some saying that an APPEND creates an unsent message that another +process is then free to automatically send, while others reference +APPEND as a way to migrate sent email from one system to another, +obviously implying that the final message will appear to have already +been sent. + +Is this something that the IMAP protocol can be expected to define, or +has it been purposefully left open to interpretation, and this kind of +disagreement between vendors is thus expected? + +I very much appreciate any input and clarification that the list +members might be able to offer. + +Thanks, +John DeMillion +Director of Information Technology +Chester County Intermediate Unit + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.22893.mbox:2,S new file mode 100644 index 00000000..8c5ffce4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.22893.mbox:2,S @@ -0,0 +1,219 @@ +MBOX-Line: From dave at cridland.net Tue Oct 30 03:22:53 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + +Message-ID: <1040.1193739773.286509@peirce.dave.cridland.net> + +On Mon Oct 29 23:16:23 2007, Mark Crispin wrote: +> On Mon, 29 Oct 2007, Sarah Wilkin wrote: +>> Is there a single place that summarizes goals of future IMAP +>> proposals or extensions? I've seen several ideas come up on this +>> list; are these captured publicly anywhere? I don't see anything +>> on http://www.imap.org/, and the ietf-imapext list looks a bit too +>> specific. +> +> IMHO, most of the people who've done IMAP over the years would +> rather curtail further IMAP extensions. IMAP has too many +> extensions, and although every one has a passionate set of +> defenders the fact is that most clients and servers implement few +> (if any) of these. Then there are the servers which misimplement +> extensions (such as Courier doing so for SORT and THREAD). +> +> +I disagree - but I do think that many people working on and with IMAP +would rather see more profiles, so that fewer code-paths were +involved. The problem with so many extensions is not the number of +extensions per se, but the number of combinations of extensions. + +> (0) Needed. Now. Should drop everything else to address: +> +> IMAP internationalization +> UTF-8 mailbox names +> UTF-8 flag names +> +> +I can agree with this list. However, this is, oddly, the list were +we've made least progress. IMHO, two of these are almost completely +unaddressed. + + +> (1) Should go into any major revision (e.g., IMAP5) of the base +> specification, either because it is essential or is "low-hanging +> fruit" that fixes an obvious deficiency: +> +> rfc5051.txt i;unicode-casemap comparator +> rfc2177.txt IDLE +> rfc3502.txt MULTIAPPEND +> rfc4959.txt SASL-IR +> rfc4315.txt UIDPLUS +> +> +I would add NAMESPACE here, and remove MULTIAPPEND. I'm not convinced +of the utility of MULTIAPPEND - my client supports it, but I've found +I never use it. It's great if you're wanting to move large numbers of +messages between servers on very high latency links, but why would +you want to do this? + + +> (2) Nice to have, not strictly necessary, but for the most part +> low-hanging fruit: +> +> rfc3516.txt BINARY +> rfc3348.txt CHILDREN +> rfc4731.txt ESEARCH +> rfc2088.txt LITERAL+ +> rfc3691.txt UNSELECT +> +> +BINARY isn't particularly low-hanging - decoding on FETCH is easy, +but handling BINARY APPEND is not. + + +> (3) Nice to have, but sometimes misimplemented, and so may not make +> the cut: +> +> rfc2342.txt NAMESPACE +> SORT/THREAD (in RFC Editor queue) +> +> +I've found SORT and THREAD most often implemented in web-based +clients (in particular THREAD), rather than desktop clients. The +problem is that either the desktop client runs with a complete cache, +so it can do it itself (and often in rather more complete ways than +the extension provides), or else it's running online, typically in +low bandwidth, and neither extension scales terribly well. + + +> (4) Ideas that never really got off the ground for various reasons +> and are likely to fade into obscurity (sorry...): +> +> rfc4314.txt ACL + +We (Isode) implemented a read-only ACL (ie, we never grant the "a" +right), in order to provide several mainstream clients, including +Thunderbird, with the "sharing" information which the clients like to +display to users. + +FWIW, I know of only two clients which allow read-write access to +ACLs, and only one that does it properly. + + +> rfc4551.txt CONDSTORE + +I don't think this one is going away. This and QRESYNC are +surprisingly well implemented, given their complexity. I already know +of one wholly independent client implementation of QRESYNC, and it's +seen by the author as critical. + + +> rfc2971.txt ID + +One of those things that nobody seems likely to implement, on the +face of it. I'd agree that it'd never make the grade for inclusion +into a base specification, although Id also note that it's +implemented quite widely. + + +> rfc2221.txt LOGIN-REFERRALS +> rfc2193.txt MAILBOX-REFERRALS + +Both these are broken in design, and painful to implement. I do the +latter, and hate it with a passion - most servers which support it +also support na?ve clients via a proxying mechanism, which is not +only more efficient, but also far simpler to implement, thus +penalizing people who've taken the time to do things right, in effect. + + +> rfc2087.txt QUOTA +> +> +Weird. Alexey and I have repeatedly tried to design something +equivalent but better, but it is not terribly easy. + +On of the hardest thigs with QUOTA is the notion of QUOTAROOT - it's +relatively obvious that it's needed, but it's terribly difficult for +clients to use. In particular, it's unknown to a client whether - +when faced with a mailbox that's threatening to be over quota - +creating a new mailbox elsewhere will still be within the same quota +or not. + +Then there's the minor point that none of the quota counters are +standardized at all. + + +> (5) May become mandatory if IMAP on mobile devices takes off (as +> opposed to being killed), otherwise doomed to category (4): +> +> rfc4469.txt CATENATE +> rfc4978.txt COMPRESS + +Actually, this is a short-term thing. I doubt this will take off, in +the long term. + + +> rfc4467.txt URLAUTH +> convert +> +> +FWIW, none of these have much interest from the client developers I +talk to. They're much more interested in IDLE/NOTIFY, +CONDSTORE/QRESYNC, and CONTEXT. + + +> (6) Much-discussed ideas that I don't see going anywhere (sorry...) +> but category (4) if they make it to publication: +> +> annotations +> LIST extensions +> +> +Annotations would be great, but I can't see interest from server +developers, currently. A mechanism for providing highly stable +addressing of messages would serve almost as well, since then +annotations could be held within an external server, as well as being +able to glue things like calendaring in as well. + +LIST extensions are a mere cleanup for LIST/LSUB, so I'd move them up +- in fact, I'd say we should use these as the basis for UTF-8 +conversion, and deprecate the unextended LIST/LSUB. + + +> (7) Everything else bandied about on IMAPEXT, a group that should +> have dissolved years ago... +> +> +You're getting perilously close to the suggestion that we've now +invented everything that can possibly be useful. I think there's lots +more to be done, and I'm not even sure of the sphere of that work. + +I think some of this work may involve message organization (which is +a big enough sphere in and of itself), some will involve +reintegration of the plurality of communications methods and support +we have (BURL/URLAUTH is a step in this direction, as would the +annotation-like replacement I mention above). There's plenty more to +be getting on with, I'm sure. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.22911.mbox:2,S new file mode 100644 index 00000000..6b483cac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.22911.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Jun 25 09:45:01 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: <1182787190.3768.198.camel@hurina> +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> +Message-ID: + +On Mon, 25 Jun 2007, Timo Sirainen wrote: +> I find this # thing also a bit weird. The client can't know about those +> namespaces without NAMESPACE command, and if it does then there's really +> no need for # because it can find out the exact prefixes anyway. So why +> should the client do anything differently if there's #? + +Without a breakout mechanism such as #, then you have the ambiguity +problem that you reported in your earlier message. How do you know that a +name is in one namespace as opposed to some other one? + +More importantly, what happens if the different namespaces have different +hierarchy semantics; different delimiters, different ways of expressing +root, etc.? Maybe a particular namespace doesn't have hierarchy at all. + +Netnews vs. the UNIX filesystem is an obvious example of two completely +incompatible hierarchies. + +I see no benefit to implementing an incompatible means of doing multiple +namespaces, and HUGE demerits. Anyone who finds themselves negatively +impacted will put the blame directly on your server. Don't do it. + +Either have one namespace, with a single set of hierarchy semantics +(meaning only ONE hierarchy delimiter) throughout, or do namespaces +compatibly, following the namespace convention. + +> I've understood that many commonly used clients ignore namespaces and +> only show what is visible with LIST "" *, so I'd want to keep it +> possible to list contents of all namespaces with it. + +Does your server list all other users' mailboxes with that command (since +after all a user may have a public access mailbox)? Why not? + +Does your server do an "ls -R /" for that command? Why not? + +Assuming that the user has a stupid client that does LIST "" * (a very bad +thing to do), why do you think that she wants to download ten thousand +newsgroup names each and every time the client is run? Especially a user +on a mobile device over EDGE. + +There is always a line. Drawing the line is difficult. + +> Dovecot actually allows the admin to configure any kind of namespaces. +> I'm currently just wondering what kind of configurations I should +> prevent. + +I don't think that LIST "" * should show anything other than the user's +personal names. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.22914.mbox:2,S new file mode 100644 index 00000000..1b455923 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.22914.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mbarker at buni.org Sat May 26 04:07:53 2007 +To: imap-protocol@u.washington.edu +From: Michael Barker +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +Message-ID: <46581509.7050201@buni.org> + +Hi, + +I have a question regarding behaviour when multiple clients are +accessing the same mailbox, especially regarding expunge. What is the +appropriate behaviour in the following senario. + +C: A001 NOOP +S: * 3 EXISTS +S: * 3 RECENT +S: A001 OK NOOP completed +...Other client expunges message 3... +C: A002 FETCH 1:3 (FLAGS) +S: * 1 FETCH (FLAGS (RECENT)) +S: * 2 FETCH (FLAGS (RECENT)) +...What happens here? Do we simply not send information for message 3 +or send a NO response to indicate the message is no longer available? +S: A002 OK FETCH completed + +Does the behaviour change if the client sends a wildcard (FETCH 1:* ...) +instead of an explicit range. + +Regards, +Michael Barker. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.22920.mbox:2,S new file mode 100644 index 00000000..3081b2b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.22920.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 00:39:02 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] configuring pine to test an IMAP server? +Message-ID: <07Mar11.233904pst."57996"@synergy1.parc.xerox.com> + +> Try Pine/Alpine, since it uses almost all of IMAP's facilties and does so +> in advanced ways that many other IMAP clients do not. Pine/Alpine is the +> closest thing we have today to an IMAP server "acid test". Be sure to try +> searching, complex filters, and detaching of nested attachments. + +Alpine 0.83 cannot be coaxed to build on my system (Mac OS X 10.4.8 +with the latest code tools from Apple), so I downloaded the pine +binary distribution from the Pine site. Now I've spent 20 minutes +looking through the documentation trying to figure out how to +configure Pine to speak to an IMAP server on a particular host/port +combo. Unsuccessfully. Not in the FAQ. Not on the man page. + +Anyone want to disclose the answer? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.22974.mbox:2,S new file mode 100644 index 00000000..77e98b93 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.22974.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From dave at cridland.net Thu Sep 14 00:58:06 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] what if / were my server's "home directory"? +In-Reply-To: <20060914060431.GA15997@penne.toroid.org> +References: <20060914060431.GA15997@penne.toroid.org> +Message-ID: <8267.1158220687.012298@peirce.dave.cridland.net> + +On Thu Sep 14 07:04:31 2006, Abhijit Menon-Sen wrote: +> Our IMAP server uses a conventional mailbox hierarchy, where each +> user's +> "home directory" is /users/name (that is, an empty reference +> argument to +> LIST is intepreted as /users/name), and a user's personal mailboxes +> may +> be accessed either as foo or /users/name/foo. +> +> What would happen if we started interpreting an empty reference as +> "/"? +> +> That is, every mailbox would have just one name. /users/foo/bar, or +> /archives/imap-protocol, or whatever. Would clients be able to cope +> with not being able to "CREATE Drafts" or whatever? (I'm told that +> isn't possible with Cyrus anyway, so it should be OK, but I haven't +> tested.) +> +> Does anyone see a problem with such a layout? + +In terms of the protocol, no (although if you don't support +NAMESPACE, there shall be much gnashing of teeth). + +However, in practical terms, there are some clients (The variant of +Outlook for Pocket PC springs to mind, although that could be an +older version) that expect to be able to create a slew of unqualified +mailbox names "CREATE Drafts" included. These then exhibit Strange +And Fearsome behaviour when they can't. + +Although it's true that with Cyrus IMAP, the default is that the +user's own heirarchy begins at "INBOX.", I used to switch (with +altnamespace) so that user's mailboxes were at the top level as a +routine when installing servers, in order to ensure it worked with +these broken clients. + +The clients *are* against specification, of course, but the fix for +them is also within specification, so I'd generally lean toward at +least having an option such that they work. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.23014.mbox:2,S new file mode 100644 index 00000000..125a7b50 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.23014.mbox:2,S @@ -0,0 +1,84 @@ +MBOX-Line: From vladimir_butenko at stalker.com Mon Apr 10 10:32:38 2006 +To: imap-protocol@u.washington.edu +From: "Vladimir A. Butenko" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: <443A7A2D.2070708@consilient.com> +References: <443A7A2D.2070708@consilient.com> +Message-ID: + +Nevon, + +Yes, I think it's better to discuss these things here. + +The example I sent (with In%B%) was just illustrative. + +Please note that the LIST parameter is NOT a mailbox name, it's a pattern +(though the standard uses an informal language - "mailbox name with possible +wildcards"). + +The standard is pretty clear about these things: + + The special name INBOX is included in the output from LIST, if + INBOX is supported by this server for this user and if the + uppercase string "INBOX" matches the interpreted reference and + mailbox name arguments with wildcards as described above. + + +The "upper case string "INBOX"" does NOT match neither the "Inbox" pattern, +not the "In%b%" pattern. As a result, it will not be included into the list +issued by an IMAP server that follows the published standard. + +On the other hand, the name MAY be included in the output, if the server +uses case-insenstive names (as you could observe using a CommuniGate Pro +server running under Windows OS) - but in that case the INBOX name is +included as a regular mailbox name, not as a "special name INBOX" which is +included only under the conditions specified above. + + + +Sincerely, +Vladimir + + +On Mon, 10 Apr 2006 13:00:53 -0230 + Nevon Brake wrote: +> I am seeking clarification on the following paragraph that appears in the +>LIST command section of RFC3501: +> +> "The special name INBOX is included in the output from LIST, if INBOX is +>supported by this server for this user and if the uppercase string "INBOX" +>matches the interpreted reference and mailbox name arguments with wildcards +>as described above. The criteria for omitting INBOX is whether SELECT INBOX +>will return failure; it is not relevant whether the user's real INBOX +>resides on this or some other server." +> +> From this, can one conclude that a server implementation MAY not return +> the INBOX in a LIST such as: +> +> C: a004 LIST "" Inbox +> S: a004 OK LIST completed +> +> when it does return it in a LIST such as: +> +> C: a004 LIST "" INBOX +> S: * LIST (\Unmarked) "/" INBOX +> S: a004 OK LIST completed +> +> Secondly, take a scenario where there are three mailboxes: INBOX, INBOX1 +>and InBox1, and the client does a LIST: +> +> C: a004 LIST "" In%B% +> +> Assuming the implementation is case-sensitive, what must the server +>return? More importantly, can it NOT return the INBOX? I realize this +>example is a bit contrived, but it may help in the clarification. +> +> Thank you, +> +> Nevon +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.23031.mbox:2,S new file mode 100644 index 00000000..eea1b72b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.23031.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Mar 31 10:08:00 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: <1143819932.8744.163.camel@localhost.localdomain> +References: <1143819932.8744.163.camel@localhost.localdomain> +Message-ID: + +On Fri, 31 Mar 2006, Timo Sirainen wrote: +> The "sort threads by their first message's date" behavior is bad because +> new messages can't be easily noticed in the mailbox. + +My MUA has a way to take me to new messages regardless of how they are +ordered in the mailbox. That might be a useful feature for your MUA. + +> So, there should be +> some way to specify "sort thread by their latest message's received +> date" (and date-header?). +> There has been talk about this before, but I guess no-one's done +> anything about this? How about a new extension, eg. THREADEXT which +> allows specifying the thread sorting in some way + +The way to define a new threading algorithm is...to define a new threading +algorithm! There is no need for THREADEXT that adds suboptions to an +algorithm when you just just define a new THREAD=xxx. + +There is already a very nasty comment in Wikipedia about IMAP's complexity +(at least it now longer says "20 orders of magnitude more complex than +POP3"). I don't think that we should increase complexity by adding +sub-options to sub-options, which is effectively what adding options to +modify threading does. + +Put another way: if a way of threading is valuable enough, there is plenty +of room in the namespace to define a new algorithm. If it isn't valuable +enough to define a new algorithm, then that cost serves as a desirable +barrier to keep bloat out of the protocol. + +> Also another separate thing related to threads: Has anyone tried +> optimizing the THREAD command in a way that after the initial threading, +> the results would be stored somewhere and later when a new mail arrives, +> the new thread list could be generated without having to rebuild +> everything? + +People have tried to work out how to do insertion in THREAD results. It +is not a simple task. A single message can completely change the thread +results. It's not just one link tying together two threads; a message can +have references that tie together an unbounded number of links. + +In fact, THREAD was what shot down an insertion mechanism for SORT, when +it was pointed out that most users will thread rather than sort. + +> I haven't thought about this much yet, but I was hoping to find out a +> way where I could just store the final thread reply and insert the new +> mail in there with a single scan through all the messages in the mailbox +> (looking at their message-id, in-reply-to, references and subject +> headers but without actually having to store most of them to memory). + +The cost is not memory in the server. The cost is the network I/O cost of +transmitting the new thread results. + +If you have an insight on how to express alterations to a thread tree that +does not entail greater complexity that is saved, lots of people would be +delighted to hear it (myself included). + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.23051.mbox:2,S new file mode 100644 index 00000000..654cb5c1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.23051.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Nov 23 16:08:09 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] IMAP capability for maximum APPEND message size? +Message-ID: + +I am considering the addition of a trivial new capability to IMAP that +would advertise the maximum size of a message in APPEND (and probably also +CATENATE). This has the same purpose as the SIZE capability in SMTP. + +Currently, the only message size limit in IMAP is 4294967295 (2^32 - 1) +due to IMAP's use of unsigned 32-bit integers. Supporting that size is +troublesome due to +1 overflow problems. Many implementations have much +smaller limits, such as both for administrative and technical reasons +(many filesystems encounter problems after 2^31 - 1). + +Rather than have this be a secret, I propose a capability called +MAXAPPENDSIZE=nnn, where nnn is the size. + +I considered a somewhat more complex extension might advertise the +server's command line length. I think that we should stick with RFC 2683 +section 3.2.1.5, since a client which is armed with more detail is much +more likely to shoot itself in the foot. + +Comments? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.23059.mbox:2,S new file mode 100644 index 00000000..c1709a29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.23059.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From robsiemb at google.com Wed Sep 7 09:12:17 2005 +To: imap-protocol@u.washington.edu +From: Rob Siemborski +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: + <5b93232d050907075812659c02@mail.google.com> + +Message-ID: <5b93232d05090709125cea8c08@mail.google.com> + +On 9/7/05, Mark Crispin wrote: +> My preference would be either to: +> . leave the current wording as-is +> or +> . change it to an explicit statement that server behavior (and subsequent +> state of \Recent flags) with extraneous SELECT is undefined and +> implementation dependent. +> That way, existing servers are not declared broken, and clients are put on +> notice not to use this as a hack to clear \Recent flags. + +Offhand I prefer the second, since it clarifies exactly what is +expected, as opposed to leaving it up for interpretation. + +-Rob + +PS (is anyone else getting lots of bounces from amazon and +internet-drafts@ietf.org in this thread?) + +-- +Rob Siemborski | PGP:0x5CE32FCC | robsiemb@google.com +Software Engineer | | 650-623-6925 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.23064.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.23064.mbox:2,S new file mode 100644 index 00000000..c3373e42 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.23064.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From imap at tlinx.org Tue Aug 9 10:42:28 2005 +To: imap-protocol@u.washington.edu +From: Linda Walsh +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Protocol Q: IMAP(s) svr (want tcp)-> IMAP client +In-Reply-To: +References: <42F6B7FD.2000408@tlinx.org> <8764uhgp3l.fsf@windlord.stanford.edu> + +Message-ID: <42F8EB04.2030804@tlinx.org> + +It was connection breakage related. + +My statefull firewall hardware device defaulted to a max session time of +30 minutes so it apparently closed out the ability for some types +of return TCP communications. A bit weird, though, since it didn't +seem to block out receiving of emails. For now, I increased timeout +on imaps connections to 24 hours. Will see if I only get these +messages once a day now (may be reasonable), or if, at the end of +24 hours it will start logging the denial messages for some long +period. I might just have to set the IMAPS connections to not +timeout, as that is how fetchmail runs (current uptime of 87 days)... + +Thanks for the pointers to the obvious...:-) +Linda + +Mark Crispin wrote: + +> Note as well that a NAT box that times out a session too quickly can +> do this. An IMAP session in IDLE can stay open for up to 30 minutes +> without any traffic, and the server can break the inactivity. +> +> Most NAT boxes are stupid and assume that only clients break inactivity. +> +> -- Mark -- +> +> http://staff.washington.edu/mrc +> Science does not emerge from voting, party politics, or public debate. +> Si vis pacem, para bellum. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095137.23093.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095137.23093.mbox:2,S new file mode 100644 index 00000000..09f8f172 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095137.23093.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu May 19 05:37:46 2005 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] BINARY.SIZE for a multipart +In-Reply-To: <10845.1116494075.615509@peirce.gestalt.entity.net> +References: <7B822F730F822147977ED5B684ACE490241504@xmb-sjc-21b.amer.cisco.com> + + <10845.1116494075.615509@peirce.gestalt.entity.net> +Message-ID: <200505191237.j4JCbkjl020307@lab.smi.sendmail.com> + +Dave Cridland writes: +>On Thu May 19 08:49:18 2005, Arnt Gulbrandsen wrote: +>> In RFC 3516, the one problem I ran into was the meaning of +>> BINARY.SIZE for bodyparts that don't have an encoding, i.e. +>> Content-Type: multipary/*, message/rfc822 or message/external. +>> +>> Any opinions about the right BINARY.SIZE for such things? +> +>I have two: +> +>1) The size of the decoded part. +> +>Given that there *is* an encoding for multipart/* etc - it's mandated +>to always be 7bit, which being the default, doesn't need to be +>specified - then the same algorithm applies, and effectively reduces +>to the same as BODY.SIZE would be if it existed. + +Right. Well, almost: multipart/* types and some message subtypes may +use 8bit or binary. Still, the logic holds: treat them as you would any +part with an identity encoding: make BINARY[section] return the same as +BODY[section] and make BINARY.SIZE[section] return the size of those +items. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.22807.mbox:2,S new file mode 100644 index 00000000..9092f6e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.22807.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From stujenerin at aol.com Sat Jun 12 05:16:17 2010 +To: imap-protocol@u.washington.edu +From: Stu Brandt +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> <201006112113.56572.witold.krecicki@firma.o2.pl> <201006112352.05642.witold.krecicki@firma.o2.pl> + +Message-ID: <4C137A91.4030800@aol.com> + +Since the focus here seems to be on conveying the state following a +partially completed Move for those who can't implement an atomic move, +how about something like the following? + + Example: C: A003 MOVE 3000:3002 Trash + S: * 3000 EXPUNGE + S: * 3001 COPIED + S: A003 NO MOVE Incomplete + + +Avoiding a Move command because it can't be atomic for *some* +implementations simply shifts the burden of atomicity back to the client +since nearly all clients I've seen offer a Move action. I wonder how +many clients actually graciously handle a partially successful Copy + +Store/Expunge vs. how many just punt and shift the cleanup burden to the +user who has no clue why they now have copies of their messages in both +Inbox and . + +- Stuart + +Mark Crispin wrote: +> A successful MOVE, on the other hand, is an unconditional guarantee that +> all the requested message(s) were moved. But it it? Similarly, a failed +> MOVE ought to be an unconditional guarantee that none of the requested +> messages(s) were moved. But, once again, is it? +> +> What happens when there is an error in the middle of the move? Is +> there a +> state in which some messages were moved and others were not? Is there a +> state in which some messages appear in both places (so it was a copy +> after +> all)? Is there a state in which some messages vanished completely? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.22883.mbox:2,S new file mode 100644 index 00000000..9d465b0f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.22883.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From mrc at Washington.EDU Wed Jan 30 23:11:22 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: +Message-ID: + +The reason why RFC 3501 is silent on the topic of "unsent" vs. "sent" +messages is that that is a concept that, while perhaps extremely +meaningful to the two software packages in question, is utterly +meaningless in the context of the IMAP protocol. + +I invented the IMAP protocol, and wrote multiple implementations of IMAP. +Yet, in spite of having read your message multple times, I still have no +clear idea of what you mean by a "sent" message vs. an "unsent" message. +It's not a concept that exists in the Internet email framework. + +A message does not contain the necessary information to send a message. +Many novices are misled into thinking that the message header has delivery +data; it does not. It may indeed have a copy of some of the information +used to deliver the message, but note the words "copy" and "some". + +Nor is IMAP used to send messages. The Lemonade extensions to IMAP allow +data from a message in IMAP to be fetched as part of a message being sent; +but in no way is IMAP actually "sending" any message. + +All messages in IMAP are immutable. Message data may be fetched from an +IMAP message, and that data can be modified and uploaded via APPEND (and +CATENATE for a Lemonade-capable IMAP) -- but only into a newly-created +message which, once created, is immutable. Since the newly-created +message is a new instance, it may be different than the original message +(and, unless deleted and expunged, the original message remains as-is); +but it has no relationship to the original message. + +The only mutable aspect of the message is certain elements of its +metadata, specifically, the message flags. Now, a client may create a +message flag called "sent" or "unsent", but the meaning of that is +completely defined by the client and not by IMAP. For all IMAP knows, +"sent" may mean "stinking excrement, not tasty". Only the predefined +flags starting with "\" (such as \Deleted) have meaning to IMAP, as +opposed to being blobs that IMAP carries. + +As these non-predefined flags are completely client (or human) defined, it +is not surprising that two different software packages and/or human users +have different interpretations. It is would be pointless for me to argue +that "sent means stinking extrement, not tasty" and you to argue that it +means "record of already sent mail" -- from the point of IMAP, we're both +right. + +I don't know if this explanation makes sense to you or not. Hopefully +some other people can chime in with perhaps different explanations that +may ultimately make things clear. + +Regards, + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.22893.mbox:2,S new file mode 100644 index 00000000..09c04974 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.22893.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Oct 30 08:41:04 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <1040.1193739761.374080@peirce.dave.cridland.net> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + <47266943.2010409@psaux.com> + + <1040.1193739761.374080@peirce.dave.cridland.net> +Message-ID: + +On Tue, 30 Oct 2007, Dave Cridland wrote: +> I think that tagged intermediate responses can be useful, as it happens, but +> not for FETCH - this does, as you say, break the data model. They'd have been +> useful for SEARCH, SORT and THREAD, though. + +Yes; but only with a server that allows multiple of these in progress at a +time, and not as a tagged response (ESEARCH has the right idea). + +>> I think that upgrading IMAP for UTF-8 is essential, and was foreseen with +>> the publication of RFC 2060. +> Mostly foreseen - certainly the lack of any encoding for keywords has bitten +> us. Otherwise, we have a relatively clear upgrade path, and EAI has taken +> advantage of some of this. + +It is true that I never considered encoding for keywords; and of course +allowing does raise all the ambiguity issues brought about by Unicode. +However, done properly it shouldn't raise security issues. + +> I don't think it's hard to implement a client correctly; although I do think +> it'd hard to take full advantage of the protocol. But this is largely a +> result of the lack of design documentation in the later IMAP specifications. +> Reading the earlier ones, whilst they're not as polished as the later +> specifications, was very useful to me. (In particular, the unsolicited data +> model is not adequately explained in RFC3501, but is better explained in +> RFC1176 and RFC1064 - the fourth paragraph of RFC1064's "The Protocol" +> section ought to be required reading.). + +You can thank RFC 1203 for that. I took incredible abuse at that time +for explaining the unsolicited data mode. Deleting that text was the best +way to move forward. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.22911.mbox:2,S new file mode 100644 index 00000000..4f691816 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.22911.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Jun 25 09:49:11 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: <1182789432.3768.205.camel@hurina> +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> <1182789432.3768.205.camel@hurina> +Message-ID: + +On Mon, 25 Jun 2007, Timo Sirainen wrote: +> Another question about weird namespace configurations: +> * NAMESPACE (("#mbox/" "/") ("#maildir." ".")) NIL NIL +> +> If LIST "" % returns nothing, should LIST "" "" return something? Or +> should some namespace always be assigned visible to root so LIST "" % +> works? + +Since the empty namespace is the default namespace, LIST "" "" should +return something. INBOX is part of the default namespace, although it has +special semantics (in particular, case-independency). + +In your example, I see not particular benefit to having both #mbox/ and +#maildir. . One or the other should be the default namespace. Actually, +AFAICT, both types of names can be in the default namespace as long as you +agree to use / as the hierarchy delimiter for maildir names; presumably +these names correspond to UNIX filesystem objects and not something else. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.22914.mbox:2,S new file mode 100644 index 00000000..7df7590f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.22914.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From tss at iki.fi Sat May 26 05:30:02 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +In-Reply-To: <46581509.7050201@buni.org> +References: <46581509.7050201@buni.org> +Message-ID: <1180182602.32181.1919.camel@hurina> + +On Sat, 2007-05-26 at 12:07 +0100, Michael Barker wrote: +> I have a question regarding behaviour when multiple clients are +> accessing the same mailbox, especially regarding expunge. + +This is discussed in RFC 2180. Summing up your possibilities: + +1. Keep the message around until there are no sessions that see it. This +is the preferred behavior. + +2. Give some dummy replies for the message. Such as empty flags, and +other fields being NILs or whatever is legal for the field. The downside +to this is that it violates the IMAP protocol if the client had already +asked something about this message. + +3. Don't return the FETCH reply for the message at all and return a +tagged NO reply. Doing this makes some clients ask the same message +range over and over again infinitely. This could be avoided also: +http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-September/000281.html + +4. Disconnect the client anytime you can't handle the request. I used to +do this but it was annoying when it happened. + +5. Don't allow EXPUNGE until there's only session. I think this is the +worst of the possibilities. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.22920.mbox:2,S new file mode 100644 index 00000000..a281cfd7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.22920.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Mar 12 00:52:11 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Re: configuring pine to test an IMAP server? +In-Reply-To: <07Mar11.233904pst."57996"@synergy1.parc.xerox.com> +References: <07Mar11.233904pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 12 Mar 2007, Bill Janssen wrote: +> Alpine 0.83 cannot be coaxed to build on my system (Mac OS X 10.4.8 +> with the latest code tools from Apple), + +I don't understand why, since we build Alpine all the time on Mac OS X +10.4.8. + +> so I downloaded the pine +> binary distribution from the Pine site. Now I've spent 20 minutes +> looking through the documentation trying to figure out how to +> configure Pine to speak to an IMAP server on a particular host/port +> combo. Unsuccessfully. Not in the FAQ. Not on the man page. +> Anyone want to disclose the answer? + +To change it the default mailbox that is opened, from the Main Menu, do +"S" (Setup) then "C" (Configure). Scroll down to inbox-path. + +To see what you can put in the inbox-path, from the Main Menu, do "?" then +select Folders, then Explanation of Valid Folder Names. + +You probably want something like: + inbox-path = {myserver.example.com:1234}INBOX + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.22974.mbox:2,S new file mode 100644 index 00000000..c47f225b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.22974.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Sep 14 03:45:45 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + +Message-ID: <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + +Mark Crispin writes: +> On Tue, 12 Sep 2006, Arnt Gulbrandsen wrote: +>> Bill Shannon writes: +>>> I'd be happy to have both 4.1.2 and 4.1.3 declared as not allowed behavior. +>> That would leave us with only 4.1.1 and 4.1.4, which make it +>> practically impossible to delete a message. I don't like the +>> security implications of that. +> +> It would require an extremely abusive client to cause that result; one +> that was active but only did FETCH, STORE, and SEARCH commands for an +> extended period of time, thus blocking the untagged EXPUNGE. + +Yes. + +> To date, this has not been a problem. + +Sure. The average case is OK, what I dislike is the lack of a proper +transaction. Or you could say I don't like the fuzzy semantics of the +EXPUNGE command. When a client issues EXPUNGE and the server issues a +tagged OK, what is the server promising the client? + +If that OK means "the messages have been deleted", I think that's a fine +promise. A transaction has been committed and that's how it is. + +If the OK means "the messages have been deleted, but some other active +clients can see the old version of the mailbox for as much as two +minutes from now", I think that's still good. Not ideal, but still +clear and firm. + +If the OK means "the messages will be deleted, except that a +nasty-minded client can make me keep them around forever", I don't like +that. It hollows out EXPUNGE too much (even though as you say, noone's +been nasty-minded so far). Do you understand my concern? + +> If this were to become a problem, a server would be perfectly within +> its rights to set a maximum time that this could go on, and when the +> time is exceeded it issues an untagged BYE. +> +> I would not mind adding text to that effect to the base specification +> if there is concensus that such text is a good idea. + +IMO, it depends on the precise text. Requiring that all clients offer +the server an opportunity to send EXPUNGE every so often can't be all +that bad, but how often? "EXPUNGE may not take effect completely until +half an hour after the tagged OK" sounds overly long to me. "Clients +must give the server the opportunity to send EXPUNGE at two-minute +intervals or more often" sounds much too short. Ten minutes sounds both +too short and too long. All partly subjective of course. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.23014.mbox:2,S new file mode 100644 index 00000000..5acdd239 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.23014.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Apr 10 11:14:08 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> +Message-ID: + +Vladimir's interpretation is valid. The LIST argument is definitely not a +mailbox name. + +However, I disagree about it being useful or desirable compared to other +interpretations. In particular, I do not think that it is useful or +desirable for a server to respond to + tag LIST "" inbox +with no data because of case-mismatch with INBOX. + +The case of + tag LIST "" In%B% +is less clear, particularly given that the specification says "uppercase +string" instead of "case-insensitive" string. + +However, the kicker is that (as Vladimir notes) INBOX may be included in +the output with a case-insensitive server. I disagree with Vladimir's +interpretation that the specification forces INBOX to be case-sensitive in +LIST even on a case-insensitive server, as well as the notion of a +"regular mailbox named INBOX" vs. a "special name INBOX" (that is an +implementation detail). + +Fortunately, though, this discussion is more academic than practical, for +the following reasons: + +The specification uses "INBOX" throughout as the canonical form of the +name, and hammers on the point that this is case-insensitive. Postel's +robustness principle (this being a correct use!) says that clients should +always send the name as "INBOX", and servers should always do a +case-insensitive match even when the specification allows a loophole. + +In the case of a client sending + tag LIST "" inbox +and getting nothing back, the primary onus is on the client for not using +the canonical form. The server, arguably, is being naughty too; but the +loophole exists. + +Although the In%B% case is more troubling, I observe it is not something +that generally occurs in real life. A client which actually uses such a +pattern is probably looking for names other than INBOX; but I don't think +that I've ever seen a client use such a pattern. + +I think that, although a server should match INBOX to In%B%, Vladimir is +correct that it does not have to. Even with Vladimir's interpretation, it +is ambiguous (due to underlying implementation details) whether or not the +server would return it. So a client should not depend upon the behavior +either way. + +I think that we all agree that the following patterns all match INBOX: + * + % + INBOX + INBOX% + INBOX* +and the following patterns do NOT match INBOX: + %/% + foo + foo/% + INBOX/* + INBOX/% + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.23031.mbox:2,S new file mode 100644 index 00000000..35977df6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.23031.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From tss at iki.fi Fri Mar 31 14:14:42 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: +References: <1143819932.8744.163.camel@localhost.localdomain> + +Message-ID: <1143843283.3985.18.camel@hurina> + +On Fri, 2006-03-31 at 10:08 -0800, Mark Crispin wrote: +> On Fri, 31 Mar 2006, Timo Sirainen wrote: +> > The "sort threads by their first message's date" behavior is bad because +> > new messages can't be easily noticed in the mailbox. +> +> My MUA has a way to take me to new messages regardless of how they are +> ordered in the mailbox. That might be a useful feature for your MUA. + +I like being able to see all the new mail at once without having to jump +around. + +> > So, there should be +> > some way to specify "sort thread by their latest message's received +> > date" (and date-header?). +> > There has been talk about this before, but I guess no-one's done +> > anything about this? How about a new extension, eg. THREADEXT which +> > allows specifying the thread sorting in some way +> +> The way to define a new threading algorithm is...to define a new threading +> algorithm! There is no need for THREADEXT that adds suboptions to an +> algorithm when you just just define a new THREAD=xxx. + +Well, that's fine with me too. + +> > Also another separate thing related to threads: Has anyone tried +> > optimizing the THREAD command in a way that after the initial threading, +> > the results would be stored somewhere and later when a new mail arrives, +> > the new thread list could be generated without having to rebuild +> > everything? +> +> People have tried to work out how to do insertion in THREAD results. It +> is not a simple task. A single message can completely change the thread +> results. It's not just one link tying together two threads; a message can +> have references that tie together an unbounded number of links. + +Aren't most new messages simple insertions? Either a reply to an +existing message, or a new message with no message-id references. Those +cases could be optimized and the other cases could then fallback to +slower way. + +> If you have an insight on how to express alterations to a thread tree that +> does not entail greater complexity that is saved, lots of people would be +> delighted to hear it (myself included). + +If most changes are simple insertions, then I think it should be pretty +easy for those cases. And in case something else happens to the threads, +it would return everything again. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 198 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.23051.mbox:2,S new file mode 100644 index 00000000..683a54bf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.23051.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From colin at swaveit.com Wed Nov 23 16:41:48 2005 +To: imap-protocol@u.washington.edu +From: "Colin E. McDonald" +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] IMAP capability for maximum APPEND message size? +Message-ID: <4105831243F6A441A82525D34E90513C1A8ECB@swave1.SquareWave.local> + +You should add a function that allows the attachment of fine lagers to +e-mails. + +Now that would be cool + +Happy Thanksgiving IMAP!!! + +Colin + + +-----Original Message----- +From: imap-protocol-bounces@mailman1.u.washington.edu +[mailto:imap-protocol-bounces@mailman1.u.washington.edu] On Behalf Of +Mark Crispin +Sent: Wednesday, November 23, 2005 7:08 PM +To: IMAP Protocol Interest List; IMAP Extensions WG +Subject: [Imap-protocol] IMAP capability for maximum APPEND message +size? + +I am considering the addition of a trivial new capability to IMAP that +would advertise the maximum size of a message in APPEND (and probably +also CATENATE). This has the same purpose as the SIZE capability in +SMTP. + +Currently, the only message size limit in IMAP is 4294967295 (2^32 - 1) +due to IMAP's use of unsigned 32-bit integers. Supporting that size is +troublesome due to +1 overflow problems. Many implementations have much +smaller limits, such as both for administrative and technical reasons +(many filesystems encounter problems after 2^31 - 1). + +Rather than have this be a secret, I propose a capability called +MAXAPPENDSIZE=nnn, where nnn is the size. + +I considered a somewhat more complex extension might advertise the +server's command line length. I think that we should stick with RFC +2683 section 3.2.1.5, since a client which is armed with more detail is +much more likely to shoot itself in the foot. + +Comments? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. +_______________________________________________ +Imap-protocol mailing list +Imap-protocol@u.washington.edu +https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.23059.mbox:2,S new file mode 100644 index 00000000..e5c65cba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.23059.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Sep 7 09:20:25 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <5b93232d05090708031a898592@mail.google.com> +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> +Message-ID: + +On Wed, 7 Sep 2005, Rob Siemborski wrote: +> Actually, this isn't quite right either, because of the possibility of +> failure of a SELECT command, which implies to me the entire paragraph +> is bogus (since the original text didn't address this case). + +I don't see why it needs to address this case. The fact that it does not +address this case indicates that this case does not matter for the +purposes of that paragraph. + +What is more interesting is the difference between BAD and NO. + +Historically, both BAD and NO had the same semantics of causing no change +to state. We still see that today, in the requirement that COPY and +multiple APPEND must succeed or fail atomically. + +Historically, a SELECT which failed with a NO did not change state either, +although RFC 1176 was unclear on that point. This was "fixed" in RFC 1730 +so that a SELECT which failed with a NO always left you in authenticated +state. This had the effect of creating a NO response which changes state. + +IMHO, this is not a good thing. It was a desirable feature that IMAP +guaranteed that command failures did not change state; that feature has +been lost forever. Of course, it seemed "right" at the time (and arguably +still does) that you shouldn't be selected after a SELECT fails, and +that's why I didn't object to that change. Mea culpa. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095138.23093.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095138.23093.mbox:2,S new file mode 100644 index 00000000..4ee0ecba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095138.23093.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From dave at cridland.net Thu May 19 06:34:59 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] BINARY.SIZE for a multipart +In-Reply-To: <200505191237.j4JCbkjl020307@lab.smi.sendmail.com> +References: <7B822F730F822147977ED5B684ACE490241504@xmb-sjc-21b.amer.cisco.com> + + <10845.1116494075.615509@peirce.gestalt.entity.net> + <200505191237.j4JCbkjl020307@lab.smi.sendmail.com> +Message-ID: <11305.1116509699.754530@peirce.gestalt.entity.net> + +On Thu May 19 13:37:46 2005, Philip Guenther wrote: +> Right. Well, almost: multipart/* types and some message subtypes +> may +> use 8bit or binary. + +Oh. Yes, you're quite right. Presumably, this would indicate the +"maximal domain", as it were, of the subparts. + +> Still, the logic holds: treat them as you would any +> part with an identity encoding: make BINARY[section] return the +> same as +> BODY[section] and make BINARY.SIZE[section] return the size of those +> items. + +No, the logic fails with binary subparts - those need to be encoded +by the IMAP server for RFC822.SIZE and BODY[section]. Hence my +comment that the converse of (2) is probably true. + +This is probably hypothetical, since as far as I know all +implementations store RFC2822 messages without using binary encoding. + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.22807.mbox:2,S new file mode 100644 index 00000000..23e6d6b7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.22807.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Sat Jun 12 07:58:17 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006120958.13649.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + + <201006120958.13649.witold.krecicki@firma.o2.pl> +Message-ID: <849822B6-69A5-4FEF-8865-BF8DD0D01957@iki.fi> + +On 12.6.2010, at 8.58, Witold Kr?cicki wrote: + +>> So let's say that we punt and say that an error is an error and we'll +>> break the all-of-nothing guarantee of IMAP. +> This guarantee is a myth that is not working in eg. Maildirs. +> The same problems that appear with COPY or EXPUNGE in those critical +> situations but nobody is thinking about removing COPY or EXPUNGE from the +> protocol. + +Since you keep talking about maildirs..: + +Assumptions: Maildir can be accessed mostly without locks. Reading mails should never get any locks, and that's also how Dovecot works. Changing flags or expunging messages would be possible to do without locks, although currently Dovecot doesn't. Assigning UIDs to new messages (i.e. making new messages visible) pretty much requires some kind of locking. + +The way I've implemented COPY is that it first link()s files to the destination Maildir/tmp/ directory. Then it locks the maildir, assigns UIDs to messages, rename()s files from tmp/ to new/ and unlocks. Messages won't be visible to other connections until unlock is complete. This means that as long as the system doesn't crash, there is a single atomic event (unlock) when the messages either become visible or the copy operation gets rollbacked. This can fail only if there are non-Dovecot MUAs accessing the maildir that aren't using Dovecot's locking, but in normal Dovecot-only situations this works perfectly. + +Now, if you wanted to implement MOVE operation using rename(), there is a problem: Immediately after you do a rename() the message is gone from the source mailbox. If another session tries to open the mail (remember, no locks while reading), or for some other reason scans the maildir for what messages it contains, it sees that the message is gone and issues EXPUNGE to client. There is no way to revert that! And why would the MOVE operation fail? 1) COPY fails if one of the messages has already been expunged, so MOVE should probably too, and this won't be known beforehand. 2) Filesystem quota can cause rename() to fail if it would increase the destination directory's size. + +So the difference is that COPY can under normal operating conditions work as intended, while MOVE implemented with rename() can't. + +> What if the server deletes 3 out of 10 messages and then is struck by a +> filesystem failure (cannot delete remaining 7, cannot undelete of the first 3)? +> This situation is (formally) not covered in the protocol, server cannot send +> untagged EXPUNGE responses for those 3 messages (because then it would have to +> send OK) and it cannot send OK because EXPUNGE after a success removes ALL +> messages with \Deleted flags... + +I don't think that's a correct assumption. + +> It should send NO but then the client would +> think that no messages were deleted permanently... + +I don't think that's a correct assumption either. + +My server replies to EXPUNGE always with OK, even when there are \Deleted messages that weren't expunged because ACLs didn't allow that (it used to send NO, but some clients tried to send EXPUNGE internally and kept giving popup windows saying the EXPUNGE failed). Clients should use the untagged EXPUNGE replies to figure out what happened, the OK reply from EXPUNGE doesn't tell anything. diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.22883.mbox:2,S new file mode 100644 index 00000000..52eca81f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.22883.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From ams at oryx.com Wed Jan 30 23:38:19 2008 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Re: Thunderbird confused by post-authenticate + CAPABILITY change? +Message-ID: <20080131073819.GA6754@toroid.org> + +At 2008-01-28 11:45:29 -0800, janssen@parc.com wrote: +> +> After the channel is encrypted, but before any authentication, I send +> +> (2) IMAP4rev1 SASL-IR AUTH=PLAIN +> +> By the way, is this legal? + +Yes, it's fine to omit STARTTLS after TLS is negotiated. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.22893.mbox:2,S new file mode 100644 index 00000000..50ebe2a4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.22893.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Oct 30 08:56:04 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <1040.1193739773.286509@peirce.dave.cridland.net> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <1040.1193739773.286509@peirce.dave.cridland.net> +Message-ID: + +On Tue, 30 Oct 2007, Dave Cridland wrote: +>> IMAP internationalization +>> UTF-8 mailbox names +>> UTF-8 flag names +> I can agree with this list. However, this is, oddly, the list were we've made +> least progress. IMHO, two of these are almost completely unaddressed. + +Yes; and part of the reason why I feel that IMAPEXT has been wasting its +time. + +> I would add NAMESPACE here, + +I believe that namespaces were a mistake. They are invariably +misimplemented; most clients treat them as a level of filesystem +hierarchy. + +The role of identifying other-user and/or shared mailboxes should be +performed by a different mechanism. + +> and remove MULTIAPPEND. I'm not convinced of the +> utility of MULTIAPPEND - my client supports it, but I've found I never use +> it. It's great if you're wanting to move large numbers of messages between +> servers on very high latency links, but why would you want to do this? + +MULTIAPPEND is crucial when transferring mailboxes from one server to +another. Otherwise you have to use a non-IMAP mechanism to do it +properly. + +Multiple appends using LITERAL+ have the same number of RTTs, but do not +guarantee atomicity or full-success/full-failure. And, for certain bulk +applications, MULTIAPPEND plus LITERAL+ work together. + +MULTIAPPEND should be part of the base definition of APPEND, especially if +CATENATE becomes part of the base specification. + +> BINARY isn't particularly low-hanging - decoding on FETCH is easy, but +> handling BINARY APPEND is not. + +Agreed. These should have been two separate mechanisms. + +> I've found SORT and THREAD most often implemented in web-based clients (in +> particular THREAD), rather than desktop clients. The problem is that either +> the desktop client runs with a complete cache, so it can do it itself (and +> often in rather more complete ways than the extension provides), or else it's +> running online, typically in low bandwidth, and neither extension scales +> terribly well. + +Nonsense. Pine/Alpine is an online client that uses SORT/THREAD with 5 +and even 6 digit mailboxes with HUGE success. I use Alpine all the time +over EDGE and wouldn't think of threading without it. + +>> rfc4551.txt CONDSTORE +> I don't think this one is going away. This and QRESYNC are surprisingly well +> implemented, given their complexity. I already know of one wholly independent +> client implementation of QRESYNC, and it's seen by the author as critical. + +I know that Isode considers this to be important. I'm less certain about +the wider market. + +> LIST extensions are a mere cleanup for LIST/LSUB, so I'd move them up - in +> fact, I'd say we should use these as the basis for UTF-8 conversion, and +> deprecate the unextended LIST/LSUB. + +I'm afraid that I disagree here. I would deprecate LSUB (and the entire +subscription facility) and stay with the simpler LIST. LIST extensions +added too many "nice to have" but not strictly necessary facilities, and +thus is doomed IMHO. + +> You're getting perilously close to the suggestion that we've now invented +> everything that can possibly be useful. I think there's lots more to be done, +> and I'm not even sure of the sphere of that work. + +No, I think that IMAP is "mature". The future useful work will be in +whatever replaces IMAP. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.22911.mbox:2,S new file mode 100644 index 00000000..f3a987d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.22911.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From Dallas.Mays at AMEDD.ARMY.MIL Mon Jun 25 09:52:28 2007 +To: imap-protocol@u.washington.edu +From: "Mays, Dallas E CONTRACTOR USAISR-Ft Sam Houston" +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] How do I get removed from your e-mail list? + (UNCLASSIFIED) +Message-ID: <053FDFB6A6CE1148A50F795B467E002D019C7D33@AMEDMLSATX132> + +Classification: UNCLASSIFIED +Caveats: NONE + + + +Thanks + +Del Mays +ETI Professionals Inc. +ISR JTTR Oracle DBA +United States Army - Institute of Surgical Research +Information Management Office +3400 Rawley E. Chambers Avenue, Bldg #3611 +Ft. Sam Houston, Texas 78234 +210-916-8496 +dallas.mays@amedd.army.mil +dallas.mays@us.army.mil + + +Classification: UNCLASSIFIED +Caveats: NONE + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.22914.mbox:2,S new file mode 100644 index 00000000..96bdfc98 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.22914.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Sat May 26 06:13:29 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] IMAP Wiki +Message-ID: <1180185209.32181.1931.camel@hurina> + +http://imap.dovecot.org/ + +Because nothing happened since the last time I talked about it, I set +one up for my own use to keep track of things. For example the previous +"Concurrent mailbox changes" question has been discussed many times over +the years, and still I couldn't just easily give a link explaining the +possibilities. The next time I can. + +If someone else wants to use it, please do. I can change the URL to +something more neutral as well (such as wiki.imap.org) if someone has a +better domain to use. + +You can backup the whole wiki (excluding logs/user information) to +yourself as well: + +rsync -qavz --delete dovecot.org::imapwiki wiki + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.22920.mbox:2,S new file mode 100644 index 00000000..96d13082 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.22920.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Mar 12 02:24:20 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: +References: <"07Mar11. 154843pst. 57996"@synergy1.parc.xerox.com> + <"07Mar11. + 162448pst. 57996"@synergy1.parc.xerox.com> + + <1173661726.17598.331.camel@hurina> <"07Mar11. 195659pst. + 57996"@synergy1.parc.xerox.com> + +Message-ID: + +Timo Sirainen writes: +> Hmm. It probably was enough if the UID was in the "* FETCH" line. + +No, someone else reported problems with that a couple of years ago. It +has to be at (or near?) the start. + +I haven't investigated. I'd rather put UID first than Investigate +Outlook bugs. ?This may or may not be what's going on: life is too +short to spend debugging Intel parts so I really don't care to +investigate further.? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.22974.mbox:2,S new file mode 100644 index 00000000..acf4926e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.22974.mbox:2,S @@ -0,0 +1,79 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Thu Sep 14 18:57:15 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> +Message-ID: + +On Thu, 14 Sep 2006, Arnt Gulbrandsen wrote: +> Sure. The average case is OK, what I dislike is the lack of a proper +> transaction. Or you could say I don't like the fuzzy semantics of the EXPUNGE +> command. When a client issues EXPUNGE and the server issues a tagged OK, what +> is the server promising the client? + +You are looking at it the wrong way. + +Instead of looking at it from the protocol viewpoint, you are looking at +it from the viewpoint of how some server implementation may implement it. + +More importantly, you are betraying an unrealistic expectation of what the +IMAP protocol can do: to wit, that an IMAP client can force destruction of +a message in other clients. Doesn't happen. Can't happen. + +The best that can happen is a mutually-cooperative effort; and perhaps an +entity that refuses to be cooperative can be expelled from the effort. + +In IMAP, a message exists in as many as four places: + (1) the mailbox on the server + (2) server state in a client/server session + (3) client state in a client/server session + (4) client cache of the mailbox + +When a client issues an expunge command and gets back an untagged EXPUNGE +result, then the message has been expunged from (1). It is also expunged +from (2) IN THAT SESSION. If the client implements IMAP correctly, it is +also expunged from (3). IMAP has no control over (4), although one would +presume that a well-implemented client would expunge it in (4) as well. + +What is confusing you is (2) and (3) IN OTHER SESSIONS, and (4) in other +clients; and somehow you have the issue that this renders the semantics of +EXPUNGE "fuzzy". The semantics of EXPUNGE are not fuzzy at all; they are +quite precise. + +You need to get it out of your head that the IMAP protocol has any control +over (4). There is no way that a forced removal of (4) can ever happen. +A sufficiently recalictrant client can prevent a forced removal of (3) as +well, although eventually it'll have to move it to (4). + +A server implementation MAY be able to force the issue for (2) in the face +of a recalcitrant client. However, the proper way to do that is not by +pulling the rug from under a well-behaved client that will presently do a +NOOP or other EXPUNGE-synchronize operation. A proper way would be a +forced BYE on a badly-behaved client. + +> IMO, it depends on the precise text. Requiring that all clients offer the +> server an opportunity to send EXPUNGE every so often can't be all that bad, +> but how often? "EXPUNGE may not take effect completely until half an hour +> after the tagged OK" sounds overly long to me. "Clients must give the server +> the opportunity to send EXPUNGE at two-minute intervals or more often" sounds +> much too short. Ten minutes sounds both too short and too long. All partly +> subjective of course. + +In my opinion, the minimum period should be between 5 and 30 minutes. NAT +has pretty much made it non-viable to go idle for more than 5 minutes. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.23014.mbox:2,S new file mode 100644 index 00000000..89bd2f58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.23014.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Apr 10 11:20:20 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + +Message-ID: + +In conclusion, I consider Vladimir's interpretation to be an interesting +quirk in the protocol. It is surprising, and perhaps not what most people +would choose; but nonetheless it is valid. + +But, fortunately, this quirk is primarily of academic interest since a +client should not do anything that would get it into trouble with this +quirk. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.23031.mbox:2,S new file mode 100644 index 00000000..91ce7073 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.23031.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Mar 31 14:37:26 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: <1143843283.3985.18.camel@hurina> +References: <1143819932.8744.163.camel@localhost.localdomain> + + <1143843283.3985.18.camel@hurina> +Message-ID: + +On Sat, 1 Apr 2006, Timo Sirainen wrote: +> I like being able to see all the new mail at once without having to jump +> around. + +In that case, you don't want a threaded view. You want a view that is in +message sequence (or UID) order. + +> Aren't most new messages simple insertions? Either a reply to an +> existing message, or a new message with no message-id references. + +I don't think that's a good assumption, but I haven't done a thorough +analysis. + + +> If most changes are simple insertions, then I think it should be pretty +> easy for those cases. + +Not as easy as it sounds. The server must rethread the entire tree; the +message could have been received out of order and thus has pre-existing +messages that refer to it. Then the server must compare the new tree with +the old tree. Only then will it know if it is "just" a simple insertion. + +Then, a means has to be defined by which the insertion is represented. Do +you do something like message part section numbers? Or do you send a +piece of tree. + +Then it has to be defined how the client does this. And all of this has +to consider the various ways in which a tree can branch and where the +insertion takes place. + +It's certainly possible, but it's not easy. + +> And in case something else happens to the threads, +> it would return everything again. + +Communication links are getting faster all the time. Against the ever +dwindling savings, you have to weigh the costs involved in getting a diff +mechanism defined and debugged (this includes getting multiple +implementations to interoperate correctly). We have a difficult time +getting multiple implementations of much simpler protocols to +interoperate. + +Remember, just because we are technically competant enough to get such a +mechanism working does not mean that everybody who implements the protocol +will have the same competance. Past experience has made me quite +pessimistic. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.23051.mbox:2,S new file mode 100644 index 00000000..c5270d50 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.23051.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From imap at maclean.com Wed Nov 23 16:48:18 2005 +To: imap-protocol@u.washington.edu +From: Pete Maclean +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] IMAP capability for maximum APPEND message size? +In-Reply-To: +References: +Message-ID: <6.2.5.6.2.20051123194435.06fda2d0@maclean.com> + +I have a prospective situation with my server where the maximum size +of an APPENDable message would be namespace-specific. + +I tend to agree with you about command line length. + +Pete Maclean + +At 07:08 PM 11/23/2005, Mark Crispin wrote: +>I am considering the addition of a trivial new capability to IMAP +>that would advertise the maximum size of a message in APPEND (and +>probably also CATENATE). This has the same purpose as the SIZE +>capability in SMTP. +> +>Currently, the only message size limit in IMAP is 4294967295 (2^32 - +>1) due to IMAP's use of unsigned 32-bit integers. Supporting that +>size is troublesome due to +1 overflow problems. Many +>implementations have much smaller limits, such as both for +>administrative and technical reasons (many filesystems encounter +>problems after 2^31 - 1). +> +>Rather than have this be a secret, I propose a capability called +>MAXAPPENDSIZE=nnn, where nnn is the size. +> +>I considered a somewhat more complex extension might advertise the +>server's command line length. I think that we should stick with RFC +>2683 section 3.2.1.5, since a client which is armed with more detail +>is much more likely to shoot itself in the foot. +> +>Comments? +> +>-- Mark -- +> +>http://panda.com/mrc +>Democracy is two wolves and a sheep deciding what to eat for lunch. +>Liberty is a well-armed sheep contesting the vote. +>_______________________________________________ +>Imap-protocol mailing list +>Imap-protocol@u.washington.edu +>https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095139.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095139.23059.mbox:2,S new file mode 100644 index 00000000..280df98a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095139.23059.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Sep 7 09:22:39 2005 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: <5b93232d050907075812659c02@mail.google.com> + +Message-ID: <431F13CF.6070209@isode.com> + +Mark Crispin wrote: + +> My preference would be either to: +> . leave the current wording as-is +> or +> . change it to an explicit statement that server behavior (and +> subsequent +> state of \Recent flags) with extraneous SELECT is undefined and +> implementation dependent. +> That way, existing servers are not declared broken, and clients are +> put on notice not to use this as a hack to clear \Recent flags. + +I would prefer the latter. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.22807.mbox:2,S new file mode 100644 index 00000000..cbff736e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.22807.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Sat Jun 12 08:10:36 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <849822B6-69A5-4FEF-8865-BF8DD0D01957@iki.fi> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120958.13649.witold.krecicki@firma.o2.pl> + <849822B6-69A5-4FEF-8865-BF8DD0D01957@iki.fi> +Message-ID: <201006121710.36845.witold.krecicki@firma.o2.pl> + +On Saturday 12 of June 2010 16:58:17 Timo Sirainen wrote: +> On 12.6.2010, at 8.58, Witold Kr?cicki wrote: +> >> So let's say that we punt and say that an error is an error and we'll +> >> break the all-of-nothing guarantee of IMAP. +> > +> > This guarantee is a myth that is not working in eg. Maildirs. +> > The same problems that appear with COPY or EXPUNGE in those critical +> > situations but nobody is thinking about removing COPY or EXPUNGE from the +> > protocol. +> +> Since you keep talking about maildirs..: +> +> Assumptions: Maildir can be accessed mostly without locks. Reading mails +> should never get any locks, and that's also how Dovecot works. Changing +> flags or expunging messages would be possible to do without locks, +> although currently Dovecot doesn't. Assigning UIDs to new messages (i.e. +> making new messages visible) pretty much requires some kind of locking. +> +> The way I've implemented COPY is that it first link()s files to the +> destination Maildir/tmp/ directory. Then it locks the maildir, assigns +> UIDs to messages, rename()s files from tmp/ to new/ and unlocks. Messages +> won't be visible to other connections until unlock is complete. This means +> that as long as the system doesn't crash, there is a single atomic event +> (unlock) when the messages either become visible or the copy operation +> gets rollbacked. This can fail only if there are non-Dovecot MUAs +> accessing the maildir that aren't using Dovecot's locking, but in normal +> Dovecot-only situations this works perfectly. +> +> Now, if you wanted to implement MOVE operation using rename(), there is a +> problem: Immediately after you do a rename() the message is gone from the +> source mailbox. If another session tries to open the mail (remember, no +> locks while reading), or for some other reason scans the maildir for what +> messages it contains, it sees that the message is gone and issues EXPUNGE +> to client. There is no way to revert that! And why would the MOVE +> operation fail? 1) COPY fails if one of the messages has already been +> expunged, so MOVE should probably too, and this won't be known beforehand. +> 2) Filesystem quota can cause rename() to fail if it would increase the +> destination directory's size. +> +> So the difference is that COPY can under normal operating conditions work +> as intended, while MOVE implemented with rename() can't. +Maybe MOVE implemented with rename() can't, but move implemented with link & +delete (so 'internally' as copy + expunge with a single lock) can. + +> > What if the server deletes 3 out of 10 messages and then is struck by a +> > filesystem failure (cannot delete remaining 7, cannot undelete of the +> > first 3)? This situation is (formally) not covered in the protocol, +> > server cannot send untagged EXPUNGE responses for those 3 messages +> > (because then it would have to send OK) and it cannot send OK because +> > EXPUNGE after a success removes ALL messages with \Deleted flags... +> +> I don't think that's a correct assumption. +> +> > It should send NO but then the client would +> > think that no messages were deleted permanently... +> +> I don't think that's a correct assumption either. +> +> My server replies to EXPUNGE always with OK, even when there are \Deleted +> messages that weren't expunged because ACLs didn't allow that (it used to +> send NO, but some clients tried to send EXPUNGE internally and kept giving +> popup windows saying the EXPUNGE failed). Clients should use the untagged +> EXPUNGE replies to figure out what happened, the OK reply from EXPUNGE +> doesn't tell anything. +"The EXPUNGE command permanently removes *all* messages that have the \Deleted +flag set from the currently selected mailbox.". It is not my assumption, it's +stated in the protocol. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.22883.mbox:2,S new file mode 100644 index 00000000..0d750ab5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.22883.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From ams at oryx.com Wed Jan 30 23:49:16 2008 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Re: Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: +Message-ID: <20080131074916.GB6754@toroid.org> + +At 2008-01-31 01:13:51 -0500, JohnD@cciu.org wrote: +> +> Is this something that the IMAP protocol can be expected to define, or +> has it been purposefully left open to interpretation, and this kind of +> disagreement between vendors is thus expected? + +IMAP does not distinguish between sent and unsent messages; it cannot, +because it has no way to send messages; nor are messages sent under its +supervision. + +APPEND just creates a message. Whether that message has been sent to its +intended recipient already, and is being archived; or is a draft to be +sent later, depends on who does the sending and who is doing the APPEND. + +Clients may APPEND to different folders ("sent mail" vs. "drafts") or +set flags on a message (e.g. \Draft) to indicate one or the other, but +you're right, IMAP says nothing about this, and different clients do +things differently. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.22893.mbox:2,S new file mode 100644 index 00000000..acfd8745 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.22893.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From joel at panacea.null.org Tue Oct 30 20:31:34 2007 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <1040.1193739773.286509@peirce.dave.cridland.net> + +Message-ID: <16687.1193801494@succubus.panacea.null.org> + +> > LIST extensions are a mere cleanup for LIST/LSUB, so I'd move them up - in +> > fact, I'd say we should use these as the basis for UTF-8 conversion, and +> > deprecate the unextended LIST/LSUB. +> +> I'm afraid that I disagree here. I would deprecate LSUB (and the entire +> subscription facility) and stay with the simpler LIST. LIST extensions +> added too many "nice to have" but not strictly necessary facilities, and +> thus is doomed IMHO. + +How would you handle mailboxes in public "areas" (namespaces, points in +a hierarchy) without something like the subscription facility? I thought +the whole idea was that a user might not want to have listed all the +mailboxes from such an area. Is the expectation now that users setup +their desired subset on the client, potentially repeating this setup on +different clients? + +Cheers, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.22911.mbox:2,S new file mode 100644 index 00000000..57e9c429 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.22911.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From tss at iki.fi Wed Jun 27 07:13:38 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> + +Message-ID: <1182953618.3768.338.camel@hurina> + +On Mon, 2007-06-25 at 09:45 -0700, Mark Crispin wrote: +> On Mon, 25 Jun 2007, Timo Sirainen wrote: +> > I find this # thing also a bit weird. The client can't know about those +> > namespaces without NAMESPACE command, and if it does then there's really +> > no need for # because it can find out the exact prefixes anyway. So why +> > should the client do anything differently if there's #? +> +> Without a breakout mechanism such as #, then you have the ambiguity +> problem that you reported in your earlier message. How do you know that a +> name is in one namespace as opposed to some other one? +> +> More importantly, what happens if the different namespaces have different +> hierarchy semantics; different delimiters, different ways of expressing +> root, etc.? Maybe a particular namespace doesn't have hierarchy at all. + +NAMESPACE reply returns the prefixes and you can compare those to the +mailbox name. How is a "foo/" prefix any more ambiguous than "#foo/" +prefix? + +> > I've understood that many commonly used clients ignore namespaces and +> > only show what is visible with LIST "" *, so I'd want to keep it +> > possible to list contents of all namespaces with it. +> +> Does your server list all other users' mailboxes with that command (since +> after all a user may have a public access mailbox)? Why not? + +I was actually going to make it do that, once support for shared +mailboxes is finished. + +> Does your server do an "ls -R /" for that command? Why not? + +If user's mailbox root directory is set to /, then yes.. + +> Assuming that the user has a stupid client that does LIST "" * (a very bad +> thing to do), + +The "*" wasn't really my point. Let's try again: + +I've understood that many commonly used clients ignore namespaces and +only show what is visible with LIST "" %, so I'd want to keep it +possible to list contents of all namespaces with it. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.22914.mbox:2,S new file mode 100644 index 00000000..4893f5b5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.22914.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sat May 26 08:09:26 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Concurrent Mailbox Changes. +In-Reply-To: <1180182602.32181.1919.camel@hurina> +References: <46581509.7050201@buni.org> + <1180182602.32181.1919.camel@hurina> +Message-ID: + +Note that the inventor of IMAP disagrees with the very last sentence of +Timo's message (see below). He thinks that the preferred order of +behavior is: + (1) which everybody thinks is the best + (5) which at least maintains consistant protocol state + (4) annoying to users, but doesn't violate protocol state + (2)/(3) which mislead some clients, breaks others, and + violates protocol state, + +As far as the inventor of IMAP is concerned, (1) and (5) are the ONLY +acceptable choices. + +On Sat, 26 May 2007, Timo Sirainen wrote: +> This is discussed in RFC 2180. Summing up your possibilities: +> +> 1. Keep the message around until there are no sessions that see it. This +> is the preferred behavior. +> +> 2. Give some dummy replies for the message. Such as empty flags, and +> other fields being NILs or whatever is legal for the field. The downside +> to this is that it violates the IMAP protocol if the client had already +> asked something about this message. +> +> 3. Don't return the FETCH reply for the message at all and return a +> tagged NO reply. Doing this makes some clients ask the same message +> range over and over again infinitely. This could be avoided also: +> http://mailman1.u.washington.edu/pipermail/imap-protocol/2006-September/000= +> 281.html +> +> 4. Disconnect the client anytime you can't handle the request. I used to +> do this but it was annoying when it happened. +> +> 5. Don't allow EXPUNGE until there's only session. I think this is the +> worst of the possibilities. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.22920.mbox:2,S new file mode 100644 index 00000000..28ff8d61 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.22920.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From dave at cridland.net Mon Mar 12 02:53:43 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> + + <1173661726.17598.331.camel@hurina> + <07Mar11.195659pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <19934.1173693223.973130@peirce.dave.cridland.net> + +On Mon Mar 12 06:14:24 2007, Timo Sirainen wrote: +> On 12.3.2007, at 5.56, Bill Janssen wrote: +> +>> Thanks, that's a nice list. +>> +>>> One workaround that there used to be was that several clients +>>> (kmail, +>>> Thunderbird at least) didn't like if UID field wasn't the first +>>> field in +>>> FETCH replies. After a while I gave up and just put it back to +>>> begin +>>> first. +>> +>> Didn't like it, how? I'm sending it last (on a UID FETCH if it's +>> not +>> explicitly specified), and Thunderbird seems happy. I send the +>> specified +>> items on a FETCH in the order they were requested. +> +> Hmm. It probably was enough if the UID was in the "* FETCH" line. +> At least if the message body was before UID it didn't like that. +> And by not liking I mean it somehow mixed it up with previous +> message, causing at least the message's size field to be wrong. +> +> Looks like I'm now sending the items also in the requested order, +> except message headers and body come last always. + +I've understood the following to be legal, but I suspect it'd cause +much breakage: + +C: tag UID FETCH u BODY[1] +S: * s FETCH BODY [1] {n} +S: ... +S: * s FETCH UID u +S: tag OK + +Certainly in my client's case I'm not sure how well the code-path +that copes with the first will work. It'd handle it if it happened to +know which UID message number s had already, but otherwise I'm really +not sure. Mind you, I'm also not sure that my client could ever get a +body part without knowing the UID. + +I'm pretty sure that sending any implicit UID first, then everything +else all on the same FETCH response, is not going to break anyone. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.22974.mbox:2,S new file mode 100644 index 00000000..4b56ceaf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.22974.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Sep 15 06:53:36 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + +Message-ID: + +Mark Crispin writes: +> On Thu, 14 Sep 2006, Arnt Gulbrandsen wrote: +>> Sure. The average case is OK, what I dislike is the lack of a proper +>> transaction. Or you could say I don't like the fuzzy semantics of +>> the EXPUNGE command. When a client issues EXPUNGE and the server +>> issues a tagged OK, what is the server promising the client? +> +> You are looking at it the wrong way. +> +> Instead of looking at it from the protocol viewpoint, you are looking +> at it from the viewpoint of how some server implementation may +> implement it. + +I'd say: I'm looking at what the promises made by IMAP standard to +client authors, which standards-conformant servers must fulfill. In +particular what promises made about the effects of the EXPUNGE command. + +> More importantly, you are betraying an unrealistic expectation of what +> the IMAP protocol can do: to wit, that an IMAP client can force +> destruction of a message in other clients. Doesn't happen. Can't +> happen. + +Of course it can't. + +My issue is rather the opposite - can a client force destruction of a +message on a server, such that other IMAP clients cannot access the +message? + +Seven hundred other clients may have cached the message already, and +even logged out. That's a given. Time moves forwards, after all. All +the EXPUNGE command can affect is the ability of other clients to fetch +the messages after the time of the EXPUNGE command. + +Even though EXPUNGE cannot affect the past, I think its effect on the +future are worth discussing. + +(Btw, I changed our code today to use 4.1.2+loopbreaker. The first time +a client fetches a message which another client has expunged, but whose +expunge has not yet been reported in this session, the server issues a +NO as in 4.1.2, and makes a note of the UID(s). If any of those UIDs +are fetched again before the server can report the expunge, the server +issues a BYE. When it reports expunges, it clears its UID set. I think +that's as good as 4.1.1+period.) + +>> IMO, it depends on the precise text. Requiring that all clients +>> offer the server an opportunity to send EXPUNGE every so often can't +>> be all that bad, but how often? "EXPUNGE may not take effect +>> completely until half an hour after the tagged OK" sounds overly +>> long to me. "Clients must give the server the opportunity to send +>> EXPUNGE at two-minute intervals or more often" sounds much too +>> short. Ten minutes sounds both too short and too long. All partly +>> subjective of course. +> +> In my opinion, the minimum period should be between 5 and 30 minutes. +> NAT has pretty much made it non-viable to go idle for more than 5 +> minutes. + +Then five minutes. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.23014.mbox:2,S new file mode 100644 index 00000000..f713fc1f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.23014.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From nevon_brake at consilient.com Mon Apr 10 13:21:02 2006 +To: imap-protocol@u.washington.edu +From: Nevon Brake +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + +Message-ID: <443ABE2E.1010503@consilient.com> + +Given the wording, agreed. I was primarily concerned that the section in +question seemed to contradict the spirit of INBOX being +case-insensitive, but given this discussion I can understand Vladimir's +rationale. + +Cheers, + +Nevon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.23031.mbox:2,S new file mode 100644 index 00000000..c4c33ffb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.23031.mbox:2,S @@ -0,0 +1,100 @@ +MBOX-Line: From tss at iki.fi Fri Mar 31 15:17:27 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: +References: <1143819932.8744.163.camel@localhost.localdomain> + + <1143843283.3985.18.camel@hurina> + +Message-ID: <1143847047.3985.42.camel@hurina> + +On Fri, 2006-03-31 at 14:37 -0800, Mark Crispin wrote: +> On Sat, 1 Apr 2006, Timo Sirainen wrote: +> > I like being able to see all the new mail at once without having to jump +> > around. +> +> In that case, you don't want a threaded view. You want a view that is in +> message sequence (or UID) order. + +Nope, it would still be nice to see the threads. I like pretty much how +OSX's Mail does it, except it uses ordererdsubject-like threading. + +> > Aren't most new messages simple insertions? Either a reply to an +> > existing message, or a new message with no message-id references. +> +> I don't think that's a good assumption, but I haven't done a thorough +> analysis. + +Here's an ugly analyzer script, I think it works correctly: + +count=`printf "x select inbox\n"|./imap|grep EXISTS|sed 's/^\* \([0-9]*\) .*/\1/'` +echo "$count messages, threading.." +perl -e 'printf("x delete test\nx create test\n"); for ($i = 1; $i <= $ARGV[0]; $i++) { printf("x select inbox\nx copy $i test\nx select test\nx thread references us-ascii all\n"); }' $count|./imap > log +grep '^\* THREAD ' log|sed 's/^\* THREAD //'|tr -d '\r' > log2 +echo "Out of $count new messages, there were this many non-insertions:" +perl -e '$prev = " "; $num = 1; while (<>) { s/[() \n]+/ /g; $new = $_; $new =~ s/$num //; if ($new ne $prev) { print "$new vs $prev\n"; } $prev = $_; $num++; }' < log2|wc -l + +With my 787 message INBOX it found one non-insertion and with a 2000 +mail mailing list it found 3 non-insertions. + +> > If most changes are simple insertions, then I think it should be pretty +> > easy for those cases. +> +> Not as easy as it sounds. The server must rethread the entire tree; the +> message could have been received out of order and thus has pre-existing +> messages that refer to it. Then the server must compare the new tree with +> the old tree. Only then will it know if it is "just" a simple insertion. + +Right. Although I think it's possible to do some optimizations in there +also, eg. if message has no message-id, in-reply-to or references +headers, and there's no existing message with same base subject, it can +always be inserted as a root node. + +> Then, a means has to be defined by which the insertion is represented. Do +> you do something like message part section numbers? Or do you send a +> piece of tree. +> +> Then it has to be defined how the client does this. And all of this has +> to consider the various ways in which a tree can branch and where the +> insertion takes place. + +I think two types of insertions would be enough: "insert as sibling to +message n" and "insert as the first child to message n". Root would +probably be message number 0. So an example reply would be: + +* THREAD + 5=S3 6=C5 + +Meaning message 5 was added as a sibling to 3, and message 6 was added +as 5's first child. + +I think that should be easy enough for the clients to handle? + +> > And in case something else happens to the threads, +> > it would return everything again. +> +> Communication links are getting faster all the time. Against the ever +> dwindling savings, you have to weigh the costs involved in getting a diff +> mechanism defined and debugged (this includes getting multiple +> implementations to interoperate correctly). We have a difficult time +> getting multiple implementations of much simpler protocols to +> interoperate. +> +> Remember, just because we are technically competant enough to get such a +> mechanism working does not mean that everybody who implements the protocol +> will have the same competance. Past experience has made me quite +> pessimistic. + +Well, I'm still mostly just interested in optimizing this internally in +my server so that the reply gets sent near instantly, but these are +somewhat related goals in that if I can figure out rules how to quickly +update the thread list internally, I can easily send out incremental +updates to clients as well. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 198 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.23051.mbox:2,S new file mode 100644 index 00000000..8a3c53dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.23051.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From ken at oceana.com Wed Nov 23 19:21:10 2005 +To: imap-protocol@u.washington.edu +From: Ken Murchison +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] IMAP capability for maximum APPEND message size? +In-Reply-To: +References: +Message-ID: <438531A6.1050000@oceana.com> + +Mark Crispin wrote: +> I am considering the addition of a trivial new capability to IMAP that +> would advertise the maximum size of a message in APPEND (and probably +> also CATENATE). This has the same purpose as the SIZE capability in SMTP. +> +> Currently, the only message size limit in IMAP is 4294967295 (2^32 - 1) +> due to IMAP's use of unsigned 32-bit integers. Supporting that size is +> troublesome due to +1 overflow problems. Many implementations have much +> smaller limits, such as both for administrative and technical reasons +> (many filesystems encounter problems after 2^31 - 1). + +Cyrus has a limit of somewhere around 102MB, just as a design decision +(so I'm told). I think an extension advertising the actual limit +supported by the server would be useful. + + +> Rather than have this be a secret, I propose a capability called +> MAXAPPENDSIZE=nnn, where nnn is the size. + +Works for me. + +-- +Kenneth Murchison +Systems Programmer +Carnegie Mellon University + diff --git a/demo/ermis-f/imap-protocol/cur/1600095140.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095140.23059.mbox:2,S new file mode 100644 index 00000000..5b6bbade --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095140.23059.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Sep 7 09:25:54 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <5b93232d05090709125cea8c08@mail.google.com> +References: + <5b93232d050907075812659c02@mail.google.com> + + <5b93232d05090709125cea8c08@mail.google.com> +Message-ID: + +On Wed, 7 Sep 2005, Rob Siemborski wrote: +> PS (is anyone else getting lots of bounces from amazon and +> internet-drafts@ietf.org in this thread?) + +I'll see about getting those fixed. Apparently some virus subscribed +those addresses, but I don't have the authorization to edit the list +directly (and I don't want to be - making me be the list administrator +causes me to get all the bounces and I get quite enough junk mail...). + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.22807.mbox:2,S new file mode 100644 index 00000000..4023c715 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.22807.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From dot at dotat.at Sat Jun 12 16:33:24 2010 +To: imap-protocol@u.washington.edu +From: Tony Finch +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> +Message-ID: + +On Fri, 11 Jun 2010, Timo Sirainen wrote: +> +> a COPY 1:100 elsewhere +> b IF-OK STORE 1:100 +flags \deleted +> c IF-OK EXPUNGE + +Reminds me of ARM assembler :-) + +Tony. +-- +f.anthony.n.finch http://dotat.at/ +HUMBER THAMES DOVER WIGHT PORTLAND: NORTH OR NORTHWEST, VEERING NORTHEAST AT +TIMES, THEN BACKING SOUTH OR SOUTHWEST, 4 OR 5, OCCASIONALLY VARIABLE 3. +SLIGHT IN WIGHT AND PORTLAND, OTHERWISE SLIGHT OR MODERATE. FAIR IN DOVER AND +WIGHT, OTHERWISE OCCASIONAL RAIN LATER. GOOD, OCCASIONALLY MODERATE. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.22883.mbox:2,S new file mode 100644 index 00000000..5d81de58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.22883.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From JohnD at cciu.org Thu Jan 31 09:24:12 2008 +To: imap-protocol@u.washington.edu +From: John DeMillion +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: + +Message-ID: + +Mark Crispin on January 31, 2008 at 2:11 AM -0500 +wrote: +>I don't know if this explanation makes sense to you or not. Hopefully +>some other people can chime in with perhaps different explanations +>that +>may ultimately make things clear. + +Your reply was sensible (not to mention entertaining); thanks for +taking the time to present that comprehensive explanation. + +I realize that IMAP is not used to send messages, and in this case the +message has actually already been sent via SMTP by the mobile software +vendor. Bear in mind that I'm talking about "sent" and "unsent" only +in the sense of how it *appears* to the user when they see the results +of the APPEND in their mailbox, not anything to do with IMAP sending or +not sending anything. + +The question that I'm dealing with is how the mobile vendor's +already-sent-by-SMTP message is represented in the user's groupware +system. The mobile vendor wants to create the illusion of an +already-sent message via an IMAP APPEND, but the way that my groupware +vendor is implementing APPEND breaks the illusion. + +It seems that the \Draft flag, or at least my understanding of it, +might have some relevance here. The mobile software vendor is *not* +using the \Draft flag with the APPEND command, but it seems that the +groupware vendor is treating the APPENDed message as such: the +resulting message in the groupware system is user-changeable and +appears essentially in "saved draft" form. The user could modify any +part of it and then hit "Send" and it would go out via local SMTP +again. In the words of the RFC, the appearance of the APPENDed message +to my groupware user is that the "message has not completed +composition". + +(As an aside, the standard practice for this sort of function in the +mobile client arena is to just automatically BCC the user's groupware +account on all mobile sends, providing an unchangeable reference copy +of the mobile-sent message. Unfortunately, my mobile vendor is not +doing that, preferring instead to use the IMAP APPEND to try to +accomplish the same thing. They claim that other groupware/email +systems handle an APPEND differently, presenting the user with the +equivalent of a BCC'd message: the appearance of "already sent" +message, not a "draft" that could be re-sent.) + +Abhijit Menon-Sen on January 31, 2008 at 2:49 AM -0500 +wrote: +>Clients may APPEND to different folders ("sent mail" vs. "drafts") or +>set flags on a message (e.g. \Draft) to indicate one or the other, but +>you're right, IMAP says nothing about this, and different clients do +>things differently. + +There seems to be an inherent conflict there: the very existence of +the \Draft flag defined by the IMAP protocol seems to differentiate +"sent mail" (no \Draft) from "drafts" (using \Draft)....the IMAP +protocol does indeed seem to say something on the topic. Is it logical +that the lack of \Draft mean "not Draft", therefore meaning "completed +composition" and therefore not changeable? + +With this in mind, would a reasonable/correct interpretation be: + * an "APPEND \Draft" creates a message that has the *appearance* +to the user of being an unsent, saved draft message, allowing user +changes (as my groupware vendor is doing with all APPENDs, regardless +of the flags) + * an unflagged "APPEND" creates a message with the *appearance* +to the user as having already been sent, just as if they sent it using +their groupware client, totally unchangeable (as my mobile vendor +intends) + +Getting past my n00b interpretations, I'm curious what the production +behavior of APPEND is (with and without the \Draft flag) in other +groupware/mailsystems that the obviously experienced list members are +knowledgeable about. + +John + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.22893.mbox:2,S new file mode 100644 index 00000000..f7bcece9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.22893.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Oct 30 21:52:27 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <16687.1193801494@succubus.panacea.null.org> +References: + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <1040.1193739773.286509@peirce.dave.cridland.net> + + <16687.1193801494@succubus.panacea.null.org> +Message-ID: + +On Wed, 31 Oct 2007, Joel Reicher wrote: +> How would you handle mailboxes in public "areas" (namespaces, points in +> a hierarchy) without something like the subscription facility? I thought +> the whole idea was that a user might not want to have listed all the +> mailboxes from such an area. Is the expectation now that users setup +> their desired subset on the client, potentially repeating this setup on +> different clients? + +Unfortunately, this is not how subscriptions have been used by most +clients. + +Most clients "work" by doing a one-time LIST of *, SUBSCRIBE all the +returned names, and from then on do LSUB instead of LIST. Any attempt to +use subscriptions in the intended way with one of the few correct clients +will be broken as soon as you use one of the majority clients. + +This came about because the cretins who wrote [censored] over 10 years ago +decided that since "you're not supposed to use * in LIST, that must be a +bug in UW imapd, so this is what we do instead." The majority of clients +have mindlessly copied this behavior ever since. + +I won't name [censored] client, and it is thankfully long extinct. + +IMHO, subscriptions are hopelessly broken and are not reliably +interoperable. This qualifies subscriptions as cruft that should be +deleted from IMAP. I don't like saying this, but at some point it is wise +to cut losses. The benefit of having ones .newsrc exported via IMAP pales +compared to the costs of all these clients that do LIST "" * followed by +thousands of SUBSCRIBE commands. + +If it is desirable to have some way of recording a subset of public +mailboxes for use by multiple clients, it needs to be done by some other +mechanism. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.22911.mbox:2,S new file mode 100644 index 00000000..e5b0c345 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.22911.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From tss at iki.fi Wed Jun 27 07:31:05 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] More evil hierarchy delimiters +Message-ID: <1182954665.3768.348.camel@hurina> + +The RFC says: + + All children of a top-level hierarchy node MUST use + the same separator character. A NIL hierarchy delimiter means + that no hierarchy exists; the name is a "flat" name. + +After first reading I thought that you couldn't mix NIL with another +delimiter, but I guess because the first sentence says "character", not +"delimiter" it is allowed (plus UW-IMAP does it). Maybe the next RFC +could clear that up. + +So, apparently this should be possible: + +1 LIST "" % +* LIST (\NoInferiors) NIL INBOX +* LIST (\NoSelect \HasChildren) "/" childboxes +* LIST (\NoInferiors) NIL foo + +But what about this one: + +1 LIST "" % +* LIST (\NoInferiors) NIL INBOX +* LIST (\NoSelect \HasChildren) "/" childboxes +* LIST (\NoInferiors) NIL "foo/bar" + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.22914.mbox:2,S new file mode 100644 index 00000000..bd526722 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.22914.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 10:48:41 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +Message-ID: + +It appears that Vista Mail refuses to descend any hierarchy that it can not +SUBSCRIBE. Why any client believes that it is reasonable to SUBSCRIBE a +\NoSelect name escapes me. Netscape had a similar bug about a decade ago. + +The workaround is either to make all names be selectable, or to hack the IMAP +server to allow SUBSCRIBE of \NoSelect names. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.22920.mbox:2,S new file mode 100644 index 00000000..da65a10f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.22920.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From tss at iki.fi Mon Mar 12 03:38:55 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] mailbox hierarchy conventions? +In-Reply-To: <19934.1173693223.973130@peirce.dave.cridland.net> +References: <07Mar11.154843pst."57996"@synergy1.parc.xerox.com> + + <07Mar11.162448pst."57996"@synergy1.parc.xerox.com> + + <1173661726.17598.331.camel@hurina> + <07Mar11.195659pst."57996"@synergy1.parc.xerox.com> + + <19934.1173693223.973130@peirce.dave.cridland.net> +Message-ID: <1173695936.17598.340.camel@hurina> + +On Mon, 2007-03-12 at 09:53 +0000, Dave Cridland wrote: +> > Hmm. It probably was enough if the UID was in the "* FETCH" line. +> > At least if the message body was before UID it didn't like that. +> > And by not liking I mean it somehow mixed it up with previous +> > message, causing at least the message's size field to be wrong. +> > +> > Looks like I'm now sending the items also in the requested order, +> > except message headers and body come last always. +> +> I've understood the following to be legal, but I suspect it'd cause +> much breakage: +> +> C: tag UID FETCH u BODY[1] +> S: * s FETCH BODY [1] {n} +> S: ... +> S: * s FETCH UID u +> S: tag OK + +I'm not sure about "FETCH .. (UID BODY[1])", but for "UID FETCH" I think +that's pretty clearly invalid: + + The number after the "*" in an untagged FETCH response is always a + message sequence number, not a unique identifier, even for a UID + command response. However, server implementations MUST implicitly + include the UID message data item as part of any FETCH response + caused by a UID command, regardless of whether a UID was specified + as a message data item to the FETCH. + +Anyway what I meant with my "* FETCH line" comment was that I used to do +this: + +C: tag FETCH s (UID BODY[]) +S: * s FETCH (BODY[] {n} +S: ... UID u) +S: tag OK + +And that was breaking clients. I suppose when they saw BODY[] they +wanted to immediately associate it with some UID before reading anything +after the literal. + +> I'm pretty sure that sending any implicit UID first, then everything +> else all on the same FETCH response, is not going to break anyone. + +Right. :) +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.22974.mbox:2,S new file mode 100644 index 00000000..28076b37 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.22974.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From dave at cridland.net Fri Sep 15 07:00:36 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + +Message-ID: <1434.1158328836.664006@peirce.dave.cridland.net> + +On Fri Sep 15 02:57:15 2006, Mark Crispin wrote: +> In my opinion, the minimum period should be between 5 and 30 +> minutes. NAT has pretty much made it non-viable to go idle for +> more than 5 minutes. + +I'm not sure that's true anymore. Specifically, I know that Linux's +NAT implementation, which accounts for several of the common DSL +routers, doesn't timeout a silent connection until a matter of days. + +It might be interesting to talk to the NAT implementors, and see what +timeouts they're actually using these days. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.23014.mbox:2,S new file mode 100644 index 00000000..1c707190 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.23014.mbox:2,S @@ -0,0 +1,202 @@ +MBOX-Line: From vladimir_butenko at stalker.com Mon Apr 10 13:51:20 2006 +To: imap-protocol@u.washington.edu +From: "Vladimir A. Butenko" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + +Message-ID: + +On Mon, 10 Apr 2006 11:14:08 -0700 (PDT) + Mark Crispin wrote: +> Vladimir's interpretation is valid. The LIST argument is definitely not a +>mailbox name. +> +> However, I disagree about it being useful or desirable compared to other +>interpretations. In particular, I do not think that it is useful or +>desirable for a server to respond to +> tag LIST "" inbox +> with no data because of case-mismatch with INBOX. + +One of the biggest problem with any protocol are "useful exceptions". It has +been proven too many times that whereever a problem (or misunderstanding) +can emerge, it will emerge. + +> The case of +> tag LIST "" In%B% +> is less clear, particularly given that the specification says "uppercase +>string" instead of "case-insensitive" string. +> +> However, the kicker is that (as Vladimir notes) INBOX may be included in +>the output with a case-insensitive server. I disagree with Vladimir's +>interpretation that the specification forces INBOX to be case-sensitive in +>LIST even on a case-insensitive server + +I did not say that. I've said that (according to the written standard): + +a) when interpreting a command with a mailbox name parameter, the server +should interpret any combination of the InBoX letters as a reference to the +INBOX name (which is supposed to be a [virtual] name for the mailbox +accepting incoming mail). + +b) when interpreting the LIST command and its argument (which is a pattern, +not a mailbox name), the special "incoming" mailbox name matches it if the +name INBOX (all caps) matches the specified pattern. + +If a server happens to use case-insensitive names, and, as a result, all +operations (including the pattern match) are case insensitive, then search +results can be different when compared to case-sensitive systems. + +The IMAP protocol does not explicitly specify what the REAL NAME of the +"incoming mailbox" is. If it would specify that the name is INBOX, it would +eliminate a lot of misunderstanding. Unfortunately, it does not. + +> as well as the notion of a "regular +>mailbox named INBOX" vs. a "special name INBOX" (that is an implementation +>detail). + +>Fortunately, though, this discussion is more academic than practical, for +>the following reasons: + +Unfortunately, it's not the case. The initial request was sent to our +support group because the author of the question used "Inbox" as the +reference to the incoming mailbox. And while it works fine with all SELECT & +Co commands, it worked OK with LIST only because it was used on a +case-insensitive platform. Switching to a case-sensitive platform revealed +the problem. + +> The specification uses "INBOX" throughout as the canonical form of the +>name, and hammers on the point that this is case-insensitive. Postel's +>robustness principle (this being a correct use!) says that clients should +>always send the name as "INBOX", and servers should always do a +>case-insensitive match even when the specification allows a loophole. + +This is exactly the answer we have given: using any name instead of INBOX is +a call for trouble. BUT: there is nothing in the IMAP specs that explicitly +says so. And many people who do not know (and have no reason to know) about +all historical details behind the name "INBOX" in all caps, may conclude +that it's OK to use Inbox as that special mailbox name, especially because +many UI applications render it this way. + +> In the case of a client sending +> tag LIST "" inbox +> and getting nothing back, the primary onus is on the client for not using +>the canonical form. The server, arguably, is being naughty too; but the +>loophole exists. +> +> Although the In%B% case is more troubling, I observe it is not something +>that generally occurs in real life. A client which actually uses such a +>pattern is probably looking for names other than INBOX; but I don't think +>that I've ever seen a client use such a pattern. +> +> I think that, although a server should match INBOX to In%B%, Vladimir is +>correct that it does not have to. Even with Vladimir's interpretation, it +>is ambiguous (due to underlying implementation details) whether or not the +>server would return it. So a client should not depend upon the behavior +>either way. + +I'd suggest we put all that "reasonable" stuff aside: the standards are the +standards are the standards. They are created to switch from "reasonable" +(which is, by definition, different for different souls) to [well-defined] +"standard" . + +The question here is simple: +if +a LIST "" "%n%ox" +should show any name for the incoming mailbox should it +show INBOX? Or Inbox? Or InBox? Or InBOx? + +Consider the following: +a) the server should always return the mailbox name in the same "case". If +the server itself returns INBOX in one response and Inbox in others, it will +only create confusion (again, a note that this special mailbox DOES have a +well-defined name, and that name is INBOX would help a lot). The answer - if +it should return anything, it should return INBOX. + +b) If (a) is correct, then the question is: + +should +a LIST "" "%n%ox" +return +* INBOX + +There is no reason why it should - on a case-sensitive system (on a +case-insensitive - it can and should). The only special rule about the INBOX +name that can be used here explicitly says that the upper-case word INBOX +should be compared against the pattern. On a case-senstive system it will +not match the pattern. So, the answer is "no". + +c) If (b) is correct, then the answer to: +should +a LIST "" "Inbox" +return +* INBOX + +is clear: on a case-insensitive system - yes, on a case-sensitive - no. The +reason is simple: "Inbox" in the LIST command is a pattern, not a name. So, +see (b). Also, anything that matches the "Inbox" patten, should match the +"%n%ox" pattern, otherwise we need to add "reasonable exceptions" to the "%" +handling, too. I hope we won't. + + +> I think that we all agree that the following patterns all match INBOX: +> * +> % +> INBOX +> INBOX% +> INBOX* +> and the following patterns do NOT match INBOX: +> %/% +> foo +> foo/% +> INBOX/* +> INBOX/% + +Yes. But servers that do not follow strict and well-defined rules do cause +much more trouble that good. We did observe those servers returning "Inbox" +when List "Inbox" was called, thus causing clients to display 2 different +INBOXes, and we saw servers returning "INBOX" for List "i%" ("paged" mailbox +list display) causing clients to loop (though it's a client problem, as on a +case-insenstive system this later case is legal). + +The "special case" of INBOX is a terrible thing, causing many problems in +any case, so we should try to be as strict as possible about it, and not add +additional "reasonable exceptions". + +Clients should carefully process these names, NOT assuming anything not +already specified in the standard. + +More, +a) what about: + INBOX/mailbox + InBox/mailbox + INBOX/mailBOX + InBox/mailBOX +(our interpretation - 1 and 2 are the same mailbox, 3 and 4 are the same +mailbox, they all are the same mailbox on a case-insensitive system). + +b) what about: + ~user@domain/INBOX + ~user@domain/INBoX + ~user@domain/INBOX/Mailbox + ~user@domain/INBoX/Mailbox + +or whatever notation is used with that server to access "foreign" mailboxes. +(our interpretation - 1 and 2, 3 and 4 they are the same, the INBOX name is +a special name not on the top of the mailbox name hierearchy, but on the top +of the hierarchy for a particular "mailbox set" or "account"). + +The standard does not really say anything about using INBOX in +LSUB/SUBSCRIBE - fortunately, almost no client uses mailbox subscriptions +these days, otherwise it would create even more problems. + +Bottom line - we all agree here, I hope: + +always use INBOX as the name of the "incoming mail" mailbox. + +> -- Mark -- + +Sincerely, +Vladimir + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.23031.mbox:2,S new file mode 100644 index 00000000..6eb948f9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.23031.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Mar 31 15:30:03 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: <1143847047.3985.42.camel@hurina> +References: <1143819932.8744.163.camel@localhost.localdomain> + + <1143843283.3985.18.camel@hurina> + + <1143847047.3985.42.camel@hurina> +Message-ID: + +On Sat, 1 Apr 2006, Timo Sirainen wrote: +> I think two types of insertions would be enough: "insert as sibling to +> message n" and "insert as the first child to message n". + +You need to define the semantics when UID THREAD is used. Also, you need +to define what happens if the new message has children (insertion as +opposed to append). + +> I think that should be easy enough for the clients to handle? + +You'd be surprised at what people find to be "not easy". + +> Well, I'm still mostly just interested in optimizing this internally in +> my server so that the reply gets sent near instantly, but these are +> somewhat related goals in that if I can figure out rules how to quickly +> update the thread list internally, I can easily send out incremental +> updates to clients as well. + +I don't understand. A thread should be nearly instantaneous, even for a +very large mailbox, if you use a hash table. It's probably also a good +idea to cache the data needed to thread so it's available the next time +you thread. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.23051.mbox:2,S new file mode 100644 index 00000000..b314ef64 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.23051.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From dave at cridland.net Thu Nov 24 01:09:07 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: +References: +Message-ID: <27488.1132823348.282206@peirce.dave.cridland.net> + +On Thu Nov 24 00:08:09 2005, Mark Crispin wrote: +> Currently, the only message size limit in IMAP is 4294967295 (2^32 +> - 1) due to IMAP's use of unsigned 32-bit integers. Supporting +> that size is troublesome due to +1 overflow problems. Many +> implementations have much smaller limits, such as both for +> administrative and technical reasons (many filesystems encounter +> problems after 2^31 - 1). +> +> Rather than have this be a secret, I propose a capability called +> MAXAPPENDSIZE=nnn, where nnn is the size. +> +> +I have the strange suspicion that if anyone else had suggested this, +you'd have personally shot the proposal down by pointing out that +maximum message size depends on the mailbox driver and/or the +filesystem the data resides on, rather than the server as a whole, +and thus it needs to be a per-mailbox capability. Since you're +proposing this, it befalls me to shoot it down instead. :-) + +Currently, there's an ever-growing list of these per-mailbox +capabilities, generally handled by adding gumph (untagged OK with a +response-code) to SELECT, meaning that a client has to SELECT the +mailbox before it knows of certain capabilities - I've never liked +this much. I'd prefer to add these as either a new mechanism within +the protocol (that is, a new command, or LIST-EXTENDED extended data +item), or by extending some other item (such as STATUS, or +ANNOTATEMORE). Other examples are CONDSTORE, ANNOTATE, etc. + +I'm not interested in command line length at all, perhaps because I +would hate to add that code to Polymer. (Although Polymer does, of +course, use set-syntax, and UID ranges are extended over non-existent +UIDs in order to reduce the size). + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095141.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095141.23059.mbox:2,S new file mode 100644 index 00000000..b3f783ba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095141.23059.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 7 09:57:44 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <5b93232d05090709125cea8c08@mail.google.com> +References: + <5b93232d050907075812659c02@mail.google.com> + + <5b93232d05090709125cea8c08@mail.google.com> +Message-ID: + +Rob Siemborski writes: +> Offhand I prefer the second, since it clarifies exactly what is +> expected, as opposed to leaving it up for interpretation. + +Agreed. + +> PS (is anyone else getting lots of bounces from amazon and +> internet-drafts@ietf.org in this thread?) + +I wouldn't notice amazon. But I get a notice thanking me for submitting +an internet-draft every time I post to this list. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.22807.mbox:2,S new file mode 100644 index 00000000..7f941249 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.22807.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sun Jun 13 01:58:10 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <1768814180.483.1276267238967.JavaMail.root@dogfood.zimbra.com> + <1276267479.22134.102.camel@kurkku.sapo.corppt.com> + + <1276274718.22134.138.camel@kurkku.sapo.corppt.com> + <30B328B7-4D1B-4C7E-96CA-E37F7919E2A6@iki.fi> + +Message-ID: <4C149DA2.3050809@gulbrandsen.priv.no> + +On 06/13/2010 01:33 AM, Tony Finch wrote: +> On Fri, 11 Jun 2010, Timo Sirainen wrote: +>> +>> a COPY 1:100 elsewhere +>> b IF-OK STORE 1:100 +flags \deleted +>> c IF-OK EXPUNGE +> +> Reminds me of ARM assembler :-) + +Now that you say it ;) + +And IMO an ARM assembly extension is the very thing we don't need. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.22883.mbox:2,S new file mode 100644 index 00000000..e13803ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.22883.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From tss at iki.fi Thu Jan 31 11:39:42 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] INTHREAD extension +Message-ID: <1201808382.8854.206.camel@hurina> + +Is anything happening to draft-gulbrandsen-imap-inthread? I'm probably +going to be implementing something like it in a few months. + +I'd like to make it slightly simpler though. I think it would be enough +if it worked only with THREAD command, and only using the same thread +algorithm as selected for THREAD. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.22893.mbox:2,S new file mode 100644 index 00000000..8798a895 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.22893.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From joel at panacea.null.org Tue Oct 30 22:11:27 2007 +To: imap-protocol@u.washington.edu +From: Joel Reicher +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <1040.1193739773.286509@peirce.dave.cridland.net> + + <16687.1193801494@succubus.panacea.null.org> + +Message-ID: <1311.1193807487@succubus.panacea.null.org> + +> IMHO, subscriptions are hopelessly broken and are not reliably +> interoperable. This qualifies subscriptions as cruft that should be +> deleted from IMAP. I don't like saying this, but at some point it is wise +> to cut losses. The benefit of having ones .newsrc exported via IMAP pales +> compared to the costs of all these clients that do LIST "" * followed by +> thousands of SUBSCRIBE commands. +> +> If it is desirable to have some way of recording a subset of public +> mailboxes for use by multiple clients, it needs to be done by some other +> mechanism. + +Thinking about this more, I'm tending toward the idea that subscriptions +are a type of client configuration data. Doing them with ACAP might be +the way to go. + +Cheers, + + - Joel + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.22911.mbox:2,S new file mode 100644 index 00000000..e17c3afe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.22911.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Jun 27 09:31:01 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: <1182953618.3768.338.camel@hurina> +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> + + <1182953618.3768.338.camel@hurina> +Message-ID: + +On Wed, 27 Jun 2007, Timo Sirainen wrote: +>> More importantly, what happens if the different namespaces have different +>> hierarchy semantics; different delimiters, different ways of expressing +>> root, etc.? Maybe a particular namespace doesn't have hierarchy at all. +> NAMESPACE reply returns the prefixes and you can compare those to the +> mailbox name. How is a "foo/" prefix any more ambiguous than "#foo/" +> prefix? + +That makes two false assumptions: + (1) that there is such a thing as a string prefix matching (which, unlike + the # breakout character, is documented nowhere) that has priority + over other semantics. + (2) NAMESPACE is implemented and used by both client and server. + +Remember, NAMESPACE is an extension, and is optional to implement for both +client and server. If the server does not implement NAMESPACE, then you +have a server which, for no apparent reason (since the only warning in the +base specification about such things is with the # breakout), changes +hierarchy semantics in a non-deterministic fashion. + +Here's what you really missed, if the client does not implement NAMESPACE, +the same thing happens: you have a server which, for no apparent reason, +changes hierarchy semantics in a non-deterministic fashion! + +More importantly, there is an additional false assumption, which is that a +specification can always tell you what is permitted and what is forbidden. +In any human endeavor, there is a HUGE grey area, impossible to itemize, +of behaviors which are not explictly forbidden but nonetheless should not +be done. The razor for this grey area is something called "common sense". + +>> Does your server list all other users' mailboxes with that command (since +>> after all a user may have a public access mailbox)? Why not? +> I was actually going to make it do that, once support for shared +> mailboxes is finished. + +Any server that automatically lists all other users' mailboxes by default +has huge privacy problem. The fact that another user's mailbox may be +accessible does not necessarily mean that it should be listed, especially +not by default in a LIST command that does not explicitly choose that +other user. + +I'm trying to understand your purpose in doing this: are you trying to +drive people away from your server by adding harmful bugs? I think that +your server is valuable, if only to give maildir users an alternative to +the broken Courier server, but it'll be difficult for me to recommend your +server if it has this type of bug. + +>> Does your server do an "ls -R /" for that command? Why not? +> If user's mailbox root directory is set to /, then yes.. + +You miss the point. If you are including other users' mailboxes and other +namespaces by default in a default-namespace list, then you are +effectively doing "ls -R /" for everybody, regardless of where their +mailbox's root directory is set. + +> I've understood that many commonly used clients ignore namespaces and +> only show what is visible with LIST "" %, so I'd want to keep it +> possible to list contents of all namespaces with it. + +I am trying to tell you that that is NOT a very good idea; and this is +from real-world experience. + +If you do this, you are going to have a huge set of mailboxes listed, and +many users will react with "what is all this junk in my account, I need to +delete it." + +This happens with stupid clients that implement NAMESPACE and then proceed +to list all of those. The user complaints are continuous and regular: +they want to know how to delete these junk names from their account. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.22914.mbox:2,S new file mode 100644 index 00000000..ded4fcd3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.22914.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From lyndon at orthanc.ca Wed May 30 11:40:25 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: +Message-ID: <20070530113546.Q27473@orthanc.ca> + +> Why any client believes that it is reasonable to SUBSCRIBE a +> \NoSelect name escapes me. + +Why not? It's perfectly valid to subscribe to a folder that doesn't even +exist. I don't see any difference between being subscribed to a +non-existent folder and a \noselect folder; you can't select either one, +but subscribe doesn't provide a guarantee that you could anyway. + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.22920.mbox:2,S new file mode 100644 index 00000000..de69a248 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.22920.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 08:51:42 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Re: configuring pine to test an IMAP server? +In-Reply-To: +References: <07Mar11.233904pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar12.075149pst."57996"@synergy1.parc.xerox.com> + +> You probably want something like: +> inbox-path = {myserver.example.com:1234}INBOX + +Excellent, thanks, that's what I'm looking for. Would help to put +that in the FAQ. Did I just miss it? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.22974.mbox:2,S new file mode 100644 index 00000000..8060b1d9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.22974.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Sep 15 07:10:02 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <1434.1158328836.664006@peirce.dave.cridland.net> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + <1434.1158328836.664006@peirce.dave.cridland.net> +Message-ID: + +On Fri, 15 Sep 2006, Dave Cridland wrote: +>> In my opinion, the minimum period should be between 5 and 30 minutes. NAT +>> has pretty much made it non-viable to go idle for more than 5 minutes. +> I'm not sure that's true anymore. Specifically, I know that Linux's NAT +> implementation, which accounts for several of the common DSL routers, doesn't +> timeout a silent connection until a matter of days. + +I would expect that Linux plays nice. + +That doesn't apply to the non-Linux DSL routers and standalone NAT boxes +out there. An attacker can make a Linksys box toss its NAT mappings in a +matter of seconds from previous activity. + +You can't assume that they're all Linux, so all is well. Linux based +boxes are the minority. FWIW, Linksys used Linux for a while, and then +went back to a proprietary OS. So it isn't clear what the trend actually +is. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.23014.mbox:2,S new file mode 100644 index 00000000..741384d0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.23014.mbox:2,S @@ -0,0 +1,140 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Apr 10 15:10:08 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + +Message-ID: + +On Mon, 10 Apr 2006, Vladimir A. Butenko wrote: +> One of the biggest problem with any protocol are "useful exceptions". It has +> been proven too many times that whereever a problem (or misunderstanding) can +> emerge, it will emerge. + +I agree. + +This is where Postel's robustness principle comes in. Sadly, many people +misunderstand it to mean that protocol engines should be tolerant of +syntax errors as opposed to being a razor for dealing with ambiguous +interpretations. + +> If a server happens to use case-insensitive names, and, as a result, all +> operations (including the pattern match) are case insensitive, then search +> results can be different when compared to case-sensitive systems. + +I forget why we decided to say "uppercase" instead of "case-insensitive" +for pattern matching with INBOX. But the wording leaves no doubt that we +did decide that, and the result is ambiguity in the search results. + +> The IMAP protocol does not explicitly specify what the REAL NAME of the +> "incoming mailbox" is. If it would specify that the name is INBOX, it would +> eliminate a lot of misunderstanding. Unfortunately, it does not. + +Ummm...well... + +I consider the difference between "real name" and INBOX to be an +implementation detail; in the protocol itself, there is no difference. + +> The initial request was sent to our support +> group because the author of the question used "Inbox" as the reference to the +> incoming mailbox. And while it works fine with all SELECT & Co commands, it +> worked OK with LIST only because it was used on a case-insensitive platform. +> Switching to a case-sensitive platform revealed the problem. +> [snip] +> This is exactly the answer we have given: using any name instead of INBOX is +> a call for trouble. + +I agree completely! + +> BUT: there is nothing in the IMAP specs that explicitly +> says so. And many people who do not know (and have no reason to know) about +> all historical details behind the name "INBOX" in all caps, may conclude that +> it's OK to use Inbox as that special mailbox name, especially because many UI +> applications render it this way. + +Hmm. What do other people think? Should there be a statement in the LIST +command to this effect? + +> The question here is simple: +> if +> a LIST "" "%n%ox" +> should show any name for the incoming mailbox should it +> show INBOX? Or Inbox? Or InBox? Or InBOx? + +My personal opinion (NOT "Mr. IMAP Protocol") says that it should always +return "INBOX", and this is the one true canonical name. + +My personal option also says that a LIST pattern of "Inbox" or "%n%ox" +matches INBOX. + +Mr. IMAP Protocol, on the other hand, says that it does not matter what is +returned; "INBOX" and "InBoX" and "Inbox" are all the same name and that +the client can make no assumptions based on the case of the pattern when +it comes to INBOX. + +Mr. IMAP Protocol also says that the client can not assume that "Inbox" or +"%n%ox" will match INBOX. + +After Mark and Mr. IMAP Protocol strangle each other, they come out with a +joint statement of "it's ambiguous that way, so clients shouldn't do it." + +> The "special case" of INBOX is a terrible thing, causing many problems in any +> case, so we should try to be as strict as possible about it, and not add +> additional "reasonable exceptions". + +I don't think that I was adding any "reasonable exceptions". Rather, I +was simply trying to apply Postel's robustness principle. The important +thing here is for the client to "be conservative" since there is no way to +guarantee particular server performance. + +> Clients should carefully process these names, NOT assuming anything not +> already specified in the standard. + +Agreed. + +> More, +> a) what about: +> INBOX/mailbox +> InBox/mailbox +> INBOX/mailBOX +> InBox/mailBOX +> (our interpretation - 1 and 2 are the same mailbox, 3 and 4 are the same +> mailbox, they all are the same mailbox on a case-insensitive system). + +My interpretation: + +I agree that they are all the same mailbox on a case-insensitive system. + +I don't know how many mailboxes (2 or 4) it may be on a case-sensitive +system; I think that it is implementation-dependent. Had I thought about +it at the time, I would have prohibited INBOX from being a "dual-use" +name. I agree that your interpretation is superior. + +> b) what about: +> ~user@domain/INBOX +> ~user@domain/INBoX +> ~user@domain/INBOX/Mailbox +> ~user@domain/INBoX/Mailbox +> or whatever notation is used with that server to access "foreign" mailboxes. +> (our interpretation - 1 and 2, 3 and 4 they are the same, the INBOX name is a +> special name not on the top of the mailbox name hierearchy, but on the top of +> the hierarchy for a particular "mailbox set" or "account"). + +In this case, I definitely do not know. I think that it's implementation +dependent. I don't know if "~" showing up in NAMESPACE makes a +difference. + +> Bottom line - we all agree here, I hope: +> always use INBOX as the name of the "incoming mail" mailbox. + +Yes! + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.23031.mbox:2,S new file mode 100644 index 00000000..031d6b35 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.23031.mbox:2,S @@ -0,0 +1,16 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Mar 31 15:54:13 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] draft-szego-wcor-imap-00.txt +Message-ID: + +I just became aware of this document. I don't think that IMAP is the +right place for this functionality. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.23051.mbox:2,S new file mode 100644 index 00000000..63ab1569 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.23051.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Nov 24 03:16:49 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: <43858BAB.7080404@sun.com> +References: + <27488.1132823348.282206@peirce.dave.cridland.net> + <43858BAB.7080404@sun.com> +Message-ID: <1Ni+dLjs8cLqB5kdgdSBaA.md5@[10.0.0.123]> + +Arnaud Taddei writes: +> Though here this is a general APPEND config and it is why I don't see +> it as a per folder mechanism. + +Different folder formats have different maximum message sizes. + +That said, I think the idea isn't terribly good. The practical maximum +I've run into is related to disk quota or free disk space, not to a +server-imposed maximum. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095142.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095142.23059.mbox:2,S new file mode 100644 index 00000000..8aa7889d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095142.23059.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Sep 7 10:12:59 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: + <5b93232d050907075812659c02@mail.google.com> + +Message-ID: + +Mark Crispin writes: +> My preference would be either to: +> . leave the current wording as-is +> or +> . change it to an explicit statement that server behavior (and subsequent +> state of \Recent flags) with extraneous SELECT is undefined and +> implementation dependent. +> That way, existing servers are not declared broken, and clients are +> put on notice not to use this as a hack to clear \Recent flags. + +Example: + +At this time, the first message in a mailbox has UID 1000 and the second +has UID 2000. Two clients are connected to the server. + +1. Client 1 issues EXAMINE for the mailbox. +2. Client 2 deletes the message with MSN 1 and UID 1000, and issues EXPUNGE. +3. Client 1 upgrades to SELECT the mailbox. +4. Client 1 issues "fetch 1 uid". + +Is the response 1000 or 2000? I'd rather define 2000 to be the one true +response. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.22807.mbox:2,S new file mode 100644 index 00000000..a8eba0eb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.22807.mbox:2,S @@ -0,0 +1,97 @@ +MBOX-Line: From dave at cridland.net Mon Jun 14 03:13:57 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006120124.53714.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + + <201006120124.53714.witold.krecicki@firma.o2.pl> +Message-ID: <29965.1276510437.099598@puncture> + +On Sat Jun 12 00:24:53 2010, Witold Kr?cicki wrote: +> On Saturday 12 of June 2010 01:16:36 Philip Guenther wrote: +> > Uh, what? It sounds like you're saying that you're going to +> build a +> > system where MOVE is fast (so single message rename is fast) but +> then +> > intentionally *not* take advantage of the design to use hardlinks +> to make +> > COPY fast. Claiming that using hardlinks is "not a normal +> method" when +> > it's been in use for better than a decade requires some +> justification. +> Even if used for over a decade it is STILL a performance hack. +> +> +This is amusing. Your argument appears to be that a sensible, common, +implementation of a mandatory protocol feature is, somehow, +undesirable. + +Your overall argument also appears to be that: + +a) MOVE is simpler for client authors. However, client authors would +still have to move messages without this extension, hence have to +provide multiple codepaths to achieve the same - really quite simple +- facility. + +b) MOVE may be simpler for server authors. However, server authors +who cannot implement COPY are themselves at a disadvantage. + +c) It doesn't matter if MOVE is non-atomic, or introduces a new +irreversable removal of data from a mailbox. This sends shivers up my +spine. This is surely not an extension critical enough to break IMAP +semantics, is it? + +d) If MOVE turns out to be hard in an existing, conformant +implementation, then the implementation is somehow broken. + +> > That's odd, as I believe I saw messages from two people (Dave and +> Arnt) +> > saying that it seems unnecessary. As a former mail store +> developer +> > (single-instance, file per message with DB indexes, style), I +> agree with +> > them that this seems unnecessary and not condusive to IMAP +> > interoperability. I.e., *this* part of the previous silence +> disagrees +> > with you. +> I've talk with Arnt and he thinks that it it a good idea. +> +> +Yes, I agree it's a good idea, too. But the barriers to it are just +far, far too large to be worthwhile overcoming, given the scope of +the extension. An extension like this you really want to be +implementable *everywhere*, and this just doesn't feel right. + + +> Daves argument that the idea of 'trash can' is broken and people +> should just +> delete their mails (or IMAP should create a 'trash can' model) it's +> IMHO +> simply out of this world - people want to have a trash can and be +> able to +> recover deleted e-mails. + +1) I am not advocating that "people should just delete their mails". +IMAP has a two phase delete, so I *am* advocating that clients - not +people - should just mark emails as deleted. + +2) I concur that people like the trash can metaphor, and would +encourage client authors to *use* IMAP's facilities to model same. + +3) A trash-can, like IMAP's \Deleted flag, is a model conforming to a +two-phase delete, from which the first phase is recoverable. The +\Deleted flag means the first phase can be reversed entirely, whereas +a trash-can mailbox - being bolted on to IMAP without the server's +knowledge - cannot be. So to characterise my position as not wishing +to allow people to recover deleted emails is just being silly. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.22883.mbox:2,S new file mode 100644 index 00000000..f18cb9b2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.22883.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jan 31 12:25:33 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] INTHREAD extension +In-Reply-To: <1201808382.8854.206.camel@hurina> +References: <1201808382.8854.206.camel@hurina> +Message-ID: + +Timo Sirainen writes: +> Is anything happening to draft-gulbrandsen-imap-inthread? I'm probably +> going to be implementing something like it in a few months. + +I let it lie. Started work on that again only last December, and I now +plan to finish my implementation first. + +> I'd like to make it slightly simpler though. I think it would be +> enough if it worked only with THREAD command, and only using the same +> thread algorithm as selected for THREAD. + +Elaborate, please? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.22893.mbox:2,S new file mode 100644 index 00000000..71f15b48 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.22893.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From Hagedorn at spinfo.uni-koeln.de Wed Oct 31 03:21:46 2007 +To: imap-protocol@u.washington.edu +From: Sebastian Hagedorn +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> + <1193689139.25921.618.camel@hurina> <472653EE.9080102@psaux.com> + + + + <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> + +Message-ID: + +--On 29. Oktober 2007 17:59:42 -0700 Mark Crispin +wrote: + +> On Tue, 30 Oct 2007, Timo Sirainen wrote: +>> A lot of people +>> want shared mailboxes and besides administrator configuring them +>> manually ACL is the only possibility. Clients don't currently have much +>> support for it, but it doesn't really need support from normal clients. +>> Just having some special "ACL (web)client" is enough. I hoped to have +>> implemented ACL for my server this summer, but looks like it didn't +>> happen. +> +> I'm not convinced that this needs to be part of IMAP as opposed to an +> external facility (such as you note is already done). +> +>> I think quota is already pretty widely supported by clients, although in +>> very limited form. If people have quota, they really want to know how +>> much they have left (when they've reached the limit once..). Quota root +>> is a pretty weird concept though and I don't think clients handle +>> multiple ones well. Maybe QUOTA2 extension could do a better job with +>> those. +> +> I don't think that many IMAP clients (as opposed to webmails) report +> quota. Again, this seems to be an external facility. + +If those extensions didn't already exist, you would have a point. They +could've been created as external facilities. But I don't see what taking +them out of IMAP now would achieve. The claimed dichotomy between IMAP +clients and webmail doesn't really exist, because those webmailers are IMAP +clients too. They may not be exemplary ones, but they're what many of our +users prefer. +-- + .:.Sebastian Hagedorn - RZKR-R1 (Geb?ude 52), Zimmer 18.:. +Zentrum f?r angewandte Informatik - Universit?tsweiter Service RRZK +.:.Universit?t zu K?ln / Cologne University - ? +49-221-478-5587.:. + .:.:.:.Skype: shagedorn.:.:.:. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.22911.mbox:2,S new file mode 100644 index 00000000..ab80657d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.22911.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Jun 27 09:35:50 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] More evil hierarchy delimiters +In-Reply-To: <1182954665.3768.348.camel@hurina> +References: <1182954665.3768.348.camel@hurina> +Message-ID: + +On Wed, 27 Jun 2007, Timo Sirainen wrote: +> The RFC says: +> All children of a top-level hierarchy node MUST use +> the same separator character. A NIL hierarchy delimiter means +> that no hierarchy exists; the name is a "flat" name. +> After first reading I thought that you couldn't mix NIL with another +> delimiter, but I guess because the first sentence says "character", not +> "delimiter" it is allowed (plus UW-IMAP does it). Maybe the next RFC +> could clear that up. + +No. Your confusion here is that INBOX is in a class by itself. It is not +part of the default namespace. That's why the RFC goes on to say that +INBOX is included in the LIST results if it matches the pattern; that too +is a special rule since otherwise INBOX would not be listed. + +Both of your examples are not possible: + +> 1 LIST "" % +> * LIST (\NoInferiors) NIL INBOX +> * LIST (\NoSelect \HasChildren) "/" childboxes +> * LIST (\NoInferiors) NIL foo +> +> 1 LIST "" % +> * LIST (\NoInferiors) NIL INBOX +> * LIST (\NoSelect \HasChildren) "/" childboxes +> * LIST (\NoInferiors) NIL "foo/bar" + +because the second and third items have conflicting hierarchy semantics. +The first example (INBOX) does not conflict since INBOX is not part of the +default namespace. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.22914.mbox:2,S new file mode 100644 index 00000000..677feea2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.22914.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed May 30 11:46:21 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <20070530113546.Q27473@orthanc.ca> +References: + <20070530113546.Q27473@orthanc.ca> +Message-ID: + +On Wed, 30 May 2007, Lyndon Nerenberg wrote: +>> Why any client believes that it is reasonable to SUBSCRIBE a \NoSelect name +>> escapes me. +> Why not? It's perfectly valid to subscribe to a folder that doesn't even +> exist. I don't see any difference between being subscribed to a non-existent +> folder and a \noselect folder; you can't select either one, but subscribe +> doesn't provide a guarantee that you could anyway. + +That begs the question as to what point there is to subscribing the +\NoSelect name, and why Vista Mail feels that a server's refusal to +subscribe such a name means that it should not allow access to any +children of that name! + +Note that RFC 3501 says: + A server MAY validate the mailbox argument to SUBSCRIBE to verify + that it exists. However, it MUST NOT unilaterally remove an + existing mailbox name from the subscription list even if a mailbox + by that name no longer exists. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.22920.mbox:2,S new file mode 100644 index 00000000..4170134d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.22920.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 12:14:22 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +In-Reply-To: +References: <"07Mar11. 134508pst. 57996"@synergy1.parc.xerox.com> + <5aK4EfZGxwhHX3617xc/FQ.md5@libertango.oryx.com> + +Message-ID: <07Mar12.111430pst."57996"@synergy1.parc.xerox.com> + +> Try Pine/Alpine, since it uses almost all of IMAP's facilties and does so +> in advanced ways that many other IMAP clients do not. Pine/Alpine is the +> closest thing we have today to an IMAP server "acid test". Be sure to try +> searching, complex filters, and detaching of nested attachments. + +Pine's helped quite a bit. I found a bug in my LIST implementation +which was preventing me from seeing all the folders on my server. + +Thanks again. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.22974.mbox:2,S new file mode 100644 index 00000000..9e20f9c0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.22974.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Sep 15 07:37:13 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + +Message-ID: + +On Fri, 15 Sep 2006, Arnt Gulbrandsen wrote: +>> Instead of looking at it from the protocol viewpoint, you are looking at it +>> from the viewpoint of how some server implementation may implement it. +> I'd say: I'm looking at what the promises made by IMAP standard to client +> authors, which standards-conformant servers must fulfill. In particular what +> promises made about the effects of the EXPUNGE command. + +It's not much different from what promises are made by operating systems +when a process deletes a file when some other process has the file open. +On UNIX, the file is deleted; on Windows NT, the delete is rejected. + +Neither pulls the rug out from the other process. Specifically, on UNIX +the other process continues to access the file and its data for as long as +it wants as if it wasn't deleted. + +> My issue is rather the opposite - can a client force destruction of a message +> on a server, such that other IMAP clients cannot access the message? + +It can stop new access; that is, a new SELECT from accessing the message. + +What it can not do is stop IMAP clients which are already accessing the +message (which is what SELECT does) from accessing the message. It can +only get those other clients to de-access the message at defined points in +their session. Those points are normally quite frequent in an IMAP +session. + +> (Btw, I changed our code today to use 4.1.2+loopbreaker. The first time a +> client fetches a message which another client has expunged, but whose expunge +> has not yet been reported in this session, the server issues a NO as in +> 4.1.2, and makes a note of the UID(s). If any of those UIDs are fetched again +> before the server can report the expunge, the server issues a BYE. When it +> reports expunges, it clears its UID set. I think that's as good as +> 4.1.1+period.) + +I think that 4.1.2 is a bug, and servers that do it are broken. + +I think that the security issues are specious (otherwise, we wouldn't be +using UNIX). It's all a matter of 4.1.1/4.1.4 being difficult to +implement with maildir-style one-file/one-message mail store and +4.1.2/4.1.3 being easy. + +When a client author complains to me about such servers (and they do +complain), my response is "complain to that server's vendor." + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.23014.mbox:2,S new file mode 100644 index 00000000..e1159cf4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.23014.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From vladimir_butenko at stalker.com Mon Apr 10 14:15:04 2006 +To: imap-protocol@u.washington.edu +From: "Vladimir A. Butenko" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + +Message-ID: + +On Mon, 10 Apr 2006 14:01:36 -0700 (Pacific Daylight Time) + Mark Crispin wrote: +> I think that your message (which you sent only to me) raises some good +>points. May I forward it to the imap-protocol mailing list, and answer it +>there? + +Sure. I'm at home and lovely PacBell/SBC/AT&T/whatever it is now - broke the +connection right when I finished writing it, and went down for 40 mins - so +I had to re-assemble the letter later and, obviously, did not put the +correct addresses in. Sorry about that - please forward it to the list. + + Or do you prefer that this discussion remain private? + +> I think that the only point of contention is if we need to declare another +>errata to RFC 3501 or decide that it's good enough the way it is. + +I do not see any real "error" in the current protocol specs. But some +clarification would be a good thing - if/when you plan to release a new +version of that RFC. + +Ideally, the IMAP standard should be broken in 2 - the "Mail store standard" +with all semantics of the mail store (including all that INBOX mess, ACLs, +renaming of INBOX, case sensitivity, the UTF-7 encoding of mailbox names, +etc, etc.,) and the "IMAP proper" - the protocol itself. The first standard +should also specify how other protocols should access mail store. For +example, what should happen if I read mail via POP and some message has been +deleted and some has been added? We know what will happen (the client should +not see the change in message #s, and attempts to retrieve the deleted +message should return -Err or an empty message) - but there should be a +place to explain all these things. And the IMAP protocol (or POP protocol) +specs are not the right place for all these things. + +Feel free to forward this part to the list, too - unfortunately, I cannot +afford to help you with these changes, even if you agree with them. +Hopefully, some folks on the mailing list will be willing to meet this +challenge. + +> -- Mark -- +> +> http://staff.washington.edu/mrc +> Science does not emerge from voting, party politics, or public debate. +> Si vis pacem, para bellum. + +Sincerely, +Vladimir + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.23031.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.23031.mbox:2,S new file mode 100644 index 00000000..560e148d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.23031.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From chappa at math.washington.edu Fri Mar 31 23:12:19 2006 +To: imap-protocol@u.washington.edu +From: Eduardo Chappa +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Thread extension +In-Reply-To: <1143847047.3985.42.camel@hurina> +References: <1143819932.8744.163.camel@localhost.localdomain> + + <1143843283.3985.18.camel@hurina> + + <1143847047.3985.42.camel@hurina> +Message-ID: + +Timo, + + I have a patch for Pine that implements this idea for Pine by modifying +the client, not the server. What it done is to sort by Arrival and by +thread, then take the thread containing the last message in sort by +arrival and put that thread in the bottom of the list, then remove both +threads from both lists (threaded and by arrival) and repeat until we are +done. I call this sort the thread by arrival. + + Replacing arrival sort by subject sort is also very useful, but it does +not seem to be very useful for other sort methods (e.g. From, or size). + + You can find the patch in my web page (see below). Look for "Enhanced +Fancy Thread Interface". + +-- +Eduardo +http://www.math.washington.edu/~chappa/pine/ + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.23051.mbox:2,S new file mode 100644 index 00000000..9938f67e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.23051.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tss at iki.fi Thu Nov 24 03:19:53 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: +References: +Message-ID: <1132831193.14231.285.camel@localhost.localdomain> + +On Wed, 2005-11-23 at 16:08 -0800, Mark Crispin wrote: +> I am considering the addition of a trivial new capability to IMAP that +> would advertise the maximum size of a message in APPEND (and probably also +> CATENATE). This has the same purpose as the SIZE capability in SMTP. +> +> Currently, the only message size limit in IMAP is 4294967295 (2^32 - 1) +> due to IMAP's use of unsigned 32-bit integers. Supporting that size is +> troublesome due to +1 overflow problems. Many implementations have much +> smaller limits, such as both for administrative and technical reasons +> (many filesystems encounter problems after 2^31 - 1). +> +> Rather than have this be a secret, I propose a capability called +> MAXAPPENDSIZE=nnn, where nnn is the size. + +Well, personally I don't see a need for it. If you're sending message +size in APPEND as a normal literal, the server can reject it +immediately. So it would be useful for literalplus only. + +And is it really the message size limit that's a problem? If your +system/code is able to handle only 2GB files, how does 10MB message size +limit help if the whole mailbox size is already 1,99GB? + +Also I think in many (most?) cases you'll reach out-of-quota condition +before server's maximum allowed message size, and in that case it +doesn't matter what the message size limit was. + +Is +1 overflow problem really an issue? If you're using 32bit file +offsets, the file limit is 2GB. As long as you're using unsigned +integers to perform your internal calculations, there are no overflow +problems. If you want larger files, you're using 64bit offsets and again +there are no overflow problems. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095143.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095143.23059.mbox:2,S new file mode 100644 index 00000000..ccd1139f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095143.23059.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From daboo at isamet.com Wed Sep 7 10:22:08 2005 +To: imap-protocol@u.washington.edu +From: Cyrus Daboo +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +Message-ID: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + +Hi, + +--On September 7, 2005 4:09:56 PM +0200 Arnt Gulbrandsen + wrote: + +> The SELECT command automatically deselects any +> currently selected mailbox before attempting the new selection. +> Consequently, if a mailbox is selected and a SELECT command that +> fails is attempted, no mailbox is selected. + +What does 'fails' mean in this context? Does it mean both 'NO' and 'BAD' +responses, or only 'NO'? + +I ask because the CMU server remains in the previous selected state, if a +subsequent SELECT results in a 'BAD' response. It correctly leaves selected +state if a subsequent SELECT results in a 'NO'. + + +-- +Cyrus Daboo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.22807.mbox:2,S new file mode 100644 index 00000000..4e2ba2ee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.22807.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 03:22:36 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276510437.099598@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> +Message-ID: <201006141222.36523.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 12:13:57 Dave Cridland wrote: +> 1) I am not advocating that "people should just delete their mails". +> IMAP has a two phase delete, so I *am* advocating that clients - not +> people - should just mark emails as deleted. +Yet they don't. +> 2) I concur that people like the trash can metaphor, and would +> encourage client authors to *use* IMAP's facilities to model same. +But they don't. +> 3) A trash-can, like IMAP's \Deleted flag, is a model conforming to a +> two-phase delete, from which the first phase is recoverable. The +> \Deleted flag means the first phase can be reversed entirely, whereas +> a trash-can mailbox - being bolted on to IMAP without the server's +> knowledge - cannot be. So to characterise my position as not wishing +> to allow people to recover deleted emails is just being silly. +Yes, that would be true, in a perfect world. + +In here however most clients do EXPUNGE independently of user interaction, and +- in most cases - right after +store \Delete. + +Oh, and in here most clients do use 'trash can' functionality using 'Trash' +folder. Not just because they like to, but because IMAP is not the only way to +access mailboxes - and using \Delete flag would eg. require user to download +deleted e-mails using eg. POP (assuming that pop server doesn't know anything +about flags). + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.22883.mbox:2,S new file mode 100644 index 00000000..f3d4e5d1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.22883.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jan 31 12:51:39 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] INTHREAD extension +In-Reply-To: <0728004D-B194-4C4B-A4BA-F6E0E6048082@iki.fi> +References: <1201808382.8854.206.camel@hurina> + + <0728004D-B194-4C4B-A4BA-F6E0E6048082@iki.fi> +Message-ID: + +Timo Sirainen writes: +> The main use I see for INTHREAD is to let client display a list of +> threads where a search condition matches. + +I see. (That's my second purpose, too.) + +> This would be done with THREAD algorithm .. INTHREAD same-algorithm .. +> command. + +I thought of SEARCH INTHREAD for that. That gives a more natural +fallback to servers without INTHREAD. + +> And since they use the same algorithms, it's most likely possible to +> optimize for that (I haven't thought of how yet). + +Maybe. Not for me: My code will be a bit faster and use less disk space +if everyone uses the same algorithm, but if two algorithms are used, it +doesn't matter whether they're used by the same or by two different +clients. + +> But if the INTHREAD needs to work with different algorithm than THREAD +> or if SEARCH INTHREAD is allowed, it can't use the THREAD's optimized +> code path, requiring an alternative nonoptimized code path which will +> be rarely (if ever) used. +> +> Do you see any real use for SEARCH INTHREAD + +Yes. But I also want INTHREAD in the search key used to control mailbox views. + +> or THREAD algo1 INTHREAD algo2 commands? + +No that. Not at all. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.22893.mbox:2,S new file mode 100644 index 00000000..92221188 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.22893.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Oct 31 04:14:02 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Multiappend +In-Reply-To: +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <1040.1193739773.286509@peirce.dave.cridland.net> + +Message-ID: + +Mark Crispin writes: +> MULTIAPPEND is crucial when transferring mailboxes from one server to +> another. Otherwise you have to use a non-IMAP mechanism to do it +> properly. +> +> Multiple appends using LITERAL+ have the same number of RTTs, but do +> not guarantee atomicity or full-success/full-failure. + +if I understand you correctly, you're saying that one should use +multiappend to transfer an entire mailbox with one command. + +I was afraid that someone might do that, so I didn't implement +multiappend. I know people whose average mailbox size is 200MB (no idea +what the top decile looks like ;) and transactions that large could be +a problem. Single IMAP commands that large could be a problem, too. My +code would have real problems with it. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.22911.mbox:2,S new file mode 100644 index 00000000..d8c96671 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.22911.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From tss at iki.fi Wed Jun 27 10:45:01 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> + + <1182953618.3768.338.camel@hurina> + +Message-ID: <1182966301.3768.383.camel@hurina> + +On Wed, 2007-06-27 at 09:31 -0700, Mark Crispin wrote: +> Here's what you really missed, if the client does not implement NAMESPACE, +> the same thing happens: you have a server which, for no apparent reason, +> changes hierarchy semantics in a non-deterministic fashion! + +OK, I guess that makes some sense then if the client allows user to +request listing mailboxes under some name instead of finding them out +itself. + +> >> Does your server list all other users' mailboxes with that command (since +> >> after all a user may have a public access mailbox)? Why not? +> > I was actually going to make it do that, once support for shared +> > mailboxes is finished. +> +> Any server that automatically lists all other users' mailboxes by default +> has huge privacy problem. + +Not by default. I meant it lists all mailboxes where the mailbox owner +has given permission with ACLs (so filesystem permissions won't be +enough). + +> > I've understood that many commonly used clients ignore namespaces and +> > only show what is visible with LIST "" %, so I'd want to keep it +> > possible to list contents of all namespaces with it. +> +> I am trying to tell you that that is NOT a very good idea; and this is +> from real-world experience. +> +> If you do this, you are going to have a huge set of mailboxes listed, and +> many users will react with "what is all this junk in my account, I need to +> delete it." + +I guess this all depends on what kinds of namespaces you have. Having a #news. namespace listed using LIST is bad, but I think having "shared mailboxes" namespace visible with LIST isn't. + +Actually it looks like Cyrus is doing exactly what I was going to: + +1 namespace +* NAMESPACE (("" "/")) (("Other Users/" "/")) (("Shared Folders/" "/")) +1 OK Completed +2 list "" * +* LIST (\Noinferiors) "/" "INBOX" +* LIST (\HasNoChildren) "/" "Other Users/foo/support" +2 OK Completed (0.000 secs 10 calls) + +There you have a LIST that lists multiple namespaces. Do you consider +this bad as well? + +> This happens with stupid clients that implement NAMESPACE and then proceed +> to list all of those. The user complaints are continuous and regular: +> they want to know how to delete these junk names from their account. + +I've actually no idea how I would implement NAMESPACE support for +clients in a way you consider good. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.22914.mbox:2,S new file mode 100644 index 00000000..eab141f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.22914.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed May 30 12:02:58 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + +Message-ID: <7l9Pz08GyiPsgnA9Y4wR+w.md5@libertango.oryx.com> + +Mark Crispin writes: +> That begs the question as to what point there is to subscribing the +> \NoSelect name, and why Vista Mail feels that a server's refusal to +> subscribe such a name means that it should not allow access to any +> children of that name! +> +> Note that RFC 3501 says: +> A server MAY validate the mailbox argument to SUBSCRIBE to verify +> that it exists. However, it MUST NOT unilaterally remove an +> existing mailbox name from the subscription list even if a mailbox +> by that name no longer exists. + +Preusumably the Vista Mail developers think that having children implies +existence, and are using SUBSCRIBE as a check for existence. AFAICT +that isn't what you meant by "exist" when you wrote that sentence, but +it's sort of reasonable. + +I'm surprised they didn't test with UW, though. I thought UW was in +widespread use. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.22920.mbox:2,S new file mode 100644 index 00000000..334064ca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.22920.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 12:44:17 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] EXPUNGE question? +Message-ID: <07Mar12.114420pst."57996"@synergy1.parc.xerox.com> + +7.4.1. EXPUNGE Response + + Contents: none + + The EXPUNGE response reports that the specified message sequence + number has been permanently removed from the mailbox. + +I presume this means that "the message with the specified message +sequence number has been..."? Clearly some message with that sequence +number may still be in the mailbox, due to the compaction of the message +sequence numbers. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.22974.mbox:2,S new file mode 100644 index 00000000..ec4f0697 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.22974.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dave at cridland.net Fri Sep 15 08:45:30 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] reporting/detecting expunged messages +In-Reply-To: <01M77TR0EXQ60008CX@mauve.mrochek.com> +References: <4505F2FE.8090807@sun.com> + + <450713AB.4090601@sun.com> + + <45071A57.5080406@sun.com> + <9SYO8YZNXU3qj9EYGtuGNg.md5@libertango.oryx.com> + + <2xKZXsAOqJTXDcZB/xUw7g.md5@libertango.oryx.com> + + <1434.1158328836.664006@peirce.dave.cridland.net> + <01M77TR0EXQ60008CX@mauve.mrochek.com> +Message-ID: <1434.1158335131.084836@peirce.dave.cridland.net> + +On Fri Sep 15 16:05:48 2006, Ned Freed wrote: +>> It might be interesting to talk to the NAT implementors, and see +>> what +>> timeouts they're actually using these days. +> +> I use a lot of different wireless and wired connections on a +> regular basis, and +> the overhwhelming majority of them have 3-5 minute idle timeouts in +> place. I +> often find it necessary to run something that does periodic output +> to keep my +> ssh sesssions running. + +Well, even if the situation isn't improving, at least polling them +may kick them into thinking about the issue at all. :-) + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.23014.mbox:2,S new file mode 100644 index 00000000..c8451cf6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.23014.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Apr 10 15:14:23 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + +Message-ID: + +I think that Vladimir makes some good points here too. I don't know if we +actually want to do this, but I think that we ought to consider it. In +any case, we are going to need at least one more Proposed Standard +document for IMAP before we go to Draft. + +On Mon, 10 Apr 2006, Vladimir A. Butenko wrote: +> I do not see any real "error" in the current protocol specs. But some +> clarification would be a good thing - if/when you plan to release a new +> version of that RFC. +> +> Ideally, the IMAP standard should be broken in 2 - the "Mail store standard" +> with all semantics of the mail store (including all that INBOX mess, ACLs, +> renaming of INBOX, case sensitivity, the UTF-7 encoding of mailbox names, +> etc, etc.,) and the "IMAP proper" - the protocol itself. The first standard +> should also specify how other protocols should access mail store. For +> example, what should happen if I read mail via POP and some message has been +> deleted and some has been added? We know what will happen (the client should +> not see the change in message #s, and attempts to retrieve the deleted +> message should return -Err or an empty message) - but there should be a place +> to explain all these things. And the IMAP protocol (or POP protocol) specs +> are not the right place for all these things. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.23051.mbox:2,S new file mode 100644 index 00000000..da739595 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.23051.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From dave at cridland.net Thu Nov 24 03:25:52 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: <43858BAB.7080404@sun.com> +References: + <27488.1132823348.282206@peirce.dave.cridland.net> + <43858BAB.7080404@sun.com> +Message-ID: <27773.1132831552.908324@peirce.dave.cridland.net> + +On Thu Nov 24 09:45:15 2005, Arnaud Taddei wrote: +> It is true that there are more an more meta properties at the +> folder level and the trend is not decreasing (and we are missing +> ACAP though ACAP is making it through ANNOTATE and ANNOTATEMORE +> no?). +> +> +You may be missing ACAP, but I'm not, I use it all the time. :-) + + +> Though here this is a general APPEND config and it is why I don't +> see it as a per folder mechanism. I think this is the symmetric to +> SMTP size limits so I would leave it as Mark explained. + +But any limitation aside from a policy-based limitation is +potentially at a finer granularity than the server. + +Pete Maclean has already proposed it be a NAMESPACE extension, I'd +prefer it to be per-mailbox, and try to provide a sensible +architecture for per-mailbox capabilities at the same time, instead +of the suck-it-and-see mechanisms we have now. (BINARY APPEND support +is another per-mailbox capability, currently handled by +suck-it-and-see.) + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095144.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095144.23059.mbox:2,S new file mode 100644 index 00000000..ed2197aa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095144.23059.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Sep 7 10:37:34 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: + <5b93232d050907075812659c02@mail.google.com> + + +Message-ID: + +On Wed, 7 Sep 2005, Arnt Gulbrandsen wrote: +> At this time, the first message in a mailbox has UID 1000 and the second has +> UID 2000. Two clients are connected to the server. +> 1. Client 1 issues EXAMINE for the mailbox. +> 2. Client 2 deletes the message with MSN 1 and UID 1000, and issues EXPUNGE. +> 3. Client 1 upgrades to SELECT the mailbox. +> 4. Client 1 issues "fetch 1 uid". +> Is the response 1000 or 2000? I'd rather define 2000 to be the one true +> response. + +Sorry. The response is ambiguous. + +Yes, any good server implementation would return 2000. A really good +server would do so without the SELECT; a NOOP sufficies from the +protocol's perspective to get an untagged EXPUNGE. + +Nevertheless, nothing in IMAP REQUIRES (as opposed to STRONGLY ENCOURAGES) +that sort of inter-session locking and synchronization semantics from the +underlying mail store. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.22807.mbox:2,S new file mode 100644 index 00000000..1c8482f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.22807.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jun 14 03:33:38 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276510437.099598@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> +Message-ID: <4C160582.7020002@gulbrandsen.priv.no> + +On 06/14/2010 12:13 PM, Dave Cridland wrote: +> Yes, I agree it's a good idea, too. But the barriers to it are just far, +> far too large to be worthwhile overcoming, given the scope of the +> extension. An extension like this you really want to be implementable +> *everywhere*, and this just doesn't feel right. + +Dave, you're talking about an extension AOL already has put into the +world, and which Tb already implements. Is the barrier between +"XAOL-MOVE" and "MOVE" really so large? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.22883.mbox:2,S new file mode 100644 index 00000000..902da87a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.22883.mbox:2,S @@ -0,0 +1,132 @@ +MBOX-Line: From mrc at Washington.EDU Thu Jan 31 12:58:53 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: + + +Message-ID: + +On Thu, 31 Jan 2008, John DeMillion wrote: +> The question that I'm dealing with is how the mobile vendor's +> already-sent-by-SMTP message is represented in the user's groupware +> system. The mobile vendor wants to create the illusion of an +> already-sent message via an IMAP APPEND, but the way that my groupware +> vendor is implementing APPEND breaks the illusion. + +There is no IMAP-assigned representation of "already-sent-by-SMTP". It is +a concept solely within the client software. + +IMAP provides a mechanism, called message flags, by which status can be +set (or cleared) on a per-message basis. + +Flags which start with "\" are called "system flags" and are defined by +the IMAP specification; clients can not add system flags that are not +defined in the specification. These flags are: \Deleted, \Flagged, +\Answered, \Seen, \Recent, and \Draft. Of these, \Recent is a read-only +flag to clients; and \Seen and \Deleted have interactions with other IMAP +commands. System flags are mandatory-to-implement in all IMAP servers. + +Flags which do not start with "\" are called "keywords" and can be created +and defined by clients. A convention has arisen over the years in which +keywords that start with "$" are defined and used by software and other +keywords are defined by the human user. Keywords are +optional-to-implement in IMAP servers, but good quality IMAP servers +implement them. + +Thus, it would be reasonable for a client to define a keyword called $Sent +to make "already-sent-by-SMTP". But nothing (other than common sense and +courtesy, which sadly tends to be lacking in today's world) prevents some +other other from using that same name to mean "stinking excrement, not +tasty". + +> It seems that the \Draft flag, or at least my understanding of it, +> might have some relevance here. + +\Draft is a wart in the IMAP specification; it never should have happened +and it wouldn't happen today. It came about only because a couple of +client implementors wanted a flag for draft messages and were afraid to +use $Draft because keywords are not mandatory-to-implement. + +Most clients today use a Drafts mailbox instead of the \Draft flag; and +there is considerable use of other $ keywords so servers that do not +implement keywords can not be taken seriously in the IMAP world. + +> The mobile software vendor is *not* +> using the \Draft flag with the APPEND command, but it seems that the +> groupware vendor is treating the APPENDed message as such: the +> resulting message in the groupware system is user-changeable and +> appears essentially in "saved draft" form. The user could modify any +> part of it and then hit "Send" and it would go out via local SMTP +> again. In the words of the RFC, the appearance of the APPENDed message +> to my groupware user is that the "message has not completed +> composition". + +Although IMAP defines all system flags, there is no enforcement on the +part of IMAP to any special semantics to \Draft (nor, for that matter, to +\Flagged or \Answered). Since I do not know what the clients in question +are doing (or expecting), I can't go into specifics; but the bottom line +is that this is a client software issue and not an IMAP issue. + +I should point out that most mobile client implementors have demonstrated +remarkable cluelessness about IMAP; you need to take what they say with a +rock of salt. There is a good deal of "I don't understand any of this, so +I'll just copy the examples and do what I think sounds good" within that +cadre of developers. Similarly, groupware has historically not been +particularly well-regarded among IMAP servers. + +> There seems to be an inherent conflict there: the very existence of +> the \Draft flag defined by the IMAP protocol seems to differentiate +> "sent mail" (no \Draft) from "drafts" (using \Draft)....the IMAP +> protocol does indeed seem to say something on the topic. Is it logical +> that the lack of \Draft mean "not Draft", therefore meaning "completed +> composition" and therefore not changeable? + +It means no such thing. \Draft simply means that some client, for +whatever reason, chose to apply that flag. There is no magic property of +\Draft. + +Let me emphasize that ALL messages in IMAP are immutable. Any message can +be downloaded to the client, modified on the client, and the modified +version uploaded via APPEND -- but that uploaded version is a *new* copy +of that message (and similarly immutable). + +> With this in mind, would a reasonable/correct interpretation be: +> * an "APPEND \Draft" creates a message that has the *appearance* +> to the user of being an unsent, saved draft message, allowing user +> changes (as my groupware vendor is doing with all APPENDs, regardless +> of the flags) +> * an unflagged "APPEND" creates a message with the *appearance* +> to the user as having already been sent, just as if they sent it using +> their groupware client, totally unchangeable (as my mobile vendor +> intends) + +These are semantics that may be meaningful in the groupware context, but +have no meaning elsewhere. You can't expect other software to obey (or +even know) about groupware's sematnics. + +> Getting past my n00b interpretations, I'm curious what the production +> behavior of APPEND is (with and without the \Draft flag) in other +> groupware/mailsystems that the obviously experienced list members are +> knowledgeable about. + +APPEND (and the more advanced CATENATE in Lemonade) is simply a mechanism +to upload messages. There is nothing about a message being APPENDed that +is in any way special from one that was delivered via SMTP. + +The most common use of APPEND is as part of an operation to move messages +to an IMAP server from a local disk or other IMAP/POP/NNTP server. Some +clients also use APPEND to save message drafts being composed; but as +noted above these messages are usually put into a special named mailbox by +themselves rather than using the \Draft draft in a mailbox used by other +messages. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.22893.mbox:2,S new file mode 100644 index 00000000..6d3c52b2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.22893.mbox:2,S @@ -0,0 +1,55 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Oct 31 02:17:44 2007 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] re: GMail +In-Reply-To: <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> +References: + + + <5202.1193523708.069559@peirce.dave.cridland.net> + + <1193531029.25921.561.camel@hurina> + + + + + <47263322.7040702@psaux.com> <1193689139.25921.618.camel@hurina> + <472653EE.9080102@psaux.com> + + + + <6C7F3125-8B6A-471F-A3B4-29AC2C84C1E7@iki.fi> +Message-ID: <47284838.5030409@isode.com> + +Timo Sirainen wrote: + +> On 30.10.2007, at 1.16, Mark Crispin wrote: +> +>> (4) Ideas that never really got off the ground for various reasons +>> and are likely to fade into obscurity (sorry...): +>> +>> rfc4314.txt ACL +>> rfc2087.txt QUOTA +> +> My list would look pretty much the same, except for these. A lot of +> people want shared mailboxes and besides administrator configuring +> them manually ACL is the only possibility. Clients don't currently +> have much support for it, but it doesn't really need support from +> normal clients. Just having some special "ACL (web)client" is enough. +> I hoped to have implemented ACL for my server this summer, but looks +> like it didn't happen. +> +> I think quota is already pretty widely supported by clients, although +> in very limited form. If people have quota, they really want to know +> how much they have left (when they've reached the limit once..). +> Quota root is a pretty weird concept though and I don't think clients +> handle multiple ones well. Maybe QUOTA2 extension could do a better +> job with those. + +Indeed. Many clients actually require both of one of these extensions. +Thunderbird would use both even if they are not advertised (yes, +definitely a bug). + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.22911.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.22911.mbox:2,S new file mode 100644 index 00000000..60c54de7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.22911.mbox:2,S @@ -0,0 +1,93 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Jun 27 12:01:24 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Namespace separators +In-Reply-To: <1182966301.3768.383.camel@hurina> +References: <1182783681.3768.187.camel@hurina> + + <1182787190.3768.198.camel@hurina> + + <1182953618.3768.338.camel@hurina> + + <1182966301.3768.383.camel@hurina> +Message-ID: + +On Wed, 27 Jun 2007, Timo Sirainen wrote: +>> Any server that automatically lists all other users' mailboxes by default +>> has huge privacy problem. +> Not by default. I meant it lists all mailboxes where the mailbox owner +> has given permission with ACLs (so filesystem permissions won't be +> enough). + +That isn't enough. Most organizations consider it to be a privacy and +security violation to reveal the identities of other users. There isn't +any ACL that applies to the userid space. + +> I guess this all depends on what kinds of namespaces you have. Having a +> #news. namespace listed using LIST is bad, but I think having "shared +> mailboxes" namespace visible with LIST isn't. + +It should be visible only if you are listing the shared mailboxes +namespace. + +If you list the shared mailboxes namespace in a list of the default +namespace, then you do not have a shared mailboxes namespace. You have +shared mailboxes in the default namespace. + +Either implement a namespace or mash everything into the default +namespace. Don't do one and pretend that you are doing the other. + +What's more, you're presuming that "shared mailboxes" is a small enough +set of names that is reasonable to list by default. Suppose this is a +university, and every class list is in shared mailboxes. What if your +client is accessed over wireless, or from a third world country in which +the user pays by the KB? + +Think about the scaling implications! + +> Actually it looks like Cyrus is doing exactly what I was going to: +> +> 1 namespace +> * NAMESPACE (("" "/")) (("Other Users/" "/")) (("Shared Folders/" "/")) +> 1 OK Completed +> 2 list "" * +> * LIST (\Noinferiors) "/" "INBOX" +> * LIST (\HasNoChildren) "/" "Other Users/foo/support" +> 2 OK Completed (0.000 secs 10 calls) + +That is a design misfeature in Cyrus. A server which does that doesn't +have namespaces. It's apparently just using the NAMESPACE extension to +give a clue as to how to access those mailboxes in the default namespace. + +> There you have a LIST that lists multiple namespaces. Do you consider +> this bad as well? + +Yes, this is bad; although not as bad as mashing multiple namespaces with +different hierarchy semantics together which is what you were talking +about earlier. + +The bad thing is that it means that I, as the user, can not create a +personal hierarchy called "Other Users" or "Shared Folders" that have +entirely different purposes. For some reason, undisclosed to my client +that does not do NAMESPACE, these name are stolen from me, and I as the +user will be surprised when bad things happen. + +>> This happens with stupid clients that implement NAMESPACE and then proceed +>> to list all of those. The user complaints are continuous and regular: +>> they want to know how to delete these junk names from their account. +> I've actually no idea how I would implement NAMESPACE support for +> clients in a way you consider good. + +The default namespace is the user's own mailboxes. + +Using the # convention and/or some well-defined alternative leading +character breakout (such as UNIX ~ and /), enable access to mailboxes that +are other than the user's own. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.22914.mbox:2,S new file mode 100644 index 00000000..9545299d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.22914.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed May 30 11:52:47 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <20070530113546.Q27473@orthanc.ca> +References: + <20070530113546.Q27473@orthanc.ca> +Message-ID: + +The underlying problem is that clients are subscribing at all. I have yet +to hear any justification for ANY client to subscribe ANY name without +explicit user instruction; much less the practice of doing a * LIST, +subscribing all the returned names, and then only using LSUB from then on. + +I have not heard of any demand in the NNTP world that a NNTP UA be able to +subscribe to comp and comp.mail in order to be able to access +comp.mail.imap and comp.mail.misc. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.22920.mbox:2,S new file mode 100644 index 00000000..6b26c295 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.22920.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 13:19:45 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +Message-ID: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + +Due to my current back-end architecture, adding a mail message to a +folder can take a considerable amount of time, up to 10 minutes or so, +depending on whether attachment content has to be OCR'ed for the +Lucene index. It looks to me as if the semantics of APPEND, this may +be unacceptable: + + If the mailbox is currently selected, the normal new message + actions SHOULD occur. Specifically, the server SHOULD notify the + client immediately via an untagged EXISTS response. + +Nothing's going to happen "immediately". Of course, I presume that +"immediately" in this context means, "whenever the server first +notices the new message". I can hang the connection for N minutes or +so till the result of the attempted message incorporation is known; +the client can always open another connection in the meantime. Then +I can respond once the APPEND is complete. + +Comments? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.22974.mbox:2,S new file mode 100644 index 00000000..879a13ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.22974.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From drescher at pro-image.de Mon Sep 18 00:07:10 2006 +To: imap-protocol@u.washington.edu +From: Christof Drescher +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Avoiding connection-loss +Message-ID: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + +Hi, + +I recently got a report from a user connecting to our imap server about an IDLE-connection dropping with an error message. Client was Outlook Express which showed an error like "lost connection to imap server". After some investigation I found the reason in a modern AVM FritzBox NAT router, which seems to close inactive connections after about 15 minutes. + +Now, as IMAP-IDLE allows for about 30 minutes inactivity by design, this behavior of the NAT router is not nice at all, and as I could not change this behavior by any setting on the router, I was rather stuck. + +So, I changed the server-implementation of the IDLE command like the following: If the user is IDLE for more than 290secs (near to 5 minutes, the least I could imagine for a NAT router dropping a connection), I repeat the last EXISTS to keep the connection open. E.g. + +[C] abrr SELECT "INBOX" +[S] * 1 EXISTS +[S] * 0 RECENT +[S] [...] +[S] abrr OK [READ-WRITE] SELECT completed +[C] brum IDLE +[S] + idling +[S] * 2 EXISTS // new message arrives +[S] * 1 RECENT // new message arrives (2) +[S] * 2 EXISTS // 290secs inactivity +[S] * 2 EXISTS // another 290secs inactivity +[C] DONE +[S] brum OK IDLE terminated + +Now - is this protocol compliant (I think yes). Is there any scenario where this may confuse clients? Any other problem imaginable? + +Christof +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.23014.mbox:2,S new file mode 100644 index 00000000..508a6d7f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.23014.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From ingo.schurr at schlund.de Tue Apr 11 01:26:34 2006 +To: imap-protocol@u.washington.edu +From: Ingo Schurr +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + +Message-ID: <20060411082634.GB23615@fone> + +Hi all, + +> >More, +> >a) what about: +> >INBOX/mailbox +> >InBox/mailbox +> >INBOX/mailBOX +> >InBox/mailBOX +> >(our interpretation - 1 and 2 are the same mailbox, 3 and 4 are the same +> >mailbox, they all are the same mailbox on a case-insensitive system). +> +> My interpretation: +> +> I agree that they are all the same mailbox on a case-insensitive system. +> +> I don't know how many mailboxes (2 or 4) it may be on a case-sensitive +> system; I think that it is implementation-dependent. Had I thought about +> it at the time, I would have prohibited INBOX from being a "dual-use" +> name. I agree that your interpretation is superior. + +This might be implementation-dependent, but IMHO any implementation +choosing to see 4 mailboxes in the example above will create some +problems. + +RFC3501 says: + If the server's hierarchy separator character appears elsewhere in + the name, the server SHOULD create any superior hierarchical names + that are needed for the CREATE command to be successfully + completed. In other words, an attempt to create "foo/bar/zap" on + a server in which "/" is the hierarchy separator character SHOULD + create foo/ and foo/bar/ if they do not already exist. + +That is, creating "InBox/mailBOX" SHOULD create "InBox". If the +implementation chooses to not identify "InBox/mailBOX" with +"INBOX/mailBOX", it + o either does ignore this paragraph + o or it will at creation time of this folder also create "InBox". + +In the latter case, how would a client access InBox, even worse, +delete InBox? + +After playing around with this for a while, I for myself decided, that +the only way of implementing the INBOX magig without running into all +kinds of nightmares is to stick to the upper-case variant. I.e., not +identifying "InBox/foo" with "INBOX/foo" is crying out loud for trouble. + +Therefore I strongly vote for clarifying this case in the RFC. Not the +_word_ INBOX should be special, but the hierarchical name. + +I agree that protocoll-wise this restriction is not needed and that +it's up to the implementation to make the desicion. But I belive there +are only two feasible solutions (being case-insensitive or having only +one _hierarchical_ name matching [Ii][Nn][Bb][Oo][Xx]) and pinning +this down in the RFC would save some trouble. + +Not this discussion, though, so yes, I'm a bit off topic. + +Best regards, +Ingo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.23051.mbox:2,S new file mode 100644 index 00000000..2cc99bc3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.23051.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Nov 24 04:03:48 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message + size? +In-Reply-To: <000001c5f0ec$958051d0$6301a8c0@xms.co.za> +References: <27488.1132823348.282206@peirce.dave.cridland.net><43858BAB.7080404@sun.com> + <000001c5f0ec$958051d0$6301a8c0@xms.co.za> +Message-ID: + +Dave Cridland writes: +> Pete Maclean has already proposed it be a NAMESPACE extension, I'd +> prefer it to be per-mailbox, and try to provide a sensible +> architecture for per-mailbox capabilities at the same time, instead +> of the suck-it-and-see mechanisms we have now. (BINARY APPEND support +> is another per-mailbox capability, currently handled by +> suck-it-and-see.) + +Multiselect is a third. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095145.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095145.23059.mbox:2,S new file mode 100644 index 00000000..4aa4367e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095145.23059.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From robsiemb at google.com Wed Sep 7 11:12:43 2005 +To: imap-protocol@u.washington.edu +From: Rob Siemborski +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> +Message-ID: <5b93232d0509071112159a3995@mail.google.com> + +On 9/7/05, Cyrus Daboo wrote: + +> What does 'fails' mean in this context? Does it mean both 'NO' and 'BAD' +> responses, or only 'NO'? + +Since a BAD response indicates a protocol error, a SELECT command was +never really issued in that case... + +-Rob + +-- +Rob Siemborski | PGP:0x5CE32FCC | robsiemb@google.com +Software Engineer | | 650-623-6925 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.22807.mbox:2,S new file mode 100644 index 00000000..2a711810 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.22807.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 03:48:11 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276510437.099598@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> +Message-ID: <201006141248.11054.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 12:13:57 Dave Cridland wrote: +> This is amusing. Your argument appears to be that a sensible, common, +> implementation of a mandatory protocol feature is, somehow, +> undesirable. +> +> Your overall argument also appears to be that: +> +> a) MOVE is simpler for client authors. However, client authors would +> still have to move messages without this extension, hence have to +> provide multiple codepaths to achieve the same - really quite simple +> - facility. +That's their choice, it's an EXTENSION hence they don't HAVE to use MOVE +functionality. +Yet MOVE enables user to move messages even if they're at their quota limits, +which is currently impossible with enforced quota limits. + +> b) MOVE may be simpler for server authors. However, server authors +> who cannot implement COPY are themselves at a disadvantage. +MOVE is a basic command, and the fact that it wasn't included in original +specification with arguments that 'it cannot be atomic' it's just dumb. The +fact that specification author can't make it atomic in his own server code is +not an argument to me + +> c) It doesn't matter if MOVE is non-atomic, or introduces a new +> irreversable removal of data from a mailbox. This sends shivers up my +> spine. This is surely not an extension critical enough to break IMAP +> semantics, is it? +It does matter if MOVE is non-atomic. Move as any other command in IMAP should +be atomic. The fact that you and Crispin have problem with making it atomic in +Your servers is, well, your problem - you don't have to use it +About removal: read the draft (version 01) carefully. The possible outcomes of +MOVE command are: +1. MOVE is succesful, server sends untagged EXPUNGE responses and then tagged +OK, mails are removed from a mailbox but they're still there - in another +mailbox. Client knows everything about internal state of currently selected +mailbox. + +2. (case of 'emulation' by copy+expunge, or more internally by link+delete) +MOVE command is unsuccesful, messages are duplicated in both mailboxes, no +EXPUNGE responses are sent, client knows everything about internal state of +currently selected mailbox (nothing has changed) + +3. MOVE command is totally unsuccesful, no messages are moved, no EXPUNGE +responses are sent, client knows... + +> d) If MOVE turns out to be hard in an existing, conformant +> implementation, then the implementation is somehow broken. +No, it means that this implementation wasn't written with MOVE in mind from +the beginning. Hence it's an -optional- -feature-, not an obligation. And it's +a feature that is already being implemented. + +> Yes, I agree it's a good idea, too. But the barriers to it are just +> far, far too large to be worthwhile overcoming, given the scope of +> the extension. An extension like this you really want to be +> implementable *everywhere*, and this just doesn't feel right. +"This extension is so great it should be EVERYWHERE, but I'll have to spend +lots of hours implementing it in my server, so it shouldn't be used anywhere" +- is that it? Can't you see the hypocrisy in that? + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.22883.mbox:2,S new file mode 100644 index 00000000..b9b205d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.22883.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From tss at iki.fi Thu Jan 31 12:41:03 2008 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] INTHREAD extension +In-Reply-To: +References: <1201808382.8854.206.camel@hurina> + +Message-ID: <0728004D-B194-4C4B-A4BA-F6E0E6048082@iki.fi> + +On Jan 31, 2008, at 10:25 PM, Arnt Gulbrandsen wrote: + +>> I'd like to make it slightly simpler though. I think it would be +>> enough if it worked only with THREAD command, and only using the +>> same thread algorithm as selected for THREAD. +> +> Elaborate, please? + +The main use I see for INTHREAD is to let client display a list of +threads where a search condition matches. This would be done with +THREAD algorithm .. INTHREAD same-algorithm .. command. And since they +use the same algorithms, it's most likely possible to optimize for +that (I haven't thought of how yet). But if the INTHREAD needs to work +with different algorithm than THREAD or if SEARCH INTHREAD is allowed, +it can't use the THREAD's optimized code path, requiring an +alternative nonoptimized code path which will be rarely (if ever) used. + +Do you see any real use for SEARCH INTHREAD or THREAD algo1 INTHREAD +algo2 commands? + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 201 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.22893.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.22893.mbox:2,S new file mode 100644 index 00000000..7fc98f5d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.22893.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Oct 31 08:56:12 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:40 2018 +Subject: [Imap-protocol] Re: Multiappend +In-Reply-To: +References: +Message-ID: + +On Wed, 31 Oct 2007, Arnt Gulbrandsen wrote: +> if I understand you correctly, you're saying that one should use multiappend +> to transfer an entire mailbox with one command. + +Yes. We use this functionality. A lot. + +> I was afraid that someone might do that, so I didn't implement multiappend. I +> know people whose average mailbox size is 200MB (no idea what the top decile +> looks like ;) and transactions that large could be a problem. Single IMAP +> commands that large could be a problem, too. My code would have real problems +> with it. + +I can understand the problem your implementation. In my implementation, +lots of little transfers are far more harmful for the server than one big +one. The RTTs, the vastly increased number of error points, and having to +do the overhead of APPEND per message (check out, lock, append, unlock, +check in) is devastating. + +I will insist that multiappend be in the base of any IMAP5. It was an +oversight that it was not there in the first place. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.22914.mbox:2,S new file mode 100644 index 00000000..c9d8f47d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.22914.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From lyndon at orthanc.ca Wed May 30 11:58:51 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + +Message-ID: <20070530115241.B27473@orthanc.ca> + +> That begs the question as to what point there is to subscribing the \NoSelect +> name, and why Vista Mail feels that a server's refusal to subscribe such a +> name means that it should not allow access to any children of that name! + +I don't dispute that Vista's behaviour here is braindead. + +> Note that RFC 3501 says: +> A server MAY validate the mailbox argument to SUBSCRIBE to verify +> that it exists. However, it MUST NOT unilaterally remove an +> existing mailbox name from the subscription list even if a mailbox +> by that name no longer exists. + +Which effectively says the subscription database is decoupled from the +actual folders. I always thought that MAY was a bit of a blemish, but +then again most implementations botch subscribe so badly that it's +pointless worrying about it. + +--lyndon + + Memory is like sex: it's better if it's real. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.22920.mbox:2,S new file mode 100644 index 00000000..934074e8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.22920.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 12 13:34:08 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +The APPEND command should return success to the client as soon as the +server has accepted and taken responsibility for having received the new +message(s) (note plural in the case of MULTIAPPEND). + +A server that delays a response for a period of minutes IS compliant; +however, it is likely to provoke the client into declaring the session +dead, disconnecting, and perhaps retrying the APPEND. Even if the client +is not so provoked, a human user of the client would likely take the +provocation with the same results. So this would be perceived as a +lower-quality server implementation. + +The text that you quoted: +> If the mailbox is currently selected, the normal new message +> actions SHOULD occur. Specifically, the server SHOULD notify the +> client immediately via an untagged EXISTS response. +is a quality of implementation issue (note SHOULD instead of MUST). As +such, if your implementation can not fufill that requirement, it has the +option of not doing so (at the peril of being perceived as a lower-quality +server implementation). + +I would suggest a third way. If it is possible for a mailbox view in IMAP +to incorporate both the mailbox itself, and the queue of messages accepted +by APPEND, but pending final incorporation (e.g., the time-consuming OCR +step), that may allow you to fufill both sets of requirements and be +perceived as a higher-quality server implementation. + +Remember that the server *is* allowed to do things under the sheets; what +the client sees the server doing is NOT necessarily the same as what the +server is doing. IMAP only dictates client perceptions in this case and +not server data store action; what the server does under the sheets to its +own data store is its own business, as long as what the client sees +complies with IMAP. + +Put another way, as I am fond of saying, "a difference which makes no +difference *is* no difference." + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.22974.mbox:2,S new file mode 100644 index 00000000..9e848796 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.22974.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From ams at oryx.com Mon Sep 18 00:15:48 2006 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: Avoiding connection-loss +In-Reply-To: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> +Message-ID: <20060918071548.GA26699@penne.toroid.org> + +At 2006-09-18 09:07:10 +0200, drescher@pro-image.de wrote: +> +> Now - is this protocol compliant (I think yes). Is there any scenario +> where this may confuse clients? Any other problem imaginable? + +It's compliant, and it works reasonably well. + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.23014.mbox:2,S new file mode 100644 index 00000000..2cdd3659 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.23014.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Apr 11 02:45:29 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: <20060411082634.GB23615@fone> +References: <443A7A2D.2070708@consilient.com> + + + + <20060411082634.GB23615@fone> +Message-ID: + +Ingo Schurr writes: +> This might be implementation-dependent, but IMHO any implementation +> choosing to see 4 mailboxes in the example above will create some +> problems. + +Been there, accidentally done that, you're absolutely right. Down that +path lies madness + +> Therefore I strongly vote for clarifying this case in the RFC. Not the +> _word_ INBOX should be special, but the hierarchical name. + +And what about the actual inbox? Suppose your INBOX is also available as +"Other Users.ingo.INBOX", as it might be on some server? (Was it +cyrus?) In that case, are "Other Users" and "ingo" case sensitive, +while "INBOX" is not? Given the following six commands, which should +succeed? + +a CREATE "Other users.ingo.inbox.a" +b CREATE "Other user.inbo.inbox.A" +c CREATE "Other users.ingo.INBOX.a" +d CREATE INBOX.A +e CREATE inbox.B +f CREATE inbox.b + +I don't really care, I just wanted to point it out ;) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.23051.mbox:2,S new file mode 100644 index 00000000..d1b9790d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.23051.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Nov 24 06:16:53 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: <27488.1132823348.282206@peirce.dave.cridland.net> +References: + <27488.1132823348.282206@peirce.dave.cridland.net> +Message-ID: + +On Thu, 24 Nov 2005, Dave Cridland wrote: +> I have the strange suspicion that if anyone else had suggested this, you'd +> have personally shot the proposal down by pointing out that maximum message +> size depends on the mailbox driver and/or the filesystem the data resides on, +> rather than the server as a whole, and thus it needs to be a per-mailbox +> capability. + +Actually, I was thinking more about a *server* limit rather than mailbox +format imposed limits; and that this limit would be for administrative +reasons rather than technical reasons. + +IMAP already has a built in limit of 2^32 - 1. On many systems, a file +can't be larger than 2^31 - 1. Cyrus imposes a limit of around 100MB, and +I'm thinking about a similar limit in UW imapd. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095146.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095146.23059.mbox:2,S new file mode 100644 index 00000000..01fc355c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095146.23059.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Sep 7 11:13:28 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> +Message-ID: + +On Wed, 7 Sep 2005, Cyrus Daboo wrote: +> I ask because the CMU server remains in the previous selected state, if a +> subsequent SELECT results in a 'BAD' response. It correctly leaves selected +> state if a subsequent SELECT results in a 'NO'. + +That's the (only) correct behavior. + +Sadly, a NO response from SELECT requires that an UNSELECT be done; this +is the result of a mistake made in RFC 1730. Nevertheless, this can only +happen because the command was recognized. + +BAD means that the command isn't recognized due to syntax problems. In +order for a SELECT that returns BAD to have UNSELECT semantics, there +would have to be some sort of requirement that an unrecognized command be +"half-recognized". I hope that nobody wants to go there. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.22807.mbox:2,S new file mode 100644 index 00000000..73076ecd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.22807.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dave at cridland.net Mon Jun 14 05:06:56 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C160582.7020002@gulbrandsen.priv.no> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> + <4C160582.7020002@gulbrandsen.priv.no> +Message-ID: <29965.1276517216.816512@puncture> + +On Mon Jun 14 11:33:38 2010, Arnt Gulbrandsen wrote: +> On 06/14/2010 12:13 PM, Dave Cridland wrote: +>> Yes, I agree it's a good idea, too. But the barriers to it are +>> just far, +>> far too large to be worthwhile overcoming, given the scope of the +>> extension. An extension like this you really want to be +>> implementable +>> *everywhere*, and this just doesn't feel right. +> +> Dave, you're talking about an extension AOL already has put into +> the world, and which Tb already implements. Is the barrier between +> "XAOL-MOVE" and "MOVE" really so large? + +Not for AOL and TB, obviously. :-) + +If this can be worked through such that we can get all the kinks out +- or, alternately, so that we have an equivalent way of achieving the +end-goal - I'm all in favour. I just currently don't see a MOVE +command as nearly as simple as it's being made out to be in many +implementations, and as quite a departure from various IMAP semantics. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.22883.mbox:2,S new file mode 100644 index 00000000..536d846e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.22883.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From Hagedorn at spinfo.uni-koeln.de Thu Jan 31 14:28:06 2008 +To: imap-protocol@u.washington.edu +From: Sebastian Hagedorn +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or + unsent message? +In-Reply-To: +References: + + + +Message-ID: + +--On 31. Januar 2008 12:58:53 -0800 Mark Crispin wrote: + +> Some clients also use APPEND to save message drafts being composed; but +> as noted above these messages are usually put into a special named +> mailbox by themselves rather than using the \Draft draft in a mailbox +> used by other messages. + +FWIW, Mulberry is the only client I'm aware of that handles drafts with +\Draft instead of with specific mailboxes, and very gracefully at that. In +its Draft menu there's an option to "Append to Mailbox". This APPENDs the +draft and sets the \Draft flag. When you open such a message from the IMAP +server, it's obviously considered a draft. What happens next depends on the +preferences you've set. There's an option "Delete drafts from mailboxes +after sending". If that's set and you send the message, the draft message +wil be deleted. Otherwise it will remain in the mailbox. There's another +option meant to facilitate message templates that can only be set when the +first one is set: "Don't delete important drafts after sending". Now you +can have both transitory drafts and permanent drafts. ("Important" means +\Flagged, btw) + +But I have to admit that I rarely use this feature, even though I think +it's as good as it gets. And to get back to the original topic, obviously +this is absolutely client-specific and has nothing to do with IMAP proper. +-- + .:.Sebastian Hagedorn - RZKR-R1 (Geb?ude 52), Zimmer 18.:. +Zentrum f?r angewandte Informatik - Universit?tsweiter Service RRZK +.:.Universit?t zu K?ln / Cologne University - Tel. +49-221-478-5587.:. + .:.:.:.Skype: shagedorn.:.:.:. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.22914.mbox:2,S new file mode 100644 index 00000000..6a53dee8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.22914.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 12:44:04 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <7l9Pz08GyiPsgnA9Y4wR+w.md5@libertango.oryx.com> +References: + <20070530113546.Q27473@orthanc.ca> + + <7l9Pz08GyiPsgnA9Y4wR+w.md5@libertango.oryx.com> +Message-ID: + +On Wed, 30 May 2007, Arnt Gulbrandsen wrote: +> Preusumably the Vista Mail developers think that having children implies +> existence, and are using SUBSCRIBE as a check for existence. + +The only way the client knew about the name at all is by a LIST, so that +doesn't make much sense. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.22920.mbox:2,S new file mode 100644 index 00000000..4597bb2d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.22920.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 12 13:39:25 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] EXPUNGE question? +In-Reply-To: <07Mar12.114420pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.114420pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 12 Mar 2007, Bill Janssen wrote: +> 7.4.1. EXPUNGE Response +> Contents: none +> The EXPUNGE response reports that the specified message sequence +> number has been permanently removed from the mailbox. +> I presume this means that "the message with the specified message +> sequence number has been..."? Clearly some message with that sequence +> number may still be in the mailbox, due to the compaction of the message +> sequence numbers. + +Yes; as per the next sentence after the text you quoted: + [...] The message + sequence number for each successive message in the mailbox is + immediately decremented by 1, and this decrement is reflected in + message sequence numbers in subsequent responses (including other + untagged EXPUNGE responses). + +The idea being expressed here is that, in the case of + * 3 EXPUNGE +(a) message 3 vanishes +(b) if there was a message 4, message 4 becomes the new message 3; if + there was a message 5, message 5 becomes the new message 4; and so + on until the end of the mailbox. + +Step (a) and (b) are part of one atomic operation, but it may help some +people to think of them as discreet. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.22974.mbox:2,S new file mode 100644 index 00000000..6908fc76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.22974.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From ams at oryx.com Mon Sep 18 03:42:33 2006 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] RFC 2192: what's a section? +Message-ID: <20060918104232.GA30583@penne.toroid.org> + +RFC 2192 says (and RFC 2060 agrees): + + section = section_text / + (nz_number *["." nz_number] ["." (section_text / "MIME")]) + +And section_text is defined as: + + section_text = "HEADER" / "HEADER.FIELDS" [".NOT"] + SPACE header_list / "TEXT" + +Do existing IMAP-URL implementations really allow URLs like foo/;UID=23/;SECTION=HEADER.FIELDS%20(Newsgroups%20Content-Md5%20Content-Disposition%20Content-Language%20Content-Location%20Resent-To%20Resent-Date%20Resent-From%20Resent-Cc%20Resent-Subject%20List-Help%20List-Unsubscribe%20List-Subscribe%20List-Post%20List-Owner%20List-Archive%20Followup-To%20References)? + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.23014.mbox:2,S new file mode 100644 index 00000000..0e116c66 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.23014.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Apr 11 03:20:12 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <20060411082634.GB23615@fone> + +Message-ID: + +Arnt Gulbrandsen writes: +> Suppose your INBOX is also available as "Other Users.ingo.INBOX", as +> it might be on some server? (Was it cyrus?) + +(No, not Cyrus. I can't remember.) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.23051.mbox:2,S new file mode 100644 index 00000000..d1b3a62c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.23051.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Nov 24 06:22:57 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: <1132831193.14231.285.camel@localhost.localdomain> +References: + <1132831193.14231.285.camel@localhost.localdomain> +Message-ID: + +On Thu, 24 Nov 2005, Timo Sirainen wrote: +> Well, personally I don't see a need for it. If you're sending message +> size in APPEND as a normal literal, the server can reject it +> immediately. So it would be useful for literalplus only. + +Yes, but shouldn't the client know that the server will reject such +literals? + +> And is it really the message size limit that's a problem? + +In the case I'm trying to address, it is. If the server (as opposed to +file format) is incapable of handling an incoming literal of more than +100MB, then it is pointless for it to try to accept a 2GB literal. + +You all are also overlooking the question of *administrative* limits. +SMTP's SIZE verb is an *administrative* limit, not a technical limit. I +think that that we need something similar for IMAP. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095147.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095147.23059.mbox:2,S new file mode 100644 index 00000000..24dbb6ae --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095147.23059.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From daboo at isamet.com Wed Sep 7 11:28:06 2005 +To: imap-protocol@u.washington.edu +From: Cyrus Daboo +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + +Message-ID: + +Hi Mark, + +--On September 7, 2005 11:13:28 AM -0700 Mark Crispin + wrote: + +>> I ask because the CMU server remains in the previous selected state, if +>> a subsequent SELECT results in a 'BAD' response. It correctly leaves +>> selected state if a subsequent SELECT results in a 'NO'. +> +> That's the (only) correct behavior. +> +> Sadly, a NO response from SELECT requires that an UNSELECT be done; this +> is the result of a mistake made in RFC 1730. Nevertheless, this can only +> happen because the command was recognized. +> +> BAD means that the command isn't recognized due to syntax problems. In +> order for a SELECT that returns BAD to have UNSELECT semantics, there +> would have to be some sort of requirement that an unrecognized command be +> "half-recognized". I hope that nobody wants to go there. + +There is a terminology issue here: rfc3501 uses the term 'command line', +'command' and 'arguments'. So consider the following: + +a SELECT INBOX foobar + +I consider the above to be a SELECT command with invalid arguments. So in +my interpretation the command is recognised as a 'SELECT command', but the +arguments are wrong and that causes the BAD. So when we have the statement: + + Consequently, if a mailbox is selected and a SELECT command that + fails is attempted, no mailbox is selected. + +I consider 'fails' to mean either 'NO' or 'BAD'. + +I guess all I am asking for is a change to that sentence, something like: + + Consequently, if a mailbox is selected and an attempted SELECT +command + fails with a NO response, no mailbox is selected. + + +-- +Cyrus Daboo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.22807.mbox:2,S new file mode 100644 index 00000000..104e6a89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.22807.mbox:2,S @@ -0,0 +1,183 @@ +MBOX-Line: From dave at cridland.net Mon Jun 14 05:07:08 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006141248.11054.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> + <201006141248.11054.witold.krecicki@firma.o2.pl> +Message-ID: <29965.1276517228.230869@puncture> + +On Mon Jun 14 11:48:11 2010, Witold Kr?cicki wrote: +> On Monday 14 of June 2010 12:13:57 Dave Cridland wrote: +> > a) MOVE is simpler for client authors. However, client authors +> would +> > still have to move messages without this extension, hence have to +> > provide multiple codepaths to achieve the same - really quite +> simple +> > - facility. +> That's their choice, it's an EXTENSION hence they don't HAVE to use +> MOVE +> functionality. +> Yet MOVE enables user to move messages even if they're at their +> quota limits, +> which is currently impossible with enforced quota limits. +> +> +I'm trying to make what I think is quite an important point, so let +me try and rephrase so you see where I'm coming from. + +If a client implements MOVE, it *still* has to implement a +move-analogue by COPY/EXPUNGE, in order to remain functional. + +If it's implementing COPY/EXPUNGE anyway, there is merit in *not* +implementing MOVE, as there are then fewer codepaths - whether this +outweighs any advantage in implementing anyway depends on deployment +levels and perceived gain to the client developer. + +So, like most things, this is a trade-off, and I'm not convinced it's +worthwhile given the small gains for client developers. + +> > b) MOVE may be simpler for server authors. However, server authors +> > who cannot implement COPY are themselves at a disadvantage. +> MOVE is a basic command, and the fact that it wasn't included in +> original +> specification with arguments that 'it cannot be atomic' it's just +> dumb. The +> fact that specification author can't make it atomic in his own +> server code is +> not an argument to me + +You're getting very close to calling Mark dumb. I don't agree, but +even if this were the case, this wouldn't invalidate Mark's arguments +- which are *not* that his own implementation makes it difficult to +implement, but that the majority of extent implementations make it +difficult to implement with "IMAP-like" semantics. + +> > c) It doesn't matter if MOVE is non-atomic, or introduces a new +> > irreversable removal of data from a mailbox. This sends shivers +> up my +> > spine. This is surely not an extension critical enough to break +> IMAP +> > semantics, is it? +> It does matter if MOVE is non-atomic. Move as any other command in +> IMAP should +> be atomic. The fact that you and Crispin have problem with making +> it atomic in +> Your servers is, well, your problem - you don't have to use it + +Erm, my server? You're making some assumptions, there. + + +> About removal: read the draft (version 01) carefully. The possible +> outcomes of +> MOVE command are: +> 1. MOVE is succesful, server sends untagged EXPUNGE responses and +> then tagged +> OK, mails are removed from a mailbox but they're still there - in +> another +> mailbox. Client knows everything about internal state of currently +> selected +> mailbox. +> +> 2. (case of 'emulation' by copy+expunge, or more internally by +> link+delete) +> MOVE command is unsuccesful, messages are duplicated in both +> mailboxes, no +> EXPUNGE responses are sent, client knows everything about internal +> state of +> currently selected mailbox (nothing has changed) +> +> 3. MOVE command is totally unsuccesful, no messages are moved, no +> EXPUNGE +> responses are sent, client knows... +> +> +Yes, I know you're attempting to cover all the issues, here, I just +happen to be of the opinion that there are a lot of corner cases, and +many of these you seem to be blissfully unaware of - for instance: + +I note that in the case of success, you refer to messages in the +UIDPLUS response code after they've already been expunged. A +conformant client might struggle with that a bit, since it's already +dropped the messages locally. + +Perhaps this needs to say that COPYUID is sent as an untagged OK +prior to any EXPUNGE being sent referring to any message in the set. + +I'd imagine that for some implementations, this would lead to a +sequence of COPYUID/EXPUNGE pairs, which is unfortunate, when it +could have been a single COPYUID/VANISHED. + +Also, the specification needs to ensure that it clearly marks the +MOVE command as one that causes ambiguity as described in ?5.5 of +RFC 3501 - in fact, the ambiguity is quite complex, here, because +there are multiple failure cases. + +Finally, your case 2 and 3 are perceived as identical by a client +according to your draft. I'd suggest that an OK is made equivalent to +a COPY's OK, and that the removal of source messages is indicated +solely by the untagged EXPUNGEs - thought this would also be covered +by my first comment. + +And these are just the issues I've spotted now. I don't know how I +can make this clearer - this is a very complex extension to design +such that it'll work safely in all implementations. + + +> > d) If MOVE turns out to be hard in an existing, conformant +> > implementation, then the implementation is somehow broken. +> No, it means that this implementation wasn't written with MOVE in +> mind from +> the beginning. Hence it's an -optional- -feature-, not an +> obligation. And it's +> a feature that is already being implemented. +> +> +Right, fine, but your argument was that it's perfectly acceptable for +a server to have broken or slow COPY. + + +> > Yes, I agree it's a good idea, too. But the barriers to it are +> just +> > far, far too large to be worthwhile overcoming, given the scope of +> > the extension. An extension like this you really want to be +> > implementable *everywhere*, and this just doesn't feel right. +> "This extension is so great it should be EVERYWHERE, but I'll have +> to spend +> lots of hours implementing it in my server, so it shouldn't be used +> anywhere" +> - is that it? Can't you see the hypocrisy in that? + +No, that's not what I said at all. + +Let me spell this out for you: + +a) The extension is, in principle, a good idea. + +b) However, it's the kind of fundamental semantic that needs to be +defined such that it is implementable in all existing implementations. + +c) Ideally, this would result in a MOVE command (or facility of some +form) which would become part of the de-facto core. + +d) I don't do any work on M-Box, Isode's IMAP server, currently - I +work on our XMPP server instead. If I did, I believe I could +implement a MOVE command quite readily, conformant to your -01 draft. + +e) I do, however, work on my own IMAP client, still. This client has +facilities for moving messages, and is specifically designed to work +on very large mailboxes over low-bandwidth, high-latency, links. I'm +not dashing out to implement a MOVE command there, and I wouldn't +unless it were extremely common on servers - otherwise it seems a +very small gain for additional codepaths. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.22883.mbox:2,S new file mode 100644 index 00000000..612bedb4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.22883.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jan 31 12:53:05 2008 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] INTHREAD extension +In-Reply-To: +References: <1201808382.8854.206.camel@hurina> + + <0728004D-B194-4C4B-A4BA-F6E0E6048082@iki.fi> + +Message-ID: + +Arnt Gulbrandsen writes: +> Timo Sirainen writes: +>> This would be done with THREAD algorithm .. INTHREAD same-algorithm +>> .. command. +> +> I thought of SEARCH INTHREAD for that. That gives a more natural +> fallback to servers without INTHREAD. + +Hm, maybe not. I could argue both sides of that. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.22914.mbox:2,S new file mode 100644 index 00000000..7f2afc31 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.22914.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 12:48:02 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <20070530115241.B27473@orthanc.ca> +References: + <20070530113546.Q27473@orthanc.ca> + + <20070530115241.B27473@orthanc.ca> +Message-ID: + +On Wed, 30 May 2007, Lyndon Nerenberg wrote: +> Which effectively says the subscription database is decoupled from the actual +> folders. + +I agree. Which makes the practice of mass-subscribe then only using LSUB +all the more wrong. + +> I always thought that MAY was a bit of a blemish, but then again +> most implementations botch subscribe so badly that it's pointless worrying +> about it. + +What happened way back was that some implementations accepted any +arbitrary string and added it to the subscription list, and others +insisted that it be an extant mailbox. + +It was a mistake that LSUB behaved like LIST. LSUB should have taken just +a single argument and returned no flags or hierarchy delimiter. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.22920.mbox:2,S new file mode 100644 index 00000000..4763526b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.22920.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From dave at cridland.net Mon Mar 12 14:28:45 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> +Message-ID: <18599.1173734925.056533@peirce.dave.cridland.net> + +On Mon Mar 12 13:19:45 2007, Bill Janssen wrote: +> Due to my current back-end architecture, adding a mail message to a +> folder can take a considerable amount of time, up to 10 minutes or +> so, +> depending on whether attachment content has to be OCR'ed for the +> Lucene index. It looks to me as if the semantics of APPEND, this +> may +> be unacceptable: +> +> If the mailbox is currently selected, the normal new message +> actions SHOULD occur. Specifically, the server SHOULD notify +> the +> client immediately via an untagged EXISTS response. +> +> Nothing's going to happen "immediately". Of course, I presume that +> "immediately" in this context means, "whenever the server first +> notices the new message". I can hang the connection for N minutes +> or +> so till the result of the attempted message incorporation is known; +> the client can always open another connection in the meantime. Then +> I can respond once the APPEND is complete. +> +> Comments? + +Yes. :-) + +An APPEND should never take more than a couple of seconds. There's no +point in scanning images at this point, instead, have your system +append the message instantly, and then scan through the messages +later to classify them. They're not going to be spam, since they've +been explicitly added by the user. + +For delivery, it's different, but for IMAP, a client finding an +APPEND hanging for more than a few seconds isn't going to wait +patiently or open a new connection, it'll most likely hang, or cut +the connection and make a new one. + +FWIW, users expect that a delivery is pretty well instant too, in +fact, so I think you're doomed to failure here. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.22974.mbox:2,S new file mode 100644 index 00000000..a31c77d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.22974.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From dave at cridland.net Mon Sep 18 04:58:58 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] RFC 2192: what's a section? +In-Reply-To: <20060918104232.GA30583@penne.toroid.org> +References: <20060918104232.GA30583@penne.toroid.org> +Message-ID: <5273.1158580739.969873@invsysm1> + +On Mon Sep 18 11:42:33 2006, Abhijit Menon-Sen wrote: +> RFC 2192 says (and RFC 2060 agrees): +> +> section = section_text / +> (nz_number *["." nz_number] ["." (section_text / +> "MIME")]) +> +> And section_text is defined as: +> +> section_text = "HEADER" / "HEADER.FIELDS" [".NOT"] +> SPACE header_list / "TEXT" +> +> Do existing IMAP-URL implementations really allow URLs like +> foo/;UID=23/;SECTION=HEADER.FIELDS%20(Newsgroups%20Content-Md5%20Content-Disposition%20Content-Language%20Content-Location%20Resent-To%20Resent-Date%20Resent-From%20Resent-Cc%20Resent-Subject%20List-Help%20List-Unsubscribe%20List-Subscribe%20List-Post%20List-Owner%20List-Archive%20Followup-To%20References)? + +Yes, they sem to. It's possible to use similar constructs in +CATENATE, and my implementation certain handles this. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.23014.mbox:2,S new file mode 100644 index 00000000..d9cbc1e4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.23014.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From ingo.schurr at schlund.de Tue Apr 11 04:27:40 2006 +To: imap-protocol@u.washington.edu +From: Ingo Schurr +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <20060411082634.GB23615@fone> + +Message-ID: <20060411112740.GC28799@fone> + +On 11/04/06 11:45 +0200, Arnt Gulbrandsen wrote: +> >Therefore I strongly vote for clarifying this case in the RFC. Not the +> >_word_ INBOX should be special, but the hierarchical name. +> +> And what about the actual inbox? Suppose your INBOX is also available as +> "Other Users.ingo.INBOX", as it might be on some server? (Was it +> cyrus?) In that case, are "Other Users" and "ingo" case sensitive, +> while "INBOX" is not? + +Tricky. I would say, "Other Users.ingo.INBOX" is case sensitive. + +> Given the following six commands, which should succeed? + +This, I would say, _is_ implementation dependend. Does +a CREATE "Other users.ingo.foo" +create folder "foo"? That is, is "Other users.ingo" a link to the root +of user ingo? And if so, who is allowed to create a folder there? + +IMHO, if "Other users.ingo" is indeed a link to the root of user ingo, +it should behave so. That is: + +> a CREATE "Other users.ingo.inbox.a" +-> Creates INBOX.a + +> b CREATE "Other user.inbo.inbox.A" +-> Creates INBOX.A + +> c CREATE "Other users.ingo.INBOX.a" +-> Fails, as INBOX.a already exists ;) + +> d CREATE INBOX.A +-> Fails, as INBOX.A already exists + +> e CREATE inbox.B +-> Creates INBOX.B + +> f CREATE inbox.b +-> Creates INBOX.b + +(Assuming the server is case sensitive.) + +Let's see what Mr. IMAP protocol has to say about this... ;) + +Best +Ingo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.23051.mbox:2,S new file mode 100644 index 00000000..9f0bbdf1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.23051.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Thu Nov 24 09:38:38 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: +References: + <1132831193.14231.285.camel@localhost.localdomain> + +Message-ID: <1132853918.6797.13.camel@hurina> + +On Thu, 2005-11-24 at 06:22 -0800, Mark Crispin wrote: +> On Thu, 24 Nov 2005, Timo Sirainen wrote: +> > Well, personally I don't see a need for it. If you're sending message +> > size in APPEND as a normal literal, the server can reject it +> > immediately. So it would be useful for literalplus only. +> +> Yes, but shouldn't the client know that the server will reject such +> literals? + +I just think this is very similar to out-of-quota and other similar +conditions and could be treated as being mostly the same problem. The +capability would only prevent one specific case, and a case which I +haven't before heard of being a problem to anyone. + +> You all are also overlooking the question of *administrative* limits. +> SMTP's SIZE verb is an *administrative* limit, not a technical limit. I +> think that that we need something similar for IMAP. + +What non-technical reasons do there exist to limit it? + +For SMTP I think it's mostly to prevent abuse (intentional or +accidental), but with IMAP there are better ways to intentionally abuse +the server and accidentally storing a huge mail doesn't really bother +anyone, you'll only have less disk space/quota. + +The only possible use case that I can think of is to prevent users from +unknowingly storing too large attachments to mails, but I haven't heard +of that being a problem. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095148.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095148.23059.mbox:2,S new file mode 100644 index 00000000..eaf7018a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095148.23059.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dave at cridland.net Wed Sep 7 12:12:40 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> + +Message-ID: <20596.1126120360.592254@peirce.dave.cridland.net> + +On Wed Sep 7 03:20:25 2005, Mark Crispin wrote: +> Historically, a SELECT which failed with a NO did not change state +> either, although RFC 1176 was unclear on that point. This was +> "fixed" in RFC 1730 so that a SELECT which failed with a NO always +> left you in authenticated state. This had the effect of creating a +> NO response which changes state. +> +> IMHO, this is not a good thing. It was a desirable feature that +> IMAP guaranteed that command failures did not change state; that +> feature has been lost forever. Of course, it seemed "right" at the +> time (and arguably still does) that you shouldn't be selected after +> a SELECT fails, and that's why I didn't object to that change. Mea +> culpa. + +Personally I like it. It means that where I need to perform an +UNSELECT, but the server doesn't support that, I can issue a known +bogus SELECT. (In fact, I do: SELECT "&#-&#/#") + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.22807.mbox:2,S new file mode 100644 index 00000000..48473e05 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.22807.mbox:2,S @@ -0,0 +1,167 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 05:31:47 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <29965.1276517228.230869@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006141248.11054.witold.krecicki@firma.o2.pl> + <29965.1276517228.230869@puncture> +Message-ID: <201006141431.47814.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 14:07:08 Dave Cridland wrote: +> On Mon Jun 14 11:48:11 2010, Witold Kr?cicki wrote: +> > On Monday 14 of June 2010 12:13:57 Dave Cridland wrote: +> > > a) MOVE is simpler for client authors. However, client authors +> > +> > would +> > +> > > still have to move messages without this extension, hence have to +> > > provide multiple codepaths to achieve the same - really quite +> > +> > simple +> > +> > > - facility. +> > +> > That's their choice, it's an EXTENSION hence they don't HAVE to use +> > MOVE +> > functionality. +> > Yet MOVE enables user to move messages even if they're at their +> > quota limits, +> > which is currently impossible with enforced quota limits. +> +> I'm trying to make what I think is quite an important point, so let +> me try and rephrase so you see where I'm coming from. +> +> If a client implements MOVE, it *still* has to implement a +> move-analogue by COPY/EXPUNGE, in order to remain functional. +> +> If it's implementing COPY/EXPUNGE anyway, there is merit in *not* +> implementing MOVE, as there are then fewer codepaths - whether this +> outweighs any advantage in implementing anyway depends on deployment +> levels and perceived gain to the client developer. +> +> So, like most things, this is a trade-off, and I'm not convinced it's +> worthwhile given the small gains for client developers. +Tb, which is one of the most popular IMAP clients (at least for desktops) +already includes this functionality (as XAOL-MOVE). So client authors are +willing to trade. + +> > > b) MOVE may be simpler for server authors. However, server authors +> > > who cannot implement COPY are themselves at a disadvantage. +> > +> > MOVE is a basic command, and the fact that it wasn't included in +> > original +> > specification with arguments that 'it cannot be atomic' it's just +> > dumb. The +> > fact that specification author can't make it atomic in his own +> > server code is +> > not an argument to me +> +> You're getting very close to calling Mark dumb. I don't agree, but +> even if this were the case, this wouldn't invalidate Mark's arguments +> - which are *not* that his own implementation makes it difficult to +> implement, but that the majority of extent implementations make it +> difficult to implement with "IMAP-like" semantics. +I'm far from calling Mark dumb. I just think that lack of MOVE, at least as an +extension (if it cannot be provided in some cases) is a failure of the +protocol design. +I already know few IMAP servers implementators that are ready to implement it +(or have already started implementing it), and this draft is online for just 4 +days. + + +> > About removal: read the draft (version 01) carefully. The possible +> > outcomes of +> > MOVE command are: +> > 1. MOVE is succesful, server sends untagged EXPUNGE responses and +> > then tagged +> > OK, mails are removed from a mailbox but they're still there - in +> > another +> > mailbox. Client knows everything about internal state of currently +> > selected +> > mailbox. +> > +> > 2. (case of 'emulation' by copy+expunge, or more internally by +> > link+delete) +> > MOVE command is unsuccesful, messages are duplicated in both +> > mailboxes, no +> > EXPUNGE responses are sent, client knows everything about internal +> > state of +> > currently selected mailbox (nothing has changed) +> > +> > 3. MOVE command is totally unsuccesful, no messages are moved, no +> > EXPUNGE +> > responses are sent, client knows... +> +> Yes, I know you're attempting to cover all the issues, here, I just +> happen to be of the opinion that there are a lot of corner cases, and +> many of these you seem to be blissfully unaware of - for instance: +What other cases can there be that are not included here (and are not corner- +cases that are not covered by IMAP specs and exists in eg. EXPUNGE or COPY +commands)? I really though on that and (not including cases in which COPY +could also fail) can't think of anything else. + +> I note that in the case of success, you refer to messages in the +> UIDPLUS response code after they've already been expunged. A +> conformant client might struggle with that a bit, since it's already +> dropped the messages locally. +> +> Perhaps this needs to say that COPYUID is sent as an untagged OK +> prior to any EXPUNGE being sent referring to any message in the set. +> +> I'd imagine that for some implementations, this would lead to a +> sequence of COPYUID/EXPUNGE pairs, which is unfortunate, when it +> could have been a single COPYUID/VANISHED. +Caching EXPUNGE responses waiting for final OK seems to be the answer. + +> Also, the specification needs to ensure that it clearly marks the +> MOVE command as one that causes ambiguity as described in ?5.5 of +> RFC 3501 - in fact, the ambiguity is quite complex, here, because +> there are multiple failure cases. +> +> Finally, your case 2 and 3 are perceived as identical by a client +> according to your draft. I'd suggest that an OK is made equivalent to +> a COPY's OK, and that the removal of source messages is indicated +> solely by the untagged EXPUNGEs - thought this would also be covered +> by my first comment. +And that's constructive criticism that I've been waiting for, thank you. + +> And these are just the issues I've spotted now. I don't know how I +> can make this clearer - this is a very complex extension to design +> such that it'll work safely in all implementations. +It doesn't have to work in all implementations, and making it work is a +implementator, not specification designer, work. + +> > > d) If MOVE turns out to be hard in an existing, conformant +> > > implementation, then the implementation is somehow broken. +> > +> > No, it means that this implementation wasn't written with MOVE in +> > mind from +> > the beginning. Hence it's an -optional- -feature-, not an +> > obligation. And it's +> > a feature that is already being implemented. +> +> Right, fine, but your argument was that it's perfectly acceptable for +> a server to have broken or slow COPY. +No, my argument was that COPY can be slower than MOVE on some implementations. +I've never stated that COPY can be broken. + +> a) The extension is, in principle, a good idea. +> +> b) However, it's the kind of fundamental semantic that needs to be +> defined such that it is implementable in all existing implementations. +What semantic is this missing that is not missing for COPY & EXPUNGE commands +possible failures? + +> c) Ideally, this would result in a MOVE command (or facility of some +> form) which would become part of the de-facto core. +That's in ideal world... + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.22883.mbox:2,S new file mode 100644 index 00000000..5df641a1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.22883.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From janssen at parc.com Thu Jan 31 18:01:00 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: + + + +Message-ID: <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> + +> so servers that do not +> implement keywords can not be taken seriously in the IMAP world. + +I'm curious about how the client knows if the server supports +keywords. Supposedly, it's by receiving a PERMANENTFLAGS response +code containing \*, in response to some action, say SELECT of a +mailbox. So, if I just send [PERMANENTFLAGS] without a specific list +of message flags, which means that "all flags can be changed +permanently", should the client assume keywords are supported? Or is +it only when \* is explicitly sent in the list of flags? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.22914.mbox:2,S new file mode 100644 index 00000000..24753314 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.22914.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From swilkin at apple.com Wed May 30 14:39:09 2007 +To: imap-protocol@u.washington.edu +From: Sarah Wilkin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + +Message-ID: + +> The underlying problem is that clients are subscribing at all. I +> have yet to hear any justification for ANY client to subscribe ANY +> name without explicit user instruction; much less the practice of +> doing a * LIST, subscribing all the returned names, and then only +> using LSUB from then on. + +Do you mean automatic subscription to existing mailboxes only, or do +you also think there's a problem with automatically subscribing to new +mailboxes that the user creates? (That is, always sending SUBSCRIBE +after CREATE) + +--Sarah + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.22920.mbox:2,S new file mode 100644 index 00000000..7a20111d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.22920.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 15:55:39 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <18599.1173734925.056533@peirce.dave.cridland.net> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + <18599.1173734925.056533@peirce.dave.cridland.net> +Message-ID: <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> + +I suppose I could stick a crippled substandard version of the message +into the server's data store immediately, report APPEND success +immediately, and have that message suddenly disappear if the full +incorporation later fails, and be replaced by a real message if it +later succeeds. I'm a bit concerned about client-side caching of +the data. + +> An APPEND should never take more than a couple of seconds. There's no +> point in scanning images at this point, instead, have your system +> append the message instantly, and then scan through the messages +> later to classify them. They're not going to be spam, since they've +> been explicitly added by the user. + +Well, by the user's client. The problem is that this approach makes +those not-yet-scanned messages invisible to the search mechanism, so +that it becomes (to the user) flaky. "I just put that message in +here! Where is it!" Not sure whether I want an apparently slow +server, or an apparently flaky search system. Frankly, I'd rather +just hang the connection till it's done. Seems more compliant to me. +Shame there's not some untagged hinting the APPEND command could +generate to estimate a time-to-incorporation. + +But if the clients won't tolerate it, they won't tolerate it. + +> FWIW, users expect that a delivery is pretty well instant too, in +> fact, so I think you're doomed to failure here. + +I get that a lot :-). + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.22974.mbox:2,S new file mode 100644 index 00000000..2264c3cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.22974.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Sep 18 08:22:40 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> +Message-ID: + +You are lucky if your NAT box waits 15 minutes before closing inactive +connections. I've encountered NAT boxes that do it in less than 5, and +can be made to dump connections even faster than that. + +It isn't necessary for the server to send an untagged EXISTS as a NAT +keepalive (although it's certainly permitted); an untagged OK will do just +as well. + +Also of concern is that clients from a certain large and very well-known +software house in Redmond, WA will fail to exit out of IDLE before the 30 +minute autologout expires. This causes the session to be disconnected in +a non-obvious way to the user, who then complains that he isn't getting +notified about new mail. + +The workaround for this problem is, after 29 minutes with no new mail, to +send a fake EXISTS that alleges that there is one new message. Then, when +the client issues a DONE to exit IDLE mode, send a fake EXPUNGE to revoke +that "new message". This will cause that client to issue a new idle. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.23014.mbox:2,S new file mode 100644 index 00000000..2ad91175 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.23014.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 11 08:33:43 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: <20060411112740.GC28799@fone> +References: <443A7A2D.2070708@consilient.com> + + + + <20060411082634.GB23615@fone> + + <20060411112740.GC28799@fone> +Message-ID: + +On Tue, 11 Apr 2006, Ingo Schurr wrote: +> Let's see what Mr. IMAP protocol has to say about this... ;) + +I presume that you don't want to hear "INBOX should not be dual use". + +;-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.23051.mbox:2,S new file mode 100644 index 00000000..8e3ea905 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.23051.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Nov 28 10:40:04 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: <1132853918.6797.13.camel@hurina> +References: + <1132831193.14231.285.camel@localhost.localdomain> + + <1132853918.6797.13.camel@hurina> +Message-ID: + +On Thu, 24 Nov 2005, Timo Sirainen wrote: +>> You all are also overlooking the question of *administrative* limits. +>> SMTP's SIZE verb is an *administrative* limit, not a technical limit. I +>> think that that we need something similar for IMAP. +> What non-technical reasons do there exist to limit it? + +The same reasons that exist for SMTP; the server administrator wishes to +establish a limit based upon policy or just to avoid inadvertant denial of +service. + +> For SMTP I think it's mostly to prevent abuse (intentional or +> accidental), but with IMAP there are better ways to intentionally abuse +> the server and accidentally storing a huge mail doesn't really bother +> anyone, you'll only have less disk space/quota. + +I think that you're missing the "accidental" part. Of course, a malicious +clients can always cause problems. But problems can also be caused by +accident. + +To satisfy an APPEND, the incoming data generally has to be staged; it can +not be delivered directly since otherwise you would have a denial of +service situation for the destination mailbox. Yes, a server using a +one-message/one-file format *can* cheat for a single message, but that +doesn't work for MULTIAPPEND (remember that a failed or aborted +MULTIAPPEND must not alter the mailbox). + +This staging can be in temporary files, or in memory, or both. Either +way, a request to upload a 4GB - 1byte message could overtax the capacity +of the server to do the staging, or the message store to hold the message, +or both. Or it may just be administrative policy not to allow 4GB - 1byte +messages. + +If a server establishes a limit for this reason, the client should have a +way of knowing about this limit. Right now, the client would just get an +error message and not know the reason. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095149.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095149.23059.mbox:2,S new file mode 100644 index 00000000..c8608dd5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095149.23059.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Sep 7 12:31:28 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <20596.1126120360.592254@peirce.dave.cridland.net> +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> + + <20596.1126120360.592254@peirce.dave.cridland.net> +Message-ID: + +On Wed, 7 Sep 2005, Dave Cridland wrote: +> Personally I like it. It means that where I need to perform an UNSELECT, but +> the server doesn't support that, I can issue a known bogus SELECT. (In fact, +> I do: SELECT "&#-&#/#") + +The entire reason why UNSELECT was defined is that this is not a reliable +mechanism. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.22807.mbox:2,S new file mode 100644 index 00000000..a58e5252 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.22807.mbox:2,S @@ -0,0 +1,120 @@ +MBOX-Line: From dave at cridland.net Mon Jun 14 07:31:54 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006141431.47814.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006141248.11054.witold.krecicki@firma.o2.pl> + <29965.1276517228.230869@puncture> + <201006141431.47814.witold.krecicki@firma.o2.pl> +Message-ID: <15361.1276525914.496949@puncture> + +On Mon Jun 14 13:31:47 2010, Witold Kr?cicki wrote: +> On Monday 14 of June 2010 14:07:08 Dave Cridland wrote: +> > So, like most things, this is a trade-off, and I'm not convinced +> it's +> > worthwhile given the small gains for client developers. +> Tb, which is one of the most popular IMAP clients (at least for +> desktops) +> already includes this functionality (as XAOL-MOVE). So client +> authors are +> willing to trade. +> +> +No, that means one client is willing to trade. + +> > You're getting very close to calling Mark dumb. I don't agree, but +> > even if this were the case, this wouldn't invalidate Mark's +> arguments +> > - which are *not* that his own implementation makes it difficult +> to +> > implement, but that the majority of extent implementations make it +> > difficult to implement with "IMAP-like" semantics. +> I'm far from calling Mark dumb. I just think that lack of MOVE, at +> least as an +> extension (if it cannot be provided in some cases) is a failure of +> the +> protocol design. +> I already know few IMAP servers implementators that are ready to +> implement it +> (or have already started implementing it), and this draft is online +> for just 4 +> days. + +It cannot be implemented in the same style as other IMAP commands - +you're introducing both the new concept of partial failure *and* an +additional expunge command. + +> What other cases can there be that are not included here (and are +> not corner- +> cases that are not covered by IMAP specs and exists in eg. EXPUNGE +> or COPY +> commands)? I really though on that and (not including cases in +> which COPY +> could also fail) can't think of anything else. +> +> +I included three in my message. + +> > I note that in the case of success, you refer to messages in the +> > UIDPLUS response code after they've already been expunged. A +> > conformant client might struggle with that a bit, since it's +> already +> > dropped the messages locally. +> > +> > Perhaps this needs to say that COPYUID is sent as an untagged OK +> > prior to any EXPUNGE being sent referring to any message in the +> set. +> > +> > I'd imagine that for some implementations, this would lead to a +> > sequence of COPYUID/EXPUNGE pairs, which is unfortunate, when it +> > could have been a single COPYUID/VANISHED. +> Caching EXPUNGE responses waiting for final OK seems to be the +> answer. +> +> +No, that's not acceptable - untagged responses MUST be handled +independently of the command(s) (if any) in progress. That's an +absolute requirement. + +> > And these are just the issues I've spotted now. I don't know how I +> > can make this clearer - this is a very complex extension to design +> > such that it'll work safely in all implementations. +> It doesn't have to work in all implementations, and making it work +> is a +> implementator, not specification designer, work. +> +> +That's a ludicrous statement. It's a protocol designer's job to +ensure that the protocol is as implementable as possible. + +> > a) The extension is, in principle, a good idea. +> > +> > b) However, it's the kind of fundamental semantic that needs to be +> > defined such that it is implementable in all existing +> implementations. +> What semantic is this missing that is not missing for COPY & +> EXPUNGE commands +> possible failures? +> +> +See above - you clearly state that "it doesn't have to work in all +implementations", whereas I'm saying no, it does - yet here, you +claim it does. + + +> > c) Ideally, this would result in a MOVE command (or facility of +> some +> > form) which would become part of the de-facto core. +> That's in ideal world... + +It's also a design criteria. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.22883.mbox:2,S new file mode 100644 index 00000000..02ca5d76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.22883.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From mrc at Washington.EDU Thu Jan 31 18:05:25 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> +References: + + + + <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Thu, 31 Jan 2008, Bill Janssen wrote: +> I'm curious about how the client knows if the server supports +> keywords. Supposedly, it's by receiving a PERMANENTFLAGS response +> code containing \*, in response to some action, say SELECT of a +> mailbox. + +Correct. + +> So, if I just send [PERMANENTFLAGS] without a specific list +> of message flags, which means that "all flags can be changed +> permanently" + +I don't know how you concluded that, but that is incorrect. If you send +PERMANENTFLAGS with an empty list, then there are no permanent flags and +no keywords. + +> , should the client assume keywords are supported? Or is +> it only when \* is explicitly sent in the list of flags? + +Given what I just said, do you agree that this question is moot? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.22914.mbox:2,S new file mode 100644 index 00000000..91083c70 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.22914.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 15:07:36 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + +Message-ID: + +On Wed, 30 May 2007, Sarah Wilkin wrote: +> Do you mean automatic subscription to existing mailboxes only, or do you also +> think there's a problem with automatically subscribing to new mailboxes that +> the user creates? (That is, always sending SUBSCRIBE after CREATE) + +Thank you for asking. The answer to your question is "yes". + +The only time any IMAP client should subscribe to any mailbox is if the +human user explicitly issues a command to do so. + +IMAP subscriptions should be thought of as being equivalent to newsgroup +subscriptions, or roughly equivalent to browser bookmarks; something that +the user manages. The client should NOT unilaterally add names to the +subscription list. + +It is as wrong for an IMAP client to add mailboxes to the subscription +list automatically as it would be for an NNTP client to add newsgroups to +the newsgroup subscription list automatically, or a web browser to add +URLs to the bookmarks list automatically. + +The way to get the list of mailboxes is the LIST command. The LIST +command is what should be used to build the mailbox tree browser. + +The purpose of the IMAP subscription feature was so that people could +access newsgroups via IMAP with their newsgroup subscription list on the +server, and to be extensible for similar applications. The abuse of the +IMAP subscription feature by certain clients made it so this capability +never was commonly used. + +Now, we see a client -- Vista Mail -- which won't let you look at the +children of a name unless it can subscribe that name. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.22920.mbox:2,S new file mode 100644 index 00000000..a461881a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.22920.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 16:29:26 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +Message-ID: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + +I basically want to be able to do searches across my entire mail +database, instead of just folder-by-folder, and I'm wondering how to +plaster that into the protocol. I suppose one way would be to present +all the mail as one tricky folder which normally contains one message, +but responds to SEARCH over it by suddenly filling itself with the +results of the search, sending an untagged EXISTS, and sending them +back to the client. The mailbox would gradually fill up with search +results; I'd have to expire them and send EXPUNGES periodically. + +Are there any protocol extensions I should know about which support +this kind of thing? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.22974.mbox:2,S new file mode 100644 index 00000000..919c9ae8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.22974.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From dave at cridland.net Mon Sep 18 08:42:20 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + +Message-ID: <5273.1158594140.711631@invsysm1> + +On Mon Sep 18 16:22:40 2006, Mark Crispin wrote: +> The workaround for this problem is, after 29 minutes with no new +> mail, to send a fake EXISTS that alleges that there is one new +> message. Then, when the client issues a DONE to exit IDLE mode, +> send a fake EXPUNGE to revoke that "new message". This will cause +> that client to issue a new idle. + +Whilst I'm impressed at the devious nature of that workaround, it +occurs to be that you'd have to be fairly careful, since: + +1) You'd have to ensure the EXPUNGE was sent prior to the tagged OK +of the IDLE. Easy enough, but: + +2) You'd also have to increment UIDNEXT etc in order to avoid +confusing the client later. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.23014.mbox:2,S new file mode 100644 index 00000000..adf24821 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.23014.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Apr 11 09:08:30 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <20060411082634.GB23615@fone> + + <20060411112740.GC28799@fone> + +Message-ID: + +Mark Crispin writes: +> I presume that you don't want to hear "INBOX should not be dual use". + +I wonder how MrSam would react if you were to put that into 3501bis? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.23051.mbox:2,S new file mode 100644 index 00000000..4d90d345 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.23051.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From daboo at isamet.com Mon Nov 28 10:44:10 2005 +To: imap-protocol@u.washington.edu +From: Cyrus Daboo +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: <438B4AB4.2020102@sun.com> +References: + <438B4AB4.2020102@sun.com> +Message-ID: + +Hi Arnaud, + +--On November 28, 2005 7:21:40 PM +0100 Arnaud Taddei + wrote: + +> ? Should we have it as a per CAPABILITY? (Mark) +> +> ? Should we have it as a per mailbox through ANNOTATEMORE like +> several others? (Dave) +> +> ? Should we have it as a per NAMESPACE? (Pete McLean) +> + +One other possibility that was not mentioned was using the QUOTA extension. +That does have an extensibility mechanism that would allow a MAXAPPEND +property. + +That said I personally would prefer an ANNOTATEMORE approach as I do see +this as being useful for both 'static' server limits as well as 'dynamic' +per-mailbox quota limits. Different server implementations/deployments will +likely have one or other of those limits so we need to provide a way to +handle both. + +Adding a /limits/ entry hierarchy for ANNOTATEMORE would be easy and would +allow for specifying other limits if they are needed (e.g. MAXKEYWORDS, +MAXSEARCHTERMS etc). + +-- +Cyrus Daboo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095150.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095150.23059.mbox:2,S new file mode 100644 index 00000000..4958b23e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095150.23059.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Sep 7 12:50:36 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + +Message-ID: + +On Wed, 7 Sep 2005, Cyrus Daboo wrote: +> a SELECT INBOX foobar + +That is not a SELECT command, any more than + { select } choose your option +or + to select the best candidate for the job +are. + +> I consider the above to be a SELECT command with invalid arguments. + +Do my previous examples demonstrate why this is a fallacy? The notion of +"a SELECT command with invalid arguments" implies that it is possible to +define such a thing as distinct from random nonsense; and furthermore that +it is desirable to do so. + +Either it is a valid IMAP command, or it is nonsense. It muddies the +waters otherwise. + +> So in my +> interpretation the command is recognised as a 'SELECT command', but the +> arguments are wrong and that causes the BAD. So when we have the statement: +> Consequently, if a mailbox is selected and a SELECT command that +> fails is attempted, no mailbox is selected. +> I consider 'fails' to mean either 'NO' or 'BAD'. + +If the response is BAD, there is nothing to fail. Nothing happened. +That's the whole point of BAD. Otherwise, we could make NO be returned +for all non-success responses, much as POP3 uses "-". + +> I guess all I am asking for is a change to that sentence, something like: +> Consequently, if a mailbox is selected and an attempted SELECT command +> fails with a NO response, no mailbox is selected. + +I think that this is a terrible idea. It implies that there are other +cases where there is "failure" involving a BAD. Thus, every single point +where command failure is mentioned would have to add such wording, now and +forever. + +I would not object to adding a more specific statement of the general +principle of BAD. + +Nor would I object to adding an example that refers to and restates this +principle, e.g. + Consequently, if a mailbox is selected and a SELECT command that + fails is attempted, no mailbox is selected. + + Note: remember that a BAD response is not a failure; it indicates + that the command itself was not recognized. Therefore, a string + that happens to have SELECT as the second space-delimited token + is not a SELECT command unless it complies with the syntax of the + SELECT command; and if it does not comply with the syntax of the + SELECT command it does not cause the unselection mentioned above. + This applies not just to SELECT but to all commands, thus the fact + that a note like this doesn't appear with other commands should + not be construed to state that this does not apply to those other + comands. + +However, I think that doing this is silly. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.22807.mbox:2,S new file mode 100644 index 00000000..6f05d7c7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.22807.mbox:2,S @@ -0,0 +1,110 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 08:06:08 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <15361.1276525914.496949@puncture> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006141431.47814.witold.krecicki@firma.o2.pl> + <15361.1276525914.496949@puncture> +Message-ID: <201006141706.08343.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 16:31:54 Dave Cridland wrote: +> > Tb, which is one of the most popular IMAP clients (at least for +> > desktops) +> > already includes this functionality (as XAOL-MOVE). So client +> > authors are +> > willing to trade. +> +> No, that means one client is willing to trade. +Including the fact that it's just for one IMAP server, and the fact that it's +one of the most popular clients - it's a lot. + +> It cannot be implemented in the same style as other IMAP commands - +> you're introducing both the new concept of partial failure *and* an +> additional expunge command. +This 'new concept of partial failure' is not what I wanted, but I am being +convinced that it is needed by the discussion on this list (because in -some- +implementations it can't be done atomically). IMHO it should be all-or- +nothing, but that's a case of making everyone happy. + +What's wrong with additional expunge (or expunge-like) command? + +> > What other cases can there be that are not included here (and are +> > not corner- +> > cases that are not covered by IMAP specs and exists in eg. EXPUNGE +> > or COPY +> > commands)? I really though on that and (not including cases in +> > which COPY +> > could also fail) can't think of anything else. +> +> I included three in my message. +Could you state them once again? I'm sorry but there's just too much traffic in +this thread and I can't find them... + +> > > I note that in the case of success, you refer to messages in the +> > > UIDPLUS response code after they've already been expunged. A +> > > conformant client might struggle with that a bit, since it's +> > +> > already +> > +> > > dropped the messages locally. +> > > +> > > Perhaps this needs to say that COPYUID is sent as an untagged OK +> > > prior to any EXPUNGE being sent referring to any message in the +> > +> > set. +> > +> > > I'd imagine that for some implementations, this would lead to a +> > > sequence of COPYUID/EXPUNGE pairs, which is unfortunate, when it +> > > could have been a single COPYUID/VANISHED. +> > +> > Caching EXPUNGE responses waiting for final OK seems to be the +> > answer. +> +> No, that's not acceptable - untagged responses MUST be handled +> independently of the command(s) (if any) in progress. That's an +> absolute requirement. +Then that's something to think about... + +> > > And these are just the issues I've spotted now. I don't know how I +> > > can make this clearer - this is a very complex extension to design +> > > such that it'll work safely in all implementations. +> > +> > It doesn't have to work in all implementations, and making it work +> > is a +> > implementator, not specification designer, work. +> +> That's a ludicrous statement. It's a protocol designer's job to +> ensure that the protocol is as implementable as possible. +But it's not protocol designer's job to ensure that it's easily implementable +in ALL the existing implementations. That's simply impossible task. + +> > > a) The extension is, in principle, a good idea. +> > > +> > > b) However, it's the kind of fundamental semantic that needs to be +> > > defined such that it is implementable in all existing +> > +> > implementations. +> > What semantic is this missing that is not missing for COPY & +> > EXPUNGE commands +> > possible failures? +> +> See above - you clearly state that "it doesn't have to work in all +> implementations", whereas I'm saying no, it does - yet here, you +> claim it does. +No. +1. In some implementations it would be really hard to implement, I totally +understand that. +2. In eg. Maildir store I can't find any cases in which there are failures +possible that wouldn't have chance to occur with single COPY or EXPUNGE +commands. + + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.22883.mbox:2,S new file mode 100644 index 00000000..4ceb0648 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.22883.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From janssen at parc.com Thu Jan 31 18:40:19 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: + + + + <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Jan31.184027pst."58696"@synergy1.parc.xerox.com> + +> > So, if I just send [PERMANENTFLAGS] without a specific list +> > of message flags, which means that "all flags can be changed +> > permanently" +> +> I don't know how you concluded that, but that is incorrect. If you send +> PERMANENTFLAGS with an empty list, then there are no permanent flags and +> no keywords. + +Section 6.3.1: + +OK [PERMANENTFLAGS ()] + A list of message flags that the client can change + permanently. If this is missing, the client should + assume that all flags can be changed permanently. + +Since PERMANENTFLAGS is a required response, I assumed that "this" +referred to the argument. + +Since we also see in 6.3.2 that [PERMANENTFLAGS ()] means "no +permanent flags permitted", I guess I sort of assumed that + + OK [PERMANENTFLAGS] + +would be the way to tell the client that all flags can be changed +permanently. So is PERMANENTFLAGS optional for the SELECT command? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.22914.mbox:2,S new file mode 100644 index 00000000..dbdffb0b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.22914.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Wed May 30 15:22:46 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + +Message-ID: <1180563766.32181.2028.camel@hurina> + +On Wed, 2007-05-30 at 14:39 -0700, Sarah Wilkin wrote: +> Do you mean automatic subscription to existing mailboxes only, or do +> you also think there's a problem with automatically subscribing to new +> mailboxes that the user creates? (That is, always sending SUBSCRIBE +> after CREATE) + +I think if the client is configured to show only subscribed mailboxes, +it's entirely reasonable, and expected by the user, that the mailbox is +visible after it is created. So I'd say there's nothing wrong with +CREATE+SUBSCRIBE. Automatically subscribing to existing mailboxes is +bad, of course. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.22920.mbox:2,S new file mode 100644 index 00000000..17fb184f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.22920.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From tss at iki.fi Mon Mar 12 16:32:19 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + <18599.1173734925.056533@peirce.dave.cridland.net> + <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> +Message-ID: <1173742339.9167.48.camel@hurina> + +On Mon, 2007-03-12 at 15:55 -0700, Bill Janssen wrote: + +> I suppose I could stick a crippled substandard version of the message +> into the server's data store immediately, report APPEND success +> immediately, and have that message suddenly disappear if the full +> incorporation later fails, and be replaced by a real message if it +> later succeeds. I'm a bit concerned about client-side caching of +> the data. + +If you're going to replace the message, change its UID as well. + +> Well, by the user's client. The problem is that this approach makes +> those not-yet-scanned messages invisible to the search mechanism, so +> that it becomes (to the user) flaky. "I just put that message in +> here! Where is it!" Not sure whether I want an apparently slow +> server, or an apparently flaky search system. Frankly, I'd rather +> just hang the connection till it's done. Seems more compliant to me. +> Shame there's not some untagged hinting the APPEND command could +> generate to estimate a time-to-incorporation. + +How about hanging SEARCH until the message is indexed? Clients are used +to long running SEARCH, and the user most likely is doing SEARCHes a lot +less than APPENDs (and SEARCHes after APPEND even less often). + +If you don't want the UID replacing, you could hang FETCH too I suppose. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.22974.mbox:2,S new file mode 100644 index 00000000..5a537811 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.22974.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Sep 18 09:08:20 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: <5273.1158594140.711631@invsysm1> +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + + <5273.1158594140.711631@invsysm1> +Message-ID: + +On Mon, 18 Sep 2006, Dave Cridland wrote: +> Whilst I'm impressed at the devious nature of that workaround, + +Yes, "devious" is definitely the word for it. I might even say "evil". + +> 1) You'd have to ensure the EXPUNGE was sent prior to the tagged OK of the +> IDLE. Easy enough, but: +> 2) You'd also have to increment UIDNEXT etc in order to avoid confusing the +> client later. + +Well, yes and no. + +Strictly speaking, you are correct. However, it is one certain client +that ever allows an IDLE to go for so long, and we can be confident that +client will never use UIDNEXT. + +IMHO, a client that + (1) ignores the timeout rules of the IDLE specification +yet + (2) cares about UIDNEXT +deserves to lose. ;-) + +Actually, a client that just does (1) deserves to lose. Sadly, however, +numerous individuals use that certain client. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.23014.mbox:2,S new file mode 100644 index 00000000..f4bed332 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.23014.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 11 09:16:06 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <20060411082634.GB23615@fone> + + <20060411112740.GC28799@fone> + + +Message-ID: + +On Tue, 11 Apr 2006, Arnt Gulbrandsen wrote: +> Mark Crispin writes: +>> I presume that you don't want to hear "INBOX should not be dual use". +> I wonder how MrSam would react if you were to put that into 3501bis? + +I prefer not to find out. :-) + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.23051.mbox:2,S new file mode 100644 index 00000000..119afaa4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.23051.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Nov 28 10:50:39 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: +References: + <438B4AB4.2020102@sun.com> +Message-ID: + +On Mon, 28 Nov 2005, Cyrus Daboo wrote: +> That said I personally would prefer an ANNOTATEMORE approach as I do see this +> as being useful for both 'static' server limits as well as 'dynamic' +> per-mailbox quota limits. Different server implementations/deployments will +> likely have one or other of those limits so we need to provide a way to +> handle both. + +Is this an either/or? I think that it may be a both/and. + +I don't think that the ANNOTATEMORE approach is suitable if it is a server +limit rather than a mail store limit. MAXSEARCHTERMS is a good example of +something that is always a server limit. An APPEND limit may be a server +limit or a mail store limit. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095151.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095151.23059.mbox:2,S new file mode 100644 index 00000000..12c8011d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095151.23059.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From dave at cridland.net Wed Sep 7 13:20:06 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> + + <20596.1126120360.592254@peirce.dave.cridland.net> + +Message-ID: <20596.1126124406.082090@peirce.dave.cridland.net> + +On Wed Sep 7 06:31:28 2005, Mark Crispin wrote: +> On Wed, 7 Sep 2005, Dave Cridland wrote: +>> Personally I like it. It means that where I need to perform an +>> UNSELECT, but the server doesn't support that, I can issue a known +>> bogus SELECT. (In fact, I do: SELECT "&#-&#/#") +> +> The entire reason why UNSELECT was defined is that this is not a +> reliable mechanism. + +Which is why my client uses UNSELECT on those rare occasions wherever +possible, of course. If that mailbox actually exists, however, I'd be +reasonably surprised, but it's not impossible. + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.22807.mbox:2,S new file mode 100644 index 00000000..e6dd648c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.22807.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 11 01:26:21 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006110959.37166.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <4C11E96E.7080502@gulbrandsen.priv.no> + <201006110959.37166.witold.krecicki@firma.o2.pl> +Message-ID: <4C11F32D.6070006@gulbrandsen.priv.no> + +It's after ten, I've had some tea and my head is clearer. + +On 06/11/2010 09:59 AM, Witold Kr?cicki wrote: +> On Friday 11 of June 2010 09:44:46 Arnt Gulbrandsen wrote: +>> I implemented that a while ago, but I chose to implement only UID MOVE +>> (an atomic uid-based move being what was needed), and you chose to +>> specify only MOVE. Why not UID? +> +> +> Additionally, MOVE command can be directly preceeded by UID command, +> the sequence set argument is then treated as unique identifiers +> sequence instead of message sequence numbers as defined in [IMAP4] +> paragraph 6.4.8. +> +> + +Nits: + + delays on server side. It also prohibits user from moving a message + larger than remainings of his quota. + +could be e.g. "which is larger than the remnant of his quota". Might add +a sentence pointing out that MOVE, unlike the three-command replacement +sequence, can be atomic. + + If server supports both UIDPLUS and MOVE extensions it SHOULD return + +should be "If the server supports both the" + + uid = "UID" SP (copy / fetch / search / store / move) + +would be better as 'uid =/ "UID MOVE"'... but I can see why you did it +as you did it. + +(I extended my implementation to support all of your draft.) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.22883.mbox:2,S new file mode 100644 index 00000000..dc4ea4c2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.22883.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From MRC at Washington.EDU Thu Jan 31 18:49:49 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: <08Jan31.184027pst."58696"@synergy1.parc.xerox.com> +References: + + + + <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> + + <08Jan31.184027pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Thu, 31 Jan 2008, Bill Janssen wrote: +> OK [PERMANENTFLAGS ()] +> A list of message flags that the client can change +> permanently. If this is missing, the client should +> assume that all flags can be changed permanently. +> Since PERMANENTFLAGS is a required response, I assumed that "this" +> referred to the argument. + +No. That text refers to how to deal with old servers that did not send +any PERMANENTFLAGS response at all. + +> Since we also see in 6.3.2 that [PERMANENTFLAGS ()] means "no +> permanent flags permitted", I guess I sort of assumed that +> OK [PERMANENTFLAGS] +> would be the way to tell the client that all flags can be changed +> permanently. + +The syntax for resp-text-code in RFC 3501 page 89 does not permit such a +thing: + "PERMANENTFLAGS" SP "(" + [flag-perm *(SP flag-perm)] ")" / + +Always refer to the formal syntax first! It is the holy of holies! +Don't ever jump to conclusions based upon what you read in the text! +Note well the warning in RFC 3501 section 1.1! + +> So is PERMANENTFLAGS optional for the SELECT command? + +No, but ancient servers might not send it anyway. PERMANENTFLAGS was +introduced in 1994, and was made mandatory in 2003. It was "optional" +only for IMAP2 compatibility. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.22914.mbox:2,S new file mode 100644 index 00000000..dbefdd28 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.22914.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed May 30 16:00:14 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <1180563766.32181.2028.camel@hurina> +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> +Message-ID: + +On Thu, 31 May 2007, Timo Sirainen wrote: +> I think if the client is configured to show only subscribed mailboxes, +> it's entirely reasonable, and expected by the user, that the mailbox is +> visible after it is created. So I'd say there's nothing wrong with +> CREATE+SUBSCRIBE. Automatically subscribing to existing mailboxes is +> bad, of course. + +That presumes a client "configured to show only subscribed mailboxes". I +don't consider such a client to be reasonable. + +IMHO, there should be a way in the client to show the mailboxes (LIST +command) and a separate way to show the subscribed mailboxes. The former +should be the usual hierarchical browser. The latter is more likely to be +a flat (or semi-flat) display. + +I am starting to think that the solution is to remove subscriptions from +IMAP entirely, and replace it with a mechanism to stores a list of IMAP +URLs. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.22920.mbox:2,S new file mode 100644 index 00000000..98cec70b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.22920.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 12 16:36:33 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <1173742339.9167.48.camel@hurina> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + <18599.1173734925.056533@peirce.dave.cridland.net> + <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> + <1173742339.9167.48.camel@hurina> +Message-ID: + +On Tue, 13 Mar 2007, Timo Sirainen wrote: +>> I suppose I could stick a crippled substandard version of the message +>> into the server's data store immediately, report APPEND success +>> immediately, and have that message suddenly disappear if the full +>> incorporation later fails, and be replaced by a real message if it +>> later succeeds. I'm a bit concerned about client-side caching of +>> the data. +> If you're going to replace the message, change its UID as well. + +I second this comment. Messages are static; they MUST NOT be changed. +The only want to change a message on the server is to add a new message +with the change, and delete/expunge the old copy. + +This is very imporant and bears emphasis: messages are static; they MUST +NOT be changed. + +> How about hanging SEARCH until the message is indexed? Clients are used +> to long running SEARCH, and the user most likely is doing SEARCHes a lot +> less than APPENDs (and SEARCHes after APPEND even less often). + +I certainly am not used to long-running SEARCH. I expect even a text +SEARCH to return quickly, or at least as fast as the data can be read from +the disk. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.22974.mbox:2,S new file mode 100644 index 00000000..5e5057ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.22974.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Sep 18 11:14:44 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + + <5273.1158594140.711631@invsysm1> + +Message-ID: + +Mark Crispin writes: +> However, it is one certain client that ever allows an IDLE to go for +> so long, and we can be confident that client will never use UIDNEXT. + +Uh. Mine allows IDLE to go on for 50 seconds longer and uses UIDNEXT. + +It's not a great matter, but I urge you to reconsider this. It is the +reference implementation, after all. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.23014.mbox:2,S new file mode 100644 index 00000000..63103bc8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.23014.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From tjs at psaux.com Tue Apr 11 11:35:58 2006 +To: imap-protocol@u.washington.edu +From: Tim Showalter +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] Re: LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + <20060411082634.GB23615@fone> <20060411112740.GC28799@fone> + +Message-ID: <443BF70E.8070207@psaux.com> + +Mark Crispin wrote: +> On Tue, 11 Apr 2006, Arnt Gulbrandsen wrote: +>> Mark Crispin writes: +>>> I presume that you don't want to hear "INBOX should not be dual use". +>> +>> I wonder how MrSam would react if you were to put that into 3501bis? +> +> I prefer not to find out. :-) + +I think the ship has sailed on this one. Cyrus has had a dual-use INBOX +for about ten years. + +Tim + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.23051.mbox:2,S new file mode 100644 index 00000000..5779191f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.23051.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From daboo at isamet.com Mon Nov 28 10:51:03 2005 +To: imap-protocol@u.washington.edu +From: Cyrus Daboo +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: +References: + <1132831193.14231.285.camel@localhost.localdomain> + + <1132853918.6797.13.camel@hurina> + +Message-ID: <8E4E069D3416C28B7F5E166C@ninevah.local> + +Hi Mark, + +--On November 28, 2005 10:40:04 AM -0800 Mark Crispin + wrote: + +> If a server establishes a limit for this reason, the client should have a +> way of knowing about this limit. Right now, the client would just get an +> error message and not know the reason. + +Well this begs for better error reporting as much as anything else. The +MAXAPPEND capability does not guarantee that a client can append up to that +amount without error, all it guarantees is that an attempt to store more +than that will fail. i.e. a client still has to cope with APPEND failures +even with MAXAPPEND. (e.g. the temp store in your example might be shared +by multiple server sessions so if several people are trying to upload at +the same time the maximum available may be some fraction of the temp store +space, so a transient 'come back later' error may be appropriate). + +-- +Cyrus Daboo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095152.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095152.23059.mbox:2,S new file mode 100644 index 00000000..c691ada4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095152.23059.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Sep 7 13:27:38 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <20596.1126124406.082090@peirce.dave.cridland.net> +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> + + <20596.1126120360.592254@peirce.dave.cridland.net> + + <20596.1126124406.082090@peirce.dave.cridland.net> +Message-ID: + +On Wed, 7 Sep 2005, Dave Cridland wrote: +>> The entire reason why UNSELECT was defined is that this is not a reliable +>> mechanism. +> Which is why my client uses UNSELECT on those rare occasions wherever +> possible, of course. If that mailbox actually exists, however, I'd be +> reasonably surprised, but it's not impossible. + +That's good to hear, thanks. + +I think that we can agree that in an ideal (and thus unattainable...) +world, SELECT should not unselect the previous mailbox unless it fails, +and UNSELECT should be a mandatory part of the base specification. + +Then again, we wouldn't have needed UNSELECT if CREATE/DELETE/RENAME were +not in the base specification (they weren't in IMAP2). Once again, the +Law of Unintended Consequences bites the unwary... :-( + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.22807.mbox:2,S new file mode 100644 index 00000000..2b2fc11d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.22807.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 08:43:37 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C160582.7020002@gulbrandsen.priv.no> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> + <4C160582.7020002@gulbrandsen.priv.no> +Message-ID: + +On Mon, 14 Jun 2010, Arnt Gulbrandsen wrote: +> Dave, you're talking about an extension AOL already has put into the +> world, and which Tb already implements. Is the barrier between +> "XAOL-MOVE" and "MOVE" really so large? + +Is AOL's implementation certified not to have any of the potential +failures that have discussed? I'm not saying that it is impossible to +have such an implementation; but I am saying that it's awfully cocky to +claim it without submitting the details for examination. + +For what it's worth, I've worked out how a store can be designed to do it. +In such a store there is no particular benefit to MOVE over COPY; MOVE is +comparable (slightly slower) to COPY in performance. Any store which has +a slow COPY can not have a faster yet safe MOVE. + +I daresay that AOL is just a small percentage of overall IMAP usage; and +AOL users using Thunderbird are a smaller percentage. What happens if we +jump off this cliff and discover that there really is no net at the +bottom? What responsibility will AOL take? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.22883.mbox:2,S new file mode 100644 index 00000000..70e35112 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.22883.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From janssen at parc.com Thu Jan 31 19:01:59 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: + + + + <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> + + <08Jan31.184027pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Jan31.190203pst."58696"@synergy1.parc.xerox.com> + +> > So is PERMANENTFLAGS optional for the SELECT command? +> +> No, but ancient servers might not send it anyway. PERMANENTFLAGS was +> introduced in 1994, and was made mandatory in 2003. It was "optional" +> only for IMAP2 compatibility. + +OK, thanks. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.22914.mbox:2,S new file mode 100644 index 00000000..50a78509 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.22914.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From swilkin at apple.com Wed May 30 16:05:39 2007 +To: imap-protocol@u.washington.edu +From: Sarah Wilkin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + + +Message-ID: <0C76931A-D7E4-4C6D-BFEA-D6DD712A08D2@apple.com> + +> IMAP subscriptions should be thought of as being equivalent to +> newsgroup subscriptions, or roughly equivalent to browser bookmarks; +> something that the user manages. The client should NOT unilaterally +> add names to the subscription list. +> +> It is as wrong for an IMAP client to add mailboxes to the +> subscription list automatically as it would be for an NNTP client to +> add newsgroups to the newsgroup subscription list automatically, or +> a web browser to add URLs to the bookmarks list automatically. + +That's interesting. Mail.app has historically (7+ years) sent CREATE + +SUBSCRIBE. Going by just: +"The SUBSCRIBE command adds the specified mailbox name to the server's +set of "active" or "subscribed" mailboxes as returned by the LSUB +command." + +I can see why a new client-created mailbox wouldn't want be to +interpreted as "inactive." There are also some clients (I can't +remember exactly which: one or more of Outlook, Entourage, or +Thunderbird) that only show subscribed mailboxes by default in the UI. + +Thanks for the clarification of the original intent. + +--Sarah + diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.22920.mbox:2,S new file mode 100644 index 00000000..a8f08ff2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 12 16:45:56 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 12 Mar 2007, Bill Janssen wrote: +> I basically want to be able to do searches across my entire mail +> database, instead of just folder-by-folder, and I'm wondering how to +> plaster that into the protocol. + +There is an unpublished extension, implemented by UW imapd, called SCAN +which is a LIST with a third argument that consists of text to be looked +up in the mailbox, and which acts as a filter on the LIST results. Only +the mailboxes which contain that text are returned in untagged LIST +responses. + +However, SCAN is a disgusting hack that was done to create the equivalent +of "greping through mail files" since there were oldtimers who refused to +use IMAP unless they could "grep over IMAP" (actually, "fgrep" since they +didn't actually use regular expressions and neither does SCAN). + +The problem with SCAN is that, like [f]grep, it makes no distinction +between mailbox metadata and message data. Thus, the command + tag SCAN "" % "mbx" +will match all mailboxes on a system which uses mbx-format as the mail +store, since every mbx-format mailbox starts with "*mbx*". + +A much better thing to do would be to implement to corresponding +functionality in LISTEXT. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.22974.mbox:2,S new file mode 100644 index 00000000..2119e302 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.22974.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Sep 18 11:58:35 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + + <5273.1158594140.711631@invsysm1> + + +Message-ID: + +On Mon, 18 Sep 2006, Arnt Gulbrandsen wrote: +>> However, it is one certain client that ever allows an IDLE to go for so +>> long, and we can be confident that client will never use UIDNEXT. +> Uh. Mine allows IDLE to go on for 50 seconds longer and uses UIDNEXT. + +RFC 2177 states: + + [...] clients using IDLE are advised to terminate the IDLE and + re-issue it at least every 29 minutes to avoid being logged off. + +You like cutting things that close? + +Do you really mean to say that your client increments its copy of UIDNEXT +every time EXISTS shows a new message (since UIDNEXT is normally NOT +presented except at SELECT time!), and then issues an error message if a +new message has a UID that is not .GE. that client calculated value? + +Or, do you mean to say that your client increments its calculated value, +and then issues an error message if UIDNEXT in a subsequent session is not +.GE. that client calculated value? + +> It's not a great matter, but I urge you to reconsider this. It is the +> reference implementation, after all. + +The protocol violation is the kludge to prevent IDLE from ever timing out. +Removing that kludge would be better, if only ********* would fix its +broken client. + +It's also not clear, given the definition of UIDNEXT, that it is even a +violation. The text says "when new messages are added to a mailbox, even +if those new messages are subsequently expunged." After all, no messages +were actually added to the mailbox; the EXISTS/EXPUNGE pair is a fake. + +OK, granted, that's a slimy argument to make, but no slimier than other +arguments made by other people in the past. Don't I get to wallow in the +slime too, just once? ;-) + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.23014.mbox:2,S new file mode 100644 index 00000000..24b442d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.23014.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From tony at att.com Tue Apr 11 12:24:54 2006 +To: imap-protocol@u.washington.edu +From: Tony Hansen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + +Message-ID: <443C0286.60200@att.com> + +Our system is case sensitive. We treat 1 and 2 as the same mailbox, and +3 and 4 as the same mailbox. + + Tony Hansen + tony@att.com + +Mark Crispin wrote: +>> More, +>> a) what about: +>> INBOX/mailbox +>> InBox/mailbox +>> INBOX/mailBOX +>> InBox/mailBOX +>> (our interpretation - 1 and 2 are the same mailbox, 3 and 4 are the +>> same mailbox, they all are the same mailbox on a case-insensitive +>> system). +> +> My interpretation: +> +> I agree that they are all the same mailbox on a case-insensitive system. +> +> I don't know how many mailboxes (2 or 4) it may be on a case-sensitive +> system; I think that it is implementation-dependent. Had I thought +> about it at the time, I would have prohibited INBOX from being a +> "dual-use" name. I agree that your interpretation is superior. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.23051.mbox:2,S new file mode 100644 index 00000000..9cc96ee9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.23051.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From tss at iki.fi Mon Nov 28 11:03:47 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: +References: + <438B4AB4.2020102@sun.com> + +Message-ID: <1133204627.3403.30.camel@hurina> + +On Mon, 2005-11-28 at 10:50 -0800, Mark Crispin wrote: +> I don't think that the ANNOTATEMORE approach is suitable if it is a server +> limit rather than a mail store limit. MAXSEARCHTERMS is a good example of +> something that is always a server limit. An APPEND limit may be a server +> limit or a mail store limit. + +If it's going into capabilities, it should at least be a per-user limit, +so clients would have to be able to parse the capability reply in +LOGIN/AUTHENTICATE command's OK message. I don't think they're currently +required to do that, and most probably don't do it. Actually I'd rather +like to see that change regardless of MAXAPPEND.. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095153.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095153.23059.mbox:2,S new file mode 100644 index 00000000..c5ca2cf3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095153.23059.mbox:2,S @@ -0,0 +1,72 @@ +MBOX-Line: From dave at cridland.net Wed Sep 7 13:52:47 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + + +Message-ID: <20596.1126126367.510966@peirce.dave.cridland.net> + +On Wed Sep 7 06:50:36 2005, Mark Crispin wrote: +> On Wed, 7 Sep 2005, Cyrus Daboo wrote: +>> a SELECT INBOX foobar +> +> That is not a SELECT command, any more than +> { select } choose your option +> or +> to select the best candidate for the job +> are. +> +>> I consider the above to be a SELECT command with invalid arguments. +> +> Do my previous examples demonstrate why this is a fallacy? The +> notion of "a SELECT command with invalid arguments" implies that it +> is possible to define such a thing as distinct from random +> nonsense; and furthermore that it is desirable to do so. +> +> Either it is a valid IMAP command, or it is nonsense. It muddies +> the waters otherwise. +> +> +There's another thing to consider, besides your implication that a +client sending random rubbish that happened to begin similarly to a +SELECT command would end up changing state; there's no way for the +client to know if it was recognised as a SELECT command with invalid +syntax (Which issues BAD), or unrecognised as a SELECT command at all +(Which issues BAD). + +Another amusing thing with SELECT - when does the server change state +for an OK or NO? When it sends the tagged response, or prior to that? +If, given a client in selected state on mailbox Foo, something like: + +C: A01 SELECT Bar +S: * 50 EXISTS +S: [...] Normal SELECT untagged responses, including another EXISTS. +S: A01 OK + +Is that EXISTS for Foo, or Bar? And how does the client know? + +It is, of course, a completely legal time for the server to send an +EXISTS for Foo, since it's allowed to send those when no command is +in progress - it might have simply crossed on the wire. The only way +to process that EXISTS would be to hold it until we either see no +others before the tagged OK (in which case, we know the SELECT +worked, and we can process it for Bar), or we see another (in which +case... Which is for Foo and which for Bar? One assumes the first +response is for Foo). + +The same applies for PERMANENTFLAGS, FLAGS, and presumably other +responses that SELECT sends. + +As it happens, I know of no server that sends any responses when no +command is in progress, but RFC3501 specifically advises that this is +possible. I admit I don't handle this particular case of it. (I +handle responses when no command is in progress quite happily, +because the same processor is used for both ACAP and IMAP, and for +ACAP, that's pretty essential.) + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.22807.mbox:2,S new file mode 100644 index 00000000..04dc8555 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.22807.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 08:55:08 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <4C160582.7020002@gulbrandsen.priv.no> + +Message-ID: <201006141755.09002.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 17:43:37 Mark Crispin wrote: +> On Mon, 14 Jun 2010, Arnt Gulbrandsen wrote: +> > Dave, you're talking about an extension AOL already has put into the +> > world, and which Tb already implements. Is the barrier between +> > "XAOL-MOVE" and "MOVE" really so large? +> +> Is AOL's implementation certified not to have any of the potential +> failures that have discussed? I'm not saying that it is impossible to +> have such an implementation; but I am saying that it's awfully cocky to +> claim it without submitting the details for examination. +Is there an IMAP certification authority? Is there even a tests set that is +checking the basic (RFC3501) functionality of an IMAP server? + +> For what it's worth, I've worked out how a store can be designed to do it. +> In such a store there is no particular benefit to MOVE over COPY; MOVE is +> comparable (slightly slower) to COPY in performance. Any store which has +> a slow COPY can not have a faster yet safe MOVE. +Your assumption is wrong. I've seen such store. I've shown you how this kind +of store might look like. You didn't listen. Period. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.22883.mbox:2,S new file mode 100644 index 00000000..d2c9b3ee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.22883.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From mrc at Washington.EDU Thu Jan 31 19:10:51 2008 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: <08Jan31.190203pst."58696"@synergy1.parc.xerox.com> +References: + + + + <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> + + <08Jan31.184027pst."58696"@synergy1.parc.xerox.com> + + <08Jan31.190203pst."58696"@synergy1.parc.xerox.com> +Message-ID: + +On Thu, 31 Jan 2008, Bill Janssen wrote: +>>> So is PERMANENTFLAGS optional for the SELECT command? +>> No, but ancient servers might not send it anyway. PERMANENTFLAGS was +>> introduced in 1994, and was made mandatory in 2003. It was "optional" +>> only for IMAP2 compatibility. +> OK, thanks. + +Thanks for asking! It's better to ask, and get these misunderstandings +corrected, than to assume and deal with the consequences... + +I wish that it was possible to remove all potential ambiguities from the +IMAP specification, but after ~20 years of trying I think that it's a +hopeless task. Often, an ambiguity is created by a well-intentioned +attempt to clear up another one. ;-( + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.22914.mbox:2,S new file mode 100644 index 00000000..05461344 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.22914.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From tss at iki.fi Wed May 30 16:24:32 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + +Message-ID: <1180567472.32181.2062.camel@hurina> + +On Wed, 2007-05-30 at 16:00 -0700, Mark Crispin wrote: +> On Thu, 31 May 2007, Timo Sirainen wrote: +> > I think if the client is configured to show only subscribed mailboxes, +> > it's entirely reasonable, and expected by the user, that the mailbox is +> > visible after it is created. So I'd say there's nothing wrong with +> > CREATE+SUBSCRIBE. Automatically subscribing to existing mailboxes is +> > bad, of course. +> +> That presumes a client "configured to show only subscribed mailboxes". I +> don't consider such a client to be reasonable. +> +> IMHO, there should be a way in the client to show the mailboxes (LIST +> command) and a separate way to show the subscribed mailboxes. The former +> should be the usual hierarchical browser. The latter is more likely to be +> a flat (or semi-flat) display. + +I guess your view of how subscriptions should work differs significantly +from how other people use them. I like that my subscription list is +almost exactly like the full mailbox list. I've just removed a couple of +mailboxes that I rarely want to look at. + +What do you think then the subscriptions should be used for by people +(or clients) who have only private mailboxes? + +> I am starting to think that the solution is to remove subscriptions +> from +> IMAP entirely, and replace it with a mechanism to stores a list of +> IMAP +> URLs. + +What would be their purpose then? +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.22920.mbox:2,S new file mode 100644 index 00000000..c0149832 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.22920.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From tss at iki.fi Mon Mar 12 16:54:33 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> +Message-ID: <1173743673.9167.65.camel@hurina> + +On Mon, 2007-03-12 at 16:29 -0700, Bill Janssen wrote: +> I basically want to be able to do searches across my entire mail +> database, instead of just folder-by-folder, and I'm wondering how to +> plaster that into the protocol. I suppose one way would be to present +> all the mail as one tricky folder which normally contains one message, +> but responds to SEARCH over it by suddenly filling itself with the +> results of the search, sending an untagged EXISTS, and sending them +> back to the client. The mailbox would gradually fill up with search +> results; I'd have to expire them and send EXPUNGES periodically. + +That's a pretty nice idea, I think I'll do something similar if/when I +implement support for searching multiple mailboxes :) The way I'd do it +is: + + - Have one "Search all folders" mailbox + - It has zero messages initially + - SEARCH done inside it + 1) EXPUNGEs all the existing messages if there are any (although +unless UID SEARCH is done, the EXPUNGEs can't be sent to client yet) + 2) Adds all the matched messages virtually to the mailbox, and +returns EXISTS with the new message count (includes the old messages +with non-UID SEARCH) + 3) Send SEARCH result after the EXISTS reply with listing all the new +messages. + +Hmm. I guess this could be generalized to be a virtual folder where the +search rule gets updated by the SEARCH command. + +There also exists a draft for searching multiple mailboxes: +draft-melnikov-imapext-multimailbox-search-01.txt +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.22974.mbox:2,S new file mode 100644 index 00000000..94e2b60b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.22974.mbox:2,S @@ -0,0 +1,88 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Sep 19 03:26:21 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + + <5273.1158594140.711631@invsysm1> + + + +Message-ID: <+zIRTx+YE8iB3/J6OY9jzQ.md5@libertango.oryx.com> + +Mark Crispin writes: +> On Mon, 18 Sep 2006, Arnt Gulbrandsen wrote: +>>> However, it is one certain client that ever allows an IDLE to go for +>>> so long, and we can be confident that client will never use +>>> UIDNEXT. +>> Uh. Mine allows IDLE to go on for 50 seconds longer and uses UIDNEXT. +> +> RFC 2177 states: +> +> [...] clients using IDLE are advised to terminate the IDLE and +> re-issue it at least every 29 minutes to avoid being logged off. +> +> You like cutting things that close? + +Yes. In my professional capacity I need to add workarounds and so on. +Privately I like to follow the protocol and expect the other guy to do +the same. + +> Do you really mean to say that your client increments its copy of +> UIDNEXT every time EXISTS shows a new message (since UIDNEXT is +> normally NOT presented except at SELECT time!), and then issues an +> error message if a new message has a UID that is not .GE. that client +> calculated value? + +No. MSN/UID arithmetic. The following sequence is somewhat contrived, +but it's short and I expect you get the idea: + +S: * 1000 EXISTS +S: * OK [UIDNEXT 2001] +S: * 1001 EXISTS +S: * 1001 EXPUNGE +S: * 1001 EXISTS +C: a UID FETCH 2002 ENVELOPE + +There is fallback code to handle unexpected UIDNEXT increases, but not +decreases. + +>> It's not a great matter, but I urge you to reconsider this. It is the +>> reference implementation, after all. +> +> The protocol violation is the kludge to prevent IDLE from ever timing +> out. Removing that kludge would be better, if only ********* would +> fix its broken client. +> +> It's also not clear, given the definition of UIDNEXT, that it is even +> a violation. The text says "when new messages are added to a +> mailbox, even if those new messages are subsequently expunged." +> After all, no messages were actually added to the mailbox; the +> EXISTS/EXPUNGE pair is a fake. +> +> OK, granted, that's a slimy argument to make, but no slimier than +> other arguments made by other people in the past. Don't I get to +> wallow in the slime too, just once? ;-) + +I was going to say "can't you do that wearing your pine hat?" but after +a night's sleep I'm not so sure. Here are two different answers. My +opinion is somewhere in between, wavering. + +1. Your server is the reference implementation. As I understand it, a +reference implementation is one that implements the protocol +completely, accurately, meticulously, and above all, without dubious +hacks. + +2. Your server has moved towards being an ordinary IMAP server for many +years. For example, there isn't any command-line option to serve +IMAP4rev1 without extensions if a client wishes to test that that +works. A bit of a hack in the name of interoperability does veeeery +little additional harm. + +But wouldn't it be better to extend the 30-minute timeout than to throw +a spanner in the works of clients that do MSN/UID arithmetic? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.23014.mbox:2,S new file mode 100644 index 00000000..6e3340ab --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.23014.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 11 12:29:21 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: <443C0286.60200@att.com> +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> +Message-ID: + +On Tue, 11 Apr 2006, Tony Hansen wrote: +> Our system is case sensitive. We treat 1 and 2 as the same mailbox, and +> 3 and 4 as the same mailbox. + +Of course, this is the sensible interpretation. However, are we certain +that there is nobody who is nonsensical enough to treat these as four +different names? + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.23051.mbox:2,S new file mode 100644 index 00000000..94613b6c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.23051.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From daboo at isamet.com Mon Nov 28 11:07:49 2005 +To: imap-protocol@u.washington.edu +From: Cyrus Daboo +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: +References: + <438B4AB4.2020102@sun.com> + +Message-ID: <1571344D5FCAECE0FDD58691@ninevah.local> + +Hi Mark, + +--On November 28, 2005 10:50:39 AM -0800 Mark Crispin + wrote: + +>> That said I personally would prefer an ANNOTATEMORE approach as I do see +>> this as being useful for both 'static' server limits as well as +>> 'dynamic' per-mailbox quota limits. Different server +>> implementations/deployments will likely have one or other of those +>> limits so we need to provide a way to handle both. +> +> Is this an either/or? I think that it may be a both/and. +> +> I don't think that the ANNOTATEMORE approach is suitable if it is a +> server limit rather than a mail store limit. MAXSEARCHTERMS is a good +> example of something that is always a server limit. An APPEND limit may +> be a server limit or a mail store limit. + +Right, but ANNOTATEMORE does allow server level annotations as well as +per-mailbox annotations. The question is how much of the server limit +details do you want exposed via CAPABILITY (which all clients will be +forced to get) vs in ANNOTATEMORE (where clients have to explicitly ask for +it). Perhaps all we need is a 'LIMITS' capability that tells clients that +detailed server/mailbox limit information is available via ANNOTATEMORE and +they should use that. + +-- +Cyrus Daboo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095154.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095154.23059.mbox:2,S new file mode 100644 index 00000000..8b2cb9b8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095154.23059.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Wed Sep 7 15:08:03 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <20596.1126126367.510966@peirce.dave.cridland.net> +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + + + <20596.1126126367.510966@peirce.dave.cridland.net> +Message-ID: + +On Wed, 7 Sep 2005, Dave Cridland wrote: +> There's another thing to consider, besides your implication that a client +> sending random rubbish that happened to begin similarly to a SELECT command +> would end up changing state; there's no way for the client to know if it was +> recognised as a SELECT command with invalid syntax (Which issues BAD), or +> unrecognised as a SELECT command at all (Which issues BAD). + +Indeed; thank you for pointing out yet another reason why IMAP does not +have the concept of "recognized command with bad syntax". + +> Another amusing thing with SELECT - when does the server change state for an +> OK or NO? When it sends the tagged response, or prior to that? If, given a +> client in selected state on mailbox Foo, something like: +> C: A01 SELECT Bar +> S: * 50 EXISTS +> S: [...] Normal SELECT untagged responses, including another EXISTS. +> S: A01 OK +> Is that EXISTS for Foo, or Bar? And how does the client know? + +Indeed; this is a known wart in the protocol. It's an important reason +why no server generally sends responses when no command is in progress, +the main exception being the BYE untagged response. + +> It is, of course, a completely legal time for the server to send an EXISTS +> for Foo, since it's allowed to send those when no command is in progress - it +> might have simply crossed on the wire. The only way to process that EXISTS +> would be to hold it until we either see no others before the tagged OK (in +> which case, we know the SELECT worked, and we can process it for Bar), or we +> see another (in which case... Which is for Foo and which for Bar? One assumes +> the first response is for Foo). +> The same applies for PERMANENTFLAGS, FLAGS, and presumably other responses +> that SELECT sends. + +Most clients don't go to that length; they simply assume that any +responses to SELECT apply to the selected mailbox. Or they avoid the +problem entirely by never recycling a session (that is, they never issue a +new SELECT or EXAMINE in a session). + +The problem comes in when the new mailbox is smaller than the old mailbox. +I know, because early versions of UW imapd did not reliably guarantee that +SELECT would never give metadata to the previously selected mailbox. +That is why all but the most prehistoric versions of UW imapd only do the +automatic action (automatic EXISTS, RECENT, EXPUNGE, etc.) at the end of +processing a command. + +> As it happens, I know of no server that sends any responses when no command +> is in progress, but RFC3501 specifically advises that this is possible. + +Some people though that it was vitally important to have responses when no +command is in progress otherwise "IMAP will die" (a similar campaign was +waged about multiple commands in progress, as opposed to pipelining). +That experience reinforced my general disdain of arguments of the form +"IMAP must do or IMAP will die." + +That stuff is all there in an attempt to placate those individuals (not +that it did...). The only practical benefit was the limited amount of +pipelining that you can do in IMAP. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.22807.mbox:2,S new file mode 100644 index 00000000..66224a83 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.22807.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Mon Jun 14 09:07:52 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112352.05642.witold.krecicki@firma.o2.pl> + + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> + <4C160582.7020002@gulbrandsen.priv.no> + +Message-ID: <4C1653D8.5060303@gulbrandsen.priv.no> + +On 06/14/2010 05:43 PM, Mark Crispin wrote: +> For what it's worth, I've worked out how a store can be designed to do it. +> In such a store there is no particular benefit to MOVE over COPY; MOVE is +> comparable (slightly slower) to COPY in performance. Any store which has +> a slow COPY can not have a faster yet safe MOVE. + +Yeah. I implemented only because someone didn't want to write the +three-command way WITH PROPER ERROR HANDLING. I have a terrible problem +telling people to write code they can't practically test. + +> I daresay that AOL is just a small percentage of overall IMAP usage; and +> AOL users using Thunderbird are a smaller percentage. What happens if we +> jump off this cliff and discover that there really is no net at the +> bottom? What responsibility will AOL take? + +I assume AOL will give us our money back, same as you'll do if there's a +problem in 4315 ;) + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.22883.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.22883.mbox:2,S new file mode 100644 index 00000000..1d67ec97 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.22883.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From janssen at parc.com Thu Jan 31 19:56:15 2008 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:41 2018 +Subject: [Imap-protocol] Should IMAP APPEND create a sent or unsent + message? +In-Reply-To: +References: + + + + <08Jan31.180102pst."58696"@synergy1.parc.xerox.com> + + <08Jan31.184027pst."58696"@synergy1.parc.xerox.com> + + <08Jan31.190203pst."58696"@synergy1.parc.xerox.com> + +Message-ID: <08Jan31.195623pst."58696"@synergy1.parc.xerox.com> + +> Thanks for asking! It's better to ask, and get these misunderstandings +> corrected, than to assume and deal with the consequences... + +My feelings exactly. Though I continue to think that doing something +like THE ANNOTATED ALICE would be a big help. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.22914.mbox:2,S new file mode 100644 index 00000000..214a3d3f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.22914.mbox:2,S @@ -0,0 +1,76 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 16:45:26 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <1180567472.32181.2062.camel@hurina> +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <1180567472.32181.2062.camel@hurina> +Message-ID: + +On Thu, 31 May 2007, Timo Sirainen wrote: +> I guess your view of how subscriptions should work differs significantly +> from how other people use them. I like that my subscription list is +> almost exactly like the full mailbox list. I've just removed a couple of +> mailboxes that I rarely want to look at. + +How is it useful to have a subscription list that is little (or not at +all) different than the full mailbox list? + +Does your server export newsgroups? Do you think it is useful that +everybody's subscription list include all newsgroups by default? If no, +how do you reconcile that with your statement? + +> What do you think then the subscriptions should be used for by people +> (or clients) who have only private mailboxes? + +We have users with thousands of mailboxes, but only a relative handful +(fewer than a dozen) that receive incoming messages. All other mailboxes +are archives, which receive messages that the user moved from some other +mailbox. The incoming messages mailboxes would be subscribed, and the +archive mailboxes would not be. + +Because of the abuse of IMAP subscriptions, we had to give up on using +IMAP subscriptions. Instead, we have to have ANOTHER list of mailboxes, +in the Pine configuration, for incoming messages mailboxes. + +This is my point. Over the years, multiple people have complained that +subscriptions are a useless part of IMAP. I agree. They *are* useless; +not because they are less when used for the intended purpose, but because +they were rendered useless by bad client implementations. + +And it's all for no good reason. The abuse provides no benefit. It +causes harm: most notably unnecessary RTTs and user complaints when +subscription issues cause unexpected behavior. + +Thanks to subscription abuse, on our new dual-use mailbox server, we are +now obliged to make every single hierarchy level be a mailbox, even when +it was intended to be a \NoSelect name, because Vista Mail won't allow +access to children of any name that can't be subscribed. + +>> I am starting to think that the solution is to remove subscriptions +>> from IMAP entirely, and replace it with a mechanism to stores a list of +>> IMAP URLs. +> What would be their purpose then? + +The original purpose of subscriptions: + +Identifying those mailboxes which receive incoming messages. + +Identifying the public mailboxes (such as newsgroups) that the user wants +to look at, as opposed to the tens of thousands of other public mailboxes +that the user has no interest in. + +Glue links to other mailboxes on IMAP servers. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.22920.mbox:2,S new file mode 100644 index 00000000..7746bffd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.22920.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 17:10:26 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <1173742339.9167.48.camel@hurina> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + <18599.1173734925.056533@peirce.dave.cridland.net> + <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> + <1173742339.9167.48.camel@hurina> +Message-ID: <07Mar12.161031pst."57996"@synergy1.parc.xerox.com> + +> If you're going to replace the message, change its UID as well. + +I think I only need to do this if the underlying changes are visible +through the IMAP protocol. The only real difference is that they +would be returned by BODY or TEXT searches that previously didn't + +> How about hanging SEARCH until the message is indexed? Clients are used +> to long running SEARCH, and the user most likely is doing SEARCHes a lot +> less than APPENDs (and SEARCHes after APPEND even less often). + +The main reason I'm not using an existing IMAP server is that I can't +stand the long-running searches, so that doesn't appeal to me. + +Could I just not do APPEND? What's it used for, anyway? Drafts, +copying messages from folders on other mail servers, etc. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.22974.mbox:2,S new file mode 100644 index 00000000..3e65a1d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.22974.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Sep 19 08:58:03 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: <+zIRTx+YE8iB3/J6OY9jzQ.md5@libertango.oryx.com> +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + + <5273.1158594140.711631@invsysm1> + + + + <+zIRTx+YE8iB3/J6OY9jzQ.md5@libertango.oryx.com> +Message-ID: + +On Tue, 19 Sep 2006, Arnt Gulbrandsen wrote: +>> [...] clients using IDLE are advised to terminate the IDLE and +>> re-issue it at least every 29 minutes to avoid being logged off. +>> You like cutting things that close? +> Yes. In my professional capacity I need to add workarounds and so on. +> Privately I like to follow the protocol and expect the other guy to do the +> same. + +That wasn't the point. Allowing an IDLE to go on for 29 minutes and 50 +seconds poses a terrible risk of losing the race with only 10 seconds of +leeway. + +> No. MSN/UID arithmetic. The following sequence is somewhat contrived, but +> it's short and I expect you get the idea: +> S: * 1000 EXISTS +> S: * OK [UIDNEXT 2001] +> S: * 1001 EXISTS +> S: * 1001 EXPUNGE +> S: * 1001 EXISTS +> C: a UID FETCH 2002 ENVELOPE +> There is fallback code to handle unexpected UIDNEXT increases, but not +> decreases. + +There's a problem with your example. UIDNEXT is only sent at SELECT time. +It is not sent during UID FETCH or other routine operations. Also, +there's no reason to believe that that UID FETCH would work; UIDNEXT is +only a prediction and not a promise. + +So you can only be affected if you + (1) keep a mathematical calculation of minimum UIDNEXT as a result of + EXISTS + (2) use that calculation between sessions. + +> 1. Your server is the reference implementation. As I understand it, a +> reference implementation is one that implements the protocol completely, +> accurately, meticulously, and above all, without dubious hacks. + +It would be easy to achieve this. Elect me Dictator of the World, so I +can outlaw broken IMAP clients that make such kludges necessary!! As +Dictator of the World, I promise a world of only perfect IMAP! ;-) + +Of course, there's the small problem that, like Koko in Gilbert & +Sullivan's "The Mikado", "I have a little list"... ;-) + +> But wouldn't it be better to extend the 30-minute timeout than to throw a +> spanner in the works of clients that do MSN/UID arithmetic? + +I might extend the timeout to 32 minutes if I had evidence that certain +broken clients wouldn't screw up in other ways. + +But the question is if any client is actually affected. As noted above, +UIDNEXT is only sent at SELECT time. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.23014.mbox:2,S new file mode 100644 index 00000000..47ba7c37 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.23014.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From tony at att.com Tue Apr 11 12:44:04 2006 +To: imap-protocol@u.washington.edu +From: Tony Hansen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + +Message-ID: <443C0704.40301@att.com> + +When 3501bis gets written, it'd be worth adding a note about this case. + + Tony Hansen + tony@att.com + +Mark Crispin wrote: +> On Tue, 11 Apr 2006, Tony Hansen wrote: +>> Our system is case sensitive. We treat 1 and 2 as the same mailbox, and +>> 3 and 4 as the same mailbox. +> +> Of course, this is the sensible interpretation. However, are we certain +> that there is nobody who is nonsensical enough to treat these as four +> different names? + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.23051.mbox:2,S new file mode 100644 index 00000000..806a27d7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.23051.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From tss at iki.fi Mon Nov 28 11:23:28 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message + size? +In-Reply-To: <438B56FF.2060905@sun.com> +References: + <1132831193.14231.285.camel@localhost.localdomain> + + <000001c5f121$145affd0$6301a8c0@xms.co.za> <438B4B45.2000303@sun.com> + <438B56FF.2060905@sun.com> +Message-ID: <1133205808.3403.42.camel@hurina> + +On Mon, 2005-11-28 at 20:14 +0100, Arnaud Taddei wrote: +> I meant that I have concrete examples of painful abuse of users adding +> too large attachments to mails and there was no way to prevent that to +> happen. + +All that's needed for preventing abuse is for server to have a "maximum +message size" setting. The capability would only be helpful for some +client software to show a friendly error message.. + +I'm not all that sure that it's such useful. It could work just as well +by: + +1 APPEND box {105906176} +1 NO [ALERT] Sorry, we have a 100MB message size limit. Couldn't save +your message. + +But sure, literal+ extension is a problem since it can't give the +failure immediately but first has to read the 100+MB of mail before +doing it. Or I guess it could send the error back immediately and then +just disconnect. + +BTW. Are other people also getting these messages twice? Looks like this +server keeps re-posting messages to imapext: + +Received: from xms.co.za ([196.211.28.218]) by above.proper.com + (8.12.11/8.12.9) with ESMTP id jASJ0btN099957 for ; + Mon, 28 Nov 2005 11:00:53 -0800 (PST) (envelope-from + imap-protocol-bounces@mailman1.u.washington.edu) +Received: from mail pickup service by xms.co.za with Microsoft SMTPSVC; + Mon, 28 Nov 2005 21:00:58 +0200 + +Looks like only messages crossposted to both imap-proto and imapext have +that problem. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095155.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095155.23059.mbox:2,S new file mode 100644 index 00000000..3ed33480 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095155.23059.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From alexey.melnikov at isode.com Thu Sep 8 04:07:52 2005 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + +Message-ID: <43201B88.8060509@isode.com> + +Mark Crispin wrote: + +> I would not object to adding a more specific statement of the general +> principle of BAD. + +I think that would be very valuable. + +> Nor would I object to adding an example that refers to and restates +> this principle, e.g. +> Consequently, if a mailbox is selected and a SELECT command that +> fails is attempted, no mailbox is selected. +> +> Note: remember that a BAD response is not a failure; it indicates +> that the command itself was not recognized. Therefore, a string +> that happens to have SELECT as the second space-delimited token +> is not a SELECT command unless it complies with the syntax of the +> SELECT command; and if it does not comply with the syntax of the +> SELECT command it does not cause the unselection mentioned above. +> This applies not just to SELECT but to all commands, thus the fact +> that a note like this doesn't appear with other commands should +> not be construed to state that this does not apply to those other +> comands. +> +> However, I think that doing this is silly. + +A shorter version of this text would be still useful. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095156.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095156.22807.mbox:2,S new file mode 100644 index 00000000..3a5dcbcd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095156.22807.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Jun 14 09:58:29 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006112352.05642.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112113.56572.witold.krecicki@firma.o2.pl> + + <201006112352.05642.witold.krecicki@firma.o2.pl> +Message-ID: + +> COPY is by definition a slow operation. Using hardlinks etc. is a performance +> hack, not a normal method. + +When I maintained Esys' IMAP server, a 'single instance' message store was +*the* most widely requested feature from our customer base. This was in +1997, and I doubt we were the first to do it. + +The driver for this feature was the quota issue; the backend message store +was fast enough that hardlinks didn't noticeably speed things up. Note +that even with the single instance store, it is still necessary to +perform a copy of the file if the source and destination mailboxes reside +on different filesystems. + +I cannot understand your claim that using link() in this case is a "hack." +What is it you think link() is for? + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095156.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095156.22914.mbox:2,S new file mode 100644 index 00000000..f1065db2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095156.22914.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 16:57:10 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <0C76931A-D7E4-4C6D-BFEA-D6DD712A08D2@apple.com> +References: + <20070530113546.Q27473@orthanc.ca> + + + + <0C76931A-D7E4-4C6D-BFEA-D6DD712A08D2@apple.com> +Message-ID: + +On Wed, 30 May 2007, Sarah Wilkin wrote: +> That's interesting. Mail.app has historically (7+ years) sent CREATE + +> SUBSCRIBE. Going by just: +> "The SUBSCRIBE command adds the specified mailbox name to the server's set of +> "active" or "subscribed" mailboxes as returned by the LSUB command." + +The best answer that I can offer is that if it was intended that +newly-created mailboxes be subscribed automatically, the CREATE command +would have done it. + +IMAP tries to avoid unnecessary RTTs, and when it causes a +seemingly-unnecessary RTT (e.g., the STATUS command not accepting a +wildcard) it does so for a reason. + +> I can see why a new client-created mailbox wouldn't want be to interpreted as +> "inactive." + +Well...let's talk about Pine users. Pine users tend to create lots of +archive mailboxes. These mailboxes exist to save away messages from an +incoming message mailbox. IMAP's subscription feature would have been an +ideal mechanism to separate the incoming message mailboxes from the +archive mailboxes. + +The problem was that we couldn't do that, because of all these other +clients which unilaterally subscribe every name. Anyone who used any +other client even once would have their Pine configuration ruined. So we +had to give up; Pine has a private list of incoming message mailboxes in +its own configuration. + +There's another lesson in here, having to deal with ACAP's failure. As +attractive as it is to have configuration that can be shared across +clients, doing so puts every client at the mercy of every other client. +All it needs is one bad actor (and in this case the original bad actor was +Netscape Messenger) to break the entire idea. + +> There are also some clients (I can't remember exactly which: one +> or more of Outlook, Entourage, or Thunderbird) that only show subscribed +> mailboxes by default in the UI. + +I know. I've tried -- for over a decade -- to convince the developers of +those clients not to do that. Netscape Messager did the bad thing first, +Outlook copied it, and the others followed. + +> Thanks for the clarification of the original intent. + +Thanks. It would be great if Mail.app could implement the original +intent, at least as an optional feature. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095156.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095156.22920.mbox:2,S new file mode 100644 index 00000000..d4ec6437 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095156.22920.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 17:16:02 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <1173743673.9167.65.camel@hurina> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> +Message-ID: <07Mar12.161606pst."57996"@synergy1.parc.xerox.com> + +> - Have one "Search all folders" mailbox +> - It has zero messages initially +> - SEARCH done inside it +> 1) EXPUNGEs all the existing messages if there are any (although +> unless UID SEARCH is done, the EXPUNGEs can't be sent to client yet) +> 2) Adds all the matched messages virtually to the mailbox, and +> returns EXISTS with the new message count (includes the old messages +> with non-UID SEARCH) +> 3) Send SEARCH result after the EXISTS reply with listing all the new +> messages. + +Yep, that's what I was thinking. I think I'd keep one message in it +-- not sure how empty folders are regarded by clients. + +> Hmm. I guess this could be generalized to be a virtual folder where the +> search rule gets updated by the SEARCH command. + +That's how I did it a few years ago with a Verity/mh-e indexing +system. Every search got saved in a "past searches" namespace, and +you could visit it and look over the "folders". Opening one re-ran +the search and presented the results. Could do the same thing here. +Is there an out-of-band way of announcing a new mailbox? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095156.22974.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095156.22974.mbox:2,S new file mode 100644 index 00000000..cea83ba7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095156.22974.mbox:2,S @@ -0,0 +1,75 @@ +MBOX-Line: From dave at cridland.net Tue Sep 19 09:55:13 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Avoiding connection-loss +In-Reply-To: +References: <009901c6daf1$1026f580$2d65a8c0@ProImage.local> + + <5273.1158594140.711631@invsysm1> + + + + <+zIRTx+YE8iB3/J6OY9jzQ.md5@libertango.oryx.com> + +Message-ID: <5290.1158684915.280900@invsysm1> + +On Tue Sep 19 16:58:03 2006, Mark Crispin wrote: +> There's a problem with your example. UIDNEXT is only sent at +> SELECT time. It is not sent during UID FETCH or other routine +> operations. Also, there's no reason to believe that that UID FETCH +> would work; UIDNEXT is only a prediction and not a promise. +> +> So you can only be affected if you +> (1) keep a mathematical calculation of minimum UIDNEXT as a result +> of +> EXISTS +> (2) use that calculation between sessions. +> +> +True, all true. Except that Arnt is not the only one who uses the +property of UIDNEXT that it is at least 1 higher than the maximal UID +ever used, and usually precisely that - as in, it will increase by +precisely one on the addition of any message, and will never decrease. + +I certainly use a combination of UIDNEXT values and counted EXPUNGE +messages to detect whether there have been unwitnessed EXPUNGEs +between SELECTs. + + +>> 1. Your server is the reference implementation. As I understand +>> it, a reference implementation is one that implements the protocol +>> completely, accurately, meticulously, and above all, without +>> dubious hacks. +> +> It would be easy to achieve this. Elect me Dictator of the World, +> so I can outlaw broken IMAP clients that make such kludges +> necessary!! As Dictator of the World, I promise a world of only +> perfect IMAP! ;-) +> +> +I'll mention it to NOMCOM. + +> But the question is if any client is actually affected. As noted +> above, UIDNEXT is only sent at SELECT time. + +I think mine might be under certain circumstances. I don't think it +would actually choke, but I believe it might cause an additional +round-trip that proved to be a waste of effort. It'd almost certainly +pipeline a UID SEARCH with the terminating DONE, in any case, and +then it would generate another - I think - on a subsequent SELECT of +the same mailbox. + +I have to say that I'm generally unconvinced if timeouts of this +nature are the correct thing to do anyway. I think maybe sending +untagged OK responses and seeing whether they work, and do not block, +might be a more useful thing to do, but I fully admit to not having +thought this through. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095156.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095156.23014.mbox:2,S new file mode 100644 index 00000000..f357c692 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095156.23014.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 11 12:46:19 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: <443C0704.40301@att.com> +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + <443C0704.40301@att.com> +Message-ID: + +On Tue, 11 Apr 2006, Tony Hansen wrote: +> When 3501bis gets written, it'd be worth adding a note about this case. + +I'm not convinced that we can, unless we can guarantee that there is no +implementation out there that does the nonsensical thing. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095156.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095156.23051.mbox:2,S new file mode 100644 index 00000000..488843b8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095156.23051.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Nov 28 11:31:57 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message size? +In-Reply-To: <8E4E069D3416C28B7F5E166C@ninevah.local> +References: + <1132831193.14231.285.camel@localhost.localdomain> + + <1132853918.6797.13.camel@hurina> + + <8E4E069D3416C28B7F5E166C@ninevah.local> +Message-ID: + +On Mon, 28 Nov 2005, Cyrus Daboo wrote: +> Well this begs for better error reporting as much as anything else. + +I disagree in this case. + +First, the client is probably more interested in knowing that there is a +limit *before* it builds a godzillagram. + +Second, the level of detail required to convey "your message of octets +exceeds the server limit of octets" in a meaningful way to the client +is considerably greater than anyone is likely to implement. Most clients +don't even use most of the existing status reporting codes in IMAP to good +effect, much less the codes from SMTP; they look for a few values and +ignore the rest. + +This isn't to say that IMAP error reporting can not (or should not) be +enhanced. Obviously, it can and should. But this isn't the right +argument for that. + +> The +> MAXAPPEND capability does not guarantee that a client can append up to that +> amount without error, all it guarantees is that an attempt to store more than +> that will fail. i.e. a client still has to cope with APPEND failures even +> with MAXAPPEND. + +Correct. This corresponds exactly with the SIZE verb in SMTP. + +I think that this is useful, but only if done in a simple capability (as +SIZE is in SMTP). Some of what has been discussed (e.g., as part of +annotations) smacks of over-engineering. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095156.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095156.23059.mbox:2,S new file mode 100644 index 00000000..27f87ad6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095156.23059.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From daboo at isamet.com Thu Sep 8 07:29:59 2005 +To: imap-protocol@u.washington.edu +From: Cyrus Daboo +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <20596.1126120360.592254@peirce.dave.cridland.net> +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> + + <20596.1126120360.592254@peirce.dave.cridland.net> +Message-ID: <1F6D592896B8EBF14F052EB5@ninevah.local> + +Hi Dave, + +--On September 7, 2005 8:12:40 PM +0100 Dave Cridland +wrote: + +> Personally I like it. It means that where I need to perform an UNSELECT, +> but the server doesn't support that, I can issue a known bogus SELECT. +> (In fact, I do: SELECT "&#-&#/#") + +I do 'EXAMINE' then 'CLOSE' - which works without having to force a server +error. + +-- +Cyrus Daboo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095157.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095157.22807.mbox:2,S new file mode 100644 index 00000000..8dac3c92 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095157.22807.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Jun 14 10:08:33 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120124.53714.witold.krecicki@firma.o2.pl> + + <201006120159.05366.witold.krecicki@firma.o2.pl> + +Message-ID: + +> On Sat, 12 Jun 2010, Witold Kr?cicki wrote: +>>> It's been discussed multiple times in the past (oh, why does no one +>>> actually read the archives?) how to implement the Trash Can UI on top of +>>> the IMAP \deleted+EXPUNGE model. And guess what, that can do something +>>> the "trash can is a mailbox" model can't: undelete restores the message to +>>> its original place in the mailbox. +>> And still there is no working implementation of this model. Wonder why... +> +> You don't seriously intend to say that nobody uses undelete in IMAP? +> +> If you do believe that, then you are wrong. I know of multiple clients, +> including at least one with millions of users, that have undelete as +> Philip describes. + +Simeon had this behaviour from day one, which was circa 1994? + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095157.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095157.22914.mbox:2,S new file mode 100644 index 00000000..f4119ddf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095157.22914.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From tss at iki.fi Wed May 30 17:21:22 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <1180567472.32181.2062.camel@hurina> + +Message-ID: <108EB7FB-D05E-4AF2-A2A8-20C52D808616@iki.fi> + +On 31.5.2007, at 2.45, Mark Crispin wrote: + +> On Thu, 31 May 2007, Timo Sirainen wrote: +>> I guess your view of how subscriptions should work differs +>> significantly +>> from how other people use them. I like that my subscription list is +>> almost exactly like the full mailbox list. I've just removed a +>> couple of +>> mailboxes that I rarely want to look at. +> +> How is it useful to have a subscription list that is little (or not +> at all) different than the full mailbox list? + +I want to see a list of my mailboxes. Unfortunately my screen space +is limited and can't display all of them, but having some of the +rarely used archived mailboxes removed from the list helps at least a +bit. + +> Does your server export newsgroups? Do you think it is useful that +> everybody's subscription list include all newsgroups by default? +> If no, how do you reconcile that with your statement? + +No, of course not. But it's a very small percentage of people who use +IMAP that way. I don't know anyone who reads news via IMAP. So I +don't think it's unreasonable that mail clients' user interface would +be designed to work more along the lines of "user has only relatively +small number of mailboxes" instead of "user has thousands of +mailboxes". This of course doesn't mean that clients should behave +horribly with a large mailbox list, but it does mean that I think +"show only subscribed mailboxes" option is a good enough user +interface design for most users. And in such UI design CREATE ++SUBSCRIBE combination is just fine (but not automatically +subscribing to all mailboxes of course, that's pointless). + +>>> I am starting to think that the solution is to remove +>>> subscriptions from IMAP entirely, and replace it with a mechanism +>>> to stores a list of IMAP URLs. +>> What would be their purpose then? +> +> The original purpose of subscriptions: +> +> Identifying those mailboxes which receive incoming messages. + +Why does there have to be such a list? I want to see a list of +mailboxes I've subscribed to, regardless of whether they receive +incoming messages. + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: PGP.sig +Type: application/pgp-signature +Size: 193 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095157.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095157.22920.mbox:2,S new file mode 100644 index 00000000..bc493dd0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095157.22920.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 17:16:44 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar12.161651pst."57996"@synergy1.parc.xerox.com> + +> The problem with SCAN is that, like [f]grep, it makes no distinction +> between mailbox metadata and message data. + +Yep, that's not good. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095157.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095157.23014.mbox:2,S new file mode 100644 index 00000000..7a334d39 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095157.23014.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From tony at att.com Tue Apr 11 13:28:35 2006 +To: imap-protocol@u.washington.edu +From: Tony Hansen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + <443C0704.40301@att.com> + +Message-ID: <443C1173.5030007@att.com> + +It can easily be put in as a SHOULD. + + Tony + +Mark Crispin wrote: +> On Tue, 11 Apr 2006, Tony Hansen wrote: +>> When 3501bis gets written, it'd be worth adding a note about this case. +> +> I'm not convinced that we can, unless we can guarantee that there is no +> implementation out there that does the nonsensical thing. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095157.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095157.23051.mbox:2,S new file mode 100644 index 00000000..85c99337 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095157.23051.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Nov 28 11:39:36 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message + size? +In-Reply-To: <1133205808.3403.42.camel@hurina> +References: + <1132831193.14231.285.camel@localhost.localdomain> + + <000001c5f121$145affd0$6301a8c0@xms.co.za> + <438B4B45.2000303@sun.com> <438B56FF.2060905@sun.com> + <1133205808.3403.42.camel@hurina> +Message-ID: + +On Mon, 28 Nov 2005, Timo Sirainen wrote: +> All that's needed for preventing abuse is for server to have a "maximum +> message size" setting. The capability would only be helpful for some +> client software to show a friendly error message.. + +Exactly. + +> I'm not all that sure that it's such useful. It could work just as well +> by: +> 1 APPEND box {105906176} +> 1 NO [ALERT] Sorry, we have a 100MB message size limit. Couldn't save your message. + +Unfortunately, we then get into the whole "but it's not in my language" +rathole. + +> But sure, literal+ extension is a problem since it can't give the +> failure immediately but first has to read the 100+MB of mail before +> doing it. Or I guess it could send the error back immediately and then +> just disconnect. + +Exactly. It was in working on this code that I observed the problem. It +seemed to me to be silly that a client had no way of knowing in advance +that what it's trying to do doesn't stand a chance of working. + +The existance of SIZE in SMTP, and the fact that Cyrus also has a limit +(smaller than UW's!) strengthened my conviction that this should be +advertised by the server and not kept secret. + +> BTW. Are other people also getting these messages twice? + +Yes, we all are. The only xms.co.za address on the imap-protocol list is +philip@xms.co.za, and there is no above.proper.com address. + +If philip@xms.co.za and/or xms.co.za and/or above.proper.com does not +remedy this problem in a timely manner, do you think that I should remove +that address from imap-protocol? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095157.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095157.23059.mbox:2,S new file mode 100644 index 00000000..b2a3ee81 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095157.23059.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dave at cridland.net Thu Sep 8 08:13:50 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <1F6D592896B8EBF14F052EB5@ninevah.local> +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> + + <20596.1126120360.592254@peirce.dave.cridland.net> + <1F6D592896B8EBF14F052EB5@ninevah.local> +Message-ID: <21888.1126192430.327355@peirce.dave.cridland.net> + +On Thu Sep 8 07:29:59 2005, Cyrus Daboo wrote: +> --On September 7, 2005 8:12:40 PM +0100 Dave Cridland +> wrote: +> +>> Personally I like it. It means that where I need to perform an +>> UNSELECT, +>> but the server doesn't support that, I can issue a known bogus +>> SELECT. +>> (In fact, I do: SELECT "&#-&#/#") +> +> I do 'EXAMINE' then 'CLOSE' - which works without having to force a +> server error. + +Yes, that's better. + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095158.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095158.22807.mbox:2,S new file mode 100644 index 00000000..cb9a4b52 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095158.22807.mbox:2,S @@ -0,0 +1,60 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 10:33:39 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112113.56572.witold.krecicki@firma.o2.pl> + + <201006112352.05642.witold.krecicki@firma.o2.pl> + +Message-ID: + +On Mon, 14 Jun 2010, Lyndon Nerenberg wrote: +> When I maintained Esys' IMAP server, a 'single instance' message store was +> *the* most widely requested feature from our customer base. This was in +> 1997, and I doubt we were the first to do it. + +Single instance message stores existed in the 1980s. IMAP's architecture +was influenced by these; hence the rule that messages are immutable. + +The new message store that I am designing now is single instance. It is +targeted for CAstor where there is no filesystem at all; just pointers. + +I've already tested the basic concept with a stubbing implementation in my +existing mix store architecture. The next step is to get rid of the +non-stubbing mailbox that is currently used as the target. + +The quota issue is a separate matter. Since there is no longer any +significant per-user space in this new store, quotas are important only if +it is desirable to recover space by dropping the last pointer to a +message. But in an archive/retention environment, it may not be permitted +to recover the space, and/or space recovery is done independently of what +a user does (e.g., "destroy all emails after 5 years"). + +Either way, quota should not matter on copy vs. move. Either the copy of +message text is unavoidable, or the quota issue can be avoided by making +another pointer to the inode or database record. + +> Note +> that even with the single instance store, it is still necessary to +> perform a copy of the file if the source and destination mailboxes reside +> on different filesystems. + +The same problem exists with MOVE, of course. Anyone who thinks that +rename() is a solution hasn't studied what rename() actually does. + +The basic flaw is the idea that message texts exist within the mailbox. +That is inherited from local file mailboxes of the past. + +> I cannot understand your claim that using link() in this case is a "hack." + +It's just one of many unsubstantiated claims that he makes. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095158.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095158.22914.mbox:2,S new file mode 100644 index 00000000..47795eba --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095158.22914.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 17:22:49 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <208DFE0DE3744042926933E610B9C458DB9853696C@DF-GRTDANE-MSG.exchange.corp.microsoft.com> +References: + <208DFE0DE3744042926933E610B9C458DB9853696C@DF-GRTDANE-MSG.exchange.corp.m + icrosoft.com> +Message-ID: + +On Wed, 30 May 2007, Larry Osterman wrote: +> I've started looping in the Vista Mail team, their first comment was +> that IM&N from XP should have the same behavior, have you checked to see +> if this is Vista-only? + +That very well may be the case, and probably OE too. My report focused on +Vista Mail as I don't think there's much hope for changes in dead +products. + +I also don't mean to imply that Microsoft is the only offender. We're +facing other issues with Thunderbird. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095158.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095158.22920.mbox:2,S new file mode 100644 index 00000000..a2ef808a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095158.22920.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 17:24:32 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <1173743673.9167.65.camel@hurina> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> +Message-ID: <07Mar12.162436pst."57996"@synergy1.parc.xerox.com> + +> There also exists a draft for searching multiple mailboxes: +> draft-melnikov-imapext-multimailbox-search-01.txt + +Thanks for the poiner, I like this. Seems reasonable to implement. +Any clients support it? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095158.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095158.23014.mbox:2,S new file mode 100644 index 00000000..6117239b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095158.23014.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Apr 11 14:13:29 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + +Message-ID: + +Mark Crispin writes: +> On Tue, 11 Apr 2006, Tony Hansen wrote: +>> Our system is case sensitive. We treat 1 and 2 as the same mailbox, +>> and 3 and 4 as the same mailbox. +> +> Of course, this is the sensible interpretation. However, are we +> certain that there is nobody who is nonsensical enough to treat these +> as four different names? + +I na?vely wrote code implementing the RFC as written, and discovered +that the code treated all four as different. Rather surprised me. I +would not bet that everyone else has avoided the mistake. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095158.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095158.23051.mbox:2,S new file mode 100644 index 00000000..4aed8805 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095158.23051.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Nov 28 11:41:22 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message + size? +In-Reply-To: <000d01c5f452$541ab820$6301a8c0@xms.co.za> +References: <438B4AB4.2020102@sun.com> + + <000d01c5f452$541ab820$6301a8c0@xms.co.za> +Message-ID: + +On Mon, 28 Nov 2005, Timo Sirainen wrote: +> If it's going into capabilities, it should at least be a per-user limit, +> so clients would have to be able to parse the capability reply in +> LOGIN/AUTHENTICATE command's OK message. + +Isn't per-user or systemwide a server implementation issue, as long as it +shows up in capabilities? + +> I don't think they're currently +> required to do that, and most probably don't do it. Actually I'd rather +> like to see that change regardless of MAXAPPEND.. + +Do what? Parse capabilities in LOGIN/AUTHENTICATE? + +I agree that clients should do that, or at least issue a new CAPABILITY +command after authenticating. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095158.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095158.23059.mbox:2,S new file mode 100644 index 00000000..e27c26fd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095158.23059.mbox:2,S @@ -0,0 +1,103 @@ +MBOX-Line: From dave at cridland.net Thu Sep 8 08:26:05 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + + + <20596.1126126367.510966@peirce.dave.cridland.net> + +Message-ID: <21888.1126193165.687819@peirce.dave.cridland.net> + +On Wed Sep 7 09:08:03 2005, Mark Crispin wrote: +> On Wed, 7 Sep 2005, Dave Cridland wrote: +>> Another amusing thing with SELECT - when does the server change +>> state for an OK or NO? When it sends the tagged response, or prior +>> to that? If, given a client in selected state on mailbox Foo, +>> something like: +>> C: A01 SELECT Bar +>> S: * 50 EXISTS +>> S: [...] Normal SELECT untagged responses, including another +>> EXISTS. +>> S: A01 OK +>> Is that EXISTS for Foo, or Bar? And how does the client know? +> +> Indeed; this is a known wart in the protocol. It's an important +> reason why no server generally sends responses when no command is +> in progress, the main exception being the BYE untagged response. +> +> +Indeed. Which I think is a shame. + + +>> It is, of course, a completely legal time for the server to send +>> an EXISTS for Foo, since it's allowed to send those when no +>> command is in progress - it might have simply crossed on the wire. +>> The only way to process that EXISTS would be to hold it until we +>> either see no others before the tagged OK (in which case, we know +>> the SELECT worked, and we can process it for Bar), or we see +>> another (in which case... Which is for Foo and which for Bar? One +>> assumes the first response is for Foo). +>> The same applies for PERMANENTFLAGS, FLAGS, and presumably other +>> responses that SELECT sends. +> +> Most clients don't go to that length; they simply assume that any +> responses to SELECT apply to the selected mailbox. Or they avoid +> the problem entirely by never recycling a session (that is, they +> never issue a new SELECT or EXAMINE in a session). +> +> +Since my client is aimed at using minimal bandwidth, and the setup +cost for a new connection is far from small, then I do recycle +sessions as much as possible. As far as I'm aware - and I've not +looked into this very much - my client will cope with this particular +issue. + +>> As it happens, I know of no server that sends any responses when +>> no command is in progress, but RFC3501 specifically advises that +>> this is possible. +> +> Some people though that it was vitally important to have responses +> when no command is in progress otherwise "IMAP will die" (a similar +> campaign was waged about multiple commands in progress, as opposed +> to pipelining). That experience reinforced my general disdain of +> arguments of the form "IMAP must do or IMAP will die." +> +> +I think both - multiple commands in progress and responses when no +command is in progress - can help make the service more responsive. +On a multithreaded server, it's perfectly possible to do both. + +I don't think IMAP will die if this isn't done, obviously, but I do +believe it helps. I've implemented both responses when no command is +in progress and multiple commands in progress on both client and +server in ACAP. + +It makes the usage of a single connection much more responsive, as +large pipelines do not build up as large a round-trip time for the +last command. ACAP obviously requires the "responses when no command +is in progress" item, and its usage of tagged intermediate responses +solves much of the problem with multiple commands in progress. + +In IMAP, the situation is made more complex by the lack of tagged +intermediate responses, but nevertheless, certain commands can be +executed concurrently, for instance a SEARCH and several FETCHes can +all be executed concurrently without a problem. With ESEARCH, +multiple SEARCHes can be executed concurrently, of course, since it +effectively adds tagged intermediates. + +Moreover even a single-threaded server can, in some cases, combine +the processing of a pipeline of commands, if this is beneficial, to +avoid multiple scans through the mailbox. + +> That stuff is all there in an attempt to placate those individuals +> (not that it did...). The only practical benefit was the limited +> amount of pipelining that you can do in IMAP. + +With current servers, yes. + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095159.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095159.22807.mbox:2,S new file mode 100644 index 00000000..e3050e03 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095159.22807.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From lyndon at orthanc.ca Mon Jun 14 10:48:14 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006112113.56572.witold.krecicki@firma.o2.pl> + + <201006112352.05642.witold.krecicki@firma.o2.pl> + + +Message-ID: + +> Single instance message stores existed in the 1980s. IMAP's architecture +> was influenced by these; hence the rule that messages are immutable. + +I was talking about IMAP specifically. There were indeed many +implementations before IMAP. (MH immediately comes to mind). + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095159.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095159.22914.mbox:2,S new file mode 100644 index 00000000..3d362761 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095159.22914.mbox:2,S @@ -0,0 +1,126 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 17:55:04 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <108EB7FB-D05E-4AF2-A2A8-20C52D808616@iki.fi> +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <1180567472.32181.2062.camel@hurina> + + <108EB7FB-D05E-4AF2-A2A8-20C52D808616@iki.fi> +Message-ID: + +On Thu, 31 May 2007, Timo Sirainen wrote: +>> How is it useful to have a subscription list that is little (or not at all) +>> different than the full mailbox list? +> I want to see a list of my mailboxes. Unfortunately my screen space is +> limited and can't display all of them, but having some of the rarely used +> archived mailboxes removed from the list helps at least a bit. + +I want to see a list of my mailboxes that receive incoming messages. +However, because of clients that automatically subscribe all my mailboxes, +I can't use the subscription list and must instead have that list in my +client's configuration. + +How is that a good thing? + +If you want to isolate a small number of mailboxes, why not put them +together in a directory and not expand that directory. + +>> Does your server export newsgroups? Do you think it is useful that +>> everybody's subscription list include all newsgroups by default? If no, +>> how do you reconcile that with your statement? +> No, of course not. + +I'm glad that you agree. + +> But it's a very small percentage of people who use IMAP +> that way. I don't know anyone who reads news via IMAP. + +I do, as do other people at UW. + +Cyrus, or at least the original design, integrates user mailboxes into the +news namespace. + +Isn't this really the case of self-fufilling prophecy? + +> So I don't think it's +> unreasonable that mail clients' user interface would be designed to work more +> along the lines of "user has only relatively small number of mailboxes" +> instead of "user has thousands of mailboxes". + +We have numerous users at UW (including my boss) with thousands of +mailboxes. Private mailboxes at that! + +What use is it for IMAP to have facilities to handle such things if client +software renders those facilities useless? + +> This of course doesn't mean +> that clients should behave horribly with a large mailbox list, but it does +> mean that I think "show only subscribed mailboxes" option is a good enough +> user interface design for most users. + +I don't think that the helpdesk thinks it is "good enough" when a user +calls in to complain that his such-and-such mailbox "vanished"; and it +turns out that the mailbox is there but the stupid "show only subscribed +mailboxes" client doesn't show it. + +Users hit these problems ALL the time. + +> And in such UI design CREATE+SUBSCRIBE +> combination is just fine (but not automatically subscribing to all mailboxes +> of course, that's pointless). + +I call this a horrible UI design. If CREATE+SUBSCRIBE was intended, it +would have been in the protocol. + +What's more, there is NOTHING about a client doing things my way that +preclude you from doing things your way if you wish. You can subscribe as +many names as you want. + +However, a client that does things your way precludes me from doing things +my way. + +>>>> I am starting to think that the solution is to remove subscriptions from +>>>> IMAP entirely, and replace it with a mechanism to stores a list of IMAP +>>>> URLs. +>>> What would be their purpose then? +>> The original purpose of subscriptions: +>> Identifying those mailboxes which receive incoming messages. +> Why does there have to be such a list? I want to see a list of mailboxes I've +> subscribed to, regardless of whether they receive incoming messages. + +Case 1: + +A user has 1453 mailboxes. + +Of these, 4 receive incoming messages. The other 1439 mailboxes are +archive mailboxes that are only written to by COPY operations. + +The user wants to scan for new messages in his incoming messages +mailboxes. + +Are you seriously suggesting that the client should check all 1453 +mailboxes when it is know that only 4 could possibly have incoming +messages? + + +Case 2: + +A user has multiple IMAP servers. + +When walking up to a kiosk, he wants to access his INBOX on one IMAP +server, and have the subscription list provide the glue to tell the kiosk +about the other IMAP servers. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095159.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095159.22920.mbox:2,S new file mode 100644 index 00000000..3916856f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095159.22920.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 12 17:25:42 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <07Mar12.161031pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + <18599.1173734925.056533@peirce.dave.cridland.net> + <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> + <1173742339.9167.48.camel@hurina> + <07Mar12.161031pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 12 Mar 2007, Bill Janssen wrote: +>> If you're going to replace the message, change its UID as well. +> I think I only need to do this if the underlying changes are visible +> through the IMAP protocol. The only real difference is that they +> would be returned by BODY or TEXT searches that previously didn't + +I fail utterly to resolve your first sentence with the second. Put +another way, what you describe in your second sentence sure sounds like a +"change visible through the IMAP protocol". + +> The main reason I'm not using an existing IMAP server is that I can't +> stand the long-running searches, so that doesn't appeal to me. + +Which server has "long-running searches"? Sounds like a poorly-configured +server installation to me. UW imapd does a text search through 14,000 +messages in about 3-4 seconds, and that's with all the Unicode conversion +gubbish that has to be done for a good-quality search. + +> Could I just not do APPEND? What's it used for, anyway? Drafts, +> copying messages from folders on other mail servers, etc. + +APPEND is mandatory to implement. Besides the uses you list, APPEND is +the only way that an IMAP client can modify a message on the server (e.g., +to save a copy of the message with attachments removed). + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095159.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095159.23014.mbox:2,S new file mode 100644 index 00000000..8e86a807 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095159.23014.mbox:2,S @@ -0,0 +1,50 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 11 14:25:39 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + +Message-ID: + +On Tue, 11 Apr 2006, Arnt Gulbrandsen wrote: +>>> Our system is case sensitive. We treat 1 and 2 as the same mailbox, +>>> and 3 and 4 as the same mailbox. +>> Of course, this is the sensible interpretation. However, are we +>> certain that there is nobody who is nonsensical enough to treat these +>> as four different names? +> I naively wrote code implementing the RFC as written, and discovered +> that the code treated all four as different. Rather surprised me. I +> would not bet that everyone else has avoided the mistake. + +I don't think that the RFC "as written" requires that all four be treated +as different. Rather, the RFC simply doesn't take a position. + +To be honest, I would have preferred to prohibit case-sensitivity in +mailbox names. However, at the time there was a lot of pushback from the +UNIX community as to why case-sensitivity was so critically important for +the modern UNIX world, and how the future would be case-sensitive forever. + +Today, I note that Mac OS X's default filesystem is case-insensitive (as +is Windows XP). I actually used it for several months before I realized +that it was case-insensitive; and if I hadn't tried to unpack a tarball +with two files that differed only by case, I probably would still not have +noticed. + +I have this lingering nightmare that the day will come that I will be +flamed for case-sensitivity in mailbox names, and being too stupid to +recognize the obvious benefits of case-insensitivity (remember that I came +from the PDP-10 world...). *Shudder* + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095159.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095159.23051.mbox:2,S new file mode 100644 index 00000000..595c680a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095159.23051.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Nov 28 11:46:53 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message + size? +In-Reply-To: <000c01c5f452$541ab820$6301a8c0@xms.co.za> +References: <438B4AB4.2020102@sun.com> + + <000c01c5f452$541ab820$6301a8c0@xms.co.za> +Message-ID: + +On Mon, 28 Nov 2005, Cyrus Daboo wrote: +> Right, but ANNOTATEMORE does allow server level annotations as well as +> per-mailbox annotations. The question is how much of the server limit details +> do you want exposed via CAPABILITY (which all clients will be forced to get) +> vs in ANNOTATEMORE (where clients have to explicitly ask for it). Perhaps all +> we need is a 'LIMITS' capability that tells clients that detailed +> server/mailbox limit information is available via ANNOTATEMORE and they +> should use that. + +I think that I am opposed to any new capability which requires the use of +annotations to obtain the value. This is a needless interdependency. + +I may be persuaded otherwise, but I doubt that this case (server limits) +would do so. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095159.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095159.23059.mbox:2,S new file mode 100644 index 00000000..aae7b120 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095159.23059.mbox:2,S @@ -0,0 +1,118 @@ +MBOX-Line: From daboo at isamet.com Thu Sep 8 09:47:04 2005 +To: imap-protocol@u.washington.edu +From: Cyrus Daboo +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + + +Message-ID: <14D6F6402750309B537A989C@ninevah.local> + +Hi Mark, + +--On September 7, 2005 12:50:36 PM -0700 Mark Crispin + wrote: + +>> a SELECT INBOX foobar +> +> That is not a SELECT command, any more than +> { select } choose your option +> or +> to select the best candidate for the job +> are. + +In many Sections in rfc3501: + +> BAD - command unknown or arguments invalid + +To me this implies a difference between an unknown command 'verb' and a +known command 'verb' but with invalid arguments. Yet you say that a command +with invalid arguments is an unknown command or at least not the same as +the command that uses the 'verb'. + +rfc3501, Section 2.2.2: + +> BAD (indicating a protocol error such as +> unrecognized command or command syntax error) + +Again a distinction is being made between an unrecognised command and a +command with syntax errors, contrary to your statements. + +So, I still believe that: + +a SELECT INBOX foobar + +is a SELECT command with a syntax error. I wonder how many others also see +it that way? + + +>> I guess all I am asking for is a change to that sentence, something like: +>> Consequently, if a mailbox is selected and an attempted SELECT +>> command fails with a NO response, no mailbox is selected. +> +> I think that this is a terrible idea. It implies that there are other +> cases where there is "failure" involving a BAD. Thus, every single point +> where command failure is mentioned would have to add such wording, now +> and forever. + +The problem is you are using the work 'failure' to mean a 'NO' response is +returned. My dictionary defines failure as 'lack of success' - i.e. any +response other than 'OK' as far as IMAP is concerned. Form a client +implementer perspective both 'NO' and 'BAD' represent errors (and that to +me means failure). The term 'failure' is used in 3501 in many several +different contexts. So lets look at 3501: + +Section 2.2.2: + +> The server completion result response indicates the success or +> failure of the operation. + +To me that means 'BAD' is considered a 'failure' since its a completion +response and clearly does not indicate 'success'. Later on in that same +paragraph it says 'OK' is 'success', 'NO' is 'failure' and 'BAD' is +'error'. So there is a lack of consistency at least there. + +Section 7.1.5: + +> The difference between a BYE that occurs as part of a normal +> LOGOUT sequence (the first case) and a BYE that occurs because of +> a failure (the other three cases) is that the connection closes +> immediately in the failure case. + +This is clearly talking about a 'generic' failure as opposed to a 'NO' +failure. + +Section 6: + +> The state of a connection is only changed by successful commands +> which are documented as changing state. A rejected command (BAD +> response) never changes the state of the connection or of the +> selected mailbox. A failed command (NO response) generally does not +> change the state of the connection or of the selected mailbox; the +> exception being the SELECT and EXAMINE commands. + +This is a very clear statement of the SELECT problem, but in terms of a +'generic' state change. + +Section 6.2.2: + +> If an AUTHENTICATE command fails with a NO response, the client +> MAY try another authentication mechanism by issuing another +> AUTHENTICATE command. + +Here the specific case of 'NO' vs 'BAD' is described to avoid confusion. +That is really all I am asking for for the SELECT issue. Perhaps a +reference back to that paragraph at the top of Section 6 is really all that +is needed. + +Alternatively, if you are going to redefine the terms 'failure' and 'fails' +to mean a 'NO' response (as opposed to their usual dictionary meaning) then +they should be explicitly described in the 'Conventions' section and +perhaps even be quoted whenever that explicit meaning is used as opposed to +the regular dictionary meaning. + +-- +Cyrus Daboo + diff --git a/demo/ermis-f/imap-protocol/cur/1600095160.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095160.22807.mbox:2,S new file mode 100644 index 00000000..7c09bc89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095160.22807.mbox:2,S @@ -0,0 +1,70 @@ +MBOX-Line: From snowjn at aol.com Mon Jun 14 11:10:07 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> <201006112352.05642.witold.krecicki@firma.o2.pl> <201006120124.53714.witold.krecicki@firma.o2.pl> <29965.1276510437.099598@puncture> <4C160582.7020002@gulbrandsen.priv.no> + +Message-ID: <4C16707F.5030906@aol.com> + + Mark Crispin wrote: +> On Mon, 14 Jun 2010, Arnt Gulbrandsen wrote: +>> Dave, you're talking about an extension AOL already has put into the +>> world, and which Tb already implements. Is the barrier between +>> "XAOL-MOVE" and "MOVE" really so large? +> +> Is AOL's implementation certified not to have any of the potential +> failures that have discussed? I'm not saying that it is impossible to +> have such an implementation; but I am saying that it's awfully cocky to +> claim it without submitting the details for examination. +Certified? there's no need. My server is just awesome. How's that +for cocky?? + +Seriously, of course not. The command was originally added for our +internal use. If it were to be an official recognized feature then I +would expect all of the issues to be reviewed and resolved here, just +as we're doing now. + +> +> For what it's worth, I've worked out how a store can be designed to do +> it. +> In such a store there is no particular benefit to MOVE over COPY; MOVE is +> comparable (slightly slower) to COPY in performance. Any store which has +> a slow COPY can not have a faster yet safe MOVE. +I have to disagree here. In a database indexed backend, the move is simply +a update to the tracking row to change the parent folder. A copy, on +the other +hand, would create a new instance of the message and a new entry in the +tracking database. So, in my case it's one atomic database update +compared to +a message write and database insert. +> +> I daresay that AOL is just a small percentage of overall IMAP usage; and +> AOL users using Thunderbird are a smaller percentage. What happens if we +> jump off this cliff and discover that there really is no net at the +> bottom? What responsibility will AOL take? +> +Here, I'll just reuse one of your comments and say "Prove it". + +I know exactly how much IMAP usage AOL has. I also have a good idea how +much +of that usage is Thunderbird. I don't know how much IMAP is used +worldwide, and +I'd bet you don't either. + +Isn't discovering the net what we're trying to accomplish? + +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095160.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095160.22914.mbox:2,S new file mode 100644 index 00000000..faaf2ec5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095160.22914.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed May 30 17:58:17 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: <208DFE0DE3744042926933E610B9C458DB9853696E@DF-GRTDANE-MSG.exchange.corp.microsoft.com> +References: + <208DFE0DE3744042926933E610B9C458DB9853696C@DF-GRTDANE-MSG.exchange.corp.m + icrosoft.com> + <208DFE0DE3744042926933E610B9C458DB9853696E@DF-GRTDANE-MSG.exchange.corp.m + icrosoft.com> +Message-ID: + +On Wed, 30 May 2007, Larry Osterman wrote: +> I absolutely didn't mean to imply that I felt you were picking on the Mail team. + +Well, it's good to clarify that in any case, especially to third parties +reading the thread... + +> I've asked them to comment - unfortunately if the problem is in OE6 as +> well as Windows Mail, it means it's not a regression (even if it IS +> stupid behavior) :( + +Agreed on both points... + +Thanks! + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095160.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095160.22920.mbox:2,S new file mode 100644 index 00000000..8ce3a0d9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095160.22920.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From janssen at parc.com Mon Mar 12 17:41:40 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + <18599.1173734925.056533@peirce.dave.cridland.net> + <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> + <1173742339.9167.48.camel@hurina> + <07Mar12.161031pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar12.164147pst."57996"@synergy1.parc.xerox.com> + +> On Mon, 12 Mar 2007, Bill Janssen wrote: +> >> If you're going to replace the message, change its UID as well. +> > I think I only need to do this if the underlying changes are visible +> > through the IMAP protocol. The only real difference is that they +> > would be returned by BODY or TEXT searches that previously didn't +> +> I fail utterly to resolve your first sentence with the second. Put +> another way, what you describe in your second sentence sure sounds like a +> "change visible through the IMAP protocol". + +I was thinking that the message looked the same -- it remains static, +as far as the protocol can see. Same content, same UID. The change +is to the mailbox. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095160.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095160.23014.mbox:2,S new file mode 100644 index 00000000..47be7827 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095160.23014.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From dave at cridland.net Tue Apr 11 15:24:36 2006 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + <443C0704.40301@att.com> + +Message-ID: <9875.1144794276.158704@peirce.dave.cridland.net> + +On Tue Apr 11 20:46:19 2006, Mark Crispin wrote: +> On Tue, 11 Apr 2006, Tony Hansen wrote: +>> When 3501bis gets written, it'd be worth adding a note about this +>> case. +> +> I'm not convinced that we can, unless we can guarantee that there +> is no implementation out there that does the nonsensical thing. + +I don't think it's actually possible, because unless you do the +sensible thing, then the result is a broken server. + +Let's assume that we have two servers. Both consider only "INBOX" to +be case insensitive, everything else is strictly case sensitive. Our +client makes the same foolish assumption. + +For one, we'll make INBOX not be a dual-use mailbox. This should make +Mark happy. We'll call this A. + +For the other, we'll make INBOX a dual-use mailbox. We shall call +this B. + +If they do the silly thing, then they are in the unfortunate position +that should a client CREATE "InBox/foo", they have to return a LIST +response for INBOX, and a list response for InBox, with different +attributes. + +Assuming this is not illegal in and of itself, does the client then +have to treat INBOX and InBox as different names, one of which is +case-insensitive? + +In summary, I think you're safe to deprecate the practise. + +Dave. +-- + You see things; and you say "Why?" + But I dream things that never were; and I say "Why not?" + - George Bernard Shaw + diff --git a/demo/ermis-f/imap-protocol/cur/1600095160.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095160.23051.mbox:2,S new file mode 100644 index 00000000..2203d5d4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095160.23051.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From tss at iki.fi Mon Nov 28 12:09:07 2005 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: IMAP capability for maximum APPEND message + size? +In-Reply-To: +References: + <438B4AB4.2020102@sun.com> + + <000d01c5f452$541ab820$6301a8c0@xms.co.za> + +Message-ID: <1133208547.3403.49.camel@hurina> + +On Mon, 2005-11-28 at 11:41 -0800, Mark Crispin wrote: +> On Mon, 28 Nov 2005, Timo Sirainen wrote: +> > If it's going into capabilities, it should at least be a per-user limit, +> > so clients would have to be able to parse the capability reply in +> > LOGIN/AUTHENTICATE command's OK message. +> +> Isn't per-user or systemwide a server implementation issue, as long as it +> shows up in capabilities? + +Sure, as long as the per-user capabilities actually get picked up by +clients. + +> > I don't think they're currently +> > required to do that, and most probably don't do it. Actually I'd rather +> > like to see that change regardless of MAXAPPEND.. +> +> Do what? Parse capabilities in LOGIN/AUTHENTICATE? + +Yes, accept the new capabilities in [CAPABILITY ..] if server sends +them. + +I'd like to have only STARTTLS and AUTH= capabilities before user has +logged in, and the rest only after login. Unfortunately most clients +just ignore all the other capabilities than the one they requested +before logging in. But even just being able to add/remove capabilities +based on per-user settings with some commonly used clients would be +nice.. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095160.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095160.23059.mbox:2,S new file mode 100644 index 00000000..217108dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095160.23059.mbox:2,S @@ -0,0 +1,127 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu Sep 8 11:56:38 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <14D6F6402750309B537A989C@ninevah.local> +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + + + <14D6F6402750309B537A989C@ninevah.local> +Message-ID: + +Hi Cyrus, + +Your confusion seems to be that you infer the existance of a protocol +element (and thus its semantics) from natural-language text, even though +there is nothing in the formal syntax to justify belief that this protocol +element exists. + +Natural language is ambiguous (especially given the myriad of dialects!); +that is why we have formal syntax. We are lost the moment we turn to +dictionaries to justify an interpretation of natural language as being +normative even though that interpretation has no basis in the formal +syntax. + +This is especially true when the dictionary definition is itself +ambiguous. You say that your dictionary defines "failure" as "lack of +success". What is "success" or "failure" in the context of a "I don't +understand you" response? + +If you utter "blah blie boh bah" and I respond "I don't understand you", +that constitutes "success" if you wanted to confuse me by uttering +nonsense, and "failure" if you speak Blahish and want to know where the +post office is. In other words, "success" and "failure" in the dictionary +context is based entirely on the perspective of the initiator. It's not a +protocol element. + +In order to apply semantics to a protocol element, we must have a +normative definition of that protocol element. In this case, we are +looking for a normative definition of "a SELECT command with invalid +arguments." + +In the formal syntax on page 90, we find the definition of a SELECT +command: + +select = "SELECT" SP mailbox + +This is the one, and *only*, definition, of a SELECT command. Now, if the +definition was something like + +select = "SELECT" [arguments] + +that would allow there to be "a SELECT command with invalid arguments" +protocol element. + +Put another way; IMAP does not have a protocol element of "a SELECT +command with invalid arguments." Nor is there any syntax that could be +used to define such a protocol element. + +More importantly, such a concept is tied to a particular style of parsing +algorithm. Not all parsers work this way. + +We humans may recognize such a concept. For our benefit we may have text +such as "command unknown or arguments invalid". But such text is not +normative to the definition of a command in the protocol. + +We humans may think that the syntax for "a SELECT command with invalid +arguments" is "obvious". As I demonstrated in my previous message, it +isn't obvious. There is no razor, anywhere in the IMAP specification, +that can differentiate between "a SELECT command with invalid arguments" +and random garbage. + +Consider (as I showed in my previous message) a tag with a non-atom +character. A parser which separates "words" as space-delimited tokens +might not discover that the tag is invalid until after it has recognized +the SELECT verb. A parser which does strict left-to-right processing +would choke on the invalid character in the tag and never see the verb. + +Nothing in the IMAP specification dictates that either way of parsing is +superior to the other; either way ultimately results in a BAD. + +The problem only comes in if you assume that there are semantics +associated with a protocol element of "a SELECT command with invalid +arguments". Such an assumption is invalidated by absence of that protocol +element in the formal syntax, and by the absurd conclusion that *any* BAD +could trigger those sematics (because there is no defined protocol element +and any implied definition is ambiguous because your implied definition +differs from mine). + +>> The state of a connection is only changed by successful commands +>> which are documented as changing state. A rejected command (BAD +>> response) never changes the state of the connection or of the +>> selected mailbox. A failed command (NO response) generally does not +>> change the state of the connection or of the selected mailbox; the +>> exception being the SELECT and EXAMINE commands. +> This is a very clear statement of the SELECT problem, but in terms of a +> 'generic' state change. + +Interesting that you point that out, since it completely demolishes your +argument that there is an ambiguity. + +It defines, by example, "rejected" and "failed" commands. + +It clearly states that a BAD response "never changes the state of the +connection or of the selected mailbox". + +>> If an AUTHENTICATE command fails with a NO response, the client +>> MAY try another authentication mechanism by issuing another +>> AUTHENTICATE command. +> Here the specific case of 'NO' vs 'BAD' is described to avoid confusion. That +> is really all I am asking for for the SELECT issue. + +I see it differently. "fails with a NO response" is a tautology; "fails" +or "responds with NO" suffice. + +I interpret your argument as saying that this tautology conveys meaning, +and a lack of the same tautology elsewhere is similarly meaningful. + +The right thing to do is to delete tautologies, not add new ones. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095161.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095161.22807.mbox:2,S new file mode 100644 index 00000000..d8679e7c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095161.22807.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 12:08:34 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + + +Message-ID: <201006142108.34481.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 19:33:39 Mark Crispin wrote: +> On Mon, 14 Jun 2010, Lyndon Nerenberg wrote: +> > When I maintained Esys' IMAP server, a 'single instance' message store +> > was *the* most widely requested feature from our customer base. This was +> > in 1997, and I doubt we were the first to do it. +> +> Single instance message stores existed in the 1980s. IMAP's architecture +> was influenced by these; hence the rule that messages are immutable. +> +> The new message store that I am designing now is single instance. It is +> targeted for CAstor where there is no filesystem at all; just pointers. +Then why not design it so that MOVE is possible and easy? + +> +> > Note +> > that even with the single instance store, it is still necessary to +> > perform a copy of the file if the source and destination mailboxes reside +> > on different filesystems. +> +> The same problem exists with MOVE, of course. Anyone who thinks that +> rename() is a solution hasn't studied what rename() actually does. +I never said that rename() is a solution. + +> > I cannot understand your claim that using link() in this case is a +> > "hack." +> +> It's just one of many unsubstantiated claims that he makes. +Name other ones, please. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095161.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095161.22914.mbox:2,S new file mode 100644 index 00000000..23ac223a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095161.22914.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From schaefer at brasslantern.com Wed May 30 18:06:03 2007 +To: imap-protocol@u.washington.edu +From: Bart Schaefer +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +In-Reply-To: +References: +Message-ID: <070530180603.ZM30709@torch.brasslantern.com> + +On May 30, 10:48am, Mark Crispin wrote: +} Subject: [Imap-protocol] Vista Mail doesn't handle \NoSelect mailboxes? +} +} It appears that Vista Mail refuses to descend any hierarchy that it +} can not SUBSCRIBE. + +If this does (as someone else suggested) work the same way as IM&N/OE +in XP, then you can in fact descend the hierarchy; you just have to +go out of your way to do it. + +When you want to look at any particular IMAP folder, right-click on +the server name in the tree and select "IMAP Folders...", then search +for the folder you want in the list, select it, and click the "GO TO" +button at the bottom of the dialog. + +The folder will now appear in the tree and you'll be able to look at the +messages, but will almost certainly vanish when you exit/restart. The +entire hierarchy must be subscribe-able to store the name for more than +one session. + +It also works to select "Properties" and then click the big friendly +"IMAP Folders ..." button at the top of the display. + +Note, I don't have Vista and can't actually confirm that the above +still works in a similar way, but maybe some of you who do have it can +work out an equivalent set of instructions. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095161.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095161.22920.mbox:2,S new file mode 100644 index 00000000..9e6863fc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095161.22920.mbox:2,S @@ -0,0 +1,81 @@ +MBOX-Line: From tss at iki.fi Mon Mar 12 17:48:56 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +In-Reply-To: +References: <"07Mar11. 134508pst. 57996"@synergy1.parc.xerox.com> + <5aK4EfZGxwhHX3617xc/FQ.md5@libertango.oryx.com> + +Message-ID: <1173746936.9167.104.camel@hurina> + +On Sun, 2007-03-11 at 15:50 -0700, Mark Crispin wrote: +> That's been the general problem all alone. Another problem with test +> suites is that it leads to servers which pass the test suite, but are +> otherwise broken. A server vendor should not have advance access to what +> is in the test suite, but rather should be given a list of the tests that +> the server failed. Also, the tests should change over time (no memorizing +> the exam!). + +I think the test suite should do three things: + +1. Verify that the server accepts everything that the ABNF rules say, +and that it doesn't reply anything that doesn't fit the ABNF rules. + +2. Verify that the server in general works as the spec's text is +understood. Test all the commands as fully as possible. + +3. Verify that the server doesn't do anything invalid when stress +testing with randomly (but correctly) behaving clients. + +I'm most interested in implementing the 3rd part since it's the test +that can most easily expose server bugs. I was thinking about +implementing it something like: + +First you get an mbox file containing whatever messages you want to test +(of course preferrably as complex as possible). Then you run a script +that uses UW-IMAP to access the mbox file and fetch all kinds of data +for all the messages (envelope, bodystructure, rfc822.size, body parts' +MD5 sums, etc.) All this information gets stored somewhere. + +Then you run the actual imaptest tool that appends the mails from the +mbox file to the IMAP server, performs all the same fetch commands that +were used with UW-IMAP and makes sure that everything matches (allowing +some minor variations where they're legal). + +So far this is pretty much the same as any other simple test that just +verifies everything to be correct. But I think the interesting part is +when you do all of this randomly with a lot of clients accessing the +mailbox simultaneously and each doing different things. The tester then +verifies that the state for all the connections is always consistent, +the IMAP protocol isn't violated and that replies contain all the +messages/data that is supposed to be there and that they're what they're +expected to be (eg. if FETCH reply is returning something as NIL or is +missing, do NOOP and make sure that EXPUNGE is received for that +message). + +SEARCHes could also be checked by randomly generating different kinds of +SEARCH commands, feeding them to UW-IMAP and storing what messages they +match to. Then in the middle of the randomized testing make sure that +the SEARCH still matches those messages that exist in the mailbox at +that time. + +\Recent flag's correctness could be tested by making the clients each +"own" those messages that are listed as \Recent for that session (doing +NOOPs while other clients are APPENDing new mails), making various +operations such as flag changes and expunges to them and always making +sure that no other client has done anything to the owned messages. + +Once in a while there could be checkpoints where each connection does a +CHECK, then everyone waits until it's finished with all connections, and +then the connection states are compared to make sure everyone has the +exact same flags, and that STATUS command replies with the expected +counters. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095161.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095161.23014.mbox:2,S new file mode 100644 index 00000000..2943979a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095161.23014.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 11 15:36:48 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: <9875.1144794276.158704@peirce.dave.cridland.net> +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + <443C0704.40301@att.com> + + <9875.1144794276.158704@peirce.dave.cridland.net> +Message-ID: + +On Tue, 11 Apr 2006, Dave Cridland wrote: +> If they do the silly thing, then they are in the unfortunate position that +> should a client CREATE "InBox/foo", they have to return a LIST response for +> INBOX, and a list response for InBox, with different attributes. + +Sorry, that Rubicon has already been crossed. + +The server can hide InBox. Thus, if you create "InBox/foo", you will +never see any such name unless you explicitly enter Inbox/ prior to any +wildcards. Put another way, "InBox" does not exist, but "InBox/" does. + +UW imapd does that if the client ignores the \NoInferiors that is +returned with the name INBOX. + +Because someone demanded it, and I got tired of being screamed at. +That's why. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095161.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095161.23051.mbox:2,S new file mode 100644 index 00000000..70b8deb1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095161.23051.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From ingo.schurr at schlund.de Wed Nov 30 09:08:21 2005 +To: imap-protocol@u.washington.edu +From: Ingo Schurr +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] INBOX magic +Message-ID: <20051130170821.GC13650@fone> + +Hi Folks, + +I guess this is asked a thousand times, sorry for asking it time 1001: + +From RFC 3501 +mailbox = "INBOX" / astring + ; INBOX is case-insensitive. All case variants of + ; INBOX (e.g., "iNbOx") MUST be interpreted as INBOX + ; not as an astring. An astring which consists of + ; the case-insensitive sequence "I" "N" "B" "O" "X" + ; is considered to be INBOX and not an astring. + ; Refer to section 5.1 for further + ; semantic details of mailbox names. + +Reading the BNF as pedantic as possible, neither DQUOTE "Inbox" DQUOTE +nor "Inbox/foo" would trigger the INBOX magic, as both would be +astrings. (In the example '/' would be a hierarchical separator) + +It seems to me the intended reading would be: the root folder "INBOX" +is case-insensitive. That is, (with '/' as separator again) +DQUOTE "InBox" DQUOTE -> INBOX +"{5}" CR LF "inbox" -> INBOX +"InBox/foo" -> INBOX/foo +"InBoxOffice" -> InBoxOffice +(on an otherwise case-sensitive server). + +This reading for sure would avoid potential strange behaviour. If not: +a001 CREATE InBox/foo +a002 LIST "" "*" +* LIST () "/" INBOX +* LIST () "/" InBox +* LIST () "/" InBox/foo +a003 DELETE InBox +-> Ups, all mails in "INBOX" are gone... + +Best, + +Ingo + + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095161.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095161.23059.mbox:2,S new file mode 100644 index 00000000..a8929793 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095161.23059.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From dave at cridland.net Thu Sep 8 12:58:00 2005 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: <21888.1126192430.327355@peirce.dave.cridland.net> +References: + <5b93232d050907075812659c02@mail.google.com> + <5b93232d05090708031a898592@mail.google.com> + + <20596.1126120360.592254@peirce.dave.cridland.net> + <1F6D592896B8EBF14F052EB5@ninevah.local> + <21888.1126192430.327355@peirce.dave.cridland.net> +Message-ID: <21888.1126209480.519052@peirce.dave.cridland.net> + +On Thu Sep 8 16:13:50 2005, Dave Cridland wrote: +> On Thu Sep 8 07:29:59 2005, Cyrus Daboo wrote: +>> --On September 7, 2005 8:12:40 PM +0100 Dave Cridland +>> wrote: +>> +>>> Personally I like it. It means that where I need to perform an +>>> UNSELECT, +>>> but the server doesn't support that, I can issue a known bogus +>>> SELECT. +>>> (In fact, I do: SELECT "&#-&#/#") +>> +>> I do 'EXAMINE' then 'CLOSE' - which works without having to force +>> a server error. +> +> Yes, that's better. + +Actually, I'll retract this, if you don't mind. :-) + +I think best would be an EXAMINE "&#-&#/#" pipelined with a CLOSE. +This will, hopefully, fail, causing the state to switch to +authenticated. So I'm moving from trying to elicit a NO, to trying to +elicit a NO followed by a BAD. + +An EXAMINE of a real mailbox will cause things like a UID check, etc, +which may be relatively expensive, and possibly time consuming. A +CLOSE of an EXAMINEd mailbox is less likely to cause much delay, but +it'll still be non-zero time adding to the round-trip. So it'll be a +longer round-trip - on some servers, very much longer. + +I think your method is certainly cleaner, which is why I initially +decided it was better than mine, but when I actually looked at +changing the code, I decided there were potentially quicker ways of +emulating UNSELECT. I agree before you say anything that it's a very +dirty hack. :-) + +For the benefit of anyone looking at the mailbox name I use in +bewilderment, it's the most invalid modified UTF-7 I could come up +with when I was writing it, and deliberately contains no alphanumeric +characters to reduce the outside chance someone might have created it. + +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095162.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095162.22807.mbox:2,S new file mode 100644 index 00000000..c4934a9a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095162.22807.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 12:20:20 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + + +Message-ID: <201006142120.20699.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 19:33:39 Mark Crispin wrote: +> > I cannot understand your claim that using link() in this case is a +> > "hack." +> +> It's just one of many unsubstantiated claims that he makes. +Currently it seems like you are using this one claim, and I know it was +ufortunate, to prove that all my claims are wrong. And that's the sign that +you're lacking any logical arguments. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095162.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095162.22914.mbox:2,S new file mode 100644 index 00000000..9b4cb2ec --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095162.22914.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From dave at cridland.net Thu May 31 01:18:10 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Subscriptions in IMAP +In-Reply-To: +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + +Message-ID: <8046.1180599490.471444@peirce.dave.cridland.net> + +On Thu May 31 00:00:14 2007, Mark Crispin wrote: +> I am starting to think that the solution is to remove subscriptions +> from IMAP entirely, and replace it with a mechanism to stores a +> list of IMAP URLs. + +That's an interesting viewpoint to me, because I have been toying +with the idea of doing more or less this in Polymer - namely, keeping +a list of IMAP URLs (possibly including SEARCH components) in a +heirarchical layout within Polymer's ACAP store, and using this as +the primary navigation tree. + +My reasoning was that this would allow for the user to map the +mailbox heirarchy wholly independent of server layout, and gain more +advantage from things like CONTEXT, keywords, etc. + +My reasoning for not using subscriptions is (as it's always been) not +a problem with subscriptions, per-se, but a problem with their use by +multiple clients. There's almost as many interpretations of what +subscriptions are, and how to use them, as there are clients, and +there's little guidance within the RFCs to explain them. + +I'm not blaming Mark, or the others involved in RFC3501 here - it's +understandable that the semantics of a subscribed mailbox weren't +fully described in the original design, because the intent was +obvious - unfortunately, as time has moved on, it's less obvious, and +requires a certain degree of archeology to detirmine what the intent +was, and besides, we have multiple clients gradually pulling the +intent in different and contradictory directions. + +I *think* that a subscribed mailbox is one that the user has declared +an interest in monitoring, specifically for new messages. Equally, I +*think* that, like a browser bookmark, one might present a shortcut +menu directly to them. And I *think* that that menu might be the +default navigation tree for some clients quite sensibly - for +instance mobile devices. + +Finally, I note that there are different demands on a +subscription-like system now, in particular, those mailboxes which +interest the user on a mobile device (where you almost certainly +don't want to monitor everything closely) are likely to be different +to those on a desktop machine. + +I did suggest, a while back, that we should look at providing +user-defined keywords on mailboxes, as we do on messages already, as +a potential replacement to subscription, but the consensus seemed to +be against this, in favour of reworking the idea as a further nail to +METADATA's hammer, whereas I really wanted something much simpler. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095162.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095162.22920.mbox:2,S new file mode 100644 index 00000000..72db9fa0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095162.22920.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 12 17:50:54 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] how long can APPEND take? +In-Reply-To: <07Mar12.164147pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.121950pst."57996"@synergy1.parc.xerox.com> + <18599.1173734925.056533@peirce.dave.cridland.net> + <07Mar12.145541pst."57996"@synergy1.parc.xerox.com> + <1173742339.9167.48.camel@hurina> + <07Mar12.161031pst."57996"@synergy1.parc.xerox.com> + + <07Mar12.164147pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 12 Mar 2007, Bill Janssen wrote: +>>>> If you're going to replace the message, change its UID as well. +>>> I think I only need to do this if the underlying changes are visible +>>> through the IMAP protocol. The only real difference is that they +>>> would be returned by BODY or TEXT searches that previously didn't +>> I fail utterly to resolve your first sentence with the second. Put +>> another way, what you describe in your second sentence sure sounds like a +>> "change visible through the IMAP protocol". +> I was thinking that the message looked the same -- it remains static, +> as far as the protocol can see. Same content, same UID. The change +> is to the mailbox. + +A change to the behavior of SEARCH for that message is a change to that +message. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095162.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095162.23014.mbox:2,S new file mode 100644 index 00000000..8c4f0afe --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095162.23014.mbox:2,S @@ -0,0 +1,92 @@ +MBOX-Line: From vladimir_butenko at stalker.com Tue Apr 11 15:45:24 2006 +To: imap-protocol@u.washington.edu +From: "Vladimir A. Butenko" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + +Message-ID: + +On Tue, 11 Apr 2006 14:25:39 -0700 (Pacific Daylight Time) + Mark Crispin wrote: + + +> I have this lingering nightmare that the day will come that I will be +>flamed for case-sensitivity in mailbox names, and being too stupid to +>recognize the obvious benefits of case-insensitivity (remember that I came +>from the PDP-10 world...). *Shudder* + +It would be beneficial if a client can learn AT LEAST if the server +namespace is case-sensitive or not. Because any client does have to switch +its internal routines to the case-[in]sensitive mode. Something along the +lines used to discover the path separator - + a (CASE) extension to the special-case LIST "" "" command? +it may also help to have: + A001 LIST (CASE) "" "INBOX/" +that will provide an answer to how to treat +INBOX/aaa +and +INboX/aaa +cases. + +But, as usual, the Pandora box is happy to be opened again: +If the server says that it's case-insenstive, than I, as a user, would +definitely expect that not only + Mailbox +and + mailboX + +will be same box, but that + + ???? +and + ???? + +will be the same mailbox, too. The underlying OS file system may handle this +case properly - Windows does, I'm sure MacOSX does so too. But it won't help +- +as an IMAP server cannot use that OS feature, because it cannot deal +directly with non-Latin names: UTF-7 comes in and destroyes everything ;-( + +Decoding UTF-7 back into UTF-8 and using it internally is ugly, as you can +get a completely different name in LIST results. + +That's why "strict case-sensitivity" is a GOOD thing from the protocol point +of view, and all IMAP servers MUST be case-sensitive to avoid confusion in +clients (but not in users). Unfortunately, many IMAP servers do map mailbox +names into OS file names, and we have all these "semi-case-insensitivity" +problems today. + +The solution would be to get rid of UTF-7 and switch to the plain UNENCODED +UTF-8 for mailbox names. If a client can learn that the server supports +that (via those special LIST or NAMESPACE responses), then the transition +may be not as impossible as it looks now. And any server that stores +mailboxes as UTF-7-encoded OS files can support UTF-8 clients now, as it's +very easy to detect a UTF-8 name: simple presence of the 8th bit in any name +byte is an indication of the "new" naming conventions. + +But - there would be a lot of hidden problems in such a transition... + +> -- Mark -- +> +> http://staff.washington.edu/mrc +> Science does not emerge from voting, party politics, or public debate. + +Political Science does :-). There is a lot one can learn by watching +primates voting. Or debating. Especially publicly :-) + +> Si vis pacem, para bellum. + +and when you wish for war, prepare for a long boring peace? :-) + + +Sincerely, +Vladimir + diff --git a/demo/ermis-f/imap-protocol/cur/1600095162.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095162.23051.mbox:2,S new file mode 100644 index 00000000..34f8dbca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095162.23051.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Nov 30 09:36:51 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] INBOX magic +In-Reply-To: <20051130170821.GC13650@fone> +References: <20051130170821.GC13650@fone> +Message-ID: + +On Wed, 30 Nov 2005, Ingo Schurr wrote: +> Reading the BNF as pedantic as possible, neither DQUOTE "Inbox" DQUOTE +> nor "Inbox/foo" would trigger the INBOX magic, as both would be +> astrings. (In the example '/' would be a hierarchical separator) + +The first is not the case. INBOX in a mailbox name is always INBOX, even +if it is given as a string. Note the following in the text of that BNF +rule: + ; An astring which consists of + ; the case-insensitive sequence "I" "N" "B" "O" "X" + ; is considered to be INBOX and not an astring. + +The second is the case. There is no reason to believe that Inbox/foo is +in any way related to INBOX. That's completely server-dependent. + +For what it's worth, UW imapd won't prevent you from creating Inbox/foo +however it will hide the Inbox/ directory and you can't see it (not even +with a * wildcard) unless Inbox/ is in the pattern: + C: 1 create Inbox/foo + S: 1 OK CREATE completed + C: 2 list "" Inbox* + S: * LIST (\NoInferiors) NIL INBOX + S: 2 OK LIST completed + C: 3 list "" Inbox/* + S: * LIST (\NoSelect) "/" Inbox/ + S: * LIST (\NoInferiors \UnMarked) "/" Inbox/foo + S: 3 OK LIST completed + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095162.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095162.23059.mbox:2,S new file mode 100644 index 00000000..5fe3b7ef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095162.23059.mbox:2,S @@ -0,0 +1,181 @@ +MBOX-Line: From Corby.Wilson at nokia.com Tue Sep 13 06:19:29 2005 +To: imap-protocol@u.washington.edu +From: "Corby.Wilson@nokia.com" +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +Message-ID: + +This is confusing the heck out of me. +There should not be this level of ambiguity anywhere in any RFC. + +The way I interpreted the statements: + +OK - Command Successfully Executed +BAD - Command failed and the state of any part of the server is exactly +the same as it was before the command was submitted (except for maybe +the Z flag). This can be a syntax error, a hardware failure on the +server side, or executing two commands at the same time that collide +with each other (no proper atomicity). +NO - The command was executed but something prevented successful +completion. State may have changed meaning the client should do +appropriate cleanup if necessary. + +As Cyrus pointed out, the AUTHENTICATE command works like this. + +I had assumed this was the case, but now I see that the meaning of these +changes throughout the document and I will need to revisit each command. +In the future I will make sure I'm very clear and explicit on meaning +and that there is no room for interpritation. + +Corby Wilson + + + + +> -----Original Message----- +> From: imap-protocol-bounces@mailman1.u.washington.edu +> [mailto:imap-protocol-bounces@mailman1.u.washington.edu] On +> Behalf Of ext Cyrus Daboo +> Sent: Thursday, September 08, 2005 12:47 PM +> To: Mark Crispin +> Cc: imap-protocol@u.washington.edu +> Subject: Re: [Imap-protocol] SELECT of same mailbox +> +> Hi Mark, +> +> --On September 7, 2005 12:50:36 PM -0700 Mark Crispin +> wrote: +> +> >> a SELECT INBOX foobar +> > +> > That is not a SELECT command, any more than +> > { select } choose your option +> > or +> > to select the best candidate for the job +> > are. +> +> In many Sections in rfc3501: +> +> > BAD - command unknown or arguments invalid +> +> To me this implies a difference between an unknown command +> 'verb' and a +> known command 'verb' but with invalid arguments. Yet you say +> that a command +> with invalid arguments is an unknown command or at least not +> the same as +> the command that uses the 'verb'. +> +> rfc3501, Section 2.2.2: +> +> > BAD (indicating a protocol error such as +> > unrecognized command or command syntax error) +> +> Again a distinction is being made between an unrecognised +> command and a +> command with syntax errors, contrary to your statements. +> +> So, I still believe that: +> +> a SELECT INBOX foobar +> +> is a SELECT command with a syntax error. I wonder how many +> others also see +> it that way? +> +> +> >> I guess all I am asking for is a change to that sentence, +> something like: +> >> Consequently, if a mailbox is selected and an +> attempted SELECT +> >> command fails with a NO response, no mailbox is selected. +> > +> > I think that this is a terrible idea. It implies that +> there are other +> > cases where there is "failure" involving a BAD. Thus, +> every single point +> > where command failure is mentioned would have to add such +> wording, now +> > and forever. +> +> The problem is you are using the work 'failure' to mean a +> 'NO' response is +> returned. My dictionary defines failure as 'lack of success' +> - i.e. any +> response other than 'OK' as far as IMAP is concerned. Form a client +> implementer perspective both 'NO' and 'BAD' represent errors +> (and that to +> me means failure). The term 'failure' is used in 3501 in many several +> different contexts. So lets look at 3501: +> +> Section 2.2.2: +> +> > The server completion result response indicates the success or +> > failure of the operation. +> +> To me that means 'BAD' is considered a 'failure' since its a +> completion +> response and clearly does not indicate 'success'. Later on in +> that same +> paragraph it says 'OK' is 'success', 'NO' is 'failure' and 'BAD' is +> 'error'. So there is a lack of consistency at least there. +> +> Section 7.1.5: +> +> > The difference between a BYE that occurs as part of a normal +> > LOGOUT sequence (the first case) and a BYE that +> occurs because of +> > a failure (the other three cases) is that the +> connection closes +> > immediately in the failure case. +> +> This is clearly talking about a 'generic' failure as opposed +> to a 'NO' +> failure. +> +> Section 6: +> +> > The state of a connection is only changed by successful commands +> > which are documented as changing state. A rejected command (BAD +> > response) never changes the state of the connection or of the +> > selected mailbox. A failed command (NO response) +> generally does not +> > change the state of the connection or of the selected +> mailbox; the +> > exception being the SELECT and EXAMINE commands. +> +> This is a very clear statement of the SELECT problem, but in +> terms of a +> 'generic' state change. +> +> Section 6.2.2: +> +> > If an AUTHENTICATE command fails with a NO response, +> the client +> > MAY try another authentication mechanism by issuing another +> > AUTHENTICATE command. +> +> Here the specific case of 'NO' vs 'BAD' is described to avoid +> confusion. +> That is really all I am asking for for the SELECT issue. Perhaps a +> reference back to that paragraph at the top of Section 6 is +> really all that +> is needed. +> +> Alternatively, if you are going to redefine the terms +> 'failure' and 'fails' +> to mean a 'NO' response (as opposed to their usual dictionary +> meaning) then +> they should be explicitly described in the 'Conventions' section and +> perhaps even be quoted whenever that explicit meaning is used +> as opposed to +> the regular dictionary meaning. +> +> -- +> Cyrus Daboo +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095163.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095163.22807.mbox:2,S new file mode 100644 index 00000000..d69ae9d5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095163.22807.mbox:2,S @@ -0,0 +1,71 @@ +MBOX-Line: From dwhite at olp.net Mon Jun 14 12:27:55 2010 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <201006141248.11054.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006120124.53714.witold.krecicki@firma.o2.pl> + <29965.1276510437.099598@puncture> + <201006141248.11054.witold.krecicki@firma.o2.pl> +Message-ID: <20100614192755.GC4182@dan.olp.net> + +On Mon, 14 Jun 2010 12:22:36 +0200 Witold Kr?cicki wrote: +>On Monday 14 of June 2010 12:13:57 Dave Cridland wrote: +>> 1) I am not advocating that "people should just delete their mails". +>> IMAP has a two phase delete, so I *am* advocating that clients - not +>> people - should just mark emails as deleted. +> +> Yet they don't. + +I prefer not to make use of a Trash model. I have in the past, with +different clients, but I don't find it particularly useful for me. I don't +fault those who do use a Trash folder, since its may offer a level of +safety they're comfortable with. + +In an ISP setting, I generally recommend to our users that they do not use +a Trash folder, since they tend to forget to clean it and then often open +trouble tickets when they're over quota and can't figure out why. But we +still give them the option of using it if they choose to. + +We have a mix of POP3 and IMAP in our environment, but I'd guess that +there's probably a majority of our IMAP users who do not make use of the +Trash model (we decided to disable the use of Trash in our webmail client +by default). + +>> 2) I concur that people like the trash can metaphor, and would encourage +>> client authors to *use* IMAP's facilities to model same. +> +> But they don't. + +My client can probably do either, depending on how I configure it. +Thunderbird can do either depending on configuration +(mail.server.default.delete_model). The Trash can is popular in many +scenarios, but it's not universal either. + +On Mon, 14 Jun 2010 12:48:11 +0200 Witold Kr?cicki wrote: +>On Monday 14 of June 2010 12:13:57 Dave Cridland wrote: +>> This is amusing. Your argument appears to be that a sensible, common, +>> implementation of a mandatory protocol feature is, somehow, undesirable. +>> +>> Your overall argument also appears to be that: +>> +>> a) MOVE is simpler for client authors. However, client authors would +>> still have to move messages without this extension, hence have to +>> provide multiple codepaths to achieve the same - really quite simple - +>> facility. +> +> That's their choice, it's an EXTENSION hence they don't HAVE to use MOVE +> functionality. Yet MOVE enables user to move messages even if they're at +> their quota limits, which is currently impossible with enforced quota +> limits. + +As someone previously pointed out in this thread, setting a different quota +root on a user's Trash folder would make that possible. Even without that +work around, a more typical scenario involves the user making a decision +about which emails they can live without and having them delete those +emails. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095163.22914.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095163.22914.mbox:2,S new file mode 100644 index 00000000..7be68f33 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095163.22914.mbox:2,S @@ -0,0 +1,61 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Thu May 31 13:45:42 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] Subscriptions in IMAP +In-Reply-To: <8046.1180599490.471444@peirce.dave.cridland.net> +References: + <20070530113546.Q27473@orthanc.ca> + + + <1180563766.32181.2028.camel@hurina> + + <8046.1180599490.471444@peirce.dave.cridland.net> +Message-ID: + +On Thu, 31 May 2007, Dave Cridland wrote: +> I'm not blaming Mark, or the others involved in RFC3501 here - it's +> understandable that the semantics of a subscribed mailbox weren't fully +> described in the original design, because the intent was obvious - +> unfortunately, as time has moved on, it's less obvious, and requires a +> certain degree of archeology to detirmine what the intent was, and besides, +> we have multiple clients gradually pulling the intent in different and +> contradictory directions. + +There is a deeper problem. The idea of having a generic mechanism to +support a common concept fails, more often than it succeeds, whenever it +depends upon a cooperative use of that mechanism. All it needs is one bad +actor to render the mechanism useless, and to cause all the other actors +to flee back into a protected space that it controls. + +The bad actor problem afflicts many areas. Consider what happens when you +install a media player to play a specific file. It doesn't just install +that program. It also sets that program as the default media player for +all your other media files; puts an extra icon on the desktop, the start +menu, the quick launch taskbar; and adds a launcher to the notification +area. + +There's a general tendency of software being designed to seize all of a +shared resource for itself, in the assumption that only that software will +ever be used for that resource. Those of us who design shared resources +can fight against this all we want, but the eventual lesson is that it's a +losing battle. + +This, in my mind, is what doomed ACAP. It's easy to blame ACAP's +overengineering (and it did have that!), but the more fundamental flaw was +the notion that applications could share configuration without abusing it. + +> I *think* that a subscribed mailbox is one that the user has declared an +> interest in monitoring, specifically for new messages. Equally, I *think* +> that, like a browser bookmark, one might present a shortcut menu directly to +> them. And I *think* that that menu might be the default navigation tree for +> some clients quite sensibly - for instance mobile devices. + +I share most of these thoughts. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095163.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095163.22920.mbox:2,S new file mode 100644 index 00000000..97609bb3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095163.22920.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From tss at iki.fi Mon Mar 12 17:54:48 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <07Mar12.161606pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> + <07Mar12.161606pst."57996"@synergy1.parc.xerox.com> +Message-ID: <1173747288.9167.110.camel@hurina> + +On Mon, 2007-03-12 at 17:16 -0700, Bill Janssen wrote: +> +> +> Yep, that's what I was thinking. I think I'd keep one message in it +> -- not sure how empty folders are regarded by clients. + +I don't think there are any problems with empty mailboxes. + +> Is there an out-of-band way of announcing a new mailbox? + +Sending an untagged * LIST reply (and LSUB maybe). I doubt there are +many (any?) clients that pick it up though. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095163.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095163.23014.mbox:2,S new file mode 100644 index 00000000..655f37c3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095163.23014.mbox:2,S @@ -0,0 +1,94 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Apr 11 18:37:39 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + + +Message-ID: + +On Tue, 11 Apr 2006, Vladimir A. Butenko wrote: +> It would be beneficial if a client can learn AT LEAST if the server namespace +> is case-sensitive or not. Because any client does have to switch its internal +> routines to the case-[in]sensitive mode. + +Well, the attitude of the past was that the client shouldn't do any such +thing; that is, that it could not (and should not) make any assumptions +about how the server works. + +I wouldn't be opposed to an extension of this nature, but it may be +difficult to implement. A UNIX based server could not assume that it is +case-sensitive; it would have to determine this on a filesystem basis and +it may not have a good way of knowing (other than empirical testing) if a +remote filesystem is case-sensitive or not. + +> But, as usual, the Pandora box is happy to be opened again: + +You may be interested to know that your Cyrillic example actually +displayed correctly in my Japanese environment! :-) + +> The underlying OS file system may handle this +> case properly - Windows does, I'm sure MacOSX does so too. But it won't help - +> as an IMAP server cannot use that OS feature, because it cannot deal directly +> with non-Latin names: UTF-7 comes in and destroyes everything ;-( + +For what it's worth, I just implemented support for Unicode +case-insensitivity in the development sources of UW imapd. Actually, I +cheated and canonicalized everything to titlecase. + +Decomposition is next. + +> Decoding UTF-7 back into UTF-8 and using it internally is ugly, as you can +> get a completely different name in LIST results. + +Don't the rules for modified UTF-7 define a completely reversible +transform? + +> That's why "strict case-sensitivity" is a GOOD thing from the protocol point +> of view, and all IMAP servers MUST be case-sensitive to avoid confusion in +> clients (but not in users). Unfortunately, many IMAP servers do map mailbox +> names into OS file names, and we have all these "semi-case-insensitivity" +> problems today. + +I don't follow you as to why all IMAP server "MUST be case-sensitive", +since clearly there are examples of servers which are case-insensitive, +and I don't see why a server could not decide to map Unicode case for +M-UTF7 names. + +> The solution would be to get rid of UTF-7 and switch to the plain UNENCODED +> UTF-8 for mailbox names. + +I agree. The whole point of modified UTF-7 in 1996 was to put a halt to +the (then-common) practice of "just send 8-bits" for mailbox names in +local character sets. + +The people who did (do?) so have had 9 1/2 years warning. That should be +enough. We should progress to UTF-8 mailbox names. + +>> Science does not emerge from voting, party politics, or public debate. +> Political Science does :-). There is a lot one can learn by watching primates +> voting. Or debating. Especially publicly :-) + +As I say on my web page, any field of study which has "science" in its +name is not a science... ;-) + +>> Si vis pacem, para bellum. +> and when you wish for war, prepare for a long boring peace? :-) + +I don't know, as only fascists wish for war; and (as the world learned 60+ +years ago) the only thing that you can do with fascists is defeat them. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095163.23051.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095163.23051.mbox:2,S new file mode 100644 index 00000000..ff583bb9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095163.23051.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From esh at lucent.com Wed Nov 30 13:08:39 2005 +To: imap-protocol@u.washington.edu +From: "Esh, Thomas D" +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] IMAP4 Protocol Parser +Message-ID: <0C6AA2145B810F499C69B0947DC5078107F98ED2@oh0012exch001p.cb.lucent.com> + + + +Hi, + +I am looking for a good IMAP4 Protocol parser that will read the IMAP4 protocol from +a buffer/socket/stream and parse the IMAP4 commands and responses into structures. + +I know the c-client library does this, but it does more than I want. I just want the protocol +parsed into structures without any caching, etc. + +Any help would be appreciated. + +Thanks +Tom + + + +Thomas D. Esh Email: esh@lucent.com +Lucent Technologies Work: 614-367-4390 +Room 4O05-1L Mobile: 740-334-2319 +6100 East Broad Street Home: 740-321-1245 +Columbus, OH 43213 MMS: 7403342319@vzwpix.com + +Our lives begin to end the day we become silent about +things that matter. -- Martin Luther King, Jr. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095163.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095163.23059.mbox:2,S new file mode 100644 index 00000000..8ed14f88 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095163.23059.mbox:2,S @@ -0,0 +1,63 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Sep 13 08:01:07 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] SELECT of same mailbox +In-Reply-To: +References: +Message-ID: + +On Tue, 13 Sep 2005, Corby.Wilson@nokia.com wrote: +> This is confusing the heck out of me. +> There should not be this level of ambiguity anywhere in any RFC. + +I don't think that there is any ambiguity. + +Cyrus expanded the meaning of the word "failed" to incorporate the BAD +response, and arrived at an absurd conclusion. + +The entire point of the BAD response is to have a third state other than +success and failure. BAD means, in effect, "huh?". + +> The way I interpreted the statements: +> +> OK - Command Successfully Executed +> BAD - Command failed and the state of any part of the server is exactly +> the same as it was before the command was submitted (except for maybe +> the Z flag). This can be a syntax error, a hardware failure on the +> server side, or executing two commands at the same time that collide +> with each other (no proper atomicity). +> NO - The command was executed but something prevented successful +> completion. State may have changed meaning the client should do +> appropriate cleanup if necessary. + +This is basically the correct interpretation, with one exception. + +You say: + the Z flag). This can be a syntax error, a hardware failure on the + server side, or executing two commands at the same time that collide + with each other (no proper atomicity). + +What is "the Z flag"? + +Why would a hardware failure on the server side cause a BAD? Are you +thinking about untagged BAD? + +It's a stretch to say that "executing two commands at the same time that +collide with each other (no proper atomicity)" causes a BAD. It could, on +the grounds that the command is not recognized in the state machine, but +that assumes an FSM parser. Many IMAP FSM parsers just recognize the +states outlined in the specification (Not Authenticated, Authenticated, +Selected), and do not try to have states to prevent command collisions. + +> I had assumed this was the case, but now I see that the meaning of these +> changes throughout the document and I will need to revisit each command. + +Why do you say that? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095164.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095164.22807.mbox:2,S new file mode 100644 index 00000000..26b3e43a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095164.22807.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 12:35:58 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <20100614192755.GC4182@dan.olp.net> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006141248.11054.witold.krecicki@firma.o2.pl> + <20100614192755.GC4182@dan.olp.net> +Message-ID: <201006142135.58808.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 21:27:55 Dan White wrote: +> On Mon, 14 Jun 2010 12:22:36 +0200 Witold Kr?cicki wrote: +> >On Monday 14 of June 2010 12:13:57 Dave Cridland wrote: +> >> 1) I am not advocating that "people should just delete their mails". +> >> IMAP has a two phase delete, so I *am* advocating that clients - not +> >> people - should just mark emails as deleted. +> > +> > Yet they don't. +> +> I prefer not to make use of a Trash model. I have in the past, with +> different clients, but I don't find it particularly useful for me. I don't +> fault those who do use a Trash folder, since its may offer a level of +> safety they're comfortable with. +> +> In an ISP setting, I generally recommend to our users that they do not use +> a Trash folder, since they tend to forget to clean it and then often open +> trouble tickets when they're over quota and can't figure out why. But we +> still give them the option of using it if they choose to. +> +> We have a mix of POP3 and IMAP in our environment, but I'd guess that +> there's probably a majority of our IMAP users who do not make use of the +> Trash model (we decided to disable the use of Trash in our webmail client +> by default). +A model in which messages are deleted from trash after several days is a +solution to that problem. + +> >> 2) I concur that people like the trash can metaphor, and would encourage +> >> client authors to *use* IMAP's facilities to model same. +> > +> > But they don't. +> +> My client can probably do either, depending on how I configure it. +> Thunderbird can do either depending on configuration +> (mail.server.default.delete_model). The Trash can is popular in many +> scenarios, but it's not universal either. +But it is popular. + +> >> a) MOVE is simpler for client authors. However, client authors would +> >> still have to move messages without this extension, hence have to +> >> provide multiple codepaths to achieve the same - really quite simple - +> >> facility. +> > +> > That's their choice, it's an EXTENSION hence they don't HAVE to use MOVE +> > functionality. Yet MOVE enables user to move messages even if they're at +> > their quota limits, which is currently impossible with enforced quota +> > limits. +> +> As someone previously pointed out in this thread, setting a different quota +> root on a user's Trash folder would make that possible. Even without that +> work around, a more typical scenario involves the user making a decision +> about which emails they can live without and having them delete those +> emails. +You're thinking about power users. 'Regular Joe' wants trash folder. And he +doesn't understand why a simple 'move to trash' or 'move to another folder' +(which should be 'move') causes his quota to be exceeded. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095164.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095164.22920.mbox:2,S new file mode 100644 index 00000000..95395d7c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095164.22920.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 12 17:53:42 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +In-Reply-To: <1173746936.9167.104.camel@hurina> +References: <"07Mar11. 134508pst. 57996"@synergy1.parc.xerox.com> + <5aK4EfZGxwhHX3617xc/FQ.md5@libertango.oryx.com> + + <1173746936.9167.104.camel@hurina> +Message-ID: + +On Tue, 13 Mar 2007, Timo Sirainen wrote: +> 3. Verify that the server doesn't do anything invalid when stress +> testing with randomly (but correctly) behaving clients. + +4. Do "fuzzing" with the server. Send it arbitrary bogus stuff, and see +if you can make it crash. What happens if a tag is 10Kchars? etc. etc. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095164.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095164.23014.mbox:2,S new file mode 100644 index 00000000..e05e95cc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095164.23014.mbox:2,S @@ -0,0 +1,226 @@ +MBOX-Line: From vladimir_butenko at stalker.com Tue Apr 11 21:58:09 2006 +To: imap-protocol@u.washington.edu +From: "Vladimir A. Butenko" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + + + +Message-ID: + +On Tue, 11 Apr 2006 18:37:39 -0700 (Pacific Daylight Time) + Mark Crispin wrote: +> On Tue, 11 Apr 2006, Vladimir A. Butenko wrote: +>> It would be beneficial if a client can learn AT LEAST if the server +>>namespace +>> is case-sensitive or not. Because any client does have to switch its +>>internal +>> routines to the case-[in]sensitive mode. +> +> Well, the attitude of the past was that the client shouldn't do any such +>thing; that is, that it could not (and should not) make any assumptions +>about how the server works. + +A user asked the client to show all mailboxes with names starting with +"Mark" and all those ending with "CRISPIN": + +There is a mailbox called "Mark Crispin". The system is case-insensitive. + +Now (removing all unrelated parts of the protocol): + +a LIST "Mark%" +* LIST "Mark Crispin" +a OK +b LIST "" "%CRISPIN" +* LIST "MARK CRISPIN" + +The later is a questionable practice, but it definitely has more merits than +returning unmodified "Mark Crispin" as our server (and, I guess, yours) is +doing now. The "Mark Crispin" string would confuse a client that does not +expect that string to match the "%CRISPIN" pattern. + +If there is no "fixed" name for INBOX, it's just a "case-insensitive" name, +why would "Mark Crispin" be a "real" name for that mailbox of a +case-insensitive system? So, if the server is free to return "Inbox" on LIST +"Inbox", it's free to return "MARK CRISPIN" on "%CRISPIN". + +And then the client will, obviously, display these mailboxes as different +ones, and all the troubles will trouble us there.. + +> I wouldn't be opposed to an extension of this nature, but it may be +>difficult to implement. A UNIX based server could not assume that it is +>case-sensitive; it would have to determine this on a filesystem basis and +>it may not have a good way of knowing (other than empirical testing) if a +>remote filesystem is case-sensitive or not. + +Delete the .mark file, create a .Mark file, try to read ".mark" - if you do +that once, during start-up of your server, that would be enough. It's more +difficult when you have to serve several millions of users, where the +storage can be distributed to many NFS and CFS file systems - but believe me +- I have never seen any real-life installation that is at least 100,000 +users strong (leave alone 5,000,000 users strong) that used different file +systems for different users. + +>> But, as usual, the Pandora box is happy to be opened again: +> +> You may be interested to know that your Cyrillic example actually +>displayed correctly in my Japanese environment! :-) + +All Cyrillic characters are included into the ISO-2022-JP charset. +I'm pretty sure this is a preparation for occupation (uups, liberation), but +I'm not that sure about the expected direction of that occupation... :-) + +But - there is no low-case/upper-case problem with the Japanese charsets, so +you may want to play with mailboxes in Roman, but non-Latin alphabets, - +French, Spanish, German etc. Umlauts are tough boys to fight with in the +upper-lowercase battles... + +>> with non-Latin names: UTF-7 comes in and destroyes everything ;-( +> +>For what it's worth, I just implemented support for Unicode +>case-insensitivity in the development sources of UW imapd. Actually, I +>cheated and canonicalized everything to titlecase. +> +> Decomposition is next. +> +>> Decoding UTF-7 back into UTF-8 and using it internally is ugly, as you can +>> get a completely different name in LIST results. +> +> Don't the rules for modified UTF-7 define a completely reversible +>transform? + +I'm afraid there is a misunderstanding here. How should I specify the ??%? +pattern in the LIST command? "&hjhj-%&jkjk-" where "&hjhj-" is "??", and +"&jk-" is "?"? +I should, because - "&hjhj%jkjk-" would be illegal, right? + +But I have no mailboxes with names starting with "&hjhj-", all of them start +with "&hjhjkkk". So, the server already need to be "smart" and not use UTF-7 +in patterns, but convert the pattern to the UTF-8/Unicode form and to +compare it not with mailbox names, but with mailbox names converted from +UTF-7 into Unicode. + +And this will result in LIST responses that have almost NOTHING in common +with the supplied pattern, if both are treated as ASCII strings. + +So, it's the same question as above: should the client expect that if it +wants "Inbo%", it will get "Inbogus town", but not INBOX? Or should the +client NOT assume anything and treat ANY response from the server as +correctly matching the pattern the client has provided - matching according +to the rules known to the server only, not the client? + +If someone suggests to use the later answer, then it's a call for trouble: + +then if a client makes a call +A LIST % +and gets +* LIST ZZZ + +and then it makes a call +A LIST ZZZ/% +(as many clients do to deal with mailbox hierarchies) +then the client HAS ABSOLUTELY NO RIGHT to expect that all returned names +will start with "ZZZ/", and thus - can be displayed as "ZZZ" "subtree". + +Sounds strange, right? But we are saying that when a client sends +"&hj-%&HJ-" in the LIST command, it should not expect to see any name that +ends on "HJ-", right? + +So, we conclude that Client "sometimes" can assume that the LIST results +will be matching the LIST pattern when both strings are interpreted as ASCII +strings, and sometimes the client cannot assume that? That's a mess, isn't +it? + +>> That's why "strict case-sensitivity" is a GOOD thing from the protocol +>>point +>> of view, and all IMAP servers MUST be case-sensitive to avoid confusion in +>> clients (but not in users). Unfortunately, many IMAP servers do map +>>mailbox +>> names into OS file names, and we have all these "semi-case-insensitivity" +>> problems today. +> +> I don't follow you as to why all IMAP server "MUST be case-sensitive", +>since clearly there are examples of servers which are case-insensitive, + +Because case-insensitive servers create a mess. The protocol becomes +ill-defined (read: broken, incomplete, unusable - select your own favourite, +the most offending word :-). + +If the servers would impose strict case-sensitivity (including that for +INBOX), the IMAP protocol (at least within its mailbox-name related part) +becomes a well-defined, "real", "professional" (select the most pleasing +word here) protocol. But it would be harder to implement on the systems with +case-insensitive file systems (OS/2 and OS/3 aka Windows, MacOSX, VMS) - if +the server chooses to implement mailboxes as file system objects. + +> and +>I don't see why a server could not decide to map Unicode case for M-UTF7 +>names. + + +Because then a client may assume virtually nothing about the server +responses return for its wild-carded requests. And without being able to +assume these things, the client cannot do anything with mailboxes other than +showing them as a linear list. + +>> The solution would be to get rid of UTF-7 and switch to the plain +>>UNENCODED +>> UTF-8 for mailbox names. +> +> I agree. The whole point of modified UTF-7 in 1996 was to put a halt to +>the (then-common) practice of "just send 8-bits" for mailbox names in local +>character sets. +> +> The people who did (do?) so have had 9 1/2 years warning. That should be +>enough. We should progress to UTF-8 mailbox names. + +But before you do, please investigate all these case-sensitivity problems +with non-LATIN (and non-Japanese ;-) alphabets. And, while doing this, +please remember that the number of people who were shocked to learn than +they could not create a folder named "12/12/2005" is much higher than the +number of people knowing what a "hierarchy separator" is. But that number is +still smaller than the number of people who did succeed to create such a +mailbox and then asked their ISP/IT support about "that funny mailbox '12' +and some strange symbols around it". I.e. escape symbols would be good, or, +of you choose to use UTF-8/Unicode, you may want to use some "unprintable" +character as the path separator. + +>>> Science does not emerge from voting, party politics, or public debate. +>> Political Science does :-). There is a lot one can learn by watching +>>primates +>> voting. Or debating. Especially publicly :-) +> +> As I say on my web page, any field of study which has "science" in its +>name is not a science... ;-) + +Sure. I totally agree, and that's why I was hated by all Computer Science +departments :-) Their only competitors where teachers of the Scientific +Communism - but they were weaker, as they did not believe in their books +themselves. CS departments were tougher... :-) + +>>> Si vis pacem, para bellum. +>> and when you wish for war, prepare for a long boring peace? :-) +> +> I don't know, as only fascists wish for war; + +Mark, I just wanted to make a quite innocent joke. Looks like I've failed, +and let's not turn it into a Political Science exercise. Let's continue to +play within the Computer Science barrack :-) + +> -- Mark -- +> +> http://staff.washington.edu/mrc +> Science does not emerge from voting, party politics, or public debate. +> Si vis pacem, para bellum. + +Sincerely, +Vladimir + diff --git a/demo/ermis-f/imap-protocol/cur/1600095164.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095164.23059.mbox:2,S new file mode 100644 index 00000000..b08bef8a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095164.23059.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From ams at oryx.com Sun Sep 25 02:23:33 2005 +To: imap-protocol@u.washington.edu +From: Abhijit Menon-Sen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: SELECT of same mailbox +In-Reply-To: +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + + + <14D6F6402750309B537A989C@ninevah.local> + +Message-ID: <20050925092333.GC24120@penne.toroid.org> + +At 2005-09-08 11:56:38 -0700, mrc@CAC.Washington.EDU wrote: +> +> Put another way; IMAP does not have a protocol element of "a SELECT +> command with invalid arguments." Nor is there any syntax that could +> be used to define such a protocol element. + +Then surely BAD shouldn't be listed as a specific result of SELECT (or +any other command) in RFC 3501? + + 6.3.1. SELECT Command + + Arguments: mailbox name + + Responses: REQUIRED untagged responses: FLAGS, EXISTS, RECENT + REQUIRED OK untagged responses: UNSEEN, PERMANENTFLAGS, + UIDNEXT, UIDVALIDITY + + Result: OK - select completed, now in selected state + NO - select failure, now in authenticated state: no + such mailbox, can't access mailbox + BAD - command unknown or arguments invalid + +-- ams + diff --git a/demo/ermis-f/imap-protocol/cur/1600095165.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095165.22807.mbox:2,S new file mode 100644 index 00000000..792773ce --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095165.22807.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From dwhite at olp.net Mon Jun 14 12:46:00 2010 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <201006142135.58808.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006141248.11054.witold.krecicki@firma.o2.pl> + <20100614192755.GC4182@dan.olp.net> + <201006142135.58808.witold.krecicki@firma.o2.pl> +Message-ID: <20100614194600.GD4182@dan.olp.net> + +On 14/06/10?21:35?+0200, Witold Kr?cicki wrote: +>On Monday 14 of June 2010 21:27:55 Dan White wrote: +>> On Mon, 14 Jun 2010 12:22:36 +0200 Witold Kr?cicki wrote: +>> +>> In an ISP setting, I generally recommend to our users that they do not use +>> a Trash folder, since they tend to forget to clean it and then often open +>> trouble tickets when they're over quota and can't figure out why. But we +>> still give them the option of using it if they choose to. +>> +>> We have a mix of POP3 and IMAP in our environment, but I'd guess that +>> there's probably a majority of our IMAP users who do not make use of the +>> Trash model (we decided to disable the use of Trash in our webmail client +>> by default). +> +> A model in which messages are deleted from trash after several days is a +> solution to that problem. + +No argument with that. We actually do that on a voicemail server, but +choose not to (yet) on our ISP server. However, my point is that customers +rarely miss it. We get far fewer complaints from customers who have no +Trash folder, compared to those that do. + +>> >> 2) I concur that people like the trash can metaphor, and would encourage +>> >> client authors to *use* IMAP's facilities to model same. +>> > +>> > But they don't. +>> +>> My client can probably do either, depending on how I configure it. +>> Thunderbird can do either depending on configuration +>> (mail.server.default.delete_model). The Trash can is popular in many +>> scenarios, but it's not universal either. +> +> But it is popular. + +Again, no argument here. + +>> >> a) MOVE is simpler for client authors. However, client authors would +>> >> still have to move messages without this extension, hence have to +>> >> provide multiple codepaths to achieve the same - really quite simple - +>> >> facility. +>> > +>> > That's their choice, it's an EXTENSION hence they don't HAVE to use MOVE +>> > functionality. Yet MOVE enables user to move messages even if they're at +>> > their quota limits, which is currently impossible with enforced quota +>> > limits. +>> +>> As someone previously pointed out in this thread, setting a different quota +>> root on a user's Trash folder would make that possible. Even without that +>> work around, a more typical scenario involves the user making a decision +>> about which emails they can live without and having them delete those +>> emails. +> +> You're thinking about power users. 'Regular Joe' wants trash folder. And he +> doesn't understand why a simple 'move to trash' or 'move to another folder' +> (which should be 'move') causes his quota to be exceeded. + +Regular Joe may have never used a Trash folder, or care why it's there. +Power users *will* know if it's there. + +"Move to " is a common function of our webmail +client and of many email clients. None of them (that I have used) depend on +an IMAP move command. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095165.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095165.22920.mbox:2,S new file mode 100644 index 00000000..eeaf191b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095165.22920.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From tss at iki.fi Mon Mar 12 17:58:32 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] QA / regression testing / stress testing IMAP + pseudo-clients? +In-Reply-To: +References: <"07Mar11. 134508pst. 57996"@synergy1.parc.xerox.com> + <5aK4EfZGxwhHX3617xc/FQ.md5@libertango.oryx.com> + + <1173746936.9167.104.camel@hurina> + +Message-ID: <1173747512.9167.112.camel@hurina> + +On Mon, 2007-03-12 at 17:53 -0700, Mark Crispin wrote: +> +> > 3. Verify that the server doesn't do anything invalid when stress +> > testing with randomly (but correctly) behaving clients. +> +> 4. Do "fuzzing" with the server. Send it arbitrary bogus stuff, and +> see +> if you can make it crash. What happens if a tag is 10Kchars? etc. +> etc. + +Well, yes, but that doesn't anymore tell anything about the server's +IMAP protocol correctness. :) + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095165.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095165.23014.mbox:2,S new file mode 100644 index 00000000..541c1ef2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095165.23014.mbox:2,S @@ -0,0 +1,194 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Apr 11 22:56:33 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + + + + +Message-ID: + +On Tue, 11 Apr 2006, Vladimir A. Butenko wrote: +> There is a mailbox called "Mark Crispin". The system is case-insensitive. +> a LIST "Mark%" +> * LIST "Mark Crispin" +> a OK +> b LIST "" "%CRISPIN" +> * LIST "MARK CRISPIN" +> The later is a questionable practice, but it definitely has more merits than +> returning unmodified "Mark Crispin" as our server (and, I guess, yours) is +> doing now. The "Mark Crispin" string would confuse a client that does not +> expect that string to match the "%CRISPIN" pattern. + +Actually, I believe that a case-independent server should have a canonical +case form -- all-upper, all-lower, as-created, or whatever -- and that +form should always be returned by LIST regardless of the pattern. + +> If there is no "fixed" name for INBOX, it's just a "case-insensitive" name, +> why would "Mark Crispin" be a "real" name for that mailbox of a +> case-insensitive system? So, if the server is free to return "Inbox" on LIST +> "Inbox", it's free to return "MARK CRISPIN" on "%CRISPIN". + +I agree that the canonical case form of INBOX is "INBOX". That was always +the intention from Day 1. + +> Delete the .mark file, create a .Mark file, try to read ".mark" - if you do +> that once, during start-up of your server, that would be enough. + +Yes, but that's only if there is a single filesystem on the server. + +> It's more +> difficult when you have to serve several millions of users, where the storage +> can be distributed to many NFS and CFS file systems - but believe me - I have +> never seen any real-life installation that is at least 100,000 users strong +> (leave alone 5,000,000 users strong) that used different file systems for +> different users. + +I don't know if that's safe any more. We can assume that UNIX based IMAP +servers are probably not going to export Windows filesystems. However, +Mac OS X has really muddied the waters. My own Mac has a case-sensitive +and a case-insensitive filesystem. + +I'm also not confortable about assuming that what is commonplace and good +practice today would remain the same 5-10 years from now. I've had too +many painful lessons... + +> But - there is no low-case/upper-case problem with the Japanese charsets, so +> you may want to play with mailboxes in Roman, but non-Latin alphabets, - +> French, Spanish, German etc. Umlauts are tough boys to fight with in the +> upper-lowercase battles... + +We can use Unicode titlecase. I think that an update to RFC 3501 should +probably specify that case-insensitivity in searching means "same +titlecase" as opposed to "same uppercase" or "same lowercase". + +> I'm afraid there is a misunderstanding here. How should I specify the $B'A'k(B%$B'\(B +> pattern in the LIST command? "&hjhj-%&jkjk-" where "&hjhj-" is "$B'A'k(B", and +> "&jk-" is "$B'\(B"? + +Ah, good point. The only wildcards that work well with M-UTF7 names are +within the ASCII part of the name. + +Fortunately, most clients only use wildcards for an entire hierarchy +level. But this is a good argument to move to UTF-8 names. + +> Or should the +> client NOT assume anything and treat ANY response from the server as +> correctly matching the pattern the client has provided - matching according +> to the rules known to the server only, not the client? + +This is effectively what IMAP says. + +> If someone suggests to use the later answer, then it's a call for trouble: +> +> then if a client makes a call +> A LIST % +> and gets +> * LIST ZZZ +> +> and then it makes a call +> A LIST ZZZ/% +> (as many clients do to deal with mailbox hierarchies) +> then the client HAS ABSOLUTELY NO RIGHT to expect that all returned names +> will start with "ZZZ/", and thus - can be displayed as "ZZZ" "subtree". + +I don't understand why. There's no M-UTF7 here. The only thing that may +different is that with a case-insensitive server that it may return names +that start with zzz/ or Zzz/ etc. + +> Sounds strange, right? But we are saying that when a client sends "&hj-%&HJ-" +> in the LIST command, it should not expect to see any name that ends on "HJ-", +> right? + +I agree that M-UTF7 patterns with embedded wildcards don't work. + +>> I don't follow you as to why all IMAP server "MUST be case-sensitive", +>> since clearly there are examples of servers which are case-insensitive, +> Because case-insensitive servers create a mess. The protocol becomes +> ill-defined (read: broken, incomplete, unusable - select your own favourite, +> the most offending word :-). + +That's only if the client expects to know what the server will do for any +particular LIST command if it has earlier done a LIST of *. + +IMAP makes no such promises. It's implementation dependent, as are the +semantics of the naming hierarchy. + +This was a mistake. We all acknowledge it to have been a mistake. +However, the discussion about naming that took place in the early 1990s +wasted at least 18 months of everybody's time (and probably reduced all of +our lifespans by a few years due to high blood pressure). What came up +was a wretched compromise, but at least it let us do our work. + +I disagree that case-insensitive servers are ill-defined; any +case-insensitive server is very well defined. The problem is that there +are multiple definitions, and no authority to declare one definition to be +correct. + +> If the servers would impose strict case-sensitivity (including that for +> INBOX), the IMAP protocol (at least within its mailbox-name related part) +> becomes a well-defined, "real", "professional" (select the most pleasing word +> here) protocol. + +Uhh...I don't know about that. Consider all the repetitions of the Latin +alphabet in Unicode. + +You'd have a better case if you said "if all mailbox names were solely a +sequence of unique binary octets, with no human interpretation, then the +IMAP protocol become..." ;-) + +>> We should progress to UTF-8 mailbox names. +> But before you do, please investigate all these case-sensitivity problems +> with non-LATIN (and non-Japanese ;-) alphabets. + +Unicode titlecase. It's not always right for all languages, but at least +it is something that is well-defined. + +> And, while doing this, please +> remember that the number of people who were shocked to learn than they could +> not create a folder named "12/12/2005" is much higher than the number of +> people knowing what a "hierarchy separator" is. But that number is still +> smaller than the number of people who did succeed to create such a mailbox +> and then asked their ISP/IT support about "that funny mailbox '12' and some +> strange symbols around it". I.e. escape symbols would be good, or, of you +> choose to use UTF-8/Unicode, you may want to use some "unprintable" character +> as the path separator. + +Had URLs existed at the time, that is what IMAP should have used. That at +least is a hierarchy that people understand. + +>> As I say on my web page, any field of study which has "science" in its name +>> is not a science... ;-) +> Sure. I totally agree, and that's why I was hated by all Computer Science +> departments :-) Their only competitors where teachers of the Scientific +> Communism - but they were weaker, as they did not believe in their books +> themselves. CS departments were tougher... :-) + +Indeed. + +>>>> Si vis pacem, para bellum. +>>> and when you wish for war, prepare for a long boring peace? :-) +>> I don't know, as only fascists wish for war; +> Mark, I just wanted to make a quite innocent joke. Looks like I've failed, +> and let's not turn it into a Political Science exercise. Let's continue to +> play within the Computer Science barrack :-) + +Oh, I understood the joke. However, it's worth remembering that 61 years +ago, our parents sacrificed a great deal so that we could grow up to play +with computers... + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095165.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095165.23059.mbox:2,S new file mode 100644 index 00000000..8b51702c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095165.23059.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sun Sep 25 09:21:50 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] Re: SELECT of same mailbox +In-Reply-To: <20050925092333.GC24120@penne.toroid.org> +References: <8613FB1A1827570EC6B5150F@ninevah.cyrusoft.com> + + + + <14D6F6402750309B537A989C@ninevah.local> + + <20050925092333.GC24120@penne.toroid.org> +Message-ID: + +On Sun, 25 Sep 2005, Abhijit Menon-Sen wrote: +> Then surely BAD shouldn't be listed as a specific result of SELECT (or +> any other command) in RFC 3501? + +I agree completely. I was forced to add that broilerplate in the document +to each command over my objections and better judgement. It is redundant +at best, and can be technically inaccurate as we have seen with the idea +of "BAD" being a "result" to any command. Worse is the implication +(helped along by the omission of "NO" in such obvious silly cases as NOOP) +is that this broilerplate is somehow normative to the operation of the +command. + +At the time I attempted, without success, to argue that it was better to +describe the theory of the OK/NO/BAD trichotomy once, rather than document +it for each command with the associated implication that this was somehow +per-command unique behavior. + +Unfortunately, we're stuck with it. It was used as the insertion means +for the blunder of having a NO response to SELECT do an implicit UNSELECT. +Somehow, we have just got to understand that just because "BAD" is listed +as a "Result" doesn't really mean that a command issues a BAD; rather +this is just an (incredibly poor) paraphrase of the OK/NO/BAD theory. + +> 6.3.1. SELECT Command +> +> Arguments: mailbox name +> +> Responses: REQUIRED untagged responses: FLAGS, EXISTS, RECENT +> REQUIRED OK untagged responses: UNSEEN, PERMANENTFLAGS, +> UIDNEXT, UIDVALIDITY +> +> Result: OK - select completed, now in selected state +> NO - select failure, now in authenticated state: no +> such mailbox, can't access mailbox +> BAD - command unknown or arguments invalid + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095166.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095166.22807.mbox:2,S new file mode 100644 index 00000000..4d7ba2f4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095166.22807.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 12:50:01 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <20100614194600.GD4182@dan.olp.net> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142135.58808.witold.krecicki@firma.o2.pl> + <20100614194600.GD4182@dan.olp.net> +Message-ID: <201006142150.01600.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 21:46:00 Dan White wrote: +> On 14/06/10 21:35 +0200, Witold Kr?cicki wrote: +> >On Monday 14 of June 2010 21:27:55 Dan White wrote: +> >> On Mon, 14 Jun 2010 12:22:36 +0200 Witold Kr?cicki wrote: +> >> +> >> In an ISP setting, I generally recommend to our users that they do not +> >> use a Trash folder, since they tend to forget to clean it and then +> >> often open trouble tickets when they're over quota and can't figure out +> >> why. But we still give them the option of using it if they choose to. +> >> +> >> We have a mix of POP3 and IMAP in our environment, but I'd guess that +> >> there's probably a majority of our IMAP users who do not make use of the +> >> Trash model (we decided to disable the use of Trash in our webmail +> >> client by default). +> > +> > A model in which messages are deleted from trash after several days is a +> > solution to that problem. +> +> No argument with that. We actually do that on a voicemail server, but +> choose not to (yet) on our ISP server. However, my point is that customers +> rarely miss it. We get far fewer complaints from customers who have no +> Trash folder, compared to those that do. +> +> >> >> 2) I concur that people like the trash can metaphor, and would +> >> >> encourage client authors to *use* IMAP's facilities to model same. +> >> > +> >> > But they don't. +> >> +> >> My client can probably do either, depending on how I configure it. +> >> Thunderbird can do either depending on configuration +> >> (mail.server.default.delete_model). The Trash can is popular in many +> >> scenarios, but it's not universal either. +> > +> > But it is popular. +> +> Again, no argument here. +> +> >> >> a) MOVE is simpler for client authors. However, client authors would +> >> >> still have to move messages without this extension, hence have to +> >> >> provide multiple codepaths to achieve the same - really quite simple +> >> >> - facility. +> >> > +> >> > That's their choice, it's an EXTENSION hence they don't HAVE to use +> >> > MOVE functionality. Yet MOVE enables user to move messages even if +> >> > they're at their quota limits, which is currently impossible with +> >> > enforced quota limits. +> >> +> >> As someone previously pointed out in this thread, setting a different +> >> quota root on a user's Trash folder would make that possible. Even +> >> without that work around, a more typical scenario involves the user +> >> making a decision about which emails they can live without and having +> >> them delete those emails. +> > +> > You're thinking about power users. 'Regular Joe' wants trash folder. And +> > he doesn't understand why a simple 'move to trash' or 'move to another +> > folder' (which should be 'move') causes his quota to be exceeded. +> +> Regular Joe may have never used a Trash folder, or care why it's there. +> Power users *will* know if it's there. +The number of users that are crying to our client support that they accidently +deleted some important messages would probably go waay up if we wouldn't use +deleting to trash folder by default + +> "Move to " is a common function of our webmail +> client and of many email clients. None of them (that I have used) depend on +> an IMAP move command. +Maybe because there's no IMAP move command? + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095166.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095166.22920.mbox:2,S new file mode 100644 index 00000000..0cf397ec --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095166.22920.mbox:2,S @@ -0,0 +1,58 @@ +MBOX-Line: From snowjn at aol.com Tue Mar 13 06:11:00 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <1173743673.9167.65.camel@hurina> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> +Message-ID: <45F6A2E4.3060502@aol.com> + +tss@iki.fi wrote: +> On Mon, 2007-03-12 at 16:29 -0700, Bill Janssen wrote: +> +>> I basically want to be able to do searches across my entire mail +>> database, instead of just folder-by-folder, and I'm wondering how to +>> plaster that into the protocol. I suppose one way would be to present +>> all the mail as one tricky folder which normally contains one message, +>> but responds to SEARCH over it by suddenly filling itself with the +>> results of the search, sending an untagged EXISTS, and sending them +>> back to the client. The mailbox would gradually fill up with search +>> results; I'd have to expire them and send EXPUNGES periodically. +>> +> +> That's a pretty nice idea, I think I'll do something similar if/when I +> implement support for searching multiple mailboxes :) The way I'd do it +> is: +> +> - Have one "Search all folders" mailbox +> - It has zero messages initially +> - SEARCH done inside it +> 1) EXPUNGEs all the existing messages if there are any (although +> unless UID SEARCH is done, the EXPUNGEs can't be sent to client yet) +> 2) Adds all the matched messages virtually to the mailbox, and +> returns EXISTS with the new message count (includes the old messages +> with non-UID SEARCH) +> 3) Send SEARCH result after the EXISTS reply with listing all the new +> messages. +> +> Hmm. I guess this could be generalized to be a virtual folder where the +> search rule gets updated by the SEARCH command. +> +> There also exists a draft for searching multiple mailboxes: +> draft-melnikov-imapext-multimailbox-search-01.txt +> + +How about combining the multiple mailbox search with a select command to +create a temporary mailbox view that contains the search result? Since +it doesn't exists as a listable mailbox, then it can't be the +destination for a copy command, avoiding any issue of which underlying +mailbox should be the destination. The untagged exists response +response would show the number of hits to the search query. Also, the +result set could be referenced by sequence number instead of the +individual UIDs as returned by the standard search command. + +snow. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095166.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095166.23014.mbox:2,S new file mode 100644 index 00000000..46d4269c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095166.23014.mbox:2,S @@ -0,0 +1,148 @@ +MBOX-Line: From vladimir_butenko at stalker.com Wed Apr 12 00:16:26 2006 +To: imap-protocol@u.washington.edu +From: "Vladimir A. Butenko" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + + + + + +Message-ID: + +On Tue, 11 Apr 2006 22:56:33 -0700 (PDT) + Mark Crispin wrote: + +>> correctly matching the pattern the client has provided - matching +>>according to the rules known to the server only, not the client? + +[...] +>> then the client HAS ABSOLUTELY NO RIGHT to expect that all returned names +>> will start with "ZZZ/", and thus - can be displayed as "ZZZ" "subtree". +> +> I don't understand why. There's no M-UTF7 here. + +Who cares? You've just said that I (being a client) cannot assume ANYTHING +about your (server's) responses, so I cannot plan my life depending on you. + +Now you are backing up and saying "sorry, I may not be reliable at coming +home at 19:35 every evening, but if you ask me to bring home a steak, I may +actually bring you a fish (you've asked about Inbox, I gave you INBOX), or a +well-baked skunk (INboX, as I like that name better), but no, no, I won't +bring any toilet paper, you can rely on me here!". + +>The only thing that may +>different is that with a case-insensitive server that it may return names +>that start with zzz/ or Zzz/ etc. + +As we saw with non-ASCII names, it's more complex than that, and the number +of variations is endless (though it's a countable set, not a continuum :-). + +There are some freeware IMAP servers using "." as the path separator. At the +same time, "." is part of "Modified-UTF-7 BASE64" encoding. So, some name +can look as &ADB.r985-, because it was "$B8@8l(B" (it's just an example, not a +real encoding of this japanese word). So, what would + + LIST "%.%" command return? + +I'd say that the client really cannot know here, and the hierarchy it will +present to the user would be quite different from what some users expect. + +>> in the LIST command, it should not expect to see any name that ends on +>>"HJ-", +>> right? +> +> I agree that M-UTF7 patterns with embedded wildcards don't work. + +The problem is that it means they do not work at all :-(. I.e. a client may +expect SOMETHING if it uses wildcards only at the end of some level, i.e. +doing "nesting loops" like "INBOX/%/%", - and making an *assumption* that +everything returned by such a request will be really a subdirectory of the +"INBOX" mailbox, but if the separator is ".", then such a request +(INBOX.%.%" can suddently return INBOX.&ADB-.&r985-, which is a INBOX.$B8@8l(B and +belongs to a different level. + +> That's only if the client expects to know what the server will do for any +>particular LIST command if it has earlier done a LIST of *. +> +> IMAP makes no such promises. It's implementation dependent, as are the +>semantics of the naming hierarchy. + +And that's exactly the problem. + +> This was a mistake. We all acknowledge it to have been a mistake. +>However, the discussion about naming that took place in the early 1990s +>wasted at least 18 months of everybody's time (and probably reduced all of +>our lifespans by a few years due to high blood pressure). What came up was +>a wretched compromise, but at least it let us do our work. +> +> I disagree that case-insensitive servers are ill-defined; any +>case-insensitive server is very well defined. The problem is that there +>are multiple definitions, and no authority to declare one definition to be +>correct. + +You are misinterpreting me. I had absolutely zero intention to point fingers +and say how bad some decision WAS. If anyone can take the best step, taking +into account all future developments till his own death, the best step would +be to hang himself. What I'm trying to do here is quite different: + +a) I'm trying to point to the problem with the current design. +b) Because I'm getting a feeling that some people, including Mr.Crispin MAY +find time to do some revision of the IMAP protocol in the nearest future, +I'm trying to remember ALL bad things we have met with - not even the +protocol - but with this particular part of the protocol - and dump it on +Mr.Crispin's head, so we can contribute - at least in this way - to the +process of improving the protocol. + +> Had URLs existed at the time, that is what IMAP should have used. That at +>least is a hierarchy that people understand. + +It all depends on the amount of time you have. If I were you (if I may), I'd +drop all concerns about the "compatibility issues" - and would create a +clean and nice IMAP5 (NOT IMAP4revX). Making all the changes you would want +to see there. And THEN see how it can be bridged to the existing standard so +the existing clients and servers won't stop talking to each other. While +this approarch seems scary and unrealistic, one usually discovers that the +"bridge" to older versions is not as long and shaky as one would think. + +But - that's just my not so humble opinion, this protocol is your kid, it's +up to you to decide if it's a time for a Revolution, or smooth evolution is +a better thing to do. + +>>>>> Si vis pacem, para bellum. +>>>> and when you wish for war, prepare for a long boring peace? :-) +>>> I don't know, as only fascists wish for war; +>> Mark, I just wanted to make a quite innocent joke. Looks like I've failed, +>> and let's not turn it into a Political Science exercise. Let's continue to +>> play within the Computer Science barrack :-) +> +> Oh, I understood the joke. However, it's worth remembering that 61 years +>ago, our parents sacrificed a great deal so that we could grow up to play +>with computers... + +Yes, it's worth remembering that it was 65 years rather than 61, though the +death of those how died at the very end of that war when the outcome was +clear was, probably, even more misfortunate. + +Nothing is my sentense, though, had any intended ref. to that Great War. +Neither did the creaters of ParaBellum(c) know anything about that upcoming +event... There are many wars around. And not only on "battlefields". + + +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + +Sincerely, +Vladimir + diff --git a/demo/ermis-f/imap-protocol/cur/1600095166.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095166.23059.mbox:2,S new file mode 100644 index 00000000..4bdf9b53 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095166.23059.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From oleung at traversenetworks.com Tue Sep 27 09:47:35 2005 +To: imap-protocol@u.washington.edu +From: Otto Leung +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +Message-ID: <3D9D02497026344DB100E7D18A6C06E3B5E1E3@nbexch01.neubond.com> + +Why is Partial Fetch important to be implemented on the server side? + +Thanks, +O + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095167.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095167.22807.mbox:2,S new file mode 100644 index 00000000..7bb884fa --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095167.22807.mbox:2,S @@ -0,0 +1,62 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 12:52:24 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006142108.34481.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + + + <201006142108.34481.witold.krecicki@firma.o2.pl> +Message-ID: + +On Mon, 14 Jun 2010, Witold Kr?cicki wrote: +>> The new message store that I am designing now is single instance. It is +>> targeted for CAstor where there is no filesystem at all; just pointers. +> Then why not design it so that MOVE is possible and easy? + +I could. + +However, MOVE is pointless in that store. I would have to think long and +hard to justify the expense of the added work (which in this case is a +simultanous commit of two indices with all-commit or none-commit). + +None of our customers have asked us for MOVE. The addition of the +necessary code paths and error conditions increases the support costs. + +For the client, at best, it saves the client an RTT or two. However, the +complexity of new error states vastly overweighs the savings. This thread +already discussed alternatives by which we could do a pipeline with +conditional execution of the UID EXPUNGE (thus having the advantage of +MOVE without the complexity). + +To benefit a server, it must be BOTH: +[1] technically impossible to copy a message on the mail store without + copying the message text. +[2] possible to move the message without copying the message text. + +Yet, it has already been shown that this is not the case for flat files +nor for Maildir. + +In the case of flat files, and Maildir with source and target on different +filesystem, [1] is true and [2] is false. + +In the case of Maildir with source and target on the same filesystem, [1] +is demonstrably false. It may be that some Maildir users don't want to +deploy the solution for [1]. But that does not mean that we should make +IMAP more complicated, especially since [2] isn't really true due to the +added irreversible failure modes. + +Thus, the server benefit, such as it is, is for some database type store +which can not do a basic-level operation quickly but can do an extended +operation quickly. + +In other words, for the benefit of a poorly-designed database, we are +supposed to add substantial complexity to IMAP and break a guarantee that +is a fundamental part of IMAP?!? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095167.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095167.22920.mbox:2,S new file mode 100644 index 00000000..330cf3a3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095167.22920.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From janssen at parc.com Tue Mar 13 09:29:37 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F6A2E4.3060502@aol.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> +Message-ID: <07Mar13.082943pst."57996"@synergy1.parc.xerox.com> + +> How about combining the multiple mailbox search with a select command to +> create a temporary mailbox view that contains the search result? Since +> it doesn't exists as a listable mailbox, then it can't be the +> destination for a copy command, avoiding any issue of which underlying +> mailbox should be the destination. The untagged exists response +> response would show the number of hits to the search query. Also, the +> result set could be referenced by sequence number instead of the +> individual UIDs as returned by the standard search command. + +How would the client know to SELECT it? + +I was actually thinking of doing what Timo reminded me of yesterday, +using a CREATE/SELECT combo, which would create a new mailbox the name +of which would be the query, and would then rescan the query if it was +selected. They would be persistent in the server, but since they would +be smart virtual mailboxes, this wouldn't be a big cost. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095167.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095167.23014.mbox:2,S new file mode 100644 index 00000000..f0033ccc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095167.23014.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Apr 12 04:29:26 2006 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + + + + +Message-ID: + +Vladimir A. Butenko writes: +> a LIST "Mark%" +> * LIST "Mark Crispin" +> a OK +> b LIST "" "%CRISPIN" +> * LIST "MARK CRISPIN" +> +> The later is a questionable practice, but it definitely has more +> merits than returning unmodified "Mark Crispin" as our server (and, I +> guess, yours) is doing now. The "Mark Crispin" string would confuse a +> client that does not expect that string to match the "%CRISPIN" +> pattern. + +Do you know that for a fact? Which client(s)? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095167.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095167.23059.mbox:2,S new file mode 100644 index 00000000..6846949d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095167.23059.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 27 10:12:33 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +In-Reply-To: <3D9D02497026344DB100E7D18A6C06E3B5E1E3@nbexch01.neubond.com> +References: <3D9D02497026344DB100E7D18A6C06E3B5E1E3@nbexch01.neubond.com> +Message-ID: + +On Tue, 27 Sep 2005, Otto Leung wrote: +> Why is Partial Fetch important to be implemented on the server side? + +It is documented as mandatory-to-implement in the specification. +Consequently, there are clients which depend upon it being implemented, +and these clients will not function if it is not implemented. + +An IMAP server implementation MUST implement all mandatory-to-implement +facilities in the base specification. Unless something is explicitly +documented as optional (or "MAY") in the base specification, then it is +mandatory-to-implement. + +In general, the only optional facilities in the IMAP base specification +are the ability to reference non-INBOX mailboxes (the server can reply NO +to some other mailbox name) and the ability to SEARCH character sets other +than US-ASCII and UTF-8. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095168.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095168.22807.mbox:2,S new file mode 100644 index 00000000..dff43313 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095168.22807.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From dwhite at olp.net Mon Jun 14 12:54:24 2010 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <201006142150.01600.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142135.58808.witold.krecicki@firma.o2.pl> + <20100614194600.GD4182@dan.olp.net> + <201006142150.01600.witold.krecicki@firma.o2.pl> +Message-ID: <20100614195424.GE4182@dan.olp.net> + +On 14/06/10?21:50?+0200, Witold Kr?cicki wrote: +>On Monday 14 of June 2010 21:46:00 Dan White wrote: +>> "Move to " is a common function of our webmail +>> client and of many email clients. None of them (that I have used) depend on +>> an IMAP move command. +>Maybe because there's no IMAP move command? + +Yes. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095168.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095168.22920.mbox:2,S new file mode 100644 index 00000000..1992dd21 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095168.22920.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From snowjn at aol.com Tue Mar 13 18:32:29 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <07Mar13.082943pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <07Mar13.082943pst."57996"@synergy1.parc.xerox.com> +Message-ID: <45F750AD.3020507@aol.com> + + +Bill Janssen wrote: +>> How about combining the multiple mailbox search with a select command to +>> create a temporary mailbox view that contains the search result? Since +>> it doesn't exists as a listable mailbox, then it can't be the +>> destination for a copy command, avoiding any issue of which underlying +>> mailbox should be the destination. The untagged exists response +>> response would show the number of hits to the search query. Also, the +>> result set could be referenced by sequence number instead of the +>> individual UIDs as returned by the standard search command. +>> +> +> How would the client know to SELECT it? +> +> I was actually thinking of doing what Timo reminded me of yesterday, +> using a CREATE/SELECT combo, which would create a new mailbox the name +> of which would be the query, and would then rescan the query if it was +> selected. They would be persistent in the server, but since they would +> be smart virtual mailboxes, this wouldn't be a big cost. +> +> Bill +> + +The client would know to use this method the same way it would know to +do any other extension, it would be written to take advantage of the +advertised capability. + +Is there a way to identify a mailbox as read-only? What happens when a +client tries to copy or append a new message to your "search all +folders" mailbox? I suppose you'd have to respond NO, but there should +be a way for the client to know before trying such an operation. + +snow. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095168.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095168.23014.mbox:2,S new file mode 100644 index 00000000..2d6352f0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095168.23014.mbox:2,S @@ -0,0 +1,89 @@ +MBOX-Line: From vladimir_butenko at stalker.com Wed Apr 12 05:41:10 2006 +To: imap-protocol@u.washington.edu +From: "Vladimir A. Butenko" +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + + + + + +Message-ID: + +On Wed, 12 Apr 2006 13:29:26 +0200 + Arnt Gulbrandsen wrote: +> Vladimir A. Butenko writes: +>> a LIST "Mark%" +>> * LIST "Mark Crispin" +>> a OK +>> b LIST "" "%CRISPIN" +>> * LIST "MARK CRISPIN" +>> +>> The later is a questionable practice, but it definitely has more +>> merits than returning unmodified "Mark Crispin" as our server (and, I +>> guess, yours) is doing now. The "Mark Crispin" string would confuse a +>> client that does not expect that string to match the "%CRISPIN" +>> pattern. +> +> Do you know that for a fact? Which client(s)? + +It would be really beneficial - *IMHO* - if when rejecting some "nonexistent +Science such as computer science" one would not reject any basics of any +science at all. The protocols are written not to explain "convenient ways to +do this or that", but to SPECIFY the way of interaction between entities +involved into certain activity. If someone thinks differently, then please +ask Mr.Crispin to degrade the status of his document from "STANDARD" to +"INFORMATIONAL" or "BCP". And I will have some much needed relaxation time +reading his response to such a proposal. + +The whole approach to the protocol problems based on "the fact that no +client has any problem with this or that" is WRONG - as long as we are +talking about the standards, and not articles in some tabloids (which +include computer science text books :-). + +If I'd write some client, then I would expect the SPECIFIED, and not +REASONABLE (from someone's point of view) response from a server. If the +server does not return what is expected - based on the SPECIFIED STANDARD, +then that server is *broken*. + +Nothing in the SPECIFIED standard says anything about "%CRISPIN" matching +"Mark Crispin". The server retuning such a response is broken - by +definition of the word "standard". + +Is Mark's server broken? Yes. +Is our server broken? Yes. +Does Mark plan to fix it? I doubt it. +Do we plan to fix it? I doubt it. + +The moral? If the law is violated by too many people, probably it's time to +change the law. Till then - it's the violation of the law. + +My point (and provocation, as usual) was not to point the finger onto some +"broken implementations": almost all of the existing IMAP implementations +are broken in this respect. It was an illustration of a need to revise a +protocol - a long overdue task, which is, unfortunately, not a simple task. + +Finally, the answer to your question ("Which clients?") - was the part of +the original phrase: "a client that does not expect that string [Mark +Crispin] to match the "%CRISPIN" pattern." Any client has a right not to +expect it. + +And I do NOT care if such a client really exists or not - as long as we use +this list to talk about protocols, and not about "the simplest way to +install the XXX server on the YYY OS with a hard drive polluted by my ZZZZ +pet". That would be Computer Science... + + +> Arnt + +Sincerely, +Vladimir + diff --git a/demo/ermis-f/imap-protocol/cur/1600095168.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095168.23059.mbox:2,S new file mode 100644 index 00000000..4076c388 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095168.23059.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Sep 27 10:30:58 2005 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +In-Reply-To: <3D9D02497026344DB100E7D18A6C06E3B5E1E3@nbexch01.neubond.com> +References: <3D9D02497026344DB100E7D18A6C06E3B5E1E3@nbexch01.neubond.com> +Message-ID: + +Otto Leung writes: +> Why is Partial Fetch important to be implemented on the server side? + +Without partial fetches, the client has to download all attachments +whenever it needs anything. Do you think that's important? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095169.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095169.22807.mbox:2,S new file mode 100644 index 00000000..0f4820cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095169.22807.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 12:56:52 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <20100614195424.GE4182@dan.olp.net> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142150.01600.witold.krecicki@firma.o2.pl> + <20100614195424.GE4182@dan.olp.net> +Message-ID: <201006142156.52776.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 21:54:24 Dan White wrote: +> On 14/06/10 21:50 +0200, Witold Kr?cicki wrote: +> >On Monday 14 of June 2010 21:46:00 Dan White wrote: +> >> "Move to " is a common function of our webmail +> >> client and of many email clients. None of them (that I have used) depend +> >> on an IMAP move command. +> > +> >Maybe because there's no IMAP move command? +> +> Yes. +.... I'm waiting for the point + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095169.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095169.22920.mbox:2,S new file mode 100644 index 00000000..a5c18cfb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095169.22920.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From janssen at parc.com Tue Mar 13 19:47:56 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F750AD.3020507@aol.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <07Mar13.082943pst."57996"@synergy1.parc.xerox.com> + <45F750AD.3020507@aol.com> +Message-ID: <07Mar13.184804pst."57996"@synergy1.parc.xerox.com> + +> The client would know to use this method the same way it would know to +> do any other extension, it would be written to take advantage of the +> advertised capability. + +Oh, OK. I was trying to think of ways to do it that wouldn't require +an extension. + +> Is there a way to identify a mailbox as read-only? What happens when a +> client tries to copy or append a new message to your "search all +> folders" mailbox? I suppose you'd have to respond NO, but there should +> be a way for the client to know before trying such an operation. + +From RFC 3501: + + If the client is not permitted to modify the mailbox but is + permitted read access, the mailbox is selected as read-only, and + the server MUST prefix the text of the tagged OK response to + SELECT with the "[READ-ONLY]" response code. + +But my search folders are really Presto folders (see section 4.2 of +http://www2.parc.com/csl/projects/placeless/papers/tochi-presto.pdf, +page 9), though the system isn't based on the Presto codebase. So +I could support COPY and/or APPEND. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095169.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095169.23014.mbox:2,S new file mode 100644 index 00000000..9d444165 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095169.23014.mbox:2,S @@ -0,0 +1,159 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Apr 12 10:41:47 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] LIST Clarification +In-Reply-To: +References: <443A7A2D.2070708@consilient.com> + + + + <443C0286.60200@att.com> + + + + + + + + +Message-ID: + +On Wed, 12 Apr 2006, Vladimir A. Butenko wrote: +>>> correctly matching the pattern the client has provided - matching +>>> according to the rules known to the server only, not the client? +>>> then the client HAS ABSOLUTELY NO RIGHT to expect that all returned names +>>> will start with "ZZZ/", and thus - can be displayed as "ZZZ" "subtree". +>> I don't understand why. There's no M-UTF7 here. +> Who cares? You've just said that I (being a client) cannot assume ANYTHING +> about your (server's) responses, so I cannot plan my life depending on you. + +But that's no different than doing a wildcard in the shell on a system. +The response is according to that system's rules. + +I had to learn (very painfully I might add) that + mv *.c *.c.bak +on UNIX did not do what I expected it to do. + +Mac OS X is particularly bizarre, although it makes sense when you +consider how it is implemented. A non-wildcard ls matches a name +case-insensitive, but a wildcard ls is case-sensitive. + +IMAP never tried to define an ideal mail store which had one (and only +one) set of rules. Rather, IMAP tried to be a means to export many +different types of existing mail stores, often with very different rules. + +>> The only thing that may different is that with a case-insensitive server +>> that it may return names that start with zzz/ or Zzz/ etc. +> As we saw with non-ASCII names, it's more complex than that, and the number +> of variations is endless (though it's a countable set, not a continuum :-). + +Yes, but your example was ASCII. I agree that once we get into non-ASCII +names things become much messier. But case-sensitivity is not the +solution. You have to be completely octet-sensitive if that's the goal. + +> There are some freeware IMAP servers using "." as the path separator. At the +> same time, "." is part of "Modified-UTF-7 BASE64" encoding. + +"." can not be a hierarchy delimiter if it is within an M-UTF7 sequence. +Perhaps you can't use "." as a hierarchy delimiter with M-UTF7. Note that +M-UTF7 did get out of the way of "/". But yes, a server that uses "." as +a hierarchy delimiter has a problem with M-UTF7. + +Most people agree that it was a mistake for IMAP to have server-defined +hierarchy delimiters; and that "/" should be the one and only hierarchy +delimiter. Hindsight is always easier. + +Everybody agrees that M-UTF7 was unfortunate. It was necessary at the +time to abolish "just send 8-bits". Too bad that punycode didn't exist at +the time, since punycode is far superior. + +Also too bad that people did "just send 8-bits" for IMAP mailbox names; +had that not happened, we might have been able to define UTF-8 back then. + +> So, some name can +> look as &ADB.r985-, because it was "$B8@8l(B" (it's just an example, not a real +> encoding of this japanese word). So, what would +> LIST "%.%" command return? +> I'd say that the client really cannot know here, and the hierarchy it will +> present to the user would be quite different from what some users expect. + +I agree. Life is tough for client authors some times. Life is tough for +server authors some times too. + +We don't live in a perfect world. I don't think that it's useful to +complain about imperfections because perfection is unattainable. It's +more useful to try to determine what is the most reasonable thing to do +in the fact of imperfections that exist and that other people will +continuously create. + +Most of these particular problems will be presently overtaken by events. +At some point, we will adopt UTF-8 mailbox names, and M-UTF7 will be first +a compatibility mode for old broken clients and later a bad memory of the +past. + +>> IMAP makes no such promises. It's implementation dependent, as are the +>> semantics of the naming hierarchy. +> And that's exactly the problem. + +I don't consider that problem to be solvable. The more restrictive that a +protocol becomes in the face of implementation options, the less suitable +that protocol is for various applications. + +> a) I'm trying to point to the problem with the current design. + +We all know these problems. + +> b) Because I'm getting a feeling that some people, including Mr.Crispin MAY +> find time to do some revision of the IMAP protocol in the nearest future + +You are too optimistic. + +So far, IMAP has been a 20 year process, the past 10 of which have +supposedly been refining the current revision. A new revision would open +up a Pandora's box, as *everybody* will see it as their opportunity to +get their own personal hot-button issue address. + +I'm not volunteering to open that box. I would be one of the people +fighting tooth and nail to keep that box slammed shut. + +IMAP is not the only IETF protocol which is having problem with +internationalized identifiers. It is not the only protocol in which the +first attempts at internationalized identifiers have proven flawed. + +There are a great many people who are wrestling with internationalization +problems; and I am happy to await their guidance. + +Be thankful that, unlike NNTP, IMAP took an early stand against "just send +8-bits". NNTP is a mess, and the proposed new specification isn't doing +anything to solve that mess; it defends every behavior of every server +forever. + +> It all depends on the amount of time you have. If I were you (if I may), I'd +> drop all concerns about the "compatibility issues" - and would create a clean +> and nice IMAP5 (NOT IMAP4revX). + +Compatibility with IMAP2 isn't the problem; in fact, hardly anyone worries +about that any more. Creeping featurism is the problem. + +As attractive as it may sound to build an IMAP5 that removes the current +known warts, I can guarantee that such a protocol would have much more +added than removed. It would not be completed before I retire. It +probably would not be completed during my lifetime. + +And...it would have brand new warts, that won't be generally-recognized as +warts until years later. + +> But - that's just my not so humble opinion, this protocol is your kid, it's +> up to you to decide if it's a time for a Revolution, or smooth evolution is a +> better thing to do. + +My goal is for IMAP to evolve to a state where it can be called "done", +and then let the next generation worry about its successor. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095169.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095169.23059.mbox:2,S new file mode 100644 index 00000000..801b172f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095169.23059.mbox:2,S @@ -0,0 +1,64 @@ +MBOX-Line: From oleung at traversenetworks.com Tue Sep 27 10:45:09 2005 +To: imap-protocol@u.washington.edu +From: Otto Leung +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +Message-ID: <3D9D02497026344DB100E7D18A6C06E3B5E1F5@nbexch01.neubond.com> + +Thanks for all the replies. + +The reason I asked is that the client software is having problems with +partial fetch. It hangs when it tries to get an attachment that's +bigger than the chunk size. + +The imap server I am connecting to is giving me: + +When I send: +A22 FETCH 15 (BODY[1]<245760.16384>) + +I am getting: +* 15 FETCH (BODY[1]<245760> {16384} +[some binary data...] +A22 OK FETCH completed + +The reason it hangs seems to be the IMAP server did not send 16384 bytes +as it specified {16834}. + +I turned off the partial fetch property when I connected to the same +IMAP server, and I could get the attachment successfully. It appears to +me that the partial fetch implement has a bug on the server side. + +-----Original Message----- +From: mrc@ndcms.cac.washington.edu [mailto:mrc@ndcms.cac.washington.edu] +On Behalf Of Mark Crispin +Sent: Tuesday, September 27, 2005 10:13 AM +To: Otto Leung +Cc: imap-protocol@u.washington.edu +Subject: Re: [Imap-protocol] partial fetch + +On Tue, 27 Sep 2005, Otto Leung wrote: +> Why is Partial Fetch important to be implemented on the server side? + +It is documented as mandatory-to-implement in the specification. +Consequently, there are clients which depend upon it being implemented, +and these clients will not function if it is not implemented. + +An IMAP server implementation MUST implement all mandatory-to-implement +facilities in the base specification. Unless something is explicitly +documented as optional (or "MAY") in the base specification, then it is +mandatory-to-implement. + +In general, the only optional facilities in the IMAP base specification +are the ability to reference non-INBOX mailboxes (the server can reply +NO +to some other mailbox name) and the ability to SEARCH character sets +other +than US-ASCII and UTF-8. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095170.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095170.22807.mbox:2,S new file mode 100644 index 00000000..ff864b83 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095170.22807.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From dwhite at olp.net Mon Jun 14 13:01:28 2010 +To: imap-protocol@u.washington.edu +From: Dan White +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <201006142156.52776.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142150.01600.witold.krecicki@firma.o2.pl> + <20100614195424.GE4182@dan.olp.net> + <201006142156.52776.witold.krecicki@firma.o2.pl> +Message-ID: <20100614200128.GF4182@dan.olp.net> + +On 14/06/10?21:56?+0200, Witold Kr?cicki wrote: +>On Monday 14 of June 2010 21:54:24 Dan White wrote: +>> On 14/06/10 21:50 +0200, Witold Kr?cicki wrote: +>> >On Monday 14 of June 2010 21:46:00 Dan White wrote: +>> >> "Move to " is a common function of our webmail +>> >> client and of many email clients. None of them (that I have used) depend +>> >> on an IMAP move command. +>> > +>> >Maybe because there's no IMAP move command? +>> +>> Yes. +>.... I'm waiting for the point + +I understand there are several reasons for your proposal, and I don't mean +to belittle it. + +My point was in response to your statement that users want to have a move +function within their emails clients. My intent was to point out that many +email clients already implement a move function without having to resort to +an IMAP MOVE command, hence that is not a valid reason to propose one. + +-- +Dan White + diff --git a/demo/ermis-f/imap-protocol/cur/1600095170.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095170.22920.mbox:2,S new file mode 100644 index 00000000..bc0c0a87 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095170.22920.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From snowjn at aol.com Tue Mar 13 20:24:44 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <07Mar13.184804pst."57996"@synergy1.parc.xerox.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <07Mar13.082943pst."57996"@synergy1.parc.xerox.com> + <45F750AD.3020507@aol.com> + <07Mar13.184804pst."57996"@synergy1.parc.xerox.com> +Message-ID: <45F76AFC.3070507@aol.com> + + +> +>> Is there a way to identify a mailbox as read-only? +>> +> +> From RFC 3501: +> +> If the client is not permitted to modify the mailbox but is +> permitted read access, the mailbox is selected as read-only, and +> the server MUST prefix the text of the tagged OK response to +> SELECT with the "[READ-ONLY]" response code. +> +> + +Yep, forgot about that. thanks. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095170.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095170.23014.mbox:2,S new file mode 100644 index 00000000..9dfec42a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095170.23014.mbox:2,S @@ -0,0 +1,7 @@ +MBOX-Line: From tss at iki.fi Fri Apr 14 08:39:15 2006 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] SEARCH +Message-ID: <1145029156.10727.81.camel@hurina> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095170.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095170.23059.mbox:2,S new file mode 100644 index 00000000..7a7f8076 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095170.23059.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Sep 27 10:54:14 2005 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +In-Reply-To: <3D9D02497026344DB100E7D18A6C06E3B5E1F5@nbexch01.neubond.com> +References: <3D9D02497026344DB100E7D18A6C06E3B5E1F5@nbexch01.neubond.com> +Message-ID: + +On Tue, 27 Sep 2005, Otto Leung wrote: +> I am getting: +> * 15 FETCH (BODY[1]<245760> {16384} +> [some binary data...] +> A22 OK FETCH completed +> The reason it hangs seems to be the IMAP server did not send 16384 bytes +> as it specified {16834}. + +If your report is correct, that is absolutely, indisputably, unambiguously +a bug in that IMAP server. + +Please identify the IMAP server in question. This is important for two +reasons: + +First, the community needs to know about buggy IMAP servers; and the +vendors of such servers need to know that the buggy nature of their server +is known to the community. Unfortunately, a few vendors have been known +to disregard (and never fix) bugs in their software in the absence of +community pressure. + +Second, if the IMAP server in question is known to be non-buggy, then +there must be some bug in your client and you need to know this. The +diagnosis of "server bug" can not be considered complete without +verification that your report (and thus your client) is correct. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095171.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095171.22807.mbox:2,S new file mode 100644 index 00000000..e0fc0c88 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095171.22807.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 13:08:55 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Re: IMAP MOVE extension +In-Reply-To: <20100614200128.GF4182@dan.olp.net> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142156.52776.witold.krecicki@firma.o2.pl> + <20100614200128.GF4182@dan.olp.net> +Message-ID: <201006142208.55823.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 22:01:28 Dan White wrote: +> On 14/06/10 21:56 +0200, Witold Kr?cicki wrote: +> >On Monday 14 of June 2010 21:54:24 Dan White wrote: +> >> On 14/06/10 21:50 +0200, Witold Kr?cicki wrote: +> >> >On Monday 14 of June 2010 21:46:00 Dan White wrote: +> >> >> "Move to " is a common function of our webmail +> >> >> client and of many email clients. None of them (that I have used) +> >> >> depend on an IMAP move command. +> >> > +> >> >Maybe because there's no IMAP move command? +> >> +> >> Yes. +> > +> >.... I'm waiting for the point +> +> I understand there are several reasons for your proposal, and I don't mean +> to belittle it. +> +> My point was in response to your statement that users want to have a move +> function within their emails clients. My intent was to point out that many +> email clients already implement a move function without having to resort to +> an IMAP MOVE command, hence that is not a valid reason to propose one. +That can fail in case of quota and moving large amount of messages. In this +case user sees that it's not move, it's a mere emulation by means of copy + +delete. +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095171.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095171.22920.mbox:2,S new file mode 100644 index 00000000..51ad150b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095171.22920.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From snowjn at aol.com Wed Mar 14 03:14:21 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F76AFC.3070507@aol.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> <1173743673.9167.65.camel@hurina> + <45F6A2E4.3060502@aol.com> <07Mar13.082943pst."57996"@synergy1.parc.xerox.com> <45F750AD.3020507@aol.com> <07Mar13.184804pst."57996"@synergy1.parc.xerox.com> + <45F76AFC.3070507@aol.com> +Message-ID: <45F7CAFD.8060704@aol.com> + + +>>> Is there a way to identify a mailbox as read-only? +>>> +>> +>> >From RFC 3501: +>> +>> If the client is not permitted to modify the mailbox but is +>> permitted read access, the mailbox is selected as read-only, and +>> the server MUST prefix the text of the tagged OK response to +>> SELECT with the "[READ-ONLY]" response code. +>> +>> +> +> Yep, forgot about that. thanks. +> +I take that back. This response doesn't help with the copy problem. +This read-only indicator is only available after the mailbox is +selected, not when it's listed. + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095171.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095171.23014.mbox:2,S new file mode 100644 index 00000000..a00dfe86 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095171.23014.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From the RFC 3501: +To: imap-protocol@u.washington.edu + +"It indicates the [CHARSET] of the strings that appear in the search +criteria. [MIME-IMB] content transfer encodings, and [MIME-HDRS] strings +in [RFC-2822]/[MIME-IMB] headers, MUST be decoded before comparing text +in a [CHARSET] other than US-ASCII." + +If I read this correctly, searching logic works like this: + +If search charset is US-ASCII, server either +a) simply does a substring match for the entire message, or +b) decodes MIME parts based on Content-Transfer-Encoding header and +decodes the MIME headers themselves, and then does substring matching + +If search charset is not US-ASCII, only b) is allowed. + +If the search key is invalid for the given character set, should server +return BAD error to client? Are non-ASCII characters in search key +invalid for US-ASCII charset? + +What about if search key contains non-ASCII characters but no charset +parameter is given? Currently I assume this means just doing a substring +search from messages without doing any charset conversions (i;octet +comparator). + +I don't see it clearly mentioned how searching MIME parts should work, +but since it only talks about substring matching, I assume that it +shouldn't really care about MIME parts that much. + +Especially BODY searching talks about searching from message bodies. Are +MIME part headers part of a message body? I guess not, because UW-IMAP +skips them. + +More interesting are MIME footer and trailer sections. Should they be +searched? UW-IMAP skips them. What about MIME boundary lines? UW-IMAP +searches these, but not if you include its "--" prefix in search key. + +Is "Header: value" searching required to work? I think it is, and works +with UW-IMAP. Is "line\r\nline2" (as literal of course with real CR+LF) +searching required to work in message body? Again, I think so and works +with UW-IMAP. But then is "Header: value\r\nHeader2: value2" searching +required to work? I don't see why not, but this doesn't work anymore +with UW-IMAP. +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 198 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095171.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095171.23059.mbox:2,S new file mode 100644 index 00000000..dcf35146 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095171.23059.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From alh at warhound.org Tue Sep 27 11:00:47 2005 +To: imap-protocol@u.washington.edu +From: Adrian Hosey +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +In-Reply-To: <3D9D02497026344DB100E7D18A6C06E3B5E1F5@nbexch01.neubond.com> +Message-ID: + +On Tue, 27 Sep 2005, Otto Leung wrote: +: +: The reason I asked is that the client software is having problems with +: partial fetch. It hangs when it tries to get an attachment that's +: bigger than the chunk size. + +I have seen something very similar to this when the attachment has been +corrupted on disk by a crash. (Or anything else that would cause +corruption.) If the attachment contains a null byte, 8 zero bits, this can +mess up the octet count between client and server. Since null bytes are +never supposed to be written to an IMAP store, some IMAP programs assume +they will never get a null byte from a disk read and if they do they will +transmit the null byte over the wire, which is a BIG no-no. + +So, are your attachments corrupt or do they contain null bytes? + +-- +I am disrespectful to dirt! + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095172.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095172.22807.mbox:2,S new file mode 100644 index 00000000..f28a18b1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095172.22807.mbox:2,S @@ -0,0 +1,74 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 13:16:41 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142108.34481.witold.krecicki@firma.o2.pl> + +Message-ID: <201006142216.41783.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 21:52:24 Mark Crispin wrote: +> On Mon, 14 Jun 2010, Witold Kr?cicki wrote: +> >> The new message store that I am designing now is single instance. It is +> >> targeted for CAstor where there is no filesystem at all; just pointers. +> > +> > Then why not design it so that MOVE is possible and easy? +> +> I could. +> +> However, MOVE is pointless in that store. I would have to think long and +> hard to justify the expense of the added work (which in this case is a +> simultanous commit of two indices with all-commit or none-commit). +> +> None of our customers have asked us for MOVE. The addition of the +> necessary code paths and error conditions increases the support costs. +Have you ever offered them MOVE? Or did you just replied that they're cocky and +want to undo the 25-year history of IMAP? + +> For the client, at best, it saves the client an RTT or two. However, the +> complexity of new error states vastly overweighs the savings. This thread +> already discussed alternatives by which we could do a pipeline with +> conditional execution of the UID EXPUNGE (thus having the advantage of +> MOVE without the complexity). +You're creating the complexity of MOVE at the every step of this discussion. +For me it's a simple operation. And yes, I have thought it through. + +> To benefit a server, it must be BOTH: +> [1] technically impossible to copy a message on the mail store without +> copying the message text. +> [2] possible to move the message without copying the message text. +> +> Yet, it has already been shown that this is not the case for flat files +> nor for Maildir. +> +> In the case of flat files, and Maildir with source and target on different +> filesystem, [1] is true and [2] is false. +> +> In the case of Maildir with source and target on the same filesystem, [1] +> is demonstrably false. It may be that some Maildir users don't want to +> deploy the solution for [1]. But that does not mean that we should make +> IMAP more complicated, especially since [2] isn't really true due to the +> added irreversible failure modes. +I wanted to comment 'IMAP more complicated' but I just won't... + +> Thus, the server benefit, such as it is, is for some database type store +> which can not do a basic-level operation quickly but can do an extended +> operation quickly. +I know that in Your UW-IMAP-based universe copy is 'basic', move is +'extended'. But it's not the general rule. + +> In other words, for the benefit of a poorly-designed database, we are +> supposed to add substantial complexity to IMAP and break a guarantee that +> is a fundamental part of IMAP?!? +I don't want to break this guarantee, it's You who's stating that it's +impossible to make MOVE atomic. I oppose every time. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095172.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095172.22920.mbox:2,S new file mode 100644 index 00000000..f402513c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095172.22920.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From janssen at parc.com Wed Mar 14 08:57:10 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F7CAFD.8060704@aol.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <07Mar13.082943pst."57996"@synergy1.parc.xerox.com> + <45F750AD.3020507@aol.com> + <07Mar13.184804pst."57996"@synergy1.parc.xerox.com> + <45F76AFC.3070507@aol.com> <45F7CAFD.8060704@aol.com> +Message-ID: <07Mar14.075715pst."57996"@synergy1.parc.xerox.com> + +> I take that back. This response doesn't help with the copy problem. +> This read-only indicator is only available after the mailbox is +> selected, not when it's listed. + +I see what you mean. It can only be sent for selected mailboxes, even +as a response code for BAD. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095172.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095172.23014.mbox:2,S new file mode 100644 index 00000000..f2125d97 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095172.23014.mbox:2,S @@ -0,0 +1,128 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Apr 14 11:30:20 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] SEARCH +In-Reply-To: <1145029156.10727.81.camel@hurina> +References: <1145029156.10727.81.camel@hurina> +Message-ID: + +On Fri, 14 Apr 2006, Timo Sirainen wrote: +> If I read this correctly, searching logic works like this: +> +> If search charset is US-ASCII, server either +> a) simply does a substring match for the entire message, or +> b) decodes MIME parts based on Content-Transfer-Encoding header and +> decodes the MIME headers themselves, and then does substring matching +> +> If search charset is not US-ASCII, only b) is allowed. + +My personal opinion (not "Mr. IMAP Protocol"): + +(a) is the IMAP2 interpretation, and (b) is the IMAP4 interpretation; and +that a full IMAP4 server always does (b). + +However, since US-ASCII is the only mandatory to implement search charset, +an IMAP4 server which only implements US-ASCII and only does (a) remains +compliant. This is a compatibility-with-the-past wart, and new server +implementations should not do this (except as a development step) + +At a minimum, UTF-8 SHOULD be supported as a search charset. + +(a) has known problems. It has false positives and false negatives +because it does not decode the content. This occurs even with ASCII. + +> If the search key is invalid for the given character set, should server +> return BAD error to client? Are non-ASCII characters in search key +> invalid for US-ASCII charset? + +I'm not certain what you mean by "invalid". + +Do you mean "contain a codepoint that is not in that charset"? If so, I +think a failed match is better than a BAD, since it may be that the server +has an obsolete version of that charset's definition. + +> What about if search key contains non-ASCII characters but no charset +> parameter is given? Currently I assume this means just doing a substring +> search from messages without doing any charset conversions (i;octet +> comparator). + +It can mean whatever you want, although perhaps a failed match is best. +Or maybe a BAD in this case, because the specification does denounce use +of 8-bit strings without a charset identification in section 4.3.1 + +It's not defined, and in such cases servers can do as they want. As with +other undefined situations, it may be defined in the future for servers +that advertise an extension. + +Clients which do undefined things are broken. + +> I don't see it clearly mentioned how searching MIME parts should work, +> but since it only talks about substring matching, I assume that it +> shouldn't really care about MIME parts that much. + +I don't understand this comment. You should apply content transfer +decoding. Most people canonicalize search keys and MIME parts into UTF-8 +prior to matching. Also look into case coercion and decomposition, +although the IMAP i18n/stringprep specification will specify this (and +more) in detail so maybe you want to hold off. + +> Especially BODY searching talks about searching from message bodies. Are +> MIME part headers part of a message body? I guess not, because UW-IMAP +> skips them. + +TEXT searches search the entire message including RFC 2822 and MIME +metadata. + +BODY searches omit RFC 2822 and MIME metadata. + +> More interesting are MIME footer and trailer sections. Should they be +> searched? UW-IMAP skips them. + +I consider these not to be part of a message at all for any MIME-savvy +application. + +> What about MIME boundary lines? UW-IMAP +> searches these, but not if you include its "--" prefix in search key. + +Are you certain that you aren't confusing BODY and TEXT searches? A TEXT +search would find them, because they appear in the MIME header. + +> Is "Header: value" searching required to work? I think it is, and works +> with UW-IMAP. + +What do you mean by this? If you're talking about a TEXT search, then it +may or may not work depending upon the octets in a message. You should be +using a "HEADER Header: value" search instead. + +> Is "line\r\nline2" (as literal of course with real CR+LF) +> searching required to work in message body? Again, I think so and works +> with UW-IMAP. + +Yes, it should in a TEXT search. But see below. + +> But then is "Header: value\r\nHeader2: value2" searching +> required to work? I don't see why not, but this doesn't work anymore +> with UW-IMAP. + +Once again, I'd like to understand what you mean by this. + +If you're talking about a TEXT search, I don't see why it shouldn't work, +although it might be that you have a mailbox format that uses UNIX-style +newlines and the data was not CRLF-converted. + + HEADER Header: {....} + value\r\nHeader2: value2 +will certainly not work. + +I don't think that it is useful for a client to have newlines in a search +key. Some servers try to do fuzzy matching, so for example if you search +for "Joe's trip to Paris" there will be a match even if it was broken by a +newline. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095172.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095172.23059.mbox:2,S new file mode 100644 index 00000000..5ccdc287 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095172.23059.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From oleung at traversenetworks.com Tue Sep 27 11:24:59 2005 +To: imap-protocol@u.washington.edu +From: Otto Leung +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +Message-ID: <3D9D02497026344DB100E7D18A6C06E3B5E200@nbexch01.neubond.com> + +What's the policy of revealing the Imap server in question? + +-----Original Message----- +From: mrc@ndcms.cac.washington.edu [mailto:mrc@ndcms.cac.washington.edu] +On Behalf Of Mark Crispin +Sent: Tuesday, September 27, 2005 10:13 AM +To: Otto Leung +Cc: imap-protocol@u.washington.edu +Subject: Re: [Imap-protocol] partial fetch + +On Tue, 27 Sep 2005, Otto Leung wrote: +> Why is Partial Fetch important to be implemented on the server side? + +It is documented as mandatory-to-implement in the specification. +Consequently, there are clients which depend upon it being implemented, +and these clients will not function if it is not implemented. + +An IMAP server implementation MUST implement all mandatory-to-implement +facilities in the base specification. Unless something is explicitly +documented as optional (or "MAY") in the base specification, then it is +mandatory-to-implement. + +In general, the only optional facilities in the IMAP base specification +are the ability to reference non-INBOX mailboxes (the server can reply +NO +to some other mailbox name) and the ability to SEARCH character sets +other +than US-ASCII and UTF-8. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095173.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095173.22807.mbox:2,S new file mode 100644 index 00000000..1eeb2930 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095173.22807.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From dkarp at zimbra.com Mon Jun 14 13:28:11 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +Message-ID: <915336234.3135.1276547291546.JavaMail.root@dogfood.zimbra.com> + +> Thus, the server benefit, such as it is, is for some database type +> store which can not do a basic-level operation quickly but can do +> an extended operation quickly. + +Note that the discussion is not MOVE vs. COPY, but actually between +MOVE vs. COPY/STORE/EXPUNGE. Which, in such a database-based store, +would likely be one UPDATE vs. one INSERT, one UPDATE, and one +DELETE. + +In addition, you could posit a store where the searchable message +content (for SEARCH BODY, etc.) is shared among all copies of a +message. In such a store, once a COPY was performed you'd end up +in a more expensive ref-counting mode for subsequent deletes of +copied messages, a mode avoided in the absence of a COPY op. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095173.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095173.22920.mbox:2,S new file mode 100644 index 00000000..1e6681c2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095173.22920.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From alexey.melnikov at isode.com Wed Mar 14 11:19:57 2007 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F6A2E4.3060502@aol.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> <1173743673.9167.65.camel@hurina> + <45F6A2E4.3060502@aol.com> +Message-ID: <45F83CCD.2050808@isode.com> + +John Snow wrote: + +> How about combining the multiple mailbox search with a select command +> to create a temporary mailbox view that contains the search result? +> Since it doesn't exists as a listable mailbox, then it can't be the +> destination for a copy command, avoiding any issue of which underlying +> mailbox should be the destination. The untagged exists response +> response would show the number of hits to the search query. Also, the +> result set could be referenced by sequence number instead of the +> individual UIDs as returned by the standard search command. + +This looks similar to VFOLDER extension: + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095173.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095173.23014.mbox:2,S new file mode 100644 index 00000000..b660f296 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095173.23014.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Sun Apr 23 23:33:08 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] about imap folder listing +Message-ID: + +hi, + +i am using outlook 2002 / 2003 where i find two inbox folders, why is it +so?? where as i got only one 'INBOX' at server. and also both displays as +'Inbox' +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095173.23059.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095173.23059.mbox:2,S new file mode 100644 index 00000000..2b1b7f9e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095173.23059.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From oleung at traversenetworks.com Tue Sep 27 12:25:51 2005 +To: imap-protocol@u.washington.edu +From: Otto Leung +Date: Fri Jun 8 12:34:36 2018 +Subject: [Imap-protocol] partial fetch +Message-ID: <3D9D02497026344DB100E7D18A6C06E3B5E20F@nbexch01.neubond.com> + +The imap server in question is 207.106.47.239:143, and I've just +notified the vendor. + +-----Original Message----- +From: mrc@ndcms.cac.washington.edu [mailto:mrc@ndcms.cac.washington.edu] +On Behalf Of Mark Crispin +Sent: Tuesday, September 27, 2005 10:54 AM +To: Otto Leung +Cc: imap-protocol@u.washington.edu +Subject: RE: [Imap-protocol] partial fetch + +On Tue, 27 Sep 2005, Otto Leung wrote: +> I am getting: +> * 15 FETCH (BODY[1]<245760> {16384} +> [some binary data...] +> A22 OK FETCH completed +> The reason it hangs seems to be the IMAP server did not send 16384 +bytes +> as it specified {16834}. + +If your report is correct, that is absolutely, indisputably, +unambiguously +a bug in that IMAP server. + +Please identify the IMAP server in question. This is important for two +reasons: + +First, the community needs to know about buggy IMAP servers; and the +vendors of such servers need to know that the buggy nature of their +server +is known to the community. Unfortunately, a few vendors have been known + +to disregard (and never fix) bugs in their software in the absence of +community pressure. + +Second, if the IMAP server in question is known to be non-buggy, then +there must be some bug in your client and you need to know this. The +diagnosis of "server bug" can not be considered complete without +verification that your report (and thus your client) is correct. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095174.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095174.22807.mbox:2,S new file mode 100644 index 00000000..48d6bea5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095174.22807.mbox:2,S @@ -0,0 +1,57 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 13:43:21 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + + + <201006142108.34481.witold.krecicki@firma.o2.pl> + +Message-ID: + +The operation of moving messages from source to destination pipelines two +operations in one of two ways: + [a] for each message: + [1] insert in destination + [2] remove from source +or + [b] [1] insert all in destination + [2] remove all from source + +If [a][1] fails, then [a][2] is not executed for that iteration. However, +earlier iterations may have succeeded. If [a][2] fails, then the result +is a copy for that iteration, but earlier iterations may have moved. + +If [b][1] fails, then [b][2] is not executed and the move operation fails. +If [b][2] fails, then the result is a copy. + +Implementations [a] and [b] both create, for the first time in IMAP, a +"partial success" result. The result from implementation [a] is far more +complex and requires far more complex protocol + +There's also the matter of whatever UIDPLUS results are returned. Since +MOVE expunges from the source, then UIDPLUS results are either dangling +(like COPYUID, but referring to source UIDs that no longer exist) or +unassociated (like APPENDUID). This is unavoidable with any pipeline; but +the status report gets particularly complex with implementation [a]. + + +The whole point to the proposed MOVE command is not syntactic sugar, but +rather to pretend that this pipeline doesn't really exist. Otherwise, it +would just be a matter of fixing the RTTs of the pipeline by improving the +pipelining mechanism, such as either a PIPELINE command or conditional +execution. + +Instead, what we have is a proposal that uniquely benefits certain +databases (but NOT Maildir, since Maildir can use hard links) at the cost +of substantial protocol complexity to support all the newly-created error +cases. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095174.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095174.22920.mbox:2,S new file mode 100644 index 00000000..355ccb7e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095174.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From snowjn at aol.com Wed Mar 14 11:46:41 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F83CCD.2050808@isode.com> +References: <07Mar12.152936pst."57996"@synergy1.parc.xerox.com> <1173743673.9167.65.camel@hurina> + <45F6A2E4.3060502@aol.com> <45F83CCD.2050808@isode.com> +Message-ID: <45F84311.3080906@aol.com> + + + +alexey.melnikov@isode.com wrote: +> John Snow wrote: +> +>> How about combining the multiple mailbox search with a select command +>> to create a temporary mailbox view that contains the search result? +>> Since it doesn't exists as a listable mailbox, then it can't be the +>> destination for a copy command, avoiding any issue of which +>> underlying mailbox should be the destination. The untagged exists +>> response response would show the number of hits to the search query. +>> Also, the result set could be referenced by sequence number instead +>> of the individual UIDs as returned by the standard search command. +> +> This looks similar to VFOLDER extension: +> +> +Sort of. In vfolder, the search criteria is stored to create a view +that is a subset of an existing mailbox. In that case, it can easily be +treated the same as any other mailbox. My hope is to expand that beyond +a single mailbox. I think creating a server stored view is +unnecessary. The extension aware client can create the combined view on +the fly. I see it more as an extension to search than a new virtual +mailbox. In a standard search, the results are only updated when the +client issues a new search and not pushed from the server. + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095174.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095174.23014.mbox:2,S new file mode 100644 index 00000000..2959e900 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095174.23014.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Mon Apr 24 02:32:53 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] about multiple imap account at client +Message-ID: + +hi , + +Scenario: +Client: outlook 2002 +Case: confugured with two different accounts at server, + +Problem: All goes well during configuring new account, lists both the +account folders, and mails in corresponding inboxes. Now if i click on first +account inbox its showing me its mails , now i go and click the inbox of my +second account it shows me the content of the firrst acount mails!!!!!!!!!! +this should not happen , why is this so??? + + +through logs i found tat authentication are not passed when we switch +between accounts. how to solve?? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095175.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095175.22807.mbox:2,S new file mode 100644 index 00000000..70500ddd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095175.22807.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 13:54:14 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <915336234.3135.1276547291546.JavaMail.root@dogfood.zimbra.com> +References: <915336234.3135.1276547291546.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Mon, 14 Jun 2010, Dan Karp wrote: +> In addition, you could posit a store where the searchable message +> content (for SEARCH BODY, etc.) is shared among all copies of a +> message. In such a store, once a COPY was performed you'd end up +> in a more expensive ref-counting mode for subsequent deletes of +> copied messages, a mode avoided in the absence of a COPY op. + +That assumes that you care how many references there are to the message +content, presumably for space reclamation when the last user is dropped. +That isn't necessarily a valid assumption (e.g., not in CAstor). + +In effect, a database which requires separate instances of a message for +each consumer of the message has all the disadvantages of both flat file +and a filesystem directory, but none of the advantages of either. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095175.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095175.22920.mbox:2,S new file mode 100644 index 00000000..84f9f380 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095175.22920.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 14 12:08:05 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F84311.3080906@aol.com> +References: <"07Mar12. 152936pst. 57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <45F83CCD.2050808@isode.com> <45F84311.3080906@aol.com> +Message-ID: + +John Snow writes: +> Sort of. In vfolder, the search criteria is stored to create a view +> that is a subset of an existing mailbox. In that case, it can easily +> be treated the same as any other mailbox. My hope is to expand that +> beyond a single mailbox. + +Vfolder will do that by using Alexey's multimailbox search, at least +that's the vague intention. + +> I think creating a server stored view is unnecessary. The extension +> aware client can create the combined view on the fly. + +FWIW, vfolder is the way it so so that unextended clients see the data, +too. The folder can be set up by an extended client or outside IMAP and +accessed by anything. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095175.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095175.23014.mbox:2,S new file mode 100644 index 00000000..429c3082 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095175.23014.mbox:2,S @@ -0,0 +1,56 @@ +MBOX-Line: From lakshmikiran.pai at gmail.com Mon Apr 24 02:54:45 2006 +To: imap-protocol@u.washington.edu +From: Lakshmi Kiran Pai +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] about Inbox folder +Message-ID: + + yes , i agree that two folder can be two view client and server +respectively, but there should not be two views as such of 'Inbox' , one +more thing you have mentioned that the mail first arrives at server view and +than when fetched by client goes to client view, and the corresponding mail +at server view can be deleted , but this becomes pop3 mechanism, right!! +when multiple users are accessing the same account than this creates +problem, any ways this is not wat i am looking at, + +my problem is clear: +1. Two Inbox i want only one view, how to gain this +2. having two different mail account of same server, for example +test@abc.com, and rest@abc.com, user will configure both. My problem is +when the user switches between inbox of one to another there is a problem!! + +when user selects second accounts Inbox of server view, than the first mail +which was selected earlier come to second account. + +looking through the mails got to know login and password authentication is +passed to the server during first selection of test account s Inbox, than if +user selects rest account inbox , the request is sent to the server to +select the Inbox mails but since authentication is not sent , server +considers first accounts authentication and sends the response. + +now can any one tell me is this my problem with implementation if so, where +am i missing out?? + + - Hide quoted text - +On 4/24/06, MAYUR PATIL wrote: +> +> HI Lakshmi +> +> I think.. we can configure this way.. Actully one inbox folder is image of +> server, which means it will display the server side view of folder,much like +> IMAP view for your folders in server. This is just an view for server side +> so thats why i am calling it as IMAP view. Whereas other folder that you are +> seeing is the folder in your client device like pc. This can be called as +> POP3 folder view in your client. The POP3 is used as a protocol for the +> fetching all mails so if you observed that new mail first comes to your +> server view of Inbox folder. one pop client fetched it, it will be moved to +> your client folder inbox, I think after that server shud delete mail from +> his inbox folder although it may be possible that server is not deleting +> it.. this depends on setting.. Let me know comments for this.. +> +> +> Mayuresh +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095176.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095176.22807.mbox:2,S new file mode 100644 index 00000000..c8deec23 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095176.22807.mbox:2,S @@ -0,0 +1,67 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 13:56:29 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + + +Message-ID: <201006142256.29781.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 22:43:21 Mark Crispin wrote: +> The operation of moving messages from source to destination pipelines two +> operations in one of two ways: +> [a] for each message: +> [1] insert in destination +> [2] remove from source +> or +> [b] [1] insert all in destination +> [2] remove all from source +> +> If [a][1] fails, then [a][2] is not executed for that iteration. However, +> earlier iterations may have succeeded. If [a][2] fails, then the result +> is a copy for that iteration, but earlier iterations may have moved. +> +> If [b][1] fails, then [b][2] is not executed and the move operation fails. +> If [b][2] fails, then the result is a copy. +> +> Implementations [a] and [b] both create, for the first time in IMAP, a +> "partial success" result. The result from implementation [a] is far more +> complex and requires far more complex protocol +Bulls*it. +COPY (in Maildir) can fail partially (not all messages copied). EXPUNGE can +fail that way (not all messages expunged). It's all a matter of proper +implementation to not get a chance of a partial failure. + +> There's also the matter of whatever UIDPLUS results are returned. Since +> MOVE expunges from the source, then UIDPLUS results are either dangling +> (like COPYUID, but referring to source UIDs that no longer exist) or +> unassociated (like APPENDUID). This is unavoidable with any pipeline; but +> the status report gets particularly complex with implementation [a]. +> +> +> The whole point to the proposed MOVE command is not syntactic sugar, but +> rather to pretend that this pipeline doesn't really exist. Otherwise, it +> would just be a matter of fixing the RTTs of the pipeline by improving the +> pipelining mechanism, such as either a PIPELINE command or conditional +> execution. +You are forcing an opinion (on everyone) that this pipeline always exists AND +that MOVE command cannot be made atomic, and it's certainly not true. + +> Instead, what we have is a proposal that uniquely benefits certain +> databases (but NOT Maildir, since Maildir can use hard links) at the cost +> of substantial protocol complexity to support all the newly-created error +> cases. +You are creating those error cases, based on Your interpretations. I'm able +to think of an implementation (using Maildirs) in which MOVE command is either +full success or full failure, and it's fully atomic. You can't. + + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095176.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095176.22920.mbox:2,S new file mode 100644 index 00000000..c347ec92 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095176.22920.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From snowjn at aol.com Wed Mar 14 12:38:15 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: +References: <"07Mar12. 152936pst. 57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <45F83CCD.2050808@isode.com> <45F84311.3080906@aol.com> + +Message-ID: <45F84F27.6080202@aol.com> + + + +arnt@gulbrandsen.priv.no wrote: +> John Snow writes: +>> Sort of. In vfolder, the search criteria is stored to create a view +>> that is a subset of an existing mailbox. In that case, it can easily +>> be treated the same as any other mailbox. My hope is to expand that +>> beyond a single mailbox. +> +> Vfolder will do that by using Alexey's multimailbox search, at least +> that's the vague intention. +> +>> I think creating a server stored view is unnecessary. The extension +>> aware client can create the combined view on the fly. +> +> FWIW, vfolder is the way it so so that unextended clients see the +> data, too. The folder can be set up by an extended client or outside +> IMAP and accessed by anything. +> +> Arnt +That's fine, but what happens if you try to copy into a vfolder that +was created using multimailbox search. What underlying mailbox is the +true destination? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095176.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095176.23014.mbox:2,S new file mode 100644 index 00000000..5058adc8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095176.23014.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Apr 24 08:42:25 2006 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] about multiple imap account at client +In-Reply-To: +References: +Message-ID: + +I'm afraid that your questions have very little to do with the IMAP +protocol, and thus this list probably can not help you with your problems. + +Your questions seem to be about how to use Microsoft Outlook. I recommend +that you ask Microsoft for support. Also, you may find someone who can +help you in the comp.mail.imap newsgroup. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095177.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095177.22807.mbox:2,S new file mode 100644 index 00000000..21b4cc66 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095177.22807.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 14:09:56 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <915336234.3135.1276547291546.JavaMail.root@dogfood.zimbra.com> + +Message-ID: <201006142309.56688.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 22:54:14 Mark Crispin wrote: +> On Mon, 14 Jun 2010, Dan Karp wrote: +> > In addition, you could posit a store where the searchable message +> > content (for SEARCH BODY, etc.) is shared among all copies of a +> > message. In such a store, once a COPY was performed you'd end up +> > in a more expensive ref-counting mode for subsequent deletes of +> > copied messages, a mode avoided in the absence of a COPY op. +> +> That assumes that you care how many references there are to the message +> content, presumably for space reclamation when the last user is dropped. +> That isn't necessarily a valid assumption (e.g., not in CAstor). +> +> In effect, a database which requires separate instances of a message for +> each consumer of the message has all the disadvantages of both flat file +> and a filesystem directory, but none of the advantages of either. +A database that is ran on a cluster has the HUGE advantage of capability of +surviving really large loads and severe system failures. And a small +disadvantage of no real possibility of single-instantion-store. Think beyond +1000-user servers. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095177.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095177.22920.mbox:2,S new file mode 100644 index 00000000..1eab4c3f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095177.22920.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Mar 14 12:46:58 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F84F27.6080202@aol.com> +References: <"07Mar12. 152936pst. 57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <45F83CCD.2050808@isode.com> <45F84311.3080906@aol.com> + + <45F84F27.6080202@aol.com> +Message-ID: + +John Snow writes: +> That's fine, but what happens if you try to copy into a vfolder that +> was created using multimailbox search. What underlying mailbox is the +> true destination? + +In my implementation it is not possible to grant 'i' or 'p' for virtual +mailboxes, so the question doesn't arise. + +We decided to revisit the issue if/when someone complains. Hasn't happened yet. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095177.23014.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095177.23014.mbox:2,S new file mode 100644 index 00000000..38b8953c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095177.23014.mbox:2,S @@ -0,0 +1,17 @@ +MBOX-Line: From mayuresh.patil at gmail.com Mon Apr 24 22:08:18 2006 +To: imap-protocol@u.washington.edu +From: MAYUR PATIL +Date: Fri Jun 8 12:34:37 2018 +Subject: [Imap-protocol] SPAM control +Message-ID: <4f92b9010604242208h211aeb2s8d3d6f97494d31dd@mail.gmail.com> + +Hell, + +What do we can set the SPAM filter settings using the IMAP protocol? IMAP +defines the special filters for this or is this implementation detail? + +Thanks +Mayuresh +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095178.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095178.22807.mbox:2,S new file mode 100644 index 00000000..e80e2d76 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095178.22807.mbox:2,S @@ -0,0 +1,54 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 14:10:14 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006142216.41783.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142108.34481.witold.krecicki@firma.o2.pl> + + <201006142216.41783.witold.krecicki@firma.o2.pl> +Message-ID: + +On Mon, 14 Jun 2010, Witold Kr?cicki wrote: +> Have you ever offered them MOVE? + +Our customers are quite capable of speaking out and saying that they want +something. + +Nobody, and I do mean nobody, has ever said "oh, I wish that the move +command in my client did a single IMAP command." + +Nor have I heard any client implementor ask for a move command in IMAP +once they are made aware of the substantial error conditions that they +would have to recognize and implement in their client. It's so easy for a +server author (or protocol extension proposer) to lie and say that these +error conditions do not exist. + +> Or did you just replied that they're +> cocky and want to undo the 25-year history of IMAP? + +I could just as easily ask how you were paid to be a sock puppet. + +> I know that in Your UW-IMAP-based universe copy is 'basic', move is +> 'extended'. But it's not the general rule. + +That principle pre-exists UW-IMAP by several years. + +>> In other words, for the benefit of a poorly-designed database, we are +>> supposed to add substantial complexity to IMAP and break a guarantee that +>> is a fundamental part of IMAP?!? +> I don't want to break this guarantee, it's You who's stating that it's +> impossible to make MOVE atomic. I oppose every time. + +The only mail store that could implement MOVE atomically is a database +that was poorly-designed so that COPY is slow and MOVE is fast. + +It can not be atomic in flat files and especially not in Maildir. The +fact that it does not benefit Maildir destroys much of the claimed value. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095178.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095178.22920.mbox:2,S new file mode 100644 index 00000000..af38a29b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095178.22920.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From janssen at parc.com Fri Mar 16 13:36:32 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] what IMAP extensions to implement? +Message-ID: <07Mar16.123633pst."57996"@synergy1.parc.xerox.com> + +I'm looking for recommendations as to what extensions make sense to +implement in my server. Generally speaking, this is a mix of adding +true functionality and reasonably wide-spread client support. I've +already added IDLE and NAMESPACE; what else makes sense? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095179.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095179.22807.mbox:2,S new file mode 100644 index 00000000..8d95b06a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095179.22807.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 14:10:58 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006142309.56688.witold.krecicki@firma.o2.pl> +References: <915336234.3135.1276547291546.JavaMail.root@dogfood.zimbra.com> + + <201006142309.56688.witold.krecicki@firma.o2.pl> +Message-ID: + +On Mon, 14 Jun 2010, Witold Kr?cicki wrote: +> Think beyond +> 1000-user servers. + +I do 20,000,000 user servers. + +Next question? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095179.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095179.22920.mbox:2,S new file mode 100644 index 00000000..44b949fb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095179.22920.mbox:2,S @@ -0,0 +1,53 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Mar 16 16:29:37 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] what IMAP extensions to implement? +In-Reply-To: <07Mar16.123633pst."57996"@synergy1.parc.xerox.com> +References: <07Mar16.123633pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Fri, 16 Mar 2007, Bill Janssen wrote: +> I'm looking for recommendations as to what extensions make sense to +> implement in my server. Generally speaking, this is a mix of adding +> true functionality and reasonably wide-spread client support. I've +> already added IDLE and NAMESPACE; what else makes sense? + +Going through the current set of standards-track and approved +(SORT and THREAD are both blocked on i18n) extensions: + +must-have: LOGINDISABLED, STARTTLS + ;; requirement of the specification + +should-have: MULTIAPPEND, SORT, THREAD, UIDPLUS + ;; some clients are heavily impacted if absent + +ought-to-have: BINARY, IDLE, UNSELECT + ;; some clients are impacted if absent + +nice-to-have: CATENATE, CHILDREN, CONDSTORE, ESEARCH, LITERAL+, + NAMESPACE, SASL-IR, URLAUTH + ;; some clients will benefit if present; note that CATENATE and + ;; URLAUTH are part of the mandatory "trio" for Lemonade + +if meaningful: ACL, LOGIN-REFERRALS, MAILBOX-REFERRALS, QUOTA + ;; may not be meaningful on your server + +your choice: ID + ;; diagnostic purposes + +Some people may disagree with me on some of these boundaries; consider +them to be fuzzy. I am aware of some clients which would consider some of +the "nice-to-have" extensions important enough to kick up into a higher +category. + +The bottom line is that very few extensions stand out as being worthless +with the possible exception of the two referral extensions, which seem to +have fallen by the wayside. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095180.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095180.22807.mbox:2,S new file mode 100644 index 00000000..fd709ce9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095180.22807.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 14:15:59 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142216.41783.witold.krecicki@firma.o2.pl> + +Message-ID: <201006142315.59072.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 23:10:14 Mark Crispin wrote: +> The only mail store that could implement MOVE atomically is a database +> that was poorly-designed so that COPY is slow and MOVE is fast. +> +> It can not be atomic in flat files and especially not in Maildir. The +> fact that it does not benefit Maildir destroys much of the claimed value. +Prove it. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095180.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095180.22920.mbox:2,S new file mode 100644 index 00000000..b3653e8f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095180.22920.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From dave at cridland.net Fri Mar 16 17:01:20 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] what IMAP extensions to implement? +In-Reply-To: +References: <07Mar16.123633pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <14682.1174089680.264752@invsysm1> + +On Fri Mar 16 23:29:37 2007, Mark Crispin wrote: +> On Fri, 16 Mar 2007, Bill Janssen wrote: +>> I'm looking for recommendations as to what extensions make sense to +>> implement in my server. Generally speaking, this is a mix of +>> adding +>> true functionality and reasonably wide-spread client support. I've +>> already added IDLE and NAMESPACE; what else makes sense? +> +> Going through the current set of standards-track and approved (SORT +> and THREAD are both blocked on i18n) extensions: +> +> must-have: LOGINDISABLED, STARTTLS +> ;; requirement of the specification +> +> should-have: MULTIAPPEND, SORT, THREAD, UIDPLUS +> ;; some clients are heavily impacted if absent +> +> ought-to-have: BINARY, IDLE, UNSELECT +> ;; some clients are impacted if absent +> +> nice-to-have: CATENATE, CHILDREN, CONDSTORE, ESEARCH, LITERAL+, +> NAMESPACE, SASL-IR, URLAUTH +> ;; some clients will benefit if present; note that CATENATE and +> ;; URLAUTH are part of the mandatory "trio" for Lemonade +> +> +I'd push NAMESPACE upward - clients using NAMESPACE at all are +sometimes heavily impacted if this isn't available, and many will use +it for some form of autoconfiguration. + + +> if meaningful: ACL, LOGIN-REFERRALS, MAILBOX-REFERRALS, QUOTA +> ;; may not be meaningful on your server +> +> +I'd put both ACL and QUOTA as nice-to-have - clients such as +Thunderbird support ACL, and QUOTA is fairly common. That said, both +are most often used in a read-only manner, and it's entirely legal to +implement both on the server in a read-only way. Annoyingly, +Thunderbird will generate errors if it cannot perform GETACL, so for +ACL, you need both MYRIGHTS and GETACL. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095181.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095181.22807.mbox:2,S new file mode 100644 index 00000000..b2e69035 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095181.22807.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 14:30:15 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142216.41783.witold.krecicki@firma.o2.pl> + +Message-ID: <201006142330.15547.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 23:10:14 Mark Crispin wrote: +> On Mon, 14 Jun 2010, Witold Kr?cicki wrote: +> Nor have I heard any client implementor ask for a move command in IMAP +> once they are made aware of the substantial error conditions that they +> would have to recognize and implement in their client. It's so easy for a +> server author (or protocol extension proposer) to lie and say that these +> error conditions do not exist. +Then why it exists in Tb? + +> The only mail store that could implement MOVE atomically is a database +> that was poorly-designed so that COPY is slow and MOVE is fast. +So the correct design of a database is that MOVE is slow and COPY is fast? +iiinteresting.... +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095181.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095181.22920.mbox:2,S new file mode 100644 index 00000000..59e7b0e0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095181.22920.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From janssen at parc.com Fri Mar 16 17:02:09 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] what IMAP extensions to implement? +In-Reply-To: +References: <07Mar16.123633pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar16.160213pst."57996"@synergy1.parc.xerox.com> + +Thanks; nice list. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095182.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095182.22807.mbox:2,S new file mode 100644 index 00000000..9c4755e3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095182.22807.mbox:2,S @@ -0,0 +1,73 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 14:29:05 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <201006142256.29781.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + + + <201006142256.29781.witold.krecicki@firma.o2.pl> +Message-ID: + +On Mon, 14 Jun 2010, Witold Kr?cicki wrote: +> COPY (in Maildir) can fail partially (not all messages copied). + +A raw Maildir implementation without extensions has that flaw, yes. + +That's why IMAP servers don't use raw Maildir. Raw Maildir simply does +not have the semantics to support IMAP. IMAP servers that offer Maildir +use some extension, typically an index, that is not in the Maildir +specification. + +That index solves the COPY problem. The MOVE problem, however, is quite a +bit more complex. + +> EXPUNGE can +> fail that way (not all messages expunged). + +Wrong. EXPUNGE is defined so that any operation (including no messages +expunged) is a success. + +What EXPUNGE does, or does not do, is defined to be completely +non-deterministic by the client in advance. Otherwise, there would be no +need for the untagged EXPUNGE response. + +> It's all a matter of proper +> implementation to not get a chance of a partial failure. + +You can't do it with flat files. + +You can't do it with Maildir. + +You can do it with the right type of database. But then you can fix the +database so that it does not have a performance proble with COPY. + +> You are forcing an opinion (on everyone) that this pipeline always exists AND +> that MOVE command cannot be made atomic, and it's certainly not true. + +It can not be made atomic with flat files or Maildir. Both require +semantics from the host filesystem that do not exist. + +It can be done with a database architecture that supports the needed +semantics. But by the same argument the database could be designed so +that move becomes pointless. + +> You are creating those error cases, based on Your interpretations. I'm able +> to think of an implementation (using Maildirs) in which MOVE command is either +> full success or full failure, and it's fully atomic. You can't. + +Either you are lying, or you are so inexperienced that you do not yet +understand the types of timing races that are possible in filesystems. + +The only way to do it in Maildir is to use a database that has +simultaneous index update. But then it is not Maildir; it is a database +that happens to have files that look like a Maildir. And any access of +the Maildir as a Maildir will encounter the races and potentially +invalidate the database. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095182.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095182.22920.mbox:2,S new file mode 100644 index 00000000..f85e6b0b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095182.22920.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From janssen at parc.com Fri Mar 16 19:49:51 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] what does UIDNOTSTICKY really mean? +In-Reply-To: +References: <07Mar16.123633pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar16.184958pst."57996"@synergy1.parc.xerox.com> + +I'm a bit confused on the UIDPLUS tag UIDNOTSTICKY. RFC 4315 says, + + The selected mailbox is supported by a mail store that does not + support persistent UIDs; that is, UIDVALIDITY will be different + each time the mailbox is selected. Consequently, APPEND or COPY + to this mailbox will not return an APPENDUID or COPYUID response + code. + +My system will persist UIDs until the the server is re-booted for some +reason; that is, UIDVALIDITY may be different each time a mailbox is +selected, though it's not likely to be. Depends on the frequency of +selection. So UIDs tend to be persistent, but are not guaranteed to be. + +Should I send UIDNOTSTICKY, or not? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095183.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095183.22807.mbox:2,S new file mode 100644 index 00000000..d6284b55 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095183.22807.mbox:2,S @@ -0,0 +1,79 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 15:12:43 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142256.29781.witold.krecicki@firma.o2.pl> + +Message-ID: <201006150012.43889.witold.krecicki@firma.o2.pl> + +On Monday 14 of June 2010 23:29:05 Mark Crispin wrote: +>> EXPUNGE can +>> fail that way (not all messages expunged). +> +>Wrong. EXPUNGE is defined so that any operation (including no messages +>expunged) is a success. + + The EXPUNGE command permanently removes all messages that have the + \Deleted flag set from the currently selected mailbox. + +For me 'all messages that have the \Deleted flag set' means '*all* messages +that have the \Deleted flag set'. So expunging just some of the messages is in +fact a partial failure that is reported as a success. + +>What EXPUNGE does, or does not do, is defined to be completely +>non-deterministic by the client in advance. Otherwise, there would be no +>need for the untagged EXPUNGE response. +The same applies for MOVE implemented by rename(). Untagged EXPUNGE responses +for all moved mails, no responses for not moved mails. The same kind of +'partial failure' that is existing with EXPUNGE. + +> > It's all a matter of proper +> > implementation to not get a chance of a partial failure. +> +> You can't do it with flat files. +> You can't do it with Maildir. +lie + +> You can do it with the right type of database. But then you can fix the +> database so that it does not have a performance proble with COPY. +lie + +> > You are forcing an opinion (on everyone) that this pipeline always exists +> > AND that MOVE command cannot be made atomic, and it's certainly not +> > true. +> +> It can not be made atomic with flat files or Maildir. Both require +> semantics from the host filesystem that do not exist. +lie + +> It can be done with a database architecture that supports the needed +> semantics. But by the same argument the database could be designed so +> that move becomes pointless. +> +> > You are creating those error cases, based on Your interpretations. I'm +> > able to think of an implementation (using Maildirs) in which MOVE +> > command is either full success or full failure, and it's fully atomic. +> > You can't. +> +> Either you are lying, or you are so inexperienced that you do not yet +> understand the types of timing races that are possible in filesystems. +Show me those races, you are using claims without any proper argumentation or +real life examples. + +> The only way to do it in Maildir is to use a database that has +> simultaneous index update. But then it is not Maildir; it is a database +> that happens to have files that look like a Maildir. And any access of +> the Maildir as a Maildir will encounter the races and potentially +> invalidate the database. +So how can it be that it is working for some people? + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095183.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095183.22920.mbox:2,S new file mode 100644 index 00000000..f3162097 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095183.22920.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Sat Mar 17 10:20:54 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] what does UIDNOTSTICKY really mean? +In-Reply-To: <"07Mar16. 184958pst. 57996"@synergy1.parc.xerox.com> +References: <"07Mar16. 123633pst. 57996"@synergy1.parc.xerox.com> + + <"07Mar16. 184958pst. 57996"@synergy1.parc.xerox.com> +Message-ID: + +Bill Janssen writes: +> My system will persist UIDs until the the server is re-booted for some +> reason; that is, UIDVALIDITY may be different each time a mailbox is +> selected, though it's not likely to be. Depends on the frequency of +> selection. So UIDs tend to be persistent, but are not guaranteed to +> be. +> +> Should I send UIDNOTSTICKY, or not? + +IMO you should not. UIDNOTSTICKY is a hint to clients that caching is +pointless, and in your case caching is useful (although not 100% +useful). + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095184.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095184.22807.mbox:2,S new file mode 100644 index 00000000..9c3b4aac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095184.22807.mbox:2,S @@ -0,0 +1,66 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 15:28:30 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006142330.15547.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142216.41783.witold.krecicki@firma.o2.pl> + + <201006142330.15547.witold.krecicki@firma.o2.pl> +Message-ID: + +On Mon, 14 Jun 2010, Witold Kr?cicki wrote: +> Then why it exists in Tb? + +Thunderbird is the descendant of Netscape Messenger. Messenger started +when Netscape was an independent company. AOL bought Netscape in 1998; +and the Mozilla Organization began in 1998 under AOL's aegis and largely +staffed with Netscape/AOL employees. AOL decided to split off Mozilla in +2003, and transferred intellectual property to the newly-formed Mozilla +Foundation (along with $2 million over two years). + +It is not surprising that Thunderbird would inherit from Messenger. AOL +transferred IP, and thus the Thunderbird developers were able to use the +Messenger codebase. + +I do not know know how much of the Messenger codebase remains in +Thunderbird; certainly a great deal of the current code is new. + +Nevertheless, Thunderbird's pedigree disqualifies it as an independent +implementation that just happened to find out about AOL's extension and +say "ooh, we want this." + +Whether or not the current Thunderbird developers would add such a thing +now is something that we can only speculate. It may never have been +called to their attention. + +That code path is a vulnerability in Thunderbird. It is very easy for a +server to abolish Thunderbird as a client via an bad implementation. It +happens all the time, and not just in the IMAP world. I won't name the +guilty; but surely you have heard of "embrace, extend, destroy". + +It isn't a question of "if". There will be such problems. We know of the +unintentional problems caused by the temptation to misimplement is so +tempting in a Maildir based store. That has been discussed to death. + +In a perfect world, where everybody reads all the requirements of +specifications, strictly follows all the syntax, and never thinks about +something that would undermine a competitor's product, we would not have +to worry about such things. + +>> The only mail store that could implement MOVE atomically is a database +>> that was poorly-designed so that COPY is slow and MOVE is fast. +> So the correct design of a database is that MOVE is slow and COPY is fast? +> iiinteresting.... + +No. + +The correct design of a database is that COPY is fast and MOVE is nearly +as fast or even equal. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095184.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095184.22920.mbox:2,S new file mode 100644 index 00000000..a1873b05 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095184.22920.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Sat Mar 17 21:23:12 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] what does UIDNOTSTICKY really mean? +In-Reply-To: <07Mar16.184958pst."57996"@synergy1.parc.xerox.com> +References: <07Mar16.123633pst."57996"@synergy1.parc.xerox.com> + + <07Mar16.184958pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Fri, 16 Mar 2007, Bill Janssen wrote: +> My system will persist UIDs until the the server is re-booted for some +> reason; that is, UIDVALIDITY may be different each time a mailbox is +> selected, though it's not likely to be. Depends on the frequency of +> selection. So UIDs tend to be persistent, but are not guaranteed to be. +> Should I send UIDNOTSTICKY, or not? + +You should not set UIDNOTSTICKY. UIDNOTSTICKY is only when the +UIDVALIDITY is never persistent. + +HOWEVER!! As a general "quality of implementation" issue, UIDVALIDITY +SHOULD always be persistent for a mailbox. The ONLY time that UIDVALIDITY +should change is if a mailbox is deleted and a new mailbox with the same +name is created. + +UIDNOTSTICKY is an admission by the server that either the server or the +mail store is of inferior quality that can not comply with the design +requirements of IMAP UIDs. Not announcing UIDNOTSTICKY, but changing the +UIDVALIDITY on a mailbox is an admission by the server that either it or +the mail store has an defect that caused it to fail to comply with the +design requirements of IMAP UIDs. + +Now, before people start jumping on me for saying such negative things +about servers...let's note that the new mix format in UW imapd is the +FIRST and ONLY mail store that is NOT inferior/defective by the above +criteria. + +Specifically, the mh, mtx, tenex, and arbitrary file formats are all +"inferior", and the mbx, mmdf, mx, and traditional UNIX formats are all +"defective". The problems in those formats are due to legacy issues. +One of the design goals of the mix format was to break free of legacy and +not have those problems. + +Put another way, UW imapd isn't "inferior"/"defective", but most of its +supported mail stores (all but the newest mix format) are. I am not happy +about this; nor that it took me so long to come up with a mail store that +didn't have this problem. + +Any "inferior" or "defective" server and/or mail store causes considerable +trouble to clients which depend upon UIDs for synchronization. Only pure +online clients such as Pine/Alpine will be relatively unscathed (and even +Pine/Alpine uses UIDs for reply drafts to note the message being replied). + +To be fair to UW imapd, the "defective" mail stores (most notably mbx and +traditional UNIX) only show their defect under fault conditions; that is, +something unexpected happened to screw things up. Sadly, such faults do +occur, and far more often than I (or my users!) like. [Hence another +motivation for mix format...] + +Thus, unless you have legacy issues constraining you, you should exert +heroic efforts to try to avoid inflicting yet another "inferior" or +"defective" server and/or mail store on the world. Yes, the +specifications leave loopholes to allow it; but it should be considered +embarassing to use those loopholes. It's not "alright" to use those +loopholes if you can avoid it. + +Please try to have full sticky UIDs in your server and mail store. + +[Do what I say, not what I do....] + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095185.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095185.22807.mbox:2,S new file mode 100644 index 00000000..ec13a49e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095185.22807.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 15:33:17 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142330.15547.witold.krecicki@firma.o2.pl> + +Message-ID: <201006150033.17670.witold.krecicki@firma.o2.pl> + +On Tuesday 15 of June 2010 00:28:30 Mark Crispin wrote: +> No. +> +> The correct design of a database is that COPY is fast and MOVE is nearly +> as fast or even equal. +So you state that (in a database language) INSERT ... SELECT should be faster +than UPDATE? Do you know ANY database that works that way? +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095185.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095185.22920.mbox:2,S new file mode 100644 index 00000000..7e5d79df --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095185.22920.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From aspineux at gmail.com Tue Mar 20 07:17:27 2007 +To: imap-protocol@u.washington.edu +From: Alain Spineux +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +Message-ID: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> + +Hello + +I'm suffering using the little bogus python imaplib, that don't handle well +literals. +I would like to update the code, but need enlightened advices. + +In the following questions I'm not to much interested by AUTH, LOGIN, FETCH +or APPEND but more about LIST, SEARCH, SETACL ... + +I would like to better understand the literal usage : + +When does a _server_ OR a _client_ use a literals ? +When their is no other way (when does quoted string are not enough) ? +What are the usual cases ? (I looked cyrus and found constraint about +size>1024 or use of special char like "%" ) + +What is the correct usage when mixing literal and string, +does I need to insert a space between the end of a literal ? + +For example for a setacl mailbox username lrswipcda, where I mix strings +ands literals + +(Here .. means CRLF) + +C: 000001 SETACL "mailbox" {8} +S: wait for server "continuation response" +C: username..lrswipcda.. + +Best regards. + + +-- +Alain Spineux +aspineux gmail com +May the sources be with you +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095186.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095186.22807.mbox:2,S new file mode 100644 index 00000000..26e48564 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095186.22807.mbox:2,S @@ -0,0 +1,85 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 15:52:21 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <201006150012.43889.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142256.29781.witold.krecicki@firma.o2.pl> + + <201006150012.43889.witold.krecicki@firma.o2.pl> +Message-ID: + +On Tue, 15 Jun 2010, Witold Kr?cicki wrote: +> For me 'all messages that have the \Deleted flag set' means '*all* messages +> that have the \Deleted flag set'. So expunging just some of the messages is in +> fact a partial failure that is reported as a success. + +No. You still do not understand. There is no such thing as "partial +failure" in EXPUNGE. You are confusing "non-deterministic success" with +"partial failure". + +There are many reasons why the result of EXPUNGE may be different from the +client's expectation. The client may not have expunge rights. Another +client may delete some messages, or undelete other messages. + +EXPUNGE is NOT documented to expunge what the client thinks are deleted +messages. EXPUNGE expunges what the server thinks are deleted messages, +IF the server sees fit to do so. The server then says what it did. And +this is a success. + +Not even UID EXPUNGE expunges what the client thinks are deleted messages. +UID EXPUNGE merely limits the scope of expunging to certain messages. +Nothing prevents the server from refusing to expunge some messages; nor +even from expunging messages that are outside of the scope of UID EXPUNGE +(e.g., some other session expunged the affected messages). + +These are not failures, nor "partial" success. They are the way that +EXPUNGE works; and this is a complete success. + +MOVE, on the other hand, would go into a class of commands that advertise +client-determinate result. You are proposing adding a completely new +class of command to IMAP. + +> The same applies for MOVE implemented by rename(). Untagged EXPUNGE responses +> for all moved mails, no responses for not moved mails. The same kind of +> 'partial failure' that is existing with EXPUNGE. + +That is not an atomic MOVE. That is a non-atomic move. + +Nor does it prevent the filesystem timing races, particularly when the +source and target are on different filesystems. Depending upon the +implementation, the timing race results in one of: + duplicate on both source and target + vanish from both source and target + +> lie + +The burden of proof is on you. + +>> Either you are lying, or you are so inexperienced that you do not yet +>> understand the types of timing races that are possible in filesystems. +> Show me those races, you are using claims without any proper argumentation or +> real life examples. + +My rates for consulting services start at $10,000. + +The burden of proof is on you to demonstrate that there are no races. + +>> The only way to do it in Maildir is to use a database that has +>> simultaneous index update. But then it is not Maildir; it is a database +>> that happens to have files that look like a Maildir. And any access of +>> the Maildir as a Maildir will encounter the races and potentially +>> invalidate the database. +> So how can it be that it is working for some people? + +The two major Maildir based servers use private extensions to Maildir to +work around the deficiencies which make raw Maildir unsuitable for IMAP. +These extensions do not, and were not intended to, provide an atomic move +operation. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095186.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095186.22920.mbox:2,S new file mode 100644 index 00000000..17bbd460 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095186.22920.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From dave at cridland.net Tue Mar 20 09:41:18 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> +Message-ID: <1648.1174408878.724182@Nokia-N800-51> + +> Hello +> I'm suffering using the little bogus python imaplib, that don't +> handle well +> literals. +> I would like to update the code, but need enlightened advices. +You could take a look at my Python library, at +http://trac.dave.cridland.net/ +It might well save you a lot of work. +> In the following questions I'm not to much interested by AUTH, +> LOGIN, FETCH +> or APPEND but more about LIST, SEARCH, SETACL ... +> I would like to better understand the literal usage : +> When does a _server_ OR a _client_ use a literals ? +> When their is no other way (when does quoted string are not enough) +> ? +> What are the usual cases ? (I looked cyrus and found constraint +> about +> size>1024 or use of special char like "%" ) +Either when they have to, or can. Quoted strings must be used in a +couple of places, such as Append commands for the date. +> What is the correct usage when mixing literal and string, +> does I need to insert a space between the end of a literal ? +There's usually a space, yes. +> For example for a setacl mailbox username lrswipcda, where I mix +> strings +> ands literals +> (Here .. means CRLF) +> C: 000001 SETACL "mailbox" {8} +> S: wait for server "continuation response" +> C: username..lrswipcda.. +No cr lf should be there. Just a space. +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095187.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095187.22807.mbox:2,S new file mode 100644 index 00000000..78a005fd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095187.22807.mbox:2,S @@ -0,0 +1,86 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 16:03:52 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + +Message-ID: <201006150103.52513.witold.krecicki@firma.o2.pl> + +On Tuesday 15 of June 2010 00:52:21 Mark Crispin wrote: +> On Tue, 15 Jun 2010, Witold Kr?cicki wrote: +> > For me 'all messages that have the \Deleted flag set' means '*all* +> > messages that have the \Deleted flag set'. So expunging just some of the +> > messages is in fact a partial failure that is reported as a success. +> +> No. You still do not understand. There is no such thing as "partial +> failure" in EXPUNGE. You are confusing "non-deterministic success" with +> "partial failure". +> +> There are many reasons why the result of EXPUNGE may be different from the +> client's expectation. The client may not have expunge rights. Another +> client may delete some messages, or undelete other messages. +> +> EXPUNGE is NOT documented to expunge what the client thinks are deleted +> messages. EXPUNGE expunges what the server thinks are deleted messages, +> IF the server sees fit to do so. The server then says what it did. And +> this is a success. +> +> Not even UID EXPUNGE expunges what the client thinks are deleted messages. +> UID EXPUNGE merely limits the scope of expunging to certain messages. +> Nothing prevents the server from refusing to expunge some messages; nor +> even from expunging messages that are outside of the scope of UID EXPUNGE +> (e.g., some other session expunged the affected messages). +> +> These are not failures, nor "partial" success. They are the way that +> EXPUNGE works; and this is a complete success. +Then the specification (that YOU wrote) is unclear about that. + +> MOVE, on the other hand, would go into a class of commands that advertise +> client-determinate result. You are proposing adding a completely new +> class of command to IMAP. +The specification of MOVE is (in this matter) the same as EXPUNGE. I can make +it clearer though. + +> > The same applies for MOVE implemented by rename(). Untagged EXPUNGE +> > responses for all moved mails, no responses for not moved mails. The +> > same kind of 'partial failure' that is existing with EXPUNGE. +> +> That is not an atomic MOVE. That is a non-atomic move. +Then EXPUNGE is not atomic, as You've stated earlier. + +> Nor does it prevent the filesystem timing races, particularly when the +> source and target are on different filesystems. Depending upon the +> implementation, the timing race results in one of: +> duplicate on both source and target +> vanish from both source and target +And what about the same filesystem? + +> > lie +> +> The burden of proof is on you. +You're stating claims without proper arguments so I don't care. +> >> Either you are lying, or you are so inexperienced that you do not yet +> >> understand the types of timing races that are possible in filesystems. +> > +> > Show me those races, you are using claims without any proper +> > argumentation or real life examples. +> +> My rates for consulting services start at $10,000. +> +> The burden of proof is on you to demonstrate that there are no races. +YOU are claiming that there are races so prove that there are. + +I claim that there are pink elephants living on the dark side of Pluto that +will prevent those races. The burden of proof is on you to demonstrate that +there are no such elephants. + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095187.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095187.22920.mbox:2,S new file mode 100644 index 00000000..23d86693 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095187.22920.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Tue Mar 20 09:04:05 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> +Message-ID: + +On Tue, 20 Mar 2007, Alain Spineux wrote: +> When does a _server_ OR a _client_ use a literals ? + +An implementation will use literals if it must; that is, the string can +not be represented as atom or quoted. + +An implementation is likely to do so when it is uncomfortable with the +contents; for example, \ was an ordinary character quoted strings in IMAP2 +and thus implementations that seek to be IMAP2 compatible will avoid using +quoted strings that have \ quoting. Another reason for discomfort is if +the string is long; parsing for the trailing quote is more work than +handling the literal. + +Or, it can use literals just because it wants to. + +> What is the correct usage when mixing literal and string, +> does I need to insert a space between the end of a literal ? + +This is defined by the formal syntax. It is incorrect to ask your +question, because that assumes a single answer. The formal syntax defines +what delimiter appears after the literal. + +As a general rule, one (and only one) space separates tokens in IMAP. +However, that is not associated with the token, but rather the syntax. If +the token is the last item of a list, there would be a close parenthesis +instead of a space after it. + +> For example for a setacl mailbox username lrswipcda, where I mix strings +> ands literals +> +> (Here .. means CRLF) +> +> C: 000001 SETACL "mailbox" {8} +> S: wait for server "continuation response" +> C: username..lrswipcda.. + +That is defined by the syntax of SETACL. In that case, yes there is a +SPACE and not a CRLF. + +Again, please use the formal syntax and not code rules into your handling +of literals. After a literal is either a delimiter or end of string; that +is all that the literal handler should know. A higher level rule that +handles the syntax of the command will deal with what the delimiter is. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095188.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095188.22807.mbox:2,S new file mode 100644 index 00000000..5244a98a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095188.22807.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Mon Jun 14 16:19:02 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + +Message-ID: <201006150119.02426.witold.krecicki@firma.o2.pl> + +The fact that you're changing the "game rules" ('particularly when the source +and target are on different filesystems' - without any proofs that it doesn't +work the way expected (eg. as EXPUNGE) on the same filesystem), creating +unproven claims ('The burden of proof is on you.') and using the fact that you +are oh-so-great ('My rates for consulting services start at $10,000.' - now +call me cocky) means that you have no more constructive input into this draft. +So, unless you provide some *constructive* criticism, I will not continue this +conversation because it does not lead anywhere. +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095188.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095188.22920.mbox:2,S new file mode 100644 index 00000000..bb4c33a8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095188.22920.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From janssen at parc.com Tue Mar 20 12:30:26 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> + +Message-ID: <07Mar20.113032pst."57996"@synergy1.parc.xerox.com> + +> As a general rule, one (and only one) space separates tokens in IMAP. + +In my server implementation, I tried to follow the old rule of "be +liberal in what you accept, and strict in what you provide." So +though arguments to IMAP commands are strictly speaking separated by +exactly one space, I accept any run of whitespace in place of that +single space. I'm speaking only of top-level arguments to a command, +of course. + +Bill + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095189.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095189.22807.mbox:2,S new file mode 100644 index 00000000..001c4527 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095189.22807.mbox:2,S @@ -0,0 +1,105 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 16:44:53 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <201006150103.52513.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + + <201006150103.52513.witold.krecicki@firma.o2.pl> +Message-ID: + +On Tue, 15 Jun 2010, Witold Kr?cicki wrote: +> Then the specification (that YOU wrote) is unclear about that. + +The specification is quite clear that the server expunges what it sees as +being deleted, NOT what the client thinks is deleted. If it expunged +client-deterministic messages, it would take an argument. + +>> MOVE, on the other hand, would go into a class of commands that advertise +>> client-determinate result. You are proposing adding a completely new +>> class of command to IMAP. +> The specification of MOVE is (in this matter) the same as EXPUNGE. I can make +> it clearer though. + +No. MOVE takes a message set argument. That makes its behavior +client-deterministic. + +You are proposing adding a command in the client-deterministic set by its +syntax, yet implementing it as a non-deterministic command. This is a +completely new class of command. + +>>> The same applies for MOVE implemented by rename(). Untagged EXPUNGE +>>> responses for all moved mails, no responses for not moved mails. The +>>> same kind of 'partial failure' that is existing with EXPUNGE. +>> That is not an atomic MOVE. That is a non-atomic move. +> Then EXPUNGE is not atomic, as You've stated earlier. + +There is no meaning to "atomic" vs. "non-atomic" in EXPUNGE. + +Each untagged EXPUNGE response has immediate impact, and nothing prevents +other responses from being interspersed. For example: + * 5 EXISTS + * 2 EXPUNGE + * 3 FETCH FLAGS (\Seen) + * 2 EXPUNGE +tells us that there are 3 messages, and that message 2 has the \Seen flag. + +COPY, on the other hand, is atomic; with all-or-none effect. One of the +very first changes post-IMAP2 was to abolish the untagged COPY response. +Client authors at the time hated that response and the possibility of +partial success. All contemporary implementations were either atomic +already or were fixed to be atomic. + +If you wanted non-atomic COPY, the time to have spoken up in defense of it +was c. 1992. Hop into your time machine. + +>> Nor does it prevent the filesystem timing races, particularly when the +>> source and target are on different filesystems. Depending upon the +>> implementation, the timing race results in one of: +>> duplicate on both source and target +>> vanish from both source and target +> And what about the same filesystem? + +Same thing. + +Take a look at how rename() is actually implemented. Journaling and the +buffer cache covers up a good deal of it these days, but the race still +exists. If it didn't, there would never be a need for fsck. + +What may be confusing you is the fact that locking in the kernel prevents +most user-level races. But that only holds for a single file. + +Those locks aren't always effective. Unlike link(), the target of +rename() can exist. + +NFS adds further complications; yet a big advertising point for Maildir is +that it purports to be NFS-safe. NFS is non-atomic on several operations +that are atomic on most local filesystems, including some surprising ones. +Those differences ARE application-visible. + +>> The burden of proof is on you. +> You're stating claims without proper arguments so I don't care. + +This is not philosophy or law. The thing that matters is who is right. +Presentation does not count. + +>> The burden of proof is on you to demonstrate that there are no races. +> YOU are claiming that there are races so prove that there are. + +I don't have to prove anything. + +You want the change. You have to prove that the change is not harmful. + +If, and when, you offer what you claim to be proof, you then have to allow +it to be tested. So far, you have offered nothing that can be tested. + +Where is the source code that purports to demonstrate atomic move of +multiple messages in Maildir? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095189.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095189.22920.mbox:2,S new file mode 100644 index 00000000..4b0ee85e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095189.22920.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 20 12:42:23 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: <07Mar20.113032pst."57996"@synergy1.parc.xerox.com> +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> + + <07Mar20.113032pst."57996"@synergy1.parc.xerox.com> +Message-ID: <20070320123924.I8455@orthanc.ca> + +> In my server implementation, I tried to follow the old rule of "be +> liberal in what you accept, and strict in what you provide." + +That "rule" meant: when presented with garbage input, the receiver should +not crash, explode, or otherwise take down the rest of the network. It +does not, and it never did, mean "violate the published protocol +specification at your whim." + +All you are doing is contributing to non-interoperability between IMAP +clients and servers. Please don't do that. + +> I accept any run of whitespace in place of that +> single space. + +Strictly speaking, what you have is not an IMAP server. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095190.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095190.22807.mbox:2,S new file mode 100644 index 00000000..f1f7353b --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095190.22807.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 16:52:22 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <201006150119.02426.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + + <201006150119.02426.witold.krecicki@firma.o2.pl> +Message-ID: + +On Tue, 15 Jun 2010, Witold Kr?cicki wrote: +> The fact that you're changing the "game rules" + +I am pointing out all the flaws in your claims shotgun fashion. I only +need to hit with one pellet, and I have lots of them. + +> So, unless you provide some *constructive* criticism, I will not continue this +> conversation because it does not lead anywhere. + +I would be happy to have you go quiet. You have wasted a considerable +amount of my time. + +That doesn't mean that you will have smooth sailing for your draft. I +will file objections to its publication. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. diff --git a/demo/ermis-f/imap-protocol/cur/1600095190.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095190.22920.mbox:2,S new file mode 100644 index 00000000..62f26c6e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095190.22920.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From janssen at parc.com Tue Mar 20 12:48:46 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +Message-ID: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + +I'm intrigued by the charts of email client capabilities on Wikipedia +(http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients). You'll +notice that almost all the clients claim to support IMAP4 (even the +ones which don't support STARTTLS, like Outlook :-). + +There's a column in the Wikipedia chart labelled "Database, folders, +and customization" which purports to show which clients use IMAP +search. I'm interested in knowing more about a fairly narrow topic: +which clients use IMAP search, and how they use it. Is there such a +chart? Or listing? I'd be happy to put one together if folks want to +mail me contributions. + +In fact, I'd like to make a version of this chart which calls out more +specifically IMAP features and usage, so that folks who want to use +IMAP mail services can have a better idea of which clients will be +most useful to them. What should those features be? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095191.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095191.22807.mbox:2,S new file mode 100644 index 00000000..e9aa159f --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095191.22807.mbox:2,S @@ -0,0 +1,133 @@ +MBOX-Line: From snowjn at aol.com Mon Jun 14 17:10:16 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> <201006150012.43889.witold.krecicki@firma.o2.pl> <201006150103.52513.witold.krecicki@firma.o2.pl> + +Message-ID: <4C16C4E8.7010008@aol.com> + + + +Mark Crispin wrote: +> On Tue, 15 Jun 2010, Witold Kr?cicki wrote: +>> Then the specification (that YOU wrote) is unclear about that. +> +> The specification is quite clear that the server expunges what it sees as +> being deleted, NOT what the client thinks is deleted. If it expunged +> client-deterministic messages, it would take an argument. +> +>>> MOVE, on the other hand, would go into a class of commands that +>>> advertise +>>> client-determinate result. You are proposing adding a completely new +>>> class of command to IMAP. +>> The specification of MOVE is (in this matter) the same as EXPUNGE. I +>> can make +>> it clearer though. +> +> No. MOVE takes a message set argument. That makes its behavior +> client-deterministic. +How is that different than a UID expunge? A client specifies which +specific message it +wants expunged. You said earlier that the Server can still decide not +to expunge it, for +various reasons. Why doesn't a move have the same option? As long as +the server +reports the results of the move command, as suggested earlier by Stuart, +then no matter +the outcome of the copy, the client and server would be in sync. + +> +> You are proposing adding a command in the client-deterministic set by its +> syntax, yet implementing it as a non-deterministic command. This is a +> completely new class of command. +> +>>>> The same applies for MOVE implemented by rename(). Untagged EXPUNGE +>>>> responses for all moved mails, no responses for not moved mails. The +>>>> same kind of 'partial failure' that is existing with EXPUNGE. +>>> That is not an atomic MOVE. That is a non-atomic move. +>> Then EXPUNGE is not atomic, as You've stated earlier. +> +> There is no meaning to "atomic" vs. "non-atomic" in EXPUNGE. +> +> Each untagged EXPUNGE response has immediate impact, and nothing prevents +> other responses from being interspersed. For example: +> * 5 EXISTS +> * 2 EXPUNGE +> * 3 FETCH FLAGS (\Seen) +> * 2 EXPUNGE +> tells us that there are 3 messages, and that message 2 has the \Seen +> flag. +> +> COPY, on the other hand, is atomic; with all-or-none effect. One of the +> very first changes post-IMAP2 was to abolish the untagged COPY response. +> Client authors at the time hated that response and the possibility of +> partial success. All contemporary implementations were either atomic +> already or were fixed to be atomic. +> +> If you wanted non-atomic COPY, the time to have spoken up in defense +> of it +> was c. 1992. Hop into your time machine. +> +>>> Nor does it prevent the filesystem timing races, particularly when the +>>> source and target are on different filesystems. Depending upon the +>>> implementation, the timing race results in one of: +>>> duplicate on both source and target +>>> vanish from both source and target +>> And what about the same filesystem? +> +> Same thing. +> +> Take a look at how rename() is actually implemented. Journaling and the +> buffer cache covers up a good deal of it these days, but the race still +> exists. If it didn't, there would never be a need for fsck. +> +> What may be confusing you is the fact that locking in the kernel prevents +> most user-level races. But that only holds for a single file. +> +> Those locks aren't always effective. Unlike link(), the target of +> rename() can exist. +> +> NFS adds further complications; yet a big advertising point for +> Maildir is +> that it purports to be NFS-safe. NFS is non-atomic on several operations +> that are atomic on most local filesystems, including some surprising +> ones. +> Those differences ARE application-visible. +> +>>> The burden of proof is on you. +>> You're stating claims without proper arguments so I don't care. +> +> This is not philosophy or law. The thing that matters is who is right. +> Presentation does not count. +> +>>> The burden of proof is on you to demonstrate that there are no races. +>> YOU are claiming that there are races so prove that there are. +> +> I don't have to prove anything. +> +> You want the change. You have to prove that the change is not harmful. +> +> If, and when, you offer what you claim to be proof, you then have to +> allow +> it to be tested. So far, you have offered nothing that can be tested. +> +> Where is the source code that purports to demonstrate atomic move of +> multiple messages in Maildir? +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> ------------------------------------------------------------------------ +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095191.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095191.22920.mbox:2,S new file mode 100644 index 00000000..9321b59a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095191.22920.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Mar 20 12:48:13 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: <07Mar20.113032pst."57996"@synergy1.parc.xerox.com> +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> + + <07Mar20.113032pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Tue, 20 Mar 2007, Bill Janssen wrote: +>> As a general rule, one (and only one) space separates tokens in IMAP. +> In my server implementation, I tried to follow the old rule of "be +> liberal in what you accept, and strict in what you provide." So +> though arguments to IMAP commands are strictly speaking separated by +> exactly one space, I accept any run of whitespace in place of that +> single space. I'm speaking only of top-level arguments to a command, +> of course. + +Although the practice you describe is relatively common, there are cases +(SASL comes to mind) in which spaces are highly significant. + +I generally agree with what Lyndon said; however to avoid a "pot, kettle, +black" (or is it, "do what I say, not what I do"?) I assert that there is +a difference, in cases where one and only one space is called for, +between: + . accepting a run of spaces because it was easier to code that way (e.g., + something quick & dirty like strtok()). + . going to extra effort to accept a run of spaces. +In the former case, you aren't actively enforcing every possible aspect of +syntax; in the latter case, you're deliberately allowing a violation. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095192.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095192.22807.mbox:2,S new file mode 100644 index 00000000..9a5b9e47 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095192.22807.mbox:2,S @@ -0,0 +1,141 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 19:15:23 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C16C4E8.7010008@aol.com> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + + <201006150103.52513.witold.krecicki@firma.o2.pl> + + <4C16C4E8.7010008@aol.com> +Message-ID: + +On Mon, 14 Jun 2010, John Snow wrote: +>> No. MOVE takes a message set argument. That makes its behavior +>> client-deterministic. +> How is that different than a UID expunge? A client specifies which +> specific message it wants expunged. + +That's not what UID EXPUNGE does. + +UID EXPUNGE indicates the message ranges that MAY be expunged as a result +of that command (or, alternatively, indicates that messages outside that +range should not be expunged as a result of that command). + +It does not require that the server expunge any of those messages. It +won't expunge messages that aren't deleted (read RFC 4315) or were +undeleted in another session just before the UID EXPUNGE was issued (so +there was no opportunity for an untagged FETCH to report the undeletion). + +Nor does it forbid an expunge that happened in some other session from +being reported. + +These are all significant differences from "[in UID EXPUNGE] a client +specified which specific message it wants expunged." + +There is no command in IMAP to say "expunge these, and precisely these, +messages". I would find such a command to be utterly appalling, but I +would have no argument against it. + +I do not find MOVE to be appalling. MOVE is a desirable functionality. +The problem with MOVE are technical objections which have been known for +25 years. + +My judgement is not based upon what I find to be desirable or appalling. +They are based upon technical matters. + +So ideas are appalling and technically flawed. They are the easiest to +oppose, although some people argue for them anyway. + +MOVE is desirable, but not as a chatty kludge with unpredictable behavior. +MOVE must either fully succeed, or fully fail. If it succeeds, then ALL +messages MUST be inserted in the target and MUST be removed from the +source. If it fails, then messages MUST NOT be inserted in the target and +MUST NOT be removed from the source. This also obviates the need for an +untagged expunge or any other response other than a MULTIAPPEND-form +APPENDUID (not COPYUID) data. + +> Why doesn't a move have the same option? + +So you are saying that the sequence set argument to MOVE ought to be a +guideline, like UID EXPUNGE; and not a specific client request for a +precise set of messages, as in FETCH, STORE, COPY, SEARCH? + +Do you think that client implementors will be comfortable with that? "It +may or may not move all the requested messages, and it may leave you in a +state where you can't move forward (complete the operation) or backward +(undo it)." + +As I noted earlier, the requirement for atomicity in COPY did not +originate with me. Both the original IMAP and IMAP2 had an untagged COPY +response for partial success. Client implementors rejected those +semantics circa 1991. As a result, the COPY response was deprecated in +RFC 1730, and removed entirely in RFC 2060 (see RFC 2062). + +Non-atomic MOVE violates that precedent for COPY, and with a far more +dangerous operation that destroys data. + +This will be the first operation in IMAP that may fail irreversibly. + +The only definition of MOVE that I consider acceptable is: + + MOVE and UID MOVE must either fully succeed, or fully + fail. If it succeeds, then ALL requested messages MUST + be inserted in the target and MUST simultaneously be + removed from the source. + + If it fails, messages MUST NOT be inserted in the target + and MUST NOT be removed from the source. + + There MUST NOT be any intermediate state in which some, + but not all, messages appear in the target. + + There MUST NOT be any intermediate state in which some, + but not all, messages are removed from the source. + + A successful MOVE and UID MOVE returns data equivalent + to the APPENDUID response for a MULTIAPPEND. There is + no untagged EXPUNGE or any other indication of the + messages that were removed from the source. This means + that a client which does UID MOVE must either have the + UID/sequence map in advance to calculate the affected + messages or it can not use message sequence numbers. + + An untagged EXPUNGE response resulting from some activity + in another session MAY occur with a MOVE and UID MOVE + command. The message sequence number in such responses + reflects the source mailbox after the effect of the MOVE + or UID MOVE. Example: + tag MOVE 2:5 test + * 2 EXPUNGE + tag OK [MOVEUID 48394733 3345:3348] all moved + The message that was expunged was the former message 6. + If this was a UID MOVE command, the client would not know + what message got expunged without having a UID/sequence + map. + + All other sessions which have the source mailbox open + will receive untagged EXPUNGE responses at the next + permitted point in the session (RFC 3501, section 7.4.1). + This means that there is an intermediate state in which + the messages exist in both source and target, that exists + only in sessions which have the source mailbox open at + the time of the MOVE. + +This all creates quite a few requirements on a server. But the point is +the benefit to the client: the saving of RTTs. It is not to create a +chatty kludge for certain mail stores that presupposes that the client +doesn't care that it can get halfway and be unable to move forward or +back. + +If you agree to ALL of the above conditions, then I will drop my +objections. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095192.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095192.22920.mbox:2,S new file mode 100644 index 00000000..afde8ed2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095192.22920.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Mar 20 13:14:50 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Tue, 20 Mar 2007, Bill Janssen wrote: +> I'm interested in knowing more about a fairly narrow topic: +> which clients use IMAP search, and how they use it. + +Pine (and its sucessor, Alpine) makes extensive use of SEARCH: +user-initiated searching, filtering/roles, and internal purposes. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095193.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095193.22807.mbox:2,S new file mode 100644 index 00000000..0c78faf1 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095193.22807.mbox:2,S @@ -0,0 +1,198 @@ +MBOX-Line: From snowjn at aol.com Mon Jun 14 21:28:42 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + + <201006150103.52513.witold.krecicki@firma.o2.pl> + + <4C16C4E8.7010008@aol.com> + +Message-ID: <4C17017A.2090305@aol.com> + + + +Mark Crispin wrote: +> On Mon, 14 Jun 2010, John Snow wrote: +>>> No. MOVE takes a message set argument. That makes its behavior +>>> client-deterministic. +>> How is that different than a UID expunge? A client specifies which +>> specific message it wants expunged. +> +> That's not what UID EXPUNGE does. +> +> UID EXPUNGE indicates the message ranges that MAY be expunged as a result +> of that command (or, alternatively, indicates that messages outside that +> range should not be expunged as a result of that command). +> +> It does not require that the server expunge any of those messages. It +> won't expunge messages that aren't deleted (read RFC 4315) or were +> undeleted in another session just before the UID EXPUNGE was issued (so +> there was no opportunity for an untagged FETCH to report the undeletion). +> +> Nor does it forbid an expunge that happened in some other session from +> being reported. +> +> These are all significant differences from "[in UID EXPUNGE] a client +> specified which specific message it wants expunged." +> +> There is no command in IMAP to say "expunge these, and precisely these, +> messages". I would find such a command to be utterly appalling, but I +> would have no argument against it. +> +> I do not find MOVE to be appalling. MOVE is a desirable functionality. +> The problem with MOVE are technical objections which have been known for +> 25 years. +> +> My judgement is not based upon what I find to be desirable or appalling. +> They are based upon technical matters. +> +> So ideas are appalling and technically flawed. They are the easiest to +> oppose, although some people argue for them anyway. +> +> MOVE is desirable, but not as a chatty kludge with unpredictable +> behavior. +> MOVE must either fully succeed, or fully fail. If it succeeds, then ALL +> messages MUST be inserted in the target and MUST be removed from the +> source. If it fails, then messages MUST NOT be inserted in the target +> and +> MUST NOT be removed from the source. This also obviates the need for an +> untagged expunge or any other response other than a MULTIAPPEND-form +> APPENDUID (not COPYUID) data. +> + +I don't think anyone is arguing against the requirement that ALL must +succeed or +ALL must fail, but I don't see how you can guarantee that's true for +even existing +commands. If the client sends a copy 1:100 saved and the server crashes +when +only 50 have been copied what happens? The server managed to copy 50, but +didn't finish so the client doesn't know any were copied yet. In this +case I 'd +expect that the client reconnected and retried the copy resulting in the +first +50 being duplicated in the saved folder. + +Stuart's proposed per message status would give the client an indication +of move progress +leaving the client in a better position to recover from such a failure. + +>> Why doesn't a move have the same option? +> +> So you are saying that the sequence set argument to MOVE ought to be a +> guideline, like UID EXPUNGE; and not a specific client request for a +> precise set of messages, as in FETCH, STORE, COPY, SEARCH? +> +> Do you think that client implementors will be comfortable with that? "It +> may or may not move all the requested messages, and it may leave you in a +> state where you can't move forward (complete the operation) or backward +> (undo it)." +> +As noted above, I think this can already happen. + +> As I noted earlier, the requirement for atomicity in COPY did not +> originate with me. Both the original IMAP and IMAP2 had an untagged COPY +> response for partial success. Client implementors rejected those +> semantics circa 1991. As a result, the COPY response was deprecated in +> RFC 1730, and removed entirely in RFC 2060 (see RFC 2062). +> +> Non-atomic MOVE violates that precedent for COPY, and with a far more +> dangerous operation that destroys data. +> +> This will be the first operation in IMAP that may fail irreversibly. +With the per message response, a failure is not irreversible +> +> +> The only definition of MOVE that I consider acceptable is: +> +> MOVE and UID MOVE must either fully succeed, or fully +> fail. If it succeeds, then ALL requested messages MUST +> be inserted in the target and MUST simultaneously be +> removed from the source. +> +> If it fails, messages MUST NOT be inserted in the target +> and MUST NOT be removed from the source. +> +> There MUST NOT be any intermediate state in which some, +> but not all, messages appear in the target. +> +> There MUST NOT be any intermediate state in which some, +> but not all, messages are removed from the source. +> +I can agree these are a good goal, but in practice I don't think you +can guarantee it. + +> A successful MOVE and UID MOVE returns data equivalent +> to the APPENDUID response for a MULTIAPPEND. There is +> no untagged EXPUNGE or any other indication of the +> messages that were removed from the source. This means +> that a client which does UID MOVE must either have the +> UID/sequence map in advance to calculate the affected +> messages or it can not use message sequence numbers. +> +Isn't that true for all commands? + +> An untagged EXPUNGE response resulting from some activity +> in another session MAY occur with a MOVE and UID MOVE +> command. The message sequence number in such responses +> reflects the source mailbox after the effect of the MOVE +> or UID MOVE. Example: +> tag MOVE 2:5 test +> * 2 EXPUNGE +> tag OK [MOVEUID 48394733 3345:3348] all moved +> The message that was expunged was the former message 6. +> If this was a UID MOVE command, the client would not know +> what message got expunged without having a UID/sequence +> map. +If you look at a move as a macro form of copy/store/delete, then I think +that an untagged expunge response should fall under the ambiguity rule +of RFC3501 section 5.5. and should not be allowed. + +A per message response would remove the ambiguity. + +> +> All other sessions which have the source mailbox open +> will receive untagged EXPUNGE responses at the next +> permitted point in the session (RFC 3501, section 7.4.1). +> This means that there is an intermediate state in which +> the messages exist in both source and target, that exists +> only in sessions which have the source mailbox open at +> the time of the MOVE. +> +No argument. +> This all creates quite a few requirements on a server. But the point is +> the benefit to the client: the saving of RTTs. It is not to create a +> chatty kludge for certain mail stores that presupposes that the client +> doesn't care that it can get halfway and be unable to move forward or +> back. +> +I don't think it's a kludge, and I don't think it's only a benefit to a +client by +saving RTTs. I think it puts message management more in +line with the way a user would think it should work. + +Most clients I've tried have a Move command. When I move a message +to a new folder, the client does a copy and store, leaving the expunge for +later. The result is I still have the message in the folder I just +tried to +"move" it out of. The client indicates that it's deleted in some +fashion, but +it's still noise in my message list. When I tell the client to move a +message +I want it moved now, not partially moved and finished later. + +> If you agree to ALL of the above conditions, then I will drop my +> objections. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095193.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095193.22920.mbox:2,S new file mode 100644 index 00000000..eb4cbe14 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095193.22920.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From brendan at kublai.com Tue Mar 20 13:21:11 2007 +To: imap-protocol@u.washington.edu +From: Brendan Cully +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +Message-ID: <20070320202111.GB29202@ventoux.cs.ubc.ca> + +On Tuesday, 20 March 2007 at 12:48, Bill Janssen wrote: +> I'm intrigued by the charts of email client capabilities on Wikipedia +> (http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients). You'll +> notice that almost all the clients claim to support IMAP4 (even the +> ones which don't support STARTTLS, like Outlook :-). +> +> There's a column in the Wikipedia chart labelled "Database, folders, +> and customization" which purports to show which clients use IMAP +> search. I'm interested in knowing more about a fairly narrow topic: +> which clients use IMAP search, and how they use it. Is there such a +> chart? Or listing? I'd be happy to put one together if folks want to +> mail me contributions. + +mutt uses search for header, text and body, if the user doesn't use +regular expressions for those search components. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095194.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095194.22807.mbox:2,S new file mode 100644 index 00000000..0ca117c8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095194.22807.mbox:2,S @@ -0,0 +1,128 @@ +MBOX-Line: From mrc+imap at panda.com Mon Jun 14 22:34:39 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17017A.2090305@aol.com> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + + <201006150103.52513.witold.krecicki@firma.o2.pl> + + <4C16C4E8.7010008@aol.com> + + <4C17017A.2090305@aol.com> +Message-ID: + +On Tue, 15 Jun 2010, John Snow wrote: +> If the client sends a copy 1:100 saved +> and the server crashes when only 50 have been copied what happens? The +> server managed to copy 50, but didn't finish so the client doesn't know +> any were copied yet. In this case I 'd expect that the client +> reconnected and retried the copy resulting in the first 50 being +> duplicated in the saved folder. + +That does not happen with my mix store in any of the servers that use it; +nor will it happen in the new store that I am designing. + +In mix, a crash while a copy is in progress simply causes lost space which +will get recovered the next time the mailbox is opened. In the new store, +not even that consequence will happen. + +It may happen on a crash with legacy flat file stores; but only on a crash +and not on non-crash failures. + +>> Do you think that client implementors will be comfortable with that? "It +>> may or may not move all the requested messages, and it may leave you in a +>> state where you can't move forward (complete the operation) or backward +>> (undo it)." +> As noted above, I think this can already happen. + +Not with COPY on any modern store; and not in non-crash situations even +with legacy stores. + +If your store has that problem with COPY then you ought to fix it; since +such a bug would render your server non-compliant with the IMAP +specification. + +> If you look at a move as a macro form of copy/store/delete, then I think +> that an untagged expunge response should fall under the ambiguity rule +> of RFC3501 section 5.5. and should not be allowed. + +You can't simultaneously define MOVE as a pipeline and as a command. RFC +3501 section 5.5 refers to a pipeline, not to a command. + +With a command, the rules on RFC 3501 7.4.1 apply. MOVE is not a FETCH, +STORE, or SEARCH; therefore untagged EXPUNGE is permitted. + +However, as in COPY, the only way that untagged EXPUNGE in MOVE can work +is as I stipulated; having effect AFTER the execution of a MOVE and not +impacting the sequence as processed by MOVE. Since MOVE does its own +expunging, this in turn means that any untagged EXPUNGE has to refer to +the MSN state after the expunges by MOVE. + +> A per message response would remove the ambiguity. + +No. The effect of any external initiated EXPUNGE MUST take effect after +the execution of a MOVE. It can not be before or during. + +If the messages expunged by MOVE were announced with untagged EXPUNGE +(which results in considerable unnecessary chattiness), that would still +not change the requirement that external initiated EXPUNGE has to happen +after the MOVE expunges. Don't forget the UIDPLUS return value, which +is carried in the tagged OK and thus is after any of these. + +Thus, announcing the effect of MOVE with untagged EXPUNGE adds chattiness +and leads server implementors to think that they can do a defective +implementation. Better not to have it at all and make it be impossible to +do it wrong. + +This stuff is complicated. Getting it done right requires working out all +the possible scenarios and multi-access timings. + +> I don't think it's a kludge, and I don't think it's only a benefit to a +> client by saving RTTs. I think it puts message management more in line +> with the way a user would think it should work. + +A user doesn't give a damn whether the "move" button does one IMAP command +or 69 IMAP commands. + +The only people who care are server authors, who want to kludge around the +deficiencies of their message stores, and perhaps client authors who want +to save an RTT. + +There is no reason, other than a careless mail store implementation, that +a MOVE should be faster than a COPY. + +A client implementor would be better off with improvements to the +pipelining facility instead of one-off kludge commands that duplicate a +pipeline but not really since nudge-nudge-wink-wink it's trying to sneak +in file renames for Mail. + +> Most clients I've tried have a Move command. When I move a message to a +> new folder, the client does a copy and store, leaving the expunge for +> later. The result is I still have the message in the folder I just +> tried to "move" it out of. + +Perhaps that is something that you should take up with the maintainer of +the client. + +In the case of the "save" command with delete in Pine/Alpine, that +behavior is quite intentional. It is not documented as a move, and the +normal way for a person to do a "save without delete" is to do a save and +then an undelete. + +I know of at least one other client in which that behavior is intentional; +the whole point being that nothing other than an expunge can ever +permanently remove a message from the mailbox. + +But that is all documented in those clients; and if there was an IMAP MOVE +command that did the expunge those clients would not use it. If they +wanted an expunge they would do it. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095194.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095194.22920.mbox:2,S new file mode 100644 index 00000000..4c3f94f8 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095194.22920.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From lyndon at orthanc.ca Tue Mar 20 13:35:03 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +Message-ID: <20070320133052.S8455@orthanc.ca> + +> In fact, I'd like to make a version of this chart which calls out more +> specifically IMAP features and usage, so that folks who want to use +> IMAP mail services can have a better idea of which clients will be +> most useful to them. What should those features be? + +Alexey used to maintain a chart listing a variety of IMAP clients and +servers, and the extensions they supported. If you go waay back in the +list archives (circa 2001) you can probably find a reference to it, +although I suspect it's long gone now. + +You'll probably get a better answer to this next week (after people get +back from IETF). + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095195.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095195.22807.mbox:2,S new file mode 100644 index 00000000..a535c6ca --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095195.22807.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Jun 15 00:38:58 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <201006150033.17670.witold.krecicki@firma.o2.pl> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006142330.15547.witold.krecicki@firma.o2.pl> + + <201006150033.17670.witold.krecicki@firma.o2.pl> +Message-ID: <4C172E12.40600@gulbrandsen.priv.no> + +On 06/15/2010 12:33 AM, Witold Kr?cicki wrote: +> On Tuesday 15 of June 2010 00:28:30 Mark Crispin wrote: +>> The correct design of a database is that COPY is fast and MOVE is nearly +>> as fast or even equal. +> So you state that (in a database language) INSERT ... SELECT should be faster +> than UPDATE? Do you know ANY database that works that way? + +Actually, INSERT...SELECT can be faster than UPDATE, depending on the +database design (such as if the db has point-in-time recovery without +infringing an Oracle patent). However, MOVE should still be faster in +total, since it needs fewer locks (two with table-level locking, vs. +four for COPY/STORE/EXPUNGE, more in both cases with row-level locking) +and there's only one commit phase instead of three. + +Not that it matters ? a transactional database with point in time +recovery is a robust, fine datastore, but "speed" is not a reason to +pick that kind of datastore. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095195.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095195.22920.mbox:2,S new file mode 100644 index 00000000..ae2c6de9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095195.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From rickblock at avaya.com Tue Mar 20 13:42:51 2007 +To: imap-protocol@u.washington.edu +From: Rick Block +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <20070320133052.S8455@orthanc.ca> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> +Message-ID: <4600474B.1000309@avaya.com> + +Alexey's lists (apparently last updated August 2005) are at + +http://www.melnikov.ca/mel/devel/Links.html + +Mozilla, Thunderbird, and Outlook all support client initiated +searches. + +Rick Block + + +Lyndon Nerenberg wrote: +>> In fact, I'd like to make a version of this chart which calls out more +>> specifically IMAP features and usage, so that folks who want to use +>> IMAP mail services can have a better idea of which clients will be +>> most useful to them. What should those features be? +> +> Alexey used to maintain a chart listing a variety of IMAP clients and +> servers, and the extensions they supported. If you go waay back in the +> list archives (circa 2001) you can probably find a reference to it, +> although I suspect it's long gone now. +> +> You'll probably get a better answer to this next week (after people get +> back from IETF). +> +> --lyndon +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095196.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095196.22807.mbox:2,S new file mode 100644 index 00000000..0ea1db70 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095196.22807.mbox:2,S @@ -0,0 +1,43 @@ +MBOX-Line: From tss at iki.fi Tue Jun 15 03:45:17 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + + <201006150103.52513.witold.krecicki@firma.o2.pl> + + <4C16C4E8.7010008@aol.com> + + <4C17017A.2090305@aol.com> + +Message-ID: + +On 15.6.2010, at 6.34, Mark Crispin wrote: + +> However, as in COPY, the only way that untagged EXPUNGE in MOVE can work +> is as I stipulated; having effect AFTER the execution of a MOVE and not +> impacting the sequence as processed by MOVE. Since MOVE does its own +> expunging, this in turn means that any untagged EXPUNGE has to refer to +> the MSN state after the expunges by MOVE. + +That would require client to wait for the tagged reply to MOVE to find out if it succeeded or not, before it can process any untagged replies. I don't think any other command works that way. Maybe instead: + +a MOVE 1:100 elsewhere +* MOVED +* 3 EXPUNGE +a OK + +vs. + +a MOVE 1:100 elsewhere +* 2 EXPUNGE +a NO Some of the messages were expunged. + +Other random things I thought of: + - Trying to MOVE an expunged message that's still accessible in session should fail the MOVE instead of create a copy of it?.. + - Should describe QRESYNC interaction with HIGHESTMODSEQ updates (and maybe VANISHED) + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095196.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095196.22920.mbox:2,S new file mode 100644 index 00000000..83dcbbef --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095196.22920.mbox:2,S @@ -0,0 +1,15 @@ +MBOX-Line: From dkarp at zimbra.com Tue Mar 20 13:45:20 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <20070320133052.S8455@orthanc.ca> +Message-ID: <1985772462.84661174423520562.JavaMail.root@dogfood.liquidsys.com> + +> Alexey used to maintain a chart listing a variety of IMAP clients and +> servers, and the extensions they supported. If you go waay back in +> the list archives (circa 2001) you can probably find a reference to it, +> although I suspect it's long gone now. + +http://www.melnikov.ca/mel/devel/ServerReference.html + diff --git a/demo/ermis-f/imap-protocol/cur/1600095197.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095197.22807.mbox:2,S new file mode 100644 index 00000000..deab9a68 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095197.22807.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From stujenerin at aol.com Tue Jun 15 05:10:20 2010 +To: imap-protocol@u.washington.edu +From: Stu Brandt +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] IMAP MOVE extension +In-Reply-To: <4C172E12.40600@gulbrandsen.priv.no> +References: <201006110854.37969.witold.krecicki@firma.o2.pl> <201006142330.15547.witold.krecicki@firma.o2.pl> <201006150033.17670.witold.krecicki@firma.o2.pl> + <4C172E12.40600@gulbrandsen.priv.no> +Message-ID: <4C176DAC.4050005@aol.com> + +Mark Crispin wrote: +> A user doesn't give a damn whether the "move" button does one IMAP +> command +> or 69 IMAP commands. +They *absolutely* do when it comes to failure scenarios of the current 3 +command sequence that leaves messages laying around in both folders. And +while it would be easy to find fault with client developers whose +rollforward/rollback handling during failure might be lacking, I frankly +think some of the fault lies with a protocol that shifts the burden of +MOVE atomicity back onto the Client rather than the Store. +> +> The only people who care are server authors, who want to kludge around +> the +> deficiencies of their message stores, and perhaps client authors who want +> to save an RTT. +> +> There is no reason, other than a careless mail store implementation, that +> a MOVE should be faster than a COPY. +At the risk of restating facts already presented by Arnt Gulbrandsen and +Dan Karp, discussion of MOVE vs. COPY is a distraction. We've +established that COPY/EXPUNGE can not be pipelined because of the +possibility of failure of COPY. And Arnt clearly demonstrated that MOVE +will almost assuredly be faster than the current 3 command sequence. +Throw in the fact that MOVE actually *could* be atomic in such stores, +and it's clear that a MOVE extension would be a nice win for Mail Store +performance, client developers, and ultimately users. + +If you look at the UIs from companies that have spent millions of +dollars (possibly tens/hundreds of millions) on researching exactly what +users want in a mail client -- Yahoo, AOL, Apple, etc -- many of those +UIs don't even offer COPY as a user facing option in some of their +products. I think it's long past due that Mail Store developers +acknowledge MOVE as a primary use case and raise the bar to actually +design systems that make it a first-class atomic operation. + +Barring that, however, I still think there's a middle ground whereby a +MOVE command could allow clients to tap into the atomic nature of some +stores' handling while also providing enough flexibility in the response +for non-atomic Stores to reflect accurate message state back to clients +in the case of failure. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095197.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095197.22920.mbox:2,S new file mode 100644 index 00000000..ca5ad425 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095197.22920.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Mar 20 14:18:09 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <20070320133052.S8455@orthanc.ca> +References: <"07Mar20. 114847pst. 57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> +Message-ID: + +Lyndon Nerenberg writes: +> Alexey used to maintain a chart listing a variety of IMAP clients and +> servers, and the extensions they supported. If you go waay back in +> the list archives (circa 2001) you can probably find a reference to +> it, although I suspect it's long gone now. + +http://www.melnikov.ca/mel/devel/Links.html + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095198.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095198.22807.mbox:2,S new file mode 100644 index 00000000..ea7ed348 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095198.22807.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jun 15 07:27:17 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +Message-ID: <287202107.4073.1276612036982.JavaMail.root@dogfood.zimbra.com> + +> That would require client to wait for the tagged reply to MOVE to find +> out if it succeeded or not, before it can process any untagged +> replies. I don't think any other command works that way. Maybe +> instead: +> +> a MOVE 1:100 elsewhere +> * MOVED +> * 3 EXPUNGE +> a OK +> +> vs. +> +> a MOVE 1:100 elsewhere +> * 2 EXPUNGE +> a NO Some of the messages were expunged. + +Would it be unreasonable to state that the only untagged EXPUNGE +responses from a MOVE command may be those directly resulting from +the MOVE? (UID MOVE, like UID FETCH, would have no such constraints.) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095198.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095198.22920.mbox:2,S new file mode 100644 index 00000000..64f15161 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095198.22920.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From janssen at parc.com Tue Mar 20 14:25:36 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: <20070320123924.I8455@orthanc.ca> +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> + + <07Mar20.113032pst."57996"@synergy1.parc.xerox.com> + <20070320123924.I8455@orthanc.ca> +Message-ID: <07Mar20.132542pst."57996"@synergy1.parc.xerox.com> + +> > I accept any run of whitespace in place of that +> > single space. +> +> Strictly speaking, what you have is not an IMAP server. + +It's even worse than that :-). I haven't figured out how to implement +STARTTLS yet. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095199.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095199.22807.mbox:2,S new file mode 100644 index 00000000..599b0f58 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095199.22807.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 09:08:23 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <287202107.4073.1276612036982.JavaMail.root@dogfood.zimbra.com> +References: <287202107.4073.1276612036982.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Tue, 15 Jun 2010, Dan Karp wrote: +> Would it be unreasonable to state that the only untagged EXPUNGE +> responses from a MOVE command may be those directly resulting from +> the MOVE? (UID MOVE, like UID FETCH, would have no such constraints.) + +That requires an amendment to RFC 3501 7.4.1. + +Having MOVE issue untagged EXPUNGE responses is a problem, since it tempts +server implementors to do a non-atomic move. It also makes MOVE chatty, +and then results in pressure to add MOVE.SILENT or MOVEANDCLOSE. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095199.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095199.22920.mbox:2,S new file mode 100644 index 00000000..d2ddc447 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095199.22920.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From janssen at parc.com Tue Mar 20 14:31:40 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <20070320133052.S8455@orthanc.ca> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> +Message-ID: <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + +> Alexey used to maintain a chart listing a variety of IMAP clients and +> servers, and the extensions they supported. If you go waay back in the +> list archives (circa 2001) you can probably find a reference to it, +> although I suspect it's long gone now. + +Thanks. + +Doesn't really say much about clients, though the list of which +clients support which authentication mechanisms is useful, if +out-of-date (no Thunderbird listing). + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095200.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095200.22807.mbox:2,S new file mode 100644 index 00000000..bac4a3ac --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095200.22807.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From snowjn at aol.com Tue Jun 15 09:18:55 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <287202107.4073.1276612036982.JavaMail.root@dogfood.zimbra.com> + +Message-ID: <4C17A7EF.5000600@aol.com> + +Mark Crispin wrote: +> On Tue, 15 Jun 2010, Dan Karp wrote: +>> Would it be unreasonable to state that the only untagged EXPUNGE +>> responses from a MOVE command may be those directly resulting from +>> the MOVE? (UID MOVE, like UID FETCH, would have no such constraints.) +> +> That requires an amendment to RFC 3501 7.4.1. +> +> Having MOVE issue untagged EXPUNGE responses is a problem, since it +> tempts +> server implementors to do a non-atomic move. It also makes MOVE chatty, +> and then results in pressure to add MOVE.SILENT or MOVEANDCLOSE. +> +But no more chatty than the EXPUNGE that it would be replacing. +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095200.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095200.22920.mbox:2,S new file mode 100644 index 00000000..88decd71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095200.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From tss at iki.fi Tue Mar 20 15:12:29 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: which clients + use them?] +In-Reply-To: <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> +Message-ID: <1174428749.1318.94.camel@hurina> + +On Tue, 2007-03-20 at 14:31 -0700, Bill Janssen wrote: +> > Alexey used to maintain a chart listing a variety of IMAP clients and +> > servers, and the extensions they supported. If you go waay back in the +> > list archives (circa 2001) you can probably find a reference to it, +> > although I suspect it's long gone now. +> +> Thanks. +> +> Doesn't really say much about clients, though the list of which +> clients support which authentication mechanisms is useful, if +> out-of-date (no Thunderbird listing). + +What would you people think about having a generic IMAP Wiki +(wiki.imap.org)? + +These kinds of lists won't be kept up-to-date if you have to email +someone to update them. Also there doesn't seem to be any place where to +easily find IMAP related information. There is a list of RFCs and +drafts, but that's about it. Searching the mailing list archives isn't +very fun. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095201.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095201.22807.mbox:2,S new file mode 100644 index 00000000..44cd077d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095201.22807.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 09:20:42 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <201006110854.37969.witold.krecicki@firma.o2.pl> + <201006150012.43889.witold.krecicki@firma.o2.pl> + + <201006150103.52513.witold.krecicki@firma.o2.pl> + + <4C16C4E8.7010008@aol.com> + + <4C17017A.2090305@aol.com> + + +Message-ID: + +On Tue, 15 Jun 2010, Timo Sirainen wrote: +> That would require client to wait for the tagged reply to MOVE to find +> out if it succeeded or not, before it can process any untagged replies. +> a MOVE 1:100 elsewhere +> * MOVED +> * 3 EXPUNGE +> a OK + +Ugh, but the only obvious alternative is to amend RFC 3501 7.4.1. Sigh. + +> - Trying to MOVE an expunged message that's still accessible in session +> should fail the MOVE instead of create a copy of it?.. + +Ugh again. It's worse. Consider another session that has the mailbox +open. + +Mail stores that just have pointers to the message can do this without +problem. The operation is just a copy of the pointer, and other sessions +only hold on to the pointer until they reach an expunge-permitted point. + +If the mail store doesn't permit ghost pointers, then move makes its +multi-access maibox problems worse.... + +> - Should describe QRESYNC interaction with HIGHESTMODSEQ updates (and +> maybe VANISHED) + +Have fun on this. :p + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095201.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095201.22920.mbox:2,S new file mode 100644 index 00000000..48f8daec --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095201.22920.mbox:2,S @@ -0,0 +1,35 @@ +MBOX-Line: From tss at iki.fi Tue Mar 20 17:33:31 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: which + clients use them?] +In-Reply-To: <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + <1174428749.1318.94.camel@hurina> + <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> +Message-ID: <1174437211.1318.113.camel@hurina> + +On Tue, 2007-03-20 at 19:52 -0400, David Rauschenbach wrote: +> Or, even easier, start and maintain an "imap protocol" topic on +> Wikipedia. + +Easier perhaps, but is Wikipedia the right place for such detailed +information? At least I have a feeling that if I started addings tens of +new pages about all kinds of things more or less related to IMAP, they'd +soon get deleted. But I haven't bothered to read Wikipedia's policies so +I don't know really. + +If Wikipedia allowed it, I'm still not sure if it's such a good idea. +Possibly too many people/bots breaking the pages, more or less +intentionally. + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095202.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095202.22807.mbox:2,S new file mode 100644 index 00000000..aaab7769 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095202.22807.mbox:2,S @@ -0,0 +1,24 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 09:21:28 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17A7EF.5000600@aol.com> +References: <287202107.4073.1276612036982.JavaMail.root@dogfood.zimbra.com> + + <4C17A7EF.5000600@aol.com> +Message-ID: + +On Tue, 15 Jun 2010, John Snow wrote: +>> It also makes MOVE chatty, +>> and then results in pressure to add MOVE.SILENT or MOVEANDCLOSE. +> But no more chatty than the EXPUNGE that it would be replacing. + +Except that a client can pipeline a CLOSE instead of an EXPUNGE. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095202.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095202.22920.mbox:2,S new file mode 100644 index 00000000..a131b628 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095202.22920.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From rickblock at avaya.com Tue Mar 20 18:12:00 2007 +To: imap-protocol@u.washington.edu +From: Rick Block +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: which clients + use them?] +In-Reply-To: <1174437211.1318.113.camel@hurina> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> <20070320133052.S8455@orthanc.ca> <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> <1174428749.1318.94.camel@hurina> <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> + <1174437211.1318.113.camel@hurina> +Message-ID: <46008660.2040107@avaya.com> + +I do know Wikipedia's policies and this is not a good idea. +Wikipedia's content is restricted to "encyclopedic" topics, +with information sourced from "reliable secondary sources". +A list of IMAP clients and what protocol extensions they +support, created by the subscribers to this list, would almost +certainly be what Wikipedia calls "original research" (which +is prohibited). Wikipedia does have articles on IMAP and +a variety of other topics of interest to subscribers of this +list. A non-exhaustive list of what should not be at Wikipedia +is at . + +It might be possible to create a Wikia site for IMAP or for +a wider topic (like email related protocols, or even IETF +working groups), see . + +-Rick Block + +Timo Sirainen wrote: +> On Tue, 2007-03-20 at 19:52 -0400, David Rauschenbach wrote: +>> Or, even easier, start and maintain an "imap protocol" topic on +>> Wikipedia. +> +> Easier perhaps, but is Wikipedia the right place for such detailed +> information? At least I have a feeling that if I started addings tens of +> new pages about all kinds of things more or less related to IMAP, they'd +> soon get deleted. But I haven't bothered to read Wikipedia's policies so +> I don't know really. +> +> If Wikipedia allowed it, I'm still not sure if it's such a good idea. +> Possibly too many people/bots breaking the pages, more or less +> intentionally. +> +> +> +> ------------------------------------------------------------------------ +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol + diff --git a/demo/ermis-f/imap-protocol/cur/1600095203.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095203.22807.mbox:2,S new file mode 100644 index 00000000..1d9c065c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095203.22807.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jun 15 09:26:50 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +Message-ID: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> + +> > Would it be unreasonable to state that the only untagged EXPUNGE +> > responses from a MOVE command may be those directly resulting from +> > the MOVE? (UID MOVE, like UID FETCH, would have no such +> > constraints.) +> +> That requires an amendment to RFC 3501 7.4.1. + +Good form would be to amend it in any case. MOVE would definitely +fall into the category of commands for which EXPUNGEs from other +sources would cause loss of synchronization, and thus it needs to +be added to the list in 7.4.1. + +> Having MOVE issue untagged EXPUNGE responses is a problem, since it +> tempts server implementors to do a non-atomic move. It also makes MOVE +> chatty, and then results in pressure to add MOVE.SILENT or MOVEANDCLOSE. + +This is true to some extent, but even so it still makes MOVE slightly +less chatty than COPY/STORE.SILENT/EXPUNGE. Certainly no more chatty. +And you can probably nip a (misguided) MOVE.SILENT in the bud at this +stage. + +Likewise, MOVEANDCLOSE doesn't have a real-world use case, as a move +isn't correlated with the end of a SELECT. Quite the opposite, in fact. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095203.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095203.22920.mbox:2,S new file mode 100644 index 00000000..3e22364d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095203.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From tss at iki.fi Tue Mar 20 18:31:04 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: + which clients use them?] +In-Reply-To: <46008660.2040107@avaya.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + <1174428749.1318.94.camel@hurina> + <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> + <1174437211.1318.113.camel@hurina> <46008660.2040107@avaya.com> +Message-ID: <1174440664.1318.128.camel@hurina> + +On Tue, 2007-03-20 at 19:12 -0600, Rick Block wrote: +> It might be possible to create a Wikia site for IMAP or for +> a wider topic (like email related protocols, or even IETF +> working groups), see . + +I was thinking about creating a whole new wiki, so if there came any +problems it would be possible to just disable anonymous edits and +moderate new user creation. Also I want to be able to backup the Wiki's +contents easily, which I'm guessing isn't possible very easily with most +of the widely used Wikis. I'd hate to spend a lot of time writing things +and one day find out that they're all gone and no way to get them back. + +If there is interest from other people to have such Wiki and no-one else +wants to host it, I could set up a new MoinMoin Wiki after I've moved +dovecot.org to a new server (a week or so). Everyone would be able to +rsync its contents to themselves, so it wouldn't be lost if anything +happened. And there would be no advertisements (like there is in Wikia). + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095204.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095204.22807.mbox:2,S new file mode 100644 index 00000000..fe2fd255 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095204.22807.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 09:52:54 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> +References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> +Message-ID: + +On Tue, 15 Jun 2010, Dan Karp wrote: +> And you can probably nip a (misguided) MOVE.SILENT in the bud at this +> stage. + +Like I am nipping misguided MOVE in the bud? :p + +I don't think that it is ever safe to rely upon an attractive nuisance +being nipped in the bud. Historically, such reliance has never been +well-founded. + +> Likewise, MOVEANDCLOSE doesn't have a real-world use case, as a move +> isn't correlated with the end of a SELECT. Quite the opposite, in fact. + +Not necessarily. "Move all the junk to trash and then close" may be an +operation that clients want to do. + +Move via a pipeline idiom, as opposed to a specific MOVE command, solves +the problem. The normal move is + pipeline COPY + STORE + EXPUNGE +and the less chatty move is + pipeline COPY + STORE silent + EXPUNGE +and the quiet move is + pipeline COPY + STORE silent + CLOSE + +The pipeline does not create any new error states. The error states are +all those which must be handled anyway. + +From the client perspective, the pipeline does not add new complexity over +a MOVE command. It is just syntactic sugar. + +The pipeline is more general. Over time, perhaps, new idioms which the +server can optimize may come to be. That would be strictly within the +server implementation (although perhaps published as "look at this neat +trick we can do!"), with no need to change the protocol (and thus NO need +to go through the process we are doing now). + +MOVE, on the other hand, is a one-shot that benefits some servers but not +others, and may tempt a disastrously bad implementation. + +Even better, pipelining is something that we all agree we need in IMAP. +I think that we all would like to see a better mechanism than what is +there now. + +I would love to abolish the rules in 5.5 and 7.4.1 in favor of a pipeline +that blocks EXPUNGE while it is in progress plus a separate rule that +external-caused untagged EXPUNGE events must be deferred until the end of +a pipeline (or command in the case of a non-pipelined command). I don't +see how that can be done without a major revision of IMAP, but we can at +least start the process and label the 5.5 and 7.4.1 rules as legacy. + +For the purposes of idioms that servers can optimize, a PIPELINE command +would probably be better than IF-OK. Just think of the approved syntax +for the MOVE command as being: + tag PIPELINE (COPY seq dest) (STORE $ +FLAGS.SILENT \Deleted) (EXPUNGE) +instead of + tag MOVE seq dest +and + tag PIPELINE (UID COPY seq dest) (UID STORE $ +FLAGS.SILENT \Deleted) (UID EXPUNGE $) +instead of + tag UID MOVE seq dest + +It's just syntactic sugar. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095204.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095204.22920.mbox:2,S new file mode 100644 index 00000000..e0416585 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095204.22920.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From janssen at parc.com Tue Mar 20 18:35:42 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: which clients + use them?] +In-Reply-To: <1174428749.1318.94.camel@hurina> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + <1174428749.1318.94.camel@hurina> +Message-ID: <07Mar20.173542pst."57996"@synergy1.parc.xerox.com> + +> What would you people think about having a generic IMAP Wiki +> (wiki.imap.org)? + +Why not use Wikipedia? Seems to be an IMAP page already: +http://en.wikipedia.org/wiki/Imap. Might want to fix it or expand it. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095205.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095205.22807.mbox:2,S new file mode 100644 index 00000000..e6528361 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095205.22807.mbox:2,S @@ -0,0 +1,108 @@ +MBOX-Line: From snowjn at aol.com Tue Jun 15 10:31:14 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> + +Message-ID: <4C17B8E2.8050602@aol.com> + +Mark Crispin wrote: +> On Tue, 15 Jun 2010, Dan Karp wrote: +>> And you can probably nip a (misguided) MOVE.SILENT in the bud at this +>> stage. +> +> Like I am nipping misguided MOVE in the bud? :p +> +> I don't think that it is ever safe to rely upon an attractive nuisance +> being nipped in the bud. Historically, such reliance has never been +> well-founded. +> +>> Likewise, MOVEANDCLOSE doesn't have a real-world use case, as a move +>> isn't correlated with the end of a SELECT. Quite the opposite, in fact. +> +> Not necessarily. "Move all the junk to trash and then close" may be an +> operation that clients want to do. +> +> Move via a pipeline idiom, as opposed to a specific MOVE command, solves +> the problem. The normal move is +> pipeline COPY + STORE + EXPUNGE +> and the less chatty move is +> pipeline COPY + STORE silent + EXPUNGE +> and the quiet move is +> pipeline COPY + STORE silent + CLOSE +> +We agreed earlier that pipelining copy+store+expunge is a bad idea, +because of +the potential data loss if the COPY failed. + +> The pipeline does not create any new error states. The error states are +> all those which must be handled anyway. +> +>> From the client perspective, the pipeline does not add new complexity +>> over +> a MOVE command. It is just syntactic sugar. +> +> The pipeline is more general. Over time, perhaps, new idioms which the +> server can optimize may come to be. That would be strictly within the +> server implementation (although perhaps published as "look at this neat +> trick we can do!"), with no need to change the protocol (and thus NO need +> to go through the process we are doing now). +> +> MOVE, on the other hand, is a one-shot that benefits some servers but not +> others, and may tempt a disastrously bad implementation. +> +> Even better, pipelining is something that we all agree we need in IMAP. +> I think that we all would like to see a better mechanism than what is +> there now. +Don't say ALL. I never understood why it's useful. Pipelining commands +removes the client's ability to deal with an error response between +commands. +> +> I would love to abolish the rules in 5.5 and 7.4.1 in favor of a pipeline +> that blocks EXPUNGE while it is in progress plus a separate rule that +> external-caused untagged EXPUNGE events must be deferred until the end of +> a pipeline (or command in the case of a non-pipelined command). I don't +> see how that can be done without a major revision of IMAP, but we can at +> least start the process and label the 5.5 and 7.4.1 rules as legacy. +> +> For the purposes of idioms that servers can optimize, a PIPELINE command +> would probably be better than IF-OK. Just think of the approved syntax +> for the MOVE command as being: +> tag PIPELINE (COPY seq dest) (STORE $ +FLAGS.SILENT \Deleted) (EXPUNGE) +> instead of +> tag MOVE seq dest +The MOVE looks a lot simpler. +> and +> tag PIPELINE (UID COPY seq dest) (UID STORE $ +FLAGS.SILENT \Deleted) +> (UID EXPUNGE $) +> instead of +> tag UID MOVE seq dest +Same here + +The PIPELINE and IF-OK options are getting close to defining a scripting +language. Are you planning to a an ELSE? + +tag COPY 1:100 saved +tag IF-OK STORE 1:100 +flags \deleted +tag ELSE STORE 1:100 +flags \flagged + + +> +> It's just syntactic sugar. +sweet! +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095205.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095205.22920.mbox:2,S new file mode 100644 index 00000000..f180964e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095205.22920.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From janssen at parc.com Tue Mar 20 18:43:49 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: which clients + use them?] +In-Reply-To: <46008660.2040107@avaya.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + <1174428749.1318.94.camel@hurina> + <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> + <1174437211.1318.113.camel@hurina> <46008660.2040107@avaya.com> +Message-ID: <07Mar20.174358pst."57996"@synergy1.parc.xerox.com> + +> I do know Wikipedia's policies and this is not a good idea. +> Wikipedia's content is restricted to "encyclopedic" topics, +> with information sourced from "reliable secondary sources". +> A list of IMAP clients and what protocol extensions they +> support, created by the subscribers to this list, would almost +> certainly be what Wikipedia calls "original research" (which +> is prohibited). Wikipedia does have articles on IMAP and +> a variety of other topics of interest to subscribers of this +> list. A non-exhaustive list of what should not be at Wikipedia +> is at . + +I don't think this is "original research", by their definition: "such +as proposing theories and solutions, original ideas, defining terms, +coining new words, etc." It would be a collection of hard facts, a +consensus of experts. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095206.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095206.22807.mbox:2,S new file mode 100644 index 00000000..9ffdfaeb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095206.22807.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From tss at iki.fi Tue Jun 15 10:37:23 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> +References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1276623443.2916.36.camel@kurkku.sapo.corppt.com> + +On Tue, 2010-06-15 at 09:26 -0700, Dan Karp wrote: +> > > Would it be unreasonable to state that the only untagged EXPUNGE +> > > responses from a MOVE command may be those directly resulting from +> > > the MOVE? (UID MOVE, like UID FETCH, would have no such +> > > constraints.) +> > +> > That requires an amendment to RFC 3501 7.4.1. +> +> Good form would be to amend it in any case. MOVE would definitely +> fall into the category of commands for which EXPUNGEs from other +> sources would cause loss of synchronization, and thus it needs to +> be added to the list in 7.4.1. + +The problem isn't only EXPUNGEs, but all untagged replies that refer to +messages (assuming MOVE doesn't send EXPUNGEs/MOVED replies to note when +the sequences change). + +Oh, now I started also thinking about NOTIFY+QRESYNC combination where +you can tell it to send VANISHED replies at any time. If MOVE is sending +EXPUNGE/VANISHED replies and if client cares about which ones of those +were from MOVE, it couldn't really know since a VANISHED reply might +have been sent to client just before the server received MOVE command. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095206.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095206.22920.mbox:2,S new file mode 100644 index 00000000..ca5ad425 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095206.22920.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Mar 20 14:18:09 2007 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <20070320133052.S8455@orthanc.ca> +References: <"07Mar20. 114847pst. 57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> +Message-ID: + +Lyndon Nerenberg writes: +> Alexey used to maintain a chart listing a variety of IMAP clients and +> servers, and the extensions they supported. If you go waay back in +> the list archives (circa 2001) you can probably find a reference to +> it, although I suspect it's long gone now. + +http://www.melnikov.ca/mel/devel/Links.html + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095207.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095207.22807.mbox:2,S new file mode 100644 index 00000000..33abe9ee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095207.22807.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From tss at iki.fi Tue Jun 15 10:47:33 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17B8E2.8050602@aol.com> +References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> + + <4C17B8E2.8050602@aol.com> +Message-ID: <1276624053.2916.41.camel@kurkku.sapo.corppt.com> + +On Tue, 2010-06-15 at 13:31 -0400, John Snow wrote: + +> The PIPELINE and IF-OK options are getting close to defining a scripting +> language. Are you planning to a an ELSE? + +I suggest we start designing IMAP5 based on XQuery. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095207.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095207.22920.mbox:2,S new file mode 100644 index 00000000..6a87f9e2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095207.22920.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From dave at cridland.net Wed Mar 21 01:55:35 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +Message-ID: <8854.1174467335.749254@invsysm1> + +On Tue Mar 20 12:48:46 2007, Bill Janssen wrote: +> search. I'm interested in knowing more about a fairly narrow topic: +> which clients use IMAP search, and how they use it. Is there such a +> chart? Or listing? I'd be happy to put one together if folks want +> to +> mail me contributions. + +Polymer uses IMAP searches, typically either ad-hoc searching for +flags, subject, body, to/cc/from, or allowing the user to define +arbitrary IMAP searches. It supports ESEARCH (somewhat obviously) and +will present the user with a dynamically updated view filtered by +searches. + +(As for other extensions, the simplest answer is "Yes"). + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095208.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095208.22807.mbox:2,S new file mode 100644 index 00000000..8af10934 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095208.22807.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jun 15 10:53:06 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <1276623443.2916.36.camel@kurkku.sapo.corppt.com> +Message-ID: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + +> > Good form would be to amend it in any case. MOVE would definitely +> > fall into the category of commands for which EXPUNGEs from other +> > sources would cause loss of synchronization, and thus it needs to +> > be added to the list in 7.4.1. +> +> The problem isn't only EXPUNGEs, but all untagged replies that refer +> to messages (assuming MOVE doesn't send EXPUNGEs/MOVED replies to note +> when the sequences change). + +I think you'd have to send EXPUNGEs. Just for client sanity's sake. + +> Oh, now I started also thinking about NOTIFY+QRESYNC combination where +> you can tell it to send VANISHED replies at any time. If MOVE is +> sending EXPUNGE/VANISHED replies and if client cares about which ones +> of those were from MOVE, it couldn't really know since a VANISHED reply +> might have been sent to client just before the server received MOVE +> command. + +Would it be unreasonable to state that the only untagged EXPUNGE +responses from a MOVE command may be those directly resulting from +the MOVE? (UID MOVE, like UID FETCH, would have no such constraints.) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095208.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095208.22920.mbox:2,S new file mode 100644 index 00000000..278fda7a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095208.22920.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From dave at cridland.net Wed Mar 21 01:56:50 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <20070320133052.S8455@orthanc.ca> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> +Message-ID: <8854.1174467410.055798@invsysm1> + +On Tue Mar 20 20:35:03 2007, Lyndon Nerenberg wrote: +>> In fact, I'd like to make a version of this chart which calls out +>> more +>> specifically IMAP features and usage, so that folks who want to use +>> IMAP mail services can have a better idea of which clients will be +>> most useful to them. What should those features be? +> +> Alexey used to maintain a chart listing a variety of IMAP clients +> and servers, and the extensions they supported. If you go waay +> back in the list archives (circa 2001) you can probably find a +> reference to it, although I suspect it's long gone now. +> +> +Servers are still done on melnikov.ca - I don't think clients ever +were, other than SASL mechanisms supported. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095209.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095209.22807.mbox:2,S new file mode 100644 index 00000000..aefc658a --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095209.22807.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 11:01:05 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17B8E2.8050602@aol.com> +References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> + + <4C17B8E2.8050602@aol.com> +Message-ID: + +On Tue, 15 Jun 2010, John Snow wrote: +> We agreed earlier that pipelining copy+store+expunge is a bad idea, +> because of the potential data loss if the COPY failed. + +No, because in this form of pipeline an error stops the pipe. + +That's the entire point of the exercise to improve pipelining. + +The reason why the current IMAP pipelining is inadequate is that there are +no stop-pipe-on-error semantics, nor is there a means to impose a state +lock. + +Improved IMAP pipelining would have both, and ultimate would make it +possible to abolish the less useful state locks of RFC 3501 5.5 and 7.4.1. +That, in turn, would make the concurrent access problem much less +troublesome. + +These are all far more desirable outcomes than syntactic sugar. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095209.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095209.22920.mbox:2,S new file mode 100644 index 00000000..83ebc577 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095209.22920.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From janssen at parc.com Wed Mar 21 19:53:35 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +Message-ID: <07Mar21.185340pst."57996"@synergy1.parc.xerox.com> + +Here's a little-known fact about Apple Mail: if you select SSL support +for IMAP, it actually will connect with SSL to the IMAP server, if and +only if the port is set to 993. If you specify any other port to +Apple Mail, and check the SSL checkbox, it will connect in the clear, +and attempt to do STARTTLS. If the server doesn't, in its +CAPABILITIES string, indicate STARTTLS, it will simply issue a LOGOUT +and disconnect. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095210.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095210.22807.mbox:2,S new file mode 100644 index 00000000..8328d0de --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095210.22807.mbox:2,S @@ -0,0 +1,51 @@ +MBOX-Line: From tss at iki.fi Tue Jun 15 11:25:45 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> +Message-ID: <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + +On Tue, 2010-06-15 at 10:53 -0700, Dan Karp wrote: + +> > Oh, now I started also thinking about NOTIFY+QRESYNC combination where +> > you can tell it to send VANISHED replies at any time. If MOVE is +> > sending EXPUNGE/VANISHED replies and if client cares about which ones +> > of those were from MOVE, it couldn't really know since a VANISHED reply +> > might have been sent to client just before the server received MOVE +> > command. +> +> Would it be unreasonable to state that the only untagged EXPUNGE +> responses from a MOVE command may be those directly resulting from +> the MOVE? (UID MOVE, like UID FETCH, would have no such constraints.) + +But that's what I was trying to explain above that it doesn't +necessarily work when enough extensions are being used: + +1. Client 1 enables QRESYNC, so it gets VANISHED (uidset) replies +instead of EXPUNGEs. + +2. Client 1 enables NOTIFY extension and tells server that it can handle +any untagged replies at any time (basically enables IDLE without the +IDLE command being running). + +3. Client 2 EXPUNGEs UID 123. + +4. Client 1 sends UID MOVE 1 command. + +5. Server sends VANISHED update to client 1. + +6. Server starts processing UID MOVE command. + +The result looks like: + +C: a UID MOVE 1 elsewhere +S: * VANISHED 123 +S: * VANISHED 1 +S: a OK [UIDMOVE 1] Moved + +I don't know if that's a big problem, but "EXPUNGEs can't be sent during +MOVE" is incompatible with QRESYNC+NOTIFY. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095210.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095210.22920.mbox:2,S new file mode 100644 index 00000000..95c4a5c5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095210.22920.mbox:2,S @@ -0,0 +1,41 @@ +MBOX-Line: From janssen at parc.com Wed Mar 21 20:00:14 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: which clients + use them?] +In-Reply-To: +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + <1174428749.1318.94.camel@hurina> + <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> + <1174437211.1318.113.camel@hurina> <46008660.2040107@avaya.com> + <07Mar20.174358pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar21.190015pst."57996"@synergy1.parc.xerox.com> + +> On a related note, I would not press the point too hard about saying +> certain software is not IMAP4rev1 compatible. As I recall, a few +> things became REQUIRED in RFC 3501 that were not in 2060, which was +> done without bumping the rev # on the protocol, i.e. IMAP4rev2, which +> would have given vendors a clear goal to work towards, without adding +> confusion. If my memory has served me correctly on that note, then a +> vendor could have been IMAP4rev1 compliant as of rfc2060 without +> supporting STARTTLS or disabling LOGIN, and so it is not fair to bait- +> and-switch by calling those two specs the same protocol rev. + +Interesting. I was wondering why the server would have to send +STARTTLS in the CAPABILITIES response if it was a required feature of +every server. This seems to answer that question. + +If Timo is starting a Wiki, perhaps an "Annotated RFC 3501", in the +spirit of Martin Gardner's THE ANNOTATED ALICE (see +http://www2.wwnorton.com/catalog/fall99/alice.htm), would be a good +thing to put up on it. It could annotate the RFC to explain these +things. + +Bill + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095211.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095211.22807.mbox:2,S new file mode 100644 index 00000000..bb3d466d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095211.22807.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 11:32:04 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <1276626345.2916.50.camel@kurkku.sapo.corppt.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> +Message-ID: + +On Tue, 15 Jun 2010, Timo Sirainen wrote: +> I don't know if that's a big problem, but "EXPUNGEs can't be sent during +> MOVE" is incompatible with QRESYNC+NOTIFY. + +Thanks for pointing that out. + +Lesson: "simple" solutions to complex problems tend to backfire. + +The nice thing about an improved pipeline capability is that it solves the +problem without changing the framework in any way. Since the framework is +unchanged, these unpleasant surprises don't happen. + +For better or worse, a MOVE command changes the framework; and this +requires that all of the interactions be considered. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095211.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095211.22920.mbox:2,S new file mode 100644 index 00000000..31b6cb71 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095211.22920.mbox:2,S @@ -0,0 +1,68 @@ +MBOX-Line: From guenther+imap at sendmail.com Wed Mar 21 22:20:01 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:38 2018 +Subject: IMAP Wiki [was: Re: [Imap-protocol] IMAP features: which clients + use them?] +In-Reply-To: <07Mar21.190015pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + <1174428749.1318.94.camel@hurina> + <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> + <1174437211.1318.113.camel@hurina> <46008660.2040107@avaya.com> + <07Mar20.174358pst."57996"@synergy1.parc.xerox.com> + + <07Mar21.190015pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Wed, 21 Mar 2007, Bill Janssen wrote: +>> On a related note, I would not press the point too hard about saying +>> certain software is not IMAP4rev1 compatible. As I recall, a few +>> things became REQUIRED in RFC 3501 that were not in 2060, which was +>> done without bumping the rev # on the protocol, i.e. IMAP4rev2, which +>> would have given vendors a clear goal to work towards, without adding +>> confusion. If my memory has served me correctly on that note, then a +>> vendor could have been IMAP4rev1 compliant as of rfc2060 without +>> supporting STARTTLS or disabling LOGIN, and so it is not fair to bait- +>> and-switch by calling those two specs the same protocol rev. +> +> Interesting. I was wondering why the server would have to send +> STARTTLS in the CAPABILITIES response if it was a required feature of +> every server. This seems to answer that question. + +"Things Change." Welcome to life with Internet protocols. + +When Van Jacobsen and Mike Karels rewrote the book on congestion control +for TCP, the protocol number for TCP wasn't changed, not even when RFC +1122 came out just over a year later and said that "A TCP MUST implement" +the various algorithms. Boom, all implementations more than a year or so +old were declared nonconforming with no number change. Was that fair? +No, but it saved the Internet from congestion collapse. + +Where do you draw the line between "bait-and-switch" and "ouch, that's +broken/harmful/insecure! Now we know better"? + +As for changing the version number on IMAP when STARTTLS was added, there +are two possibilities: either you break backwards compatibility or you +don't. If "IMAP4rev2" is incompatible with "IMAP4rev1", then no one will +want to upgrade their server, because none of their clients will work. +No sane server vendor would do such an upgrade and no sane client author +will add "IMAP4rev2" support until there's a server they can test against. +If "IMAP4rev2" is compatible with "IMAP4rev1", then it's just "STARTTLS" +with a different name. Since STARTTLS was an option for *four years* +before it became mandatory, changing it's name from "STARTTLS" to +"IMAP4rev2" would only mean that servers would advertise both and newer +clients would check for both. Completely pointless. + +Is "IMAP4rev1" a moving target? Sure. That's true of lots of stuff in +the Real World too. The standards for building codes change regularly: I +had to add *five* smoke detectors to my house as part of a *one* room +remodel. Car manufacturers have to keep adding safety features and +tweaking engines to meet changes in requirements. Cities tighten up their +water purification processes to meet tighter EPA standards on nitrate +levels. Change Happens. Welcome to the IETF, and Life. + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095212.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095212.22807.mbox:2,S new file mode 100644 index 00000000..c9d25bc0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095212.22807.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dkarp at zimbra.com Tue Jun 15 11:33:52 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <1276626345.2916.50.camel@kurkku.sapo.corppt.com> +Message-ID: <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + +> > Would it be unreasonable to state that the only untagged EXPUNGE +> > responses from a MOVE command may be those directly resulting from +> > the MOVE? (UID MOVE, like UID FETCH, would have no such +> > constraints.) +> +> But that's what I was trying to explain above that it doesn't +> necessarily work when enough extensions are being used: +> +> 1. Client 1 enables QRESYNC, so it gets VANISHED (uidset) replies +> instead of EXPUNGEs. +> +> 2. Client 1 enables NOTIFY extension and tells server that it can +> handle +> any untagged replies at any time (basically enables IDLE without the +> IDLE command being running). +> +> 3. Client 2 EXPUNGEs UID 123. +> +> 4. Client 1 sends UID MOVE 1 command. + +I think we can stop there. UID MOVE, like UID FETCH et al, would have +no problems with EXPUNGE or VANISHED notifications. It's MOVE (and +STORE, etc.) that have the issue addressed in RFC 3501 section 7.4.1. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095212.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095212.22920.mbox:2,S new file mode 100644 index 00000000..e442dd18 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095212.22920.mbox:2,S @@ -0,0 +1,99 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Wed Mar 21 22:50:04 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] protocol version numbers are not a panacea +In-Reply-To: <07Mar21.190015pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <20070320133052.S8455@orthanc.ca> + <07Mar20.133147pst."57996"@synergy1.parc.xerox.com> + <1174428749.1318.94.camel@hurina> + <07E59C2E-717C-4CD3-A668-6059C9F3AC0D@goodserver.com> + <1174437211.1318.113.camel@hurina> <46008660.2040107@avaya.com> + <07Mar20.174358pst."57996"@synergy1.parc.xerox.com> + + <07Mar21.190015pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Wed, 21 Mar 2007, Bill Janssen wrote: +>> On a related note, I would not press the point too hard about saying +>> certain software is not IMAP4rev1 compatible. As I recall, a few +>> things became REQUIRED in RFC 3501 that were not in 2060, which was +>> done without bumping the rev # on the protocol, i.e. IMAP4rev2, which +>> would have given vendors a clear goal to work towards, without adding +>> confusion. + +The STARTTLS mandate came from the IESG, which for the past several years +has had a policy of blocking the publication of any protocol specification +which does not have TLS. It did not come from the IMAP community. This +mandate affects EVERY IETF protocol. + +IMAP2 vs. IMAP4 vs. IMAP4rev1 created INCREDIBLE confusion. The only +reason why the original IMAP didn't create more confusion is that I +personally destroyed every copy of its specification and implementation. + +Oh, there were good reasons. IMAP2 was incompatible from the original +IMAP. IMAP4 was political to put an end to lingering questions brought +about by RFC 1203. + +IMAP4rev1 came about when it was determined, almost immediately after RFC +1730 was issued, that certain functionality in RFC 1730 was fatally +flawed; it had execution ambiguities that effectively precluded its use in +clients. The fixes were decided upon relatively quickly, and RFC 2060 was +issued in record time (only two years after RFC 1730). Sadly, RFC 2060 +was saddled with the "IMAP4rev1" name because a certain vendor threatened +to sue. + +Today, that IMAP4/IMAP4rev1 discrepancy is a terrible burden. + +Do you implement RFC 1730 in your client? If so, how do you deal with its +flaws, or do you just not use those features (if so, how is it different +from an RFC 3501 client)? + +How many servers that advertise IMAP4 have truly tested their RFC 1730 +support and audited it for security weaknesses? I know of servers which +advertise IMAP4 capability, but don't actually implement RFC 1730. + +Saddest of all, I've been contacted by people who (in recent years!) +looked up "the latest IMAP4 specification", determined that it is RFC +1730, and implemented it. Oops. They encounted its flaws, contacted me +asking how to deal with them, and were very shocked to learn that the real +IMAP is IMAP4rev1 and not IMAP4. + +Now let's consider IMAP's peer protocols: + +Email headers changed substantially from RFC 733 to RFC 822 to RFC 2822, +yet there is no versioning. + +MIME has a version, but it is forever frozen at 1.0. + +SMTP changed substantially from RFC 821 to RFC 2821, yet there is no +versioning. + +POP has versioning, but POP2 was incompatible from the original POP, and +POP3 is incompatible from POP2. There is no hope of an implementation of +POP2 interoperating with a POP3 implementation, or vice versa. + +>> If my memory has served me correctly on that note, then a +>> vendor could have been IMAP4rev1 compliant as of rfc2060 without +>> supporting STARTTLS or disabling LOGIN, and so it is not fair to bait- +>> and-switch by calling those two specs the same protocol rev. +> Interesting. I was wondering why the server would have to send +> STARTTLS in the CAPABILITIES response if it was a required feature of +> every server. This seems to answer that question. + +The IESG specifically deprecated protocols and servers that did not have +TLS. The reason why they did so should be obvious. + +RFC 3501 was issued YEARS after the policy was announced, and RFC 2060 was +one of the last documents issued prior to the announcement. Ask yourself: +how can ANY vendor today claim not to be aware that TLS is required in +Internet protocols? How can ANY vendor claim that it is "alright" in this +day and age to transmit passwords in the clear? + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095213.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095213.22807.mbox:2,S new file mode 100644 index 00000000..ad5fbaf2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095213.22807.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Tue Jun 15 11:52:10 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> +Message-ID: <4C17CBDA.6070604@gulbrandsen.priv.no> + +On 06/15/2010 08:33 PM, Dan Karp wrote: +> I think we can stop there. UID MOVE, like UID FETCH et al, would have +> no problems with EXPUNGE or VANISHED notifications. It's MOVE (and +> STORE, etc.) that have the issue addressed in RFC 3501 section 7.4.1. + +I'd be happy if the document specified only UID MOVE, not MOVE. How +about the other (would-be) implementers? + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095213.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095213.22920.mbox:2,S new file mode 100644 index 00000000..8d785347 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095213.22920.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From snowjn at aol.com Thu Mar 22 08:17:09 2007 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <45F84F27.6080202@aol.com> +References: <"07Mar12. 152936pst. 57996"@synergy1.parc.xerox.com> + <1173743673.9167.65.camel@hurina> <45F6A2E4.3060502@aol.com> + <45F83CCD.2050808@isode.com> <45F84311.3080906@aol.com> + + <45F84F27.6080202@aol.com> +Message-ID: <46029DF5.8060801@aol.com> + +John Snow wrote: +> +> +> arnt@gulbrandsen.priv.no wrote: +>> John Snow writes: +>>> Sort of. In vfolder, the search criteria is stored to create a +>>> view that is a subset of an existing mailbox. In that case, it can +>>> easily be treated the same as any other mailbox. My hope is to +>>> expand that beyond a single mailbox. +>> +>> Vfolder will do that by using Alexey's multimailbox search, at least +>> that's the vague intention. +>> + + +If we were to combine the multimailbox search with vfolder, what is +expected to be used for UIDs in a view the includes multiple mailboxes? +In the normal vfolder, the UID is the same one that exists in the +underlying mailbox. But since UIDs are only required to be unique +within the mailbox, combining multiples and using the underlying UID for +the message could result in duplicate UIDs. So, that's not right. + +snow. +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095214.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095214.22807.mbox:2,S new file mode 100644 index 00000000..499b8c7c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095214.22807.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From snowjn at aol.com Tue Jun 15 12:27:48 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17CBDA.6070604@gulbrandsen.priv.no> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> <1276626345.2916.50.camel@kurkku.sapo.corppt.com> <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> +Message-ID: <4C17D434.5080807@aol.com> + +Arnt Gulbrandsen wrote: +> On 06/15/2010 08:33 PM, Dan Karp wrote: +>> I think we can stop there. UID MOVE, like UID FETCH et al, would have +>> no problems with EXPUNGE or VANISHED notifications. It's MOVE (and +>> STORE, etc.) that have the issue addressed in RFC 3501 section 7.4.1. +> +> I'd be happy if the document specified only UID MOVE, not MOVE. How +> about the other (would-be) implementers? +I'd be fine with that. In fact, I'd prefer that we removed the sequence +set from all commands. Use UID for everything. + +How does everyone handle a large folder, say 500,000 messages? In order +to process sequence numbers, you have to +know which messages are in the set. The few implementations I've seen +do this by loading the messages into a cache. +This makes some command slow while the cache is loaded. There is also a +limit on how many messages can be loaded +in the cache. If UID were the only way to reference a message, then I +wouldn't need to cache the message list, I +could just work directly from the database. +> +> Arnt +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095214.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095214.22920.mbox:2,S new file mode 100644 index 00000000..731d8b05 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095214.22920.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dkarp at zimbra.com Thu Mar 22 18:28:37 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Fwd: ACL extension and unknown principals/mailboxes +In-Reply-To: <1134729743.35821174610251083.JavaMail.root@dogfood.liquidsys.com> +Message-ID: <1317989450.37761174613317672.JavaMail.root@dogfood.liquidsys.com> + +When you do a LISTRIGHTS and pass in an unknown principal as the +identifier, is the correct response + + * LISTRIGHTS INBOX unknown-user "" + A001 OK LISTRIGHTS succeeded + +or is it + + A001 NO LISTRIGHTS failed + +Likewise, when the principal is fine but the mailbox doesn't exist +or isn't visible, which is the correct response? + + +On a semi-related note, is there an issue with having a leading '/' +on your other-users'-NAMESPACE prefix when '/' is also your +hierarchy delimiter? I'd like to return the following: + + * NAMESPACE (("" "/")) (("/home/" "/")) NIL + +Would that cause issues with IMAP URLs? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095215.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095215.22807.mbox:2,S new file mode 100644 index 00000000..18b3e771 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095215.22807.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From daniel.keen at gmail.com Tue Jun 15 13:46:55 2010 +To: imap-protocol@u.washington.edu +From: Dan Keen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17D434.5080807@aol.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> +Message-ID: <1962E314-5BC3-4A09-B8A2-3C6104C09161@gmail.com> + +I would be fine with mandating that MOVE was UID only, but that makes it different from most commands. + +In regard to MSN in general, it is still very useful for initial synchronization. We use it every time for that (could go away with CONTEXT=SORT), but then rely upon UID for mutating messages. + +Sent from my iPhone + +On Jun 15, 2010, at 12:27 PM, John Snow wrote: + +> Arnt Gulbrandsen wrote: +>> +>> On 06/15/2010 08:33 PM, Dan Karp wrote: +>>> I think we can stop there. UID MOVE, like UID FETCH et al, would have +>>> no problems with EXPUNGE or VANISHED notifications. It's MOVE (and +>>> STORE, etc.) that have the issue addressed in RFC 3501 section 7.4.1. +>> +>> I'd be happy if the document specified only UID MOVE, not MOVE. How about the other (would-be) implementers? +> I'd be fine with that. In fact, I'd prefer that we removed the sequence set from all commands. Use UID for everything. +> +> How does everyone handle a large folder, say 500,000 messages? In order to process sequence numbers, you have to +> know which messages are in the set. The few implementations I've seen do this by loading the messages into a cache. +> This makes some command slow while the cache is loaded. There is also a limit on how many messages can be loaded +> in the cache. If UID were the only way to reference a message, then I wouldn't need to cache the message list, I +> could just work directly from the database. +>> +>> Arnt +>> _______________________________________________ +>> Imap-protocol mailing list +>> Imap-protocol@u.washington.edu +>> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095215.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095215.22920.mbox:2,S new file mode 100644 index 00000000..93e86af0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095215.22920.mbox:2,S @@ -0,0 +1,111 @@ +MBOX-Line: From guenther+imap at sendmail.com Thu Mar 22 21:25:41 2007 +To: imap-protocol@u.washington.edu +From: Philip Guenther +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Fwd: ACL extension and unknown + principals/mailboxes +In-Reply-To: <1317989450.37761174613317672.JavaMail.root@dogfood.liquidsys.com> +References: <1317989450.37761174613317672.JavaMail.root@dogfood.liquidsys.com> +Message-ID: + +On Thu, 22 Mar 2007, Dan Karp wrote: +> When you do a LISTRIGHTS and pass in an unknown principal as the +> identifier, is the correct response +> +> * LISTRIGHTS INBOX unknown-user "" +> A001 OK LISTRIGHTS succeeded +> +> or is it +> +> A001 NO LISTRIGHTS failed + +I would say the latter is, for consistency with how SETACL with an unknown +user should behave. Returning NO to LISTRIGHTS doesn't tell the user +anything they couldn't figure out by trying something like: + tag SETACL mailbox unknown-user s + + +> Likewise, when the principal is fine but the mailbox doesn't exist +> or isn't visible, which is the correct response? + +RFC 4314, section 4 effectively says that if you don't have the required +rights (as described by the table in that section), the server returns NO. +This is implied by by the text describing the exception to that rule: + LIST - "l" right is required. However, unlike other commands + (e.g., SELECT) the server MUST NOT return a NO response if it + can't list a mailbox. + +So, doesn't exist -> NO. If you try to use LISTRIGHTS on a mailbox for +which you lack the 'a' right (c.f. that table in section 4) *and* the 'l' +right, then the server MUST return the same error as if the mailbox +doesn't exist: RFC 4314, section 6: + An implementation MUST make sure the ACL commands themselves do not + give information about mailboxes with appropriately restricted ACLs. + For example, when a user agent executes a GETACL command on a mailbox + that the user has no permission to LIST, the server would respond to + that request with the same error that would be used if the mailbox + did not exist, thus revealing no existence information, much less the + mailbox's ACL. + +(If you have the 'l' right but not the 'a' right, then the server can give +some more helpful error message about permission denied, admin access +required, etc. Contriwise, if you have the 'a' right, you don't actually +need the 'l' right at all to use LISTRIGHTS, though it's hard to find a +real use case for that.) + + +> On a semi-related note, is there an issue with having a leading '/' +> on your other-users'-NAMESPACE prefix when '/' is also your +> hierarchy delimiter? I'd like to return the following: +> +> * NAMESPACE (("" "/")) (("/home/" "/")) NIL + +I don't see why that would cause any problems. Do you have a particular +issue in mind beyond URLs? + + +> Would that cause issues with IMAP URLs? + +Oof. Well, first off, a mailbox /home/foo/INBOX would have a URL of +something like: + imap://server//home/foo/INBOX + +Yes, two slashes, as the first slash is not part of the enc_mailbox +according to RFC 2192. + +Now, the standard for URI syntax, RFC 3986, notes this: + If a URI + does not contain an authority component, then the path cannot begin + with two slash characters ("//"). + +(You can't do that because it would be ambiguous to parse, of course.) + +That means that you cannot leave out the 'authority' component in relative +URLs for that mailbox above. Contrast a mailbox name that doesn't begin +with a slash, say, "INBOX", for which these are valid URLs: + imap://user@server:143/INBOX (absolute w/user + port) + imap://server/INBOX (absolute) + //server/INBOX (relative, implied server) + imap:/INBOX (relative, implied scheme) + /INBOX (relative, implied scheme + server) + +with that mailbox "/home/foo/INBOX", for which the last two variants above +are not available. That is, you can use these two: + imap://server//home/foo/INBOX + //server//home/foo/INBOX + +but not these two: + imap://home/foo/INBOX + //home/foo/INBOX + +(So what does "imap:INBOX" or just "INBOX" mean as an imap URL? Well, RFC +2192 doesn't say, but I presume that those would be relative to the +current base-URI. If your base-URI happened to be + "imap://server/lists/imap" +then those would both refer to + "imap://server/lists/INBOX" +...or at least that how I handle them. Alexey?) + + +Philip Guenther + diff --git a/demo/ermis-f/imap-protocol/cur/1600095216.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095216.22807.mbox:2,S new file mode 100644 index 00000000..ffd79764 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095216.22807.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 13:54:48 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <1962E314-5BC3-4A09-B8A2-3C6104C09161@gmail.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> + <1962E314-5BC3-4A09-B8A2-3C6104C09161@gmail.com> +Message-ID: + +On Tue, 15 Jun 2010, Dan Keen wrote: +> In regard to MSN in general, it is still very useful for initial +> synchronization. We use it every time for that (could go away with +> CONTEXT=SORT), but then rely upon UID for mutating messages. + +I find MSNs to be incredibly useful. The arguments to abolish MSNs seem +mostly to be based upon lack of understanding of how and why they are +useful. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095216.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095216.22920.mbox:2,S new file mode 100644 index 00000000..79c49dc2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095216.22920.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From dave at cridland.net Fri Mar 23 02:35:49 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] SEARCH restricted to one mailbox? Extensions? +In-Reply-To: <46029DF5.8060801@aol.com> +References: <46029DF5.8060801@aol.com>, <"07Mar12. 152936pst. + 57996"@synergy1.parc.xerox.com> <1173743673.9167.65.camel@hurina> + <45F6A2E4.3060502@aol.com> <45F83CCD.2050808@isode.com> + <45F84311.3080906@aol.com> + + <45F84F27.6080202@aol.com> +Message-ID: <2048.1174642549.442200@Nokia-N800-51> + +John Snow wrote: +> If we were to combine the multimailbox search with vfolder, what is +> expected to be used for UIDs in a view the includes multiple +> mailboxes? In the normal vfolder, the UID is the same one that +> exists in the underlying mailbox. But since UIDs are only required +> to be unique within the mailbox, combining multiples and using the +> underlying UID for the message could result in duplicate UIDs. So, +> that's not right. +> snow. +UIDs are not simply unique, but strictly increasing. +In a singly-backed vfolder, the uids can be the same if and only if +messages cannot dynamically appear other than bby delivery. +Dave. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095217.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095217.22807.mbox:2,S new file mode 100644 index 00000000..917309a0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095217.22807.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From snowjn at aol.com Tue Jun 15 14:03:25 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> <1276626345.2916.50.camel@kurkku.sapo.corppt.com> <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> <4C17CBDA.6070604@gulbrandsen.priv.no> + <4C17D434.5080807@aol.com> <1962E314-5BC3-4A09-B8A2-3C6104C09161@gmail.com> + +Message-ID: <4C17EA9D.7080201@aol.com> + +Mark Crispin wrote: +> On Tue, 15 Jun 2010, Dan Keen wrote: +>> In regard to MSN in general, it is still very useful for initial +>> synchronization. We use it every time for that (could go away with +>> CONTEXT=SORT), but then rely upon UID for mutating messages. +> +> I find MSNs to be incredibly useful. The arguments to abolish MSNs seem +> mostly to be based upon lack of understanding of how and why they are +> useful. +> +I wish you would stop doing that. Everytime someone questions the +status quo, you +reply that they must be doing so because they just don't understand. + +I understand the MSN are useful. But I also see where they cause +problems. So, I +asked the question of how anyone else deals with that problem. + +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095217.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095217.22920.mbox:2,S new file mode 100644 index 00000000..2c1bebbc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095217.22920.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From janssen at parc.com Sat Mar 24 12:46:04 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> +Message-ID: <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + +> In fact, I'd like to make a version of this chart which calls out more +> specifically IMAP features and usage, so that folks who want to use +> IMAP mail services can have a better idea of which clients will be +> most useful to them. What should those features be? + +I've started a comparison chart. My plan is to flesh this out with +the help of this list, then move it to the Wikipedia page on +"Comparison of email clients". Ideally, each box that isn't "?" +should have a link to a reference that backs up the assertion. I need +references on Thunderbird. + +See . + +Tell me what's wrong with it -- what columns and rows are missing. + +Tell me more about specific features of specific clients. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095218.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095218.22807.mbox:2,S new file mode 100644 index 00000000..bd0798d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095218.22807.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From mrc+imap at panda.com Tue Jun 15 14:09:42 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17EA9D.7080201@aol.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> + <1962E314-5BC3-4A09-B8A2-3C6104C09161@gmail.com> + + <4C17EA9D.7080201@aol.com> +Message-ID: + +On Tue, 15 Jun 2010, John Snow wrote: +> I wish you would stop doing that. Everytime someone questions the +> status quo, you reply that they must be doing so because they just don't +> understand. + +If you don't like it, then stop advocating the abolution of a basic +functionality that has been in the IMAP base specification from the +beginning (and, for that matter, is in POP). + +You have said many times that you don't have use for MSNs. That is your +choice. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095218.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095218.22920.mbox:2,S new file mode 100644 index 00000000..12e3d7ee --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095218.22920.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From janssen at parc.com Sat Mar 24 15:27:58 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +Message-ID: <07Mar24.142807pst."57996"@synergy1.parc.xerox.com> + +> See . +> +> Tell me what's wrong with it -- what columns and rows are missing. +> +> Tell me more about specific features of specific clients. + +Actually, when I said "tell me", I really meant, "tell the list", so +that the messages in the archive can be quoted as links. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095219.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095219.22807.mbox:2,S new file mode 100644 index 00000000..6e43cbe9 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095219.22807.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From snowjn at aol.com Tue Jun 15 14:16:04 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> + <1962E314-5BC3-4A09-B8A2-3C6104C09161@gmail.com> + + <4C17EA9D.7080201@aol.com> + +Message-ID: <4C17ED94.9080607@aol.com> + +Mark Crispin wrote: +> On Tue, 15 Jun 2010, John Snow wrote: +>> I wish you would stop doing that. Everytime someone questions the +>> status quo, you reply that they must be doing so because they just don't +>> understand. +> +> If you don't like it, then stop advocating the abolution of a basic +> functionality that has been in the IMAP base specification from the +> beginning (and, for that matter, is in POP). +> +> You have said many times that you don't have use for MSNs. That is your +> choice. +> +I said it once. and then asked a question. + +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095219.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095219.22920.mbox:2,S new file mode 100644 index 00000000..8783577e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095219.22920.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From lyndon at orthanc.ca Sat Mar 24 18:22:54 2007 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar24.142807pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <07Mar24.142807pst."57996"@synergy1.parc.xerox.com> +Message-ID: <4605CEEE.7040306@orthanc.ca> + +Bill Janssen wrote: +>> See . +>> +>> Tell me what's wrong with it -- what columns and rows are missing. +>> +>> Tell me more about specific features of specific clients. +> +> Actually, when I said "tell me", I really meant, "tell the list", so +> that the messages in the archive can be quoted as links. + +If you want the archives to be usefully searchable you should collect +the responses and then summarize to the list ;-) + diff --git a/demo/ermis-f/imap-protocol/cur/1600095220.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095220.22807.mbox:2,S new file mode 100644 index 00000000..7a39aa80 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095220.22807.mbox:2,S @@ -0,0 +1,23 @@ +MBOX-Line: From tss at iki.fi Tue Jun 15 14:30:11 2010 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17D434.5080807@aol.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> <1276626345.2916.50.camel@kurkku.sapo.corppt.com> <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> +Message-ID: <60C60CAD-FD75-4744-BDC0-4FB3F412CB80@iki.fi> + +On 15.6.2010, at 20.27, John Snow wrote: + +> How does everyone handle a large folder, say 500,000 messages? In order to process sequence numbers, you have to +> know which messages are in the set. The few implementations I've seen do this by loading the messages into a cache. +> This makes some command slow while the cache is loaded. There is also a limit on how many messages can be loaded +> in the cache. If UID were the only way to reference a message, then I wouldn't need to cache the message list, I +> could just work directly from the database. + +Many clients just fetch all of the flags from a mailbox each time they select it. I don't think getting rid of MSNs would help your performance with them. + +If a client accesses only the most recent messages, then you can just fetch their data (MSN-UID mapping, flags, ..?) from database. No need to waste memory/bandwidth/etc for messages that are never accessed. + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095220.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095220.22920.mbox:2,S new file mode 100644 index 00000000..9a9ccfad --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095220.22920.mbox:2,S @@ -0,0 +1,49 @@ +MBOX-Line: From dave at cridland.net Mon Mar 26 04:20:08 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +Message-ID: <7000.1174904408.192915@peirce.dave.cridland.net> + +On Sat Mar 24 13:46:04 2007, Bill Janssen wrote: +> I've started a comparison chart. My plan is to flesh this out with +> the help of this list, then move it to the Wikipedia page on +> "Comparison of email clients". Ideally, each box that isn't "?" +> should have a link to a reference that backs up the assertion. I +> need +> references on Thunderbird. +> +> See . +> +> Tell me what's wrong with it -- what columns and rows are missing. +> +> Tell me more about specific features of specific clients. + +On this list, Polymer supports SEARCH, ESEARCH, NAMESPACE [1], IDLE, +STARTTLS, SSL [2], MULTIAPPEND, UIDPLUS and IDLE [3]. + +I just updated +http://svn.dave.cridland.net/svn/projects/infotrope/polymer/doc/techie-stuff.html +which has a fairly complete annotated list. + +1: NAMESPACE support has a bug, exposed by the UW-IMAP's handling of +the MH inbox, where the prefix is NIL. +2: SSL support is pretty shaky. It's there, but quite possibly not +fully working. The real problem is that Polymer cannot easily figure +out a URL for message parts, and BURL servers cannot handle them +anyway. +3: Polymer will handle asynchronous updates with or without IDLE, as +well as dealing with pipelined commands executing out of order, as it +happens. EXPUNGE is the only thing it's specifically trying to get +out of IDLE. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095221.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095221.22807.mbox:2,S new file mode 100644 index 00000000..27285bd6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095221.22807.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From snowjn at aol.com Tue Jun 15 14:34:26 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <60C60CAD-FD75-4744-BDC0-4FB3F412CB80@iki.fi> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> <1276626345.2916.50.camel@kurkku.sapo.corppt.com> <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> + <60C60CAD-FD75-4744-BDC0-4FB3F412CB80@iki.fi> +Message-ID: <4C17F1E2.8060706@aol.com> + +Timo Sirainen wrote: +> On 15.6.2010, at 20.27, John Snow wrote: +> +> +>> How does everyone handle a large folder, say 500,000 messages? In order to process sequence numbers, you have to +>> know which messages are in the set. The few implementations I've seen do this by loading the messages into a cache. +>> This makes some command slow while the cache is loaded. There is also a limit on how many messages can be loaded +>> in the cache. If UID were the only way to reference a message, then I wouldn't need to cache the message list, I +>> could just work directly from the database. +>> +> +> Many clients just fetch all of the flags from a mailbox each time they select it. I don't think getting rid of MSNs would help your performance with them. +> +> If a client accesses only the most recent messages, then you can just fetch their data (MSN-UID mapping, flags, ..?) from database. No need to waste memory/bandwidth/etc for messages that are never accessed. +> +I agree, and that's how I handle it now. I'd like to find a way to not +need to load the MSN-UID mapping. Any ideas? +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095221.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095221.22920.mbox:2,S new file mode 100644 index 00000000..cd4f77c0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095221.22920.mbox:2,S @@ -0,0 +1,59 @@ +MBOX-Line: From alexey.melnikov at isode.com Sun Mar 25 13:52:26 2007 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] Fwd: ACL extension and unknown + principals/mailboxes +In-Reply-To: <1317989450.37761174613317672.JavaMail.root@dogfood.liquidsys.com> +References: <1317989450.37761174613317672.JavaMail.root@dogfood.liquidsys.com> +Message-ID: <4606E10A.6010009@isode.com> + +Hi Dan, + +Dan Karp wrote: + +>When you do a LISTRIGHTS and pass in an unknown principal as the +>identifier, is the correct response +> +> * LISTRIGHTS INBOX unknown-user "" +> A001 OK LISTRIGHTS succeeded +> +>or is it +> +> A001 NO LISTRIGHTS failed +> +> +If you want to prevent disclosing if an identifier exists, then you can +pretend that the user exist and return some default rights in the +LISTRIGHTS response. +However the LISTRIGHTS command already requires that the client has the +"a" right, so there might not be any point in hiding this information. + +Otherwise I think both responses are Ok, I have slight preference for +the former. + +>Likewise, when the principal is fine but the mailbox doesn't exist +> +> +Our server returns NO in this case. + +>or isn't visible, which is the correct response? +> +> +If the current user doesn't have the "a" right, the server should always +return NO to the current user. +The "l" right is not relevant for the LISTRIGHTS command. + +>On a semi-related note, is there an issue with having a leading '/' +>on your other-users'-NAMESPACE prefix when '/' is also your +>hierarchy delimiter? I'd like to return the following: +> +> * NAMESPACE (("" "/")) (("/home/" "/")) NIL +> +>Would that cause issues with IMAP URLs? +> +This is only an issue in relative URLs. The latest 2192bis draft adds a +requirement that leading slashes be %-encoded in relative URLs. + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095222.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095222.22807.mbox:2,S new file mode 100644 index 00000000..e6309407 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095222.22807.mbox:2,S @@ -0,0 +1,77 @@ +MBOX-Line: From witold.krecicki at firma.o2.pl Tue Jun 15 15:38:34 2010 +To: imap-protocol@u.washington.edu +From: Witold =?utf-8?q?Kr=C4=99cicki?= +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <1276626345.2916.50.camel@kurkku.sapo.corppt.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> +Message-ID: <201006160038.34411.witold.krecicki@firma.o2.pl> + +On Tuesday 15 of June 2010 20:25:45 Timo Sirainen wrote: +> On Tue, 2010-06-15 at 10:53 -0700, Dan Karp wrote: +> > > Oh, now I started also thinking about NOTIFY+QRESYNC combination where +> > > you can tell it to send VANISHED replies at any time. If MOVE is +> > > sending EXPUNGE/VANISHED replies and if client cares about which ones +> > > of those were from MOVE, it couldn't really know since a VANISHED reply +> > > might have been sent to client just before the server received MOVE +> > > command. +> > +> > Would it be unreasonable to state that the only untagged EXPUNGE +> > responses from a MOVE command may be those directly resulting from +> > the MOVE? (UID MOVE, like UID FETCH, would have no such constraints.) +> +> But that's what I was trying to explain above that it doesn't +> necessarily work when enough extensions are being used: +> +> 1. Client 1 enables QRESYNC, so it gets VANISHED (uidset) replies +> instead of EXPUNGEs. +> +> 2. Client 1 enables NOTIFY extension and tells server that it can handle +> any untagged replies at any time (basically enables IDLE without the +> IDLE command being running). +> +> 3. Client 2 EXPUNGEs UID 123. +> +> 4. Client 1 sends UID MOVE 1 command. +> +> 5. Server sends VANISHED update to client 1. +> +> 6. Server starts processing UID MOVE command. +> +> The result looks like: +> +> C: a UID MOVE 1 elsewhere +> S: * VANISHED 123 +> S: * VANISHED 1 +> S: a OK [UIDMOVE 1] Moved +> +> I don't know if that's a big problem, but "EXPUNGEs can't be sent during +> MOVE" is incompatible with QRESYNC+NOTIFY. +It's a pity that untagged EXPUNGE/VANISHED/etc. cannot contain response codes, +it'd make it so easy... +But maybe the solution that is used in SELECT +The result of previous situation: + +C: a UID MOVE 1 elsewhere +S: * VANISHED 123 +S: * OK [UIDMOVE 1] Moved / * OK [MOVE] Moved in case of lack of UIDPLUS +extension +S: * VANISHED 1 +S: a OK Moved + +of course untagged OK [MOVE]/ OK [UIDMOVE] must be directly preceeding proper +VANISHED/EXPUNGE untagged response, or it could state that the next N coming +VANISHED/EXPUNGE responses are the result of previous MOVE. + +That also solves problem with UIDMOVE response that is sent after the message +could be removed from client local indices by EXPUNGE responses. + + +-- +Witold Kr?cicki + +Grupa o2 Sp??ka z o.o., ul. Jutrzenki 177, 02-231 Warszawa, +KRS 0000140518, S?d Rejonowy dla m.st. Warszawy, +Kapita? zak?adowy 377.298,00 z?., NIP 521-31-11-513 + diff --git a/demo/ermis-f/imap-protocol/cur/1600095222.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095222.22920.mbox:2,S new file mode 100644 index 00000000..46f6056e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095222.22920.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From aspineux at gmail.com Mon Mar 26 07:22:02 2007 +To: imap-protocol@u.washington.edu +From: Alain Spineux +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> + +Message-ID: <71fe4e760703260722r1482abb2n6df7de8ad301c292@mail.gmail.com> + +On 3/20/07, Mark Crispin wrote: +> On Tue, 20 Mar 2007, Alain Spineux wrote: +> +> An implementation is likely to do so when it is uncomfortable with the +> contents; for example, \ was an ordinary character quoted strings in IMAP2 +> and thus implementations that seek to be IMAP2 compatible will avoid using +> quoted strings that have \ quoting. Another reason for discomfort is if +> the string is long; parsing for the trailing quote is more work than +> handling the literal. + +This is a usefull answere :-) + +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> + + +-- +-- +Alain Spineux +aspineux gmail com +May the sources be with you + diff --git a/demo/ermis-f/imap-protocol/cur/1600095223.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095223.22807.mbox:2,S new file mode 100644 index 00000000..746d27c6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095223.22807.mbox:2,S @@ -0,0 +1,78 @@ +MBOX-Line: From dave at cridland.net Wed Jun 16 02:53:21 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> +References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> +Message-ID: <15361.1276682001.982472@puncture> + +On Tue Jun 15 17:26:50 2010, Dan Karp wrote: +> > > Would it be unreasonable to state that the only untagged EXPUNGE +> > > responses from a MOVE command may be those directly resulting +> from +> > > the MOVE? (UID MOVE, like UID FETCH, would have no such +> > > constraints.) +> > +> > That requires an amendment to RFC 3501 7.4.1. +> +> Good form would be to amend it in any case. MOVE would definitely +> fall into the category of commands for which EXPUNGEs from other +> sources would cause loss of synchronization, and thus it needs to +> be added to the list in 7.4.1. +> +> +I'm missing the reason why. + +I was assuming that it'd look like: + +C: t UID MOVE 1:10 +S: * OK [COPYUID 1234 1:10 2:11] This response is optional +S: * VANISHED 1:10 +S: t OK Moved, and grooved. + +Or, without using UID, and without UIDPLUS or QRESYNC: + +C: t MOVE 1:10 +S: * EXPUNGE 1 +S: * EXPUNGE 2 +S: * EXPUNGE 3 +// ... +S: t OK Moved, and grooved. + +As long as clients expect there to be potentially more, or fewer, +expunges, then there's no loss of synchronization, as far as I can +tell, even if expunged fail for the MOVE itself, yet occur as a +result of unrelated actions. + +Are there likely to be server implementations which cannot do partial +expunges for some reason, by the way? As in, I model a MOVE as +COPY/STORE/UID EXPUNGE, essentially, but should we allow it to be +modelled as COPY/STORE/EXPUNGE? + + +> > Having MOVE issue untagged EXPUNGE responses is a problem, since +> it +> > tempts server implementors to do a non-atomic move. It also makes +> MOVE +> > chatty, and then results in pressure to add MOVE.SILENT or +> MOVEANDCLOSE. +> +> This is true to some extent, but even so it still makes MOVE +> slightly +> less chatty than COPY/STORE.SILENT/EXPUNGE. Certainly no more +> chatty. +> And you can probably nip a (misguided) MOVE.SILENT in the bud at +> this +> stage. + +See above - this isn't terribly chatty at all, with the right +extensions. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095223.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095223.22920.mbox:2,S new file mode 100644 index 00000000..0390a469 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095223.22920.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From janssen at parc.com Mon Mar 26 09:06:09 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <7000.1174904408.192915@peirce.dave.cridland.net> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <7000.1174904408.192915@peirce.dave.cridland.net> +Message-ID: <07Mar26.080619pst."57996"@synergy1.parc.xerox.com> + +> 2: SSL support is pretty shaky. It's there, but quite possibly not +> fully working. The real problem is that Polymer cannot easily figure +> out a URL for message parts, and BURL servers cannot handle them +> anyway. + +Dave, I don't think I understand this note. What do URLs have to do +with IMAP SSL support? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095224.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095224.22807.mbox:2,S new file mode 100644 index 00000000..da547da4 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095224.22807.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jun 16 03:01:18 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <15361.1276682001.982472@puncture> +References: <306561054.4215.1276619210367.JavaMail.root@dogfood.zimbra.com> + <15361.1276682001.982472@puncture> +Message-ID: <4C18A0EE.4040402@gulbrandsen.priv.no> + +On 06/16/2010 11:53 AM, Dave Cridland wrote: +> Are there likely to be server implementations which cannot do partial +> expunges for some reason, by the way? + +RFC 2359 is twelve years old and noone has mentioned any problems with +implementing UID EXPUNGE on the lists, so the chance seems small. Small +enough to disregard, I think. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095224.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095224.22920.mbox:2,S new file mode 100644 index 00000000..b0d9b0c3 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095224.22920.mbox:2,S @@ -0,0 +1,65 @@ +MBOX-Line: From dave at cridland.net Mon Mar 26 10:32:36 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar26.080619pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <7000.1174904408.192915@peirce.dave.cridland.net> + <07Mar26.080619pst."57996"@synergy1.parc.xerox.com> +Message-ID: <6000.1174926756.434557@peirce.dave.cridland.net> + +On Mon Mar 26 10:06:09 2007, Bill Janssen wrote: +> > 2: SSL support is pretty shaky. It's there, but quite possibly +> not > fully working. The real problem is that Polymer cannot easily +> figure > out a URL for message parts, and BURL servers cannot +> handle them > anyway. +> +> Dave, I don't think I understand this note. What do URLs have to do +> with IMAP SSL support? + +Yes, it's not an obvious issue, really. + + +is a URI pointing to a message (yours, as it happens). BURL (possibly +in concert with GENURLAUTH to provide pawn-ticket authorization) can +take this URL and use it as part of the source for a message. Polymer +can bookmark messages in ACAP by using the URI, too, and actuating +that bookmark (possibly on another machine) would then connect to +port 143 on turner, do the STARTTLS/AUTHENTICATE shuffle, and present +the message. So far, so brilliant. + + +is what Polymer would generate if it was using old-style SSL on a +different port. This is because for bookmarks, configuration, and +other internal message relocations, this is what's needed. +Unfortunately, this scheme is non-standard, and might not work for +GENURLAUTH or BURL - although Polymer can normalize URIs to a degree, +it can't know that port 143 is equivalent to port 993 except for SSL +negotiation, and there's no chance at all of ascertaining the correct +non-SSL port for an "imaps" service running on an arbitrary port, +hence things break. + +The general rules of thumb are: + +1) If you are a mail provider offering SSL, offer STARTTLS too, and +try to migrate your customers toward it. You are risking medium-term +breakage which is not apparent yet, but almost certainly will be, +especially for mobile email markets which are likely to be key to +your survival in the longer term. + +2) If you are a client developer, use STARTTLS wherever possible, and +attempt to migrate users away from old-style SSL. STARTTLS support +should be on by default and require no user-level configuration. + +3) If you are a user, use SSL as a last resort for gaining +encryption, and configure your client to use STARTTLS instead. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095225.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095225.22807.mbox:2,S new file mode 100644 index 00000000..dc9f246d --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095225.22807.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Wed Jun 16 03:06:41 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17F1E2.8060706@aol.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> + <60C60CAD-FD75-4744-BDC0-4FB3F412CB80@iki.fi> + <4C17F1E2.8060706@aol.com> +Message-ID: <4C18A231.8020302@gulbrandsen.priv.no> + +On 06/15/2010 11:34 PM, John Snow wrote: +> I agree, and that's how I handle it now. I'd like to find a way to not +> need to load the MSN-UID mapping. Any ideas? + +Store it and update on expunge. Might be a loss overall, who knows. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095225.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095225.22920.mbox:2,S new file mode 100644 index 00000000..ac63b157 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095225.22920.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Mon Mar 26 09:43:34 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <6000.1174926756.434557@peirce.dave.cridland.net> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <7000.1174904408.192915@peirce.dave.cridland.net> + <07Mar26.080619pst."57996"@synergy1.parc.xerox.com> + <6000.1174926756.434557@peirce.dave.cridland.net> +Message-ID: + +On Mon, 26 Mar 2007, Dave Cridland wrote: +> 1) If you are a mail provider offering SSL, offer STARTTLS too, and try to +> migrate your customers toward it. + +Bravo. + +> 2) If you are a client developer, use STARTTLS wherever possible, and attempt +> to migrate users away from old-style SSL. STARTTLS support should be on by +> default and require no user-level configuration. + +Bravo! + +> 3) If you are a user, use SSL as a last resort for gaining encryption, and +> configure your client to use STARTTLS instead. + +Bravo!!! + +The sooner SSL-only clients are abolished, the happier I would be. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095226.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095226.22807.mbox:2,S new file mode 100644 index 00000000..0af1c3d0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095226.22807.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dkarp at zimbra.com Wed Jun 16 05:11:49 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <15361.1276682001.982472@puncture> +Message-ID: <11418747.5765.1276690309071.JavaMail.root@dogfood.zimbra.com> + +> C: t MOVE 1:10 +> S: * EXPUNGE 1 +> S: * EXPUNGE 2 +> S: * EXPUNGE 3 +> // ... +> S: t OK Moved, and grooved. +> +> As long as clients expect there to be potentially more, or fewer, +> expunges, then there's no loss of synchronization, as far as I can +> tell, even if expunged fail for the MOVE itself, yet occur as a +> result of unrelated actions. + +It's the same issue addressed by RFC 3501 section 7.4.1: + + An EXPUNGE response MUST NOT be sent when no command is in + progress, nor while responding to a FETCH, STORE, or SEARCH + command. This rule is necessary to prevent a loss of + synchronization of message sequence numbers between client and + server. A command is not "in progress" until the complete command + has been received; in particular, a command is not "in progress" + during the negotiation of command continuation. + +MOVE falls into the same category as FETCH, STORE, and SEARCH. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095226.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095226.22920.mbox:2,S new file mode 100644 index 00000000..3173f9f2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095226.22920.mbox:2,S @@ -0,0 +1,39 @@ +MBOX-Line: From dave at cridland.net Mon Mar 26 13:04:28 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <7000.1174904408.192915@peirce.dave.cridland.net> + <07Mar26.080619pst."57996"@synergy1.parc.xerox.com> + <6000.1174926756.434557@peirce.dave.cridland.net> + +Message-ID: <6000.1174935868.118834@peirce.dave.cridland.net> + +On Mon Mar 26 17:43:34 2007, Mark Crispin wrote: +> The sooner SSL-only clients are abolished, the happier I would be. + +Absolutely, but while it's previously been largely [perceived as] a +matter of taste, there's a fairly nasty issue lurking when the +IMAP/URLAUTH and ESMTP/BURL extensions are considered. (There's also +similar-ish issues with MAILBOX-REFERRALS, but these are rarely +implemented by clients - to the extent that Lemonade's "Forward +Without Up^WDownload" Trio are probably more widely implemented now). + +Polymer is no longer the only client to use the Lemonade Trio, and +I'd not be too surprised to see a reasonable substantial number of +clients implement it within a few months, now. Even if I'm wrong, and +it remains a fairly specialized action, there's a cost - measured in +real-world currency for many people - attached to this issue, and +it's a pretty bad choice to alienate yourself from the mobile email +market right now. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095227.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095227.22807.mbox:2,S new file mode 100644 index 00000000..f3088dcd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095227.22807.mbox:2,S @@ -0,0 +1,52 @@ +MBOX-Line: From dave at cridland.net Wed Jun 16 05:22:10 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <11418747.5765.1276690309071.JavaMail.root@dogfood.zimbra.com> +References: <11418747.5765.1276690309071.JavaMail.root@dogfood.zimbra.com> +Message-ID: <15361.1276690930.129601@puncture> + +On Wed Jun 16 13:11:49 2010, Dan Karp wrote: +> > C: t MOVE 1:10 +> > S: * EXPUNGE 1 +> > S: * EXPUNGE 2 +> > S: * EXPUNGE 3 +> > // ... +> > S: t OK Moved, and grooved. +> > +> > As long as clients expect there to be potentially more, or fewer, +> > expunges, then there's no loss of synchronization, as far as I can +> > tell, even if expunged fail for the MOVE itself, yet occur as a +> > result of unrelated actions. +> +> It's the same issue addressed by RFC 3501 section 7.4.1: +> +> An EXPUNGE response MUST NOT be sent when no command is in +> progress, nor while responding to a FETCH, STORE, or SEARCH +> command. This rule is necessary to prevent a loss of +> synchronization of message sequence numbers between client and +> server. A command is not "in progress" until the complete +> command +> has been received; in particular, a command is not "in +> progress" +> during the negotiation of command continuation. +> +> MOVE falls into the same category as FETCH, STORE, and SEARCH. + +You think? + +I think it falls into the same category as EXPUNGE - both commands +are specifically designed to remove messages from the mailbox. + +The MSNs specifed as the argument to MOVE need to be dereferenced, in +effect, prior to any EXPUNGE occuring, as with UID SEARCH's errata +note (?5.5), but that's really it. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095227.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095227.22920.mbox:2,S new file mode 100644 index 00000000..9d7aa7a7 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095227.22920.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From dave at cridland.net Mon Mar 26 15:11:00 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +Message-ID: <6000.1174943460.276113@peirce.dave.cridland.net> + +On Sat Mar 24 13:46:04 2007, Bill Janssen wrote: +> Tell me what's wrong with it -- what columns and rows are missing. + +I'd be interested in seeing some Lemonade stuff, particularly "the +Trio" - BURL/CATENATE/URLAUTH. + +I suspect good extensions to list would be LITERAL+ and CHILDREN, +because both are highly deployed, and will make client developers +keener to have their client listed, although LIST-EXTENDED and BINARY +might be more interesting to server developers. + +SASL-IR, ACL, and QUOTA might also be interesting - the former has +been an eternal draft for some time but has some deployment I think, +and the latter two have reasonably high deployment in a "read-only" +mode. + +I can tell you that ACL is supported by Thunderbird in read-only +mode, and CHILDREN is easy to spot in many clients for anyone with +grep and the client binary. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095228.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095228.22807.mbox:2,S new file mode 100644 index 00000000..357abb6c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095228.22807.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From dkarp at zimbra.com Wed Jun 16 05:31:00 2010 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <15361.1276690930.129601@puncture> +Message-ID: <1892873904.5769.1276691460856.JavaMail.root@dogfood.zimbra.com> + +> > It's the same issue addressed by RFC 3501 section 7.4.1: +> > +> > An EXPUNGE response MUST NOT be sent when no command is in +> > progress, nor while responding to a FETCH, STORE, or SEARCH +> > command. This rule is necessary to prevent a loss of +> > synchronization of message sequence numbers between client and +> > server. A command is not "in progress" until the complete command +> > has been received; in particular, a command is not "in progress" +> > during the negotiation of command continuation. +> > +> > MOVE falls into the same category as FETCH, STORE, and SEARCH. +> +> I think it falls into the same category as EXPUNGE - both commands +> are specifically designed to remove messages from the mailbox. +> +> The MSNs specifed as the argument to MOVE need to be dereferenced, in +> effect, prior to any EXPUNGE occuring, as with UID SEARCH's errata +> note (?5.5), but that's really it. + +Mark can chime in here, but I'd think that the same logic would apply to +FETCH, STORE, and SEARCH. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095228.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095228.22920.mbox:2,S new file mode 100644 index 00000000..bd140158 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095228.22920.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From janssen at parc.com Mon Mar 26 17:00:52 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <6000.1174943460.276113@peirce.dave.cridland.net> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <6000.1174943460.276113@peirce.dave.cridland.net> +Message-ID: <07Mar26.160055pst."57996"@synergy1.parc.xerox.com> + +> I'd be interested in seeing some Lemonade stuff, particularly "the +> Trio" - BURL/CATENATE/URLAUTH. + +Should this be one column? + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095229.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095229.22807.mbox:2,S new file mode 100644 index 00000000..04fd747c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095229.22807.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Jun 16 18:21:54 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MOVE is a pipeline +In-Reply-To: <4C17D434.5080807@aol.com> +References: <1372616189.4386.1276624386644.JavaMail.root@dogfood.zimbra.com> + <1276626345.2916.50.camel@kurkku.sapo.corppt.com> + <484642146.4458.1276626832297.JavaMail.root@dogfood.zimbra.com> + <4C17CBDA.6070604@gulbrandsen.priv.no> <4C17D434.5080807@aol.com> +Message-ID: + +> How does everyone handle a large folder, say 500,000 messages? In order to +> process sequence numbers, you have to +> know which messages are in the set. The few implementations I've seen do +> this by loading the messages into a cache. + +Bloom filters get you most of the way there. + +--lyndon + diff --git a/demo/ermis-f/imap-protocol/cur/1600095229.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095229.22920.mbox:2,S new file mode 100644 index 00000000..1ed29abb --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095229.22920.mbox:2,S @@ -0,0 +1,46 @@ +MBOX-Line: From janssen at parc.com Mon Mar 26 17:07:10 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: Sebastian Hagedorn: Re: [Imap-protocol] IMAP features: which clients + use them? +Message-ID: <07Mar26.160715pst."57996"@synergy1.parc.xerox.com> + +Here's some more user experience... + +Bill +------- Forwarded Message + +Date: Sat, 24 Mar 2007 14:49:03 PDT +From: Sebastian Hagedorn +To: Bill Janssen +Subject: Re: [Imap-protocol] IMAP features: which clients use them? + +Hi Bill, + +-- Bill Janssen is rumored to have mumbled on 24. Mar +2007 12:46:04 -0700 regarding Re: [Imap-protocol] IMAP features: which +clients use them? : + +> See . +> +> Tell me what's wrong with it -- what columns and rows are missing. +> +> Tell me more about specific features of specific clients. + +I've been using Mulberry for many years. It supports: + +SEARCH +NAMESPACE +SSL +STARTTLS (but you have to configure both SSL and STARTTLS manually, i.e. +there is no autonegotiation) +SORT +THREAD + +Cheers, Sebastian +-- +Sebastian Hagedorn - RZKR-R1 (Flachbau), Zi. 18, Robert-Koch-Str. 10 +Zentrum fόr angewandte Informatik - Universitδtsweiter Service RRZK +Universitδt zu Kφln / Cologne University - Tel. +49-221-478-5587Content-Type: application/pgp-signature + diff --git a/demo/ermis-f/imap-protocol/cur/1600095230.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095230.22807.mbox:2,S new file mode 100644 index 00000000..53bd9670 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095230.22807.mbox:2,S @@ -0,0 +1,33 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Jun 16 18:51:10 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] COPY v. QUOTA +Message-ID: + +I seem to recall the expressed motivation for MOVE was to work around +failure of COPY when the target mailbox was at its quota limit. What I +can't figure out is how this is useful in the real world. Presumably it +only serves a purpose when the source and destination mailboxes are under +the same QUOTAROOT. So while MOVE allows messages to be shuffled amongst +folders under that root, it doesn't allow the introduction of new +messages. + +I'm finding it very difficult to believe that this is such a common +scenario that it warrants an extension to the protocol. Especially when +the workaround is as simple as deleting a couple of messages, or bumping +the quota up a bit. And once you've hit the limit you are going to have to +do one or both of the above to carry on anyway. + +Furthermore, the more I look at this the harder I'm finding it to imagine +a reasonable server implementation capable of implementing MOVE that could +not also provide a COPY operation that would not increase the quota usage +for the QUOTAROOT for a COPY operation within that root. Note that I said +"reasonable." Anyone can come up with examples of intractable environments +where it can't be done, but I don't consider someone's insistence on, say, +implementing their store on a FAT filesystem as justification for a +protocol workaround for a bad engineering decision. + +--lyndon + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095230.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095230.22920.mbox:2,S new file mode 100644 index 00000000..210f5c61 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095230.22920.mbox:2,S @@ -0,0 +1,38 @@ +MBOX-Line: From janssen at parc.com Mon Mar 26 17:18:00 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:38 2018 +Subject: Lyndon Nerenberg: Re: [Imap-protocol] IMAP features: which clients + use them? +Message-ID: <07Mar26.161800pst."57996"@synergy1.parc.xerox.com> + +And more... + +Cute client. I take it that "uses no other capabilities" means that +it doesn't support any IMAP extensions. + +Bill + +------- Forwarded Message + +From: Lyndon Nerenberg +Subject: Re: [Imap-protocol] IMAP features: which clients use them? +Date: Sat, 24 Mar 2007 13:32:10 PDT +To: Bill Janssen + +Literal+ is missing from the chart, and I would suggest adding the +list of supported SASL mechanisms (but restrict it to standards track +mechanisms). + +And you can add the following client: + +Name: Plan 9 upas/fs (as of 2007-03-24) +SASL Mechs: CRAM-MD5 +SSL: Yes (port 993 only) +STARTTLS: no +Capabilities: uses no other capabilities. +More info: http://plan9.bell-labs.com/magic/man2html/4/upasfs + +------- End of Forwarded Message + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095231.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095231.22807.mbox:2,S new file mode 100644 index 00000000..0a6d75d2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095231.22807.mbox:2,S @@ -0,0 +1,34 @@ +MBOX-Line: From mrc+imap at panda.com Wed Jun 16 20:02:54 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] COPY v. QUOTA +In-Reply-To: +References: +Message-ID: + +On Wed, 16 Jun 2010, Lyndon Nerenberg wrote: +> I seem to recall the expressed motivation for MOVE was to work around +> failure of COPY when the target mailbox was at its quota limit. + +It's not about quotas, or client RTTs; both of those have alternative +solutions. + +It's about support for a mail store based on a database designed to do +MOVE quickly but not COPY. + +Neither Maildir no Cyrus fall into this category, as they can use +hardlinks to do COPY as fast as MOVE. This also very nicely fixes the +quota problem, as you can have the same message in multiple mailboxes but +get dinged for only one instance of it against your quota. + +The correct solution for all the problems is to fix the deficiencies in +IMAP pipelining. That fix would remedy a number of other problems as +well. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095231.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095231.22920.mbox:2,S new file mode 100644 index 00000000..b4678795 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095231.22920.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From janssen at parc.com Mon Mar 26 17:19:21 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:39 2018 +Subject: Brendan Cully: Re: [Imap-protocol] IMAP features: which clients use + them? +Message-ID: <07Mar26.161925pst."57996"@synergy1.parc.xerox.com> + +And more... Is there an RFC for command pipelining? + +Bill + +------- Forwarded Message + +Date: Sat, 24 Mar 2007 13:18:08 PDT +To: Bill Janssen +Subject: Re: [Imap-protocol] IMAP features: which clients use them? +From: Brendan Cully + +mutt also supports idle, ssl and starttls. + +command pipelining might be worth adding -- like IDLE, it tends to +exercise the darker corners of some servers. Mutt does this too. + + +------- End of Forwarded Message + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095232.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095232.22807.mbox:2,S new file mode 100644 index 00000000..5c5ee0db --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095232.22807.mbox:2,S @@ -0,0 +1,45 @@ +MBOX-Line: From snowjn at aol.com Wed Jun 16 20:11:07 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] COPY v. QUOTA +In-Reply-To: +References: + +Message-ID: <4C19924B.6090705@aol.com> + + + +Mark Crispin wrote: +> On Wed, 16 Jun 2010, Lyndon Nerenberg wrote: +>> I seem to recall the expressed motivation for MOVE was to work around +>> failure of COPY when the target mailbox was at its quota limit. +> +> It's not about quotas, or client RTTs; both of those have alternative +> solutions. +> +> It's about support for a mail store based on a database designed to do +> MOVE quickly but not COPY. +> +> Neither Maildir no Cyrus fall into this category, as they can use +> hardlinks to do COPY as fast as MOVE. This also very nicely fixes the +> quota problem, as you can have the same message in multiple mailboxes but +> get dinged for only one instance of it against your quota. +> +> The correct solution for all the problems is to fix the deficiencies in +> IMAP pipelining. That fix would remedy a number of other problems as +> well. +Are there any clients that pipeline commands? +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095232.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095232.22920.mbox:2,S new file mode 100644 index 00000000..905f04e5 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095232.22920.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 26 17:22:25 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: Brendan Cully: Re: [Imap-protocol] IMAP features: which clients + use them? +In-Reply-To: <07Mar26.161925pst."57996"@synergy1.parc.xerox.com> +References: <07Mar26.161925pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 26 Mar 2007, Bill Janssen wrote: +> And more... Is there an RFC for command pipelining? + +It's described in the base specification. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095233.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095233.22807.mbox:2,S new file mode 100644 index 00000000..8c592a05 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095233.22807.mbox:2,S @@ -0,0 +1,69 @@ +MBOX-Line: From snowjn at aol.com Wed Jun 16 20:58:45 2010 +To: imap-protocol@u.washington.edu +From: John Snow +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] COPY v. QUOTA +In-Reply-To: +References: +Message-ID: <4C199D75.8020502@aol.com> + + + +Lyndon Nerenberg wrote: +> I seem to recall the expressed motivation for MOVE was to work around +> failure of COPY when the target mailbox was at its quota limit. What I +> can't figure out is how this is useful in the real world. Presumably +> it only serves a purpose when the source and destination mailboxes are +> under the same QUOTAROOT. So while MOVE allows messages to be shuffled +> amongst folders under that root, it doesn't allow the introduction of +> new messages. +> +The quota issue occurs when a client is determined to use a move to +trash model instead of the designed flag as deleted in place. When that +user realizes that his mailbox is full, he try to do the right thing and +finally delete some old mail. The client tries to copy the message to a +trash folder, but the copy fails because the mailbox is full. Since the +copy fails, the user is stuck. This is the reason we added XAOL-MOVE. +Any RTT or database efficiencies we gained were just a bonus. + +The move in this case would allow the client to do what it's trying to +do and move the message to the trash folder before Emptying the trash. + +You're right, no new messages can be deposited until the user deletes +something. + +> I'm finding it very difficult to believe that this is such a common +> scenario that it warrants an extension to the protocol. Especially +> when the workaround is as simple as deleting a couple of messages, or +> bumping the quota up a bit. And once you've hit the limit you are +> going to have to do one or both of the above to carry on anyway. +That's true as long as the client deletes the message in place. You +could bump the quota, but since there's no standard "Trash" folder, how +would the server know that the folder that the client is copying to is +the "Trash" folder and to ignore the quota for that copy. Sure you +could work around this issue with a pipelined copy/store/delete provided +you could stop between commands when something goes wrong, but why +process 3 commands when 1 command will do? +> +> Furthermore, the more I look at this the harder I'm finding it to +> imagine a reasonable server implementation capable of implementing +> MOVE that could not also provide a COPY operation that would not +> increase the quota usage for the QUOTAROOT for a COPY operation within +> that root. Note that I said "reasonable." Anyone can come up with +> examples of intractable environments where it can't be done, but I +> don't consider someone's insistence on, say, implementing their store +> on a FAT filesystem as justification for a protocol workaround for a +> bad engineering decision. +> +That depends on the product rules of the mail system. Just because you +could make multiple references to one copy doesn't mean that it's +accounted for that way. +> --lyndon +> +> _______________________________________________ +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> http://mailman2.u.washington.edu/mailman/listinfo/imap-protocol +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095233.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095233.22920.mbox:2,S new file mode 100644 index 00000000..6f15c833 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095233.22920.mbox:2,S @@ -0,0 +1,20 @@ +MBOX-Line: From janssen at parc.com Mon Mar 26 17:44:38 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:39 2018 +Subject: Brendan Cully: Re: [Imap-protocol] IMAP features: which clients + use them? +In-Reply-To: +References: <07Mar26.161925pst."57996"@synergy1.parc.xerox.com> + +Message-ID: <07Mar26.164446pst."57996"@synergy1.parc.xerox.com> + +> On Mon, 26 Mar 2007, Bill Janssen wrote: +> > And more... Is there an RFC for command pipelining? +> +> It's described in the base specification. + +Apparently not by that name... + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095234.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095234.22807.mbox:2,S new file mode 100644 index 00000000..4965715e --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095234.22807.mbox:2,S @@ -0,0 +1,22 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Thu Jun 17 00:19:06 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] COPY v. QUOTA +In-Reply-To: <4C19924B.6090705@aol.com> +References: + + <4C19924B.6090705@aol.com> +Message-ID: <4C19CC6A.8000701@gulbrandsen.priv.no> + +On 06/17/2010 05:11 AM, John Snow wrote: +> Are there any clients that pipeline commands? + +Many. + +Few (or none?) do it to the extent IMAP allows, but many do it a little. +Typical examples include sending several UID STOREs at the same time, or +sending UID FETCH 1;* FLAGS without waiting for SELECT FOO to complete. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095234.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095234.22920.mbox:2,S new file mode 100644 index 00000000..68709924 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095234.22920.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Mon Mar 26 17:46:14 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: Brendan Cully: Re: [Imap-protocol] IMAP features: which clients + use them? +In-Reply-To: <07Mar26.164446pst."57996"@synergy1.parc.xerox.com> +References: <07Mar26.161925pst."57996"@synergy1.parc.xerox.com> + + <07Mar26.164446pst."57996"@synergy1.parc.xerox.com> +Message-ID: + +On Mon, 26 Mar 2007, Bill Janssen wrote: +>> On Mon, 26 Mar 2007, Bill Janssen wrote: +>>> And more... Is there an RFC for command pipelining? +>> It's described in the base specification. +> Apparently not by that name... + +RFC 3501 section 5.5. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095235.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095235.22807.mbox:2,S new file mode 100644 index 00000000..05adad24 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095235.22807.mbox:2,S @@ -0,0 +1,21 @@ +MBOX-Line: From stujenerin at aol.com Thu Jun 17 07:55:55 2010 +To: imap-protocol@u.washington.edu +From: stu +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] COPY v. QUOTA +In-Reply-To: <4C19CC6A.8000701@gulbrandsen.priv.no> +References: <4C19924B.6090705@aol.com> + <4C19CC6A.8000701@gulbrandsen.priv.no> +Message-ID: <4C1A377B.8070300@aol.com> + +Pipelining UID FETCH 1:* with SELECT FOO seems like an unwise +implementation choice for reasons covered by RFC2683 section 3.2.1.2 + +Arnt Gulbrandsen wrote: +> Few (or none?) do it to the extent IMAP allows, but many do it a +> little. Typical examples include sending several UID STOREs at the +> same time, or sending UID FETCH 1;* FLAGS without waiting for SELECT +> FOO to complete. +> + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095235.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095235.22920.mbox:2,S new file mode 100644 index 00000000..3dc875ff --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095235.22920.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From janssen at parc.com Mon Mar 26 17:57:11 2007 +To: imap-protocol@u.washington.edu +From: Bill Janssen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> +Message-ID: <07Mar26.165721pst."57996"@synergy1.parc.xerox.com> + +I've pushed an updated page, with some suggestions incorporated, data +folded in, and links to the appropriate RFC for each extension. + +Anyone know where in IETF space the use of the IMAP protocol over SSL +is defined? I see there's no "imaps" URI scheme in the registry. + +Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095236.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095236.22807.mbox:2,S new file mode 100644 index 00000000..ccb1bd4c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095236.22807.mbox:2,S @@ -0,0 +1,14 @@ +MBOX-Line: From mail at sabahattin-gucukoglu.com Fri Jun 18 01:29:41 2010 +To: imap-protocol@u.washington.edu +From: Sabahattin Gucukoglu +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MSN Ranges +Message-ID: + +While following the intriguing discussion on Move, it was pointed out that MSNs are a nuisance. + +I want to ask those who probably know more, how many clients actually endeavour to optimise operations by computing MSN ranges, and using range semantics in IMAP when users perform operations on multiple consecutive messages? In my experience it seems to be none of them. + +Cheers, +Sabahattin + diff --git a/demo/ermis-f/imap-protocol/cur/1600095236.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095236.22920.mbox:2,S new file mode 100644 index 00000000..de41f2fd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095236.22920.mbox:2,S @@ -0,0 +1,29 @@ +MBOX-Line: From dave at cridland.net Tue Mar 27 03:10:24 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar26.160055pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <6000.1174943460.276113@peirce.dave.cridland.net> + <07Mar26.160055pst."57996"@synergy1.parc.xerox.com> +Message-ID: <6000.1174986624.949918@peirce.dave.cridland.net> + +On Mon Mar 26 18:00:52 2007, Bill Janssen wrote: +> > I'd be interested in seeing some Lemonade stuff, particularly +> "the > Trio" - BURL/CATENATE/URLAUTH. +> +> Should this be one column? + +Yes, they're usually implemented as a trio. (Actually, a Quartet, +since you also need UIDPLUS for it to be useful). Exceptions can be +called out. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095237.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095237.22807.mbox:2,S new file mode 100644 index 00000000..6cfe8910 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095237.22807.mbox:2,S @@ -0,0 +1,31 @@ +MBOX-Line: From mrc+imap at panda.com Fri Jun 18 02:32:29 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MSN Ranges +In-Reply-To: +References: +Message-ID: + +On Fri, 18 Jun 2010, Sabahattin Gucukoglu wrote: +> While following the intriguing discussion on Move, it was pointed out +> that MSNs are a nuisance. + +Not to the clients that depend upon them. + +> I want to ask those who probably know more, how many clients actually +> endeavour to optimise operations by computing MSN ranges, and using +> range semantics in IMAP when users perform operations on multiple +> consecutive messages? In my experience it seems to be none of them. + +Without thinking very hard, I can come up with at least 7 clients that use +MSNs exclusively, and another 5 that use both MSNs and UIDs. + +End of discussion. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095237.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095237.22920.mbox:2,S new file mode 100644 index 00000000..db504a49 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095237.22920.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From dave at cridland.net Tue Mar 27 03:53:48 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] IMAP features: which clients use them? +In-Reply-To: <07Mar26.165721pst."57996"@synergy1.parc.xerox.com> +References: <07Mar20.114847pst."57996"@synergy1.parc.xerox.com> + <07Mar24.114611pst."57996"@synergy1.parc.xerox.com> + <07Mar26.165721pst."57996"@synergy1.parc.xerox.com> +Message-ID: <6000.1174989228.195272@peirce.dave.cridland.net> + +On Mon Mar 26 18:57:11 2007, Bill Janssen wrote: +> I've pushed an updated page, with some suggestions incorporated, +> data +> folded in, and links to the appropriate RFC for each extension. +> +> +Looks good. Polymer does CHILDREN, too. It uses LISTEXT in preference +to CHILDREN if available, and uses LIST-EXTENDED in preference to +LISTEXT/CHILDREN if that's available. + + +> Anyone know where in IETF space the use of the IMAP protocol over +> SSL +> is defined? I see there's no "imaps" URI scheme in the registry. + +Indeed. It's non-standard. "imaps" was largely an interim solution +used by some whilst waiting for STARTTLS (RFC2595, then later +incorporated into RFC3501). + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095238.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095238.22807.mbox:2,S new file mode 100644 index 00000000..9f5536f0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095238.22807.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From arnt at gulbrandsen.priv.no Fri Jun 18 02:56:35 2010 +To: imap-protocol@u.washington.edu +From: Arnt Gulbrandsen +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MSN Ranges +In-Reply-To: +References: +Message-ID: <4C1B42D3.2030106@gulbrandsen.priv.no> + +So that someone answers your actual questions: + +On 06/18/2010 10:29 AM, Sabahattin Gucukoglu wrote: +> I want to ask those who probably know more, how many clients actually endeavour to optimise operations by computing MSN ranges, + +Some clients will do MSN arithmetic conditionally. For example, pine +will do it if you disable threading. I've no idea how many pine users +disable threading. (Mark? do you know?) + +I can only remember one client that did it unconditionally. Some feeble +mobile phone thing that I looked at and rejected at once for lacking all +forms of threading. + +So, the number is nonzero, and it has to be said that pine is pleasantly +fast if you disable threading. + +> and using range semantics in IMAP when users perform operations on multiple consecutive messages? + +Lots. Both UID STORE 123:139,153 +FLAGS ... and STORE 123:139,153 +FLAGS +... are frequently used instead of 123,124,125...,139,153. + +Arnt + diff --git a/demo/ermis-f/imap-protocol/cur/1600095238.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095238.22920.mbox:2,S new file mode 100644 index 00000000..c3403d89 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095238.22920.mbox:2,S @@ -0,0 +1,13 @@ +MBOX-Line: From dkarp at zimbra.com Tue Mar 27 09:56:01 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] MULTIAPPEND practice +Message-ID: <673436100.23171175014561192.JavaMail.root@dogfood.liquidsys.com> + +Are there any limits which might prevent a client from sending a single 1GB MULTIAPPEND request (for example, 100,000 10K messages to be added to the same quotaless mailbox), especially if LITERAL+ is available? With the "atomic transaction" requirement, this could potentially be a headache. + +In practice, do real-world IMAP clients attempt to break such large potential MULTIAPPENDs into smaller batches, or do they rely on the server to process the APPENDed messages as they go? + +Is it acceptable for a server to queue the APPENDed messages and process them once the end of the MULTIAPPEND is reached? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095239.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095239.22807.mbox:2,S new file mode 100644 index 00000000..50ce0840 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095239.22807.mbox:2,S @@ -0,0 +1,44 @@ +MBOX-Line: From dave at cridland.net Fri Jun 18 03:45:46 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] MSN Ranges +In-Reply-To: +References: +Message-ID: <14481.1276857946.312878@puncture> + +On Fri Jun 18 09:29:41 2010, Sabahattin Gucukoglu wrote: +> I want to ask those who probably know more, how many clients +> actually endeavour to optimise operations by computing MSN ranges, + +Polymer doesn't much, but it uses them in SEARCH operations to build +up its partial UID mapping. Otherwise, it generally operates such +that pipelining is sufficiently frequently used that it's too risky +to send MSNs; it does however use MSNs returned elsewhere to aid in +maintaining its mapping. + +(If you ask Polymer to move one message to one mailbox and another +message to another on a sufficiently slow link, it'll end up +interleaving the move sequences, as: COPY, COPY, STORE+UID EXPUNGE, +STORE+UID EXPUNGE - this kind of behaviour means that different +portions of the client aren't aware of whether there's other commands +in progress or not, hence the reliance on UIDs in command arguments) + +> and using range semantics in IMAP when users perform operations on +> multiple consecutive messages? In my experience it seems to be +> none of them. + +Polymer - and many other clients - use ranges very heavily. Polymer +will build ranges out of either MSNs or UIDs before sending, +including collapsing ranges over non-existent UIDs, etc. + +I suspect that any client using sets at all will use ranges - I've +not seen a client use sets without doing so that I recall. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095239.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095239.22920.mbox:2,S new file mode 100644 index 00000000..aeb1fc28 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095239.22920.mbox:2,S @@ -0,0 +1,18 @@ +MBOX-Line: From alexey.melnikov at isode.com Tue Mar 27 10:01:09 2007 +To: imap-protocol@u.washington.edu +From: Alexey Melnikov +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] MULTIAPPEND practice +In-Reply-To: <673436100.23171175014561192.JavaMail.root@dogfood.liquidsys.com> +References: <673436100.23171175014561192.JavaMail.root@dogfood.liquidsys.com> +Message-ID: <46094DD5.4090002@isode.com> + +Dan Karp wrote: + +>Is it acceptable for a server to queue the APPENDed messages and process them once the end of the MULTIAPPEND is reached? +> +> +Yes. Why not? + + + diff --git a/demo/ermis-f/imap-protocol/cur/1600095240.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095240.22807.mbox:2,S new file mode 100644 index 00000000..7b7ad3cf --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095240.22807.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From norman at apache.org Wed Jun 23 08:41:21 2010 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:44 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +Message-ID: + +Hi there, + +I'm currently working on an java based IMAP-Server and wonder how I +need so react on failures while processing a "STORE" command. + +If we have for example the following command: + +a store 1:100 flags \Seen + +What should I return if the flag update fails for for message 3 only? +Do I still return the new flags for the rest of the messages (+just +return the old flags for message 3) and response with ok or do I need +to rollback all the changes made during processing the command and +response with an error ? + +I'm currently try to understand if I need to handle such commands in +some kind of transaction.. + +Thanks, +Norman + diff --git a/demo/ermis-f/imap-protocol/cur/1600095240.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095240.22920.mbox:2,S new file mode 100644 index 00000000..7321f7dd --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095240.22920.mbox:2,S @@ -0,0 +1,83 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Tue Mar 27 10:57:02 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] MULTIAPPEND practice +In-Reply-To: <673436100.23171175014561192.JavaMail.root@dogfood.liquidsys.com> +References: <673436100.23171175014561192.JavaMail.root@dogfood.liquidsys.co m> +Message-ID: + +On Tue, 27 Mar 2007, Dan Karp wrote: +> Are there any limits which might prevent a client from sending a single +> 1GB MULTIAPPEND request (for example, 100,000 10K messages to be added +> to the same quotaless mailbox), especially if LITERAL+ is available? +> With the "atomic transaction" requirement, this could potentially be a +> headache. + +There are no limits in the protoocol. + +Servers are free to impose any limit they want: + C: tag APPEND blurdybloop {2345765221} + S: tag NO Our policy prohibits messages that large + + C: tag APPEND blurdybloop {10000} + S: + Ready for message + C: [10,000 bytes of message...] {10000} + S: + Ready for another message + C: [10,000 bytes of message...] {10000} + S: tag NO Disk quota exceeded + +Note that in both cases, nothing is appended. + +I don't think that a client should use LITERAL+ with MULTIAPPEND. Both +LITERAL+ and MULTIAPPEND are optimizations to reduce RTTs, but MULTIAPPEND +is better for the APPEND case. Although it sounds attractive to eliminate +all per-message RTTs by using both simultaneously (and IMAP specifically +does NOT preclude doing so), any failure will cause both client and server +to go to a lot of work for nothing. + +Put another way, the "headache" you note is real, but only if the client +puts itself in that position. IMHO, one RTT/message is OK since that RTT +actually provides a benefit. The problem with base specification APPEND +is that there were two RTTs/message plus a mailbox open/lock operation, +and no way to undo an extended operation if there is a failure. + +> In practice, do real-world IMAP clients attempt to break such large +> potential MULTIAPPENDs into smaller batches, or do they rely on the +> server to process the APPENDed messages as they go? + +Neither, I hope. + +In general, it is quite unlikely that any client is going to APPEND +100,000 10K messages other than some process for migrating mailboxes +(which is a different issue from client operation). I don't think that a +client should attempt such a thing without external knowledge that the +server will accept it. + +Breaking up an APPEND like that is acceptable only if you do not want +atomicity; that is, you *want* a partial APPEND on failure *AND* perhaps +other intervening APPENDs happening (such as new mail delivery). + +The problem is, a lot of kidlets aren't likely to understand the issue, +and specifically why atomicity is a feature and thus should not be +sabotaged. There are a lot of kidlets out there who think that they are +programmers; and alas a lot of companies are hiring them. I just wasted +hours yesterday because McAfee hired an obvious kidlet... ;-( + +> Is it acceptable for a server to queue the APPENDed messages and process +> them once the end of the MULTIAPPEND is reached? + +Yes. That's how most servers work. Remember that the final OK determines +success/failure for the entire MULTIAPPEND. + +> Imap-protocol mailing list +> Imap-protocol@u.washington.edu +> https://mailman1.u.washington.edu/mailman/listinfo/imap-protocol +> + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095241.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095241.22807.mbox:2,S new file mode 100644 index 00000000..04e01454 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095241.22807.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From mrc+imap at panda.com Wed Jun 23 09:04:26 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: +References: +Message-ID: + +On Wed, 23 Jun 2010, Norman Maurer wrote: +> What should I return if the flag update fails for for message 3 only? +> Do I still return the new flags for the rest of the messages (+just +> return the old flags for message 3) and response with ok or do I need +> to rollback all the changes made during processing the command and +> response with an error ? + +The former (return new flags for the changed messages, old flags for +message 3). + +It should be extremely rare that an operation succeeds for some messages +but not for others. If you can abolish that possibility, so much the +better. + +Normally, if a STORE fails to do something, it is because the mailbox is +in a readonly state and thus no messages are changed. But note the +possibility of session-only flags with public mailboxes. + +With all that said, the entire reason for STORE returning untagged FETCH +responses with updated flags is to report what actually happened. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095241.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095241.22920.mbox:2,S new file mode 100644 index 00000000..037d20ea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095241.22920.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From dave at cridland.net Wed Mar 28 02:50:09 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] MULTIAPPEND and LITERAL+ +In-Reply-To: +References: <673436100.23171175014561192.JavaMail.root@dogfood.liquidsys.co + m> +Message-ID: <29159.1175071809.584580@peirce.dave.cridland.net> + +On Tue Mar 27 18:57:02 2007, Mark Crispin wrote: +> I don't think that a client should use LITERAL+ with MULTIAPPEND. +> Both LITERAL+ and MULTIAPPEND are optimizations to reduce RTTs, but +> MULTIAPPEND is better for the APPEND case. Although it sounds +> attractive to eliminate all per-message RTTs by using both +> simultaneously (and IMAP specifically does NOT preclude doing so), +> any failure will cause both client and server to go to a lot of +> work for nothing. + +Just to pick up on that point, Polymer assumes (rightly in all the +few cases I tried) that the server will refuse an APPEND as early as +possible. I don't think there's anything encouraging this in RFC3501 +or RFC3502 (although maybe there is), but I think it's good behaviour +as well as common. + +Polymer chooses to exploit this by not using LITERAL+ only for the +first literal in any command which exceeds a certain size, to allow +the server to reject it. So typical small text-only messages will end +up using non-synchronizing literals, whereas the first large +attachment will use a synchronizing literal, so that Polymer knows +earlier when to send it. This seems to work better than avoiding +LITERAL+ with APPEND entirely, although there's no doubt it could do +with some refinement - in particular, several thousand small messages +will all be sent using non-synchronizing literals, which is an +obvious problem. + +It's also worth noting that the same applies to APPENDs whether +MULTIAPPEND or CATENATE is used or not - Polymer's doing this for all +commands, it's merely that unless it encounters seriously +impressively sized mailbox names, it's unlikely to occur elsewhere. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095242.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095242.22807.mbox:2,S new file mode 100644 index 00000000..93ca4c28 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095242.22807.mbox:2,S @@ -0,0 +1,32 @@ +MBOX-Line: From dave at cridland.net Wed Jun 23 09:05:18 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: +References: +Message-ID: <30462.1277309118.168996@puncture> + +On Wed Jun 23 16:41:21 2010, Norman Maurer wrote: +> a store 1:100 flags \Seen +> +> What should I return if the flag update fails for for message 3 +> only? +> Do I still return the new flags for the rest of the messages (+just +> return the old flags for message 3) and response with ok or do I +> need +> to rollback all the changes made during processing the command and +> response with an error ? + +You need to rollback. + +Otherwise, most especially if FLAGS.SILENT were used, a client will +be unable to discover what the partial failure was. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095242.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095242.22920.mbox:2,S new file mode 100644 index 00000000..a80fd7fc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095242.22920.mbox:2,S @@ -0,0 +1,9 @@ +MBOX-Line: From dkarp at zimbra.com Thu Mar 29 23:34:20 2007 +To: imap-protocol@u.washington.edu +From: Dan Karp +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LITERAL+ and errors +Message-ID: <1172789947.69691175236460767.JavaMail.root@dogfood.liquidsys.com> + +When a client uses LITERAL+ and specifies a literal length larger than the server is prepared to accept, what options does the server have? Anything other than dropping the connection or reading and discarding the entire literal? + diff --git a/demo/ermis-f/imap-protocol/cur/1600095243.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095243.22807.mbox:2,S new file mode 100644 index 00000000..b8f47234 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095243.22807.mbox:2,S @@ -0,0 +1,48 @@ +MBOX-Line: From norman at apache.org Wed Jun 23 09:11:35 2010 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: +References: + +Message-ID: + +Hi Mark, + +thank you for your response. You are right it should not happen +frequently. But as we are implementing different storages its good to +know that we don't Need some kind of transactions. + +Bye +Norman + +2010/6/23, Mark Crispin : +> On Wed, 23 Jun 2010, Norman Maurer wrote: +>> What should I return if the flag update fails for for message 3 only? +>> Do I still return the new flags for the rest of the messages (+just +>> return the old flags for message 3) and response with ok or do I need +>> to rollback all the changes made during processing the command and +>> response with an error ? +> +> The former (return new flags for the changed messages, old flags for +> message 3). +> +> It should be extremely rare that an operation succeeds for some messages +> but not for others. If you can abolish that possibility, so much the +> better. +> +> Normally, if a STORE fails to do something, it is because the mailbox is +> in a readonly state and thus no messages are changed. But note the +> possibility of session-only flags with public mailboxes. +> +> With all that said, the entire reason for STORE returning untagged FETCH +> responses with updated flags is to report what actually happened. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095243.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095243.22920.mbox:2,S new file mode 100644 index 00000000..9a8c1aea --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095243.22920.mbox:2,S @@ -0,0 +1,26 @@ +MBOX-Line: From dave at cridland.net Fri Mar 30 02:38:18 2007 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LITERAL+ and errors +In-Reply-To: <1172789947.69691175236460767.JavaMail.root@dogfood.liquidsys.com> +References: <1172789947.69691175236460767.JavaMail.root@dogfood.liquidsys.com> +Message-ID: <8953.1175247498.681629@peirce.dave.cridland.net> + +On Fri Mar 30 07:34:20 2007, Dan Karp wrote: +> When a client uses LITERAL+ and specifies a literal length larger +> than the server is prepared to accept, what options does the server +> have? Anything other than dropping the connection or reading and +> discarding the entire literal? + +Those are your options. Most people tend toward killing the +connection for large literals, especially outside of an APPEND +command. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@jabber.org + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095244.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095244.22807.mbox:2,S new file mode 100644 index 00000000..35d0cabc --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095244.22807.mbox:2,S @@ -0,0 +1,42 @@ +MBOX-Line: From norman at apache.org Wed Jun 23 09:14:07 2010 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: <30462.1277309118.168996@puncture> +References: + <30462.1277309118.168996@puncture> +Message-ID: + +Ok now we I have different answers :( I understand the Problem with +SILENT, but not See why its the Case otherwise.... + + +Bye +Norman + +2010/6/23, Dave Cridland : +> On Wed Jun 23 16:41:21 2010, Norman Maurer wrote: +>> a store 1:100 flags \Seen +>> +>> What should I return if the flag update fails for for message 3 +>> only? +>> Do I still return the new flags for the rest of the messages (+just +>> return the old flags for message 3) and response with ok or do I +>> need +>> to rollback all the changes made during processing the command and +>> response with an error ? +> +> You need to rollback. +> +> Otherwise, most especially if FLAGS.SILENT were used, a client will +> be unable to discover what the partial failure was. +> +> Dave. +> -- +> Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net +> - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ +> - http://dave.cridland.net/ +> Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095244.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095244.22920.mbox:2,S new file mode 100644 index 00000000..3ac25493 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095244.22920.mbox:2,S @@ -0,0 +1,36 @@ +MBOX-Line: From tss at iki.fi Fri Mar 30 03:26:48 2007 +To: imap-protocol@u.washington.edu +From: Timo Sirainen +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LITERAL+ and errors +In-Reply-To: <8953.1175247498.681629@peirce.dave.cridland.net> +References: <1172789947.69691175236460767.JavaMail.root@dogfood.liquidsys.com> + <8953.1175247498.681629@peirce.dave.cridland.net> +Message-ID: <1175250408.10901.76.camel@hurina> + +On Fri, 2007-03-30 at 10:38 +0100, Dave Cridland wrote: +> On Fri Mar 30 07:34:20 2007, Dan Karp wrote: +> > When a client uses LITERAL+ and specifies a literal length larger +> > than the server is prepared to accept, what options does the server +> > have? Anything other than dropping the connection or reading and +> > discarding the entire literal? +> +> Those are your options. Most people tend toward killing the +> connection for large literals, especially outside of an APPEND +> command. + +In APPEND command it's probably a bad idea to disconnect, because client +could just try retrying it forever. My server replies immediately with +NO if the size exceeds quota, but then it just goes on and reads the +input if the client still sends it. Elsewhere my server disconnects and +sends: + +* BYE Literal size too large + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 196 bytes +Desc: This is a digitally signed message part +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095245.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095245.22807.mbox:2,S new file mode 100644 index 00000000..ac338045 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095245.22807.mbox:2,S @@ -0,0 +1,28 @@ +MBOX-Line: From mrc+imap at panda.com Wed Jun 23 09:21:07 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: +References: + <30462.1277309118.168996@puncture> + +Message-ID: + +On Wed, 23 Jun 2010, Norman Maurer wrote: +> Ok now we I have different answers :( I understand the Problem with +> SILENT, but not See why its the Case otherwise.... + +The SILENT option in STORE is used when you don't care about knowing what +happened. + +However, in most cases the question is moot since yours would probably be +the first server that has a "some but not others" STORE result. It would +be better to keep it moot by abolishing that possibility. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095245.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095245.22920.mbox:2,S new file mode 100644 index 00000000..84db65a6 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095245.22920.mbox:2,S @@ -0,0 +1,27 @@ +MBOX-Line: From mrc at CAC.Washington.EDU Fri Mar 30 10:29:48 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LITERAL+ and errors +In-Reply-To: <1172789947.69691175236460767.JavaMail.root@dogfood.liquidsys.com> +References: <1172789947.69691175236460767.JavaMail.root@dogfood.liquidsys.c om> +Message-ID: + +On Thu, 29 Mar 2007, Dan Karp wrote: +> When a client uses LITERAL+ and specifies a literal length larger than +> the server is prepared to accept, what options does the server have? +> Anything other than dropping the connection or reading and discarding +> the entire literal? + +Those are the options. It is for that reason that I don't use LITERAL+ in +my client code, although I implement it in my server code. IMHO, multiple +APPEND is the case where the optimizing RTTs in literals is important, and +MULTIAPPEND does a better job at that. You can do both MULTIAPPEND and +LITERAL+ in a multiple APPEND, but I suspect that most people do not. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095246.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095246.22807.mbox:2,S new file mode 100644 index 00000000..13023958 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095246.22807.mbox:2,S @@ -0,0 +1,19 @@ +MBOX-Line: From mrc+imap at panda.com Wed Jun 23 09:22:18 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: +References: + <30462.1277309118.168996@puncture> + +Message-ID: + +PS: in many servers, STORE is atomic for the entire request. + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095246.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095246.22920.mbox:2,S new file mode 100644 index 00000000..7945d534 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095246.22920.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From bill.shannon at sun.com Fri Mar 30 15:04:00 2007 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST response with trailing hierarchy character +Message-ID: <460D8950.9000703@sun.com> + +Is the last untagged LIST response below valid? + +A2 LIST "" "%" +* LIST (\HasNoChildren) "/" Drafts +* LIST (\Marked \HasChildren) "/" INBOX +* LIST (\HasNoChildren) "/" "Sent Items" +* LIST (\Noselect) "/" "Public Folders/" +A2 OK LIST completed. + +The spec seems to say that "%" does *not* match hierarchy +characters, so the last response doesn't seem to match the +pattern. Is there some subtlety in the spec that makes this +valid? + +If it is valid, how should the trailing hierarchy character +be interpreted? Does it imply that names within this folder +should be of the form "Public Folders//foo"? Or does this +need to be handled as a special case? + +Thanks. + + Bill + diff --git a/demo/ermis-f/imap-protocol/cur/1600095247.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095247.22807.mbox:2,S new file mode 100644 index 00000000..eb5dd452 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095247.22807.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From norman at apache.org Wed Jun 23 09:30:49 2010 +To: imap-protocol@u.washington.edu +From: Norman Maurer +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: +References: + <30462.1277309118.168996@puncture> + + +Message-ID: + +Yeah Atomic makes sense, i just searched for a solution where I need +to break down the operation in many pieces. For example when using JCR +as storage we are some kind of limited how much "Updates" we can +handle per transaction, so I was looking for a solution here... + +Bye +Norman + +2010/6/23, Mark Crispin : +> PS: in many servers, STORE is atomic for the entire request. +> +> -- Mark -- +> +> http://panda.com/mrc +> Democracy is two wolves and a sheep deciding what to eat for lunch. +> Liberty is a well-armed sheep contesting the vote. +> + diff --git a/demo/ermis-f/imap-protocol/cur/1600095247.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095247.22920.mbox:2,S new file mode 100644 index 00000000..54fdb663 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095247.22920.mbox:2,S @@ -0,0 +1,40 @@ +MBOX-Line: From MRC at CAC.Washington.EDU Fri Mar 30 15:19:02 2007 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST response with trailing hierarchy + character +In-Reply-To: <460D8950.9000703@sun.com> +References: <460D8950.9000703@sun.com> +Message-ID: + +On Fri, 30 Mar 2007, Bill Shannon wrote: +> Is the last untagged LIST response below valid? +> A2 LIST "" "%" +>[snip] +> * LIST (\Noselect) "/" "Public Folders/" +> A2 OK LIST completed. + +I would say "no". + +UW imapd can return such a LIST result, but only from a pattern ending +with "/%". For example: + + tag list "" barter/% + * LIST (\NoSelect) "/" barter/ + * LIST (\NoInferiors \Marked) "/" barter/fred + * LIST (\NoInferiors \Marked) "/" barter/joe + * LIST (\NoInferiors \UnMarked) "/" barter/pete + tag OK LIST completed + +This is because % is defined to match zero or more characters. + +My guess is that the author of server that did the bad thing did empirical +testing of UW imapd and misinterpreted what s/he saw. + +-- Mark -- + +http://staff.washington.edu/mrc +Science does not emerge from voting, party politics, or public debate. +Si vis pacem, para bellum. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095248.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095248.22807.mbox:2,S new file mode 100644 index 00000000..61c2bfd2 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095248.22807.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From dave at cridland.net Wed Jun 23 09:40:05 2010 +To: imap-protocol@u.washington.edu +From: Dave Cridland +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: +References: + <30462.1277309118.168996@puncture> + + +Message-ID: <30462.1277311205.980277@puncture> + +On Wed Jun 23 17:21:07 2010, Mark Crispin wrote: +> On Wed, 23 Jun 2010, Norman Maurer wrote: +>> Ok now we I have different answers :( I understand the Problem with +>> SILENT, but not See why its the Case otherwise.... +> +> The SILENT option in STORE is used when you don't care about +> knowing what +> happened. +> +> +That's not quite what you wrote in 3501: + + A suffix of ".SILENT" in + the data item name prevents the untagged FETCH, and the server + SHOULD assume that the client has determined the updated value + itself or does not care about the updated value. + +> However, in most cases the question is moot since yours would +> probably be +> the first server that has a "some but not others" STORE result. It +> would +> be better to keep it moot by abolishing that possibility. + +Right - I would understand "OK" to mean "I have changed all flags" +and "NO" to mean "I have changed no flags". + +Albeit my client ignores the OK/NO unless .SILENT is being used. + +Dave. +-- +Dave Cridland - mailto:dave@cridland.net - xmpp:dwd@dave.cridland.net + - acap://acap.dave.cridland.net/byowner/user/dwd/bookmarks/ + - http://dave.cridland.net/ +Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade + diff --git a/demo/ermis-f/imap-protocol/cur/1600095248.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095248.22920.mbox:2,S new file mode 100644 index 00000000..f1b0b72c --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095248.22920.mbox:2,S @@ -0,0 +1,47 @@ +MBOX-Line: From bill.shannon at sun.com Fri Mar 30 15:26:58 2007 +To: imap-protocol@u.washington.edu +From: Bill Shannon +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] LIST response with trailing hierarchy character +In-Reply-To: +References: <460D8950.9000703@sun.com> + +Message-ID: <460D8EB2.4090704@sun.com> + +Mark Crispin wrote: +> On Fri, 30 Mar 2007, Bill Shannon wrote: +>> Is the last untagged LIST response below valid? +>> A2 LIST "" "%" +>> [snip] +>> * LIST (\Noselect) "/" "Public Folders/" +>> A2 OK LIST completed. +> +> I would say "no". + +Ok, good, that's what I thought. + +> UW imapd can return such a LIST result, but only from a pattern ending +> with "/%". For example: +> +> tag list "" barter/% +> * LIST (\NoSelect) "/" barter/ +> * LIST (\NoInferiors \Marked) "/" barter/fred +> * LIST (\NoInferiors \Marked) "/" barter/joe +> * LIST (\NoInferiors \UnMarked) "/" barter/pete +> tag OK LIST completed +> +> This is because % is defined to match zero or more characters. + +Which I understand, and I handle that case. + +> My guess is that the author of server that did the bad thing did +> empirical testing of UW imapd and misinterpreted what s/he saw. + +It seems like quite a leap from what UW imapd does to this. + +I think it's more likely because "Public Folders/" is a namespace, +which as I previously learned is a reasonable response to the +NAMESPACE command. It just doesn't make sense here. + +Looks like time for another bug workaround... + diff --git a/demo/ermis-f/imap-protocol/cur/1600095249.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095249.22807.mbox:2,S new file mode 100644 index 00000000..51e86c29 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095249.22807.mbox:2,S @@ -0,0 +1,37 @@ +MBOX-Line: From mrc+imap at panda.com Wed Jun 23 10:01:21 2010 +To: imap-protocol@u.washington.edu +From: Mark Crispin +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: <30462.1277311205.980277@puncture> +References: + <30462.1277309118.168996@puncture> + + + <30462.1277311205.980277@puncture> +Message-ID: + +On Wed, 23 Jun 2010, Dave Cridland wrote: +> That's not quite what you wrote in 3501: +> A suffix of ".SILENT" in +> the data item name prevents the untagged FETCH, and the server +> SHOULD assume that the client has determined the updated value +> itself or does not care about the updated value. + +Note the "does not care". + +Due to timing races with simultaneous sessions, it is impossible for the +client using SILENT to determine the updated value with a guarantee of +accuracy. + +So, "determined the updated value" should be interpreted as "guessed at an +updated value that is accurate enough for its purposes". + +Yes, that's wishy-washy. I would have preferred simply "does not care". + +-- Mark -- + +http://panda.com/mrc +Democracy is two wolves and a sheep deciding what to eat for lunch. +Liberty is a well-armed sheep contesting the vote. + diff --git a/demo/ermis-f/imap-protocol/cur/1600095249.22920.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095249.22920.mbox:2,S new file mode 100644 index 00000000..3b27c8c0 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095249.22920.mbox:2,S @@ -0,0 +1,30 @@ +MBOX-Line: From jkt at gentoo.org Sat Mar 31 05:34:05 2007 +To: imap-protocol@u.washington.edu +From: =?ISO-8859-1?Q?Jan_Kundr=E1t?= +Date: Fri Jun 8 12:34:39 2018 +Subject: [Imap-protocol] literal usage +In-Reply-To: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> +References: <71fe4e760703200717v201c983dq39791707ec286aa5@mail.gmail.com> +Message-ID: <460E553D.5030708@gentoo.org> + +Alain Spineux wrote: +> I'm suffering using the little bogus python imaplib, that don't handle +> well literals. + +You might find my library [1] useful. + +[1] http://svn.flaska.net/viewcvs/trojita/trunk/ymaplib/ + +Cheers, +-jkt + +-- +cd /local/pub && more beer > /dev/mouth + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: signature.asc +Type: application/pgp-signature +Size: 260 bytes +Desc: OpenPGP digital signature +URL: diff --git a/demo/ermis-f/imap-protocol/cur/1600095250.22807.mbox:2,S b/demo/ermis-f/imap-protocol/cur/1600095250.22807.mbox:2,S new file mode 100644 index 00000000..345c4c95 --- /dev/null +++ b/demo/ermis-f/imap-protocol/cur/1600095250.22807.mbox:2,S @@ -0,0 +1,25 @@ +MBOX-Line: From lyndon at orthanc.ca Wed Jun 23 10:20:37 2010 +To: imap-protocol@u.washington.edu +From: Lyndon Nerenberg +Date: Fri Jun 8 12:34:45 2018 +Subject: [Imap-protocol] Handle failures during STORE command execution +In-Reply-To: <30462.1277311205.980277@puncture> +References: + <30462.1277309118.168996@puncture> + + + <30462.1277311205.980277@puncture> +Message-ID: + +> Albeit my client ignores the OK/NO unless .SILENT is being used. + +I think this is wrong. Appending .silent doesn't change the state machine +semantics of the mailbox. Ignoring the updates doesn't change the fact +that they happened (or didn't). I would assume that a client that issues a +foo.silent was doing so knowing it was about to do a full refresh of it's +view of the mailbox, making the updates from foo superfluous. I certainly +don't read anything in the spec that indicates appending .silent enables +transactional commit/rollback behaviour for the command. + +--lyndon + diff --git a/melib/build.rs b/melib/build.rs index 12375308..00d5953b 100644 --- a/melib/build.rs +++ b/melib/build.rs @@ -78,19 +78,26 @@ fn main() -> Result<(), std::io::Error> { println!("mod_path: {:?}", &mod_path); let mut file = File::create(&mod_path)?; file.write_all(br##"pub static DEMO_MAILBOXES: &'static [(&'static str, &'static str, &'static [&'static str])] = &["##)?; + let demo_path = Path::new("./../demo/ermis-f/imap-protocol/cur"); + build_mailbox( + b"imap-protocol", + b"imap-protocol", + Some(demo_path), + &mut file, + )?; let demo_path = Path::new("./../demo/ermis-f/cur"); println!("demo_path: {:?}", &demo_path); assert!(demo_path.is_dir()); - build_mailbox(b"INBOX", b"INBOX", Some(demo_path), &mut file)?; + build_mailbox(b"qenron", b"qenron", Some(demo_path), &mut file)?; let demo_path = Path::new("./../demo/ermis-f/python_m/cur"); - build_mailbox(b"INBOX/Python", b"Python", Some(demo_path), &mut file)?; + build_mailbox(b"python", b"python", Some(demo_path), &mut file)?; //build_mailbox(b"INBOX/All", b"All", None, &mut file)?; //build_mailbox(b"INBOX/Discussion Threads", b"Discussion Threads", None, &mut file)?; - let demo_path = Path::new("./../demo/ermis-f/Sent/cur"); - build_mailbox(b"INBOX/Sent", b"Sent", Some(demo_path), &mut file)?; + //let demo_path = Path::new("./../demo/ermis-f/Sent/cur"); + //build_mailbox(b"Sent", b"Sent", Some(demo_path), &mut file)?; //build_mailbox(b"INBOX/Notes", b"Notes", None, &mut file)?; - let demo_path = Path::new("./../demo/ermis-f/Trash/cur"); - build_mailbox(b"INBOX/Trash", b"Trash", Some(demo_path), &mut file)?; + //let demo_path = Path::new("./../demo/ermis-f/Trash/cur"); + //build_mailbox(b"Trash", b"Trash", Some(demo_path), &mut file)?; file.write_all( br##" ]; diff --git a/melib/src/backends/demo/demo_corpus.rs b/melib/src/backends/demo/demo_corpus.rs index 2e7bb4d1..5edaa633 100644 --- a/melib/src/backends/demo/demo_corpus.rs +++ b/melib/src/backends/demo/demo_corpus.rs @@ -1,6 +1,2674 @@ pub static DEMO_MAILBOXES: &'static [(&'static str, &'static str, &'static [&'static str])] = &[ ( - "INBOX", - "INBOX", + "imap-protocol", + "imap-protocol", + &[ + include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.23040.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095010.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.23084.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095187.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094976.22535.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095163.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095225.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22856.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095184.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095217.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094990.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095180.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094992.22586.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23102.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094994.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094988.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095158.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095162.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22826.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095212.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094995.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22762.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095183.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095231.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094984.22563.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095186.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095004.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094990.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22765.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22826.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094976.22518.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094991.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095222.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094987.22569.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095170.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094978.22535.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094989.22575.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094970.22518.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095161.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094998.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095171.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095162.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094996.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094979.22535.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095239.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095000.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22896.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094998.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22838.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094985.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095216.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094997.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095164.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22662.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095230.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22746.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094996.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22829.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095174.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094997.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095175.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094969.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094983.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095222.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22716.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095167.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095157.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095159.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095237.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094987.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22850.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22662.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22838.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094985.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22841.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095004.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095224.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095228.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.23040.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23064.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22853.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22716.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094984.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094981.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094989.22569.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094997.22600.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094967.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095246.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095202.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095003.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23064.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.23040.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095240.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094971.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094989.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094994.22575.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22762.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095209.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095192.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095168.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094988.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095189.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22723.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095207.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095003.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095174.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094991.22575.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22829.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095179.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095224.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094991.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095161.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22765.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.23004.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095000.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095162.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095165.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095156.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095198.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095172.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22838.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095165.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095247.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23105.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094996.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094987.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23064.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095208.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095176.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22788.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22850.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23093.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22788.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22823.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23084.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095010.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095187.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094997.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095221.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094986.22566.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095165.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095230.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094982.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095171.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094992.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22896.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094984.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094985.22569.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23090.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094972.22518.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22656.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095205.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23084.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095166.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095220.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095170.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094990.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095161.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22823.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095157.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095166.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094975.22532.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094977.22532.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095193.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094997.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094999.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094978.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094972.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094999.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095213.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095190.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22862.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094996.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094968.22511.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22853.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094994.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095229.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095250.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095156.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095185.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095168.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095175.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095196.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095010.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095001.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22662.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22841.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095162.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22662.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095233.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22632.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094994.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095157.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094993.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22853.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22723.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094998.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22853.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095212.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095167.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095177.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22723.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095208.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095207.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094979.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094998.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23090.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095176.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.23093.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095215.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095200.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094971.22523.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22850.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22838.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094986.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22723.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095164.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095182.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095243.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22723.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094995.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095158.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094992.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22716.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095236.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094992.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095163.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094979.22544.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095241.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.23004.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094983.22563.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094991.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094980.22544.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095161.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095201.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095223.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095238.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095159.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095177.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095159.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095189.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095236.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095004.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095158.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094978.22532.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094996.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22966.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094995.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22746.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095012.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094991.22586.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094986.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22896.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095202.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22792.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095001.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095227.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22632.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095161.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22762.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095156.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095201.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095169.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095234.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094992.22575.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22838.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095003.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094989.22578.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095244.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22662.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22746.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094975.22518.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22632.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095199.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095181.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22746.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095001.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095206.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095165.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22862.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095198.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095160.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095184.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095246.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094972.22523.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095173.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095199.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23084.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094999.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094970.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095172.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095249.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095012.22645.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095168.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.23004.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22645.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094977.22535.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095158.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094999.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095010.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094996.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095206.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22850.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22668.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095235.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095173.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094986.22569.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095156.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094984.22566.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095225.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22662.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095210.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095239.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095195.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095180.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094998.22600.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22762.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095240.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095158.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095168.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095159.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094994.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094991.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095197.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.23045.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095194.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095158.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095151.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094989.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094975.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22765.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095166.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.23064.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094985.22566.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095009.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22762.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095181.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095196.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095004.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095188.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095242.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095249.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094990.22575.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22765.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095003.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095172.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094983.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094973.22529.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095156.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095173.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095245.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22716.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.23045.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094974.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22656.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095227.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094995.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094987.22566.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094993.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094971.22518.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094969.22514.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095204.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095156.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094998.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23064.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22841.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095182.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095214.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22862.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094993.22575.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095223.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095232.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22853.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094990.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095178.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095245.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095232.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095163.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094982.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095004.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095203.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094993.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094983.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22679.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095160.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22780.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095167.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095176.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094973.22518.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095195.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095197.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094979.22541.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095149.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095242.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095221.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095162.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095000.22600.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095215.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095001.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22850.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095169.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095000.22617.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095161.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22788.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094989.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22788.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095191.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095159.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23045.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095179.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095022.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095145.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095003.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095175.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22645.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.23045.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095214.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095082.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095237.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095012.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094985.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095241.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.23064.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095194.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095159.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095190.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22826.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094999.22606.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22841.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095044.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095177.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095036.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095171.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094980.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095154.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094982.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094985.22563.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095248.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095078.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095014.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22656.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094988.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095219.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095001.22600.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095228.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094978.22541.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094995.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095160.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095077.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22659.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23040.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095192.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095219.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095220.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095119.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095217.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094973.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094976.22532.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095178.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094993.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094987.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22716.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095004.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095162.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095037.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094993.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095163.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095011.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094988.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.23040.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095211.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22762.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.23093.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095163.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094970.22514.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095193.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095173.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094999.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095188.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095234.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094989.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094999.22600.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095000.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23093.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095146.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095102.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22777.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095203.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095000.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.23064.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095001.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22645.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22844.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094997.22583.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095167.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094992.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095003.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095020.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22853.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095083.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095003.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095065.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095063.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095211.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095157.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.23102.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22732.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095156.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094991.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22877.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095012.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22765.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095185.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095218.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095121.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095025.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095073.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.23004.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095062.22792.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095140.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095244.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095160.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095089.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095155.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095216.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095004.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094987.22572.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095153.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095218.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094988.22575.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095174.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095163.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094974.22518.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22856.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22841.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22626.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095045.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095122.23004.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094988.22569.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095061.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094984.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095238.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095164.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22835.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095169.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094976.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094990.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22600.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095132.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095024.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094971.22514.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095131.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094995.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094981.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095186.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095170.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095046.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094993.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095097.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094981.22544.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095143.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22829.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094968.22507.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22899.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095006.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095128.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095018.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094972.22526.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095092.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22853.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095032.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22746.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22765.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22832.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095129.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095204.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095101.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22999.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095054.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095086.22847.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095010.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095150.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095136.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095012.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095040.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22938.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22917.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095060.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22983.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095013.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22716.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23093.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095056.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095106.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095074.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095160.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095069.22804.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095229.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22762.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095026.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095008.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095127.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095070.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095231.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095112.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094977.22538.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095183.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095138.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22866.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094992.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095071.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22729.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095087.22810.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095247.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095135.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095079.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095233.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095213.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095093.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095042.22685.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095017.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095171.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095110.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094986.22553.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095114.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095191.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095226.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095010.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095210.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095157.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095226.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095148.22974.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095108.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094973.22526.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22749.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22801.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095243.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095088.22817.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095124.22957.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095001.22620.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22788.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095133.23055.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095115.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095126.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095139.23031.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095081.22838.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095111.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095100.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095209.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095068.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095028.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22987.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095098.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095029.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22874.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095051.22701.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22629.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095007.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22752.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095170.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095012.22635.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095021.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095023.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095058.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095169.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22886.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095053.22726.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095057.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095035.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095164.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095107.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095047.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095090.22871.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095248.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095099.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095142.22914.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095030.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095172.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095200.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22723.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095134.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095120.22903.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095015.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095066.22796.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095038.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094986.22548.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095064.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095094.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095000.22603.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095052.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095147.23051.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095016.22651.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095076.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095166.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095085.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095103.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095084.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095055.22707.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095067.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095130.23014.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095034.22682.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095104.22756.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095116.22960.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095075.22768.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095137.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095049.22743.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095043.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095002.22589.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095050.22719.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095157.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095144.22893.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095027.22675.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095033.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095205.22920.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095096.22595.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22671.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095010.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095160.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095095.22759.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095031.22665.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095105.22889.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095117.22911.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095125.23036.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095141.23059.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095059.22641.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22648.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095152.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095123.22772.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095072.22784.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095039.22716.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095012.22623.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095118.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095091.22820.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095080.22813.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095005.22592.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095048.22697.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095113.22880.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22656.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095041.22688.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095019.22638.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095109.22883.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600095235.22807.mbox:2,S"), +include_str!("../../.././../demo/ermis-f/imap-protocol/cur/1600094994.22583.mbox:2,S"), +]), + ( + "qenron", + "qenron", &[ include_str!("../../.././../demo/ermis-f/cur/27847073.1075855167976.JavaMail.evans@thyme:2,S"), include_str!("../../.././../demo/ermis-f/cur/14868182.1075861338166.JavaMail.evans@thyme:2,S"), @@ -383,8 +3051,8 @@ include_str!("../../.././../demo/ermis-f/cur/11392216.1075861334509.JavaMail.eva include_str!("../../.././../demo/ermis-f/cur/381987.1075861340669.JavaMail.evans@thyme:2,S"), ]), ( - "INBOX/Python", - "Python", + "python", + "python", &[ include_str!("../../.././../demo/ermis-f/python_m/cur/0720"), include_str!("../../.././../demo/ermis-f/python_m/cur/1813"), @@ -2285,47 +4953,6 @@ include_str!("../../.././../demo/ermis-f/python_m/cur/1899"), include_str!("../../.././../demo/ermis-f/python_m/cur/0851"), include_str!("../../.././../demo/ermis-f/python_m/cur/0809"), include_str!("../../.././../demo/ermis-f/python_m/cur/1275"), -]), - ( - "INBOX/Sent", - "Sent", - &[ - include_str!("../../.././../demo/ermis-f/Sent/cur/32217640.1075852314422.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/8806962.1075852314861.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/21003046.1075852314466.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/22524399.1075855487777.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/6483900.1075855487799.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/24624686.1075852314533.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/2089632.1075855487755.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/23668222.1075855487820.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/6747425.1075852314570.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/8012373.1075852314703.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/5369934.1075852314511.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/10746181.1075852314378.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/5580413.1075852314489.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/30249743.1075855499568.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/6266690.1075852314636.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/32726201.1075855499483.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/27910773.1075861342042.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/24243685.1075855499589.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/9082204.1075855499526.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/21112440.1075852314400.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/23546562.1075852314592.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/5502035.1075855499547.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/14018365.1075852314444.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/24127062.1075855170660.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Sent/cur/10020042.1075852314884.JavaMail.evans@thyme:2,S"), -]), - ( - "INBOX/Trash", - "Trash", - &[ - include_str!("../../.././../demo/ermis-f/Trash/cur/10238426.1075852314265.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Trash/cur/6997933.1075852314333.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Trash/cur/10106181.1075852314287.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Trash/cur/5990006.1075852314356.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Trash/cur/30712088.1075852314241.JavaMail.evans@thyme:2,S"), -include_str!("../../.././../demo/ermis-f/Trash/cur/2062755.1075852314310.JavaMail.evans@thyme:2,S"), ]), ]; diff --git a/pkg/index.html b/pkg/index.html index 731b39a0..2ee8aef8 100644 --- a/pkg/index.html +++ b/pkg/index.html @@ -882,7 +882,15 @@ display: flex; }); await init('./meli_bg.wasm'); - document.querySelector('div#terminal').style.background = "black"; + var terminal_el = document.querySelector('div#terminal'); + terminal_el.style.background = "black"; + function redraw() { + const meli_pulse_event = new CustomEvent('meli-event', { detail: "pulse" }); + t = 1000; // 100ms + terminal_el.dispatchEvent(meli_pulse_event); + setTimeout(redraw, t); + } + redraw(); } run(); diff --git a/pkg/meli.js b/pkg/meli.js index ebe6d5f6..6143500a 100644 --- a/pkg/meli.js +++ b/pkg/meli.js @@ -214,15 +214,6 @@ function __wbg_adapter_22(arg0, arg1, arg2) { wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hd3b75948ac748304(arg0, arg1, addHeapObject(arg2)); } -/** -* Entry point invoked by `worker.js`, a bit of a hack but see the "TODO" above -* about `worker.js` in general. -* @param {number} ptr -*/ -export function child_entry_point(ptr) { - wasm.child_entry_point(ptr); -} - /** */ export function greet() { @@ -235,6 +226,15 @@ export function run() { wasm.run(); } +/** +* Entry point invoked by `worker.js`, a bit of a hack but see the "TODO" above +* about `worker.js` in general. +* @param {number} ptr +*/ +export function child_entry_point(ptr) { + wasm.child_entry_point(ptr); +} + function handleError(f) { return function () { try { @@ -324,12 +324,12 @@ async function init(input) { } const imports = {}; imports.wbg = {}; - imports.wbg.__wbg_log_be7baab5cb258473 = function(arg0, arg1) { - console.log(getStringFromWasm0(arg0, arg1)); - }; imports.wbg.__wbindgen_object_drop_ref = function(arg0) { takeObject(arg0); }; + imports.wbg.__wbg_log_be7baab5cb258473 = function(arg0, arg1) { + console.log(getStringFromWasm0(arg0, arg1)); + }; imports.wbg.__wbindgen_cb_drop = function(arg0) { const obj = takeObject(arg0).original; if (obj.cnt-- == 1) { @@ -561,8 +561,8 @@ async function init(input) { imports.wbg.__wbindgen_rethrow = function(arg0) { throw takeObject(arg0); }; - imports.wbg.__wbindgen_closure_wrapper3455 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 764, __wbg_adapter_22); + imports.wbg.__wbindgen_closure_wrapper3475 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 851, __wbg_adapter_22); return addHeapObject(ret); }; diff --git a/pkg/meli_bg.wasm b/pkg/meli_bg.wasm index 836464bd8457e9f28a37cc835140176dae15bc56..ec8ce183c16c5d97b2d85a4362ec1e19e2341939 100644 GIT binary patch literal 13914827 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⋘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%0AQgv|kBlq(;`DPyeeyvu_ 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

afw76oA?&@M&JGX9{*T2 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

$9pnc!r0>AyaI*riW9a=Dhb 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%0AK@v@lJrkHvw)J3 zDk4Bwt){MG{s1#TM}HQI$}@cxz?qH>>074i`Q=JtiZ-a@EJ=o?>T98mXW2DCFHBIo zXw8;`rU`3%hhVde@u{BZ$g+!|^-VPz*;vcRQP)Z2g4{J~Lw#7Hc$?Dr0oF_mlX^b0 zC1h%vG<%Y`&#y6#OgYztP9d^caQx-Ar}s{Si>U}UZG_-(lFemF{mMfU*#;H=1Bjr7 zM{zysAJt^$&7LdA#rSWDKeDp@=FY$-U^-x~T2Q4V&!4hs>qQcpy_TfQCf8lo(ASot z`6#s+urYR=S{fjVijLZ`?_!iNKy{ramTS=H&M?gXMkKJ~cM>?SlErArQyvl|1rznitxD^&`x!LNlG#h}gOasxD0NQ#+;E8^` z6sWu4oHq%atpH6=dAiV~mdU`JHwl<;od%em^Z5+S?>v*V&O}m&__EJ?Qpd-@+V7>+ zo+qTv=Yoixvs5-4LN1O~>mpX!@^Vh5e>xD^aePAOR3|Lwju>}3%0>5~n9URCVO?x2 zD+}jG-uOiiDr5);fFYsasvzwoVsphpG7zu2L(G#Yg|Ln86T%aEK#fLrk+Q}C^|O_@ z4>^4myb)(jr?1_#9<@y_FinMVk$QNR=x)KGn=BB=v+&0nzma2?qjJzlaujK4-)q)g zBq6^}VdWRg8_Sh9QU|mRs-W1i@SSq}a4I=f6AM{qBI>2F3o}4$9}6LjDVMV}z>PM& z#k;W^oaF+Vj>Ro`R4gKcgNuz_Zkcztx8UeE?|s@N3nc>I1f1`fyMmntb4GLURYVhUPHjQq~_I zK~_05CF>8AwNK4(9P7hF`p~Zr*kb9!-Xo|C(n(prpsXhxvWw)?eXBB8W#?Igs$~2K z+G7VP>qn2OJt%xtvbktaq>?_|qz`RI!D~9k`lP=wkRRx(*KmoguA1jYL9Q$Rxqi

6x_>3++S9!_Q3g#BJIGs@kyAvuyW&rulV{00aPc$YV`bF1e)EVKi z7Ne~kn3AOB1iLgq=f93Xnt^leoh<8$zai>@Km>Gq=Ev|I&`7mt+N>FV1}Ad;3^?(fh=>o9 zsM;H?pXm&?o$qc%^-tf}HBd>vXO$oDTsDx=d3`}gyv-h8mS;?iD*>`AsvTeVH%ekj zvG@i(nrBJXgWM~se^$k8fcguiT6_Yzv~M~?=k)c}W{PTbG+Qa;M+YFFoWObjWL9f# z^;4qA;rXdq=NXv}7)AqvAzEooJ5e4ph!kGJQYASD_@WD6J?y>&Otoyg=epv6Ri}C!!towKAen{`3eY}6)tov(q@3T>%hP=PA?_Nf=>UKR? zNpfZ8uFB)sQCZOdCnA{D%RY(}MJf6)Ei1#>cmlahX1%OxaRnV9`#?}%X%iT@6LEen z?HrOBPB1g5h0r3|Cem7v>Y*5r%roAIKUy)!KeVXT7lizC9`vG+HzRw^2t$6UsIkM4 z|I~xz&mM@d_p@C1*-SZ2ueS^`a3+4v?Q9~@($86QcY2+Ta@M{!>}|Id5yQ0k;RwE9 zAvsAJXOQ5LGs3zLakvGmGE742YCf2YOkq`^#V3fhE0jGv-?1scU zZ)YdyvG9|bh0$FvMklo7pEh`6J=jb5fun(#a0YDN6o<#Cs!pNEP9g>W5TqSYuqHu$ z0}9TBwnNcoaaz{nxZ_1Nu#eQ&)F3fbw%(eNR>$} zY)}=!e;gN@>Zt=ghaBkXqa5G~{ehk_1P`FDV(5TaPaOoLSWkV2_%bqb1weNC?r>M%ZWqk#<(&itEsm9Lx42{qU@$; zWJK+8H~va=p4?#xbX75i&Q;Zcfswlv#}HZq9Xr+z zAWtA#uym3>92p=RyFHyvm29>`Maf-(jP{`!fISPhbdpXus!*nOXh~iu@|!`;?i|MS z%||SltA`JY4ky4$ixT@SDP)R?h0}xP?P{rlj#W9;l06i)B$dm2$joWY80!ny5Z?%x z@&;pllz;!UuB4Wt-10lwSowMWFn;D<3fMSyGOVmDU5P~I?m7&jF^EC;`#j))l;6nc z1Gn1y=3TNcqi27Q&sPw;(4oK8{eKO6|6RYTcIkTiB@9gYX7?o_Hc?6{zxXJPOxc_> zIaKgutDnT)L+!+lixb<@^W%XG!_&M~7x@`GH%hJInbH8IGdsfAfjIq{r-0mr2v2VM zSiX}3mTGsB6$q4qwhNd>OcfU&g~^-Qgvv}67h&vG{gRmIW3PUC%j>O2$rwiX<581H z$73RbGE~)u9jfJcd)s)pR77IzQN*Ck&v{DvS(8LAA*yu&nEi`+LUDwi4k>c9aYSO( zu92zJU`GNnY);waXd*d9i%%Hx2gI|3ntn22@Q&b3JiiY9nNGDf@$rd_0%kMsMRgU_ zjqw4rgbGZIueOO?h;tOmoL+9R|KkOM-&FB(S!Pq@BpxZmkUOB2>B?C$_((~rsK3@w zBi>b$10Myr>W&;zP)Kz{;A1>u?VE`Ub<0zA!?!(=*(}m75F4V0%iptV1G>CU8w0y5 znZk8O)v5dCXP;CCfX|WqIaPOrP6GBbl${lQAPgxqT6d%~RK)PEH zWr4HRM=N|8;4{hr)!I5F2=~$uyD0Xl##o_IhkUIKS{2RA3(7f~Yl936Z%%^yp%W1I zOg=%iGk(&u1E9Lky6kTz*&gOUpsg0Lk`JZGz1=}a9EGfvv!TlZ31?6p)s3rY3%d>2 zh-;|$13P#HE_4EnGxd@2^^4zH4k{ zdC#d(#Q_kPtDf75tkazLq3C9=P)u}kyJj*I(9q6^dV@?R#-!eGG!rCVxd*&!cQ27f z6;( zC+kuved}bkXDC%$TR@tuL0MmV4h3|R1;&9LY_OpzU}^c~R$-iAgAs)9G`WTk;gM@V zwO7jxT#Bj?!tq7NhlXTL$Ap>xcZJS2@Sl-s=5bkA9$P`vNs}}(FP*}x5sI$Prj(>9 zQHiH}UxA0Jv~+rT!kO7~eMLS3HP1dlYAD7Xt+66nm|Y;Sc4QfO0Ra z+YpoGn)a3_*Hs-y2Gx(+2Jr^5=q3#dkWOWk0dZy-kt$PGw-e%mnwKA|+6GVdAed3B zCUduShldBy_dU)5if(*y0s8(U09{;we(-S)P@fOAm`nbjj{tOWG4#Dh0J^vUz2*o& z7Z;%0j{tOW0s1eGbAT?o9D3~$fG#eEUVQ|h^8xf@X=fi^7HAOAoOJRH)rvnW|A{n` zVoECwa6ug7F zW~xoTH*Bs-4LP+`Hh=5|c z#q3BYUnkNW*0J7mCnUv{N!k!#MEP_+K%IR(a<4Nm4EnOx^m36#c1)BZ>btr`Z#W@< zeR?Qp(8tKPMhcz`L?hr{SGLm2l7s3EYrd1V&ym73ll_3bd&DvGHkmvS zj}Ek%?5kh&8%_4a!-r`#x#|#B6S~!BHldA!+D+(j7*6QnW7Kl;qaxCEB&C0ClGf61 z{&~GAHe#gEk<&xNBRF0NpQNU~?}xa!EcI#2Jm9Egj_#=6eeFlH-;rE4efN328}I*) z(?`;~+w^X<{~Z?K^zP$&x1|4_PNa^$Tzx=$R&=|cSLoeX|9AH7^Sig}-9-O8nHQtZ ziw>x>H}-uRdvlVujCj)4Ql%^y)dRfMk=cF(U{s~;0^dxIgyDpxMR|^bZ-#BL)gqKV z1)7ST52{q&zFLWMc{sivLrlD%pbZufkMY~01WTL(tjuu~XL9v}9*P#TF!>4cCQ1gr z%D@fXmBv|T<%VjmMN(3XZ>{RV8+9He4pP;&C8ATJvht6S=Tvw|LC7>jMa0P$(0V%# zNe=%)XsBbpmh)idQL}Qj^rGiYCk%k}o+zJjx(-nrj!|d~Oqw3d?!TyooO?*U>5f}N z+^X(&kLh1Mg#9suZ0tH6tb+m@HixsDKqx~N-Vt&SuzI&nL=NV=-BwglBMNQ99sJA|8PAeHoIkG)!lKojJtBIx+U(8;tosnhk7NKj8#|k-c5{E zZ;!hPN{)|JZ{$v=?Ck%!>wW@Hx%+n9jd91ZJG*-CICOT4Z&;q zGLZy?!qq$Nv{8@De;r zaUYS;K4@h}%L4aB+DqEKF2haj`AV(8M?QvZ{AD;CNWLYqBZr5#?EWMNH#7zImO#$L z#qE>F$doRZNbbqRAb+oL8JDXSax}V+LYwf~`3h^k{VkCCXCJZ7F*541{$4bW0|9;P zjwrO{+?D0klL%sxfpLzcYd9CABOM%_K9u~LmFTZir`uCmX-(`H*n>!Nhp@$74iB53 z#GkK4QVE2O+lyi}g8d^1LPELWpr3S}jYckbO85@tky`4Gx-B+ETN$?fIyG|c_dPkH z9ORe*w15aYqVk_lvNt`d7$-=x--EUkT9r8RB`*d*A8v-E0<_x#=Uw1>C?`$4?7FdK zOVGt#rXS86Wsldy0dPitHMoI3{uzBP-!>Djq_R}I%-x8#P-CgOkp`~3>A`gr2v2JLA#^nMQb{vS4x@3`oEx)Z{oMquQYa=WPO*kc;hI8=mY)J z&+_PPIXRM)dDL4zw04RuDzp9y7U;Z(eF|y-Sfrs72Yu%2Hc3& zqGLBWey1BDavDF)cfzmM-P=hDkNTU&Csq4d6Scrn?K$v(lk*U+wIhTdfSkCy&ODkZ z6PlUCt<^s6&ZO6?7ke>X|MOlvP%WYb=`R2C!b|P?d_$foBjNEuE@=TLWA{oRg0Bp6b zRveGeS?p8blFwIk=FQtrQuAf?|3J$*@)kl4o#J@goZUQI-jAXiT2k%39wm@=T0oe^ zpRx%uLQy$E7Vjza9eMfTQ=_&~9caZ{mie0%B3VKAq;I#QQytqhB&GyVt=6bP3RXzL z(Fas{c?qcD!0yQuQ1!S=2qTHebS2NW04ivaaCF$Ahk7HRrW{fMRE6I40aeQe=u7z} z90I5YrRaxzw|OQop3N%*)taXccLFM{bH)02r(j1iQ$R`|3{qS<1=8Z+APsF(2ABY; zJo{&X)U^dj)#L#n4UN(m;bOlXAQdznvs!+C=@F3jmj0q(>E_Uw{>HErX*3R2eN-dx znuAqqpLbX|@`L2F!;HcsgzGS)@UA5GqTi!cF2~`ODwo$-`#}pt@GCrE>8zEE4u{LE zYZP^ju#p=N2cQtH86k}%?2|M2vR;tmLQkqaG(bbv&&0_N7S`AUD8AAPYlI{p5Y|ZA zqWb7HNOQdYSHp7+_60?vDFI4^ifXR{BSAV63=L5+Far^4ZeA21Jc5(=EiO*pU(C$p z0aqvgG5I^}!p>AIfz!&&glHU6jqDyu!EyN;KLv}Ghx*3}0%425)xlDEc*obPH_TUk zZK(w+6!JyYola4=wdb#*Eiq`=DycziF*`_~ZdhQSPR)+0a2B9q##*Q8KS;eh4qY#M zZ09Y}!k1V|oaN_~sM$&96r?9H--1$BNI>ny<5s2f9!QY3WZKzC$JjX|ul?&1NyPC6 zax%%MY>#A~W6AjJLfTnx$@|J`>BcTiZ=(G#II3*)+?8QO=fphZ^L6cuy6tt@f5zQ_ zLBCd6ylq{oZu%B+g#bb|ZO#eNC_kj|*oV>HnOf?tFVc6uUsRjwB@tpA)9}-WxVaZ^Y7Xt$=SrM!8=T5M}lbi` zsxf-YVE){DSbEQnRqP1cDDys8y#!5$i>AX0F@a0t0y++jeWS5~$?`hAzIyS-THcqO ze~t~or)Fy;i$5bU=6j&E}>~NLyAd5fNnV^a`X@@kmO$Mu1nn+Qawi)g5wm z7ZsIKuJCD64G}6CIZ}Cmi#B>7l^CIV9%x@fBdAai6=KSRlE6ZgUKJk}hqrr21j(XM z%2>NrNoQM{h+O7kZ-Mj?Lz*ku?1;k`Na{fcG7G<}TWjMP!6vdx!|d1vn2`ly8@uxw2hp*Jxm>e^#DD&#J4}1~} z9gV@SFXDupYBLWURvakUs>td3G^Uzd5sVsQgoPT|WYTQtD`?YOr?_GxK>z)y{Or*x z#^&agYWz304o3)N7JSfx`M${ib%7Nv`|n}=ao^cn1b@G zb7P2nc<+g^G+8b}*#UJ?iYEsvNf#%~k}hq)QMGC?P1gXm(?nlUrJg;rb(V09;>_#- zC|3RrHgYDK&8j#>> zp9a*9)%IU8*E&v=*t^Iz)wSlC>L5#7^3XfuD8kf&P-pOn;oQAUlm2muY(ykmUV~!O zVIFW+EEih#ttt}gYB8v`%{Y`u4Xx#R_cARCyF?I8wT!0}(gfEfrRm+Qwyxr38(2Ah zP9<2Uo|J9N=u-;&Z=R!7y<3MFUqcVw&+^U=7k6+A>V`EUS^CsJ0!|B(tIh)vqe9VF>rA3Xy4kb~a6ZQ32aT;Qf^%@%DA4mx5RQcI@|A zU@Y|Vs^9Qt|F;dE*NyC7mna(((C^^%DsT+ z0}}I(z;n^y`Hds|2wAAMJN^3jxo`9cel8|Fe|TiQFAjbt{{EvQ^3vkKGs*McC8^61 zezbV>^G9eIj=*#A;Q3nl!yJ*97ENB-e}um;D*gPyQ;*>1V#-VZ@*C#w^+7P(elwmA zVFqpT(#ZlhhY!SR={Um|Hfa*@$gXDEFTj<{Mn_q@I_Sy}a#2Zq8QYsKFb(E+@NU zgqA*5osvQqO}R%seP(ew5AmdsLAHKFP24xREnTw1H|mpsgDru^{h5^au1(*d)IUCH zoKf%F@;z6hs;a__E11ZKfuAr`VKl&-lZs>R^hUYO)KJnwJC?EMu&3@=Yd`kk`qW6$ zZ6*&~EDA;WktYCF>Co$G3I}hsRGTN9hL$3-4Oy99?vX<-7BkskoIO{alC zw4oGB4j&$GuMI9Z^e*)KYu9r=YUS*fE#*X$t7e*wmeR8F{hE4uRPQR+TfBrznJ?ts ztaJTj2oOTHl)qKaFle|VSk}6jJA^C5cG`|+NMUFb%#w*i31ahracz#_rLe$=*h(io z;JNJVf+_HL8i3K+i;{`sVx`swxn{f6;~RkuMx!E_zu%*t43J%dNlBhv4TkrCz|Xl2 zA0O2kNiOvE)zL&Ju%tDJ>o*3G84mMRxXb6!DU4d$%@5(+J%GEs&Ly;&n7P4(!cs_{ zoi=;bmJPwN=ONz=tk0iY>rw~t<>gygRrIOLuzZ|EbP-dI%%CY7s^S7Lcqqret*AoK z@<*f<)Z)OX@wOsDxf@?_ucv?i$c>7#{{9o_4Ms{*Sc-)7&_=631~AQ_muhYI(y|LT z&7Q?8S%{*Dk-{GvWoQipP`NGnbg!sJ11sY>6rlVeQlro{{4oJfvLq+xO$@+c^kE*E zFD(PCHn*>dj!X$58`E3M^nmyJq{dFJlpI*&EI&4(-rEWJmd3)HPQL;Y5*N* zZqp6j2Mel!3ov$F!2{w^wq9vX^_U&SIN3qRGjDnzSt=R3n(Wp!d0#`={Wvn zbpKfzo6dQ)6EiN&y3=o3Wtb#0q4<~y^F%UeyV032ot zR_uZQIsmBp-e)jdkEDbWda(JkJQ%fGgbTb$_e*q7zj(j3dCwGZ|5H`q_m~>F-*P+m zKC%Le#{IW$;oe6~*omOJ{iga}2Hm21qslK+{dgsC|4!Ba1l`*`p?Zhj`+n3&r9$Pe zPUD)Xv!C$WpCVMXyZ(4}jfxMJ`w3qLW;k1Dt)!zWqWF8(jFVC|tFmY284=Z7Z7y_4 zDuntHr}+93FOT}t2VHD#tE>QCZ64I6cvQL+3$Hd0>#5w0s?DRiG`IJqu-vO3KZcQD z>^R_Hf-k1^59;B-3VA+sMF)e>4gIm)QdYOJN$S)Ep(1`Yjsr)~0bc5vC>kC}tZRG@ zSbvjXxzC2ds6I?6gl+4?t`0zxNR{$n;zi_Tg13vT>Z9T(_&fVVQg5dQ-4F{q7BP5LiG+b?+(0QKR5Z)v7+;d$2oD{o{Q^w=0 z{GS8#o6g1Ixiryj`}kbGz+1U@D4L6rl-YLUBknI#hb7r ztFH3{yXdGaCjje#-F$R+6L(JS%sVFLIPv_xobAwLXaT?i?MaiXrNnTA3gun}YC+F@ z1g;4@)kzTLN6boBEo8^wv_8yTGA2?UP@9Air_@6gUzL|l>Yfk8E0rzD6(LXRKI9!Y z%us1qk4xqeGQidG3Plk{TY^pLjC3{;4}FRW^Vl>oEYEFT2wT;TnbE=9aV}* zlzk(#gxW)M)`bX9;6+15_x8lnSxm0lf6tvzyKLD=*3GrXxRy(ileFkgvL{3-1p4y* zNb?G(;nsk84na$T3tt7+w#kBxqiYBq0K}(DKp@WLtS`tJSA@~YBkcaW@6V6>U6R|!eHz$kIz|PYp;t$mnpsUxADJuhW16h_0A{6SjjXS6vl&V*6 z>}Je_L~($bZ5OqrdU(J#C4>bqge8B1Uh`6kxRQp8u< zQ2TVrm8gZuI5R-UXiy(;q&{MI8I{;tyJ~IhWPI+)R*D%u%mqu24MT;L-yMfXK1-2F?2jK;}*={sP;X^${&rv#t@6BPBnzz-WbQfr)@p^sh$^O%O|HW z9-oM(&`T{TEkahA&P|EKRs{MLR7xBqr%r33kyT8@qou=S7~l$~gdc6#c_vb6cUU|e z;lt_%C=yk`#>?0+%3YGr(rfmRWi?Lp9Idt#V~aeHHce*#0u&Y1MVLBZqH}P>?f3rl zPWnU}K}4B=r)T9eGs0=BF}NFU;$20)gZY+v{CKwc7i+sBn|UU0^fbo|Jpd zpI-@bKJ-v)BZr{;nWF73sBXcBdi~S0?3r}6UA+c|OMdzLvzKj%aA%WD8h_B24BF{ zwQfRwrhqx*sRwSsNnMhnK~NFGCpUHOz5Dup5yytHE6t$-))#&9L@hEJ2a8wGxXA@N zoK?IQ%R)*j?_I68r3sR*mMbfj#TNM!S3Cb>M^-+>6BAdv3+vj!030gG*(Xl}g#f}s z4-G-QHgA3vA6xrTF83_4NV9WRf>L19AFZs0{~M{B<|_S!t`2(WE8U{>vi}wS zaZx>}Hwr7QF8&2?o>Xn;$KR6Mu~2kqI#hrqGL2@+kV_<^mR;EnP8DZQA|ObeBSy>C zmz%T1qq;3*TDmJ~%92YVotRm@SD^%47Ho%~W3=F6KU{uqsF+r@XC<9sG>|1>BSa5g zOAwK;RsQ8Fa7ZNi7%Oec53Cff6##}mNYY6*vSd6hC*id3t|OV)$lmf~NG%Cr@{CV&)(UAZ!=qhqMr>ZmNOW8m47dPni@ghN8To8!$p>FSHceiaDEH=nw5@pcP{XuYWePoRKxGzo+2>X zA^c-SG2YNk!I6bu?jD)sTr|~8yJBb@&XI!9J4>Kh&WqVrC_NnEf=+7_zl74a6iP2- z;SU<}ucA|y1PN!6R0@}%qRHXn!j=dMwUXUn{Q`sNDZPRm80tzV;^zR zNeu?!I9G57ZH$vif}df!KBh;$V~XMaQY?s$&y2Dk=|n~JTwC`PI}bA&#?v2yKRb4w z?Gr7UW^yES>%#VHdaIa`LEIDp!;b~!W`@|FYXNF*q%l*jK7g%q#Efx6KY0k({)Hjd zX;5s{Y!nNu0%L{KpnZLej2EA?Rzyu&w}-3@JpJGaQKR-_tiP`JL{XX4%yz^N6G;dR zNJiSV7;SrHGpU?AU?hWxU6n|ZOL}!%Iqhu><+6miz4iQW#cyfMtSRK(Y|8siuIvl( zG;z@DD+fUyury7)F?JP9$cvc;U#w~Z6r_p(%RnHccqyJt`31{}^?cmJ^46ml4VKpx zky$9rAAne^1bQPIp%wv4Mpt4OS`sX|uSoe|cJbX2G`(}tNhLo{+`FR#Lb7jSkHl&uYKK?SFx{RbAwz<%gFZGORLr^ zJEZ++ZS3j*(DhBaV7^7(rFcZKQP%IfBB`;h+;jP-=ytXFs!ydn7$PF#2#lDW%m}(G zNU-as!)$+Mr4*_5|1A|9Q|-Hw3M3r8rPWffQT}SkBhU+>68K!UvV4km*3~sP?##;9 zo@k;IilJcxAod3WY^h_Oe4>=ZQ2{zrhfuyJzDJmA>mn5a@z*7_7z(&`5+p-asuI$? zq2#Lz>^`8t3w?-@j1m%nwo{?vXD?O7ms4@n2D#3vD|+p4a-sFeJVozbR}L$;PDjUa z)xDH}6q+8CLp)67Bcli>w`04q+ zKlm?wFaE1`p#$%SXsi>PS}EBf_e75ENTEtnnzHj0H_aw93;0bSEsQ(@X%Y44L922g zZSlT!59NPRxr%%lkn1_gqrSanA*?VWVzdITLJB6(PU|J zufJ+6s~eNW8F?yODVdEc@Id*)DVMFJlQt2cn5dfsPsE}a3iw8ays8hV8+%j%w*Aor z7>)h^9$@c#Gyz6qj|9N(NowHQtwTn5GZ!o^ZPT`CEm26FBF>?JP(`CRvUB;>CtBx= zcFo&T>6^TWw29FE*rGhTa!?(1nQstjr6%p}(2udm_#@ocjih?AR7r)4cCO7@)5cMa zO>gjKK%xTM66#(CCuvO;(W5p)C>ytB$$p54V zW7=y$?I^Ha_rtme0^DD#`*Gbv!MNYi+ygc4Z_~Z3(kS9}e^>K9jL7#j_hCf-UUM(t z7uC<3@56}vy1S@vQ1y-a{YAPT(!J)asQy~_?jI=-xPQCukI{QsgqCoc`S=p4BM?jS zalQeQbQKBQb!Ce(LCwn1&07+;D?c|^1G=(38Aq~w+~(vVUD=vEtScLnM|5Rd@~EyP z(N|--k_n(1*A-ZXC7mn%N
WMb!+G&WG=nz>aVFVw!`MOJ~JK(av-G_G|ZcB2qe zlVqz+sWnJed@*6xg-A&0@H}ad*sid8{xNM>UfAqZUj$17I;tbnm#i_wOK{wB@q8*I zL}i4AWY=@mjXRz8MLo3(uLmHX_8 zgA9p``Wpx0Kl~N|@xy8B9$Tbhy8dTvJ_6y(rEV{DEDic<5ns#D*P8fH48h^ zHh7}hDeOgP0;NDA@_6)RK7tnGb=H^pNN7h=|G>J~4QoB6Hsa)DCkm+B3MYmG+Om>r zoD+3=S(XlH3lS@|Wp%5Ko!DTYAh$lvBPKnB)~z=LMo(Xf%pQ31G$+&yh5`vari5}v zTfSknUBBwQ2z1J>W-KLilvs)o70JiKS_gz+HCi_aeU?t6(N(ZGU5Nt1j#eO*DThmU zP+v*csqe5queQ1j0a9#2-i+~)xC34qdWISce%k7cMhPa(xfo@2g4m2`56o#fGP}d1 zRw(hUJFB~rbQxNHL*=!{$jXLFRaD`4&_HCUyzDg1m<>j((V!Yk4Cxof4dX~qXwSvk z8XS2n>>tu9f7U^*zV|0k>r<-j58*5F7bj(7|5_Boq0vk`c3@h5Y82=cA{bH&YR{WI zw=}TOXvz{Zr$*DxG<+tIATq2GI?mQ=jug`^&|Wn!RI7=AU}r}5oPt!N)s#xQ*|pD7 zRSK_q>Pb?2&ZVBz0E1|=jONf(Aj)t`5b8Y!RDSgstrG3?=LXz&M~(nalqr-weSq8D z1Kh_G`Ag17qJD-usBd;`uh4MzX#r~Eppa>ilG9b2mxQMov{C|<7M>N#qHgzjTmDFA zr~BM6L&iEZ6_NlV5K9H4OUWM7^R>f(F@%{4h-Bzxrj@oiX zQN#>QmgI@3^!zS59EP+S!;vWGS}Kp1JeN@fm-*AHyFaxP(!*eHw|w&UiA+a#AGXp^#1w6qE@t$%0(0;5=+?l_7N)MjR<}zS_uZLz- zOj7!g+U=VsP>KQ!ffvft51>M>3&FF6rM#omME)?~hMvXDPC38v60R%du=wf|7A+zc zK=W09xUM+U8G0}O((Qnrqm*3o1^hC&7t=lvMGN{8t{fV0MsbcWK@Tk$J=GA;=XZ?= z5Rx({LpcV4BuDhxF!IK6P2a}x^ri!RPC-dEP1$HNZ8CeEwJ;V*&S+qt@slWwlvExk zgRt6ap$m?lpz`LC?zj?lk2_H}au%wxP3XO`E@lU{F0yV};*+&?k=pt*bR#ppf=H4ArJD9(8b{S;E^(lqKEE~eBW;}=cSp%=;ti{BSv5y5qi_A5&U2HFGh-yj(awLACvR=1Kpzx>N%wWl}d>7xe_ zOXz@>BqRY00gK8nPkGNjR}Intbn?@(yu9IwRsy(sc15~}u%+soSc-bfB;k~~Gx@y# zKIGs_PM*wx>P!dtz8X@T3O(xYpa>ux6vTzF38Vk=*mx|U8&1UUWbEePEVQs;rDrl6 zGb~0vVj%uyxlj<_I}eDdp$Fo(9y1ff+%FKs`xhI;zk~+~^1pEqe`dj0{H1w7{E?&k zK>Xb&%>*&`3k30&uPrhbf9A1*#kU{5P%Qr1JRtshKNf#<#Y_-$zd#UQy4WDT{piOC z7XR#og@X9s=K=92j_bqX>pC+*%>4pEeC=X`_-7|PMnJrG!L<0Z^MLs3C4C@%zmG-> zZYp-i{Q^O}Yq3GR_pw5YuX@5lvG|^OK)iohABf+3{7fw7et{sqf3ZP)mCk#AEU>%V zS1lC8cg_Q1YUoK6KYa2`5Ocpk5bs}X5Z}J)F#_TbbruTZ&&>m3YUqLZ@Fj{%zrM&4 z#fLhN5fHy&!9v^T=K(P_^gw+0TaPOi8^mvTtO#wlELkWP-#rhAsi6nrpD&+DD7arB zp}2OjL41oGy&ns-_+J-HD84Wch^e6m;=?BtH!U`Z|Mjs#DDGIgP%OS<9uQwL(Ffwg zCltFD8^m`keT-o7UCS2=;xEnv;;;1Y?tTrSZLvXomkzFZED(y%jV=_#cg+Lhca8L6 z@omS>q{ZAXkQVP>Y!H7AMe<_;#IIklM6qig5K}{s79T#L*mD0O3vI7|m=eW%`yGC< z=nRCqSPsAV;hrnQ4q9m9gfHl}AF0`uCN8uZ%5N zaBXnE*)DVlN9tp(yXfkV)FUKK@*e0;Bj-6w~&2$R>3i#(UfO9%dh$<=;$cYTat zo#FEOlOaV@>*en@RctTh2d&^TyH-{?OQ(<>a8+Qm?N3>?9Z+B-vQ?8Te!NsUR?V1< z+jJ}}o!Ij4RU?WC#o~BB*X7pnYQLVb0v*KjKzex5$J0ZiZK{j8QOV2o5ND=pXYV0( ziCR_Hr9Q|rgQl^7X<@!;r1}SaBt}YzU22jW85zs}cxrW(-U>80UtF7-xhcNDxLT~Q z?nn=J>!Esie>^DfM)f*XOougJ-}_J?H6z2hMi{@$2|%x1g231znQNgjvT)N!^3y2; z-k=P&imHH*w4a{C05ET~B>`AB#-49_tZ!!nmC*poKRT@xQ7MR_h;#z1dmyEMn+qzkk+*}&W@jR;^BGmbAB{7dIlDD0-Egq zGtqnvWV4}XX3yunqJJxP2})= zmKgI`d$cH$o8$zBk+NcBV>c(?@EU%_bo@JnM=k@l!(il9S<^=JUmRaS5(=i6 zP9;|_T`N#N{IG3>CeYbY|Dp@FXw!9xgN_%LK|F@kXU4X7XKQ9Va-LamI~F$Wu?`VHwsQXO`c{U;25~_24E`XD#X<^)2L97@+&EQV#kRHSZ{vaD@cMSEkdROHbpW^ ztv%{bIhi;%4L2idv+$!sye&Uj<|6&~TRHPf)N3?+kszAxP`_|BEyp(XWr_&aHQE%3 z#f&2$#mbbl*5oBXYP2}keDNR41i>JFM9hvPCyN1yAFE$!Y7k`QY(?ZK>#+P9k+FmF zx5X>_f)0rh@F&)<9F}>H(QBhg={t!eN!` z$ED+7I|M)1l>BQ4iJM)4=k!o8FvMZ;4*obCMFPOg)BwcY$JaB`KD)N zsQkDae`U2>cXE8g0qB*@>j~zlRkg}%d;}*iRVHezay>O_^s1YvE7%d$rJ{w3dY8~E zikgPDj(TOaZ_bvRj@3PluC!H?JkB(kFcjz>v%xO_S(XDu$t5t2uQlmIJ6^63D-jVp zt>g-eO`oxDU6s=D1qmsmj_L zxU;~-bgDAPv+BD8Ia6~->1nC9*mDZa`O_|c^;8A~MI5RwR9uQ_ z8!uJ}P`J5i(X%%-{y}LbS-YLV4V_}LHCZ6FgJCpg@qri+esSS-J9+tz(+Dco&!kp} zmkFtT*uCaTo;Hc-I7VS!gsfqi&E$`Gl1u~yCK6YIx~|$m#XeFLLrqQ@v(0d@6%x@G zoIRNqP-=XA`OA^+sQf)g?e7VDyr7dSNe;Xqm%pcX<@)abWAFW=?JBFg-}Phf^ZUR; zg9H<0?M=`VNFa4kk{7wJXJxb&UiyyGJ38+5-qAn!!!h2DgwbIjFPA$8g^01FZN#W4 zjfxtTLinYTrZy<*0Rlv&kZJ@JN}~mf5;XRr;#-0H`Of*QwbwpB^6TsXsTetX{dm^% zJZrA`%-_$P+IIm58_}K>UY?2ZGe>VLMm(5|8(iqO9`?C^1|c0v0!CmBF=3xKS=i?Q zOWQD>n;iZji(@ihfd7>doz^n@`g|aziSkUbCDCR!5x=lm1EHDC8d~a;BRqj4G*5d6+p5RopT?5>u`oe4$BxGe$a285s^PhaWD z*j^&}1}cap4MYcqcCaHCNr8@YRSi9O}0qk3S z@zkF3L`z9Mi6(&n4OSW*3NiG6`r8+a$e_}c(-C)iCdUemCr8P^ zMVGLm5!K>uQH^A=NomZR>&CNg2^P6^X6v2J5m~GwjRQ=P1So^pfCk?gU9>{QZ(Lp< z$(!14ZOx$YO6bXZV|jhy6cW%0WMLLvCcJZW!xbzVH;P+-ai3f8zO0>lR-eI%I`6_i zMzu7~l5=c>T$J6x&Ntw^Fj62n@Z>;QOf2hSKh3loPuCziKKHVLHrKH+j0O@NkoTd? zO@@H%D+4}1BkhpT8C{yJ%Y82Y%VewE4q_WNx`-`ut>tm<({4-Xht10tWQb^vzC17b15$&7>VC@ttJb4w{VPx$L;}_4B7rqb_ zE5ryxLK%Z(UbA#7GUl1l#}A%!W1h&WX^x4|dMw$@+Jfg|#Y=eYSXMk~^mY*|USd|f zsMw652uq$@t;pc-rXvkSI%4apc)(11Cf)7vD_DYjHhZz-!J+k*nDjW19WORJUc|bv zdrT+JWXDq&d)eBO`^b(L%Z?W*g}fFT98PvT%L2o>i3_}HWyb?*;j@6`JZ3%z%mq=Q%UxcuTkl0f`8m4_!p{c-t~k8_P9%6 z?|P!@uoBpdhG;jiwHghs>-(mISQ$!n10=T=SUNmF-L8Uah}*6(bY?8w!bWu6qDY3@ z-j7xd%Uz_4KFw%?JQCX`a)5|G1OQf=!9N6=*Rg@}rG%klrIyVw3zOXTcF{F>g%z`YdfquF8M0!z|o(9N<>j8x3yIF5b3hNftjeoPf8L>BKsYnJ!C% zh3G4Ui_;}p#E{;V3~z}FO^8e!LT*J@2_3jq3UF~6(7->T1HWrJ;vK#T!VE_soYhQ$ zzR3gv2_d0~eo!CvgU1POVU7Qsq7(RGW$Y1&=!^RwK50YdOWQFw7Vh+lg;9y+Bj4>EK#LGv3sTB{{_|toI zG_s<&o}=tT*q0Ef(x%93_uPym%97Vk5pY5xvM@=X8}kU~mkcBBtB!z4T6v;9R<+5D z$Xv;&qH%BvQVASB;HW)+1OT_SaX`pDSwZf(86oGBn>FNWvzY`sykv(Dy3O|<5u{Uo z&I4fG?h1Bm_sxWLVRo|yUTr#)fH$iJi>dzz;N5{i*IBSTW(1wjZPt+MOs1EBd!;B{ zXT5Ix*-SX+bDK5bI%Kz(fZKCKFiw_n$rt-!5#X7#h;1_h&gV93z;!0mOTdk4LR(C+eDM zE}j0~$TbPGX8zn-PY@u>fXESourFG3dCRIL*%%o&&ZCvs#Zg>Xc7g>y2ZU{xI2H!& z3D`FItM@MNg=7e_qieo~zPa9Ni9IUKWt)d_J3_C>89%ga!yD`q!T zKG2xJh0>`I>~aRN#}aoLc2wIjP@+np#yE*|*&FdPsj5$$jOS)JNXGr2E>oA%ph{C$ zanK1+Q{4Tfw=i!hFvsUW^F})@)_?Zi8j7dIhbEn0tMdxw)8dnp&Tr7U<>1p2NQ>Jh zoo~~*6^_%ANQ=8_=MjoW@t`iu%Wgdp=u_*;5O>mkcSmMRJ7dwPp0>|WlF}m~rJmCE z5wI6N9j~fQ*p_Mqn+wS$EnUE_D#e}wcZ=H@gi{XP$1FJLHRy(fg$IVN<^92zSXWrg z*Oc9jn=1PnX{bpB?NMo}7_??Uc6O@A<;r#j=B;otGJ?ZVv;bo>BtrCwv*Ff&a2p~h z3mBxqQjev%7O_?+#%S}CnRSykW+}wiq;+hyfYiSY6F9m*fVs`0>^bgLMCe$uY&tGyh<(u6<)XD@Kl5ktKS~tKn5}S72MdW8PH2PPbQ{zKDAOw9wtbj z8Nw?>Atf*{qYxixnH^NvNmj$`?zg#3JPB(Z_CN@MW#E%>Op`Xxx{iQ`47}#;_UA?* zu|(8%p2aRzKC2hj6Q2549kH&+$RT$mwhMmDi=oLC1780X`G|Mm6?F#)+svz*;mZ-K zCc;BzG&g}_XC~O%Jdiw(Q5%bhm+Vl!6r2(|5%A=nCI;%kJ0J`5i@kq$uV;fRw(7#0 zI~Oq9hw6*Y&4D+zRs}eiLvmsWvY(cGmg#40sBNyVLQ_OO(~#;m_~)vv{k$khNfYZ?{1Grf^ zJ@)V=dhadTlpfF)czp%AZ8Jm8CO2!8tIcK-&dm;V><;QZ=pH5Nq`iMn+l~r!yJrTS zO>WkptIcK-=w7wUb$>p}Co9Ma{a%LUs>w_O+^lepc$6c6bBc620M2y?-E%WS&L=l( zoU6@d66j`yb4Sv4zdsXnhtRFPb|#!V(kAFx;oKhLf{y^5iw)=I?#Jt~5qP09DWYIT z$ob@EjdPE7W-|%rW(B&<>5%~4)4p5}4(Ybd2s)qKtU*_sO;15LcqBl#B{>AaWXH^) zv&qdGbhX*^5_D^h0Fzi5&(xNk&UIOk&YOV)I=r+y>xSndR(>Qo%g>n0ih{~_}F8dED=!n8Q zW)$drZnMU?&SWNG+}~E#bWFmwvk4bWG07xs@#?q|4%H;AeeyC1U$!Ef7@N@~tnhhE z!V^?uJ5-af4ZwCye7m&|Ag; zGl^@PTR|xjTugVIs2^>Y9pEC}vP(>^E8H`gna4SpgX7EGO|+0npZh1a+LI-HGU7qySOQ7|7dG-#|ZmKQM*@J1eDSHvzW6f~{0T8lO{G(mw0E@$(hwoAr zA$-BKSX;LEwpy^OUo9TzxN5PXY_V4@hNkI*0Dd3k7iz)QC-w2bqqROZmMzvkPK(!h zi{~EcwD9Mz)m=@O=hu9J1^n~(+!GbY2f+L5d|(Hc*r=s}cHK`nbqVxk z;cY&q1|>x64gO1LaJ?D?fbOX`7zhn+SA+1jT|<-r`-&PUID|RutM{OCYXbE>wH~?} zoE;iGs0QIJy5{iq(BLsOP;z*N=xVSeGNOW@ibg8oYNVaerrP zE;3>DFC?+h{#A3`X*Zf;8A5!h_K+z?PnX-Q-TAg%ja&>Q&LZC(t+WA&Fd1z?8bs#P z9gBM)s*oO&aB`+jl)S+25y+?z5kDa=kzf)2M0z7o2GlVb zlRf))YI^LyeekUsIV=8OsWhIdK#@dg98*lE_~K9RM94@Gquf?%#faj9&d+n0u=(g@w4C;|g>4 z2|Bv5Q!N6y*i~Q0lU|8TutNovc+|3 z5$M6K^%k4UiQcIeD!>7DcD2}9ws=S_!mF5xqFkmM%2#uOQM;A!Cgx*P_(ZWCHlIUSNVI#_zJQjx-wID%(6%c0Z)<%joVfoB{J zC6x@J+g#7KhFoGmR8*4BXY?AqnsY`Eq4Da0cyy8~**Mu(C~ls5ApX5!w>h~DY`1yI zii{Dp551(bK_R>9bw%8Yc|i|24e;}w&1MJ?JouCf<;9$!1?6)uqR!@IPbCMq_LE8u zK3yA;y|#xlqBc2rY9D|&C8^wU<4Anu$c_ZLt^{&s!#FZvoH*{~2BVGmih^;#k{uXX z677Moo$pDj8jzn*aLC`Ws3;fUT#KUtL@KgNHV~=!VG{|Yr-_JzL5`i(7JZ)g zwPLPDJeCw2@81z+PoKi_A)zGON|yg6c`P@_ONkEW(%BK@u?RFy&95(;FOH6pS&&lI zXGIFpUK}0k=YwZOgAg_i$g~zmnO`0_J7OjCb{^VJ5<5GXfx@l7oe1gSmyg1Ib&%y4 z2w9!Nkq+ud#9qH#6t1@W0K;`LP?}+dUF^vxFrCRMPMvS5tUMh1RwPcbiw2Y%X3LQ( z+Z)GCib2J{vyuOulDUb=hk=3)N?b~`GM@-WY5YwzjPlPalxqU5eu#(JTl(dhQe1$6MATq%z?7Omt7^?qiv1*Qjvl_H)2%YkV$#C&wMZ@QvXn2Oj z7R%@!ZLgQ|p-nsxvlb1sgkNsw9)37U(on2<)b(-TwQE!hg3fl2+8!y-^qCcWXfh{{ zvT%T@a5IsvkO`XNig2p0zEObPJSv_9py}&@QA7=rIBXha)g@wCaj}JNKO_msDk!P}(@2lkHYIds1@fgHy7#0~2MRwKpH* zj^&h={5F=H1D)V!8L|s_BIt@9cAm4^tH=WqxRm1x*f&>XUpv)c;+Z$1V5~O=T}dEw zfR=XyK4yCt2~Y!kz{rgJ21IhiYVTFqi|Lp?5WO4sH%7`Mb3$512>~wIsa^5(2b7W# zj4Zcj9Tv>?{06`b+5qDA4rbr`4S<_^2)1w^%J$vLg0A{^joB#Y8%nljP z{^d289Wu=6G;$)CK@0;Bag>%)f*)cJWvxw=X4d@RX4n{L_hUZcDj807H}A&>?HMBoBTOwl z2!1G;-n8E$78AEQ2s!<_KN4r zu8zNyv?21da2>NbAdmr+bQ_jVx@**zUV14aoxNb9&gv67{!+7llLVAkj#nxtiXu`m za<-yW-OV|l?9>3ISbHn)usDh+eTGGyZ_Z?8W4A(3IcXwf=ZRM-m2}Z4_P+N!O;07A z6vr38uAMcC^;d;^WDc-|GF2`lprsI!GYyz-*OiH}!P_$#z3B+IH5*yf3c?@K>@V<0 zVj-gp90pBb>>kvH7r}{S{3`v8ZpOs?CeLim{D!ZNoDoT7gQI_0AJ18u=3K>)6=ye_ zr&Kv%8OxG+YZ`I~VqOGYG%<2?%RI?t3}U5qjjk{$Dhvht8BSB7y*$sPDb~AI)=n=j zw2V6n$Kds{Cyq6XkOrKq!I+gtS#<1a6mDoZeH-UHDEn3b;DVU}s30F2^3MEGBCG7@ zZ_pS^a1HY*4-STAhD-<*saYbEGv%3Nj$^U|XSe7r0lpQ9GMlSRn`3%{FN8&x=oT!s z1}?b{gJrTCb^wEQV3tRHl5}ioiuqm%yMl4w-bJaPF&e9X`JLr@T^F3tvSU}klO`|V zS;pV8_~k^EDr&1cjPzC9L<}tKXp1nN*be?~A-DOj4B;-91$`{J4031YP5u&r02TC7 zTCurJDd1s=y28^0Q&fq*wiD2us3u~Vq1^Q(RqsxRypGCpHac(YgFkShtvfQ1my=Yg za&C^V3>SpS)J!X10jQBw`7$mVYSoJ9&UXl7KKoZi(F znd2i|cy^>f!07EUo(K7OxOTjSztg7*)9G22fpdn!wS{NJdSVR$_6K+b@ZuXHi9#*0J)fT(dGM5K4qC{uXdw3~HzB{$ z9SjLyD%YL81%1Gm!fcd%(e{3v-~%z6?^d%x(t$-5yJwhWSKnep_z(SIJ>3AV4U%w1l zN~d4Xr1!Cwi;ZfQEZ+&Aur8Vt=EkqC+w3L4-MsY1`M}IFvhPGQQoc`*c@QWx!Q9m}w{AlmMkj z-Xu!EAqCniT3C*Hss}mCS3Nz6Zg<`^0RoBFLNaguN9pR@o;7qvV!BTAVjAT{H{9$K?L2Xy zSG&F(_aI(P%-V<_O5U(yyZy?;ykJc@ydOkS5e??4?$5{DS9xmAgx4di_vd| zdqdOb5Q4;yikY(n2#vTX9}+|Q6N?A8d-g~5ElqPJmmLGB@=0516A_3TL1~B;4WO06 zj>^IE8cR^Juu3~Mbp#1eEvWJ_PPI$1e8TQpl3Tkmtk1v^aUCv>>+OkEf|QEhpd6A~ zPdcCF*W>f{5s6w{w|7D*9M|(>ahW;mC;L&0IUC^asZs>*sl*&a)*_-tACU^m{l|Wf zn8Oyu4grft-=O;1iR$ArI`Wuex}2st=+p^ad}EC3du&nD3!x+iKZ`Qc23Bfmuq}0v zM?}=9DMfw3))0dN0|nwx#_J+gK_o~ykW6$m^%o#IsINCfvnwwF^s4zR%Y?Sm?PW|= zcC`z1WObYK5vOXbCz~r2*rM!nlKjDfT~#seK({p|2ACP}l>nLzoWtc@iakaK$%$b_ z!1hEHpO89<(qPrRG{;!$ktu4iLFBEl7KkRxM%b&0`NN_}7DbF^-<7gzB630@{tzzv ztUr!s?c^ZUDqFz4T|d9ymYvafSogb(#y_gK?Iqkso8~WD2!5=<8{$EXm_&u!Qp97y z%ikAnMYN*n?h4!yVu1$5l-2$gw1e^f}tlma&LGABf=Tr35iVHpmBSw$^)ld~!4BQANyitJwU#dg2b zSJ;1HFk{t=q?jp6kWccqYK#>z+}XGCmeNN}f*f=(gGG9-peiINV2T|-LD1xT+ZPJa z!`}?-0+Sz7NHQ+;kc6BTd%pyn#xjTmgo088B*7gUVLh^iq}O63O4F51D5BPV*{y zf1}eyv!5@o+nHGi3d2kh(Ar4%pH(wUH8Xuy?JOU@yDAB}Aq_j=id_<}If0W;T5r$Gx-i1YAyWSfBC)6Tbft+Lnh%c7i zVOFY!MY)=p1)8$miqog6O$WWuN3xnz^k=KyY*u!{vQ)3N{*3)AyilAR7^wb`m|37r zimCK3Y?E^%%r4E%z{4wN9~Cvw8HC6`BQug2MytReEZdw#Sj5@2Yz@K&k_v`5CGn8B zZAI^pGGP-fV;HH{mcBCF0}kMY<`cN3pBTqToMZ5#acxSHROtbJkrWGso`WljGYodp zwJ-|uBYu&ccYx{!B1Qqp-D41l?#npPL|Uz@cA@h*;`m7zt;p8)=nzCEwyQA&6Tw5t1` zEt2cM#-<2mZuG-X8@^tYdI>t5>j|}O^5}Fff4Q0?Zto-4qUq=mHvt;vjWc3o7x+cq4 zVMkUQp-kFqGlxtP9W&&FiHDSr=x4=A47IE)ZqhJL^J# z=Cy|h&1xzl(?9q7-l?%*CI3n=l5tU{xh_DYO?RL)jbIHPk~+q@ie)A{JZtxY1okNZ!3P&2yO^ zXnP@a)b>f414bK7B`ERK+>)%(rMWp8?q`JjFpT$wZTdo=G(MMi^N`F6KF23Y`2-eV zwr{3pJzXICMm3nd;)9EjiJU9!i^Ob>Fsw>2F^wfFvd7+XRKp5Iq%3A2!@{_*WpQ+h zggP+H>M60GSz7}HYaFE49hYN^4c2Q@Wz{_O=N5<^fkB9~`pi~M*)AXw=|Vewr(DN~ z&}T=dAbO{&2E`3DVM~$Y53#~PEpw9bOFDS9LjR?FK_f$!<|4HxWsG253L7dOYAXQY z3O4L+J$_VC8r(sH&prc>H+qf4fe64mg?-Leg;xYrXk=}X0O4%B8p8juzOZibn^D3x zfy9DlWqzD-CV{EXM0~b1J(p`-7~?Yl=UmriJUuHJw?pL!_+u_H=cr(ZbFnS-%ueN6 z&+q2$(-eOaVWJ0P;+I(m*gDTj-otIgYKgHcvRm3Bsk)H;3~J>^7=-`>CnBS4OIl#UKGmLD$`g!H+<84G8$ZdewU3_^4SzQA^aN;i zR@9V-q2jVvX-w7#Q6MSeo zFhiFThl25xgAgB}IoKs!0WIW>&nW>hjO9cT5!^GSI&_6`ReqT8I1gWr$)=U)p)i2W zkSUX8i=HRX*U(#=zCcD#Y848U>IM-BvfNhn9#9=HIISgnfl6I(2_-VvI4dBr4NO8f zOI_NJCIwS`a8Thb6iR2!tj=*fvMTk9dLVrWod80VVNU9!*1X;eAaP|5m8Zs{s6C)+ zA%s<20{*}B!hiff)By=4Sg8RUS!*LGJQ50qG^}7q9}UeoWsFx8O_WcSIwUwtilll- zV-=AP5>stgnO4UTlV)YCo5wc;fBX3pzAmr{3OQ2kh~PNF6!T$b&3D0lG`X0Fa6*gI z=+_OEAq9jI1&eD4MZZA95lRL(_`aDE`Cc+dfNQ#d_nvHOUaQBs1&|6j&@9o3#|@pF zKq-}+(23^Quj=ST`Z(3viDlrM2A!(Mc^InF?4VOQKWzi$I{a)FlQe zUM*V8Y9ZK(UBUjU=BtQ3Y6DzEP^AkK;@&6g2upJV>|K(l!Y3*`FWGud`vl|_E#q-X zyrCD~c!32J(4QP_5bOE5(2Oo0Z@YEEL{d>nF6y=6fY`0Td8^#qz#Vo`D}tq(V~d%K zyz}9*$1Ma3XPKTT_FX~16ogEDYPo|);Xz)we3Z*6J?IB`GMJ96E2(X%Ja1i{Nx(4U z`nDutqxBWANCzTsC^@W6Xxkk6mwW_h_-QD@%j`Rltp>A}TdoYIGFuY9=QO+L%_d5< zEv;egX@V*=6T!z8g7s?*Lnx-D#`10txtU51iuSM_>(d~tc}v_CgL!DfZMH2=Cv<(j zBXmikFrka|5!hWz$_|^bT6`?ZX2GBLc?jCv|Kw2n zWa2)EPI0|0vT6pGZaqS356f;Wxg3<`=Q45apsL}!#Mf1ikivw1un|&8v6b<96eT77 zq;gyvy*QL8DG<6IC55RIa`vebK17|m%I)x}!g-Jh8I_CKm)eI8Aa!PNtN^~wuI#Kr z$n;J!9DCFn%U$}4?7xcsTB4_!K{ibUna8445o9Hxr@&{6C?xCMUt)h@WRn4u2teBt z!X1oQNuH05H=>bg+R%^4jNFW1M{pP9HsL;gG379+W{F?m~TMJtinTu}FCm zxUQ)_W>3pXAYN^O8M4$4@wVcQ4x_IoWiTwP&=l;NI|`O)2_DLq1aLBM1 zzLHZ>yaE2YV?0Znl<9_eDgjG6HqB^(O-85lr4^fo9%m1nE_20}W0c@SmuRdeIXUPI z73}%k*i>!}5SRK?4p@z*>+GO9DfV1Lo(L-|Yz6~$);6wd5o>eX7?r;r62)dkU+jLBucfwqFKAV47$vF81ZHejk(p0$PtNnvM3szK%8Q2(sZEB zc%Tg8-G9ZA(5@dYax3jyn|L1j^cBbt{A*)IFUps!Y?pRzS4OEk$g zSdrQHSv3j+J7S5cZt5hax;7XL<;iodD5?WnPN)mNvC)v~r$iAbm3SM%!09geIGmt`5rm`!s zP!>MLSd|FAhR91AnVjBIYe+wt5&-_3uE{Y`$0FoJvF>A?be|_C8>D z5V10C)dX%OXX5~RvqHu!mhy=HSZo3xmUWvFn_yM6ORpbv47E!(6bu$J)&LNJ6s-Z1 zBaVQc|)$VlSI$R6|NYBl5iNklHIf*Sq=ZujobezN~7`nR^~}7Z6!Ft zu-HXf?o#Y5M!`&R&`I$?q;w}YMhW~HoDbz7WL1Ir1>&ZgBE*2@%K=?5lA7`?KxpR? zZ-YU}R2f;W7`+SvLyyqsor~bVfZt`VpqRBmU`Or=>PbgA@x1~Bn{0db+mb#A<-NI2 zA68*fh8c#K`g{bY483wdYL%KoZF?F%79>!uHHlYd z=0oST{*!UuBOyeOc}wx~%ZeHH3l=G)APk9K07A;^{Blidy#ktu2%P}gn3Fkvg1%KG ziYy|ZJ`2H;)By;x3vp(PQfHER0Hl@{{O5PLoeM`<#?QW$U#AMyij7TUPzYIAiE*F` z&S*-pESHF4o!pN3&167wL#eRv`t=i0aaytV{S#64d9sw=5)dm3#!!hbtaAW?T}hv} zl^TTfO>EN`9iv8SGnHfz*JXrI*gGh)Tw3su(B6C1+RL=M7~YOAVVTfEi$+PLblr?9 z5?^v`G4X07oK-9)M&RS?^YQ~)nYGmnQpLu7_ei-V&f)r>V)XwIbbvC|jpm_GikVas z8-`M9GOMOcWm1`lqZL>?0NcwBEc8ArI)Bs%=OFaUDw%&X$U?9>mjFx@nZn-dLgU1n zir8dMcHdOn8hjto2(+2CrN!F$r(HUOvKIC=8)*_peG0~oS*=iE^^0)!G5L)wkYlEs z7WvVf;YkY>2^%h_bZb#2q(+{0ObbRKm)o>AEoQ|+$ETUCf?MR#ppht#F~|o4wpEc) zIsKo&CpDod`}`Y9ph(0!*M&dhGg9_Ul{;ZYu|Bo1N0DlTn`Po&XF-xpS9AAPD#zLH zbLG(=-v%+)A*hgRlL?^J#V_{W7ZtzcPqubpsTGR$ zB2t*pp`p!wXd(%+o*1(R-D7eX@U%dQ8a(9>J}^9?<_=Hv_Zvng!;`UJ9q`mNXM$(* z(BSDJUN=00pwofpKlTEiZ+Z=!0X=W+_(;$rVgHCt+1)ulb7Xdq_SAGT{oMP_bssj_959@K!=K&6GnJg=9`vf@lMwqmoqSCrltu z$WEFkzl(U(c<04hhsez66r49#5L;e+jYI%irN2wtss(B75k9(G7%||vm9|hdA$8#= zW-amXWcgE=>U{1H>(7zP`Z`iQ0lk>s=`>5qm|WSw9fI_l7BJ-ELiYJAh(r?=oiVQ2 z;;{Dj^2aZ?E`JRj`^H;r(dtEMo!xL8qLca=XMVIQ)Mgv9Dx^5R<v4ys!7uHj)#FWGYNt%1c zh2+l1A8P4R!7MC+7kM!Pw8q>41%1v%PvmN1IQzH{y}pR`HF#_3Ob|8P>wwa}fEl4c zEdgIvx96ijMK^-qChk3h>oIGQ6d-Qehs8jG=7htQS7AoVx{8wv-1g6ChMbQne`*{& zY-s9w8Qh&9STYqnEE#em%xmMtW3C3Cx!ur#XY3a`3chjZNXeaRz_Cmf1{@}Az%gB2 zgGp=70&s#dElY+2haa{I$U;{E2LRS#V^#;I>`-t|x4}l!53q3st{XOCLnx>-E7)v~ zX9JwgaqpqCIqofZLV5;ls)w<%c1;4$p{=Z44jv3Py<1tky1--d&nvgGmdyrvmh~QY zmc5ElXWgt&XWbD%oprrLo!Jteos+Q(ATXNXgCL1m)3LfKDi!HNS|sclQy>yUX$nkhraUe{1)+_v1cW}Tz$+6Av1-K@%7DBog(kc8 zw~&_IlaOPS7-|n@>lWpMH!AKAx9I9TxmXSKi;N$eu9p4FBFV=C(hf{;c4?W2ZRAZp zRrb;nbThUD_FsZ? zkZydXfP?`m)>cRG$Yez6s{W7fK^_LhclXt{?%k~mwl$8=MT7fwKA?zT4E>xxq;uQK zm)iNGWe2KV!Tl$y=cQYLv|P+S_g0SOv2z9MtO(?gu9Pi}|i(1-`J5b%;Nj3|L3 zosx$o11=n^5@>bb0fCJZqhZ|Y}dJVg4$sWjHKd(XXomgG_u+?#otJS zs$Y8}*Q7C;fpmkYdorGkoBNB^vSvVgg=PH%qs(WH&zuiBt6^S;J08eA(SUW^wSuJ`0ygXJQ5Q~@a z?|7Bfr{PnWcUH3wk7zNr@y)V)%jeRm&#_3A=}`7oB|O9u!@6y-I%Cb`s(U@Cofl!w z<=H2K4e7A=f)%e<2!VO7%iUlyPYH8y&}ARw^Co8B;OFSu{)LInwloFs80wT>UY3yK zjcd^56(Et1`eqh%; zd@#}X)V&w_+OaJUZL-z+wY4R;1O^nX#~kMdtBcL%W-q6nOzc5?rHh^k$U7?g+Q3=S zZ_7NgG}5joOn8elq|A15(DMi5#>6Sv^*M*olqVrY*@sUt*SWfokxOO|+yNh-2L?k4 zcD2k;o$lnf*xFjL{CN@%tnorG#g^8Jk}_;Qt~%V*IiyG|yUPK2RIKM}C`iKDx=tI4 z(S}q+%sYJ^Mk%A+7(W1Ew}#!pFv{+xZnn304GRm<*@Vu3Gla#7)<1JWZ~$aLF1By; z9s1BSV@sna)ZGv5Avev@EJ38i4EK@Bmf~(QM?+h711ltq76Z2XhXc}iLPuDVD(=Vb z2X+DU|0&ete_RUU6fxIE&z}d~%zn7YM-H|vZEz+vC*dIl)&GXGt4;vtw1z#t9mvZm z&UZi%QCNU(nTsE~C(;GRTX7klF<*+CAGH*OI1HtzPq0S9gnnoRSj0al3nOO_M|}0I zPdzA8ogtb%VwcTZBXqOA5`YR&aIMs6mfP}OBV(Zo`enyG5$@^nK-6dASlbq^i4ul$=1yZQ{!U@_QvV)-m6z$nTC=| zI1)96nv3Na^;0yLyY=m%Wu8S>?@=tU$n!)`+T^ZP0;*a!%+Wk19hrLohV0c_c`a>k zj?Y-_n*kNV(b?t7DVCv(19pHFhsn8Ep{Y;m*D!=;ehLtrwLp{y~5!>9? zJOq4ji2~6oysSVJf86Rr^u9G#_uTo`xU`qPH{Wq|_`o@-f=%C{!ltkHu<3hM!R8$m zY?_A(n`ZA})9fK^$h2TFJsn9}qz9UbXpTj*Y#`D`8$&9_t!N2$9^0BrSZN4HTI(`?2EjnWlJ4Y) zO@u9Sq?l|QAk~F?K`l&kOEVO7S6v{)T~Y}qRZHJzVi+49 z%6-cTf%Gf+N|L*X39zpW@L>wHfH`|B z?IS}Pg1Imu3K&I?kD#ABub)CZH=)2Z9)0lG|=4poWYFSDFuVBsA$T z%tCKY^nS#@Dn*C&%3D?$JRVEjWbPKIau)h>5VvTL?+SmE)kv!+lK~V&AOpK zBiT)uXZa36GA`~OwM54XeATDh{IAM*3ian$>0pq^Ir8kp(hiC(G{}Cq&}?HNaVZV< z{<9}aP0D_r4E+e~1ct3?nHr>VO-`TYiG5R^uov0S6OT@LLVC#l#@IRe3AHyv)TT;+ zKSF5tzh;Yesi7TdM5aeO)-QfF&`t|k3r~@8EHKt^lrgx{f$RtEsyrSg+Er;jkkw7B zaJrSioew?`436(+yW9v$irKEkI+MQW4!>z4<+@|RQj@uQ>QztcGS@6)4#=b9ZWk>> zTZ#xAJ-Yh#&GsHh8 z^LwLdxCb_9beR%G#L`g<_cxmcE4zG>4(&b@)Vo2M-G+`)Q*%GRlR}wW*X%;asR~Dt%ryp^i{cYV+^mlVQ2wueP0kzyy4KymxCq zm<}%NY;t}&_~>QLRa7x2 z%5q@+sawv}t)8(7tvi_m!G}vB@q^iCbTK5-0L=ty!>)Q(3X;YEsSTqFmCw5xl-Tc=b96YDn`tGEV zM_Nfipg4P+>Veb74ord)-I~+;Ageib%lj1bRlY0XFn4Sq|FN58 z&*&tqIV2f<&uH%vXV2)X40FaNLFf=LXRP<&8S5c*z?{R`uz@%S=B&%R;R1iCLxyA- z-R!)3AJn?sK+{uK`ntRh8?)-nYPZJW!)D7dvw_W)V|ovpEyuiCVDsp#VDsn^fX$;l zhRxyZ5p!xh@uqIPIW&vO#G86gZYJJT$D3KofC$O^SyR)f5Qwvrw_iRvNl13pe3d}UK5h_S z3056>KrE$ITVJ8r^7MmES@+R@v5x7FB`x68tUEr}QsEuEJ#J;v z_Hyor%L!3SQsc|)Ev0=#j+m&e{*Rg%C@eWZJI?NGdF+#3flq(<0Z=bkC8iJnb=_=Y zF!RHU!6ZYsWTz=Hm|Wj~4CeJS#$eh^gwhzB*vFC{#%`%)ByE};fcd?o%M~@=F|Q%* zl?JwELRK2Hu#wB#jh?03hhQQ(iWY%y`@S#F(HPdjL=n(yTCK2gLXp|o`qy!4dnU{Z z{OQ+oYEcVa{w>^^oz?x9A^a?GUG7%GqC?%GUr$oeV!IZ_j&_o`urK zV2eOTXz?{mKOysWiu?-eBJoLg8HF>LgT`@d>o%dC~QN0(?Sujb+KLqG3 z=)Hu$ptl14ew3eS1pH}y1REyDpdSKws5H>?t=JoS8G&9#S1VT7V}V4jjY>mEtrT0!vW91|fV(+tUzVJCn0DKM+}2!ci_+7IG%{p(3VrxQL^3bx+|p z>|GOi2?0FN5fLxBS;B}GI7EJCkwwccgU?daBRYu4X{AGzoGm4=c>lkC6S|-MJ*hy6 zw^6W(>4tKon$*l4t}IhL;+X3=s(3`9Iz z3|~yM&z{E1Ns4AN{3zoi;-LKL7BMtp@1>GC4Q4DB^+rwKb`yCmA#GY7<9hM@q=vjwc!X$ zIgjX|Bn$EjXUvK-MygLMY3V}tTkU3cDz1Nw>k7xzN_IV z=T#JQ+7GYd?qTq%? z|3K%KNCQce^JjEEN6#yTV^X|S-6xwS=j(3d{xQ0*tS(7$ZFP>g$ocg;x0>2;@?!Mt zNTKZt?W*{k2{Bf{8i~>pXIKquPAofym9gf;(qdR8Yfda5h845sM2Rpw*#;-`bYd1G zPUh=Gdm|;RzDXyF#nZ`~bt1{BIEg9gSGx1?zS!b9VfKlY6(s-@HgAFBizBQA#oX1! z-2d4gD57&&oQk*|V6Uf@R^VkZfKc+hp!QkfttSu*)>tk=>J6;Yc#Wye|7_ak$69lB z+MsX)sXA00Qr#B)tBStW-qXdy9Qq&TX4y=M(3DWU5=l$pzRVB_7O{ml*YqWPz75|Llp9v0QXs+hKvv}*`PMw!qi z6*a&-E`WMDi%$h42C`@8>xc5H6zgoVc|~cNkxU1QA?<(BW`7ikp?uiu^$Zp-5=x$~ zLX{lUChS3QoMs|1Lx0K=9U@PFq74!HDU9iZ^)V8KKz$@iglHrN)S^X5AJFCt5Pq;| zUPQ09Gj33cCFE^{TCzaM%Znt;V&Vg!BU1&0zLXS-QE&a?x0)_XE5*&7<=Jc?^3#_M zA~sTwAoA0Lgh(nJNe&iAfH*;|&j=z|l=bCEU({cW1RSB-^K>}!YjC80Ivg1hjwqMJ zR2)g^JB*b2NDMdyN75ROBnQBeXO195e)zIM#7627M1FVxh)@^E(t&kC+e=?;_8skA z!RT#Txu5Oxvw>{4?pe&c{JM6A!?w6fS}%805W76a9$y|Vq7aog(3LauL_7Nx;r#f& z--Q%FpWdr%W;$fJka|G#u-pb*Wr8xesX^E%1#RJk^Z=OGY+5pKc|f}z@UUOuQ5~2S zAc4+dbuekjg5_m7vT~0YYS@+3-({#V=Y!-Y2p057dG>~sXK%>z?9m~cgf4E=K)<5H zX7Z^FGa$cA8`%70=on1LA%Aof^6Y{02ddbt?8`FP1$#_Hp1m8eo3Zyq1{=+en;a_7 z-eltpbHS)&CM9o2d)Zz98zfcB9Lmd=9bCl(CzsR30(SKW?v9E#U^J84=V*Y;%`X>Z z?tF@PfD$t6%Z)ab%WK&R;mU2cvn}=x`CFGU+4n*W{Rc*-2KS({~6MClhad;nJ zsXTY5Q@Si6Qz*Ej-0Im4Z)nH1$r1&^iy^A^;m>}n1q=0^m@=!iNe+k5sr{94F(17L zB8xQ(OyG-RI0iT7$gXP}Ftw6mGbif;XsqRJx&EpV#k?_tAyRYmk7c=Jd1)6VT)RTxvS2l1Yi^n26Gf*(f%*L~UKk!Qb$Wvk@6?2@)}Xq|vMgt((7mafbv_SKd+ zbZ_#By;z0Q4O2tCd1XPd7sQ56it!>>E}9tKUwq$8M(}+JrktXug&d^AZPHrMQqKa@ zmStumDF*gPB$M+=zmOEMN?oh$pp0F4zak)I15At7dD=y-08IU$&4;@=l|vRl+lP%m@ehk!;m2>mNg^w;|uR2LMSipTto2D z`$z-Lc*G(yteZOZHa@1d4gjOOqN4&x z|2bCJKeu|f!aiJO>>K`Q-J|azC2{u5V2i*78Mc*sLhMs%1Tv1(eB{P<(>(f3dGxUY zuFlho`9*O|r8p{TguESi^a!kg9D8rPg`^Qek8?sS3Q25&1^?ubS+j5C z(b7GtWWG(We-$heWWiMu4mb768Owq4usA8vA8wiJ@h0KQ!1O-!pLhCqRxSriUIO$I(n@d(VQt^kPjpIGRDzdlu9MntPQo z!&ne$%?N+V3Aig_?IFQE$2KNO9hQ?0=lkL)DjKU06KH@OGPn5jQ@fkRE&R!w^NNJ4 z&3T9|^QA**zg9CEjS2cxC$I`#iOpcB%?V`}H>nF!v`v0W&$LX1K!{hN;WNpGPh0T| zq@aZfS$N&NegbX)WGd~ZKuYpm7PMF#a`){ONvkV)HpuV-)7i?Ck!SyR>kSka?{A2lfYO4v0*@595tr`kzt#J7SusG z84ihkfC%?6oOF8leNK~<#dQ+YUzP9^5TumJcS70g5`G7ECOk9vio02Eac2T@wD>*P zX)^PnxLLBAgt#9!%Z`uNgy&jVEV6{D0FslmN=;QAmuyd19(plIAcwsL#`e(!VU7ix zJ^dCm0J(Rj3yZbvt&@UX<(l)bSme-Y!eYa|M(NPCuvq0ELxhvQZc2JB_O=?tLVUmg z2}VAMg~g_m!(vS&wOLhTg-5l3eIN^qJ)k-4HwkaLl&-51_ve=8Fh>^uYxGzdxSC|( zYL+RuuHJT+;>bcOEJ1lhF%Jw5#H}q~n0gBo(5)Nv)L{2hd~erOG05vE#h;d~GFVIiq(R_KgU_uDUoQ7;%}E(t(ZPM2N);#GrYw`j zY=ZkXv|}CBqU@n46i6d~t1N1(3443*RckL>rL|9vM_$CD?7tt-f)v&8`Z`hs)QD-h z`RjNyM}t8?7jE1cE*OVyQ9kjQQNDpDW zSM7&8A&d{Gy`971rCiZz_M)7pB0BmcC{wUySEY(a)x4QKcf9DL*h|Dus4L{n*+*(2 zjaKu>gAJ82*n%0Y#EzE_^Fxq6DlCt%hcWsgNX^wgJ!T<{Yo``&IlN1yurWK z8f>UHcyc7P@GxlaVspI((L~I4@J4s z$F8bH_UK7mvYlAdK=s9&d8UM_547%<&OjSDE+IswH90IEtI)gAlt460qhg? z25ZZ=*`*f8`&>6|sSQGsQSaj^wFvLq)na|w;u*CFpMGC`ln<0G*4#=9O$dmrzg`#bhY?k*vZmH z#*s|t&SpB1_0DD-fpp*5jH8RrJyPD0L+1y@W_D_|4IUbsagO4A#*)-q$h@-==QGAe z5T;-*Lt-w@XRLIB^O<9GRff@GO~#>|YQ|??qm(sD*=5q$lpM{j;Bj>0v`}d&zPSu1 z{6Xw-vBpl!_HgiZrPg-5RJSFm{0;HtCsU_0DU%puyVU^+!|-aI7DH!hEsvot#ol6{URWwFmb z#!;S}5s$w;UdMr)5fp@4BPuecShH{Det*f^;|u)u*wU2nPczIEYbgKgQ+VM`-Y$Q8 z{5(WK{a^{&C;9-C2=*ii^m7CSklUdR^Ee~Uva4U$>RY}Bm)i1|j(uOd@n;;Yx$JWN z9r&YpdGr6o?S)4nr})EAi}gwDXM*b??;HNsRF?bef5yo?P_kUbor;#OeS)ijsILDW z{^u@^yP;b@ zU=7P~1ww2?wkjb{5nr{~|^U)=zRzk9k z@o$_HQfMm;hz8rkVQ9q7cX352x>HqZ*H!wbY>Mj8K3@NmD}eysqTIK1A{}u zBcsP0n;loG@msFO9yp3>J#w5Y)X%Ns!hkMhe&I=7PJt});{}J zOXzkvK>(O0JORBTniF9-+dak<2c$KfjANj-ZFq^THuLU=yz+>~q?Tf9d{r$Vv0?xg zg5OqHyVk7{`gPPX-XcnGPG_b2f8a!u4B=p9yFw}X6U_4Af-|72L9~5P78N^p(e^LY z{x}zH_55el|M5B>wEjM(`*uFW%ga_mqpiBwhky%}!T`)thmu)IF|BegaqM;!J2E?p z9hrP3#+(C^1;UqinQA1Kcq{jO8{ z8v6ZG?Q7_FweC+wzfEfNilg7O+uiSk=@hJGLu9=0?0xY!`&sBD$cyja9|g#zmcwE|uNNlU3~` z>_N8G7gDp(d}wB)aq61p-z3RU*Cr_FVfF*Xwxu51HaS}jv2C-;R+EhLR$8$K&Q^o$ zZp<38CYf=F2Zz|2s&%73_=OED5BF+jdK1pL<;$O0!?F88!s&s?jX|Dz!eJQ zhya)k^`JkAvI5M}hAT?fQ%3*I8dd&pPgCPwC-4<{dL$X=;H}hVE@DNt5m8$xu_Ca_ z)0HdQ@OB8ImwksYBBEz6oI)fq{6PMHx6|PO|7hakav7!osGmAc{MBW1ICv$#d%)Zh z?%+E}xMSp;o&#Z*xhJ=wBuPmB$hHnMO;%yvj#yNh1-0zj!l~nsKKLC#9}%XtmpeZpkJLrOJ?^bI(Q$B*^mck?}(nM8%jQk2THSi4IF>zS)( zV@z`$F>ghaYR<(*8dxQ`k0i;!lm$vUsUg}~@ag0QIy9>VnvMgjgIk_~KrIA@(=ADG zudUjI)1{KqtFoj9c~c;D;I-*)^J2@L6P}mygJG)`SzU<7WyZ>=1Oi%Cm#KLb2oTA; z%H+_L_FQDMJE(}7_vc632&`y|zRz3^L zh!aclfbLK{qebt{(f%PhG5l3% zYYZhdt;X=3rz(A?ZK|HSZrEuJM83%aMZvNfdMr`s=nI38mgytf5mQzm@vw|CqR<IHQ+* z{fBV)4%UdnkD}_dM;S{}58FznxXMZ7r!S+`OXdn0&Pa2?2h29i;}+^CfN|M9Mg38V z3_!9ja3&~Cmp$w6ntDO-37BKR0_J`UBLuh7NVsKr1JM`+a6=AC$9d{q={NT6s&mjO zg@X9GDN}HUWTdO69k!@o39EfXGlg+(=&OX4Q${mw*XGj6Z7A+pjlJKwRLC(CBtDw{ zra@xu%x2D8j)4J)xEpypu$dDprKle^j`Gt6%O|I97AFlQ{D1KktVj2ae zVwcIJSi7>VqYIKN^Hg!6$FyL3!bhq-I**lkLQaO$%$yYAR45jaFoYdvmV7(MwjlD0 z-KW9&_GTOkU^W~`+%}6Zu{R6T3*06gSqdxOpnqu;v-k#O6{a8bRvtSey5Q}0@_P00 zt*Fw-q3Ol*AHFNVgVh$ΞR@20zD=|2HKfWKUuFY{=ehwS_h1tKSw4{~(EcF--lN z$Gpb3zlRm(MD!CQ=UmvU3#PEd)?lB`EkT&uj((+cOYr5&`?|+Cw`d%<9c|QkO?m&Q z&aJ(>MYmM#U3uT8b5qVeyU*9FbGIEmQ9VCo^Le&97bh8!QKvE;)eJ|LV9ZQIfF&4& z%!FhHAu}PFLC8!&aHpzGaR@z|wi=2~@K{07i8BrFSl#YxV98j~3BMe&nUK7_Q^rEib(gXDasb+{ z3Dzp%a#x0SS&Z5$Wd^C@uK#-(n!ZO;z}aEH=$9dbM;$ZgE02VJ<1sd^%; z;12NgXgBcg2$Cd$bslL5hDF&=+gjw39-aRKh)kpe5lIzHIF*Q4{P};_3RN7B=*wT} zwBg@s1IKvkaG^gip{mom=;!#?7@XnO`*6% zW5dR^CbWXIrjFU(@K_AiIo-E^$0kUTGGe#PUxlqZGOL zvFpRb%$uy$sa2|_>J7${Me-yvCV$A8;t5X{h!3OmiwWlq`G11g4rR4|C25);az63K zm(vJxe;GZPI0TP`E~|2VR}q5etIGv>SZYNGE_B`g_j!K%(>q`x=laA4mZpEABe9CJ zl6U3$9uOR_LBL$eRFul2f~fiHxZ}V_{_aC*xk3nrNLys*k0QMyw>Fo*vnNUHSR zcyHJwUPNfY91Z7#%ZIKo22Jke+m^o+zwh$ap!rO6%R>oXI`;qY`TQ9M&%rM#4c+o9 zTnru<4E-1OckntA68Zo*Z$GO=w)dM4%I{Y$ zvY+X+Q9QSkpXWI~m_=6Wf-h2AWZs!CvULx1Is>MMw8(lqKy8s76`h%dG>1F2;(Et;2#)Ds)_2bON(N-bQ3W`@t9p{hYEN5PtV)WZd1LGOh1NbQ-E^oYVchmARaXeORzv?^9>;uM%g-B;}3t%0H!cut^A1stb>@oQ@&3;a-mdx(` zCNb9^MnJNUD`u+<-`1@?u3dgndr%ty75)WlNnq@4Oyz!?JLdfvz$?s(wZyNHjs~)O zT6|3{n`S}oXQqjfM<(_m8AVcgX4Rvgpxq77)Ff)!EBciIbG>HwJY`x^Py#H9sLZgV zUmCBAf(nUXwXMj$%4SI7(zF=RN#SydNh`cywpIaHU|!5V$Ly{JoDjIhU&Qn<1&e^V zU}^F@T;*jY`5`0(&xUR$2tGh2W98qQ3=ns&binHg~A`PU#b17xn-_u6Wjel<-@51H*1*Cx8anRawm^xJu| z{4c5Kv^icHEr!Qo7+J(muIhn7gu(qAW!LANVo7}Rx*bvW;Zww0#pC%=X+rV%?BjAD z!GU*?g-IT!?fe#7sY~S2g?`4kf>|kCn7d**W&tq`>^4t-!1EqNE-af;EZvw6)dJhi z9`*NVw!*wu9OBt~fJ>SK(eV?yyAv^r$(Kw#Dt=@amLN)ql}GgCQbF{6u?AKBMsaG#X_3Qq+3MM#ajpM+P^pnxr64(aF9D^HH78fxCrsMvUx zK#rk>DXc$>6ctT@Wtsmh!CZqpIi?@dXptXXwdLeV&s0kzIpz4Ut&oN+qB38gVgdN`&HVIKj4VNdnC9rzjB# zp%}N$B99ejO+{pwke}Q8n{H^vKWP=I0EYb!1pr%EcFlaQoI@VZWLy_Acau|<^Q}ze zj>W)fh|Z-)mfpCzW!SM9ATzn)G|Tao*%OPfAU^n3HAVcF1E_-<9nC-jfA*3^NRe-) zctdc@yBrNgv63q?#q#1N@w-QsRd3n=6hf3}9M>8@?inucvFs_Ri>aWo=na6F&z@-yJYUO{9@{ zpFxi<(ZBBp>jhWE@lsl$h@y5^~!21hJF?K?-TQ zFd{O67-X)oT=AwVVGf_3W%UNMXc;vETLGsO-R-uJWMOo|(#Ya^R023Vw#a;X8UOzk;eAoa5hQiT^C{A2^hzFycRve$I~06)n0oZu53ZM#|4h42!rB*#1CX z1EWTMEMmh(Io8$sBzd(5>1;|dzZ`ayj=U=8>fO7ebUuWb1?$
N8jIIsXw)ieCoF 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�^)+N;^ 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≀ae~!8YxWlUMzIZk@ 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

tG`{6+zvt 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ÝE8 zI?GX zX6r8`SpKN=`h(PK)Z**17vd#ZA{I%U7|0NY(}28A>^}sUkR*{CreivH)iFgBn7~o+a{JkFs@- z&|3JP8NDH^$QSj1DtJ&GV5ftTvC7HjSN%Z5hHDuyN!eh(1k~9t`|My+*wzck^t0!Q%#4HGh`8C}HmO-u6DdcSc5zWoLKY~3m zTBJ}2uvV*s<14%!TI#$`GayN}QM1$K$MS2;>%X*uLdMS$m~9H3 zcQ{{oIdHUmlv-BqiDN=~0SUn&oodXZ6ymcOUZ@0$YjNOaiEz_6+YZ%*Y$#ePqSq1@ zeOHZ_ge-hi7_u)*Mx~ILzr{=7NtP(}9`wWX?$vj)P4XJb!vCTr;6uVc?nevu%!HCu z)`C{QBW3%TU`8uMMu6$ac+dbQF7>7v7oq}K0x@I)))~)~F!}4b>Z0@-FldY;o|j*ZN>$ZqYiaAO%Z7QX>}8&kanI8~m5}?$ z5|n1R4ZmK;hVkQe8R?pVX+XM;z`RGDflwk;hPBSRHwus&JE2;aD07=g>{w+$wQIZ# zNs`8>2cF_HM^xGCOCCoxN#S6p@G9nwPJb%XEG0ofkR{MP zZcKHqWmu{zxXT%3UtGutT409kMo`nQAC*Ps^8&{mj7nT-ROLn^elGb#$s@k<=_0AJ z>89+ouJNe(wwYurH^2fshfZ!xST}YGYYwpbTEaTn_);4wCqlzVoD!0ek52ajM%p1G zJ<V4e6b%#g7^RZoTlTJSIQD_ebyDfu3lE3Q@# zc7KBhRpy!T(*5Ns5bnj@+ru3yl%#tO0iV(DC=0W~hGWl1$|JkB?8pD&bG9SOLjlb6 z-Qdi_F(5xKnb@0J1)Z=F2Wekwwt?y0Cn6w{KoeAQJD`j1He`?*{i6W2V`898Yt&w+ zu6bz|8&i0S$7z*ro?1ytt%vU*N?WJ!}szq{69lo~~kW z#>u^588Y)RHP*?L=^`m?$rYwsNp;{IK~JRmwNH}<=1C=xR@?}=i}9x|Q4L$mVVRbaJ0jb!Cf-3sJDCaNPcygQB}y^ z*dx;2S&uj{xZESt6%{=ij+#NDv-vqVqq}u_piIevWPuHor}HRbp(j_VQzy^Xp?ir! zfjTW!P+X;;PVGg+RsY_%Pa>C1CqZ@W&krFCXnLyVp)Hq831X%KVusmHY-IC$Q`ekW zF=2r1H~sK|8qFB7h3zV-k`aP&T=m%PnpKjSs+;A1u3*40GBv40J-t(=5>9@Tm!8sJ z>6=o`{?qTKa@SkUzT z%0A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%0AaVX~L1O)o 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 z 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ŰwjM5 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

;>jv(X;6J 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

n;AMw_4>!z0)kz)(hqK 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®LU-{$}F7&wcy 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%0D^!SH&DFHcJ!jd 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

FwVd>s;6SFZ>yh<<&^%5}s;F(~@P)v#LP4PpR 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

^#Cc#aPP(VLV^*23X^da3Dm921YRp?Nuv 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

7O+`D<(^SB?XJF*a>VESRyx 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

yFKo4&wL>+Rrzj&F#g zA5>SK(&87TD^)S8kOf>jQ6KML1A41FN1Ox;qAR~K#-ctXWqGYy?iL*waL=R3DGrj_ z2HR17jiPFzR@l$HPV`-h3FWk&7t36UA&RsUDY(m8j?_?shbO6Xpo4x2Z%M!9y1_pn z;?3O`<==v({N~mfDCJxiB@Su8GU&k{QvhFm=ef8zKj4$tZxQ9;HZjyC7Sug{wEzCp z=`^u}VoGqJLyQr)!R)7dXIJM3KS+Oen=K$rLViD=uG6(D|UF;nhH zm21`>Hl5Ou^+QlJ_XY=* zL8Eb4Y4ivEg~NWk*53!p37<8zcm*!g;3|NbmOl4CJU&`F`{n)m(f!t+o!a2z(ube7 zf4SPa=)GKc)7wEL^(=7V`iIlwn_e&Zo7~b>gxqoA=z{2c zL4ZnKNg$=VJR9Y?U|QUni<10Ou%>5(e9AkgiVhbXPq}Ξ*5SC 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%0A?Mj2-~el6K4+ zK!Z~CZ78-un~F%GXD=G&Nm>vka`nAZ*KJ4Tmb0u93%wfpO^86HG{e|%y8HQsHV*D} zOXY+MrF*KRiE!HXZSaZ|i1|W0Lkf@zGa_~=S*>Wt)d-GBZVoZnpdb*2yzE>YW2&Ku zC^Wz(^{>6tpI-5SEI_N_ZQ34xRs(yY&8izSd?tVUO;k>Dc7wub4rN?U4rCVrQ%aUVv6_E{z!pg?hNgYY(-0ycVy|GnCHrj7j$Jh z4Z4VClFld)v;}gZJ?r*j$P+o(p&ai)9F|EQkW>SU255j-wZc~2T9xIYX3X*DC>nlx zDk^T`Jt5ugGRgE?P`v{0u3~WPIEG zulDgX?S=L{tJYnL)lU{u`p!aXb~E7(?zLTNUFFY0h3eAcbD(!*tSC((IuSwG(d0~- z9i+d9YSit}u}O|(MfqqRbxjO=2!}$=3>7~$v5V0Kl_L$rYp0^Xw9+%VD;mh5_Z$lA zw{cGK`snmvpd4W8cd^THjzlwHcDkItP;Y!6v*?NM`T`DRD{d#5l*ij4-vm|*Ne);8VAJjKD zFtjk7c6R)5O|lWE3a|r9sDvKv;8O?0E#vrX{sSd2s@IZ6o6@c7u-ZN==*53H+I$sBP{-L%0PM5MtitS3gL8!

{bw#(+eUV&>0CJ$A**Biw)!kiR>wbEKjYS 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

XUct1P0U9ah^uemm~ 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ðPCOVi{I~M#(xG8do8S@);PeJCok94O4mp@|vl{FY7KM275W|;S*Ob z3gsnH(%w%a5qRxqh>=u)8(VWJ)~74UHcth=Q*#F0!@UK^F=ia=$cRCCq&w~py`a-P zq}n)sw%W_SPV64?kxULSb%Z^;Ejp7aH5;>QlA#8v0Z8jC{dWJa`JyVHDs_%jZ9#M7 zT-o1mLyPi-bm5>+()5D{t)lX3rF=uwVM@K(E1jZ&7AwXp%>McaBw9RO`Jb5Ukbo!68QiJ}VnB|Q~n%6c{zjbM&RGBL9a0N#Ps z8O>+T0g3OY$&6CR<}#usu#2P5hF+4_jnk)u6U6Uo!=|(UaKJPIpVyN(qBP!-awRxH z7JZYsgxv5@bKcQ6I$QJ86vh{7OMD^WQe2*)iV?6pu76Z`<_Mk+~mjdJ5)rnl$why*EIb+kj)B}ec zR2iDMLN1M*k(ekGlR2@$x(SycWBl$J)P*4^6*o{nIEqT}>WRQOS`%BwIemO#FmiA` zib8VC`cx<%&Y25QfoULDh04g0V7lmR97Oepg(k3C^tKR}SN;BYN`_qyvF+u@anE|< zOj!_hs3{W9Yo8qLW(rd!gmay}K$|uJxl6P8e4PrZpFE0&HRc)R3KrJM^M;@GzUYh? z5N`pFEHWeR#d*`25&05jn@uMFp{RL9&kIn)ZCuQ@$?tuIg03%E#O^SheIN=PRw>gN z%RHFJ65|d~8h7R1%snNj7=8E~Vu@ATT+niB`&sB@J@#-vCj4vV#gVee9#3&)4ydF< zX;_Bkv-Kj8A=0{tj@cShe_??!g2uB*O3Y<58kM+nm2RVy1$~2WDYt&w`$!nu?DW(Y z;)d_DTHQE!66?ho9=Er>dGKR*kT$vSQF`rG?eN9>d2( z#8z+-k{hE;N-B~@Rcn+Ps?@Xj4ko*5zP87kDQqmT1Y=#Z}k&!V|iWHHJ zim?;Fc6035`Ea4iJz6SMaLeXuR5MzB{lSIWa$`ZpvQA*?C@~Lfi4b>%70*!|@ zT0>jyhOwZK7(uQR6K1T!01Or!1KtqiE>aAfXLO#vOViSt-s1urwx0&9t>{=Gn-9_aN86=4&sD2T4Gk>O3;9WRvbO&9!RG~%2K zrV8)97!$3n_5o?1DkHG~KcWhbY>+Gt)NfzDv%ja`W9|5?K~o8wQq>R+aYl{o40?91 zLNg6y4!EGuE#eZAvY|q$*!t}6d>bgv;e>^eHaQf7hg1p_s!>VrB>Ic2AVxbOc>q;0 z#Q=_WrXL?l5Rj&1dX$xsdh>Lc6c7CgD`yK%&OBBQq>n_vST05u*7K*U2h2L2Xqb1 zDNqfO5MxYI?1YroLfHKm)g@hfOwXa{lj@rBJ* zw2JxoU5GFPt}lZYN_JktzXQ!7Rs0!t9iJWq1A7h{i@}~dB8L*bpgr(jYGFa!3RDok`94u9cFBa~2 zFrnNG*->Dll9?p0L2YuzRasz%cg#{ySF^bw2G9t0G?yTe72*7giJf))J+>_z*Q-83 zp}3V^kh;o0Lf<=q6)8@ilY?ybncb#M@10Jg?}z0|Kr@u1nYJ){P%c$2D+Wp4+EnU$ zgooqrIo-}g37JvVWBAD@s@7- zV=6dRwKr-J&LB`4#l*Zp-xKOUxHs3*Cn@01)Tx@%H(^9G1sO~>vAK!cwtS( zPi{7C%e5i*b!IF|%)B7FJ={>vi8%Mb!t%T(kZ!Aqypn&Z723NLm`+c9?-2m2|5{u~ z{jxnt*7aWps_FAxdSz`Tz4A}%@7Fc^Y$dePpeom;pZ|&1MJ<+UX%@;bdn?dJ36O|c zmNzJh^ATR9I^t*`=k5{%zrQ#ZUFn`idSg)77YTSHVV?H2=d+0GlufU&#Xpi4NX9v2 zV_km%uCW>-j&M5|j>{m3ofcZ9ZF9T6;dGD=EUeW;{tbB+L@Ufbt2^Tbq=<-e`3u3- zu)cVhpz6v*?cyJUv-pZQuJr1A`<>nqjL`m2TwHRDG?RQYop#i@$OSt(v;3{_l;p_k zazitWdS{I!rdL+d-*e~}wsO9EVcRTXgYA0opLR3|yAr!dd~! zJx|FY1sYxsBbU3#0TN~d3z5B3<%|%kZWSb(m_{P`!>v_@FW`PDNRQ{RnqV3_1UM?C z0}0wpgT|M|T&;jytKf_=`a58mp3KOt3|5=YXz8wZX1L#PmEj$>d-B^rF47{pz=$$Im;B*>A5V&pSEQ@m=bFJ#>Dr@8PS_R6g(j zOz(E~wi?@=?Srro=Vmi05#^k}aa=Vea>a3MfH>B(oqDxeTE|d??F|P5^=IZ}jKfXz zNw-t3w1||+;g86zA7j}&!|)uDxbxsC8Z8zO5IFAfe5 z*G2Z0a<~A-D-uEFo+bKppK_)I`k(VhKV>X%6#m$Tp z>KdAB32`*kG(eBieG7;tDRL;vrn#dc0qLMb84TiUo-;_+NFt27h^0$+h@PLZ@!K z3h%6zN||Q6MZ8bDb4Tbw4uVit z24u>ClgrdoxxbzqpQrbAF%#BFJr@CnoO$WGqB_cFAyGAY-FX3yNC|I8t_9?7a4Xog z;yOno`soDIi7xWi{&q&mO(;?$$C@X~kZi0h8T$#!4IX@Tfk{j@FX_Chr%NP^kc#pq zV`o&6V0kG}BIPRb_#oLtbP;afJ`+og|ACq@x_n4Dmdj}tbSK6RL6i+|^l5T~%@yl?0`z)yLI`?PC@u8!nfjnV z%9IJn9hU3m+95F|kh1AXj}l6=8*Hz9Sjde=qd{g+EA=y_V!fQ{*XsSu5Dru-4(o$b zrM&buN4e5L+Ury^xmJmz-04yhE??_r$_*lV>x6nVTHFv@>2PO<{Q||3a>Wcj@WTwn zCMuc!Vg4|a?^O?L!}?*VT&&#aq>!&44(ruHW|Ti1W=geDiE;HtnZvtEA;{~z$BjS!lfIH=GT1r-@K+vx6=Br5E@hFURLv2DqIn= zT&ia)gm*ya$`5xh_D!-CiwR8^-2PTF`x`~R0EO&g69wFnenW8AB|Im&yS&G-4wV)- z*nmiY#pqP)jH7!{t)$i2Ke#`zAz{?+=f_+}h@==FSsyKH(o9t&fL3!i4F$CFc6%RL zY(-Yy75~XS?@)jZ{*TuT$ee-JqMg=c02#FZvtwkKKHXQR8z`U_+xi8@yiCxZhOe8Vp0ij)l2z!-!yD@reZ3S4U={$x{KcD$j z{v|8L%F-7G!}_aPFEA6^18S8DFZvwtwp9QZe<2apWQ2-9j zX{wAtYee&wL8JVy5cQTR6N;QlZIdzu)kC09hlI0;=2^Er7V-81@&6L47<@+hU$!z@ zRY6GU6Y9G;ie^UE<4|ymC0Vo(4RsN6emfrX?bbt;F2AeHKU2e1)r9ILx9NhWAD zRs(>|1+Y~A*0Z~4csi*(zfD?;+wY`TrJR}iryPDm%pfjhhR$LGyct46+&Ielu+ZuZ z_Sy^fdOG_qH2|j0o-PcNMInGh#`zScCgIR7c5J=RD zk|+;}JT`X7cwi1{bl(U^MDlmIGzLr=vmkCWS~V5gB1ZuLz^&)-p_nTW45#kAYq~>O zDg%^S+o3;lt673&OT-gH2pGuxK+#<~mC{L<`XGa^@WVJBgc%gU;JhNB3-7JOCNA6a z!M`Nh+Zn`?=6FQwl|`2SOkhNA>Hf}E$1lFk|E$TV>p_p>D`^( z;{KY%8bBG#HlQzP5}z@Nf8f7R&NE6L z$%`I>^$DIjoygG4M;8;m5{LhBi(Rk1U zdqJ1Oc|L9=M+RC#tYi8xJdE8c8d`YT`mjr6o+%?-+@qbVnE*njSD2?>T*T&(O&?gS zjN0NAO((|6_?#SAx4J_x5&g=syVH3=D4M5bzyS{NH$ zcZQdRH=lPJonL+~pV$AfSE#-{_~Ez951$Xuu8(s+UA;f))qZMp-o7f_jzmudBM;@v zI4N`Y_fGItzb0*e@P3yhY?+cP_&@_GnPa_&lLVMy`WcJQ@7YWLeR0A;kmjhyIzYNb z1fO`JQ85Q$u&kh(7^b;plVgrx=b8FppF#R@uePKT1IJkH(Vpjo3ZfGdDe)zoOhAxg zT)Y8X)Ug9#so3D&Kv@gG{`Q8XNF5HCe?Z0*xK0c zAOTA&6Gnwa2ssXxgI9TN)eWmwymh(8&x>D)YZGJX59cfILrddN!baYFx*m;Vgq83-Lhwq#54t3(4gD7qnK+5t~N0vh)Osekh<_eitK7V;x0g{XejKC!!JD{IFAbd=|BUP!vMm*>H$fy zw7#mCeL7a1T$`?Mzp^97jW_Q(U+XhpC`z_Gu+ytAzEc=7#e8{eab?r1)`NX}S7Z0R z_1$;rXBkOk3;TiDRa$|aRXl~^ta=!7w6wZ}&b19^MG6e5&bZ(+qQFG-ZF^W6hU*`) zc6T4F1;NAA1K61`Lt*!1^!B4oOUWte#JX3>RxI?)EytFO{PIE@ON0sh@Iv; zT8ns*#R0HkS5p1>`o=oym?ed?Zms9ix9Jz@)fZcx{r$#EnB5C6*u@X&Rn?u+|M|tn z_l$CU>HUP0^O?tM>f03?MT8oiLW!h2Q57R%%@r(Y5k>^z>Y`Hg?gO%g;o7jOL+>Dl zp^&kG>qV+PHLdC`9zhzi1Sub1^(BE(XHf*WzD8QMVWr+H`XoQ!$PykRAHbG2_UsQ$62CHI#+ zpq_+dZ&uY)a|vX4|~ z)%Cl|UM4Qa?B(K8Zw&WfI=q_&v+#Lp;mtgTeSJdLHlWJV&;cQi+ts_jQgA za-+i$1<~&4uwNXGa$oPzs(fKjeW=4+4Z|d6R~CjTUU2VMNUKw?tgI8Lfb;P>Pf;*V z%x8tjM0M=W>3wx=m#dDE1Q>;#;a011ua zoCQfnW)lnx9?834Pgub`;Z_GTKA}eiX}|`61p|U&G9`3a`c}-)VZxqVFA{z*shK<_ zSBk2_N;)uM1>pcuASnVAn5a#Jww9-oFjG%bD@rxzdUL~0GNdqSiCDA+^FA3}1H&H5 z*Fu#pvjSJLSk*D!0f4%(aOu@&CKTdywWay-yI--kkmOI2A|EcTn@>g(jw3E?seGMy zDH)OAj7-rCsmxqZXQ;SMBEIMn9WV8;O$y5_k?y`NSZbL`v6Q2mi$*`PQ-{K15eg}L zllS0Tl3vlERw&Ux;$~$Hfh%e{H`V}&&`Viq39UCdw4LXgg01x|_@HmCCxtcrTw${o z0>uwb*d_gLX5keL?TCy_q`5||@EEGap$ZXpd%J#3%>gMIxH7M34qjj`*_Q{Gb3Q1; zof0_2;@vodiYJ%JE|H2t2^=H?<}<_>cuxR}VuZzVKmuQ7N5iY^3@D2Sun;R-7L-LU z4#BIwB`JOL>aur|rcYXb*4IDl3q9P6R{;n8uoG`Lga;Uq!E7uySc-;8I61Yir zNEY9IIX48MLzthOiW{Gh8n33vmIpy;kuDd_dz?Q3A9w}NP>sP0kbGNp<$4e8p zVokq@_Q2IKDPbIvrO1hhqOqpa)AaN=zps7;J^N7DN%kJPaPz^mYO@P;Wv!{^<5N|7uRqEQ>@l^Vyt_P1K zI=#hbNi>HRa6PX+Wi%Z*oD{lpenm)#XUlW~u5c3`Q^p26sZ%NZoZ2&D43E*;=G&Tt zaJg9wf~4S3L%|Ra?PjzXgsN6iSVHMUwUPSKS9R6m5Rz8$FFUK$$~~X4~x0z;}4fh73l5 zI?d&EqTchRr^V`1Aa9MmgQwx(U5tm%xh&P3xgMY27?2hq_2VlU|7i~^${PCl+Gmg| zvtf3)=9?Qj(l6w)v365G{uj(G{F#zHY&83AcFnZ(=egXMB#)Rs@u`Q^VBybmCOH2V zjS!+V|MMKz(M0JK!XJ`vn71?jzWjDLfbmOuU%Q%Ku32?dS0}jgC9e-cgd=+-l|TGp zJ?G=*v*+pV#%3qIMlxVp2rp4zRX)^(S0?Ab1;3SE*#)2RYG?o8)-!U<5o4`q{CjE& zFRmgt;{PAZh)&G1|EcSk`cb}LLy5mItc?gR7uiUiSg~AUichuD;d>*z07KSWd&GZl z1742D0Bj&Z=CuGSa( zxu0WxEhnqx(eAtjKKYmzZt%rMyWMC5 zQNtm{mAf%NF-8#>xd%mSY*lPMoM!hZA?S1#`AJD;?8r!%B8=S`&Q@=b-q}y5-XqR> zh?jXvJoOEPAB&M36^Q*;mRJ~(m$*CxQN9DoV^9KUDsE$|DkeMPnb1LU{GR)dlg}4$ zRi2N+vQ83e%mtdm#VIKTES5?3NDhjXqgNE2K+=1o;cx#hcW>Iz*0rqbevW>{T>7`tbVZ_mW4KXG#9js&rlVS>2tVDObO}+3T#d zSGN-aoGd6jIZH(u#*GgQYoT}>x&2A*Oz4rxzCK7SR4n<=|73};2aj^h(&8z;%M3Hq z??LjUfZ4w5^t6XOFEe94J$Nc52_|6tHY!4s0|Kj}Bj;9ubV~BzDMT z=JY(tk7kn5<=$LMA@PU1A5;93pt3&ylw=}VQ9u9GaD?-64k7>J7anw?wLkA3l~c0) zdCvp7wwx2){XlvO;t%&cW=F&h%H0q6>9IfWe!vfw{h71n_k*SFC^(&4WpI2KJ6r9J zd6%9&dgQ;Zb|-)DZmm%LZu{AzGn`tFlAOKMezWt6n6#BnduK!6JxVs)+uLuuVhGPh zSNp)lt=i9an39#vXVvg#CMWjzcL(sOn%MrSltIP)&5L!ID&+J&82V8&_Q=) z>)G74A)%y4egmaRhlT%F);p_jy1i#6;Gr?dS2h=Qr5q2et}OYNqP5NTTAX?QRH<+D zmYEZu@IiLHW|Dk&t=)MCX!g6;bo8?KtTdBLk9?#`(`=ZY&cuME^W=Z+aT&yU{I3K9 zS$uRZekx8FKXhiO^~rYr=yu7FM zrF8nrs(t><)C9Ztcyy_~-3teACV!aZHM>{*LiBvf~XX@bb?i^@aqdAFa?*}}X@2>aWZu>@t#%zD>vDnbo_N&eI&a2qU z_1^B><><)XUft-t-h8>HucR{@bLR`dbGEa~Aa)Sgkgv;(;#Ar5AX>3Swxw*PC`o@& zF_gbFT8#c&!C3epg-d?CzB*{~7Z{C!AixHtLdgxEU5p0T`=nj*-qqRYkRJ|CQNxi{ z^y7Z|qq~CnEO&l>b-~|?6yh&Qqt(k2KOx>#_)9y+UuV1a=h;5-uo$$!ebt9o`cot1 zuiS+YDD~-){@|PMFeqhj`$Avq5-8PILB~x?Wu#V^!&Ql;2n&S5EHsovqqCvVERAX$ z-n}|c&KQr4&;|jDF(dG$$Q9GYn_&b#xgcR_Q1XBv!P?BhNMiFVdx|g3J45;(+Pa?+t}#Gi}B}Qt3BRQc9gki%AJK(nfJ?5YE40PzXy(5 zhv!U?cpMK8`|kPS3l)+-KamA^I=q%D6S9N=PeVC9_ZL{U9qHJOc@pk$9H6*9pmN|u z8HR%nLsXr7aSH0-Kj8-{Tvb|VKO}m(l5TsBBH0&u z`}GKMg$=h_5h~xDBx~eKoT4!Bh{a;*D@enPziv-)lwa^nFdaO_87M;tEL~OBFr+B# zEO;`o)GOni;jGVDB?^XcMK>C@xvxbcEri+!-O(xwT(2HIHH#KDKlpv}zoa zBI26&vFsmqfN-4%ciJq6RJu0sNST6s!160|8IxRMP7ln9ZU|CDAzl-UUo<$^m?j%= zI|E4Pl=BfN3+;&-(NNe)7t0{=SsQMCTMzrS`1l?-_MBa zieIw{GB_5Jtv=sedI$vIByt(g;P?yB?wQFF>Ky?z)72+*m0eaOWTvVactt`m`s$D; z?7ioCvkPUy>lDaMkQrFeg#1D!>)2c8?I;@FYoR~d%kAK)nHP#@gmRs`IJ__o#h$^( z{)z8Ptvcum&}ObX812myr^)j3Ump}UtDYf9E{-@<7uL&Cv2t&=RzU{%a_pCKqUCNp z^-ImPgT3KtCX#BTGVVensLVC@tHoNm-^hGR(Xqqlx2~?U%e`++fP{F6EuxGoR2i-? z*d3q^Tw!?0YL>kH07Mb;0#8yP=Y`mf;+MRSdrkP&FPZQ?RP@|JWq&CZ)>hVfznPJN z*cmAD6aaUEq~jt_8TNrbZghL(L@&3g{8{Zbx(NwK4SDHV2=dU0u&`*r0S015t*tm>nR@A4*1KB8lhE{ zCNA=O>#IFzylZ~xxZ^z&@igwWM!l_8g{ron>veql)+`59!@ak#6&X>+aU$~&$s-zj zu#jzwI7G0Eb9^l}n>^w0mEw#>a&8*i8JFmIx$<&@rpWv&81KpO^@w)j@w0L+fQ3i8 z7fhLU6to0G^HP&491en*XK!&Ag*ueF*P>d(3%U^MG2gjEngR%`sP<}1B5akLAf=}Q0MH=($ zqJcM!>p*~XY@zxC>{k&G!^`hN0GtFqQ9yR)=?KpZGXMd`(qc#s6qNHT=x#olQ5ZD| zgbStlQn~ru?<(a>pMV^m%LR^~GQ>G}Bv;4T5bbaeS1r3o)sYXw)Azv}1$#RJFC3pO zh{2kpYc3oqrYcG}RfU2=ZuJ-l7HZ+z-J{r&e4qR=JX`iQR2bza9h~>n$Y8|N8V#Xc zgrE#A)4M^zer9m7>p@jFyMw(XA?X_pr#N2}(|(ACvxy0UOxKs8pJZX8$Hi=S_umw9 zEq@N(cSV~TgvCQMJlYYG(}}9v4LOvk$OSxWCTO0!STljwSIfZk*UFSaY_{O>317m=YAM)f z*H?J+;X7ifkdz$;g=C)Rk%Eqom5t15Djz||L3}S10s#pXWOlJAk(8H|0Tk+khmi8H z_`81@MIU_)le~cOv91i-_XnDdo1(T*zyriDkI)Fl5GE?xM-xF66NzS0W_a7m&@oGb zwRE646^wH}C(-UX>3#Fb6spwH<+EN(YxmC9?%e_*OWA)isar3e(S)#ezTC*J@5iFI zB$4VlZ~Gt`3rcwbVj-lw2(F~osJJ-uTk;>}a-;HJ69cA>!WafC9Wd}$zTKZ0a%R9^ zYUGX~`yhPIiba3{`r1=eDITGa1!*Gj%6H6wXsR594k%boj(>I>UDmVu8@t|WMfOV@(53hAg2H;3Vo z8p8{hOepA`P8b1X91h%PO%)zUm!40Fwq#r- zT-fR$KwImC7^W_r5Rb<3l02cLR~;?hb4)grcG~A*3t=0asyLR`M3Bwl`sQ$n!RPEo znar1)g{l;@t1{mX!JNLUSL_WTC*-C$?rommA7KWz;Md_N_9>$YY;)^~)nk4k8`Ut? zAAsK8CbI^#u5DTe^t}QJ$1@TtrU*cV}vn1d9p{-9`7d5y;yFp1}wN0k@Wb3*cimka~RTxYdA1m|K z%IA?>Volvj!X96FSzUXVbl@6DVa0&ua(fTsC4=o6Aa;tqC}_s+jew_OId)>-$9vQ+ zCmK~(4gZUK!x2Wvl#(rXI-8i74BsS$NrZ0gZAbYIax=Hit|Yxsq69RNY>S+CwPGic z7eZ5ZYF4_dy*c1IR+fKOeJ@F;rkJa2`3U==@KZ#U@B&w5)DV_6AgUxox-}+y#GOwZ z;@mOVbP3>N!ZK0QbEMUd*_16L6|KZ3g{mSnbXf;(#a_jn3yGYvOa##v#>U!7KE-{6 zdjW1I7(2#I0ZR0nDDo;@caJOm%nI^aS$0B^WtG%@o?08#MtZO6J0uErVRleBEU0m* zZ^o^+*S3KfG4;-d9;`y+cWDTyeSCzvkJH^ECBowGQOA)mkk&(4E*4lJP%7%l)F)ao zjUBcv-gU_>!|r{<@K_Kbjk!E7??6pbm=qU`VXIvT`yDmY@!B;sJ5tPL);|=D~#r zMGDyogmYey5fvDj^l2^VnZ2-wMrG(p+FkIPV(k}g5r{#Z?AO_zwL-Ka6RVM&s9CKJ zFK_Y^m##Ku=lmKsa6OxI>+Kz;VhDZ4dFch6)V@`TMVq1fAtIbD&Dz$8k6G%x z;opk2L2#n?Qy}{VSCzpA*@e-9R=|}pwR)_sH8Wlc#H5Z0D-h5b>>5md zPD%E@s#th(VkVd^#20R~Cizfs2Z3YqR!DJp0X_QNc#lm`&?AcQ%|$1QB(?J6WYZQ> zWi>(9QbJn*4s#4LQm*Y^7AN5ZUd__4*AgUgp z8WowAk{Koo%L*`dE5W7lD7M5>GqFR!97yirCPzHfn_6*R7Ae7<7=|4+t|!cM(Fsb) zYDO*xo?5eTenqeInmqI3ba+WP_6M-b;~i2ur#fV8 zImEEQSLkId#l?f?C?e{LlcCzd=FB}GoJNXI&ugu@4AwBVBT?Dj*iBWHR?*%5pDR5dErDNmq!xq@Kdb%%dY=Ye%=L+rv4% zZk(n^&2hY0`-4L$Ntb;n_^16EFO-%@6COivbM_Ba&8h7i9LbEBcP)%~ZuIz(CS!39 z9Z~_PAg--rQhI_}(NnNM8FA#of@qaohtqWv*t#|b8z-G0gnu(lH}FS+Unf*@py^}ML5xM|1{}Gv=8Pctcmg18KTlTQ`4A0Dn}JYj>laO$uMR% zQb8qCV^=+KWS#Mju0Xxvumv$*ellAb^gR!!&~GjzDB;k=)$#b_T1ft|4z&O_4I@F+ zCA$l>gpiT3xvAxeUJ=ePLqP1r$9C5Lczkw^L2n=9HOMp8ZCFC>H&Vi!@sl~1zD-6a z2vW(ggxA_;V=}sJqS{xrN2m-`n0;B2WD+MR1S;P^os)?Qn*~-613!KMfFbE-j4Cur zRRMlo%=U4wd8%rF&Y!^rS^lt3)Ev5*84zTONM^S~8MdQHySQAFg{h)40*eAW7!@#ATu3i5Yx88;fl3Xxb+Oyams;H> zV9LEJAj#EIzP;2e^LMw=E;T<3X82WIP8g~%aMy*r-mI6)W&STz8a03o7lGO~t$>`u zjq{0}YtC0n^F=FMQhbW!0UdR)lvr|fG&afBgmtS_3?So8%C|jDwo@2J{7C_ZaqI*^ z8&~-NA%&tVfDa^~wnJnGQDQjuCgZronEH-)QJ_#~q_-)YPpv4OPC_&@PabO%BCrLKgA^j9Rpn!gjS|O+UCeY<@kw2NI=j{igBTl^ z-A+U%rdc~7yJ%XGDr5V6W}~JR)kaj?Jfy)`dm<-^%qD+?MtUEEjcQgL8X`eh)@XN_ z@u?X-Q0{#~E?|il@R6(xrX}Uw)27dbnmu9+GAYoCYj5$gkkY~fQ)-QZ?R;g}CK;`mVLz$7w26;(Zd%im1x+o8 z8Ggywk+M#0yeRivFu1xoiDRRh8$7j?yQY>aQqqy_EV)(t7B|E0cXRI8#7rr*lJoA? zl%(dK7^5{!Hl1h;9FVQadqn9z!wc&3^VN{~SOgjSljz14IWwVv39S*k0O|%m=syWi z9NN@IhV+^jLWjKf;H^N8eGDtdD6ht(V);_iR865u2n!h@a!RttRZZ7ytmgX@$hSVO z73o{bHN|cskrKYA0j5}xMnFIHHuJQW zj6z4sKBb`*=)~a6liX(K6>1l&gYrp}Y?m}qk*j(KgiT^RV`-kX>2&){^1#G-0{hj& z?R8T0PVXn`r*50T>TXmIZ#JRDE?Fdzn+rv(z~ly)hJwFG?*>O5WmcsgSVShP%AoY+ zc(Tr9mfM|IHguyCJpmKjSJtI3uIfzMYNrp1ONk`#SQ8U0OWx=a{eW5=<{Qa@UxR(E z;dBs;5b;xr3fX#WC}uRUUGoW!FwL-Pu7<)2I09;WmdqEG@{<6JjSmARh`FY$a}6_+ zA@CWj!+2f73TRTU-RVx#w7X%>vYCqw=?Nb{ptn+Eq>m?+CgY=zkp=OnK)l|)bDkO! zE9b;+F|M{s7@>q>WT}|iS;ToS>n^HA;8&4tI_DTkYh~z+!^~y!_vy&!JN`1I#yBT* zq=$|-bz1$cLh@D?a46HmUb)4g;bY@O395BqUB)qVz_}}IB5KE&jcAr3j34D1Jv!c} zHl@c+=s|@|1OuB)$20?LiZtaci?xxW74@uCo;DRqgSWHc^k@tx05T9wO>;V2vfe<8 z=hP*pFX8?pT{yiR;k_0gV+rgRc?<-z3WoKP2nM2<;)3F+m~Ah}m$ zfgs@*ysXlM=%2R>m`VY+Q~(J5IZ;ban|6iz&Glz!mTIfc5k@) z2bUx<@du5}0bhP1d;Vz7-VWhlw_n7jbudH_LV4R9p572KPG9YgO1SIVLRHva+X?)A z6+_)Q>h*2S>4Igr8ocXswGo10UVdU#ISZ~n5tT*&vpoFeRuIA;5bL|yP8KFRSUmIA z?^m2m(Ep6$^b1)MzY)^bM`9+w&6zf9k*yVory6|pQj1uvI;EOkw#yWYTRiQ{yjQT2 zJRUPO5y#tETJBODrkpR=TSNd8dXsPVmP`3wvC(TRQFW$K>Wqi~4bfm<*U5zX(`&U$ zZ6GgcwcMrtQm>hBmV2H2QmxzVG?$CLZciBWwgZA!L9g*GutLa0+j1nRrc%G7v~tje z;0dopx{_q2^utGaCs2`=?1R#ghL?wPEBvw}lNqi^i#`dC=d zd6H^XJ@7Q4k`&Q}0F#$3!0-V;pI=jw?!IIyw;z0lI89y*a)jMGR`dl6uDBk8w|M3h zt@auCpt6ICy23`XS?&IqEWsA zN}I_&A?FbO%DA$K2*+Kdkc{-cU72FtM=dQ`?mt~HL9UhnE}(SoVcoId>$^V*!E`O= zDRC=(pkUC=i1d>I20dN0dW#TYEAk7jp&8~v7`WO|{5Mt1Yq2$nYi4tkPe6KTFt4c@ z1SpJTHVl+o{F-jtRI(IbahxF{2Z>Al-sE_}vpI&|&jC6q#~m|aI)v1!V5Ap)6H@*M zR~-B4Lw9G<0h!TM@~LEIv{G%J5F*6_Jpf!68{Qu&I$#lHpF3_Q`pG;h(}ILQ)?yz^ z3`Rd+E5)NDpya+G^>#=MK#=@ZKgZ-b*#ImZj~6AcZA-}0$t8h$+P>Clzkc-`kA7JH^r8p;UoO-p< zq5eUGLbf$7gGQHHW}Rj$Us)=4Dd5!=G~*&hS0oeYMF+64)aq0_)W2=idc0BR-DVrB zU5AQewN|OwYZYsgZ!|0I`f{mRuhlD+YOmf=!M)wAv2>#xsW*DiN3$VuJZl}Er{85iuhZsfk?P|M{FD+5S zrBN8zb*a)={4m(Ht#$h0&|*kZ z#CF)HKq@z#*IV_&-%D3VpI(;Fe|oug_O|!F`RrwTb#HBVXYc0S&idwXu=9CcWV1@HjBme zjidGNFIU&L&Nj}k_M6?U_b+d+d@$g8ow!ofB$tZ#ac#a_O;i=5J0V-&VOEb;S_7Ix z27>j716c$jd1tly(`3ec^xMSgvF=zP7D%>^_hfuM+AAeRNm?aHwQnZslukPik;Xo=)JSMnIu+MBji6GC+qJSK;`bm0#tvf#;1ByWyXHT@ey z-o$IH5&600D7KncW=x4(o~r?@JDF8*wqQ!2O;xV+R<@HXnkbScV4lNspg}_kUR|a1hiY|j zd?@FnjYYlQnu>MAvn-Uk{dJ|8!N^u1W?v~%#uUdiHq;;oxzr^rl4~k&rMo$$E9Lj` zi($C{5GV}6uecCnZK`HE+3y&F7X`C)GPjtj=7rS~C8isDgLKltX+LBMDaVN|mDhzW zF#G#apW-jRGE_GSSFB^YkLJL80?T2iha&D*iWVocJ+=lEnh39jL@hkjTdRT_(%<$- zC4GcxDO%N5`R*mHrq4ni7>^BuX=bOUlW=Q# zAzMKHe>WbQoWx$csf;F+JbY;OCZ8LRl2~aI)=A}gL#@=IkQqT^9B@iGOA-?}!pg)p zf(jGBY;Exe7Q*MdVO9-{I!fff@OTb3)rb~5l)MXCX-Sg7rV)@Ar4Z>LSkGobXTS(3 za$YEo0xuIgkl!U7R-P7FWPIdpUSfvt`y@Td-F$($#^gJqS}oYX`i{};JQ;3qH6TWa#lxBOo8L2AZ7~G%h)!ZYY#wi(wUOQ*o57)Lgvsqhv8z*!*l@ zk!6k4lK7N%E-H;Ie%gS#CP5u*r{abolaVJh;VwZ`=H>G~ocIdkPYC0H=;WpQsFC!PcGya7wG_B&DCZBMfeP5=*J|gH!mO?UV_^6 z*EnX$=V~Dzki#Y9?yV9VN2n6?D0a=1V%*#ej(LyE5G@~ED=L#%(;+j{eIPF*NFN-I%u&6?8|W{3kT-gX2P$!wtsDf@D7$QA@1gToA?uEXEUv~P|B8LA^W zy9Q#&54HpG!t{}d8z~S3@xgW-qB{3T$9S*FQDm4D_(HBPQw#*-R?ruV(Z*)#9x1gW zl@_jaYEDSPaWpA0 z(@QM7_SL`+=N5*8sF#*&QtMe%2WaUp#8@a*h-9eFwfg`PUqJv-PjE?KnrxWc)Oo_&9GmD4f>JTlD-lX z@L(Z1=wgrq3`zFa_2D)_#;D+8kLb|@YOGJ%XH{PXg|tB=NCjM4DrMtW45|$^q>s=0 zQz*(A%z|Q})gm9ZSYxq^)h3p+0wE>M%Hr(`I4HDQGJ6zVs#-7nKv+woGGS;+D{a1A z-zj7pFIDR*I8&=Mn~U2=$7jR*&hTuwE9>bdGwl~T8*9?ZmzImArBbVu@1kH!i|?Uk zE-&SK?d4LZ-R+@BPU+-dGyMszEKGlTgcMW81kK`+g?#@ArH)|(d#d6{gu56O-D5(N z1x=PPz+T(|9HdoPL&}Wo8iBujaQ47)RxK`2QpVfueks_H2d|l6t%A~0bet7Swl>)v z@3@$P*p?WWOKPztmt=I6NJFByt2mE2SV>Y5dnhQ8L)W4s1Vj`lcM?+Q&KB&~(98tWV zdB}3jz`+UF3)f%p(7`A1tECP44d=I+mXWSk)?RHG)0h3r_`P3(l5bs1j-wF=)`n@N z#}k@e#Z{i@vXmtf#g2;{M{7(%3f8pr#kfM*jrMz3u>|ryfy!y=FF^pH-gZ>JOXe`XE@&WU$XHjVeU9+c=gF(QdMxb~f#6277YZ9Jh$s)= zGN;>=gtAe<%%3bQq)A;qUOA2nFL?f4V2hOMMW+PleF8h znvh*$0_>5?HJ_KuW&+EBaUL8@0l*ln!?uO>N%WyT31P@-r02M40SE@WjHQ<-`RbHl zqdmkD$%xmaD(!K36EgrUY#*ayVS?!I4bGlQkLg1SWFwt1oM{s;O%4mAJ=iSaLWsJ1 zN5Df+qyodYs=iuEZ&}WjD%EAJo=xrR@0=AHPqw}Bg-lP2<8JQ1a=uj5W^3@zg2kS&yj1${>bbcEu$|*;o`!C}Xrle1cwb zKGYipRgqU>HK8PXLhh!$WryejTsrJfi@-yU4uuBf^fbRpsEMGe}`p>U2n2gwe`V{}|7K zqK@Dt3PCZ2$f~jGu*~DNPKIVKOC2Lol^uC5DX!_CHs7qj>^&YoYYn59W_v>p4V(C# zIZnbaG3dZo2;E`Lfa*}o5dV=lsUooLoM=36u|~Kj9B!mO_0L`@>8x&S_tM|X*>### zmJO>i51NL>cAASN+$=%sPv;k=Ll08f#Tw4{b3sqGAfSn9g+-)15hpM^oNXY(d(;ko zl6>o7OTT*G`1-k@86 zWtZ2FAM9ry*(Qw<=!HuuS(67?vIrqvWBRrO7zjL;;1w|#(L?s-DT=8~HJCnFO+s}v zv56t_8OA}lo-Eut_0@6Ds*Y^p7&BoCKB9mxV=%wI@*|Ri-Cl+&E{-FUZ+eI#lYou- z(UUqE_z|1qXw4m0DF|Gvxk_d&kLx{o;<)t;_8VIbwv^ZCR{~h=TKC3($vFf zv9T-Bjc{R=9WJbp^!g*rD40}+Zf2*m}7kw^dEBQrC zrWkFx?ak5wWb-hwIGr8Rhq#Ok*XT0X$q*k%4R)o>&t({=27^F@vX;tQKC(0dUj|tj zmL_`O%E0ESpho-HmeZoknfU*3@p$ui|8Ow8DmAr+Y{Ky;NXxQ`6nfMK;HP92tg3Zb zgdBG`;injq( z=i?53Ka8+Cpl7l5G z#2#}eWLn}N(1y;4PC`ME^tgs>fSJk2d_hGg{0+cLa3C;7@L~jO8pDx{S2c$^gQkWw zdqBBlzYujEZ(Kg~v%pni!Pe;1*Sj_-Y_V$C+c6`nrP14W_<#i1a*T}4LQ&RM7oJ8= zSxfmXWS&ivknN3>ezKJ6}9-`#t8z$ZIWlOYNsKMGl`_^vVe65i@G_sh#Q zbhO{*A2>gjBo0_p$^2^A$rGQX!^}Jt7E+(&e)-4o+3qEACaJKX44Xy)h~alH+waQt zdh5aC`#-w=cW%~~NGJEp#`Trrr*&DL1%D*`Ur7id6)Jj5QcpHS`Y&0T%tk$YJD1_O3H)a6l z4=4u#3>Z6#ogCTW1d?FYh1Ae!oV9RECtT z3xbSV9_TZPVJs=~cMjiY5QBnIB|OJ$%#X&DU06n!RT7J)2E3%Lq{c;11|t-{>USn! z@r&sh7z739%5cIm3jGRgfJi2NT9Cfj74G$Zf)nI5NvlV9sK}OD0iP!mfgtL0&j(St zbBn?Q`@Kc&lKHY(Y#$&1Zz5-49Je-;1$DBR>EV9K_pd>I$FLDu{G>ZF<6V3pBKkx) zuap7)`=1O1pE^6K%_r83?^HwnD)jd?k85)fdD#RJf(nfS!N1LFvtDh&>(M3Z1#PRM zNUnxdAz**)K``*IryL*_zhlCDpj5~UeZs9A=4MeM8-BDAN^|9! zKm|y>nK19f2vMYC&PB%Fa6cse^S=lZ|M_18iT_+TQVMGz^}!Yel_@CiFcIU>pNGVM z?)ss{g8hu_C}tIQ^iP1|KTo|1(Z`8IiP7tipyD&aKM#vf;OCA9$JzX3_Ar-7u){Di zg;sq9F#hwu5E=jZpNGbOF55!{3Wepf>3;wl|M{N=$7g+CL4$X}QWZTB@6Z`dbzyGQ{OF4GtG4Ffv=Wtu~k9Ui8aruIiUnh zmW8?FvX3=bWbsO?4uFwKy>LslD}hQrUo=%2M)&~qoC${cpi(biLeJSkftKx`Wt&TJ z;o<*SS`0)HDXO>rV{dhX0-Td~eYH~|qovj=$N>yk^5W>)#G9#rBOYsX8bl^h=^X=E zas1df3(K7)@NV{`ikS`l_U6m%2A6(WPFjhK4F z@WSly2+j)Ni_StcKS|zAV{?(T_1)NQ=_Si$RfdQpr^(*%&r4Q7xzWm`cFOc2L^pznze8s<2lJsMV`hG*3weLI{-MJmSS0~@qI8ghY`pvdE%G0@fHKl+ z#C`NY4!+5vurI{lR1DK*yo!cZ5m97lYNC-Bw#zKiGY0~UHmZ1tFm4Y>j-8Q=vrNWZ zM;_;Ob%b4C>*l&41~kQ18^JWKX%45vL3T~(Zvk4#)%9_}ao9@B?Pm0ZgJKEIWlw=m z9MiE(c}k?gBpiyfITTVHrpCb51}{U(}#S0@k6|&;ntctUF34MOM;agG0~)8 z@;@zS8&gzRAF2a5V;}#xIe*LuFKbjVo=m-hUjWyP@FQ4MQ^b7Kjwza>oRAg4kzSSU zDP<>xPp8>Mniar zh-vfk8sqha#R6QAJt)RJQ${pli{!-a0vjV6h{8srH`E7iZUzc00lUX4+aSRQI=7rB zGj0X;Wt4^+HjWgFf?RDrV6p-rHaT>SRMV_v>yR79co^hxF2y0nGHUj6?D|r8kZT`6 zR^yg2UTUoQdJ&xv2l?0*e}kx4U^)@?OdzracHU?sF!Na;NLEpItUN(}kFdPb0y$h zQy;1m5WCCL==i#aB0Z$)c*tymd&SpCj3+pwG&1o+JSXuM(;&9+0BY}zKGSO}y-w5- zE5f_l7aVT_F?jgK)j~MJGSi5~-7R*0oB7h_)R!KT_2HzVS?TPW6n+eywF)k9bX+CDpC^>h<`{UTIPL_>_>etp zI-6o7N#}*K1<@tqb#=_>91cbuoo|02G5F{8j`$EE6)xDCC}vIR6q`syaJueD9cCGM ze{8R>Y`^NsS?ke685U>wdSRoik(i1WLRRN)zbsXN^X%2Ubr@mkHb{5aC_>j-;?NV0 zNQSL}JDNLP9hu-|F^tM;;u4c?X0CD<^7@nGRsA{Ad+kJ<6lD=IQp7aBFbYoyb!bbS z+;C;4<@eODwZpRKc@Si{?}GOy4W^7?!n)KwjhK7K zYN;i*mZ2MLPlC7(%itOHOqO@>#M@QLJB&j^)_X6KS(T;pRWgU1ezhwgk~o z%eBektIceI5ftVl+g#&;kxr#yoYbESpt>ri8R{5)GoB|PUT+w+u6Ovk`X za#Nq^_dd8x$uIQhv-u4u5Im%cJ@I%lJK2`+W`v2FaZDjH#}9A|%}m^LF)vsG2gZ)~ zzETwrb86QlWCu-#>B+NedO)DEZ=EVwl3VFGzYmYjDSSu(Yq``AL$-RCV%ZMBXVp|I zs-{|M&3neoK9Yrr{<7ddX;jkG9oo``@tHeRrdW>oz891S%r!rf zw?&d(F*kXe0xt9F;AV5{eQkgE`)*_X&5ysgf84+Lan$>^*?aZR^Y@qMrM<%sH$Rq^ zk3YQM*f{+8(ENvmbWNtLw0}i|6Srz;@Q0IszW(^rVe3O<|NTw=9~Z|<>Tuew=Uq{_1t<_xxGDet3I?Dg2GLu44CXSsRNy;;?;RzbWHucttTyE@oF0_a}i> z#=I(l-MUFttH$&i56Oa;nkgcLWSzO|R=1uV9OLH`TV+=vg0Vj+nP`S%AZ%<=59*v` z@1Ra20hmpc)@Gj12x~gEf@ma$oshYzq-{A@c=5z?<$0yRVo*sAO|`gQ0@}4-=+~Oif34 za(3dsuA=fMf~w6HwUXPB#+->h8avjexFRLY!i5ry8LJoo##y30cpwagCR2jR7f}> zf>p6~fs8pB0Xv9A=Sq<%!w`e0K*!s?_7+&iYa89|-Vac7_H~pkuP0{lN1)hO`lNxea6HWl%n}^&T6@FF`hh2MA!nC*o zEB`+i+@LJD)43*2v4d)L@5|r@Kofo(+!W3Rr{~8f!}nr=)EWlr#_l%hgZKv%@HsSX#@-tG-7`Xb7~+MCs#6^D3AT?+?kTuKHZFMNW zTx%>-h`B{t8vvTEe6I!qCBVv+YNwGp;3bY#3(9j*WEM<_F&DuPG(4)82(B2_@W`bG zkDVb!uDC43(53!49-PO^EB?n-0{vt@38gD=4SJ3S*AGZdQ1i~KtzNtPY^%52BU`i6 z+t%d``T^iu@!o^>PlEw3Nq#o(r}RF%I!PP{JNBamaDYMKLK!gT+`xx=f7*Oz@XKM?D-<|Hr|v|2P%hZs?2Dgp=tu#`o8dp)Eoi9)!_K z1}H;BvRYs)B{x5T%VEpMPGLEkug%eobo;XaC#;n>u)=&>cHeolNGpauS1S~g*|(U4 zRUL1Ahl2Mdp$&$AF5l0K-X13}2YV+&3nT=|vmxK5jK~5dp3?(`lJ~F<)tU5ZGDPMn zh|Q!mB#p5dgu$%@%hTu@Y26YNX~_6*KbbLm+g(J1P0ZH9Bo-4=q0dxm6*8oeK5~Dk z4Hn}ur27)0LDYs24Sp8roI@bcB}*xZELy>l9u*QN>o~q<8%36K-S0J~a)&B&cZk#o zPl&cWZ5PK?M9=ME8iV``l4K9?F$sOruPVhpMU$H{ja5c16cI85pqzgK%OV8&J?>41 zD3Ww+NFM0|Tn-dPWcL`>L9CqELpa-NeU!{UPF7?%WW{h%5F}G zk14*HJ&T1W3z=7JmMAMWn17$M-v7&NHa3O32mQ3wCm*WG@1 zho!=RGdNvhf{G5|0IME46!%iJjtY4^lDTw0iGz?9Hbx?s5p+ifK~A!$%W_aG6jlyt za-Ok2DIR$24&ZxoHI%6i`&vfA#2&9sy|OAQa3~TOu060d!FQbKmZw7sykDZ25jZeu zzHx3`ER>JUi8t%WECQT++1vTy&BhK$w3d)_z(t>$ClE%#*;HVbSPn|KgaG3{&TVAt z(1-!lvt=?{H>-Di4tL>(*~M~?e;jw60x@*4$dD+2J-pMfM)-miRt=Isw2GLE8~qiR zxS2@kEU^vn!JD!!BLu*ZIWL66x~pF9*AO;V3S z*Ta12YJgWIe6`1G7_Q z!B5eC5!4D@REmca6z00D6AJf|1wvy15K3AWw-H*Wg$1P=U33k};T7Ohb=R@*IdLC` z7faqTL65w(Q>k6O)sRqET&!DZx8vBa%;>qh+L!j1Z_vvpW@*Y-x9@5!#x@ZBg(2!wrb_V zHn1bL#cZhago;vZU>8C+1xmA74X7iHR;xa4 ztho~9*-O|(iq%GS30VCidMPCh;_Blkce@huwq!!A%$#JzWtDA%*}=ix)rIBZ`Vgie zqg4%Cq{6DMaxwbi!-o&4;S0a~97eD?3Rd&yD$4JuAUIIrR+$O`KFL@cZ~-`Ekt(hU zP0xXE15l2q*k{$v-Y1xcC161Ho? zt(X+7*mszLAdKL?Rp?CaIY#k_2_jv2f-KAuWF-{MxoW(@4ah3s84G(tD{98xG^t$- zg(QCuOZAHt&S_R%u>jo$lhhW_xz&o*ETly#1WZUY$i?v1d={=pxSu~#E)C1(#DBqv z$h&T{=90EJFOO5DgiO%ESsu_Z1|Aw}gN{Tm&PGGd4`uu3cQMF}Lz-W)kNY+X+d%q* zX`)&VIpBrv?c7>Txh^8iL_rSE3Jtd}GAli{x8ygLdlJD+QG;{`Rz-}k)$}F5&`b*D zPH^V6whN_1hG~mLI~1oSsv{`2*dJ7jFl|;kvM>Z~`8~bf7Z&brrPeWpyIQ*o^74;d9UZhZx2hBdB+={OP87a@{W8ND}6Ph{+g%^H+Jda88g$$ z1;P&@eT5UEH(<2KV&4bH1ilr9<-!G3U#(yc*)yf8^b8VZYvx3KK&;bS>mhme;`-_! z-+b}U7q2g$b*j%=E$i^bvt(gv42zio+{@k_u;w$qTqA6Alc&@>WwN}LDqAepOI3mE zR)|0%Hfr%m?tS|MHZ7Q3gp?__EjNK)D;1lyD)paR^;Y4t(=julbyO}B>QpT?nw2lT z@ka+baZiMS3V^CssI`iX^5?q^u3u_IY471!M7#~8VuB=Ana9t;rxQt0ku!4xga{tz zg#s9bi$GW|cBS4ikKO_2>n!Aqa3JyIfq)|?8E3^_k~(%lHTu(=d>XoFAzL)q+1UJ9 z)(Ihb8?&rD(wAgpra!Is44@Go)#Qfny>tZ~MOB7(&+ zAx0xb&xeGfo`z-bA{ig>L3mn@N`?J`7$VGDyMH9n_puyNxIiA+LT*!e?JzKeQlcGm z;efopd|@XdmwS16eZeJBPPQ*zyg2D6pORr=SfFw$lpevMhQiAU zId#!Mrq0lYy24pNJ89&fwkUSVVF_Ji<`ut8hI_zyaFWGA_>fQloxO=Q2tz8wW_;14 z_sicPR1OKg8fYAl!99vOAhe-jlhxpev?jZ$8Ivu;(z&EVfin=~;2Fy)M3q|1G+<25 zdsGuz4FomWZS~-+XYL>kS!VTPWHFmbN-Yy@iEPx!Ey{`87G}cQ-9E9>u*H-wsR_;` z9T-l)k;{YKB&ow%=F6q|s;N;AfKC2lJ*@j8oC)3KcKOVW{sxtdP1UZ91P`rA8t!-4 z*{SQjR_$`T7AplZV{!de7I_SF++CjP&p$eGjm9cvqvPh)*6PQXzc)wU9*?$*7wZ?B z<@K8%JEPLD`|eYHwcNTmx$3RG`r!^+<;FSd%Q9bHD;tejTlg}5-*SmcV*s%wYkRM` zco%;E{cP`~e={-kjDIhJKCU3ha#l@thWc^nnTdzgk~0yQrKX0kVRK_Bb3~#$@-s+r z9AyQz2<)Kll3CrF=2vlb#T5gdHFA{94Ij|~5$OuJdV90o>CvSZgjA6d zL1*E-*bfiz z`@z-4_!p8*Mg^WPSi6oZ9^0}ZtPz@Okk?^^X#GY&4CaYF;K8lf;EcI3D>#AkP=gZQNoTpMG0{M14gbCMft{La=RLR=i>x%33b;cqS9@CLIPWU6NL;(dTID=|lGS-)w&o|2kg@vmLBNO&vk8ZYybF=F zI!G7T_7Hl!HCz#`lE%YXqD@IX{qY2$0gO?C`E~b2$i(1E^0UK!YRy~#QC={+Fve2U z304_Iku&X5tOp5-cukL9L(b5R-Iv{Whb1vRKL(wuVVj2}pV6c7Tv+dctP1R_RhCc5 z1v62=5g|)GeN`EPSb1i?vvK-Dn+>C_k7;MTNT`H>$!9n8zwKRHq$Q>x=a16EWh67H z!Z{I%vW(WKmVMFj2}Y98G#f^8w@D9h%BQ)IO*=^oa1a%3UkjYAT=}!(mvSGG3OQT}OQy&>i79~tU$XUaFooFa;-pVK9rD(>5 z>$CBLzJ->&m;E@OSK{WYowZeDng3m-k-(cR*5@kKLAhT&*#EL|{9ffqkR)Vy6`S+b zq9c$!1fu&7C`bQ_qTi)@t47#VgGg@FBWgv}h-s=)bh}c!CulIM#Z3rTlu{}YJyxxN z1xr|1Xp2u8jpA3d#f^kSq)SvfjIuhCnQzIM`1SHv!oF1jlO%8;CScZlA8gRO&U(%J zD%%5%z-u5hm}I=(p-_T9j)vSMgboi*FDzOEiZwTu&SLZ%6y#H-i4a8WgR2mx++6Qyi{So54qgh2#QLvWF zFD!txG=N2`?=|AbVfdM$BWXzBWSPM`pkdEvl2nDuj>vHfZ_%_d(&H`LW+U}^RQ3dP zfH_|uiLbK9p3{A5rt`hQr4%am*yIve9|}?@NHw~#k10uKL5&efYuqjuf-$Bm3vRP^ z$N8*%)A;%loVikXa{QhYM_o8#pyHTeGg$^q+E5&qV2DH|j#SM^HNf z55!@J=>IW1y@GnSKMnRqgX3i3ll?xL9wk>csSn4vg(v{@JXs%5G|N(5-5cn<&74z$ zG)F&yaUK}ei9EBWU4#g7(WMK?DWb!z^EX3vrc(qIXShI?&_Q(LA#@-e`2rIrGCbj7 z)e+-{z8cL~GjPKYekwx*3`ShRKohSoFD{QqNOI7&6$`LaE^Y(p0;bnAo^fOi(G^i> z9wA3+CL>(IwI_F`sa=mw1~*Xq{-b1YNr54ajK?KNc=r-aOvUvXFm;Jpny4A&Vs^_J z<3Y~!Dy=XVY|3Jal%}$Do>Z}j{yoLGXtT_Fm01YnF;a+pCCmgS0nHT5HK3B5aggFe zS8DzS>yM@2W|~o~h4g8HX85xMC4^uDiHuwa1^~-as@OFVyjoQ?MWo|nM7qFTac~(e zsom5+!d?!|i#c|7hCQ5%dl!a0D+c9pNaEo(ODR77@cyOl9uE-$Z z(>jCaLZjprxx8o$9*QKrLiFwY)97YA6bJ!UhZr3Q9zj9{07-=r0tUYY?(N%RMi&E# zkQz$tjb904??J{vo+z#d*@6P*84|H65b$6<=*!KHQME^t$RLRP9#qa}SOgQd_w`@y8#L+403cF;F z)6Mbbk?9)Glb;6{#FW{JN_3i>o-73t)Y20~E4=559*-Yfa(2-R6%l2R8q$W5hmM6A zL=jU`r@bDGccglY)$NECGK$e?qk~%{2yvV<57TY1c3aJdqan*?vz1{HQaw^tYaIts zj65~YRji8m0l|fay217856NHzS2ScN-T%6PLDLVNh>xMG+P2z(5Puc@q3^*rWPS^Q zLTKwK=R7)&-kzj-&4s)3NqUSR?hTV}wsA-zn!_0<(3O!hg zuUM8CpJ2!@3_=45k$uR}A%&5dkKKWo2q5Eqk7i~PVSI`|i63f!GPKWy4-|x6%F8o3 zSFE+DhZ>?$wg!i)o|H4;LfJQz!W+vOxi{xnPpENl_2P=;z#z}$Ub9UwrxPQ+QJ%mO zMSX$+BLd6Aw*Vy@>>m%#@xK8SbC%53E5*mTm7RQ-4;AJ2pXLTcVx_oCFEL>{@Tiy%gsuYN0<8_Q4O+RfMD3N z6_NY@_irEgEHzmK-ip}LJIL-xfk+A&N7H`A|?r`4g z!D6YgL{1Mbc>pvs4}P;iO{VJB)sOAntI=Vl`3j+D`R9%1tM}Dc_54qb^Wk7^eQR)2 z>Rz3^|GBq&x$(nId(k?|qeQlFaDC}STk->I$jRhH zXJVf9m~uWZ5!b|y2%aHG=A3r)4WVmS{g0tJPI|!SGSDw+g#xUDy-wXw!4z&ev|J6u z{U9nh7fYMayKZ=nU+5wB*&XNZVf5}9i^s=`f9Q%;kK9NZvhj!>jTqgOSujV5eQ_PE zO_~YI;P^}^KN^G*JNU@w#>vjt{vja&f)UDz%jYcC-XF>IseT|qTOD^VP)_AOl zxlJ>)M%;l7pEfM>{f+}Lb|W~*=f2;$G&^2?n~s7@Bi}qzV4;ELzPNf;qHuH_zjd>z z;DFlSFQ1kE{^42m4xVv&FlzCS?yiXpx1j4OMG**xrXU=u=COMKgoB0lZL`ZT-((^5 zG@VFyA9%x;;yE9Xtk@`*I?L7Ka=zWG*7Fp&2KBaFZRT6WrEaU#ZC6^=G3xDBj7K9# zbm7nCoQ)F>|7T<@K4={#n3b|2+okq0&Q;|@7N<86VwUvb@-&i;+zKuo$of>+?Dby5 zVYoAqkoAeo^nId9i5~?Ti&OJvoN-~tJ2k2V1RXbKj2jzZ2~suY`8?P>rLnOsec~6d z`chb4>8*CRli6;2r}r2uTq#*s z!fOpMr@3k$68D@{z>|f)y5xN}c{$?DPTit^I(>WM;QYDP62k5#=r05GTr3blXA#ql zQn7-u7@%kJf$yoWcz!rhUy*$R)ubVFhwaa8+%V#5;oZ)`WrMJU6Jb6nTHKvJ(U3`? zt(!7UBa-n=*BB`Z{6*>;XQK3SDakH` zgyhVaxG~T@EUAM)Hk2O^$3fZ7#IteqVoHqez%--ih1wzb%mDc?*LY~0p*i}!Pbicn zS^y3ySO`-$f`t*kp83}}o2D((k}goCz$3Zu*nKC7ACG2OuyE&@tysol9@{pXHzVS~ z19^pA9gyaguC!)}DVNYJYQcVkA^oa<7!!APPp>ccZ%8{JmF7Rll&)dVCaUtkco56F z9wZ}2DLkq-zK7B0a(G0k4FciM+-NQ}hI`KPey|gNu6ae*7emY6CR@yvfMqrbg2=v+Gttz7w_SgYfDJYkdTawJY1y&pk0Yh7F{LZ07||8OBF$r> z1L;^s_?%=o3^r*^Q*|i|jbBZ+K<2o>zKZi<1a+IG%f-HImO#z|K-V{R1ZrCUGW|MV^l!8}A z$8nI%#6ve@*DX(*C@*K0ucWK!F8BxLlmoCG75<8H(YX3U9G@fbSPt6C+N%x1hfo+; z9kM;ly(Gqg+W=0+M%kg^OV)Ewg?oodM6Dx@hEGT ztyyNJMbjS&&C>>@V=&{?INkw-Vk$!@=SaxYMoxsYYGL6za$K>ZkORvKvff7+mRM){ zXh?6PADw}?T`V+~9wjA+eq;*beJy96Edl!0C?Q&tf;mI|?DEVBc4Y1Z&myFmi^wFi z^el@T&yT3+CA`&LWy9$}ve%x|C&WS)6n#Y-Of!K>c!@=hkR*43mY7lI22w%^Sa*3S zqGIc8pMw@a&XFiXmX;CBLgv%!bLGy^qb+)b`w9X#7eSBK_ckDG-# zo;HcT>?X(2bA)n!w}Qt0o%gA7PkQKyF19C-pA=KVRpLUk`;mVyzO&ZV4MKDIBWqtf!AWdz81&jI=Bn)-rVw zuAmmwQwmr>FG_!ihLN?s_5nf)@4`nQ_TerC515j#8+Uw?e3zd!1|t5NB@7*fG*y-J z^tIqa9Dj`wZeVN|;{p>428-+^2^m7Da1!u`0*w5Q+b|R;Zhmp6a0FL8zl?Me@taN* zSp)&XW#3KA`U*q=|1H@5wyzQ(>9t#a zRYa)WE-u$P1){>0exPYsbg#8Eg>+gH+!82m8%Jqg$a8`Eos9?sYKX zk`k70*4oW{vkLNdw^?rXy5-M~ki3$*khz=na+zSNW}#TaEl^*)Aa+>LFquk9LcdTysgzvxb)`8@1eMkUg|q?rNkpj9ruZG#ky;jGGaY#}Jh-yjqe#5o6gL4K@@p6qq1bIc zh`-rA5#8kG?$hJ;!v)?e)OEQ`VIXdIR!0h1LKwt+_13HdN=){{x9WpgVhJs}RXgP5jy4lk^HgY3{`uokKRcaRTOqL5xrMVLQ8UXr_gc?mi)He$c?O=i%k&KF8 zqT0r|KW?dnoHzg+JXdsvw19K6Sj>r173E9A;(;f*2T&n(xH&9$dk>o}1w zuTLr9jVS;>Q_7c6?52?dWHNx?92w}Vd7`DrSUn^Zj&ODn;tdTRc@=$(co|1&_dt13 zj?_vEIFv0dY($95bFOCJrp|G1#ki6Kg>l*si59v#B4R)R4yOjSWjxbc^Eim!DZ(<^ zlo%aOq7ixjCd_jepF11nU8EO|cS;X19(XKbePjm#(t}OOXRjG?NzGCbir6ygGQOuaU9k?rs!%D#UD-r2 zsdS{uqp~G4j*vK@&{#)J$HQBYV3;%uPCEgIH*JcQf{Uv-(Nm@cr4f9>P~!ajUB&0S zISe9F1#INUEBJi|;pUvT!9S4hY8EZ(DV|6PFU)OO1 zMJKwB+4oZ$k%(q`0(_L&)zWy8G@e7!lfx#;={Oma|CwNYu7LCW6}q^LbZ9K*Y*CIk z&~w+jlnhcV@;dY~pKQL|ED#-#+X1%^=zFDB5=sj_&RrZ{r5iiS7?^B5lX!NhPQGg~{%|1~T6wL_T-(C~R@tttW25F-zaZ^_8NI zG~CLh=Vrgv7&NPU13WejN`GRoKW`KVjru-z!)9%OT-t1w_i*C?g?cNTBKPX}DW)t! zHq)>n6FNfpV6fuA4pq(u+if&YiofYW@U2kTWhMm=ZA1`uL?#&n0gOc#g2NQ{XcFFg zHr|5>ytX4TU;5>z^GI4hzy6fw$xtpt-qO;QG1jVsS>n zIPstcXBaVX-VSUeU4R=+I@1+(h)8B}yzH>os)OYK_Z9+P!z;la9QI|hhj1r|6NaZ5 z#+slXv8ot2%Tq=1#pU(L2<0Eh2O=J)K^PwuHSmt517Lj2Y2ob~0(d~xQ2h-s$vhSX zX&K`?OxS!%;*Fl%bbjNrit+nx7}XI;7qTds$Y{Lx!{8MD!(E834NHgLSwCTnlA(h@ ztQ=R{UgngGhCY2r2%N>jzx9@MjgT;I6tXS~u??;!n?N(&1QIXgKHhK|JMGQ((h5$F zpJ`$IOVW9@vf2eCH@qnVss7m8DkbeVJFlLtZoFJs_Xe=CWL{$)mIbh%Ywcl^x95@> zhImZc$_xkBD$ULKx4im>Nh)<$__@dDxqb~=-|nsUs2?!1gV~DQb0REe7+Z<@D4+mr z+mBnlPH%n3=d2ncKeks_y38Rd{g&|S$jb)s{qk!2B_8r$!H7S99G>6oZLPJ}c|U&n zujr;Hsc^IkYRF&pYLp9KFJIQpr;srR835rT}c$myRYWHmA7zaqMQF9@2ml$C>Mx` z)M&Ij+_QKErZu0`%Z=qGFw)DFE|Dy4B3jB+bp~U*Rn(s$@&3Lp6YDa!1tc%FVoX3^ zcu@D(d~$ldcXCrWy*?R`x*&_GRiL)?kC`RvBzEyw-^@_r4A4jbbgo9Y6bQOLK3}vb zKI-k6*@g6gSDa>q5Lh1ugPGg{Nf#L7J}jQy5b6k(Su9}T_~dykZaAN8_2v`eI!}km z-~RTuoGP~Fe^gxO@O(Z2h&b1A_MHcRWkmE2NEGvdqx(mL(R|={>7y=eoT+4#!~>$f zQpxMP+&2b|NzVSW83{b^p1oT~lG)_BcOb63E0#KqHZb*tTB*}rB8Z5*N0XRM46!!z zYBVxg86T|7Ez%bvHvGxOs4uoV9xY1Fh=R2F-nkbzoi`WoV4sTY_y}}kjh{6!N}|^s z8o=>6(-ABh@zl>|u1ER)Xz%!#0e2DppXPp%%lfOwLl)-aoSl~2he%8}x@iK}C53tK zawv-ot~M<%>dBf}r*x0BH&>E+K{W`lNEIr@axvlDyT(6^%^an_su64;W+SKK+_&_%H6? zrpGd6MiFnm{X5sgFL|C(H8Lct^Q+0nDo&zbwc}IU#;e*klO-6^l(aB0aURv?+$%v$ zKde*pCx(;}Nd5&a2l?hNZ<#gxjJWidcQ+xM{MAHZXZe@U3Uhz)guX^LobFOI`PK4b z?sM|ubjyE|fNfCF!<6_r-HXQm1(9_6l|MPK&kLP?O{RC)pXV($xvyJ?+Tiz34;P~U zw=T~eGI{O}ncM~BJ7x0e;fnt*T^}HsC9?s;8q{wkw-A4Nlt_@jb+Yx&U%pYc`d_zE zpN`238Y^g74QfISnbdZsXZ|mx@Tv=ipHr#-;*AP@ zKIlY+ccxC%pP#s`{uefiUUUWgG5f*9iTd;7{rt`FfAL1$qmO2nw^sCX05ZUQ@^-ro zc%|FXdOu?6k_Pv&j9xeK&DPe&7T;i=sZGk=v9YLCqC-w;m3t(G$_sPX5I!qaOShCl zSwodZUvO_d(CfG3iwJ9y6M@vl!rT5x#^I3e;7HEv)GkDyrfNNo>$0V!JOJ8pBHUwv zt`=|ib1zCq19sQ*@Kczyp5n>oHikld76v(`Tv{3*IN`M%DpydPh%8Xod%@09f>JDYSvu0K#l&$>WoWk5W#JT;ZW) z*`=k$Tc!}g=vw<>OKeCZeA5}Q zqKv?I+*rxsPxXDPR@qov0Ef(cW^e`BRI&ws+2eI zL0AkP;l&;Tk#K?IZSOc_mNOpKSk-yt_dXRcXCb$0aWK{bQB7Et^ZiSKcKh3AH@4!t z=4K)~REbWv+_?ba^e;bY!tCq-2j11OP!$MnCii}uQ6%KU6Xr=R6br+wemzhUM$@A{ zP!DU#cIahc{vyC`aG1p+9auL> z)(Wox?HLrBXSLoBqd}#0@%vAQFOLrQU#@Qc^RTi=MQ=hh&I(gg2No;BBz;d<8K|_! zj6<2UoP%1R(xs|m|C~#LT#bJoU$kr<@ z(vgbJaBdty;>2ye7$-rkFbLz9_Q z+Nd* z0?7;FcP*EJcXEvp*+lf2A{F*;NkgS-xlyh(Th)4@Rc}^FlPv>_p;*3Fq0|Espwaq5 ziQS1Xz*?^io=bJcMyd?vxf151m>!nVmU1%W@sn9NQN5`K?DZ{-Zsfh1O zy>7cs^mQGHsWI_7-~aj1PH>Y@RPd^{wA5<7-TmpL_~zut_qC(?o2~Qu$^XaRn|8%@ zWox>h9lv51c}`i96`|-Ml(t0>fP^i95|AYy-yA*x1dT;!0wl|I>%ZUUedk&`8VNO- zIcl7$TS}!25qqy@uDNF4T&{I~J3PF8a@GIwX7l=w|5$(a>eYt}bvr{i&_nTtQL0;= zP#kSI+j;j}n&F)vEvx&4?r!byjJgnIH{PvtyeI^Nc`zg?4aSwm%S6-gPSGcL@iFy( zU|Uc7&o*e2nBV=r_`Z-^j=t*S;~Sbh@PYo%|FTqJ%Hk3fxm_LUMIvYfJ~?96MHM3k z#DR1W1R_tAq{dz1`nn;KNZoXKDn;MI_zq8wZX&-5J_s$w=u@x!}2@mZnCIaiE+I<8yMz*MYJ%|--MBsKp4-%5Q50z<%phcNajhsR-ree!g zg(`ssf-W*@rzc{bXgf(j|l*D&+ym~;QVu5jtM8x$G zJ-?y9I8;+b(i}KHJDg`JD`3VJ%}^B8=F~fqMda)zYzQ$Z1X(Bd;d72qM+DXzVLRuP zLpdYRHDlB*m8rUorEbc+MB>O8IRs_J-n(R&uLj32b&`M&4kU3|-9K|(yX1k1 zD!FFq6SB%D6DapH4E%<)3ze3YXebKIxDg2(=o#Dxd7bEBl8T7TafYpL3NY6Z1X9q9 zku=Pj>h~Fs2&}rKvAl;2s-q%qQ zaUqt^q&g(Z1Z;alaN%yeMfFDe_EG5DoBD(QQh{GEG5IJAunOjm(yZ6mfvy z0d=9kof0*uDv#WpCJTI3;+)$DOqhHQ$Y+y`#A0;MdHW?|m)f`Sc{&LPLaswapGgAZ zR8@Ul!kIA~{9@_sF!~D+(C5TzHyY377u~ZB{8Qfexsn`(9UMV6EC4rGP>;k8H4jmK zIFWf$A|Z_`;SXNY$(1ViTorP(CgpqHj%am_oKa!ru7D@SPYVhJB6%+q05rN z+R6TKS_mhha5iC{YaEW=RVL(Hp|H>>w*>USYRwflQQ}xGOtH>&-^VYSS{|(wwcIb=Pey~JuuHopgJ{?`FvUTr=*J7jk z<_02voob5@ww{H&w@T5aW>0O2+AX?nDEO-P1*+JPbddo?N-sHR8N!%k`8hZ?tTDr_ z3Ru)j`iQ(YAeV+5Tnc%dLk^S%;PhQ;`4g`?-KLsCM9prq(d=})OEn5+FD})3&Bc_I z0js!BuPh~6&2=mDTPljyOK&ZrXzjxcPM2rj`s&;HEVz2F(Ig_LM;3?*k1e&^w)n^^1~cCxm3Tif&1${Avbeh5ueN*5 zm1=u+WsSVU!D6-FS#S2*82EaP`tr@$d5tm_5_CWNXlCTq55t=Pq(xP<`53%qr;9o^ zJ;X%t8eG2BPPYpYv^^=OK#4V2a^RAbsv8_zCMYP?CCPfqea{v%vgwpK1zB7WaRxPc z%A$zzRrWbru;i#W6Bw4O-}FbuT;S$`Nj8Rm)@4`HpGDcj~?gg$Mn;LRm6ln#euaD4j3 zo-`eBVnDS-a7H9+gY@yC?gGOs3r0_5b$VG^})+A zn#ZT}tMIMKlcYyD1zK0Bq7P-fg`yvTjwCYeAONHK5?Mx&R98^>DB|ZU`&dexOO#+@ za|%~z6f2)Lv>?lX8Awn`pUle|UlaISD=KRwFtBe;X7rHp)%y$61TS*XlW$pF+R*h| zmsfEjsnn@TZb+p1O!S9yFW{HTsGIH?li(b14Dp8BL@f^sUkR{SuM-Z3;775Z8~F|5 zG$20ZbNOyfPHg7U86*aJm8h!XO9YgIaaRhJCAz zOuU6UwaR*3Ol@Glp!VZGXd|NrE_RZS$V@96oBi#dtw|-S?vQG!p7Syj10gdZn6z5m zPA?glPdjG^7u$n(_3i6-&z?QKI^R0^t@^jdZ3gBUi`ZawwYRdqv{dacEs{mw7?8J$ zL{?pE_7~UJI)n8!>d>8}yj7Kg9n|}jrls8MqU+M0jG;j`K_fO`Q(GOZEVZf)x=K=% zvb$1UT3M`DSC^32ko0V{ufP4vdX^#Br{@6Ue-4kN6(wD_Fw$|`{SSf*niQ# ztiFEz&B5l|n|D7RUO)YDcm4RqZ?Ctv8*l&PZ|^P330_d0>ArQMYa&DxT1Mf^R_OlI zwe4LlSC%)Rv{B`sM^o-<5X<0t*^-obKz`PYfaD|PO<9$b6k>V-TMN@cYN|a^)bv2S zkCY@e%w_>TgkxRdM%$%nY%-y^zKGxSOMgHv=9fu^f0V>#GYAP~rKU*=E0wHNgoi2u zLF2Jq#q^~SMigj4Rtgm&5kFq2h_D()5JKQAyEpOn_IiGTAYP& z20@oB8Uhve3aiWEHZ}O-h2r4q;NZT6L^F7@wB(Ry<0J%6hPMW-eWz}Q zvmz!NvVABWvLrpp0{Zxb0%tO>&;ZO;q00Q}jA=Uhbm{1o)Qbu8c0AqhBZmzQlYW7mO)bXjp`-Mb4x^cul<)vKb^pEt&E#)m)vB4TuO65RJ=|pXMxN zIK&jCeXEM05KCiZiFmT$5Fhnjx`4y|9q9JxyR! zR5Ar^%@TiU{GHF$ce9MtE5C5BO@BL7G{i42Hho3TeOdNuCbNV-de9sqAipqy1y@eZ^dsthOjU!*HCN+wramY~`YYIR5w zd5T*pors%9Iv7Ji4x9%XL+MP#*=5~gEd45StJHc~F1g_9(klv?F1R0Nw43vZXYL*mTMRoWK-;6!Xf|6Psp)mas28 zs4Q`E$Tgf$?*N$V^?3nC2EkjgDFBblWj|3IWC*jdlXRy9a-x|4mC2I!JVdPo;o!YW zny&itD>;oKTQpvyN2uD2C2W%GDyhAm^q1%T?H!OWK4WQNnZ3l}L@Jw%vy6W}y9f2R zlv2;2_%Ebs*^BdwS$qr1aCxc8C<}Fp%z<50NsFF}iRO+e1 zyD=Nhbr5JhPhvs7O;(gal_-LTV(Z+^u&ZxocE?#xoxLtsDFB7`=7mu6D-JjzsSV^_ za&(n+1Ca9q5)msB)=%L=AX!b?JQM7}jWc0ZS3Slyi;k6*C0iw*7?`9#0`L2Uv7qEl z*;pj4x=6ZL01XyNn^@WAEw<@yfE{qt6gUVE;r^u%u{+WT?%JV-u%fe3T$fKIUr-NL z-cD^T`T+#QHAmS$mG5MHNk}kZk|L24oW>qtm+BP5)Ebkg%h8R71uqf2F~%2Utv`5L z;KL->U3FG6G*iiFD*YAmoVcGcTruAR73vcQO$1mwNor9Z0Ai4c@PP?)aND=XsN5ll z*h{QCmBx_RqH!#+gyAfWC7)E>u^kl@5s4E((jeJk3WT__r6J+ZZPsq4%Ld-Nhk-YL=QcF%t{}fx_1-Vq>YE$8P8h*=-uP?pMMFN#Q1YlKnP8xaR5w&+q4 zobr*>ZlPqP8O~Ppssmb<$mBlZvV(|-~Wab=6{+2gW8)@_$#**}4lRGWF zEODzocDMaN_57z(_zQ8+N3tkPu@5O-$xXpfS!`0nSqtmzczBn(5|G$%lz3}-BD3UR z1PYm!s^{Q7w@{ZL3m->o20V;smD!953eI0-nJD^==q)EUVuP&W*2zkdMl42=eJQAb zVba`Tl7)Xq?*yrzyecz4ESYk0Dz+N!)0j+O@y(kPx{gUhKv(uDpkJR}NCr?DsgPo$ zvzkHf#~pS;poLV0>0nHR3xmQ^D<{ax%KBcX@7OmhKO3D<6OSLFYEZ;mQiu`ZfpAN> zICX?1Mx-P zy7ePtCB@jur|`@2p!e?Ry3G%0RXg&BHkO`q{E;xE{y*3DuvG8S8}qskgzO*4OcxKj}~A14^*mY-QA z3hinrPmKq2r@jR^~%N(pY@XXUE<%=tbl~Lg{yacwz z9?A_^1T$V*rvuTaV$(u}vLwn>gwqMKU>B=XRU@06(rGLt`5QnlME}E`i!cCuP;38~ z&JOl{Qe$VU|1z~Oz$)-?-TpzPFzZPlRteNw@jCqE>x)E3?ubCa(gp=iq5aFI1m1*FL!7bRbgk=-1)iNb$E~DQ831CBlGBWhNy* z6Z8^JEktw z=G!W8uk38qnkue?7pzgI%5+^Vu4|26r_o!6+9|q!R2!e2)MWjdc#38P*lwfWSXo`K z)>||wY_F~Msw?Y*esw@(W^28^xVqX}o9xR@rkIV=h|PBGalg5^wA5QhFD1e)MTf5s z7FPy5Rb3gZx5AaytFJ9pJI&rwebB0RTb=Iom?>Q5AKlNaBs}PU2EaL>#eM=4k%Dwo|DbSLW!=ewN#-6Ul2d(@Fk1!b6n3SmsFs|3?zATVi3Uj33>;H^SKL|H`f-6N7dE&2pOyaV!d)%Pt5Tpz ze$7EAv5xPGUlx8*+bBc@eQbH5Sopj4^LIz5@Y2-tev4$+=bgR-G2PAgFy$|s|Z8ZkVi3EcPea63xD+0MMh5Q5W-NP*lO zJZcw);EzSfy+$R%Fi)hb$?g(b1Eb->Qd1a?bZ>;*VS&KllgYzLHsTHlsZ-f|U;tLB z+)J_)oEdFco;%F(VD#TAmGvR1QM#x~N*=M)c-p6ae)#0VPic;#Z~0KuP$F)A=H;nrZ;h#JeTqCj zrT$?tATX;eJU$mmdGOO!{fCo34*od*b7c$T{rdX&Z%_N5SsJ_DZuJ-Y%~e!a>Y3J; zmbsh+Osg!s{rbhXsz(nrRIi!?xQr7^v4sFm8XkKOPMe+N}Zg*Sd6h8(dJ+UrxVYP zPSP~pi|I()YPFi5Gy3@5vzM3K2QLS2PM&=8_-yy-<3HZK{M+q-PoSEgwcS{10IJWO zH35#TwL6~+I6_$)^k4q+NjklD>w}YgDbmgGtGopkCB8&V$IRKwDC0yUZm2G*E@#mo z%(?fl*)6`&QIaP4UY+!Bhg42qKAKccuc4E@shwYxIZWRdAGo+MIAo_W%uGbhw~ffq ztJnX&pik~ieUc-l{e`p`J+PM^pwQ{R54JaUo^NcP z(?ROL!1j;qHfh`?9Sr5n9s*W~;wz`RH98GKu}O)!R{KI47va1)CoC|0h~7oHW~t0_ z+9i+29r%Q}ltyyKj3d&n##VHr6C7QpYF_HxK(w#cOd*tq{;B9Zjg*v9({hJX$UarZ z5||MCU094uvYQ)B;N~$>&V!V6{-$_@6nw%6(wLQIv=4uH>G+D6^v?LM61sCNDh@cT zAIh(cc5eG>PE{@LsX5#|xkAW|5O2F0DM(WLu`6)_AAwC=@`088b#gl@g_^)r0Ae)W zS)k6MI$~pD~|(sWFSJ6EfxSU z7ACjpa1s~a5e^98Kpj9KP@_W$SNLY<`PyJ({bz$!$ujU&`vHNLOa!S7HcT3ILH0L- zP~IrfT)uK%-&Y?6S;Khz4NMzj(xKs^ZCWWKaE6>$#jw(GKo$#DOa)unxGHqxE}mW0 za#{i79gOH`mAuK^aFwoRMOr!ebkU~P8C45AyEF;wZ?7(B6P1OH&Gjv+^(soE{}do! z6$>ka=L=D6A9YfBJ{GThW{$g6peWlQ!EN|Qcs$7mU{Towrb)A)s!39ZHO_#D14AWKFHUFykb2Z{!qMGv z9(O~E-J{0&SUraU0B5Zt3?_#$Slq01%-P0KUT5k77~MA3NZgXxsRdQ2puEGetvsda zk`GtQ0)G(w!omp#yg3=Yy*oJ$KPHbR3Bu%+u?|7Cj17_y7`MxY!EiH9Dun~R@;LNf zxu_yz74h4AVG9|eU@rAu+zY?rJ+{7?LScd8><}5`${O%_>K2fI?Itl(gv-=S-&AIa zW!&^Mr>M01+a=^H@exEwK2G)mwMZmiSJslTXpCA{<<%_cw8rjU1X$DPF~XzbX9XVf z?G&+}`N~4I7#tTD8wq#e@Pr%)$f-5lud_i)eGoY(A9{pZ04*b z0fJBjose<;fQlT~5Zy_H*?rhQ{1Gez{G!j=Fc-^9^Rqx}U2XDm)DO{ZY6Zn?#C>0t zk_gK4G;bY0LUSgA5oii(b_B6h-71JP-6_;~@ACKxs`!vT%%3d={9-h$B#wc8eT!I- zMS=yKU}bwx6WD^;kFPV+B*szTH3AdzhucKvY(g|KoO2i_Ff(%pV(Cwyh@t38d-c$5^U6mi|Ur=FU@D2|c#nd(U zx1M8pGQsW2@uzBTrLF-WquUWB+tHkYJgw`gIu^Ab7Rj9Jpi|abZMxI#94q5+_u}kg z?}T9YGOb}Q`EaS*XsxecI;34+XR*FE=&p2#bzd*bV(n{_q?^wunW-!nE#70|Mtup( zWerucQ~$7PygF#Fb(Z?Q`YKA>>T18$r&wFFz54Nal3MwN8=TS08tv8Ydbdq+PxO5Z zhn?19zqiyIloLnYFRHwpnEBAkq*~oN7itjrC66OMZ{dXkP&@UAK`rRXM@w;E^(-4! zzJ0bm_)zh+iM3J6SUTN}O`6Ui_|wUQ3^LH!NY8}~@|K=Lz=6@A)QH=Zp+`JjeDy!L zXii4`pBTX|$V?4t7nLS>!ij0cSKQF_oNl8X%6O6wPOxjjDlBY|ir+5wcmr}G9<0t% z%(fG;SeC-B4)@h3#3gy=Y@1jhp)P5ikZLJ4aCr2Yt0POp8o(Y4q)|wrWo|x85z0#D z3E7*LpIMZLgXDqo!1TDg+WXoP8CqFPGWVU-1(TUH-(&?f2c=^rDys-bN?IC%f}GYiHqFLJ<4RnZD)75wADNlV#Or^4<$)0)4wG)6)*EB<+2GrS_o>jbTM_kM)>9$+I+=M zBAk`rjM%uY`q!lM(Ba;)m%6`y4Glc05oamN$v~u6fC0d&ucueW}Ld}$CUNGe3e zq+A)q7f-rQ<_zmf=B7$1dc%RHi*~uJh8HhLd=22Wja0%WXMD&K7Fa6@4e}IO+-V22 z*%RDAh_hk>8dd|na)yYAy|iy%rLjPbEKJ3UWF_%M$C*KMR#J(ad+okrpj%=SiFr&> zHxOHMCcO?kP>&#KJpfA~NhQn@1qAUxIbnd{o48p~o&liO*CghImLXI~+=W%dZUZ&} zWakR&>P>Ap2Q7=rOf6_~d;%hdh~X6$x6<;L*H?U<*7kL+cnX=5#wC~qtq@D7pi>ZT zJG?wbcn@XUSip+Pckc%t>Z1}zC+Et?m9L$|!z6&3EytxnV@e1J0*#f6e@>Z2b{;M= zKPQqKJiJ(}(HeM)d+!3ee45jIw^;dkEjDnW>MH;S1BWs@0Jn0ZNbNce_QP>fd~)l> zE+;C2$0&DnAW=<6gd>7>pbT?E=Em&~-VbtDR#=KL!nvpZmxTR^1lfL@X_S!9g;)T$ zJ%|eLia#ebnmW3bvOBhy>ghEsGj?!)-%TA;$TNQ=8EL`u3TXI3367R-mc7^M9!;$h?iU}%5GB(}?8Z}S`_mInv8KB@ zO>*ka#7LQ)PQyni^P#y*j+VLHUxoWIPK3dUbcFPxF_O5fo3r+cI&GV485)v2cBSa@ zcUYJ+`S1gPVm@iRd5pwOQp^qa87j%a=>k+H=n*FzTbjm#Qkn~l#D)az|4_wSBN)sz za_Of4Xv<{c0iEV?Ii4-Y_|Pg? z`jf=nakW#6mC}#CE84J`%o`|^c?|HQe9b;01Sc>4{05V(4lhFWs5-DKDT&9D1>!?; zRaQ9Cc|}xa@qBc3Oie67_-bTByoizr9P{|zPbeu<=)hAVWhQXlxq1DPm3Q-)HnW$Uh#Fd!9$391th4=7!rHYEhu;5uK;?69!V4*}0*j6_! zPv}(+h;T_6aHTbrH zAqwkPC&d=_$Hj(j`K zAfvtthH#_7`SgaTw$w`YCPHJ7ej#}h1vQ7HVJI_E&{#>M#w|~1pfhG09`TuWpqXOW z(|017zK~YTa{RoIWqh-j)D#VnmMdC>CM0D^LTsYeAYM6S0#Z>7%)nqHvMqS88fUVP z2vGF)OMxh!6RAw)ZZW(ndNPyM+UEGkqo`R1io@FRb<>fIn z5hj_Ik=6i8!%<1a+Ayo*`%xAb~>Mqs=WRUI?Lk6!y9*%FNz(0#gJ7LZp_!|etD%` z@;izhRBvbC(pB=e@p3u-tyi=2$vV4-+0ReKKh7}f<3P0RnTSwx>HAh2D-yAxo>{6T zMS8Y0Tc^F=Ut8%#nU4;a`IOvaitn7Brby43V9HNEJwqsXdS#u4p7cfJG$^t=wR^>V z)LReeeh97W6m^Q!wp~^BDV;a3il_32KqJbe7%A^+b)Pi%$j4w~LsdsUD9!cqOJ^rY zh$_PaD)l1keBsw&~0Fnw7 z-;Zm?!2!}~k}-#+5aA}CEjhU~Te;E|k1-J=S=1qKM=GKV5G8$I#iUv1k;4uo4o%D} z5$P{MRp|lundG&Ez+v$N?%3+~^MNiQk#R?qobqHpP+L?5yGQtZoje>DnO9{Ul-W>R zPf)O!MFCoGMKT{g=65!}0&KfuD+mY-6YdvifYGiA#h10um0<;&;QYNyvsbS^zRq1 zo;}spaR9HZtv#nl>-O5tF5wcIFPXgzP}BiOB_gWn8}`o$zPZ5Y#YA2eR$!6fik8D( z&iMQZJ0kIwd*rY5&Cavk=ft|c!JH6KvurOSm*G}E{W zAY% zlW>|*$%48TFhVqLjOIz=kzGPgF6EI=F9@HlGLab(yWH#-71y!j<4cOi1ouI#PS$e& zAWRlK52c~Pu8Fi#m?}rWIi8ZFiXR#XR16a{Twzg$g^rn8Ci4H<9VRY{S=u<~V@dZy zmx3w+w#kFmJS=hhMo3gmEz2Tm3C_*?DgO1z?k+f?Nevqg&^+)g#aO}2-ynlX2xc7# zrG4T^;N;1(-@xs#diaW^99k_G*&%gwb-5JY7!uq7Zgc8RaED!@EJ7A^4W)A^OAWB^4(L`> z+6c0Z8ymCo!;EFP3r`%EhBN@_jW7z^5uGe-;RCsZnPdzU-PAn=Q@}9=r)YX)YONOR z^=0D_uT`udL@v4BQw?iFXRa7T#qW`1%?Ybt2=JSGLNP1l_hIF95TDNV>CTIlQo9Y- z81^fQJj=I!e&I~`Q+&I_Zg0dsFBPToX)_Um_B9dRoiqZ z1Lk4~w3&z{%^>N3k`60uDaf0JH@G?k2kRvi1P!=bHY@ovD2**gbR^y~*G*IF3{!J(-LO-7t(yDy+lBDH^ARvrYn0O@OuRtVS zW03`_Q&28P^l0)a4MDJT8#lH<1XOO(WxG9?*`(Syq1PsnIAy7Bh}@ofvuKNxZOsEQ z4(bigAc2np?IVKlc_U4ZfPzuYrC9E4O7l(^vO=pv@AKJ{Z28gl+$tQ)#EWyHdd_rK z&@msE43DfC-QKw^Q8rvS{Xt)PRMLA`iMWlNwK z^;AkLfvOq~wl-IHcDJ_Iq?7#({`>RhU}{VK;@Q?ur3ES|2aFuTAr#K$L`*eWrR1#8 zC9-8Sp%mCFS_kn1-KanU9>{y+@?p7DNV)iY6(RG4W&mgrMSxUQIm`^ojN$3(nC$0C zdEA+5iScWfyTra6=L-nF^~F>eIK)#{d4WR5$-&}{AyRp42Gub_WB zc0f{Dg;ZFYuAk1?)h3fkEcuVpC5|O)GOpv^7X1`<~g?kx2p7YBX^AJVcQ6y=#{SzN5$t>-&c zb*wXdMJQy{hRUqK*+TU4u87l2d`1gCIr~5w2z92UyeXdJ@C4G%=!zvL4UVLb#v*@Z zQTc)h7N#M<_Jj--j2CEblR8$nWxjn{ZTsijqcl1#a^L8S(ruuy(H?~o*Nc>`Za3D} z7YD7?Wn%4xHMKwvC=4B3l_H0HFc;qP(e@}R3r#nce{Q;G!DXU+1HD@Yy`_G=y4YT9 zQkr^Ywc77@d)3v}O1IzY=+l*4Da!Q9yI>7y6g)F?{F+Ob&d`R<} zTRWIIo_q@=yMbtVq_z{_${r@<0ez&02~kwZFD^#nIF}`vT8Mesn=mLmqI1oU8-5^+{e zr~shI`->ZHX&ko1Pvj-))gk=y^XXwGbDs4KQVPv-2c8sW|9(^eNn0Tf%Ou4A!zm46 zio1!S4W59qd5XBB+InfAvgv`GfO^D6R+qq*FolmB7a5>{NTn;y&4(1BdDz!riQsZL z9?O*t3zBf?O20$^DEaM5i5f}_$UQdRzI|Ie%>8OW>IagW9?GkQ@ z!YKc(smy-G<(x;l79{S|l&Gc-XZ$MWf>s2>$IZ%ua(N5;k#&CG6un-n{2sb^BLg%# zH?l8cU;-5@j`|Yj8X7XH6~JfCFuzF;m){L9m^MMV9+mT*Th0Sl_Qv zkG@CI&LPh`1!5|1(%X8e2V4a`~W$uxIGc; zHcr`A2Ij|#B)`C+jw%9GjL!8cDgsRA43{aVT9J_TTCdluDW{Q6sJ%wFLy~xtrmFL? zo>NUPW~`cO{?Jfg3VM!pNDHquI=MZ?F*&X0Llqz1IeBrh_2j|s*7@MY+oR3jc7AI7 zzWR~O%d#oO{0iwANMS0a=XL8JS>adTp8j~+T6xtQt?!;({&~FhYS4J{=J7{U4*xlr z%y8_BcJ7VXAi#Ap(zCA3UZy?U7hmFv$X=ITgZ3|r0X(Yum|h(jI{XHSKbWBOM? z_l_U|H)w_mCl&M4D6+BP*O@4>((!^wDt?h0q}#Tiv<6tLpX4LPh>9;_vxBs<5LYEg zkBjvet7XY&0=OfxhpW1iS}wq89CZ`gEmmQ=bUADw%_)haR@@sOU)>ztL%VP|_k3?a zBEODn=&skbi! zH#VRA`qRmGYyInApIm&mR)6#zQQgz?FQ>_G^=Y*1(fo+JaeHljZF_BVu(s0#?qVZ= zd+x%M4BYM3JDobBFE^-NYauE{1C@MB=WcbkOWC&$J%i)<=2GtKlAlM;?eHD-B{X!4 zDD4`ZV|p|iyu?FIhk*l`pYiP(e6=Jg$$CTcU{wcjPtE-a_iANdP08oRmJ!+P6Xj8R1oR@^uqdl?oYy z;@8+9&rZ$}bWXWcgw-Yo1owg%Q`J1xPuQk-jN8C`&Vnp;#?a&MjIN2-zf&bh;I71R zuAPG(1)_-X!b(I>hp2uvS<6KCjBzAOGp!8zhjt{`z$2rE+IOiOsH{y4s-}CPOu>`Q ztm%p_=WK!bEnzBf$8PP%`P?gfh1%_RiLae8W_i_zB( zCYxyjDa9G+UKT%{Ji4adn?iTrmj(8YhwmuxD(Iw+KOq7bz1&Yqy0Hr)d_g~{6)N1~ z&W)kJO><0I3aujVKBT$o3H1KFDCpl#eQI^C`UKbif_753bRYVR{z$U~LXDsPZ-1$} zXdd0NKBvFb3|;%OR#R5%1M{p;_e|Jm&(V(BC{IKgA zGPBX$@626&o`rJaSrhRlaRA@l=ZGllpUv}{t(AkRANSq$0JHGY7m7-y@N0UI*im_%saBl5ymu-^!sqHM3Q`T7Ah)t zkk>RT3rg1fJZ&_PG!UbJvh$Foc4aOSMAY+^3_z}Uow}_r%1a0tjVTUKa5h8T3LKLv zc8CD@T8m|2Cg*m@lI0A5!&J>qwPpjx%Sbj|N*vJYydu{XN*BviS5W1V2?|>`*Ac@V zs&Iw~^QWvFQDc+D_vx>s2NBCCadSGg_XW z;~$s9`U+kY5GRhpDjaWK_i~b5%5@_LtqTEJBGawYrVC!HyR`g)A}}+Qm!5A(K>OW; z;bG(72o32Tc9!b@);#EThD-bP<>yxy8)sNjYAFTn17&AEJ>d+g>NFQyNO>J(+BSXL zYm3Nmt;RCW%<;SNS>t;XCz*}Y!Kk%1q$v(2d5Y$VlZ-${x?~WH7*6i4q9#-YK>9>D zjcMM9@WVw(HbSygBw0Y7B>tH?Sa(RK}A^`c?tHLKVuUOq8`d9b*4=f8Ct54VPi5y_tWEHcMKYy|L*iWLF z(0MMVUYHVvNJV8bmf^^_FxE4QmzZW{o+w%yauBF00q-RyP{b!yYeg=?lp!&Q3!>%H z4D{rJv{7PFl>uW{4PWV22Y~HUtfT;Z#z#8!j6souGWyd)YE$7GQW`MfZuqPeS%*2N zao2{TiDz2vd6-JGuf2+0O9liQ1cFh^%DK||Hu^!Rlx4;1LhA&6wPI~J7D<%j$7G2~ znt75GJitvAEY1lia!@t4txd{@$sZ>=X-kKmh_GS&(T*GD22LH}DI%4UdUWq=A^Xix zfU42x`r_exlz{Y`Kh7>MA0E6tSpIFeN7kmypF|~+_)K**%#r%f`)baEy?3N5j;b4upVXBfMX%DQ<>~ z0lGgWYV({NyZ0%l4g123(%O5Nih22h)(ZsJ&Qj{@)&6|*)hGQ2w;8QEpAui!&T(L? zld>>lPIK*0Bx}9VUaT$ANNcIyTK;XHOtaB=-Y0YGV>7g@!DFr7VxvV{RO)oK7kf3- zSDKJgS*q41G`F)j=zZK3BpnkwfwC>(Lqwfnki$O$yiqjUOZJTXfMI-G3`WCA3|@bd zrsbG1j#Omi-qz;RpYJK~LA8ir*eMJa^cE7omni|Mh(H2FGHx2k4;q}%e9^8HQA9l1 za(l`;o9{J_ zltQVA_1b@hWBdwP{WWWtzn+}`YN3g59NqC3T^X3uLV{OHXqFOhqQboRWDbXf z`3Y9CD~CN=(9*lVu5CW)V^&$!YO~}N?WeNoN{;hY%R9ACyt6<`>FRyi^WRGS=y76(rOI;Mp30YUMQ#TW`CN;Q)w zhC8`6c=Cc;HkUl&3Ehjzavyw20J=ClBpKplU(TALx{qt|KnbF*VnL!m{_PkS613H! zXT_N2!ci5GN4)yUDvdB=zV=ry=vVplRAVChfW)lE;*NRAcQj2T1ZaBmt0eq_>~@!A znSO|Yas#Fo3BcS=CGPIgyF0}nxICiD-0b2RK~jmsiPI32bk&p_aun`KpsrX2(%BIz zJT*L(XUYR)&)cIT>Q0Qw>=#|+1DO@@zfU_^`Q5~Ld5RLhPp^NYwg_xf6okv<$l)Sv z0H9=(5&@lu9m+4NJz{<73&^!1?|(>Rf14&jx{Mia6?5D2YJAMYkekNHdpnykWG_=F zb8^Z(n$3KuFR_?r2mb(nT9-r{Ens2nbr+V&yB=K~y=zcUg2nwY!i^JNcQI5X)mAsQVSE0?IT%os}{v&VZGj(&EQ(_(+kD_Xg0q2 zpA{bYcJsy4@40R9Uykv5h&-JBtKbvRC1SpP-rBi*AOgWQ?mO!B)bY>A8u6@hU z;E=j>wkQLK5WMs1htQ@x_^CnU2Nr>3N7IX&$Bdj41%|pF7Nve>Lyrip25aV*6Egz- z6)@=oHp%Dee|vF_^2_0KASZuvSd>*3&~EG^YETD;Ml1C%&$syDVtjl0C1dm|;?ttQCB)(ysa61iFjj*RBu9F6NM!jb^FEOch1<4Xm!`a%{cdc;E0ISXOH z&w$>lg{L)0MiOzWmYJM7IGF)wju85S%rK^lXlN%FBoFJZE4k!c{t;Wg>}6rAN_{q| zjp$~Uh8*em5Csok(!!ZqeMpq@?OCi$EIP?4qI{{V2qO~$L+GkCdJ9wN!lP3JEUa2k zbDJ3XFEkKKoehmZ%29d-sg|hM7${pGAc84BP2}dpal@=Hje3aj!%I~y zR8EL0S}JzrRWvFFC zQNpVt%CRIIQRJDWGh%8>C;oDV8|O6QI$;4We95Cj!iU+Wm={s__&Bo9Dm=Y0>9A-& zTT!4XBc?S+{0KEBp2tvsVs-Q+Kqp&3p_@BmT6oFAs7VJG*2vK#w97t}$BGCop@D^(7vWoQE;-&^I@Pr) zqb-%|3j(}|m7VzEZmZmOo0aU7pw-)hRG%lL0!}?yU+db;Fn|sY( zr#swl9S+~axA)_@(%g)~{7V$7r%}j9CuebrHR-iFxT@<*I8J(<4tu>V)}$cpY|7W| zFt?Sz-&|sSOGPO> zQN4?i9WW_YUAn=6)f4S+ePeTVQbSO|L&Nbt5SHY6CKxHp5z(=Drkb|=o)>OO3Zt(Q zA+${wXQLeP5e5r{@C-Yr=n+wXkcRAfC!}fCW@TcCXgE|q`w-q)&WM6$R3x#C8~NS# z^bsvVeMQ@w;y@(E9Z*?wbN~Qd?l{u2G%cN-E?lq$k;qoairkH-#hp>@sAgXtUNxd6 z*LIN;kTzWzZmgJq_uUNmOVfli(Nriy@`p-bMpt!7eO~{bRsoLK)+zwWX({<)HO{3p zk>w<+C{b8OxT+m=oD82O4<_T3{fF>sSQ)_~dg5m^wD8?_I2F_&96-?>l4E(4>}}RX zI-r!;)NO$AhS+nX5F}crP7ygWGHbKNUHBhibCZ=kNP0y|4YV>Nm6ib+f|Z;}PSy=0 z)7VGGXH3uGxLUpw#+_V;c&4j}voT>FKgBjGSv8LMI7W%*xC&QqWNmk*BKX(0l3H%P zY*Q26eVpM|d5wlB1x=a5$*GIK`mgd#a~!%PGoz*qS6Qp0`KMjN+&`%tp|YYMp)Rt` zot)Zft7-T=0EPArF1Z$6nAd4hq|&je$71$62wzdduCI|;1s1DT32v;7o6Wv+fmQ*E zD`D~`Er0AWO3Mi{VHZmq`S=9LAKYm7yv8GJ-^h>wNW3-x)+Jp`E|j zU0)KyXpksX$BBg*B(fZ$+@R{QX}51Fm1zRzyKfS#3<_UFZ(FIpZ{?$wc{fFqrf|?g zbIoJy&83=02(r58MsXgidQFNFu#Ok&5t(K0M0VqEF#WPMG%PNGzUS*{r3kJ~_hRt718$%gp%N7S1*uWplR^N!l+xNho;>;`3k4Ac5j zc)AvQAN6$2=xKhPM4Cpk({6s&>!l#AxUzbUTpVU@seZabQ>7DN5%{p8lP7Bv!uo}i zh2ArnjMO3i)Y@d|+#<7=+O}kN2g0eXBYn#Vgo_1}N#vsM>Ra}PyF03#9be?+ff?a_ zGH;jMrOxNi`{k!Iqd|ON*{CZ(Pr6rckp_};>z1-WNcVlPTSzXG0?D}W`O-U^RfX>f zhNtKd%v?@(v;+zcsWDCx1h~;r`TAja-;->!^JMGA(^YXjxe%1W0|y~IOY#aaC8tm) z@tyRTu7dkhCo`Q8d1rU~#bEcv_L>CwU}JhsL&;n_q_P`)Grb^`uWn$VRSQPE5u*2b zaCMNNV2EYsvs5c?ZzOq9mE+Yh+w6&`ydkA!Go=r2Dzz}|S<6zY7c#$-Y++aY8iMCOx~+2fy8 zD2T`t9H=sQP(2tE=IfTFcNQ%9vwd2Gmfws1pA`#t7ic7Uj)_WD>u!Tg$eKEA|~$DD;nq!Du~)e1=U7ja)){17Rh zVIe5hJ-tIxR;!7Tt7c2qjBVxv1Xyp-)WTMz9)WkuW5P#q&z3Y;cCp3YV!P9WVyA&y zz4whi|JV*@$ZWeyc3HpG$8OZpqGq5zpD-C250iY!29%bg&sLeKaugF%D-lwKO_0T< z0$Cr(x{gvG%Mt-bPep8@|0s|bVKdi?=8~D-ss~!ih$o$Ie5}wo{-Q&fIzckf!jteU zan3O&J0dpaEF!c73%zCyY5w8e{h83ue)Gic4J^s=qni(=t zR0UQs5Bx?WL1N}5Ne?3cH@bQV#36CX zo|AOZu!P8)$;FYp2V?q!(VE;jQZ8x}3*7(@{(3zHPRX=pA?4g=Z=d6I_fI5s6VNL}D< z`EFH?UnqmteCcLg@zjS;a6F`XqU7`+=w4;F9-$x@{TN?LVo|}XjPSjBBT5LFMlo=( zs1zFtL!GMh`oJiH@N?~@XkcGRI zuU09+>_(LMtk={pQZ<_|=$t-7ah4WOH};>6-u>C#YW=bL=Z~XTi@(2#l<{90J)93+ zWb$sUUH>~#rNnwnrIAchwsjvDT8|MCTw-e>@w(Kh3<(YoFQg>!iF1vxQ$9ty+8`>@ znwBo=^T89`tyujCnqW|_lk=&Q5XK2hyaS_`&iWw~?T{XNDzqx?N@F#UC?h$*o}3(^ zyBMr~{b~R4PGFEhsF`7+$;diFltW^ZUZ}T|yh(pE39mNzQsjq~>C4HUbuTr}dLQGY zcEIh7n}=nLx(D`PLpi0cqwro#9u$cLMA7NQOM!rX&0HAI)5g&~Av^|G3SC~roJCs! zoYoOr6d{}>s${@y5vz~|TN_g)^2xYKAh9SR77aJ^yfYRANfjf98VZ5`nLvN{C~GvA zydy`oppTaTN}$mGWrD$2Zg5-_t7+>Fpo84$iP(g;B?27FY%Q@&<{7L0rBDl_{q zoB!6SkLb>}SpPSgtksY`^C) z#+iCBOul#YUYC$+v{F)jozU4>*(5yftBsIuY@s!N1^3dvb!&_lh!D2*L+OgI2FMk% zUSDEeS4B(IK))xA#{|UAtMqz)Q=C^r5z?cuBF7Eq(YcQ0d(b2a6BZ*xPqlkQS)?qKB2@s|}@#Djw9FuXvt|tUko`u!?5vus96$k8hAb zDlGp;EDMy`r360J8ZqK2@@{+#4EU~(pF=eqUyjD7BL#cytZWv#u*8V8noCR79@MA$ zU)%1e6f2n!*93*FwYeyUEI*N0!?ihi zF0RRaaNtnVLO|-2d*_~@DHiJ;yzS0JmRgICRX%%jmyE>k^6xJH6{{PMsjOXnw%REM+x=($A%f5Qn_HVdKihh-Q`zCUey&9p@2Qd(RZ1#p zV*k9^f3~*sygyj;ZyS<;d8GJ-t|UkaN5^Fjp=3;nURZ_jJX9|ZtC2Yg_gAbiL9;qJ{JaZ6GGE&tVZhW^gc(UpLJuLO{$dYMlr~9;U+XV7UQQCo%4&M7o8W9O)FQ6Ddz90r$gES7%IwYi zY!k5+C$Y53>AUWNN-_js*Ru&y%3`_XXD|9#%^#T{|=8K0A{x;o9YAF+!ZKD4{6*|MJS1SzJ$c4{;yzDe5a1br9Y05 z$^dLu%s~1IxQ0g-^NYMoNTIGR025QxXV~~8D=YIEvtwMRhlZcg$GOI+^**Ipe(V!b zL^*s^jd6&lC@-Ez@Wt~_YWwVwk|jWu^>s0Ko=zU*radek<%^bR1mxYt}33bt(Ap$Z=DKyiMI5Ksmjx&*ar0zAFrTgb-N$jij=XbtpI$Q^$^~Q)AeJ) zyX6eG;meFTH)t*O`Tw9=Zwx5A)?KIOFfN2@Z?KA=c74!n5;%L}lF?EB1H)K@bS;n) zs()Q9)jIsJGMx;YRX!xJtQh(xq7&*hy@e>w-&XVaGkReIw_A#bcmQtleO+UX5z~Hf zw(s#e?jq|&`mXp8K^Q3!C<54EqC^W)>I;t~yu@l2>@!8&$Uqdy4wOyYe~q=D0*SB! zi7^K^(I-@QRO~wh8B80FsY6|JObGE0RIZBefumGdd61z#YUGh@ zc8`^j5ImMuK|YzCIzUJ@-L{q?M`VP5os$8i6d+gre@hcBP3+f|qIE=CA<_vfFiPZ) zWrm`(FRyTQ_Fe4`yAEZI$!_DbBXrc_yW*Q~lrX1X{u+;B{C9-da7|&GX$OLnU)Jb$9_K*}L7vC$KouXEBV=lj-p=1m{PYg)!rsb0 z!Ce-m?k8G|Ede3%sY3!`F<=Zfz~tbzMV575yMO{SOg-w7HxW@3G6HFMdNigrDl?L{ z>9yMUK@}dt0xY%j`8VHaze8LE^ftKjPNJ!ih>|-_>RXi*onLdclDiu4$LM zYz*}XJ1J2+DwJX;nI$N_8I_@ukj-IZ2^P|Vk)dC(4!|?DbRown%cH1{7CEg!Xf@Gd z0~1Dy#PvxfL5NYXD3j!LBhQzT&n9cPgGgv;G*b!<08kU?)T%?^qW<&+;R*+T)q5IC zvKYd3&W9v0P#z@!5Kl4!Z{?^nJZ(Fc(!FggIyUlP+R;dM2$hrR3B4L&q7&7Cb`yk$ zGikb}ghhuWE<_y@N;TA2ldE9-pCEa@5BW9}-+V`$vo)vj+|8JKb60mXfkyjFr4y=N z5cfIe2ZK*XCq7zaRmt|bLP!|iwYZor;fAg1n2Gj87IiyhE#rJqCu0DIBIxS*HJ(7R z*io)xYMlh26zDtKEte0ext*JamX>O}Yf>>H)Se(BLMHSqJ8y+_A~_<%{OEl;|7>E9 zwi2QUJg9e~PE0@fo;Q7Qc|Gq5BB*%!NYC?BVF~9ED!bsc0qNZAY*hS7umIJ*_Fp@b zD{PHbqYnii73eVC4n_fF&$o6qUJ;BzM0mQtCL`(y6L&X!NQnM_RdNy^&*{5!NTC?9 zk_idhCz%5eGnX~umK2=V>O8EgoX?k}MLmsiH(?X!WSJZl-^NVKlWA@br1(_zTkFiZ z{mjE6Yg%FL5i=AroXvOca}1aR#FBnrMr70(rh0HT(IsoQvLKOk}KfmSBI3jLH{uE4H5jJs%kH=Tn0g?k#ron#nK z!O&bD9SuxVIR`mX3fmQDmJgJ1DbLy`zLRx`Y+n`&RUpNf5z0q>&Pi z#SNV@ra;VLFLZ>Xhk-nW`b{KaV#(331f)d+AqQ3<{)m(x2@KqHcMc9xh|8Y&xJCQN z6rjYuwNJU@q3#4l()5mQTWRrdSk@5An0pY5uXCuCGCO)wB-0Ybsj^YrxG*B1e}+zm zX(~)8Vg66>rXC1s905wPTXuvEbo83!Yj+b&@dAKKZ~ zei^G;>PW1Ul( zr&LV^MDe%YMG+=-5jC^c?BdNj+qe{UDggo(!-rKbN{)ydbv?wLieUVb+=bT zTES;rdoA}39C4XcfU{xkqFK8g=NWOp5e-$Zb-T@v z>BWAwNwQ?E-sxhG|HSI1=K2RfGeg>@hMFv!vTL{nQ15SFc9~NLa;f^U0CvB4k9Xt% zE{FzljWXzh7(g1<;G|#2y^pIdlj+wh_y1l{r<9)| zWi1K^~dm3CE-k0VkFG zVs;0Hn#h;pszlY3GvrM9n^?~-kI7w<9!Nm)J5H8}z%&ut6iGG*UM)`E&I(Npp*k!? z+VY?;V8c`r95ktvgDLq(Vh0TBuTinfIZF}a6e3uv_myfnXfw_Ql;hU5e3Mp3-P*l9 zt!`Fy6#UNKRmy5AXS95azC7Hxy}IM@zfC; zS<%c2q|j0W774m)qCRBkqy#CUOTn`w6h`(Hs|a0#H%mB)DM05D>Tnkvo!dN!SgB@g zOeB$6wTX=-0xSoZ0y#WeC^LWrflJb;Lw8ONRcC^yb);9hdLPuw=8G5*BqEtU`mt&w z(mo=eESSzPSIuD2N)%!N@V>+uAD|gZ*+HZnk)DGsNEQHRFVd$~s-a|3wh%pr)%-Kh zuDNpi)ANG|piZnOeQ!ezqN;X$Fp~Gk5^x9}!)w}d8YoV1Nhy;H@?KnBpdr9Z?e7C9 zW|5u9p z%SdVE-?u}r&E3|FC4mT0{xBPXq}?zG=fe#~bIn^bM%x*NNx@@66YanvR}~;DG*xGw zu7-V3ig;u!KAoiUO{qTVX1J45GSLO)gRXKS=ITK0kR=f5C5ZQ<3b~|I>wjUlqwVB5 zX%lzu3gVny4osz)udGhoTGuRBx*e#N9xb)I6mh-_n1Z&@_|w6%hPMRUY0~MFO$6Gj zOe8vOyOt}oaZ;cZ>BCS$D_IvPZ>D=w5MpbZgmzxy3911JJ_zUREfnKQ1sB7L;B`c} z8#%JCwO{cEHtie;Z+_vJdWNbf>6~ttT}&~swpYjzw&z$o$C}{E!#t6!pR7b`hTNMU zi0>#xwFgLVl~p`W6d6ypQ%cUgRR>z2&x&<>MvzgmI-@YQ0narj^w@0SR6Rdym8Y&f z;7g5KjR(IvypmTl-iE@9>WiogMkJ_-PtEJDbMlS2$&>&#Be_yITn(J8Sbl-z`qJ`U z@!g}F>%;2Oqu(F>c=g?&{avqTaZi0+=GL%0wSZgoTSq*6EK$H}%tysqS`9k(Vv&gX z4yj1QUQiB%*b9X%VG5Xw0?UHv7mKbG|E3}ug*uqxqgz#Hm`^QfMr2G&YEze^Tf-wo zEt8KRxuoa!=Bg5Mo(1y}Y=Pj%UY~>A#}V}u+jN1{x|>h#n1`erp|6o|C=@H4kojJT5i@UFa1AgAK4V4>Mr66)F-)T) z3eQKmdJn_e2V2k8XHg{zBOL0k`j(W&Wk*u^oY;m|bZ4?sop>z7s^9m?05>(Fx}`bj zS||x*q8TVh@mgdHao)$`9wEuDzA=G9M0|5uR3tB)8MO+frx{abCb&0B1CYd|Ee+3g zOISPcHe)pr&M7Od&EV^ zxq8e%x??&c{V)CJ`RIzPlIXoIIX_YXM~(p@z3_mYigGxC79xjsgr{kEbi@Q(Kc->I zb_ufC=Vl5)PyC*NsVb=&UC*Rt>G)XXWbx!y#0t~EG8~hEr8dT~BGG&M4Cm+yad*Ok zaE9avB^*-TY%W9~j7?i2RwY_KT+%LrBM-wfBi!gv!bhi1IXM?1kLxAGwYk_wigd`9 zIH)}4PyNk}ohNInQ(G92qoIB0=`y~^-U2!28|?^8h3L~@B5FDVBomeZOjt z%^A-bfn;i_B}zcC&pQ(Ab_J@mG96Hm1$LqzUPl^=;!!i^^@B%aDHrXG%gst`RlxbA z`@_w`B!9q0-@+M^hdlc&i;Z-+(mU-_Fao#;HcDnS@PPwOMVai$8vVgN%$en^4N(VM zM8*=O9vbbrVd&V-IvfuVRqF&imD)XrbW`WNF=^MDow6G*T~@e+ax?qXZhkdO~l>bP_g!k?bEt!-PGnntd8JEbkRwSGcg*^E)Q5%t~;=g-!WZqrzzRNms*51f5lUb7terwg58A3LydS1NVSICfoHHQbyc1RZz)nf9N7M z=MGNsNZjOim@g$ynK3g&m=MxTgtAiotB(Id(W{8>;L zu|@>(sZx2bul^j7GEOTUjQzyLQF^g>NqOx*DR6wh^5gbSp;9P#YB~+F8Fn5W6x*ZU zE+EAiR8OfyT*J_lU%=K_`Ef`+?%|{2&*AGwRE6U)vixh!-qL-dt^a()yqjdtk)K~} zHK>7F?NH42JsZexuVHB@saR=W52G&p4!@^XlJ$<_UF&wEeL*GM?;eo_G-+r{y2h_R za>Q5Ptu?M?^kCBE$&9z!IX+npcN?eQikq z_Gjjid4q$yxx&D4pC+K$y3tb4JEbcv6*T+Zy-(s6wpOsd=+m9*T@JAPo;n?=#ncfp z@Xen5mk+?cArC#U`L3$Gd=(2MeL%Dhb>fQV1A5q|bD2g(`z%Ativ?|6LCzEPrp|jR ze`2AXr=<09^P?Lq2&c)%w8xsCeRlc>M5pXMIK!+$m#p#C{sXP)ApWiG|K({9-!hZ~ zZN}_dF)h$K5e0u}Yq(HD>xW389AW_{4kj@gcW!YzMlaJlNy5y;1|7x+gHRKt00U^k zuExkQh=W@ztu(fIg`4Z&Y*Jij(E);vuOJq+G)`6vU={So=~W`;?l5R7eSl zVXSabd6*x*M$szixkl;{i)QHkYqklV@m!?WQZA!Bl6_myxM z{8kUTPf8j2WP-{H^^G@Y4~f9*Xs;5!o+8JmrEofldeVv{k}A@#TqnkLD* zh}cOObP&$yk~5hS*#;{PPo@J)dzntKD7M!qMzmQV@P@%c^gkYuIu%(MQx74cM;|?{ zTgz3RhXZCxz(y@Wz7RXnhL3LWxnaVIEg|EhPtvLBMm@=3@6Bn%krOzXN}Q4F;+{I0D($4BbSuL!?=v>-o5}aAx6MuJUrO%Q3cgmB20Tm zA!$|yWEXTRlqKCgso_Sf{l|iY9N*Wg5!_I%zlb~C)rsc1ia5D)yO!(+_N_)z4I5uH zB~c90h;jz)kf*(3#mC5b!y3XHgq^?{P{8Ep6xxy`&OjN9Oj-`9QinC#hhW=J9^?pl zWAMoD3TsA28`8S*9H6EMMrS7nPEJEj)%9?(r2l;XsP7=s-j!VYpWs&t&q26xT+2jh z^1&}O?za$*CI>J^KjbP+-dbop)DyOa+Q7vQr6n0VC?Wy1!D}PpqN}Rn91{KvBww9$ zjR>r~p#YR%=I>-a!%Kyx>o^?+2?psQYENT*V4mMJSwR6qYsGO^8U5)i@j(H$&G`4(~kjEqqPIXD2`71kyo$8 zdukY@nAEsLvK1y*ae`!-4yf^UK#I4L31-5XxwJ$g>QzObDL{)c!RV8tWBYr<7K-rW zOigR5$5@`C5o9qiloeX=Q2tmLp)Do^eS=n_K9r^qjrDunW5Up6so}1HgEA9`S8U<` zC9O~ZlZ#bq0s5R&K>-dx?t!I1DjTi?(o*}Ccc`t&-HwwVWYnPnBC3k{jPH0;0M3Pc zZP^1GaL2O@?xibqb*X3kOXKfaro*p&SxML{MSGA8*hAmHBfRKswjvu7w~CS^LMN2a~8do(i@tpEnzE!zeT!&6XCRb9aiy!Z>>(^*YcYZ-ZPm)n{Yn8?HW zc!nVXAEkZ=#)}pZ-3KJ>xz0=&Y_i=U;(L8KvXx-gaXf2PaWwfw`6_~Fo!O!z66>tX zjpCkf%e{mshW-q2tg_=t|BSYmWDK%#*5+TA`sg5 zofNeiS4MJ8bMNJ{ykTvmUh%BdpbMpf@NksWX|4;U~d(k*KZ58l@-R-qcm&=l2T z|JSs*Tw7hO^|zn>OaaWN6Xz<;>gv6R9lA2hx%wp`!V4PuK2AH$Q>>w6Z|-jQ2fJI_ z#fzQ(#?E$iog#x&n0ta%hPv+y#kW&yTAp3dtxCuzTP$F!5DTEIi(-Dvppx6(mpH*t z-kL|1ukO6q96ass>};%WtgVv4IW6_6g}rza^Y0}?lf*JDydX-JGUFc*TMAkpYl zMbAhP-`#M!GRuK0L86ew_Gyo}vt9hKySq*Oiy>ydVs)ioq2R2j>W++DA_L)7o5Y5$~qeG)QR3NcBQ8ki%ZQ`yF!VPDmD456cOlF4g&iK z8X7MnYaJZah!1#IqnXmoSCqpoKL<2l1j+Yw>7hf8$%i~WKY2}x8CYL-IGG?kX={xp zp#%@>E|Jyz{4~-O()=usPp=BaIF}PHm$TiD&7TU5&zZlHsU&8omfss8L@+$zIHjl+ zq*wWh7{HM#*-Mc_QnS}98|3Gd?e_X=du^q?LNcf;zRu{bGf}cUNwJvq9!+9;sOOF8 zCyQ@CI?l{(TI+S!291?wwclNB(xGNuiJ0|vb*V{HI8^>dhYmGU0INJXQC$fNs31Tz z>b8JjB4|PsC2c=!lXJ-Tg$)^xsO&gr#K@X7)-tJu!$ayZ9R#CDN-m;@6w%Tg72$lQ z{0ZtIqe1oQVAqu84r?#kDzWLQ)1(-7h~wj2J~etUhRlVj(8`{o;Vl{Z&=^SEJ-fq- zg)7Td2uus*v5CLsqmy=J4_l4u($Re2>oW#HKc!~@XN_f3g#ym4W~zWdQe6-X9lVbn z(z+U5@#~mPny1(2U{E2lW-$}#+}j>X9?T4rwoBcl~%>FmGg=0dQsf5 z0hMKlJu15rX-~-o5nhqhm5|{j@OJ*H({LAZPE^^h_L?&>gA(@2cHSXH9NZR&iZ#_iXM>@~xh#RqB7Vh;p5SU1U4bdt^dXCWy>dg$x5v?wS5(}!*F2hk{GxTFJZPrVT;X}M!4ivUAgCM{_$qoqQja=d&8ey-{AW@R> z-a?^}8o9@jaEL`qRY#H=Muoxv-S@?sDqUM0Cpr;uwW1@QcQ@*P zD|aoGJjp9c(VPmxXVjZ>0rp&^GY|#$NFeOjkbka^{N9*m-29W2fkY&2x-?z6liKQl zuNi^FSuOseQ?T*#B8x&0Md&`}5Tm!0V`04vf+@~g=8Mc*VErA|?qr;;TRgGUH_wl-*sKZ6N9@{@Vw(*PDMuX)$aH zh)da~>d*!-N;DMKwt8V=YKJdG?tDy7q(1ak6m|;#9JmuCgIE1@Y4l{2pTqve9h)o@ zkF02etZRw^k`rF&&cG?c^-zAElK)?jBPjNCHvCNlh}JQVc-8Z|fj~g@(p)hcJF(Iw zuLuHgQl=Q=i$KxBD z=KLwyk~m~u+ctIfPF82j%Q$hT|Dc1C%X~&djMap!lQ$+RxHViV`u~{ldp?og6Op*ibe?1k|j@2d}I6bG3y^GRH`~f zDpZPm*JwXPWof!HUib4A%-KXsrdlrV)>IdcTaqn5*$QRH#sDbe+z>+(u3v=!O&V_FBb7t)XmA`J-Z zFiJ00{qK-#<9<3CLmmb<6f|i`C2Tab%+9!05VtODWP-4!YUs%upe-W@#hPL7P#8Oj z#fGJ|@?{8XO&(&J1Es7`Iy=HLW$+fgd@T=ZRvwUqaFF6NqAI%qiMbW2&)9+6)qUKkDXAZv>= z?Zx*6=I|)8t5wL%zI?C<0ykLX6nVYk>`fMhJ6nWNrx1dpGTud)bp|JmC6duNF>Je$ zq{nbPO24%Q*~9JqrCo;s2v?D25-dOxkMSb;g_s8MPMdXcZc5Lg{bSdDw0}?0l(xdI??yXg#cV zis#Qlry!;R;|DY)$qo|+2dBxYKK8_t)};8+EK`JOI5Y+rrbszW_>iCCNk5_Lx)0)~ofj)|tVe#VhDZ-n1;xg11bAmel$we8Vk*;{jXJV; zpl8b`yWw?&$;ccSBT!1{CZ!aznO;>ez=mD7FhiL}oH-Dj*UW+_41#88>>!3A9|x@I z@Wvf`?f%3nim_f_6czYX8O@Bc718p_G8xO3i?d6C%!>U%IYN+U6#!9z6=OJ^xG|g! zDT!pS;iYDvcCiYl?;}yb6m4ix3Q_FJ{g88>4?`ulE1eSPye(F0&SbzkEjuw6&u4o4FzT;NG7pFq0Mwi#e5fm!rVh6npyEMuLCD5aa zOZ)Sci|-z7>}*YfLcbd{G|#V(FV6oYF7$Ntry@f=_wr=oTbWcx1*Ja5qzIk16^77d zVseZZk0k^b3w`Gt8Oh|`s7MZU^{dOvu>>E7E%&~@74YFKewB|U%&XZ^XqT_A9Ziq+~$>J z>wY#P{0q((H2YSUYzZJS5uhyD1Sg3y2T7!?p-zVaB)~x&O_0eh+VUG26d64+zz99L#8t^%7leZGAE!}H^ft=`!}_u2l%$2sk_vgdz8l&U7fEY<2# zja*+mDmALCUYliRx8A4YByizcpZcBKjcw4UGrQ&1PQTf#&1_F^@3wE>OtHeNXRkV^ z;F^~f4p%=f4z`XDr`xZd>}}STS_d+c>v{xtLU)NB{hxk8$0Yj40!5OxC((vWXjAi3(#Zig@$-#9UI^84n&ueMWH<{KB*( zjslvU8WssBYZgIgsbA&&jDm|p>tmhgwoGd+B|kB!nqr|DI`2WA*|6@S&6SjEEA29c zXe(i+^bt2dUk1e^W{X27p$F~hE#t8%#&f|Ghn?U)p{f_ZlMxjD5&}iekRqyyZL|_* z4hCOzeh?25RwZL9Sw>RC^&9vi%DNPDULoLW@|a0h!d3vOIM_c3uZI#`ah8HqjPw+o z!tiK8xxA|gol^daUKQQITYAl@n~Q2~k>|H1>j9?iFH59_W1B^|lpO+1E`FddpyHdz zHTXTogsMZ_;&7!>ftcV;4+yo#GBczH0VSUn>2XLGM|+-uHlQxJ&$(1Sq*J8Q6C>0Pe} z@M`e<&#kpj7v1KIdi&W_qkmX?Hs87HyK=`gw`c1#i|rBqSBKkHvt6ytG-r3j?98c7 zPs!_(=~J|MRbN^<$k3NIzSFMFHtA(pqlWVI?XH{e+|n33aMPM=Qwk-ZQhRq!DNW4o zo0f$m${192H_zzEfQGOGVD*<296E&8-z~f_V5=~$4*fS@^%&?Okd@(Intf0h$nwUb{6T=B;uq`*U+*A z{IEt<#L29|t!=KCD8?+^FD*E9lVW%$ermXSFvj@R+kpGywXIi`gCLD z(`l^9-M(8ws#QtS2K2;<(V(bS~1tWTHb2Bu77;3_2w6t&QjS&!g#A;^*3e+Jrm35U-w`;XNY^HfCmu;3 zP7yj5zb>_vZ%YGmvSWY|P9moMa_PmZm6uDKZ@CDHVEWBtkM+tSkd!p5tY z9r}{|q-=2bB;gJFxE(*lgYHlodT1*23T+7F07~fO;0qia>6f$UMz`Wbup?)ri4O2m z0tjZgx43W$FY14*nlgKU4LA*X+!SCv8KzV%_qR*cwwyUa6S)TBcQh-1(uYttLH_TT z9x=z<*aUZL$?jC}6;}?gCq2ECT8z#Rm8T=H3=JjhFc5|bGluJBQJd{f8*o>rQfp9* zr6Si11>YNU6jM3qRh|k!HmIBhlSczS`EpJ9-QI5Zrn~)Wx!3DXmwVeJJyqK?-Eyrv zGt-`J%=C9!+t;^SD4Z9oy`96WXR|xyS5KcFeAwoX&E5GY^XrZ3?x+3FXB*YeufJSO zUp(1ZdvS|OT<=d;ciW)Csx$Rod8gN{mv@`n+vV*B!*rY7Y7bF!?WmDu-@oHAQPZ30 z)#*RpE_ZikNFr;__RBL>wou*K?f0v_9jd(E*s&zdbZx5Ip2F;Dl_*98nn&iokGT}b zoXvd~yNA|9a{f3JSygD5R%$~!%Brl&G>gxreFg`}>`c$UfASFssVpG!a92-76XK1&wc)oE;KD_6IVCb>b0T27+D@JnPL11v)dVbZmW z7+sPV#S|u74U*R;Mwrn2k!9leDzX9f2tb)7vRFF~X;v)5-CStcA;6+BQ|QPBHX_nq{oKD5J_@_2!-8;^|P7TdyP? zn5ll6;FnV6#xO+E6c{b<{pTbxe)g9N6dqM&T>s&`pF)~kNQF3)Fj4vyC#p%53{&Pu z3Opokpk+9&yGw|JxI?NQJqa#PUE;6$lcI|N#DuIzo;b%X_MuQnphp~Ra)B-Z>j_^e zcfmj8m{N7xa6jpmFvM}x42u;inyTK9aS@w};%ebpKuY=wA(<25q5wwMm5~7bOAJOS zwC zSwkX^0yGJgD!cnc$8wRUVY= zFe2-}yMG#3+tSYGbF^LJyyZPa$1UDMDgZJS8HJxBa3$l|h$K98Kvi)Ts+ZCCBzAPR z_YcU~DXkH~J1K8+IFGu=14^C86nAPn;gbA{wxfLUa9wBey=D`qaFfhHy5lH*h51Lx zbxP!6d6Fki#r0c217jg8?UirgY}5bKV5mNg8Z!sq1aFHvOGQt)Z)N6Qi*BXq=z(NI z7vJK{w~usP7Oo%q~)d|0Me`DH9F`f2E+o2A2J#B|>?r)-V;fpU%H>q`? z=DE-V-FM0?mnzM-J3R^&1|~Eg?^F!Tf=nbGYH7Z{Frt&_l&8#03|j-8L0zgDB!4uX zsb01o*jret_l_|>9cuwPICXBY_0A1n;pdRKm=;IqPsQ$sY>q+))! zFl-#2M)p^5(cj3Q!E)p|=9(bGPzSy?_$zE2I2J|@bbj-R^{jniR8UbE?_w`(3K(Rm zb9P=T%_@Nkn}VZ7+4~MB6sqG$Kl1PBNJ^;Hq-UFkwg$zY>082)UIUQS7y7lhblhtR{=KZT@$7}odTicso9)CHRsrR1_ zUSE7U=qxULIJs%uq<)Ap;^mk*>VAPP$>g~V<9m7Q^}jjQWmZIlr7hBlpwGhw845R? zSdUOmE^fV){A77-uX&qp9cS)W`_e93fXQfr8c9N_L6@#H- z+Wx0B?QpJPWNn!Ik<=R42*8|_bR%vO%!kns;QXDOQ+y$KZ^r7D61AsD zu7OZE1i;w)W^p#q10HKh@C7OuciOvs|g5R+wCE`dp_kK@0fYiQ}|*4iqBcR?0{0u{#Z40g_` z$xcrVF8$R@I&D7s_L|NP&~de}@x@FHhaSjw_RF54T+1}IX=g@$TTx!@uQ!tVpuNL$ zIIqL$2%sYfG!z{%;Af;tR-kQZ~+t-jA5}u^#5Ft{*^fBq+Jd&|BEllDw~{|G^B3QADTkT$)CLT zxymHfO1H2;S*Hh~;-FGYqSqV7%k9gGDid&40&s-OIr^u!t=4mdt2s;$A-6w zTQ~!4&JfJFi8+Hcu4}UG^J;TxeQ8U&AntE_tb%82qM>%?Jez;lhxFvnDq=4NV3;7e z@6y!pw5P6pBuWElY`iH1X_dQj>xFZsmLv)c`+)Q&h?J~2w84Jl=1A6{9)q~9ZafYz zP7*+GR5gg7GC&c2W`mYLcKOH_XEMffqFDYCKRPC8l*%EIOmrv|sVJF|(4VyaoV*g; z1Y`)H^`9VvO;vFu?yXgE1(yG&VPsB7(hw84ZS*qodcV2=#?jeB`Uq*XYgI1dn7DGi zx#&DW(A0)C}4yJP!jFfcy>t2_h&;VQcjnubcYy(+BcI>*kv zgpWD4)`7J6Tp}=>GImpvlyIRuOx&9()6NH7<7kMbWo(tb-UVTpb zMjSR2@;X<=N#UjVg@{E@C|)bCmJHg9va(~$t*Oz)@` z1Yox^{Pf?jIbY*^KK(c-t?KPcP)f-o6q{5UVY)~!)$sZ zs)f$;?#{=(&+n_RpY@tst1lO~KOb(LeA)eYHM_sJv$gtV{>8hCe)IA6+RNX|FJCRM z-n6X7Y|wwjfT9T$n5g`xIRF(Qpt+u}X+9_yr|H%q+E8J^TW#==JRWv7aX?HK;wiw1V+R2c&~;8q8*{?QsAQEMH9O3FXq+U(`-Tr7*R zbSwfpsNs|b=3V=ia(&y^XuhtN5v1jFWo!D;_ND5+LOP&(bGsr1s#tw^$deGc$26I` zu+4i2+{21LL3%o1XUk32ta?yUs$`%T6y7_E0znc;a(`M8t9v}V!~5Z%?Fl(NtMz(C`$Jeh>sLpT|%7dCZSY{L1=>;QO1uW zA1iUT-RDLQU?hUk#|Z40;|nI{S39(R7$+@PI=8T-IbwE@-*1t&4yzpFrF{4HM=90w z7Om=QKjIr>nt*+L;tZnZ>%Y9Im;4L-SvQ?Rx3@Z#N64Wsw5ICAYL&Dt`BkfbU46Rd z5lYi2=Jc&rr*{5-#U=lg!yQQhmL{E|e(&t)lhj~a`M%hNL*a%yn|p?l0Z z!BWKAk8stP+QX-pI;6N(W~S@>UvsW|dSqS115xR1aYo@XhHBjysEB*bZ*Ekg-6zhc z+6?s{+I7Ng?O6ff&-X9~`jx@)K?PN~XUp5l4*vOt`RP`@Q!URoC~i%T%zU}CRG%)- z6QrANF36`fJ$G<;P}w~giLxo^H9A|1@D+Hx*;f6|o~YkEleJOJZ6tU&GEa@;`T9Ik zSfCtod1iuopcpJr*y~~Gci?h+12@3VaGlcRmfIc6DpHYK35;Y6iG$<0bFBbw&fec} zLiJ9;Tnh}!dpYkHDw9|-onYj#H{_%}P4l<6{VsXy;>Fm{=HB95tOEzBygS)mQ|CF{ z5<6fxWfcxiZC7TM@LBgtSXNrXNtsiIF{Zf9`8_x}dL5Ip7!5sA(_e}eGC)p~1d@bF z=4v*>T{6=eE`5Ce1@@gEZOIU2K-Q>r3iE>z1aFg%P9X*qN=z`%(4}Ug%Jg9~*_1_| z?ojBdzt^9zPK2T<*MK>tw*pTlhv?EcigPM~u{(|!1S|0RB($yJ$TkPQK{tgwdrSx{ zGe8V(wJbYU!)yB156VT!mvh++Pn$FIU!n zlNoHaP)$NLZdTJKU!8zH;r1px(@1`T{G-U&Np>Qs03ivdn%CuNIYlWXoHeSKobz*f;F8&FPJ z3>JO6~&Vg3JK;*ua+u^Dp zmPLsoKB)w47KFqP;*$46cv*_88mNr{<&j1E9@$%?R|u*qFlJKFKMQ}2Gg$&zE;lq- za?hxWzH{hwH%4+N@+}TXyjwMVpfp#^627IWl8;R z6s-Ya9*>>8|I(89F}j%oi?h`HI^P7i(_a7`l$KDac+y867Hox z5#NI`5|(3{sQ61hnk>Sa2%iY?u4)Zm@I0xFFVgUk&sH`?B7CylZqAmg6ZclJV5kuI zlkQnAsnB^@Zi{CTI;A$x1E9qTMG;8`ISU=R}m?$sM-{gi4$6gvQuLx zLf(-*fmE8#uPgwRcHhBjvbJh32d@P3guDWYX4sSYFlBX)C5)nobfzkqo*V)P$!mf) zaoQL+wgK%DhW4R)8GR-V9k@}RP8w8Q2Nn&~pHpThEH4FjSw)dk3bOs8`zcyw>nVx! zpz0ySE*nUsUHZB8Y3^OR_dU-4ZJI8)b7{ZA|<`pScJK0z6})~4|ACXrMO2d2B~&*+I2aOQHO2v zk`@~9e=D><;`yio)zWv@zSO~`J#vr=PeG1UK-$&1V#CI!O@Bu%o_XO6C|KyBAB|2l zmuAVH)a7$3mr@3dt{>EftT#wVlhyGRTOdH4qJ#kVix!gGXXqQcW*;~|N;SDi$!bzf zN3feJNV6J6Zfez;yJ~Wc)D0RpAV{oQt}QRQ%xfDfq1e<9k8YWYqCAaugYsX^X5%kR z^}{2I{Isg|&O8X8C?osz@xOB`V|u@*>NH!GCV91#1siUKQc-fcCGbF@z*A|~x2vv{ z{DYu5Gu#ESEd7qaM;}$y^++vx8`MFoBb#(hh%oy-;r04)Ey}1cO8@xm;M`@G`||v& z9-{SnGecx9^qG})SP9_>%i$Qh@BlE5fyzYRU=3M=2;V~JZT?=G8^*XM#V`Lx%$rCf z3Wm$X(mMMLtfML)^C4I;K4kl>qzV&?i+ClQvR-Q45LG39sq&fHE|7fbJJ;iOlDmPZ zPD;*T!h9EZV_;#^l2E0MD`4_S^c2Jz$Zjez0|Ofx1%05xD#xnnq$q1adGUFNR>Uai zhP<%YLHZ%&k512{n*Z~S=bTBLDFf-QBD|Hq?=!!^3TI|V9|`!nn5FeWW}}KY_W8hL z)U=r47;&8Wu=CCaE=t4)N97iaP~w}^Nl44Hg)5H339_+n6AMkst=xJR!U!*yXw1$c z1{17H(vHg9HZ63|5fYA=Aoxs3mpwT`i1SV&#ErEI1uVeHIDjqEuZN>f{CUFb01FVG zv|4dGsFchIOo^YG$C3I%Pb#Y6n8$sGXJy?}U|@TSM`JV2jZb$cV|6s_YmD_Dn;S2; zDBQcXw7$8rvHqX(+V#sRq6LekhpN4r*LW+9s9FtDj%MsMsa2_xT}#>M`?^q{5 z-E-WB6@r$PQ%Z^PFBbj7qrB3CFN04P^WC#QcRs#;@~+#eZSB1KQm?;1-uO7@TOO-a zAfK66S|dleo>n^FemnpCZCYu6asBG$_Q~hwS62ELPIZirr?o!rwVpgKPnTc+@%#4T zpYMKey_u%3)T^0=tv5HXpD2F4gP2gFGmnwptv#qT!{s11IC z_VegsFvyN7)qa*ENEPq(@$&QxKxw^&X;Ab+O;c}@>Mj6Xx+>dW+9ZI{J^xZft(5X~ z4_VTqz(~J0b$;NEw2H)OQRs53PoA&B22qg3E3FUO^9v`A@D|Fkilk^De=Hy#(YPY` zQn(*7k}_0M@nRzaSgQG3g4rMqG*Yfc33tea9qCY_RdhC2DV%{~h(U#+suHS}h9^dl zz+@x;Me#t359pnp4dj&qsDP3Su4f)cHuGW7tH!N-1)otjv2`TL5PIsF%P-X&h6Svx zY(32A#{IoY4*^LLHBq)PgBpAadu(c_)|+Wh@6>mvyE|S~=V%z0jOxQMOC>dl$3`I+ z_&J2EE>`?0K@}YH;2gX&R`fM5_btEEY5WU;oV9-f$9co^EflaB^v$9sQ5Rt`RiKpf zJGk`sXuaP7JDylXUm~C5hW7id76+R+7~CTG8W$e%-;Ne?M3eq%#mF(W_S>~7hiM;? zg)yuc`K^h@nAQ3G#nJrX$$elZowvQG^B-RxtZzm2hNA=g#lY|O;KD`9%ym^1fjtn* z!TBYZqEt8dy}c6Q@4?ZTr8v(C9^ocs@xt{DKY2R`W#2JU*w}8LlZsS!kM_`vF7~lr z#c|wPCNSSq@H!_x<3M@zXC zJLCIUsa+{l%;(z6GBMl`I80R4ze_D~F@4*sV z^4uy}?s_PVZxwG|*zZU7zHU!hGx8TGEAZOGsnU#Yrqya=p0(>U?MihfDKGegF+~9R zUV9_o`uG^7$LMYHuqy3#y+TsdHPuM*6VA`I(Awo`NlqOtnC#|ssjTuDbW>GYf-35e z6$7*$SVh}vT=DK3CQ%HMAHJL+A*FewnZr9S>9!dL&oW?ridhquuzu0F*i=E!$`a#6X2t zk!e-=L1=14*JtBR=g3ETrxDsN%>AD#4(*RDonffvfjPAM0C`K{RBc)q4o5h&00SPz zT=;s03s|s9e$ugeDJnc77UE(QrX$AvqqDlQxU%&&SLT<@Pv)VV@ecpnqOjX8VLik! zl#Z^gV;WG?2IJ(dEap5Z0RtSaVGdz6axt#l>JFT=GZ~pzwcsVDPh=M$s3$^Qh(b)k z5z?T#&oXmM`aW$}MrN|UznzAu=%v~pi zh6<~QbM%-v;US8+m|gJ6(f@IQcja<$mM3M0K!!ON_DGMWbF5=SK6H+^VdRzWU}s_r zPbiL1il6GO5s{iY+dC^O58R)b*u-1=kchxc1VHFpHQ0HGJC=LqAN7EssixJ%)NwSw zI)$SC#R(+%c&gK_saA8gxzlJ>M-xbx{AT{hEe)2XvZyoz4!h~rLrOW&0}Yk`|3ZW1 zZ&i9#!fbAXP~?+b$;h3THosMU&WxoQ=LeKT8bOeXxZgN#Xv zR;}LZ&opMs^*R}ajn?jVxl5bWa-&!8w{~$<)~9zz+esNJ$YmHO=xQ0~ba|GZesxLO zNIM!?#VhBezxe?N(*o}eS`(XcnL&xQPL=Ql(SJ)^*r4+v@6)T>k@-q>3#UaJ%lgz+3w}X#I*zj-!X^bPqp#xGxUAS#8KdnCT zy0oJ>0Id|B8ByeGt(dmupNhGp5W>408+7j`n6P|UV%e#m)@VvZG}uu7Kb+bwJS4sN zEL}yarF*f@pR{qc87bXMC;yZ1;;Q8ogBxw0G+klO#M`yr@Q)4y+U8LYiMRo2Q09yl zWuw*MklZic;xS(_i%Mh>!MAMW=H4|S6_6EPe9=QE>9%UMZqaP z#MKi`v5yH_;{ZjEibF|-$pKb;I*Njo5V@{Wl5UryK>NU;*7q!q(T5{B*(Z^mm}=tW zk^~N1LeND~EYxrLumgRlgNv_VJoNBL6RFBV*KKiPL*B9yIgVJoENE#)`fif&3Tt-& zHye?X+lP!n3(^t)f(D0cfc41F7CkqH8&CpVOeiHEWhgwRX-|LWNE0;9Uj>bSIXL>P zZZyIe3R7+*GS-F4Z-sc3CZflY7Rrb^xc$pLR6u)7!{-^#nfv#F$nlZnGWOP?AJ>Ue zB&3P*SH0dn3Lz3H#2#?&!o>fP_MDU`kq#MFl(taWrJaoYtn0Kcq`=yALky5&X|TiZ z@UzY{F8LQHJ+el+N&sM*Iaz9Hj=PYg+nRsp8!iX5=(kkaoJMwa0)zd21sf$$dA)%s8B6T#G*K2Aradny)w>l zq~vVM8W>aeoo-CZ@#c77^pL3fDvMaO5;zB{qjq2+VEg#2n8y_mGnw^kpfafTw#g2! zvHLmu>F&yr%?A-C3Oqj2n(g)%)D9KJkNy`WXMdnbOU@akz0@0uV# zrdqI1(P96nNb5Pr5C7K9;xutyTwjPdqh?j+uE=BjZVX^Aw0g($*6+W1d5qWZdh_}R z(DzpN+sC(We|dR4Ik^4tcKgll>btGgpZ@Z4G=6>aBjv2}2_F{eW%J?iVyNEp;cvIU zygOO%{pGfO`|8cx)5FQe>&7o9zc)s!Kc21(R##u%8|sUvgvHx90qY<~t4&h3QUg%C zhhv-6d(o*1>1yh3Hni)z%kV^RCrTaXH$IEct zwiAIs6*pa9Uy-BE3_$fU+&Zffgn|8BD)$g437UXkV_FM+04-H~FkBOR5;Jj)#W6)g zj(5zScETjlkRITVg_i4nQdLbqgi))*!}f_ayW8kNzQPb7H~Rk2n&qHX7* z1C@EPUKd!VG50VRU@I@gh6xc-9VOX__>cyAtRfC%kY|8nkL3{ZvRLp7!Y@K>$SrXG z*OZLh$+X#q6RB8)<_kFaTV&ce3Gcr*(`K6z>sp7znbsOm_T6bt zOZLb~X*f=R#(g=`hP?A#4;So#++E+EL zF0nduqjQB;&zG_<6-b5gAAIf&9FTcxKGVsdX-3M3-Oe*b;(0u^o)7&>4DHVRQ0!gP%0_q&YN!J?aIWEY#GV}$nsXrQF`nCJrw8?0LSbXI2gZv6^vPb8j+>8g6vOu8zQjk|}4PVJbU@9a=vLQF-t<;bx` z+8nG87fXMw{f*!O2_(`Jh?`v8o?lHUpaas*Ef{3uKAQ1ug@=I}E|TA!^hUdJVp~xH zmLQ9C0|XtN!_{VO+QT$mxEPTl$dRZZm8H1v;wH_B0{}#PN0sH9vdE1 z#Hie>gs+fV5waUs7n2j~B+>BK<-6o#Dwu(LO4z9;)p$D`d%_7qF}8PLyULZmfIJCy za688Upk9@{k9%svWt-S(R&Bmzb%r=!eN8!w+C>Q$ zXD~gqH?|4G3WVhOcZbtXQ$@IfOOIY?m6#Z`Yv>VKgQ7Xs`%T4*B z=Ka{h%!5{9D1>ACaSl^W%4X_xJOy)3{e0JT({XfVWSl(-x9ohTo zRcNnDT4NL5LsrFIxO*O{BnUXgwDpTt2Qa=y%xr7yhEbcFoCD##U4MFK)^z2J6J|&4QWi#+{i3FZnZ3*A; z>9`DGDe|#PHGP@A)eng21phH1`P$brRqey&bz>`2i(pA#XcVvi`&C8ZP4xreQCJ&7)DaZ5Z>|hebUDAyvdlNN%cmR_KcstYtUF#EgDD*WxtAPCXwn7bS zNoMBvjn-GH6g%>_t_@ESnhuZf1Q3#h38>_0OY3%_WY3~@D z&3>!5(p_oW*rYk!@=R^vTo^a`gw)v2O=pBI0IC6qMO185)Ku-GZTUX-o;geP zl`r28YQMf8U;pspX5;$(v#r#8ZnF30Y{c~g;4pX9CK&_&-7Ue^le44a$y+o^1PS0E ziuMXT(X2f(YQ&^b8En47>6Aw!rCufpzp6hn$g!mDSj90QBBKN*phwY{6Nm-s?UrB= zL(nSa3H^AZ6(6Yss16k_oDNh^E#U3~YMd-yCDu8uoEeJ5?k7g>svnC9dom$t6luV6;^Kxa z(W;VUgjOvuHa@2^p9EkOm$TAKjsDaxS)Rq3_y7(6A;#eA6d*`qMGL2EfZ{a=SRkah z^k05?ho)0y{p~@&{+F}Wv&NfWe!Ti-b>;WgM)UT!gRSk+>-J=C_2v40?dS8=*Tb{+ z`+L>F^X^;9jYr+B_GRPZht~JUzYMN^?rgo@9lh=C)SnGj4!=CVDUV+7_r7Uuzkl0c z=jm^8~_W7x(B!f~@a`n~e|IZmBudPT`pqfM<*w^MJ@*^efTm0l+$Q4$L` zidUM(+qb_RT%Y%U{-wS9mRjtWz2D2%ufO?q|8?u;`!6T`m5cqx>)&4g{Qcj18#fR5 zlK&%iXYR)4X?=6re!cO$|NhnBhqukf=HR#A-gY-{zIpci+1~K)-SzeluNpV&@85On z$M?6p$PW!7bYWCOL`wVAX2&ff{t)_MYD{u%HwZ{{f}{^W&g2qh@#CW$1Wory8?E)+1zedQ+c@Yz+0~!yRqszqV6PC&j`>*1pm*Uf{n^o~Xpb^|u92 z0XGmDGE9~IN?wOZT}Wmz>tofFB4E}PiJp<68C{L2q9R?;ZhY)FCwyp1nur7etn-EI zN3dhuiHL1Gf&J!XDBsT2K={hlC;7`Dg2IT=_9FpW)#I-gL;})qZO-urY1rwpoXMm8 zBn5`_0lzwt=%**%{WpMFH0m9cSWpM|4(hWxa1Vo791_$ApNO=H5y58NYS)&5l^()J zh4aeIN10Oiu%;$4M8rP>;OUv)PT*mHoFagV7QRRrL5}ArA3PZr8d-E` zJ1{G#m4z=>AXL%O`33n3>>pudKP8=n3yWXp8Yg6WI6tSX6b+=j(S>ZmdSuu^@f4yT zzgS#I1?Kho0|gfC>XNrJSy5r1>-hyopeQ0KZgS$1_yYBwuzhFV;J90#`)V6X_OzDF zECi!1%ruODp+2~I=0fb$13LL7OyhSaQjR8u!Yq|UJnFVx0(F5_+o^!*b5Iw)pS&Sv zBzE*P#$Qf@e~@IFe-w9KyV-wII@;KdV|=mta#(t_ol6ZCH|01UN__*L>5J9e?}6ll zA*FhF9klazn>*c)$r6>N$f(t6sSPoJT@QDfoKxaKJK>SlVY${@?b3a7sJ5ETTDd>y z*7@&hr(f$X<7XPdm!YQe;q~72FkoohB6%`5rBr>tY{ruhYf>X3Tz9-yZ{o(4H^x#p4ya@n-h z0SM(Qh(xr4xhp?(aqjtRAx5*tKQ8^y%Yq3a!!5Lp{fFEc{=9*NN+~dWN18i##?B-7 z{RMylDs4_O&CZ~7gSd{+g2Y=01XP?o0~E;hq&J+u!E30&xrb47>5+87CD=_#Q~B(H zmZfu&h&6xs)XOj~4?r;s(4RP5C7=kn@?(x+Y@t&iSC$Go4`cYx0fDXKuYvY!}N z?8RT#bdo2YnP57Qfy9g@(LD-$MHv8|0VrnzMsOmr5OlH_Q z_!IcqD3(V9y~hsQ3E*yVBm}W1t>yfl}RFN z9~@r9V5|#q3UGTt#cEgB!aRz1nC%AFRb||hg$rC3^gEVP$k!O$1FLUVdXeCzil=?_ z_<4Mtz>O3oJO~~6Eu#CM2ao)=^pC(t&Z2!W*AMp?_%BzH%+!_u{2#UUyUjmVkwB5B zQovUE8z5uV!GRV~^l4UYE+##ILd|wm2z(A|NdNN93C=UwuWsQH#b(4cTlZ$hAk3`1ZQ=8 zR5>`hgCJ5}>#U+?Hp+uKxFOBqO1C`d4_oE6YIo4+^?S{g!C-bNUp)P+cg=~DDpToz zOj2H3rKMq$dIs7Yt_;ha##(E&-vqU7W$s<;a zwyZc=3N5)IF!P%XQ4FirfKT%E{E#WG~~LKIRCq;N4o7o?Vi8T%DMe1WBOOTg&vI32S@Oi_zO%n1H<3rzx99ky$4MYul6rOJa?zh*_F- zGKs~eOVgG7popE4UPO(ydiK?fj_lzSt|gI#(v|{gB3=z7TxB8d)dNPvos2PYS$mzp zW}*nI@uVhr;m_f+pI;gNhuBP3^uA=3cl6kwy!|D^W;D+S;~y{D^h z7w_q|KJcCvUes1&Wvx7fJC~b-=Ahgi)Q06@ZP;IHuhe^k2F+a1Wh#4nADb7Powa;? zUj1IJ-W<~Sw$tv{*soTj+#iAlRYyJ{zdEhvptDRDm~0_^*2&CCp?0s?U+IB@$;qrB z@c^IdHU^wgYi-cR+Nd|XQ&}kygs0d&YC`_hD@~wZ=V@`8UbFi+heT&`SVbs7xxpFFRGpDl%3BI`fVjp@Ps^UcR{7 z5_09}>{{#)S)wfdXcj5O2ev0pmhL#*-8b3NN0lzBzc62pZhs>ld|CPiv#|;i^rJ@_|Iy>pm!wARHR_M#3O$2WKYm>LlfLu# zYw`7Pk?QmKTC#o-X32bv`G!)Gfvp32OFcYsZ@atX%uYBXGiIbM^Is%|?=Bs;>^*cF z<7DcaQ!vTUo6XSyjPE^xsT*dx+Wqv(+J6Ly(|N`paU+KMVcC6F$!asImQrT2h?RDA zIqy_#G`o#jr&sS(THxW5|Bqm>f>RY?z;+IV%dM*gL+1sCtn$&j&bjGZBQs3KYG# z(ZXmSmQ7R8;OjhSOjK!b5!VuCPvj2=(;|P&>YcqxVp;YR7xYDy3aOgv<%7RNf6gSQ zV2jfaUv2DApChO;6lT5x@5i%2h9lKh_KnRgN|PulM|G#XKG~Imbb7lpk;rO1!}akT z$;SNomf~KQC0wzL=cXU9spzH5)5$G06KDd|&adX%4&v#&(TNe045tMuTUcB$dH3Q- z!sJR~C2hAB8Mt9Oy6MitgX{YB(W02>Vrh{RsX$(G8&;f<&Sw*{+hT2|&ewHlCbVog>YM&m>7oq(xMpRNLUKi$Q%xWa_1d ze#t=yRPd?av^@Ws54vH38-7Hjyf{!V1Y=7;p%Tbsk(t_bt=(zKhG$d*$?YpALhkf^ zH^R{E(4?`}thc~FClg^AUY@ktxfntVu-4(Ar(Et1)<*Z6Asx^lhwZs(i75Odi%{%x!M`^JO$63w+iokkzT8r;d`?u$xK zKRn|(mduO?jbUw#Xn}e+5VV*(W<}(jtiIG)(%~wOL@$Ltt{hhsljcVie*q(b=foUG zfiY;^rMkA*)rUhI*=P;Hxu}#?(qpoOr@j-$$h-|UL6-*NSXt#n3obiMO+q7JIw-sD z%7hDhMla-cy)aX><}D53<}H|&+EcyRt+xS-gb8T2~gRZL^G^~SPtSMBP|=sN>kX_v|}a(aph}L zcW5QJF>fLaB=O2ir@qyohF?%?qr?>J4r&IGWLW_r1y#GpFM0s}AuPBojU!!Bt0&9! zG+BRBgOI7*YDtlLks3D_2a#Xntx2{0oTUUb0qPuOB2#7;vU`jF32~I`BTulC_+Ge- zY~8#Wk?+O}7Zfoia^aD9R+^B*H%_a^`zgyrbHK+5E(e;n^Dd_J5Q`@_)^1c=mmG;C zz1)M3reDmYpj8GzLYRlNw?;I(SORaO9BD3FajQI)x={qdff-VkU9?M08=vz*W}h!U zqzF_{_K9M@X5nxUD~1GcwD+1`93aYrR-`8M%nQx!#wN64VvJ#+b|wHN8|cFI6txN| zf|`TNc>=%8R38eQYvEE%Hq9aFV>kUQ$}6wg(EQt6T~Q3cDeVf{ymH z91c=M!nw&2oD`xDyI5>RdysEqB;#ZRi>%Dz=3JnzNOe1Gcp*7wc0&`sW1_=D$xRYQ zSTu%GIFExT6-ehm@`(2qkr5N;hN7fOYFu;KuO`Q1G;Gf;!hDGAygTBz3yGM)06RM( zrCbF?X4YB_t0E^1RhvyE@n00-QPV2LoEN6>_go3~n0ykxjg-*0zu(??MWac>8ag+Y z4(EA~*i7j%5h=cApwW0%5GD&R#G2l2UO)P zBQdpIpZ}YqQ>Or@nXe&XP>W{x31tN zrAN;AK_190_!w4B&of5j5_>J$V0+;hC!Ay9_ZQ=lg{J_zh}Dq1km};1}MRKXexikAhR}xL% zTR5wNpgEOb`49`qF&ZUyg9KMTVHV(0P@E1kN7L1;rHWZ}F-Zh5E7j= z%P}SuLG5;gQ3~hs`p?+#J!b$(kI;RajpLrUFM*0>g$izJX5;0I*K%z_SpI4qC|W_+ zXrVgTW9bkVQ-DCkgStO>t*KW{-Xqf)K1jg+*+cx;y1W|m#c*ehJyv<8n2Nw{N&Zod zRql8Ur;Ao|cZe|YNRCXJOoCx&XF?V*4noy7&dfm-d|6kHfsN0WM5Shu)d^+Fyt|4u zFw&wSe`oC9~n(LsXRBOSkt^Pzc{EXSer-*vtxVZ#X7C^tU0n> zimw!`g=4=o$>o+j+zFMvyrEqw{VZJME;|UYHK--;)-UUuSbma-ut70j`6)3vKx0`r zC*i6@2%1q)iOfAA)y>s49AU~Rx_q*2_1pOfSy?&XKftD!P}{WRl!_3!4*2LCU@%*f@Q5{Kav>2Dnkrt6a>_VTbkr|nR!j9@8SWM zkL9 zpMZ~>z`kTe6_~X-f_JMD9$|_#qrCFJCNT6zHV_27$FA-8KQL zlvQGngzhIlk|4k!&c^03fhgdGKy|YM7EqI=m93X+>7lYXHHme0Ss)0{0*6G75l^O2 zM`74b{+8NpN8SNh={8H?+M31LEmn0U5CkaE6-K@#Gk)+LW|CBB?JxP)7Smo61`pnnZBQzO*4G!c^Rm@tmTPe1iuU@MGz}h#lsY@*t6I zOg?9fEabCHSf3h0Tb#1se2$3aK9;i#R0%7=>B|O_YAQumxg%^KG6}(_XNw^d)P=s} z#1=oIZ)5^t7-Nv)zYIVW)HI3_w0t2vusAuH5mhV6;O0<^RcWfBbm#>Z+NurU*xd_5 zB=BNsL+^?NO8e>A3QZt=h4)8W7gBy42*wR@sE9I7f{CBL8Oe*Q3F##sf5wzf!`QVb zVq>R%! z35|kyU2p=dJjU{pyP37Ev3!!INFvLzRX#YWif@nPPqObPr`*iY0_(L+@YCz1O%{(c zmh3bFG-TZ_tpD_K=S9M@(8jC)*#AmRJmtEcqcbcL+FWswqG7f|(J!L}Q8`WA9rOpZ zqg47i>n)la#wD2A3KJJN!O#k{kK?fn2*s$Zo!5&Y`>%aWR*0pwqAo#=Q9)2pB_~UU zBB2I!P)0mk@NfL23nVRB## zV4g+&+KogkCfq>CnHsSv*$R`kFe+I50%{?i_pk?~zv}(|3JcELLFD6qQJDN{g8xo} z;3_o_6Ka6K7E8*QCClnbO?`Rlp8@^4_`LsWd-#gH#f?|LmR_n;Jug{KZ^)7Hd+%u~ z49|PEqXW;A(qCV2pUUuUyQls}0?cj6ywARA2T4Wn>c|Tj%GapKt-V}D3Gv-{__#Uh zj9SfcxwlK%!njVRY#UIqa_^vCYxg<_`_;zYGAF$cHIt}%r+#6jzd72wIlTR?_WJw% z*3QeV)!p0UowN4`H*b4y4)=Cmz90Pfm#cB>o89%TAIe)lt-ZWo75~N4&z{4au2XOH zhTXQZg!{cJbq%X)<-xE)#%!&<)~>GBYn}RFy4Tb$af>lp<@+?Za>>0Djg$_41FiOY ze+m;Gmalse+1uJmnMx=r2p;a@AbdL(eO&Dq+guF@r}n3G*YO@*TyxK{#$8Aa3vuqZ z0v(`Ra9aS(2(1ks!e0#@rg@>bkldbKsJ`gQU1ILy$HhcBm#G6;>>zzh%8#UuTM;>I zX6_??q%3l{P>Ov{qZ=oLe^~k#J5c7r!guI_y`>(R0$(X7q}g`O$Ko9Q$+q7eJ3`4) zyo;|1BaP3XZ!!LYP|J7~Fv>5NrIoXLr1agzu9+We|7MorGFm}2=OH1OJ5jFo_*YHN z>K%$p$SXobZBd=U@cH}db52|K9cg{jVHz2W%n5Bdq3y-_b>2i>I9H5td(kh_3v)d)Z^)eXI=5YOpnv0o> znvfUH?yxp!?}$fn=z~AVJu^|D$BK%C%IH#&4oDdOP~rs8FL~9in%x-g({*)l&7VMt3$fT)#jN?c*I9vl>R;NasNH>%3024Wf#v; z>hK1g#%O#;^*c%)5{{%2!4;noEAvU3)t_BEwS)KF+kCkSV<^qjx}|ebL^|-4xIIA! zvKDnqwW+gvFHfrv&KjMkHG`}ag#(#bAcq+!4+mZf!c(Ft(Evy}XF1@BE@FdO9=wRz z7Mj&AQ607*VFshKCnRE39!0;2yAEX@CflkY!#&eCpfh<22H273WLVyJ3Xk{jc;;$hgO_Yh&7)d6&Jn-_8!=F-$L0&Hwf*OZ; zD6s)f+V?90XXdZ)ylet3{<0Xnfk1|tAASOD2zLr5U+`!8FWk=)cRP8hm_pLh5-SI% z@Olj7S3rA_nkRgRl+XV;-oW{G>`(og<(YS6MN_q4>Sa*sQt%*!7VIG$Js(NI+#bFh zuIwxgf9bEkcr_$0KGUXFNB0xz?eNtd7vcRJakZ-@L%h-IQjgTFc3K~BrOo*cSK76H zZGci&ZLF%ecC}X?tgZCReBN!WRXeMzjUk#vQJOUKS`s~}?!8C18`=`LTe z@1q+sRPZqBV0jkBmg=kqNN+Xj5V|B$c3M2!tOEJg>vemzZnM@|&Y4%i*11aKGon%s z=ID9qcWeD>zg6j0TeZq?ZKd9C^p??#$a#LQ44cc!xzC&DDrfJDSJG~m?x$_uUc3>c z@*!2xYAZ*#(bSu$Luk*w zN-j8p}M3iPKsalD8ui`t^l$MqMEQQCG|nXCm14MnGgW~js)6q1DeZwZnAkot;Bm(V07 z$)(0m7%Pm#v?bRr3^DnD0Ijg6wn)YuB1~ZCOc!~sbBQgqY}2b4$yalr+d$`(Y! z#H}d&%ITz8q*jHQ6t+X!(N_~yWAjesBl{R-KWK;LE8|r4tJKNMQ;xr|fXvyc8N`57>3!c{klDfUgCV3_812#~+Du<$46uv0k- zXAjj2D}x_7oO5SPa4Np>viryUL`+mMAF<1yNlg0$G^v1!zyS4-lc`uj>*zL=flK;qVLZ0O3eNMDiO<)8-dYT5mcNkaTXgU-;i=o+E2Zr05)JW& ze7kn^PA9{rY@kv3^qiO=U~od2J~hZ*xw5fVZwFQwDU$5Mw{ieOKv;(-D+a>(S(afxQN1qGlm>Tfp$h z>?8w(=U}~ya=d31Ug9uirE2of&#qAY5m4GPuT{B*;hB~nVJ^PJ_Gk}vOuT|xsbjeb zN%@pt1K0<)QnD44AgJRAJ6Qwoa=y5AEIi~o$il~1=$eE)9GNc!Ihs0W_R7{#90cdi zcknSpM3lw>2UH=r*)se8l@Cf7+Tyh`^zit-LG(v5U@M zhOteDqLQ3qi(1i z3dbfWbX{pO78Q&s&xi)bLSiWG9T=FAeN+}B0Nd%jM`utQTgWPR>FA+hOq(oJUlTLb zG0Bz1NXb67io;WOXGp%9^2Kt$hX3opof~fTh6yqjaVN-99=o6!PgO70CZb~`Q7_>k z`~!8jg!njw-2g3RtBSiD>1c~d{x4GCuW@tQ<_imaPbleLatz^+VxJbmyP$7G#SuGT z?ik>y@J#BA#0au$%{wLQ4TpI3Pog{m`);^NeFjt9C6GqE*L0{10JHgFs`BFR(w;)= zM@vkSmTES&O$w4h^^p8kg)p8oecjhE4vJmz1RgjfS7P|lsHl-M(w+-Heik|uR1OA+4c#*0_abY!~|5kqXYF@EGGOghx41i6YmdH})N zKIi`1=;6P1{xOsWvAJW=T4W8Z4ywaL6aFa2Ep>LupUs~oIsI40p8AqSdEz`-lT(%* z^klW&?318wK*edd#Z1YagjFhcEblbeLY7xZ?YJ+kR4(lyL<(0VbaI5R#}b=i(D{yN z_qcWBa$BA{qgVc7wK;%mvl^e%j1PG9`{>>6f)kucY$fqU=WhYx9V_k(WGTL=CN{+Q zK_(2vCF@9zAfJJOZV%g3rxBsZHO-vXkM_a9z{*UfC-aw`%75-c6;MVkUO|S}JEch} z(r_Kk41xNuf>7{;TvlOGeL9*%fA`H1Z5vAKsI6z^ZIV)+@|NZNiVr%U8h_+`+QPY* z#i}ZQ)R{v2Jk6gMivyZoM24jQLbUX@$-dS2wx7J4y|%K3FQnh?RaaJ4!0;UQa6161 zL)friU#YLkTT$=#m(|z;F>y4iSEM;|CMh-iGIGo2{Z#)kW8U#@kVn?8*KtNQ@DM#4 z0L9bmEJM0Dose%TrgxIuLSJ~F)pnVGIXT>V0O!ML zrbOZd&p<+x+^?zkmA6nPXIxhDWSkH+0(*NueHuQPQ+WL;J?D*ul-}hOIy?kOW zGoI)9Tvu9&bdt~cGeA)0J#L@l-Tr5DU6Uttl_LFV(k5VEKqvxA+^M%3%jbK?Fz#9f z-H5^f1jMtgJDC#y3sYb}d%<^jS0tU*8jVh~Q>nJPqj9}aTOM6tKU8p>S01yFz-YF1%lq{o&X4Tsx1j~9$*`~#a!cG2Xr^i=!4>}}_o0nvPL zJHWY7hJT@a;UZVS8kiDCQ4kUK1jA$miCySUDt?}A9ogNEQ{z4_K@J7hw+y`tg~=s` zcsbrTX^SMjzB@fxk`l1APkH6UZQ4}C#jD)*&qjjSMGBdw)C}7`SnnQ6jl*>ZZAw|W zOBL%QTL3^)ss_V6BI~nOF4RFhsyE z_;=}1AKoMHt;dp76sM4z(=(2G0g2%6N`nL|pubvMk|)n)4wzxEv;u&^Ln+Zg2F>%+ zQ*=}5X!dMSBpW+J8%fokOHA?a3cQ-y;6v3vim^I+JKY|94M#+&5Pf4i@n_3VrcX+Y zFYRdzxVFl1`UK z*kU#pd0=W>$aawLMl?3lvH0lX0y7gj_>l&gzrI?L>qgO4I~ORUjEb=xq&YAX&iuYe$0!hHu!^!reDV;%rDGKzRxKX{D~nE2XC+`y!JbrbQ$S+>-C$*#7n67NFxr$~MYVWr z{+$?Rz13?~o4r=2Qm?g83c+t|p^OnFtbPJ4*&IJasYF~f8x%`07I=#uixz3^cJC9$ zg5-Bl0aS(;{wuC;P$IW0+-35{!-S+7==MO;tj@$LY*DVfydZp=gQvhNe=Vt7s_#+F zqQ4+}Lby$MA*|fYJj4*`34N$9LMUvZG!i}`6@7AuZh=0M01Ir7MfttH{bg=|2L*Ar zs2!7D4GqKH;55n1RVExE9bIlkSl?x>%7&LG<#}qI3p3LRCML>tI~&c5sz)?AU8@*~ z*I*+k%HOAxML<;jQr_5l@$3cZ$k@B(7n^`U0V91y;G`TQ^4Yh7e&R-I)e+ZAY904c zl@CY?kPT!4g6zfXSl%|y3!RY`WtW9q3HISV+unwe;MpHb3K&HpO1?RQm?n&2f3gtY z3v`2%NhG@$8_jM?@9Y1x^SreAvj5^0>1!Yogv)PcGSO>2?Gkr5L9{TzyH?@Jt(#lH ztfq1CscBfF_XOZ|8ECNc>89b!821%)dWI8+&ROv$j6=vXh2K{>?1$RFDcSa8xe048 z`_HyZ|5n-@ZmsuU4PWiV2T-7>!)D-}OMS3c-|JRKV=iP{2!r+ZMQ7CAZ`Ephm!rmB ztuq?c$Mx}OyjN>2ONLi~rpfh0b2c9h;ns$&wi-pyCZbwh#_c_#&IGlF(xnnX__=pA zK!5GtboTc5cgKz9@4I`gZVx!vQK!4x*gH75`z}2XlZ;tb8=yK>hP_UwIk#K1Xk$FAbx6{fdmFc34Vmo_QGH?&V?pWSiWS$M){Srh`I?B#9qaZb5yjP{ z^7dLClT_2fwXx{IqQNDpA^2}{CnqEwem|7OnOKucOw^(io5pWppmI6r$=4dk40lTY zE-@r%8L5U}jifY;s3lY|MoOe+$t(t`Zi&gXOF?1Tl+vh3U&dxETqj)I#+EpKP8)} zyH;K8x7PaQHHrd(l;)@2N~;SJeiiglGJU{{o(J6jhu=GQwNm@I>)VUx-?#gJ|8er{ zV14i9`>SW=_mj7ypMRi%z}on{d$fE0>t4Ow-t8P6-em{2l2D|+iqpldqf`_Ta~o7q zCuq+lusqFpq{~IkX<;03jivO3=t0=h36`6e5%lBUJQLIVs`TsV%>;~=VQTV9wl!6` zT-%kC$+cWPkB+uiwub$6>>3bfDvCS>Bw1)7$|ym^%Zsm2LBJQCG9x+c!jmtnfPuoj zTs$tOVLhgJ{%c(?InvPhB(4P&uCYv z6mON0RJ>4=Lal+RN90sqAf)~|DSjbkovFbS66`70!%KoEUD3ms|9xfaK_(I;OZvBza+>eJG6{wep^&*%T7!w=z83m8?zPx_Stp(vZd>(k*>$v)SrWhr z*O8PH(s13vO8hj9Fy*P~%Y@5SLrJmIUz43J%+i9#TBI{PAX5{ zB^ksb8R=@$_ta{X?Gye>1ckzjKJ#?syo6>Fh@lLN;W3*Y%F(LzR<$(-%Z%k>9%`J2%#z*)M_*QaNd@&2`f4EydG z*Pu5Fbw@qjbA)v7(^ap5G{VyJ82agMykj}N;DbJSR~~&#=~^L4f=~k`YG*P~6+hC^ zV=+^Vf2UHs-R)G+u`qh*;niDK)8}gfOci(l-jY$}jPO}_vFCIvKZ5(aNj-JD+38j~ z%?}~v-(}HNtgAZjY9Jg);_Nn?AL<(>M1E#gt94u5^cvC|KLE)8@N3As#6SOOuK{)x z;D4{C3z&jhM4T)WD*J=}0$PnAOHo$;U^UMs=O|S=3b`sPu@T6~W{XFuglcw{-(Hq) zDlqDT2EKUO`1B*16KcHyW%&L2YPr$u)Ty_kLqU&IF4JjYjb;kXUZdHc(wgO$Iv^?{ zAu5JFP%WiKyoMqDelk8OQNttDvKc4d90faxL4A+uiGo;hQL?*e;1Cg77g4ajl`Jlf zKeuyguHeJ`O95~64~?T3qzV>NKpF;LWFG!MuO{0;+@v7Tc^Cw4S!}#PG#2rPs zc)-blyQMMtbjBYj_NCXVAXGRpDbE02q@bQ+9!{F)?gR5SIV2I>Lp~z@MB^0tp=x-S z-YRunTD3-lS6LtRgfB?0LYpp^7x$4?d&Gv2uZvR1&5}J{a`9=nc&ofaxwk>G3lX}g zv9Jt_-efeUh-M`2m&HOoUb^ubk2#UW=15Ck(8Ye)WyLw+-_I!pEr&%AnkV~0Wiy&r zpKyOn+!pE6QP$#vdpjlpz(q)0`wiK7nXQG@vqT4#KC9r}1@3Z5uQy=aW1fo>P*_ z#gmK@DAy)ziMeS^M?WUYX%>dGWg$Bd zqg^6cJSj1X8Aun!6Qe{58DuH9Ou$%x_)T>zT#e}^)ARApChCI5Lp@y7QZG3Ry)NoE z^ZQf{u1so#kP%(+jD`L~gbJIIU>-CpbwnqYUdK;UlazaqhPTSXsriQG1QfPW&T=Cy z%*;~C4HQ5;Ujk5sH5Gywv%1|%T?)cYrSow{+UZTG9pHJX#eGi5wMq~Q8+jV;S*;1U zGJ@%49}p9tCR*!Q*xeG)y`1Oe)%8B^WT*ayE0-LJ*eO$xPbz>;7j-U+advtC7`YTp zhgF)&dgMj6g>62Q5eo4XzsoC(0erEf)+s5(d(1#gmZT>ug^AFo8G0#x$ZnR)$;FIn z<^-H*sR-bwZWq1Yb2uf{*`|6+b@4Ju-g6S@4EHWbyS`my_`oyPWUv_Go{=ShX=%+J z3d*l#6X6tNvO~0V@mqT@xncP3l}uRzxj{{)k95Auf0E~4YqtNDBUg?slNJs!Z@-ub zOfxlvis0N45lpWBnc99w7}!@o-ipK) zjuX3*_vWBT&(w6#lSZPBnigXLI6m z{qjhrc5bqmMWiUgw{icZo)IL4N5)y6Myfvb29(?=6B(@O13-sRrr#*Q>X{=U4OE=S z2^ig_k*Y6ea8ylX#EQOA9Fj<;|0r(8uI4stk^_R0Z{w`?TPg^fRA)BAk z1GoZ9N|~`eG(VS_UZt0S9LP>;RF`%SfHA`rKl4{dgTKA+c(uD5b#X4qMdrGy%mB}- zb#S{rX{yD0t?@bLI;zGqARtIF7~y)=YnEr;@j;6n8|vd>l5HiXV0#F$0aM~4N_RGd zh&nDc+AXV^cTD$IosM{*El|(cp+c^+j8-**i$9S4_VKUIS&g+ux78+BjmB`7iT>fZfqU-tIkPPpgrWu@e7`}liNi|~;o>H*SAPcBMCymOT z+EH(Bzm%Qi_DnrmB~AxgoO|seY+dDVHer&Q6fsldl!d%4Hi%Ik!P}_~BJ-7nBYKW( z2<=A;0K{NePX~xVz92gj>&rQ8k`zcoluu<}cz>vFfV$J}>zEjSjZdUA@MF?=7{Cfy zvORQQ^D~UDBB82yr+MiV-GhPh`D$+336wRBay5}!M=0lz()>FsWsB`IV-0l4)%jbp zx!5O^KgO}(Q^x>)eq_sA!aEDi-d^9?M5>o= z_X+i$x9h#;&F{Nk^JMXlD}B2e`>;_`stT*=vKnH%rAM2qip1%{L;5$Nn@&m11DOTZLUPYZ_9NInQTMD)S)xCdx^{&;#kCY1lcLYzm`03+-*G(WT+w}BnoE^$_ku=fJA1+F;6~pei*m8FIOUZC>{7{Ay*)O z*gVE6MdOe}$&IPUrQxg9%ytrvOJY=vrHU2QXj!ZaNf@yYDphdkzTo5#Ae_lURW~k@zh+)?7>BV{rokdlnwuxRukGW-4lc#CMC6s{%r8ZcXoV40;_60=(_<#>b*hVu-g zsa`#fV;1j}$;jYJFlJ>$07nRE8V*eQeY*AR3+W(2I0D-MJwSj1 z^+1n92n$AcPCve{a<9Q0o&>TMs01FgL?7_CK^q)XQ^Wiv%&SHj(~#G#2of8 z%J*||HA=}r9u#X-+NZ=dgU2>SM1(46rQ#6L^Em24BNgisb6V`;`Yc0MMU=(pynM%u zNJBZBC%|D*1njYJ99n%zU2&cgMM|9tqC82x5Z3*(Qa&7>JD1zCwEolfPA;Icr_af* z>_Jv7Aa+G)lDNlNhv({&J;OC4Cmb9q#tPha6_L0p>{q4josF%b_k4TU-&%QIjFCo$ zyY7hp1NdiEnj|}sENq_R%YX@L4eYZhp1yM?+Ow=z-pl399_SSDhQmyUv7sPoF}qUf z9*anayv#+;LomkLc%~g`O%gz94aIO7ha?x6fR&+P3WyCzCqE;OpWmaQigy)*?Zf`z zx_ar^_>kQC8DSD84DJ#_BG>*rX+OS+2N1i?iybUzMQu|L6`Fu*=Z{9lP@D}+{8t2o zq|33Trhf|6_TwXFf})HR>73Un@3?fi0<1-MFe(besYrDyS2~~EOrx^o(qTe7x;NXe zD1zr^0}g99s8$8mn!z_jCtmf`Mb0}eiY9n6KbQxGEwKjR*e+zl^Nd1`dD^~*Y__kq zO$R!frcFVn2Q~qNa9|jq-(h-_v=ebpM-z~cTAC0|$ng>$q=cb`et|m|J z$sxq|yVLXYC;K=1%lczwR!AX2sTbNCozn+H|Eb*j#?tOBHum^pNdbT*23guAX@^{x zKC%5YVR4(;_CPnQ-wIX*(dVg@=mmJmEh?a-JOOwaxBud%^q`?A zkj&*TR%t?~);D`7szaeK2$o@Tb{7q{xzg|VR|i9Yvub#JdUMI2bMm~=syA!Z)nU2T zTkQhNHEfpA6l&%Epj+p^tDSzWyG-%J2$hZ7T|T_tyFQ*Ao?M6X2(T<(Rb6W-cUI{4 z^ee>;c}WG&`1~5pHGl1H(uF2g<;{&|OE6S`|G$xo#{W+#CHtfNWM{QeUmdJb5II~~ zDL1<enP|VHFIl;cES(GbAmfO<#g~mkP{AwcDkJsoCnaXY`B*x&_4a8o-;8 zaq+R~Y5ko>rzfZ}cAzs0-SvS*cgUz9)8vmv{on!4Yf;nH0YBzpRoO7Jx`don(0@xs zr7gQO(W34pbr;&yx|9X6;}`3AUF;YqZanQPh>S1_k1UdPv9%c#4atxI1%%1Ln)Ivn z{XZvT8lEZT$JWIm4t-eFHrc_y3^&WwTD!{4=NqU3LTwdlrP~!HeaZkNGkjX2S&6oU zW8m;i7(Gj@IRp-dLjRD@C?o(P;9xCMvS5lr1qL%?{b*u_3!U3PfMc7sJra#(k=38mR5lg(V9 zELq3RXL9T%!dm)eS;=Q~5?_(68BH+br51IRgGkINDx$cTc1HZe=Bs8x?@|`$iAi8! zRO6PA^*OU(#n;1)Ck3JCZW`sZyVuU^cm&qKo3n)5kFi9MNvMn1#;h{5+ZPNI5nI8t z5Mq`B;K(;Zj|O}QeGSyWx4g7s^8 zgtJ~KD+{~Rjlqc49~>kl+w?9d9#Sl(lAn!9lxr%`X&d%KK1?Ai*k*R}sh;Q0l)@?D zQp`U-C_N&?^qBVc)PrC+*#J<(fuvt8yihf^U~PB;pCmn?52e6jj)$Ctc18S>ENBkW z{!VbF=L3TpOAELQ6p~bu5;i!y7~W*M^bmtIt^{z(5fe1MO0F}Ov_0T|b%W%N&?QjP zjNDw=6L@r~KCirt`WXJAfQ2n;7F?-H76nm6?Nn@ zn!xJh>UloqI9D;^t2$v16C9D#wXL(kO|N3$=+8?Gl zD4*$dNEwKGA%BUVUE-olt!OoptU@p&U5ax7{=g?(UYi8;m<)^O{w_Z^R>X zj~u+!J!gE00;C^VCQgvj^fO%7E?rxc3bQa{=adNS=A_6#;xY4A@te=r3oWv|%=OG% z5?2vd;)O^>2tbRt#Yull8kIN^2O?+ilj-_{0^~_q+1@600ta*g4&sNXiToXioVO#O zFk=ZEi)>MICYGV>Jp|Y>{E_c!m!ZHYN)XFdg4em*O)e0RATh-H0tL?GG{D597$DdS zoC;fW>9~s%VmmC#oaS|k;Q~Uj#?JE!-$~xlge1rb8b8AEiP^bHC~CqSb#9%=s*wdO zn^CbgRmhk&jFWL)2nS$M!={3>Ild?-DiDb(m9ezo5IfcMI&AbB9&o9;#D-9okgN8t za2vI~O6+oaq7te`(dcBV9MUMJAGH9^(F%A&rF-aV7g>#I!nmZAA;KhRvsjLsG=IOc ze}cJ^F{MZ$H^gaL>>vt^j>1JSEe`v;@Z7Q?FwT(VeKzFdYcZQ)Ljb*9%%lx`# z7csZWOrabG8Uqv3p}`&)MWnSLL9Ig+K$zU}K6tn(zQI_!X1;BgQwV!9GdWX{LNsJW z*MW>YB9z8RVrF;FrKmTiz$6t6`Ti8`(%+169I?}Tx}K`C=N3MSel|ic@Y|SD`9|u- zf)?U$^KRq%n~#_pS(5nj$q{u-&I4kRr>OcGfu$;M&z?=fpvQd11>=Qco8{Rx2i;0+ z?88q{0$uJzv~HoVD`QWsIA=t4M8v!zTCnVZxkeIPj8MdEw5#$?`R3i-oyZ~+$E100 z;xscQPbja2GY-^86>3W>M-DM+Mw}bH1s+I?lwPU0GZ)&9<{Y2o{HL6mF3tf93=cyR z=>V}_@C?e<*$|`3Nx)9NgNAXi3N$oRQ_^3(l`Kt-NKv@3s1(Mr8#E9I0bVn+WFs$7 z%ozPO;Bry%6W~slUoD_4L?kBm?mI~lrNNYbq>u`ov@|YT=}W#)WKi-Bq48<2D^tZ{ z>AtH6woe~cX*@;r81O83H@UHD^F#6uff|CwpQrG=(6BV}7$1u~!6u3KOheTFxQ;_| z0UkKA4zV+&EUP7$d9OFajhUT;>-gY;%s)21V5)b$JgFG*>YG7%_xjn&>znmq>s5QF z{cia7;P`kX%i8V_)J-SMDc%=wsr z6JY4LVnB~4QK;VNbQ=v&(<`+h)tsH$>hecZhQ4^(rXizWKz&N1PM^w|7Yyu6YBZ{A zRD<`1wQhAtUQ!=l3lmt+A-)lT_`?Sq4zSNj`le}DGd&hPj4jsXhlYw6;2E ztu{Nu`ke2rc=500{ofAGPY-Us|EAh}_S0Y9^v{m}a=!WQ{muHbgP-@$y5(~7{Wn+N z@3ek<=*5FhZ)LF3Zw}k-RUq*R=k;4mq~GaxyMunSdv~#eQFp8TPZ7$TdYyLf*O%vi zIo&zC*gyZ_{O|Rb7jKWhe81Yi>Fk!P^;iENb#K1b*0rsD{vBP#I@EU_W5*Ke8*e8@ z2w@Y`*a*jQ_DSUtNPq%J1cAGH>Tc>z>c;B#jxpy_g8-B4bG}{P*@;0~bIo?l(Y)gw zjf)SBx98Pv>ucfgW#jFQohM^i5@Ty~zrEMol3Ys5K%WjS5P?pjr@JhK!0k>(6(c5- z$$UZI4F%=AAv;65D%RGU`;!p6+3EpEzGYJA#l7vCKW#@}Z@ULU?2l&`PK#r0ngcC#OU z-#9w19@lRkrdI>4Evv?YGvT^hQc9LoGt*>ulby|7D;4jqMkpS|(}(?PG%!h*LXg8g z>f4zh|ICCm0jRz(k5sX+CIvXH<7VDFUarzR`htb|lrF5$DYVAH9-BhXV0|fK zEnO#c*7q&i2zZtu%BE=}87agxXFahO16$=OD~f99OEw-MOpHMtwr;{WzGU?;SCBN2 zoY-l`a4*~JXm4St9UTU*g2m_lIQ4O&iHmrYub=fH5)BYNXlgG^+nA_}8NOf;$1uPU^b7z72T#rR z&G0(iM2OTFug_=(Cp|U8I)!zLph$8)h%j#qhoKP2=PDRry+Vdb&T5WBk8(>udDtKm zU6{2qJQ4rJsKdq29H!mY^x$ydMSx#zuY?na8H9TXwU{pY2j?imxH;K*zOhs#6h8rD zKxk=)F>TfI>4AQ8e9eWB=^o2cK;S^7+p%q{oD&IE<7?AGGNp3NNGxi;^(Yj&O|Q0q zy`C|3n*audwv5`#?mn}FbbE{w#OD6V=cgGLLpQ~qA(u3SDHyqnJu8S(H@;WuS{g}6 z@!MfZGYF}NK-C?GbEiY^8LTHzKNuB?LQw!@g-%POB>+BD!UtU6fmT+nOf9w?X~GPAwn>7N=k zCi6+PWWQNYYWbvAv5)w7JABlm{@NFrITzQonLAWFYGBdVX>8#?@nLXd_9ylQ&nh#p zWUn9}$$bUpp8>@znYR?*YoA&uPohM1ABXru@QOo>L5J)ayL9mw%RO!jBPR^QRsI$F zqbX7D96%1G^YQD;#_-qDY4by|adr6W=i#sK%hP}VA@)_Rn~-;Bw1S=imc>?5r&1CA z==(<~i;S5oOn13z(^%AOX=hihE#3&qLolG4_9dQmsa?vDgPkP!gW_DQ#J^Z$bPLti zv{3hC0@}0U!-~k+z6;-`2kIhgJ%uGs52s0gZoBAc@;SBc!xuL@cQXjtf}ui5P!GG*+&69r723WHEkeX^&#gS2h-3R+7S0AdJr0?`i6 zQ!^PNt)O0w3yAHYzkLcJsUrLWQ+0WLd)TK}tL1|%WBx{UdQXo;nVr-81b@Zk~UFc!O zCKX$4{X_USWQNbqjtM-U+%bb>HD~84&b8rJ7p;%=-CkoSf0;myBl}_=M$@C@c7Z83 zN_Vi071#ljMe3676?lI=4cm6FD<|FYS%OY^aqVFdx?(QN1z)x6)4xhMre(|Ps7dp> zJxRA|?g?$EG6O>qD8Z1xbQqim7o14}S?$)p*?ma2RsNLa*T&X#u(L6e4N)&Zw2@O~ z(Xr60cz(j95LkjO&&baMyeSGQWo^w?wIJghQ-2BNz~T9|F&A;~aC7NcIxh*a7ZW+^ zS;k{lYzaG9DXek^u5V|JQF?8TfFh>91bgLa!CIC6=>WxVLhIjf2Q1{N72FTsGZZxm zY)eH5m#hrJ1Gp|zaQSn4!Rpt+`N3ttq^%QdSwL~=9)~*=;wJHwei|FelqUhn|Wtu;BG{7un>hY zkCIkrhPgVl1f7s4+mkmQX2UWsIhvOP^dKeY+Fb<^j!8;Ab%WO5#vP}P;RO$6Qpwen zM~Tci3Qh{0^l(iYd2CR?LUD029!TmddI1L;tR&#de=cb%I?tF5EB~rGrSDR{6RVErQ!Z8+XdNhjnNR}(&_pxfAOk3#`moTAd^E+7e5Q;}}ir1NU`-PXG07bv|I zM-+FjbxRFzb>6L|dri*B@inU$j3qT>tH~6zW+ys9exIX_?Te$tQWqx8?xpSSsbTL( zD6%ov_H7NbMR9akLr)!prylrQlP9LKB9ETfhef=BIAY8D><4l|AB0v*0dYHrk(IgRolYj3 zQjM;_G)LJX*UjXmN|M#+ zhCy5oqKA0RI0hVzEpZ(`x0kFEXgWR%MWk<05x&W1))5KTu(z@Y#z5OBM2Dm-5~k^% zEp(LO+@jJn(a~3&;eM{ZzTVp#{Ulz$gSX@6VEfHcr~Ij~dN4TVke}xW4iNRiQp#D~ zp}m-&GKP&KxXLO-X#v}Z2ETr-uH|?0SLauyFK4d??O(qBa`N_V`L+fX=k%E4t2f2% zFZt8r)}Q-@y|1rETW^1De*eqwe|&nk{Vsp_rFUK&H$RQ)N9B#1Ou1HpT5dZcx}`#? z7Wz_qeNgJQ-&fX8wyUk-b+dTV{9Jxpzr8Pgm=}+_#R{~Bg?zSrP^ywbQ0Zm!{aU|R zE5YBLugstU(5soE3bybtLkpy{CfY_x5JG;{~R?}b?~Qw10gpv@OKp4 zwJEErBKD3qI5xMzZFXVB+D(o3GT`ek1gbN@$H9jBc`me{pdTi5$zSHG7};N zie55YVK&4hc_Sq9}llzo~V9l`%LB~)WQ5ZGMq@&HU6RYqneCkD2kgC@D^>@fl;(f46~NA5i4iFP8=$!}Hq^lnp{ znjC%6)d8@M3rk80SCWza83Vh#h%WYN2G6Hu8EOT&4Ls21;dHXMoH`I~g)L{<2YzWV z0`VMA5!G`kY0~4xwR{F{*LMYmief{$8VTRv@FVC6E??NO!_kGj=PM)x+RucUBmdX*|=K2 zbZGKMD#|4YBGYPxjqP^zx6*0FbwyYp`za{EoQ6l1|1xFnn~RR72}H`YTCwZh-1qGD zm_uU83=SN=$jXtif{W2o?C2F!Obt%eN9GA!fv(?R#y5@21#4yEY%`3W1;FCwkefHI zks_T&GtAO!v`T&fpesMEO_s6n*=NFC3w1p?90D^;_?xp+fB53(z|S%DTmH(VIf@x$ z1+0L_{V;>UH(nncki8AS;9pBYr6^OexYDZ@4-XGZ)%z)^dJ2z;1_$J0j=vayO}>i) zA-&2ol>jt+!2_5E_DA@YH*nOPKr=A9T8(Yrj$p8$;T@g})o%Rfm+tv*4))9Ta0`sG za57y)0s!9=l#Y946WZ{(_4@CN$>q5VL>SfO?%2%kF*9irR#JU~M%7zFP z)3_djgA(c}@)PreEMj*8n!i=z!sgJ7ESu98CQ;V{M9I>pJ`VI{$)a;WH!$$WG#j}C z&8+~>2xOGVY&&BfUq)9q)}*s63Lr(2A|0Sxr zQl7%280`>Hda#|(l~7DQ4WSyKSjIJZiC88eGm!`WMh@|&%mlW&0XJOx7X+W^jzTod z&Y`DLkI%0zgss(nb{F9h4oX6Z{5Z^!YsLnj+u=zBkj6c~l6h$bWsq6BmvCd_i~*u#abU=m$U)9O%Nvu$10YIotns87 z8h<|fGLBV1Ti#}U+*hLYpTp7U;5VEMXIBGuK?-+|4h!wiRBC@0uFn^r7E8sAxvQsHfdYXBKo;1P@{1O#PCZB`vgN9>Q!W7#hZaCZ2 zq@kwHHUhqx=2|N;76Iy#EpJ#MAf8J&;X}Vas?ZZOh(u zUBg@(LX@Zm_!XmxT|u2u&os}<@|%p3Q*hhMA5VX>s3WKvDr+M>NO^>ZLV|NO-q^a` zOZvx#J-$A})lDKPQE=s_mCl$Pg8ayq3JDPg6Rm+0A3=eQJD;0)=i{j=VDp@U!?ef)U(d24X-=J3nc zx0Wl~mgkBYMrtk!wro02{pK=tASqXmAH;N-kqwq8 zh*d&bDsc?En=q+J2%wv&-2Og&sMAdghE*7kM#C7^ay>MJGp!GfDdh4qGK1)7lkO=Jwm0VU-8c~UtF%n3KKN&teZ${oY=AOuqHPXP?Lv_#M>3W?$wcF7X zUX(~NKXgI36ePgM~ zfJO28w7?)Z6|x%*BY~g$j=9t|Z}VvG3ghBtGkwFHnktDago}^eJ_ePp;GcH8A#*_V zVz#n3u`T5cP%$X(9KOouoOqSG#19{!_ZG~LkqWM@Uo8q77hF*XSZtGISw0S_kU}7_ z``y*;@$_&AkP1*b=?S7r$MSB=eQqj;1KKsTuY=x-{!4}@=al%80Xz&Pb3HU|R>#nx zo^UKs|Cr!O$kye}e#?v6s7HxglIz(2H_zIg*Q^59o&E(;>jd86V)a?k3anQDN3YrY z1KBYpZDO2fMTs@%nSLX%^ls-DIKRjXq6Sa{g9Aq<#jpLf^FQD1 ztsUpidlj%2Diz4+RbcW*n76=kGtX>w~q@%1_nZ4~;**zP`g}8+6|Req7~Bgg5;esFbAE^mXQ^b7-w1D7*ofvUb|P z?8{-BygR|H6SO60nG%dEDjt0l8#;NZ3%#P3gKtoGzScT>c;AdBpez(}koxQj{Di3}LU5T*U3U znL2cd=_wj~>fk^RxwAGvbrLF`kV|jM$ELrNHN=G%^NwlS(LS2Wz}TZvdx-fM{usWG zPtfw;<^Myj!*@M06(_*xt#S`vOUr~HcLDo*m=g<)D5g0sguIulHYikK&4Q0#3@dP| zZFcrMmNL#L%%d1gJ+hE#NzQ3oXl-2j;c!#}&^x>P%#sxvF|E_CK-Q1pJf?(Lo(LZc6X(~s%7KYbuqCGNrF!-A7<2l0iNTZasCh!h2PTe6=uFCXIiAUyZIF$EIu2q($i28 z{@b71Tf1-CQ?`3b%Ht^KNO}XbCN&OXUu=s2RK%WENI|m;JB6}s<$Y(r1@20H05u1{ zm!C$pIU@S?`jWta=7C+P1Rf7CF(XnqxbvA-&5l~SjIPVM#2+?CbdUQX-RFVybU@zE zx+>-qnmWbp;K2yC9nKJZ?(17^cgdTKW6K4@1+QB!5iBMU>d^b}bQ} zC+w#qC;Y4yMOlHCgBhD`S zK_sfZ+!CxnFtf&GP(W|;GRwgB`dd7M#0#>TRSIvlN~LPSrN~MoXf)lBWm7WyDe_A} zuie+o5N;EWs?P*rGNK)%7}53=Ii$R#aaY>Mz&mv6ZMs}W#;+?$3UDY`R{wqAlERUr ztw#ZNb^(G@im&n@%@atB)u7ZEn}9Tb($9Q)gq0O&@HIu@uu`sp%R=S@N=p*?n!>tp zHTV@lyhPAr1uhX#3xHj_N$+r0>lGt zf;7h|GuZSQqMyv;7Z!{u-H;dYb5~u|jz7SOvPpdgTAz{j+= zoLbV6SsfgSy3Qixh!DGLCnzaFJF_{wG9B49KrF+qG{7XkRY)ogu-fQ}dMY#6b5noH4R;ELHM$;RIpnIj|1>&N>UjP`O_>Ke zQ{G#<&wJMXYMKc5SN;78>)qi4h<+9G1AL3^|L^Tj5w1!89Oxw*)MZIGD#m{@rwP*&>6jzqL|c6D@gpQl%ZTDcX4v@@KzLyVgqH*uK^EUS{nf4 zx&P2;_)kxLhLT67qS@ne$tj|R@Hd`!0cV&iX$i_wYPPmwmJ(JrGFFR?C;(tDLW$(NLVzH|f zU7H(SzH^>5DkbFW8|@kuyr_pwaWse#G-R>bhpq;;pPE9o^(=+L zs@YzzTQ7DCN40MEwg}LV|M)*VHGs?IB282U80|R$8M46B@~`Ix#0WV^31u1)ZUX z&8VFgx!=`-8Prm|zAvEb+3Dp6jSMd&mcPn>Vi*BPd1=UAHgJR{grn;ZsrMhdlzT?o z@vfn9BX?v8>5xc2l8>8Rj^%PD`YXn)8Q{nnHG`RV!NaVxKqqu!816@UfE{5e4c5F{ z0`fkLNfSYsk!yfjJrtWT)60`GhA;UXUp)SV=lm%RRLi)f%rh4IWMp)96IP@GNPw6b8tXzBX_S&v7JA$C(Cx3QX|8sn%EI3*Xq~o0O?rlfyD`|S5VN& zM6&In#A401lQ`Ra$&bLEvhhZRI-71#t^J|pO=YlcG4?#&TSi-Ik1$>)OtWC@KVC)7 z&r7Hecnu`;;XyyuxhaS*woEA3%dLES0OGF%{qBqFo1J526;eB7PC}}TOpzFNB~O{K z0)!C_U|MJfXRD{zm#3%KxpDVm1Py;&9Ph=9L>vw^<@ zpR@fLd^9EdOJ50y))pWbjuJL9R;Mgb3x=_wF}P4$&dk>ufx*ZHGlXICc6{oXO3g;t zX_Cu;&YUhL3Wdh($YIjjee+?(3bsVY3wwEUhOS*&Id2rInX@4G9)jGCS&UG1y&A{J z>Iy1%SzIq>-!eHtFxzU0cLys{;@4(!!codiqkBj9m86!gksk}rHZ8C zK9jI3_%sWx3=8oB+=#YcapQ3x3{D4t*aQW><}N)}X(_0yNJw#t<_DOD`-AflWB{hC z4U^}zzv_+OiliwUJJucQh^?z(6^7U6M5{DvPLC*H1>2iDeIeq#*4Yi<$s%Dlh*F4E z3rbmPG@z_Pjg>N)8=ntyTz{rbF93g5@|1gMH_N#qYDqC)p4D~IQVloWm2W7nc<;Nu zdrly-St>Le*?hIyh8ub#4>xpkBU@gp)+=znl!|MF|7>v-{QH|@n-Mb`)mmv|BcIRm z=5n^&DucOcm)60#79f-Q7To_yzxkQY@q; zcbYHTD~>F~%w%uNH3j-dXKreXkd~$pUif34HQP3vAAKtg#D^B`mmJ=MQ4e&dp0s}v zQFE7sd54iUaPRS+6yM^7FaIP_1l>ShHM!exBf5^Y1iR#tH#A8ri^Lw`ZZ#R`K*oW2 ze$b_q2S8tB<}j=3jv7feO_W=X<%@)-(N(06v3pT-tb-OpAuY}zlZ?{LR3CuBTahhl z$Yz5+Ix@k>u)Vq6wn=ak)vpbEmp84&rB8BM$JSq1V_WbS1ij(i`>dT*v;NiDiMdO6 zbF4DUg~^R%la!N7k;y{98rhY4W-mk)VeCddM&OTc@;Ud2e0pOb@^*7=Xw&hLhXj#x z5waPkkCA%NLod`K+(N#s+pWOoYU5$S0Ji zDRP)GroyqlcqK`WCvqgM-$Dm`Iz4OR{<3JEWTKLPXLRl z36CTP7w)9Mha3~Q9JoTc+>fq7sWP}{#0hTPU@Ec%1@~0~L3_W8P3{QiNV`y^NTONV ztSiFn0qB)=rF6aTlJd(vW^Y-Ye#Nc#S>-+s#*U?(Fq4{IUE7xH<69~2P@j;wtF2J3 zl&G3WaceZg8uYR`E~rwYUTxHKg;uc&rR~PuBw%|n#-P*&O$XwG`cB$~fK zu3uH0B*d?X4=>^$d@Kj4JI2u^qQ+6OWX6}%A}`3iSiBoCGAS$T5oMPc^3on%W7kLv zGzXxUa~PYHnB5~D&Pn6ZER8eZPq(3nJ2Fh`=CBHbyJpx2@pfPY5zZG6uA94*<*~I6 zi>i&L^|C}Tb4KW=j5dbm0OA>i{xRJ*4V0^kMd3XxAlw%`i6{$6Ihr&Gd;@b;=5TOH zHi}|~II7Hq(KX;Mm0;+wClr-30(wsmMY+w|f~c=S%&NLVTpZTT9h#}In|9ewAJdii z!C^Ot<-#r>KutF~Ul|OkN&K<@2a!Q!B_jHUj3%tFZ8Ap~DNye^Nk_#xCO&MDp%C5! zjEz|d@!VdsIz>u(tBk%k`F-1Q`AI}^gp!kS;pd8M&dF&h$z4Z)LMu&!5+%Q zD?s2OD&3)}BPbmys5stW+zoa~Xb+h5i^BV91embbqiKVKE|hABSCO}bo+9awD~;2w zQ*N{zrl$K&@;#rA9Wm0z{RMbPby7PnL#u1 zDn{B($pUU3ODK;W50e;8C|n6s_^Ri_AAjR@i~sCL*+?6(aL7bk+262?S|)?i*Ur8!U;Yi^5}{KgSeDnCwIkjabW<=sxF-QK~Rw*0{M z&b}p%J(cwNxw*BuzPbOw*Dh?pIqn{aT^$K18Q=b;xxKm5HcbK&AXzHGWh6#|Pi~Y6 zZ^Z5n+%2=YCfo=e=y-^nnmgF6N(;XSUCKREG|R4)_0F4`vc#uo^pd^y+jpCLZDl2r z9mC=siXI($ZcjS*6m2boAP#QD$qbtly141R2s1X8w!5>kc9Ta;L&&*#k}UJX<45X@ zRygWW6c~ZoCw;w}C*ea~o}5N&QqTAiM>42c+oIxORHZM@iJc=!4fHm?8y3L72D6?u zvdbrzp8(iS#wER>5S7661>U$;N$;=c89Y<)MzQk!xy=lovJv`oB`dk}IuK@+42m6TEL@ICR}D zX)G{*sdF=z_~AjnQ9Pjd++neLNSO7Yl*PnoWV`)FopQ9qUK_Pr67Alz&n!4-@Dq9S zEsQn79Kf=WiizL6pQ0f@RnEk9ym(TN@eqXs?N~af zP{bE6)<`=~`3JB@t|&QV;=E~ zCx!mY3rwWKzZu+=Pc4+|mm{|{lMvPf547!6uFLT?4h&U7q>!5BmY{j_r7C*mqD}werqB?Rx^z(e!WfZ|QPzO=u&9iLy9;cBu+(oYQFI_nVsV_Ood4mVyr>nJL-pYDaXh#*{CA>75)cGh1Jp+<{n5(mgj*u>zvt71n)V)Z>d-+`mpCEsq6n+%!uY;91UfJt@!gB>k#mk8>3x=EKHsBl__2F0pY-49w zDzGzi;R?T=tGqYK%1rdO}$bgvtpriGWOVgXi=3D+{3 zseDZw(R@84i}x9vnSbe~EZaH1L)%o*&t|8!$qn{}2w_ZvGN+!r(?rlVhuJ;IZ@y$T z)aRF%jic+r@m8t(;UeG4_donvD)nzqnoMSyik5)o^$$w9q(Ee#P}J?3REQ1Sb-RA| zytMM``1pPObN4v^_4RJOJ8thaR_=J`bAL@Gm-!Aw8EyF+-}At+%@VoT$SP#U62>pM z+HlXnFsC*N35osI(*&lR-~qqnN~y}QtMWr!Dp=RJ=h@;c5NE_-Z0Hy|p5}l+k_uH7 z+#`ZesaV94k_eX2-y9m1{9pC&|8KhR|NcMzKg)L%{ha_dX0QpLrtoLDFqfo14+tB` zHe8C$@MFl<(Fw|I?Y`XHF@t^yWklM^Qe>J?M^TEF#KZt~#r*F@b%xQ1-&nAYfs(?={36er9+dSqdPf->-ic$Lq0MKfe)z! zr}|qcdq@_Q2*bcosbToOHQB%*RfPk&6W%3RLcX(0EJ*Ve?%;+uT`+1M6TT{o!0zL} zIUS?CFV+R*_m<**$l{%`b^^gp>VBdUh@htM3^HbsfUcL*g(cwK8j-LzEEIWcrttq~?Xuxp%dmrM0wp?g^D_PWLMO7F1NKLATZ>U+7@ z7k$z!7w3#p@V8o;(EusCxv{gdpbTjA0)3qDhe$*QnlXb>Di-n!cnkB0gqQKD56tM8L2aB2Q7vQh}^i; zW_aQ(N!Mi0@Nd%<9iHguNyu?x&mf1Bner zr=>1T7q~E9D}nEd@D`Pj85k218xOGgU*ksDR`Ym{04>;?R%c&xtK=x>WwzWQIh3Il z^6i83mCNRQ-iKEG>Fw*44~<`_xcWN(Oa1VgvJx%VC;nLg2wSLfjA1k^{x;_~L!EEc z>+LoML>Utzf1}^uJ^$s?{-=%N^=RY!{mqxH&+o3wo9Bg3Mk;Zm?eCt`;CiFE-o~9q zv0oAu<|l$0z7Oc^j5wn0jdHQs6aa&^t2f#w2;5%q7m1+%$OJ>5#lV<8454@&n42&nS-FHSBM?zVTQj%%-VKNC=CrA#9u^NVaR&MvO)N23hOUC-_2qDujqKyIr0};WThG7(mP38YBvm!9v~4 zKezPB6U@DcbSV}~#hTj*_qi9j??dX0Cka}5a_Yc}W4$pE z3ah23iISRPP@5bp9nUajhI-Wb!|@UdDe2ndDw1ZAHsO(>fuKOf^@zU_-9n1D=Pnt1 zFT9k;F9uhlprA=3p)}zDkmh(8v)yUOU%{b?WlPO3;92f=9y$EyU&N5gYYb^1XSZn}@6A;N9sgoQ*{}Uv5V$Fi4uKw_HPtAjq!5_GPw)?V5J6!3{ zdCO{i#oxQY&8+RXv&VFQ-$A?ASC;mKx>1_51`4%OwFV_4@NbGL<;yS;m+LtB%5YT` zzabxG#vtf5YW;fou&*pXkR(9dhczl6RC@>gVZG9CR2ubq@sRA9M)780X)uX@voG7e zTOE-o)k?ikstqF%{1G6_Ds?VKgPuHIB09e^iA+{vRts8Hwmd1D%2I?@dA=N1YC~}P zkSgwBwmX6AA?&Z{$}#}-5>8o>wZ3V$U!zwm>dT#J)H5_;{IkCUOw$>5#5B8-ImlDp zIR_qAi&+lDKf;TQ4#p!ZVI<91Km*w5^cC{A3K;R5WN#VlD~Zd^$(WR8RY;m`$L}KQ zFm!p!Qz#=Lvn++&Y)C=OB*I9�x^6O*lQOE3M?kR`X4BZF39wLehG*xwXF6-tkWR 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

c)(V;LL>hq(lfVa3!FCAlSJr%2rGh#tS=0QC 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⁣b#KP&kU1cI(<{wYLni1xB8I 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

Md=;LZ;*S6c;UN* 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

E2YMFu!*P|^ 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 -bB{r;&+A_gW4t>%I8)!ac_b0lb+TxNAZ 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

(k_A%?_CssK@Jv9XXJO;&j>CP>rCR;W3yy* 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%0Dg$97?O}1SV z1QryOUcqEEfpp~<1&()~qBYX2d6g=Fh5Pz8zcIs)>)VXXKG?VEB1Gudt}rpNGfeDU zUy0+XC7LMeo`b8$Ka}=NW?tI7d=p*YgSS2&GhZyeVo~a&Isk4iZ0uGNQPzYVyD#pC z`unzI9S8Lnsp{zHa<+xufFF!mCNz0do_eFEB&0yk#8^QX^RYy^xra7m{uVM$-o4RX zjD9~7-U2pVJ+e6qo5?oTKKdgb%wPv8FoMMPO>CuYB(-CB?tN3zM;P=0z*AXhz~!5? zop?WJV5ECk9IaC5D~`2fDjo@9l2#N6*2K%PWigQe+PWX^OsUpc1Z{u(MCfjz62COJ z*hgCrMn@b_U;=^%3yaar6q^nbmX&`NJUwa*hY4pq&StiEO?lSDWpmks?s!0k&3Kms zKNryRIGg)H{c$lII~?*6rf0WZ;d zCv}`gR2nj3sFj!J`j8O}b*S5Lw1Im8E55C?P!eN2U`6Czt4$I(48j*{F7%V8CQ?{g zipVn7K=ss3$(s?706JV%c@N0zCs`fQodmGrbZ6GkOIIr1H*wNr#Vfl@=#P(K++eYw zP(%3600*U0S%D@i$aWjQ2k+{0S=IGk ze?Wvw3#YTV4PPZ7DZAUvz7K(}a4>Xc^2rNX6dH}0A9m{&Rsi!X@U1q2>34MnhFjkz952`aSdjn<9=c?4|6{|>3vNz)=oT?xsS)*743t;GiA~(ZPdlC8IR$C2hajTDt9bap&ztVwclp!137(aA zwK*s1GCclBg6FkORGYY2Q(1_(Q5&ls2)o<;4@;EVFvA_eVspj@w1&)&F+v}z*jG$b z4EXcr>`2deTe(z1PzXLjVFSaHr>8_kE;!SyQ`rMyb<(eE1Y;Bk=$Kc3P&+$s9MKnJ z6Hz98I?6>$qr+)Q=G`wlDQCgcF8r0Te^!%0*EF6!W@Qt%SUMgg{{akxHD5#I zW{)VDr%jdA=z1%-5mOIJPdUUcRXHc&m&5ZK)0hqk`T8)8SRa%2{9dc-USyDOyC)As z28p|ZXKnZ;Iu1Ul3fgIQl#MsUHpKOjwk-v1ExNm3?tv7jJLCu@vgYFjfwCdjT(3dh zk9kndoU0IAUAs**leMEENXFiTbp24)P_Yhz#*AhnCuQLdwXNrR`88Qdi3EY^p!$6F zpk+!CX&bd0%*jd1ExBm1O2%Ofb_o#9?i{}*6qEYU<6ik1li;$DWInXz;vv%Pp+QLn zd#sQM0Y|7d#3q9lNDm9?54Imw?B_ zdJ`6x%%4-9`nOl)sqWi?utbqX(rX}4#@mU(kVuIB5VUkM-jzwh0_6)Ps1znQ-&h9< znUt&UyTn!{h+!d)q0|aF#P+oc$n6Oxo6Ni&2=Az&L(ZRjeTqygEJx9ByGa_7AG85) ziQ?T*#YQ2_cL@9xOIGJc^^tGEowZ_dfrBa}#n(paj=n5&yD>Kbv_Hsp;2bGXiiXl2 zApW$`7mS876ucM}9o%4fMRD(wT+FHVq&4~{AetFDU;KWQns2K%#-r3kDU=Xlt|=`E z*>C0Is5}7|1aCJY#K=+%p}0Y6B?=9R2dcw_Mg-naTf_w5Hy-|a zpAWymi+xl0jn7#7XTWc;>Te3a@$gkUw>}UxBo?tNWT10&8-Al2n%o}@zVVG$dN=q6 zIHlg+9Kbimb&!7Jg^q5#%sMB)M9A+15NLM3HipWybmTM zb>aumfa?9d?caE%OCx&Q!_L2;N5t7Qtn_~Ljc>frd(bzA*LfHE#L1LURjaol_bTi;2v_lmtZuciHX5(u-o^ea;#JVVeFt8} z{NkS&ucA_{EY24f7jpC47nbMlpWpsY72~Dl{`~gR{7R7#?sKC6D{8G4wZ+E-beTw2 zsJB4Ye_{VFP?7AD+fSM^XSErk9PjN9@98~c&~NK~op!ADO}*aDe<96te|f+RcVOo> ze#`c@5BGMTWej!S`DJ&j`dfCexxHH5+S@%`$+C@x#!qXQCJ+NOVW=9ZdS3s_bhg{O zI;P2z`sT@jTWpE|*{izdU8qPrN1W{E*}dnRy9ax_vwOch-(8(u-+g|txxTf(wYgh8 z)Nea$|9ro?ySr`|{p~N)|D36|SF(-mnOCd#k#GEs$KJvoc6_{&>7hsQhnMXpv8a{o ze_6@S1m?xlpTXd2r{QMcj+N=@*Um6RZK((*n@%{!qwk8ku-CbrCN^dbH$heb`$aHD zV;-_fv5?utF$=^#rI_=%Pync;BjC*K;`1btTMe3_m8Y7C(nHHRsM@Zf{f_-{g-muX{=e z*y|371k;y%RM*&Os1vF+pkI0ZKl?Xk!*cgliB@NI75S7vs&u+D3MO z474HYh_ayqtk+r*bW%uAF`AU1zoMzN%S%hIc=@(ST|t5p|D=M040yvfW>* zf*5(tcWk7qc-|`$>#YxMePjYXFdJ9y_xFKx7xR#eZ~~<1a-7jGz!-3k-03VYDCxYo z0@TaJw6G7mE3>oy-YmV~Kl#f^vCJNyHD)h+9bTzh-{)KuYTe7fTLaVk#>w+_{He;^ z{CZ_$b7|q_+F$(-dY|W;ueVE7g24*sz0U9=7QewFHcG{pYvsAh?L{n31BDIp+7Km{ zwTSXc@vBl|W39ZpxLUfsh~*ttL37Z+Zd8ijWDOf@tBWs}Z>^zH+}Y7c#IyR$*2YTq zb9rvAvQVj%62{hCu>{)l8@PRk!&9h#0s-j7)%ndu9la&~TA`@0fz7f&0{K%`E*48! zaef7}rLr)}W&s57dYkBWJ=qLx)Zs z*94tVunYQ607<7%IIG>{Ke<2_7tT73v+mKr=iKCD9UO-OI;MM-|HelE1^5$3JpU=z z1Df6_eC*w*frEF*|Mh}ugY)`zffqvv4BU<{-t*VaO|4aE|AO$df*VODJS)8s78HDh0z9>vV#O~8Y-*O<(!$*NoxlLO*K2WgXz z=C_6Mx7fFXK}XZ)KH5(jUo<@NXO2!e{&_F$WbrjKKe7MqP>uiIx*fYRUwkF0CIYeY zZ2JMPc);n@_xwCQ10hEc8Ds5sKfiqOwGQjE?5$4j`0u^7v(4AI{{Lg|&70e}l63FC z$%y_AB}cbq&nrR%z*TP9TqRNBHY8-VBW{EO1V9oZ7G5lp=udxtPv$wbkl-T8B0cZD z6EkBGKvkW}lPC9llH<&OK_$EOX>a`S>$3E$6Aa?;-+pb)#RJ!FyCmQhT{PT&?T!nN zZ@hNz@qx(__65;$`%@44E_-qZ@+NIWc1=~?&`e(I?BOtB&0-ma?NKx zrCn+v))tKhAF)^m=N=m|<5fP!i$TA;sex-|x%xfcH=57EvJZdghR>yC{y%Q_qu}jM zKzh_~D%oHDqs_zGkE4F${VB~C&&xj!YrmKI5&xgc>F0m^*ccB6IHvDg$Bof@4e5BE zX)LzjoVlj$;VJ$TZZ0lW_N82Hp@pS>hIx7)+pSOXCxXZHsdc1+j8egdD=#cB&(6=! zWpSsa*}1#mq%LJ)C&ip*i9Ag*;d)eD;=rsla0cqlYH2(cWiiBtsAon7@rMVWCfaB@ z)xMs;iU?D(IdfppR$l43MnBzV@)&~>XyK**%W+a=?%qQbC_OqiLThFysg>Ee6eX1- z6~Hw21g5EILM-&zu{e;RLjeh5UhBW$^<&kc0k72>caz=q)zxIJL&3Crt3(co{JaJM zr-ip0kMoUd%HTd(Q-J$a$Uvxhgn&HmqtfF?$<~N^FBG5wXR7Fex;pSW@X0Nhg!4US zT)g|>zaRXu`Rb3C`+g5}%6T#$V;}2+1x@xS+#{}~$@2LCipMQNV5UUN40^@8-HyjX z1A8J8KqVXoz(m2$rt(Uj{yX3-bRUkn#|I(}w{5o1Z#)l-abaFC_%g-LdO1e?@KWjs zMJ^uhy**gpG>H+wLV3qf45i^!UhT|#T8EztJvxL{M-pTzfALZ>!8z0(Ll9EYqh!^9 zk%(+i$*tJa5kRB>4}eu9YR83z*|~hEfLDnU>lob%-G3fYN&dN9VhBL;vM-_bLN%2$ zi3h4)we++*Y(2oGm4H@Tt}K2EXtk@rhk??_HpV6KUlO!-L*7M#4~bAc0)dXI%SZPDa$27I{{_nFje{X#VHymg zy&L}K#g!AMUi}KybFij{oQ%huLZ0RU-~WPfSKA7>jSS{^-w?cvt5kPOm144SVbW z<@7wJSfn>{#@9l^ro^f)8m(%ZiPK6BTCPMt(kZMCwV|ocME)ho_5K!XCMm$b13;y+ zxsfDTbl%N|xff{*TNF~eP&d|kBb>Mb^H6;Z(A&e^o)a!HQ$?*1p*v0;c-+yX8k?5( z+Nj)hvq>r=dD-d{fc{c?KH~9A<2?IKGV{yEyQee_n3ELVJ57t2laZuheRm;IT6Uk# z7dMuK1qT?*Ml5xa=Ll~FZA(FnsyEpH{5AiAHGye0$Hw?m`tG=->ewe zxkYONeGL4WFiAs=SO2|cR0kuAvSoPB3<887`4x9)xC6-{&N@Z_O>P>L9(sz5%26#l zl#wxNhekS_QYLH?z`0ifQ=hm*n&8)jNXJ@2ecCNF4vS>DSI)l6JR_^gK|x?m;%a9{ zqhWy^IlM=ct3E^{FWq`TR65HX0et`_&h%fa1`q^u%#Mf0%8ONBGH9kp~kTL<)AV(Zwm${E^yuL z&084Am#9ANbI`^)P^LKwnjnCuk&x2Qtj#1s6rdUOnG}t6G9J~@H%;1y{79aXX$FiM zXb$BmXA3iG0bx=;^>$Kbm$UiWN?=3G7~^(q-0; zEuO%hL)q;#cI)j4U9(^951|||?N3@@DwqlOygawCyiltANTgAd?Nj@GcEO+&IZ$rD z-(-94G-gnC8%)%3EajMH-WX!frsv2SV*tcKJa4u+>M2FuvEdv!RqN=V1m-9t3y&I6 zh-W`NuNy!7V9`VEP?xN8cCM17gh0NFN1?I+XVf#K(B?njcvpkhG43<1U?UV zKC0Phb5+=m`ZhgXw^mtN=?8L?2&KH`6HJ~|*MVtq8NoBKG>1tDyPf1?y)!l!W`lB3 zB8CtH?SJpmWxi^?zhHOVE|$X@*^$io6=2Wkcnq-+83jAZR2jd$YKg;lCS}YQ6zGh- zdWsM+>gQc$xi?V0iSkm+PF$zc_vQlseGRdE-*!>C>XS8)$I;%tUXj@XsWc=dqe1fu z#N<*-X?!;xM65v@d*TLygihg*y|TcA>-?L;(1mL85U_4)Q%S)@;=RHV7vt z((8A;4dIR})>ByDm(Ymw`}JfZT2pVTXz*O-k;@(-6p<&xzgC^(eUqvZh8^h$-s+!7 zIInk5JV@atn~RFDMr_T@3Covw(~I$mDuS6-oXU5F5bPC|6y$q}G>gHcgF>RAa7HvC zr4M{(a0@(E7;xafV6W@EFU)7CZ-RhRROXV`Xtd=+tF5_j(k@lv7^&+4wWH1H3rtO? z=$>&#RUE4#W_x8Y%TD{qYbp{nAS(rRHQWi2F~n+8oAde+L(!^8QKa8lM_VH>mo-61sQ&G&}FXA9)S0wr=s=!xGaiEPzVnoTo@lvpgBluC0Yw z@*R8!D*2-6L3j51 zc=X)FJeo*Y9$t5l5e`upN_4|yhOag+F|2MkE$=p%A)Xu`%;0cRf;A2?MLP&N%nw8R z$YFR3FGBD$hVmhu?~wyEq!UI4x%R{`)U-i)YUW^e@>txy6t1kJ@*1FU;{AaFSv<4% zs|tk(m5yR@CcccU8wt6ZHxu->>zw-fNndsqwd}}NtAvu=v4bDuD26kP*mv_QQ4?A! zIPTUS<#}Fiet?5-n#z!m~oett>DKw1|fEJewLe>B3?5?gZHwR6|j-9 zfPv4ThFA~ZML8@a5s{37BWR|jGIf(S2E0ul{UyuGY)3$Zd`2114dM^Frs0M3hQ%zu zrQkiNZmlAS&ib)=LuQWFq!ZRKXzx8hFuM>fEhfC*A|ZW&oTi$kwG?4kDau5S(KJW?uin>Prli=w*&Bf zUom+X{JnU#GyJ_<^^<32A|=GM7Voe@1z1vP(xxj*EQhZh_X$xMEQtvKRWb*H=c*g! z0Ey*kdrT}h$xn2?5l-*BQuvN&dXdH(Aqr?Fs$Nt9uQ+ML>|B$Am*J4|Abi(AQsu0N zYtTFkq|Awvcyk8~&0$gsKoW_zN^x{wg|y!ujwLBfWlsHM+?rT&aV3C6Jz|J&*VYgm z*SctNiR#@_%BOC_3r_mXBT?KVjo_zrZPD1L2#cag(%_e1(>&y2lpcm$_3BQx``BJqM1@gScZyu&{wKHPdJ&df!@L%Ru!5B-pqBw3&*QW z7jdrkIkjV|Z!$wF4n7akc}P#3$$!uxO){Nmd`Of_vO|JB?7ZNy_V}(LVPf%KJDm6( zlnrUaNB~h(@n^7N{(_@%LnYFcV*zgWe3(&V=i;Wgs+(B>A~4v!5rR1t!Ei@!v+d(oHo|X9r;yxCw`gI|wvDPW< zJtL4uQwYb$#KEHj=vbMyj4&n1M9pNXGfsY3uQwD>!_>T2o_v%%FF#5I-9a8GCF(Wl zNME0UuX{r*0d80N>L$h$fX*Xom)uGY6CX@c3vJQ))6Ia?B!(cDhikl2NJu0v2$7aV z2}7!|OXxhD&5d0{oM}kC7UDsoiMw0e7?~*r-bhbWRYGEOpb<;!{hk33-s^@uFIOq! z^Q4?}_)S70E)l+^P{5pj)R{$Tpa+TYoEWg6Oce3a^xN_RAInsvQ@_$=mAoLcoqg&= z)@S{Rx;`C)RIVIpoQLy*P4oy>qB)G0P8l-zrWqgK)#@u(mT_sw6^qqhT(304{Ebvy z<;Zx&pa>!u@+vP37moUvGMW}0tr--Tmt9-hJS352FQUcXDSPVTB^x_!<&p*IBF;{| zrYysmv8|e)Y-kFsaK+S?i4&~I$N(W1EpERV9PL0A{&+aG+xk43S_3!h#p=|w&G?`@ZNLb@`&DMo%hw}g5*~9@uK?nB3;x*M zY3q{oP6(c9eti=BSU?;kr&T~7^BG_2ttGVd08YmB2%ambCtqq2!t)xq$?r?io6si7 zKKnWYhNGD=L>kTJx@YA+2_!A-{Nanj#@~uE`h5v{J;>jv6{7VO(Xc*o+ zNv$xH_?`vRji8-HHhowu%msmA{tZsbuTvYFyHf{iQ`@bRsl8sZb->t80*uk!B7%3h zTy$!hE>JbGP5m8&(yvpDoz@Gyp}ys*rLm?qKhp!Nibz~#^Ks;e6)M@xLEbIxO@{Tn z@ihHUg!Qb9d2*!ZkB|v@M3khwtDzS@?vkVwzj&xo$PMDJKWx^)iw|A4?JmI z>$1k(ZL&H-i%9-`2S|w&J;~h9y8{^+9?9PZv?NK5q_*a44zD0*JoV3?(zMchf2@w# z;l=yY=HUIp?5wqR$Cypp`merqFf4%{oJyv_U~|aLO7)3@u}$HpC-y&4>otysrJ-$r z(rQ{kd}uGd)l*j2Yad^fKAfNY8XxJqmcBt)-KBf|`qw-weZ9Eq*a19ym1N!Xr<51W zX#QmE1^=@(=zrr%Ch=)Vo?fLOu^s6AuGO)IXe2y1XBPIOOvF$KLUV)R<3)O=@0e|& zhRN2*FI@Rawl!X+q6h#Lm#7en$+l)}B4fLE)c>4NKS@f)YgY*>wjNW$LLj&^22)b^ zN$OUaqd+47GPGliTEEbgK&2`nUeEWa>P6ol1C&X*9+yP8%U>*aM}6QYwUP3s_IwX~ z%rI4)YO7}2s!R$HtR1`44*+{L+lJ6P9*il%nT9Rn=3XV}1eQE+e+IHg3^}#cvsuT} z)Bi=DM%6GU9`lbB)fa~(`K*zWxRllP5A|tb6?Q!cY+-X0rv@(|UDaLiM$UU>IwKu# zWGZ{18!nA_6@I1TRov~$6nVlgMR=UF#dt~bUjLIA?@XWupC3?JYEZn^UZMI?p(1#S zB-V%89ul2av6JI-K1=ou!+B_yNf=r`0<8qB&}1LHo|-WO<-t9Q;Os~1{ZB`IA(W1i zxo5NU{wvkqJ79_Ne~6Mji5gc$3Q>dk@O}u!ILqw5g$HyHZ z{HmgW9g8=l<%R-W-gSoC&FCMY9}?$K56+es?#BYDjR+?LCNQwxC@-8fjpDl4vYyl@ zJ{77_EPCWEsa%MV4x&(l!ZwFJ)ra2hybQKY2D!t;_gkGBEQ z-$^@yrQI^V6t8GhsT~cH8hVKW`jJU89Tg6+$(#7Z5y-SB=&lpg)=K^?$q-5YExpT6 zuKmTYrQ{E0G4gtVU) zIj%w6dQ;x^-KA1cKdWpXCGKY;s}8BwtE!C_wLm=#Aawwz>o_uF44wsL{`~Y}XhjJs zN$nVVg%ytp{+_(82q@X_1SnMEhOTFD#SP#4*aSW84AeIt1=7xjn6+rP^v`T_`|)a|XIxnX7Df~9eCbE2n7g`IMbbaBEdljirr1NSlg6xrsPYW-!}<3 zCofuqUVUubuC5g?5>ZdO$fR}?M3p~j%a6csRHmD;v5o+{fUN<+?~z|d!(RBjVaqpf zsPYC?0H`s5Q92_d6*#HqNa82WzIi%MODmp>(5a8^D3q1>VGh>0>(y{qewpn~m`+{T z8!>vAXU$oTWi=g^r-~Zexlpyyp%_P6j}}xJB&u7Y<~DDE|0_Rf1|2tR4{87U62s5RPDX5^1Nm&@=#)o&!dK zh#REjmL?KMiy+~31nq$kirbSTecTjd6{@e`I=v50ht8ti$!fMXVg6vn75PTswFi_Y zvLF|d%|1Ng@-bHuHd6cEfP0FIQm&~X??b2MDtO2}{;+)!Q`Cg=>4k(Yg~I+>xfnu6 zwWU#E3Z+kWTqxxGNg=-{$!=-0Wc+pL9Psm1#_~Q?JuW zdF}fAywyja`uWgnOPbmpnPgA%&T6Oi8TODSqzA`@Y;aG)WN(DESwbzXnq@mgMaG@% z2&B3&>;w~w9BH(GEy5f4#C_Zwj3=w_m%8+o%Fw{J)$>9#BUkDgUu|w_P`9SXAW$`V zfESQ6hNeR!t4~g7IQS@tF&~>@ry_oY&TgL|0s*2=LctmnX=D)U$-JB!BQ56KW0?gP zfQR)gkO6C(Q)jjyyk|f1tGaN?_4XaAeA4$=cN@O1QeT`a-OFg`cP8S2PE-5YPGQW# zGR?RPg)s|r3zeIr$iOt)XsE)Ng}G;y`AJdaHh}v8Ih?d|qX-<7_u2sgVE$thj|!Oo z-Tq1Gv^Bnj=zlCQ+N-k{CJhppv<{onFloYoj~6%{v+n#8sq;oKT{}PlRWWIZ0}v$F zO=Ph736#%Von)X#U7e5s==-E$5ZvbK#EKle@r!rQs7v15-D8N$&f4a|;XkI=8S~Vk z*{ojrI0m{2@4rCq5AX=4X-OlN>bY?UMzOQD0ywbJ5%Q++C5Fo9(npLLf`U}@=V`|p zo6PDaZl*%_dNVhA;rmDY*EG!P@AJC=Jf|{SZz@={;tnR+t+)lF(Uk`+T zsKZ5Nro6m6fy*D-ah#|8_f>2B1eo@dJAkxvTDjm0b0jqDw})Kz4aoUlMpPF~Dr`Re zO2GYBk`i|Z+&7`Z^S)*D0v?Pe#jq2yPH&$`aALpbq2Dqq;wuLWq)G5EoSlHJ{WU{0 zR=;|piH6=uO#B|@A$ueNc{_c#g9wGd`z9~p2A7|=U;El6ESIiHn6gDdxZZy08xy}= z`FkpGncjc|zWvfwm(g=vOz1|^Se0^;&bME?5#+ZCq6t$1?``bDw1Bx~%Bv?EFH2Ub z{DvX%=jIsf27)oz!njoJ!LU>+Y4RPEvgnsgL|kGyhQ!V=#gr>j2pk6vn{_&w(f{mm zZm=6VsmY`d!3CD=o;s{|P-qa&NS;g|;&wfo@>~}_R7`)C7ee~8`fPrVBm{Le&!%!R zDxEJhRnX8_rdzwKPq0s4Z5<~3?>i>(bi_FgCh?>{_D z_O~}z4>uELZIY#5uO(}!o{dd||9Qg@&SY(Kef2Fr*h+Ly{!I4Xa*y5Q_tkY9$q9Nq z3)y{h$ny^O4i5fE0E?~d?Y-fzWP5M-B|k`}jc|dC{M96{!9EHV9*1ld1B9*Xji!AP zx(SX>)^iPZB>dy(2-DVc6OUpD06zthbb#{JsDH|JBots-)yxE>*&&;0P13b;g zhAlrMG&wtqJ-f*N|7m}t#!M&Q_pX3w+O5(l(?%J1)oY!U&WWtUMQ+s+uDEzydVDl6 z&$nP5owrU-F0f*oykx(d8Amxw?PYCOp%6>dE-~u}K({uy&j$p4V9e(Cx0Ir3^2%Nh z4dbty{5$-k@d*urGK4kqJp1t*#}QEWDT-K`V( z`m?_>Y&sQn2~C!Gj>FapadBov=6=1gyINie^wux8>-D4j-~07(r?iSQzhZ-Q2+L^* zD^w4Qsn}r zQK?m5IZ7$?fpi#4V=`QGeAb#Nz7XRw331j}M!4IJe!NT9fdXiM;`yW8BhLm$b9s6l z(VWveW~f{CxRWFLD2cMK3>nQk00FVXE--l^-n+KCwztx}fbmnRlEfzpa+Y5-5mZtO zjq}`%8%F~o11m?3lX`lyA%r1)pPdEhLPV+A8WYX{Z}6P3%pEM8!?lCGjm@{Hv&USG z5>V-PO(!w=cP)HUWG4M|#3B8}f(A3xB*fRV&mi~;5pn~5D)7(xDeVp8;$@YPuHJ(>-VPcFfVJh_33So9m%OFQDs_P^l z*^U(=9G?&ixi60z_3pVCVx`e8ac{tQ&tSFEc&M8y*>g0^?Z*c`Ij?h{4slhJVEP%_ zQ%^1I$m8axMm5hiA36v3Ifsp5r%t+HWjs8I#2W#b+1Jb- z7Qi>cIXxj1lRv#jjXns6mo|(5VuOK5Oj?9qB<`RK_DsC14)>}4;%f<0(8qJ)1mY;QV@A3Th}$sp`O+aBXkxI0%Y-jCh?1%z zI5aBQe@gygLCCVIwT;zRyX$W@SN0hWy?OBR50%nsxd=;g<5(jXo%W}d)A8`^Vy4fG z%qW5FoADVm1v4urB_JJ8>59fG0yKmgCHUe$MqGl9?~_(eITiFR=X?p z&pg=V8@~WQ?LA){Pud#z@vM27{m$x)^jv9=8hsO^@fAi*Lu8pmz{e6~C@-GSQ9Ql`mg5QBI%4Q1We=2E1d1IHz$MbMGVG3rX#@vNqsJk8UuWX7HX+$OXrT`7ACclwED}=|D``K+qexh?o!xy2RZb>Y~_z6=HYU z>@Z`|`mlR8N`LJHC$HSs;V0!*2jvUCkEfroB%XEgRDUE;SRed}^2qcWm4J98xuKeR z77=&wt1syoTKbz8XSwa}95X(9Fp-zK$9~*L4dOq62xx=mai^ugU`{1MuM(eP3ZASW zFVkNi9=zDTq;(pK{xyl8POvIaw;H_K;$)CgTag{bh@{-fKjKSzgD0=He%#JWyU{Tc z5kDX$b}($}$4Gl_-bz)qhnO%A8P9r-ycyKHno5sT7~h&{BQ)c}$Ne+34t_`c0x1s{ zUf$(T?C1s4V*mUTY8MECY&^>errWgk341f_p60Ijz(-`NEBW0Yka%cHF6Z9q1D}nL z+J&=lVlzBSCw(l831ao^1e31L0}FOmN2y}AW2MnMN!9H+VE0akaP1|DH8>fJF+C^n2m?u_DsziLCh$qoKp~ANfj?<|8!b$w z`f2GEI;Lm`kVjzT%_M0>8j>u9PvN;WaP#KX=IS<<%B$cq5MPiBal4Pc|7vsNuy!CL zr`1JeHU|@p$KiSe5lvGL3-MM| zAQnl~IAf-~i{T4mmwJXyx4<*q)BZWhGt8EP)p+VmGeMm`KJAaNjZRx1NsC7ApuB=d z{`mpMp6nKw)_uS8{?!;^LFp(i3#b}-#V2>~w48funb??Gt@ptZ%!zk`a|}dZX@8dW zkF-mdL8_{KR{vDjk-;B`pJPXTzz*vTQfc?0)#I(3-Q4p&w7VaovMic7XFdw{s_^J? z<4i*Yq2)X~Tu~4oZZEziA71m#!5IA1PUmp)bsu6%V8Ss&58>9A&N|~WCas@#CdiBK z8Fi4-eUnZZ)Wkf$O3jZaXM>_f*d`Er3=9yl?NwO5b%)U1>NY|37ev)LDQ6mu#c=Es z36Y#N@D-8T?akd+t9JaDM-7skWOq)^Fu#$u`8+zF!tamu`%@%75Q8ejc`!F)A4K*)y>oXv+ z@e(YP2%DTxON2%Phbq`k{e8EN7tn7`k|QT-IzY4+osaFE_05-?cJNk)XQkljOo}?A&#+m6M(Z zVZqUt17CY5skEq~MF@KT3wi8r&0>gcX;$ zCm#e(s^BJ~7c^~33?sX89Az`E6q%R~o-wfo1UuGk{3))*klLEF_C!I};@dyZG(x!X z=L+?0?IB0|lGm)WuTzkhoP?F?6PasxehmC+;kP@RdzHKy&-vG(>CG@W1r}}eDa|UX zzXsooy7i(-Oi2nMvU)##g%} zq0q!>$$aJkb|bdu+@)h9?_HwCLSW|v2vYI@c7?+Y`bTDa}=`=zJJ1%!}g~-nr?!ErS@Dw+Y*raXRf8L#_Fzy z3`1&peb65LdAsIXM|IU+RaC|Bcvv1@H4z9Eo=wyWUr~&}*yGwOJ?R4y3qCKH3C$aA za3qw1_N@}3U-Mk;tW#GL*i6A>3`S&EV?tbGq}ps|R%;t4QTkfb^ANaeP6Cx(`^dZY z?eyF~e7n89^}AjY-bG0AyemNsFvn=B!R`8_xOB8~sja@~^ar!$iAxOMP7Gp;(Mvd& z-E+AMlbyL5N(1ldiVl5@Q&s{V_Z*qhLI0%LlF?X6;-e2a>G*p8Z6VL3)cEjy{XNmV zkDWfXQWKp-QNHwv67<%kG}8H}I>E$CvR3@YuLp?p%aTGRkyL|UP@i+FMRxFRwN}$E zD46+PPW1%0{R6tM`Cg_6PDh8~w@Sg7P2FJ7!ifA&CV9^MlgpmFKBaSFkfRb9=mZ7_ zXnkcf^M=>EcIQmh4C@$scQ8}e$s@nnJk(p9k)xN#&-NB2`jL|NZOY<{78RbQTXv8KJWqak$A<4QjI;}2j+XGCh0k?Q!;=20!~qC@NH;=-`Tg5a+yuPaMD+|J64QG zdVkUGs5A8}Z;dIALAipYNHI5QLjU~*l@3>SJl3-4zYkfW@xtOfST$CdK~RO+uUK`| zS|H3+b)j-(Z+1-6-n2!U`H726^8??LmM6|Qn6AuvC51QLC{x~u`SI8jaG0jfDGND5 zqn=QN%h~3MR3fa|fOtNfPRp$|V*o#@ae{LXi_Q1hayqItt27MWB?pV z7DSmZwy`fKU5faRN2kwK8E*N>a%DEz*=ZazH!OQdwK1&{$=>m?<4|jO9TG{cOh`41+In{yYNmI#a%HPRK38Xw6~pL9 zB6;>BTd_)(g&s>oo1j6c&v-#OO>BVjb`x4it%aO|7~%s;O|nBmq_#q4Yw)0gf{me6 z`(=GNT~j(v?fqWQu#V?Pk6)d7SnfAUewv@9j$^4>otdl7vbTHZ#tvnkJ-z?($IWEd zuH$JQ5um35;cf4vHVsSjPK%H9mla+sG+ryRwA?5 z=s{PZwn~QdMZ6UpuT$m3WXZ{Ui<{T+U`P)2+V#Xdw-II5 z$*xjJu*nVYf{Uo<)A;0XlY0wajkZ<`%^pQ>lUAI2;y(Q~?Z)(5)k=(X0gDW6wya{E zf(QB%AUT_U>AjN6?=?*mifCem{4nm(n1&Ib;Z4e6|wp_&<1^pAnXXuW_ZX3FxZm|TU<{=wd1WXN}5791*9MZ?~qpTil-%Ba>M z>tpS#hvNn~;lul@+nM-U|Cyoa3Coe%kH#X7+Ko_<}LPKbH_%|Cpw-igLEC zot@2%tyPB19c)_p8A3p$K2Q!Bp4!1(J+Y}&NS7cGCeVMn&S1qW^#6gja2V2X2g*T> z%)Fw_6;p90x#l^3$jw9Lkq9}wG<9}qw5L`?#3HPSl0)+7Xe;T6VgGo9Rfk~IUplMj zXt@^G>Td>G!Y(vuu~F(U8R%F}xFbhMml7ASW_Vrdu?kkuWZe?_EU+(KRj1X3s3LMm zmkgcdbl)~oKagsF&_8A{mt<_W{ih4$3FI>r{ghNx*tzyYj%=!%i;^H?b`!5W%6Xpt za9V!jcr{XjEgt3aMmvbGK>joYQ7*9B^zp+Bd>9ZF!p%?&RNGRXiOdb}C@FgBxrQBr z`5-)m;b`2HymR##2ud?5abB}C)IN;`jWKC}|AC}o^q`a&9lp!ZICBwrXBx+TsF~hL*F`*uyK;Fd zy8r|pCqGK$!p?mZ zjur08RzO1OMna*$3es@4_%_#^HGJUH9&uuFq8R0VWG+#R^{n|;hHhl~{j9*0aZVKA z(GH{b*P}SK}=6wp2|7aX zftfv`#aO@K)xp0pI1LVb;LjjW5`sYJo-g>4bhc2@wsM#cJecBUAt0-s{Y*xw$fuVAyoNog=8*ZDr zMexJoOa;d9wtXtSZDs`{t10%ufp;lvM}(IQo0AecaziF$1INg&jT^0hr;c6ZNaHP> zs`j6mFo}k2V47^TscEWPN_dI!Brdm7eeD|{`*+YHaBIE8xo2S#bS`+5cFE=)Ylk8+ z9MH-o=an;h^>9X2^kXpsy5In`dNV$&$CgdeFg~-nOyU%2 z!;eDZ5(hwM$ZR4p^vH4+?VLvq>w@C8&Ahax$bp4ZZ*HM)L{K!mQVV(N(kjy`un!x} zfIZGGc{$i3RaTi}n{tZ1W4x2`0A_-DU+&`sy9<_Rea3y(QBAJ}>BCei*$xcJE+x=* zl=a9U35v!@UiIProAsr|npK$-pD{$@5;i>}2!tq*{Tq`TgpFA?esj0(WR{F`4!Ck? zQXIB43?s)K!2(ON3`r=nW$3&PrjibYnFgB*ukoV%@?ZyqlR6a-1KP~pkh9G(v)e2M zEi4#iPelE6n?#y|mBVHQos*q){fO0=L8`5DB7=G)j-xT1QvFW`Kw%OwtVD8Fb1w3@ zCQk&vgxO7LHX2(3z|`2208^)0Kho=9QN?y~O1o{DuwvH$L=qqaS*CeR7t!#{JOn#}2rI6pjx;DC zB3k6$0L5^(MwXge6M?J6HD@Tpb0pSl0JF0DQwD%-OC_8xXy7kWBo?j(h#-9ib+>6S z#b^k4jOYnPGTRQPN%jif9oRJV09aHdEQzgWBDTCpS`l~zCJWdOl(tJk>Xcowfujb| zSJ4ZQVv1)wv#tT0u(>O#y%{VSolll$FjlUrEiA<`u;bY$Moky9JzFE2ohyka#tF+q z>U!-WR9X!(z_xuJ=2RB_PQLiXHr}$;PGd@aw1iG~zzkHI^ z=zkeb=jR56C~Yo=$?2qEaI-TR>pm5c7Bf zPYh1_$T`q6o&=Ugv|{ayPF2fc3#MJC-jw2I6SKI8q`vId5FlrZ<02$uP&Gg(KoOF#=^`J20vB+Uz`7Ojm+`)N>`a``CxN# z#5@dRIC>n*{(uO4(CiALCA6c}k+txab9YS&cB;B5*Ca*|{2-p=KQV!(r8mZ1)7KKf z{qV@j0&DD@jEPpk;WaLjK_iFMRH?i4IMn7&{h{|JfH9kHGE4hsWf>e&60(x~FA#xt znDS}^$$pI#OJyU?pu{AFP@9QBiBpt8C!x!Crdpk!nXk-OwRzYAbdHXmO|P@_%z3QK z^`BAf35`MU0JfdZUz0pdZ?ROKo8za)_0Q8p47e^Qa;K-J7~V*#jmQE?F(`>hKLi7y zl`PNB@@>i?wf`iGv;$X?w}-2Io_|*EPkWZ0G&Ln^P)r_UNT9xL&bbxnhk3Zy}!K28v-iZ#KLEk9hCFhb=K8DEt%J0)d1HI#U4jSuR=mZunO#ktUNPh z(bcA2@emZLmjp_jT_k-X##aWkPIxShs z(Js#JtwoyhlRklkx!kPs0hgE&ig%f+L!M=>Fy`rFzL(LD>Hupw0t+6|@TszbtjIw| ziJsxa(HrpY@-qW7T4+MiVT7hKQpo?B$}*>?XJ)2qT$uZTV^t6yAWkr{u#e(M1byVi z`oCJAInTDKB z`H4h-xQyF{-`iTEQ^qp6mrQ9$%F}W`504!~3XB<|qsob#cgS;KwVm2J=;Je*Kn{Nl zPId0*B~fSHJ9=d1H`sJwJ@WMu=uA`^C9Z0#(L4K7v4jOM8Bo`y;_<4*TiUDO z-{27>|16j0fgd#OCgzSDL>>z?1GKnuZurc^aI=z#f0id)lD%}~0Xt2g;>DZ#b8~mT zW(`Iy)?(!6#de7mP+ibVc0=CmC58&q#evgo3sRAvrmP^AfzffLiDd=m;rmIq5V4t? zP;*NmN4$&y#Nm*V(pYX5kEvK6G)44-Gl6PJvU(N>CLoPqFoa!>kGjP7$N*kLnnuiI zkEJb4nNra_)Dd6-`uz#A1`nI-@(U2JIh+gev(G@KW5sajoO_MvmS_=Luk9%gdyJW< z%v0clumNHa*}Nj~9ruFAW-grg0FXy0g4HB=+jY0RFmO)kJ`)-u)o6bDA!1b9_VVkS zdy$POUEmgMtZorDAqLRWQ>lnlGcwv1tqE>5AF3~#YN){p0j+*FeU@Y))->-XO0Vzj zv2Xz_VvKRXF|fR}Ls4FKmjfJitNq;9=JfSCDKSc3qS=;6+J~E}(nS8X$;@!ZCTnl5 zdCATv@6@14uI~CZU3mu)>`se9{tA&jQUjXuk~&0+x-0LdMhMdvP9yHC7i1$M{f%t4 zv^&3*OjqV(ND_yjRZ3|HY)?$79ABi!P8OH-7t}TcGTJJnvN%Jaiy$a;m-Z)cd9O+b_=6+tSn zLc4?L=rOu7ltVxV`}tH_NMXwM*8(8{|SP zRl+-SMwC_$ZW`?oED;rCVF(!sjwzbu>Xhb_#FRw<1WKoWfp>*7Eyd}Q$bGFC+ZRW# zhSZZ>C|?H`h=VXlR5D@a29yL}n&>P_-Ao+{Q!Q{oyy3^Ngi98S?DG1%mQTQPG~QVyxvALA`lgNZQ~mL0kfxh zMwvohwMeR3@ns~G_Kdv{1+(ArsC6O}II(6;k~S8L45(3+CPrp{1WpD&PBt7pK+bTE z+8UKC8%d6cggWcVzpb9f@LsuTI(KHr2^kx4WoN(>PPEbYLVb%%8upoROMu>2Y9k0A zD&5TffuDGTEvyl<2gUW=A9gay6RxbOn=JxX zb~$&bTP3L>NcXT=>=g1tw=~V&MvwC-#WQ@5WbSbf)6!a<0t9BN!heRZt@m~l*KAXJ zQp)!PAu=MSG|FsUihHQIXqnxrtw58p-=eFV?2_`w;x1Kn!cZI)?&1q3R%!LPfV*(s zbTKd1LRfZgRpB`Hy?b0}?!{F6y1nFD7iyUlYYvh)cSQCiR{ zE-Xl8R$)@W?IFo=cFCMfFFV&U)h%FcOgQ=_R3vWIYEipzrQ5ZzRmfl|qNkXzmS@EC zQWX?T0}ZN4KRv5$iwDN|H%5KUBqc7)k%A7jpo{IbqeQRUOLK_j%u#2c&c0KYW&(yc zG&pq$6>2eUQzWEwqANXNO(_n2Y1RPyIK36lxa%vbKbVe7Mk!Td5MHR?CTA5~Ho_#MMNfp$&-ntj*4|r@l2}$n=qTrzk{4<2*YTPZZ;fMM*{sE0YVB zTMftJRuYNAHf{#;( zdqO03Hreiv2@I3;ih|dDDW|+Rh_LzD#hHaU{q#lsbMe!q z*(IAx6j><005_iLR65rJxIRpOISj$zTc0b@SzVq7=rjM^g}H?p`Wh+{s9B)E>Oq4E z$59NMOXLElPlpBbK{*QQ$=OEPO;AW=mn)bV2S21jP3#!9kNgS7yeF}L(48-HVo_Lf z6?g1$l4Z?Vr0m*L?1rf{jYc)mN^95n;+azB+pfqxa?fz)`3Le71B2zm7X{H{oXKzP zQ~}?w6Ctl8o;ke_iX!9VND(h^Yq3YG(1f%PceW7Kgm*0!gX?U>^5WcbCA1SPm*JH= z!Gcz*S$KVR{#kYYS>-zqOHG?M=!ey))XkZLmgJ#3C2I`D*i0VJmKmP(v{Gfv@cqTu z*Do*a!KbC7XfF3BRK7!hLTW_bFif%hw7gJ#I@CZg<}l8J8EP{T8OQ^;`x^|0Ui*wP z;bikO#)Op(#?e}YJX(WCcY8*qyqG50(t3}94Djp?& zphn6S{3}HkMIuJ4{APky=d+g`(bdk|;&iE4 z+T>3pApafmHpD&=P3|MtqzH9tq>Bi*4ev}mw2(_Alz+{TP*G4#|0MKr8Z(~t%T1#5}sNLx>sC!3NoOm-wG zOh1=d+Elcu)-044^Kb5e&9B;Hv#fY>d~WOnL=T-=8(#X(LNvmK>{Ke1(lM4DvxF~A z>wU`X+~DiZ#Mh5AbeROynl1lG)W0=&UY=W6UMN-IglSC<4Z;yyz;jV=-LXqFYdBK8 z-W1X!9t3p^H1JYS`Ly1Ax?7%~TfV%CwYj#^+$;`~`|QC5Gc(w7 zi_~z|N%CRi&I}nqN7rQ->Le3k-Hd(=L8iK4EMM>^g#<|)mF6RbWU;_Cagdr@5L~RM z&~rm+OFgM=;GGRskN%n|$wbT6G|eqLtM^67@_a>vJXlNi!6|2^VEY6#kl|G_O01Aq zaHHJ(UqvP@hzlC9@}JmL8YmZ>c(v(Z+Tr35?jfOpg!Wf_EFx1u>UBvXs*jA-?6K73 z_rhu4935pcfrR2MP=`^CM@Gz;@l3fnZW7k~l0>VOA(kRRp{c@92z$G5FxLB}drF+D z^(blZf3Qvs3ld9Iz`eH-=S1@OM7S((7ne z2L@DYe4WxSJ$5hy#xMjH>h_aFZ~3 z2RNjHq^Q_Yi%Qf1!^L!trHYI|dS5u62s=s#3b~xY)rGn7>B1|r_0B^e$-w4fQKn42T)KGB>|@8nCgrASyB_G5N(KRw!^cr!E!my_2P0K z8fHmS_z#5LxwCY?$9)xx(0TGA(Z{G*yd7LKM8D}x@+LZS9P&%Yj9k8u+}Xa@G?XcQ z7d6j)ZQs)3{K8UH2AiwMFvsb?D#GFlgOrxy@tO*OgD42`M!_3Sr6NTZfz!5?k}wO< zqY0uE`;Y5a*mtj9!@EG!0U@2$Rp+Nc0b&8yTtAUU9-P|nqXFdkkiA%a0o zJSb`jjHX_Q1gMh?(g6r4mh(3gYQr(;Gj@=i=61&N3i+k*N>Lk8Ofw3O7F?>wCGlmp z`mONE`>q}ooWp6r0%@^D*)A&yP4WgHKt_v7o832E%X7;?6FXf4?C4d(ZuEPPX>4@a z92U#lNu}~eHk3AKp`77zl}@z_O4%4eC;%!YmL<7JGWjrBODhqHuzA5=@`2IE5M|P; z$Pu7~Xb};&BMD)1+?^;z!h%AzIe}T$8cYI@B~rso?FJz*c7Z#X&L*zPhp@Fn!3&0o zBXr+8u(&)MIGbrQGs)|BDuZcV-GH#X7kTuwVJa--vDlKxSD-fubDn`X7 zQ_+u~VC5Q?FV3gaj_XVaFbg9HZ<7lmzj}DEsHj_Zs<{<*q=}ViGKQj({$Xpg!z6)% zJSQTGN28Z88^({NEk!XnS3Ob*Tx)x@+b<;*c|cWDYHXi2Op_)aN)XLg^V>zM^YG~_ z!uVG=%w<4I@w!WW!?992xFBkkcrkBFA!O-kgQgEQJhU)%Nh_ZiG|Zw#`;#$F2h(O- ztIRRDNGGORwO8^3OTl9Q*W>b1YMbF*5HeTz8p61sE|Mo2g{hJ($hI}4Bc|wfprM((q9!&9xyTk$#w!m} zk%EG=*`a|+wdAc1W1O)o1S^0_s#Q_rD$yWHr(Vb)JXl} z0E>&fbi$zm(zWMAwWNbl^opQ9M(B4Nt*sxwGWG0{W~3&jvFz7Y(z z``{~_2fx@l;0J0xkNI>1X6mDppVV$|gTC zAsmA`wpC_uxP@+cep8DadK_m4Pf?C+oO|DtoSQR3qUYYN9zw|*ObuV4v{1+oFU?t$ z5E&4x@eLaP5o?_~;YRtFZdx#Mi&G3gD!ULwUW^xUuwg;F-WXR$K}BzcNY*})2@-=k zE$Um2p_wd%rmKv3Dac~lgep1}(c+MpYj27$%IXkVXOZv%tBIbhiS1_V90^k=?2j51 z55$PuG@)XW0vMw73*5V8DOao2r5M*ThQCQPhc&tkkR4E$Q`0z=nd}j)OUw?VkMNV& zEg6Ox<3G-YT%>coN?WaLCM1|ert|~pT1H28i59u}7OnPJuHjh)HoCw3OxtwD<uR8#$p=Gg@inu%ud%IUELq1Yr!BrW!+92lQ zHG_^-@s2hyR4tWV$vzP!YB=U*%S0S?~7?FJ~W9>YnDnDtXfweQoQ2_#uT)| zbxPff!4(ivCd|z@V$%5&kh9FvqoR^R13NKKBLRr%%qo1zJ9^AJWd#)`Do#hB)0kXS z_Ikt}R05!U(S56Dc0;UA{Kr}SCTlBOrA3P|CQzo{5zOQ&B`-12P0hKS$D}egj6TX5 zLHf2}4WijqM>wSg;#t9@^@Dg&125qXM7IrjA$5&!Id^`|A$3 zIe}2r9B$+|K-bo&<8L1FW1LvobULH5hTKjKl@+fr`0So`C)3nQc?+l`Qq=dt?%83}nq=F)VLV+pGc!6y^D$L5E6Y;(!Ado0Q*>COMR`nIvXj;|Y zQHKJjv5E7kB++PKM+F|FzOPPy;33jor>>zAPIheD9Lz%sC6ur%#9ckq6(5o6yUTf{ z7(5%pH41$yAIC+0Ocry>|#D zf|+jUv)gwwu97W`7E}ydK~lsXZxVuLma#_095Bq1 zzyBxQvDeWXt|GYPMWc^=BFDD z=WRz)sa|8CkbI@|0;7q-5b(DiBK}jUngf(>;dLQ{>2!sVkBlajmNT$7HW#axnu#aH zCA?y2$QNT{c2(`k!V<~JI7DHL8mI!Ch^7t#aJptDNLm)Qn6lqw^;B>H`&iY~R$WT6 zOg?Z_BM9RUY^{S+%EIqGAcLk^Ua~Vn;Q9755*8_G6pnnX6oANEG^fy2bWW-{C&}Ep z%ZU^8O01pn{gFV)iy$vzRb#Vp|0d%|;k_QkUqq}3;n6{Ca?AC9*dr^HG)ql!anohO z*kGNUqELx|Ov1LIOds?Gl*`%I2_*CrI*J~hud6DqRx9%{WwNokdy7Bm>rACTL1Z&C zi^fbrYM5=af&4%u;YJLt?hNV`b%Lk@gPZ2Ue)V#&u1|0XLXH{%szxr?9@ZG~%A8@O zQ%p4w&t%$FNX^KASnq#2>Jz22n+H+KGt~EJ1+r#XSX5tSZXk50x(j6$#8XVzIEN@Q zgLfOYI>$iV)+i*~LAl^qo&GIW!=OJS8@Dw8oxz%z?_4!*i+x^YcZ;R-wS2?oUtBnE zZAw$qY2lQG7QgZJhsZA=1n&Ia$i?@{JUp-H)%Phi2S}6+PEC>xKm$O0Mf)}SpTF?b z`Cbff>Q%6E{YrJQGCTLH41O_Ta522->lZ;Wup&2UTMIZ)Kcg+(DH#e#LzqdOiJwmmzJdPoi3#B zl9$}6UwDxt)Tv{-w<6l2W3cO{L3$@I=p{M=17w)q@t`#m8eEENzxczO1s0 zN^7OpCEnOT6-?quHYvzM{Sp!W;V%dw)W4djZ+w+CY81H-HMSs0O;6Je)T_sgdQwr( z8UDTxgu#gsyKPY-Map&noR~0!cvX{rQesYcQh%BZh9K6@t%1zrei6b_Q7Z!(p--=`k}-G#Vymhos0ahwqzF1VW4q0l!fw2`20dd`h_Y9>#`DOhfCh5^Ep{% z>b2#BuAF45&ZpDRh^%kU-~uWEqU#>fOnj$JuIE? zL=BWxd10AIYbO4rk+wPe=t;>Do-ZL^+$hV%(^iTJ`@L3Ht}LQOb#U@Y?2zbtu!BR% z#YA13yq3h@AxQVV=%G;Dd^t5MuG$4=2>>?d4Vb7d0n`^%L<}ktD#@nmcvXvmyri=0 z1w(t=P4r0rh?phD@J_q)sXiu#n(W}tf8{xy{{xu0xy+8^qtvW#u^uHKElav~G51Lf}mf)(^0IR#qRn#t?&*;$>mRF8p6 z)CyqHSQglhn|-mW-Y!9Iy#mq{b?RJ+mxM=%drr&zK6E2&{H3h(*O81cYdq3L zA^1|X7>Xo>n||@Y+hx<;-j&lqFlLgakXm^;TfsVs$$+=W=|Kl_)#Q(;zoCb-ccMVS zLkTxJogyJJkBJEW=@?)GA|H0xluGuK5DohST!n*H^G{+aWOIYpb5%TTv`BQ~J4>}Z z+&h-dF?3^nSU+x2RDQt5QLttGIWe9ZOg*%oivMWE#R8D1vD4&jLh|&PQr*sqb{}fr z$~g`O>YbBGrvwJnMY7%+)~SA&yeT;!q+kR7UMF2elLhbl<;U{QHsI3I{Ot0to`#mW ze3fAe$?eU$HEKT;i7PUggO8m%${Y31WS0khqOF3*zLxj*IWl#I#+YYD$?>>}0{*Gs z%~hh~WDfS45Ms@1GPZN99a6bS)ztlyQ;68$G(|;JUdFTf+a0qUy<%bWTK|ID-z%O~ zJZ_Y4*-1&(`Wam-XEI`V*`i}XWu+JflX zZXKv0ZA_^yym37}nKX}r_NXPlJW}oSFCL3%CTF-eeCVAfwJ`y344yALXm_P+d3j-B zX*u(9!fU7%x-T{~?b;gQwHpT+ZkI|&giukc!F+7VkvHJ+2% zStU=0L^;0{3gE6ZuPjyPXXkH}v_8OHfl7qQljQd{A+x_YI-Fs&+=7aOAbsBiC%4gh zPlDmXuyBaQ5Oh2wVrENBrn0+5X?QcX9X=3j>Vlf*Z_9O&sXMuRQb>IGE#Qxzt^T_OY-Vs zxh-H824?UOi(6W(E>&`iI|z%jdLyc6V^{1$tW7a%9_3#uQuTAr@C&F6S2a z?!fod8^?j8qy+Pus(QYf+thiV5iPFkutA%(mIYkEHj~3ja;lO<`(v5s%(cdbcjF1f|hd2*{C^RWjg5=9ntKM-ZzltgMjl^+pDc^PbJ~4 zzWO%cQW3Icn@ICL%z2vyuPo!AC_~Mze3E4r9%8>N;gDNfCaB1g>C~Ci^$;r~_&#A> z>y(cJw?KugRZl#`!YT#H9)%QXE0rE^Q-?$d7HGr=kq1kQi*tEai>tGCR9b*l?)Sw$ z%wJRN5|B&+E~{i90Ol_LI9-{CKM*GgUva^5Q@mpAa{gx>54 z|A*k+1zMFdK@<=BDDDc-X+5B?e!enJt8Ro(ErH_GW91p=_WaD!C7zwtj0MSF5mJ5^_XYBRH zEt7!s_yA<8@iA>o;EUY|x zNqbdv*btbsNbafhiFDXQtc!Y)f-e_EIt515sGG*O{)LBFTX`wZN(*d2hV*hXKyZ>q>xHLbBWH}@0Zc#lUPrg5CAOAKy@ATSD>Rnq4 z^@aJlM!mXtyi`BFF$N^WrOxx^*3n#Zu32f7>(%3>c`AeE8jbSOT>WTvu~|M|tk&ln zm1?uP*jhTCTQ1js1gCp2dLGyJBPX``9GLBYRb~x^e7LP1dU^+cq!hKupswfLlkVt8 z+6!CMq|TN>jIaJUx;Sq=575_nu;*W)zi>uEUt>hGF7iTEJGXVX2|w zV<~-almr~k=umb3EA#FZ&kFE)Ffips6)aqV=LT;3#aemxaDRtNRN{j(TN}@ke}g~` z-U!g-NQn8R1uD1}<`?ElubJh*JmpTQ^${@9mC@-%x5cpA4N3-|CABdo4TISCK!3A$ zC|9197oSxZCQU7-z@A}SYOVwnVnv?MC-Z1-qW{F zTBJ>8=$L^#DwX96Rba;cz%YiGo=<}rplX@gB&jM!R`qNwaBe2zIhEFoDWvW{{5&+< zrtQ7pVs)rBCNN`nyYy>F&)9T$Gc2EyS>`yAqGi%zM~mn0y#U2@2y$*^Re{yx!Jvu2;_>aS()%464`|IaaSmH1%09 zBS)wKoqpdI<89DAQd139t9&P&QUgklz%Ncmph+x{#{xz&4qrMK23mlur-&WoRbfPQ z81=v-k3qFYD3V`+N~RIQmA9STbo|?GKMb?rs2Mj51~$~k^Fm4U1sOy+nsxB{2=Vv78LxMI7)9VV% zq!(0{%0DM_3yU+1F{w=31~AU)Hk#g@_(?&Dm8)}e%v4y+lo;cI?xMuX`Po2A&*qn( zmFFfYvBt^hoOW7oWf-oUlU*~_RqH=vLZmuRN^s!WN~=dllfHTa^U?WU(m2&&{^L_z zlUBFXKNN<$9fY5w=R(fCh* zs#)eKA(0VHbHi3I`$EVSQ&bHGgvD3 zr-`p4{C{Rd`fX?~r`%e9{{3|C`R4Ay-tN=Ax6gN1pRVsdKiFK~+TYq_4vzlX*xovP zLqYVW_Jm1a+Mwjtt6pp#>}(x!*1{-pjYUYj1aTweRYa zBGxGbaR+CsJ3M^-)xp+b%?zQxgH>aebAiKWE3=jD^_R1A^R9QP0%~Kq7_&n9F;Mm5Dk6&rvS*QNlZa9Jw0!qD@xaTstG_ct)4RBXIMHNbvr+oR2HC- ztkR9y@i!%tr_eJxf=W}XuH*N)A&p>?OjP`$g}o!}rblCmv_AVIpP;nN>fnh*lCdw4 zpI642!C2~^TU#GG+eTX1nzlB~?okIj_KS^#RZC~HZP-U3RE2vphzD>RkYOw7s&mi6 zs6qV#V@(MJuuxWzk?fKxKEbC^Ogjko+&|gTbsK~vBj3Z#hVbH_m6Cu zK5L1dPU|ugCq;#U-bawq#w=4G7qD8I%I>QQqEFPJGT@$D>PfZ-aXl=IW!j$gRXSmS2|~?0S$mjHJaFqLyq|y~pKfDgu>Es4KObmQ=73V9f}5Fth85gj zc|7!W8>B+8u5eKlgu7rUmOdkJtn(zc@Ve^0jd({(Il-kE)*1 zjU9MHJB9_9TR4?#i-qN-hbz6kO(=z3%rZ>dm5mv(9H^&Py&QaF3fb5ytb}_n74CiM z)uH3$7pfm)=$UDruBNzVdLD7{v=Kvr5aiy6J`3J4^`qqcKV@J?>*-r0O2V7Y{WJP+t zQqy;CcD}rDbNq$|PsXG!=f+|#KAUGOW_gn73%GWR8G|c;{xPw$S{jdK-)12z{`d#A zY|kbeyg5Tt`$4lQGB5T*0k(uTs2=byi3Fs9qDS8i20 zACCSp{g3H1fPM2E$80cWxtb2fOvhFp$^(U+l1)~Mc}xf;{zd0pPwhc#v~J_vV0q?D z2GdkS*(u_wr~Kn=_;leZZOGY>%yN}4HN<6+FaNWk6J_6h?J&$;dgW!yCuQaa+k>a+&_a}QsIfEL zw~vr8UL^XPMabf3FJedE%P}4MNJ>PDR)pz&u)b;UCET-7>%`(9s;*4b7+_6$xT9nJ zQxb(}2@Z{Qf2V(;!xdFk;jfub!t(&s(@<+1QAu<=Y7ySyK>Bau!alap85j~2r?PD& z=3rXiyeJkr$}ta+tp8jtEiadVhSxe?C_skWXcp5eVh?v3h&unYT!{la%hgX|La1@p zKTEUoh*>(Ps5+1ZAljVZih@5fGT65;(uJ@QKv(ow!AMM}Z`HA~d>K}zdpC}&EM&`Q zILEP%*g_~|u#Uu|_cJB55~|1k-;~h5)09vz=D$BoMS7%{!;DZto*1N}WBCYsp@2+o z%F+ubXgw18?avZ;fbcsuM6V5;NC6-d2r4{JthW)7Xo-OcxpNsnGxXB(W56h^ve7Wt zEG6qH+Ekv$%-I*z>wiH-cSa6nWt|+WwQYkox`Z(4CZG zDjUQObn3-t%;*hQkTnua+*!aZL-x`aW_9;ihU)#)Fgrm38}6FqfTR^4bD`4_U^W&3 z+3i{#mJj_S>!$R%wPyZ(vV6UXEvr*MW3a?`jHH zp8?ayNtC9aQ4NkxFRc(P_AErKJyNpIZbQ71sF3sp&&k0R8yda=Pq8Kma^Ue~ooG43 zF;HZrrwM;BOI-c$$ATdEKu>#*@HWmwSSYV&CjX;k2xPQxvOl9q1TZl?NdU@0Z&!ne zane2Sa2X^+!;ZYuS+*6LtVB6r`{NQ(5iE4B;49^otYbThUct%%-mj-)1+JK(+WW@n z6LUEHVE8~cBeM=16ikm}4jkOhvu2B?S+j>JQbElS^~B@} zbd0EFB-YzU;lw~h7l6@lwYa&YB^y!DjCqqmx=LVbgOO4I$ZcZ-&!;~k*DgSXH4f%C zl|X(KHD?!W7$VGlJ2h>E8a6}5KQlUW_U4TyloOgDL6m=&hITlQ>(DsN_YWYZ7=~&t zX@Bv9gpgMUdF>f!o7y@FD`~KFH{6E3c0)?Z8}d6;b=9#n!VO&`Qa0f`VOy4$Z+={R zq2>mP@e70!&X8ijgiBNOT?hY8jYl0r2bs|6*(3 zZkJ4)g5zh$7kI#$l_^8&m?RiC+@SV(X)kR0@x2puX^HyHU{P;u)^4$=!y>a21Ph%rcvbvJ zkTuAeo86IBQW4CEfWX*9*O4lrV0$SwD-IMZqJw-Y5SF(XQbDB+gM6?!PXX(NvE zw3zIbNebNRk}0%?d`>n26dkuZk9>y2tt$^d&kIDc{$I9>Su4Ulc`xO%pt5(yr({V% zWJ5fXbh&@tp^d>~EbFTW94H!32{q@(c$Ak&&`hTbOa+e|3lmx?Bnj6|R{fI8bIXLD zuPAkW^A4S!l*>h>94$oDCG(tSx_c2>qob&Nn66%JvJ$ayw6D(b(5X73W9|RDH4}w)9I)dS*cO6GD=)$vR#z3s^}q(J7HVR$R|#yPa&%) zKvYjLX2_`-Sx(#R!B8&(vs<}DpR7Kb%X0gv1{arHDEBs`3fBBKYlMo!0`B{0s2K_p zW2&u&K-c9+tx-2FPm{Gi89A%fKu)SCRUcd1kf}$e9><(g1ts;ZOvvWRQY;dXvB*>Mw)AMQ~!01_n3+kU#ZX6NA9Q+WB&^ER&QYXFv=X9yefE*uYZ~^DpP=!h=e@X&- zX8e@f=J7Hly2|0k=fsr7z#gp1=CwFJrz|5Ic?lI|repP%prV6w9CrE-K*6fd`C!oD zjfRC$(N`GGyUNWt(_w~+PQ0S0>QJ#Xg38RDdc0<85QTzxF&)WWgLHE*iFtD8B1mmh z!^nVKl(TQoliBmgJiI!ntjssCm|qyhYjxkq8;ay8%B&AMNQ^b5EuiW)6T~rK-=Q`T z3-`^L^gijJn+CkW{&rdFOU&uNY9$gcCp!Zb?bwG+z!=DFz(P^tk_{i=@rd^whVqI= zI%e?kn7s%zLh8bp*yTb*a`DoW=#&iA9A6F#GTtJAp&SR9T$s6MlR%4wFP?i}YOK%6)~!;YaE}|PP9a1&L}d#%C}wUF$lS5e z7Kf$bgYnYEA&o#_B`!Wt1qH2i#L+H>%zS6)3#hhVjyU-3iJ(dvO0!LQ$ut5mIIddR zaeWgvW@$N|o}8&z+?Qj@$3*$Q#EHdgpdAsK1Sb|2*L872n2D}0*pc{90}KcN_5GN~J`u^+O5UZr3*uA+#7JK&zuRA3&Dc zVYj*vjF3YORh*Cq^mCprk@58!CmY6oM=Ln0ndo`%)q$q(H7VsKx+!aSAytHCu8jKl z91@Zq#ZXL44IG^Gk=kY&p?lQQbtX$OhDCJro@uQoOb7lXPL(&(M!w1)F<(UPvutP5 zPgE|bq%frS;8>+FU}N^jh7%)hQ`3VxD~DuN#sbn6Yrn#l0q*=k!jOy0MW(J%$bD7E z+1i3Mx#C?H42ild@whvd$9x30lf6`fRGbk8VVeDxO~^LO5IY^40#zUq6hw>3h@q-S zZCl7A&^*eKk+U;A8V@wzRYFQuoIB;*+lS$@I2=%uqy|l&Ue+YC_S7R%zCN;Nfhke*W4A+MIEPY^U|OVSLH)l( zfKQB47Qb4KrvlT#!+oXXty>Dv%X0|DaenmRNE_-dfksgINS(0yNX&1N+Tu`n<47KH z@*#Z$R1<52&%F!i>KrYm!O`)Fxz`C9Tb`m7b~-t}!}jN^es;@Bpwdv^D93YV%Zg7W zj6K!Q1_c3ZQ1#+bnPpK2@Mjdv2qPKF#_ zKf?07*vZdi$lFH_)HuwIcI%{1A~Vl}Rh+}%fg_cDMo1LQiZ3gtDV1pMx&oBAYWb95 zE_HutOtX2QaAslLXJ%Q5Cm(h!pjAfNQSz~XH5G1q0TL0~|A+WYzaLWrRZaW<5T8fq z&z?SI)}VLSSqEOJ*BbHB(_I?omrIu#GS=qimaEm${4c{lpO-(Ef1&&GdHJ_ry@2v> zgj|?a2hXO+g@pHo_FSG9(A7gB7iJ5~kPEdi5SwgW4~SftEiFSX3`;AQMY9KjF3i@I zK^JOW;BSFaB!s{R!!FF0mSGphr5VX;4+OxKEi41ziVG9TRv!kvFk4oJUZ`b(^SrEO z-8+0?x}X%kP|E?nu)L)8WZC{N!*ZRDK+ntnGw};kvgGg!MHs|q)qr0g48Sm3Sq5OJ zl|{rmC7&Mxz%W}^9>6fH%%BxX&fzvb1b|_-whX{fD?@-Tn*1aQD3HK=Mp(_3l_9K# zWi8~Eb^o}E*~0R;ieWEpXKgq2OydS8Y4J%o<|sE|A_!ot=)YH zl9ek95#LpdlC5M?DAf5A_#!&?ZDFXdX0u9x%~+bPZ10mn;{FB6p|4+9I;|tp%xv;a zhGMEi;v2)*U%jkqitVapy_uSmblm87&WQy-$a!Q6VJ0RpmTW=aY%49AX#MKj#L`2M zvAkIF0fa%hlEOU)4sw`$GW-^5wtW9XtgB4AKie{lrLyhW8ogYS>=ckZ#HuvhA-^un zOLGHW0c?O&r_`uUZ`MPstTIPsP)0Chlu3dxx6THy)JV%b#L_h2Bu>OAh^ZaM6;oHu z^zsK;SB5~HXZ@U|bhm=(|B*<~<>iS;&oU(c#z@cA%F;3z&nZw)b&-Vg9e{%7Gn^oB zo-5U7bIX%)f=cyfQI99n?Lt2O$Hn)+ZCV zVsMedT^4@PD(Nv_op2 zQgo`eFyJkc44gyfspV_L`Qk zRZ#<*D)eRVmufZ*&zNFAN+PHY)Of}gpIPl6KLS?gH2G&a(V%!p0_pa6on3w00(D?l z1%+HJbkuc!M_YzvU_MdVt{(|E(Mk#9FKj6kv8mZnN-a>j;1e2q$Pn z>y7NR|2I%X;4Xs^sdu$wqFsu(!4&a_NtT+OO}DxuAn_+&FfhTwgV|`#Rf;sZ!9Ce-CobKYInjb z&9Oo{PfK={E@x8d1wH9LBmA1^$vkdAC$a0`Np8Nd<@D z-Z`AL;8m@<0mLE)lI0=S1q=XX#0yLg7;;*{+fnB)Rw+4BEBl{J*5#TA9MD41BR)NJ znEhIt4o61mL54zQ}FvH|IHf(P7w$$N((`4Iy4dk6$T)gVCz2L`*17is1uB@MOZ+Lq6N0tU+@YPo{)gJsxMnC+NWhFpbrgeg zr`|zpS)ACg0fgaH=NU2?2mp06iWg8(Pry^JYA+66Kjww&>;JG9uCMdH z_bp{rCWqt4;XXdOH?8$TMgiw3bPW##W-Qrlr!mJf;WfZ&tIFT9)tSqfZN)9+=n}FQ zZ#Mp|l{ry~ijv_to8#d)1l&!#;j4s|dds=&AYVu~Aj^SNCKC(pSV70qPz3|qB!Q}7 zC}9`M&(n3WcoVn#2CfC1Ya=MVSuU3aIWeI(tn?bMvXKd=6SXu_)3c+ux3EL3k zpNtWbtOW`{X$*&=W;KamO~pzaztNH=$X*=P8U`3`xo4H&7awoyKmu3g zF<8}D>3NV4D{iWV!*}k+fXxuqm*z{99oVs^Vp4%N7?$Ow-7$WIdw1%PAl(r4X9zs| ztgu@QQ^T<^{bsrfounrpr<`AzP5yK4j97XJTul7UWne;MdijLi`8BeGCZ&v~DgyiC z3HRwpj57{EKNOB1Uq?3_-*`q-V8&{2Q{T z1W-!}wM&8H(IfXA?Gczba-T7JYAo0~J(<=&ZB4mBKwLbsCoE>j$FxxpOE{u%Baw#) z+G*qZqNUeCV;nkNXada=7{Ui+!)L*9*B5lj#^zJkv>cJ91@$LZ#-@>Y%M_$4UY&ft zK;nS4#3_|>OW7jcs(V}Fz>C0uT&Coz?poqxS5~vd)lzYmsiZ6{;Zc}QooUK4O4>}; zRG^(c3)4*a*e)LfN(A@l9yejOz3V2ObnJK6g&=OAvnx0#5}1d;J)=`Py8D8}Qwr-4 z6+ycdU#!GH=2b^MUz^~8dbWx`hAdTsx6Cg)c+2NA+uX))iS~GN1oqZ|L1XK zZ*RklySNe0=1zL6a^Hf^fAQQ`%rga%YnR8?ecM;EaX|Glp#vQB^o_=S5Z4 z_ySE7o7h&cA|1U-PaD#TG@Y-qDqxi^WgM$Y`JTul!B=6e`n*wN^maQ|FZM~>=HgIx z>{Z;(TNyf<5NtMnl=>+pk-KM@HFJWQShcafVA>$hh~a8=CT|o^N5cD+xA(DvG!tvJ zBQTen)M?1P_CY5Wy`JK}>SnB_OT9)07#H}yEr_zaos?H2rKk}AFpsgwJqdkdDGgA) zmJGB~e`rV0F(EKE(3~c$L8~MC#iRGi{^Bl_7oqLMm};h&a`;4Xnz_A0X9;LNQ#8|c zC4<`l*$tW;lr3kcL}IR-1-7t|a2_s~m-7!0 ziAj+0GU9MGJJWeM0ADO~MS)IItUUx&{QVakck3HLjV>kKOY~xA{+gp`_o&p?ay9k)nzuKtL&_6PMyx)HXLIMI6s|o~j1QdukhnHg-8n zo*d!8;2DM@f7drM@xXJq4sxY8*=#oGbWTPXFuV{BISipIG!2G^uf(r^edE(hE4M%WfN$y+P2R@EHhe|RUp&G>9Ad#QZZ^N7=9rI1{OiVG z%JxZ{Ed5#zX1q!Ix!!=-rb!<)sqVdKZSt+zMm1Z2U|8QFbUhhqCgVk75F9T5t`jv* zc(a_kiNPiu5~VIp>1-Qk@a+B+p&Dz$|-!YLZ4Q0$ml>$1CnjhdoBS---QAzZ;3#c5zuI>0Ac{uI+#Lzyw%uG?yN zX&yAE_Tdu>8zJ6^UAaokso|{DVJyIV`174(+CQoBZ1l+bhTl0&#@ZUF>KDpXz(f^K zFo5eQ@Sy6u>c$3(AV+Waj3rNU1wVP(RqR#7?v|I{lw#h}$Nxr$A3FN6{^sUmjqIFK zXY3lGa;y}kfa&c~r^^e7ZI0dSxryz_ z9rubg*zoi|4d7&ay{HmE_(`-hgag#~FJ2)z(R_>zhUlG~Q>*Wm-1f8Nxni9Vp44(N z_b4jB)AAklT_8~-;QyuCh8Im?aA+d12n41Iihs0qZgDI&!JMp%goWvI8p4czG}8n1 zS7SC}MJfI}X*Su?VyAw}g$la*gm{dQHRz#9%8J~W%usll8v7{lqLQ&4`0GO$qKoy& z3#y3^S3$zL9xfzi>~BtG(}nB;y)TH>Yl^8tE?u-Aa`tC2moB+K-Q`j)UADjT%XYn- zLw(otg@XOPluIwWznARqcl>pWy}xQ@a6;OgCE`sMU@@r9*y3k8KxzZaf-qGuW+=g< zsU&~Dj&ufbR&)jH2hAJUWd&G*-Mf+w8l?vD@;?Os*JXy|=AnHuQLm*F!@vu4? zuEeSSz}E$B(!-Z%=jJAKf%io0Ckn2!;z&G+;mY0?5=1f*z&>+J=y`nKkQaAF#jZMs zf^|CQS4bvsZi|t_0JxyN|JM&&Uxu$ln;rFNBh_E4g-P)sjN`>~=Qc~+e zQX@j*t1eeWQ`A@DX(U|m{*v_$G8XDZfDP6@WFWF=Ar`Ziba2@M5x*o9E=VM?ZtM5v z@=XZDg4@O#gi#7gLIvb@Q|lrN)0)?pm$MWtMsE7@N`57GzfS@+kj`gINEh#>&y`k- z`PJgg&h_Ls3|+3t8tSn8IL_T}ehD+glirHh34ge~^&k6t)nMCqEjK*z=W|8eHENgS z~Qh)-Y%wXbmk5B+w{eKh% z?sw^;|Kb41|2yB-!Kq6vx6MLH2zTCSX$agmpKhMMGmqQHKaoVx_RYn=t)znaGxjH? zHEK7HH|PfuGo42b@z1+CmEr^&SouED9H|Y;KAaLYsUrY!`gj(|%E0)RZ6ZN_ATuAy zht-jK@30W*(JLj_8Q>cb zuqo07QzLsEU7?0YLKr7)1ADJI{0j!cTSw1QdfS+)9jL8qx=CLL~ z4x?J)5LFJyq5RA^vKnW$?spz@<7pQ4#p;C#{t_Oy8gFUOR(O}Hbb272z54v=wUPqb z^oTa2X2WN(%E&!6&_KS#XCn`-jpx8rAM0>78I&k29ukgeg*Yw47pIJ_Rq6SxHgs-U zI45GCf7Cov%CYWr(yhvo6q0AxU(ivAekO zohy-l7rkC5X}_-Q)T+y}k}B`Nr%~Pbk{>IHZGI$M<2DHb<=JZ#nELLz^DdF!H9*LeBKrM#JG=IK0a;2`Xp3tzltyG!CU2@IB47R!)|ek2ahB2F*h<0oEv zH}yR+Fk*`KO?)ZnEjK=(d{9!^S!?4`rIPquu9y!_+H}hzVQLveQDHtZaGOK=%QH_g zVx3A5zTG-GNqAxI8NCjFwZaMUtZ`Q3sDbsYt97yh85jIvTdvhS81zWN?r8dzHiqau z>i?Zwyogv*oJ5Npf6mJ#7CmE5=u7geAX-&-fK6tDXo&7K2w1rd0)RarfAtH#TdP$$ zvo(YxK`Q7H;3mRAg`KTjZLSd@it8zC->shjlc5bf6%oR%)N?vG_KRf}`-wiD@v~Se zy1@PO{{j0$eH-*n1}x$M4to)TpBr@=ofe$wiWcTlK_7h(3Rw<9{C0L|AV)l#%m=i& zVsGZC)|rq*geaUojSoR#DyPAK7~g@O+NgHYmRvfQfq95qtal8!!R+-#G;)Or@_vwEGO`i7FWtlpFS9c#b@rR*Db?pKHP2iO~`2 zh!rWDwx3EJoq$RrrF289uwtaK@++0!W!jCq&$TWy>}54J=O$dB@CKAgPSSWJD1LDR zxopL(iA>03Ae13>Q>`wL5>WE7i@bMxubG`J+z_!wZ|IWJvRNd-clp2+)Dbo#Wkf;az%uv zvu@$2$DeF0km&UiZ&4j0XUKQ4LxPdj*hxdyeDGeeU{Q59pd`CzTixJdu7Hw6sH(0A z9_)gq2Q^cloPxsU%h(xrA_!$hP{VOg*mbEyc9WGt>XhkxJ$}MiDATXkA-9k!gY+Nq zmQwr?okU9|?Z-*XreEaq6HZ6P7zPu=60e)q3o=0s_*Dsc@q&mox(A{R)kyYBd9W)i z!ye_QlnO@U^NWznL7j_zJ>@;oXCfGN9Wt%s3X=H0Y-zg7B{BF!JtWv2|Y%{zrNEls|0(-%EERU9)5hHTocNVJFq?z9aUXIJiP=tA3A{^kEwu)l( z%#<40HaT@>VEVKb709T>8KZ}2d8@0B+7hjji+&fw?>JYjH*Jscj7Ui{Cr$HzkJ6 z8u9RP%$dlMg%OWvKVo+#U80&tk*j5QU{OQ$r^k>?P!6QPLYxfWV3V+Rs5{j?s<#8qAJ(_72SZeE9YW+?8>YlJCdK#EM&Qx z^bp@s44%(xFRhyS?oVU*iEH^4o)k2S88y4ubxr1G%Wn<>rA6vbU&mo`CNiNWK0spW z`r?G?S-M^2RHV!b;fhwJ2Qv4I+yh5QJ2(fy=yhkE>f5YbY)C(PdC(;$-!Q?3*U5jw zS$Fz`jD<+rG2BcvkVdagg0G?hkxX7Z}ENeWMHm8)2=a#U0$oo^V!&K zReEAV%4|>z8M;ESYU|H*EPhiFQ z7a~Q?96xLh@$<_G9BI%KRlqVkG_@HZ3_8u0Tk)0Yd7Z(#tIgLdjVZCoBuqPf;>67X zhWGbkz7!pJX1a@)_5AvlvZHeB?^XG-xN-dJWfu}v!yYld0C#hRkW3~XVx;G2jQV_} z3`Xnz1|NkSs;(N;CHWa|G5t~W<~u~ONjYZbnGGc`BiN4dii*rdTpnU3=?|{5@@^S( zhlI&tsos3IwuPZ_26OFS}K-id`KW3Yrw=F-?xmC6e$%FqI1b_vPhG z%&bMF=h8-rMpxqHGy?Sm`{F^)It4o$vI|%$HK3B?9iN+=QpELHnU`QY!$e_OFO%jjM>uwm2-)}QT%IvP3 zNb-!tT>p)H=ovmt0GeHUfFIY^7}<@goGM0B_|$Q5b#u$@Q)WUh)YQq<_O^9->f zlgU)myBH|cl5_@^;=b0yJ=h!x;y?HqpH_R+Tb*(39S|{OXoufiz^&E&A5djjPzae+ zcs{kVL{4(Pl+Kp2B>+GG)`9)9Y9RKZ3X>9`I#-4C$vUi{+K~8%*mUKg`C^*dbq>yW zKomqV2PvxmGw#V>hEgs~GMYG9)i|nL2PWH2Dhc=!XheY$cA}vxfoqDsk{7JWLn`$- zYECNV>M{u8RDh}_J^X)QL7|jo0-PWVEIP3QsS!E^UerkxLh+LYxR;M|q`RYIXW}|T z)PBGgT`IjJR}RH5L;A>q^HxEY&L3%XU_9oDZ_ky>?-sla_Fu_mg9UqK?Lb+SoCw@m z&>JTwDRiQA6}Gqf?YwmoyMKKQ{)q!BFx_7fs3eFF@DzuBQ2DYS)OKZaV^JfELq4p9 z&z!O4PYh;?N^xF9Ii!nb{N26eg(XnwQBK04yn`9)LD=KU!ImUEAUwzy7u9*<6!W>n zl2`hCU}du6i`yH$qY4{r`5#B)6VcJ#Q+(nOipe4D3dM)@jg8f#X8oMRj^3I0U%a^A zLuQ5K_bTHv&JD!8zgKetGVv9ipu`p?=l6pgP!HY16m2sE3RLiH04gTH9X}4>iWV%52jylx1mfw&F%!?I z3Ct-u`$x>3fYri2jzOIsIk#d|mgt<^`(AZaJGR4Nj7azez3$uXy;}9~=-tBCmc=aN z?$dVToT$1xY0B}?8xawYbb~(X_PIAF6FG>s9@lVM;KXS*)~}zEGMjXXB-iyE2I4(3 zl9)IL_KpBai*BLMG%{7rC4#!K$HU$E?>JRPlLUt75j|k}`jK16-Ti??Lr%r)`$_B5 z#px$prU+--0%uYsY91jY`KdF@Ct>J{u5pw5+T7($=HT74(LYeoL7u{JI=39_q=RY_ z5v()Hl7mW~f;cZ|QCi2`f!*Bq?XG24K4s72UA&pd>~edVg<{WkeEQ~3&fyQO;qx2e zqe4xPL8dTPr}ewo`$ViJdD30ezULdWPZkGOdp9$g|Isr+U!a|n@dRbnXeQDjCsT;@ zyf;As`?U&e$YUoWm1O>QPSe>VzmY=#CZ{3GS`mITs1ut&nRk@b0p8#wrQivld-Rm< zT(?;VXD;c zn;P2Jrozb@+LPb?L-4kUWAFP$hhy;W5&S_!7H`tLsT!Hxd6OT_Z92kM$3yHe4!?_< zROSI%3J|v(b2)FwE)dWoj)Am~s92O9ja;GC;oU1|1ta|9Sc(+veIf=*D@CT629o6z z%zf;5X@3~%2VMMl*jRO;kz#M%xeRx|dL@U=!mG)cX`UvsK+x&QyL{3c^UJ)^I0Xs4 zfj%9)dw2iPxbavwdNnUTs>Bk(7e)H{C4TR)G1W-c)_BpS*`W*(Frmout|MpjC&EFb z#8!16;Yx>NH~09|V@@b!g!3XDYenfv+WO<(UM%NrWx>o*+M)Sb%+Pc!O!7O@o=8zp z>Wwt+M^1sJBYebHKRI`8v|@7?-92?YSr*=O_xHd5T+e^`tz+6cQ&q`R&Zq6ET)soN z{829;2`&4Qb6Ns};NKQrEiLAXuNPAPh<>Jnn*E+HE#^yHQ0gD32zoe=VF{!m&z6@m zIi4-9EG`weM{0_@uov5G#vX7m`n5%rxV_r5=qGz_oXTMQ(7Pb!HB2wN81T}RJK z@e=nRQ}s={r#LKVSF!XInzOjE14K9Xmm%Jcnk?nt)i|-RxW2vRA#yV zO!|)d@C;ot#9?e170hJ}{#2PuhUo1{U-l`>i-u(*ji&MH!_n@JzQa);y|$OyyG(kq z*Vats#vtUKoc^-Xg1~;5+HZzxv7$+<_nUqKE&~9q8k<2=p_$KzJ8u_VGY16u85#sh zck-37L615bQ}_(|e6dt4ea3u@H`w<$b?I)8^`6kXYn_V{4$m}c}WhxMw#K_iI z0njT7nekW_Ap%#$iHx5={wAP4xDwIZ%-xU;8_B0O_IHD7npz)nqnxK?9ZRViyv*i; z+#-m0`R4<3xHYh!A28<_^SCOQ;D=*N8f@e|Y{}k!8vlS$*Ee;ht z&E@l`M49?o3*EC42PogG7Hx=@ZyaX$1DGx(NgMJlM?~2?keRC%Aa9=7Bc4c0yHN_l zZ(QJR)LJ3m$^RJa{(2yyQrr@Urb`ife^{+jCe6WAxm7 zSdw8cK}0tX?2tl3wQ5lGGy*!Zk4*co?p%vJZ;jSs8Gjo~p>hSV>cN64A!5$pz|7C4 z*yJz8UisW5HLOF&#OgL-=M9E=QVlyb$OmmnK3|>;qi(|x>n68=U^Y3s1f)qT_`>o$ z@O6_NUjFJ{7Y4s>9|XTPHHBY8hZXZfuzyHi-FLjzYIHX$wGTf4GDtU1kfN>XTB7KL zz)2*cE&YQ6-FW=Ypt;3)B5!Bd7%q|!WZVQ_vx#|%YI9|;8K!>Y12_@9bdy9uULazd zY5x>?$n{Y0(i)1x$a0CC)R#(XZ>-leIJlLvR*XO+!hhfEji||NljYY7>VlBR;|qg@ zsOz-M8Mpaw-XIAeiuPZQzKh>ovfjk#v2x`?SVgZy*0I;CkyGctjY-Ad}v3!5Z)K*r*V%S*R z%ay{T4LUuGCSm2h0FPFoGgZJ*&g9^5l(l%%HP`!5z)coo47wIJZ(OW7pkgLNN_pHMU z7;K~0p(pQ3`2|^sZwoX5U0zsP$Sq_urGowmep_y#m@cGq)=D*3kP?p3riPli{EBW+ z*cjy`rqPG(*LROK$5@x5v1S=fG}dA?RyVv{S&bia`J%OgeJ`2v+(XSX)G|ZOvY>ca zSjp1DPHv%;&Zn~rww~+&gDl9zS6dXk%S=W6iHbV-*Qx7Xlk! z-iDdCA?NZXYhSrX8sVZr4nOzemKbo3{k0KimmmpSU4BZJ8L~#al20*cg#md8WNt(NrNHJD@sJltiY z`m$quFcYyiPG~+YX5tnzuR~b?mY$W(I>vX@qbT8-N4msF#rCvtI09)NYrMprPdC!6 z##kt6yt(YM@scedmIcE5%!9RN?~a3~dvQL5PFoywm#OJ2v`z zhFV_EO@>M@=#^Y>IMzrRu|}!`PiIa-N+9%aDd&1-=kteaIo~tbT)8+kSYnoLumv|* z$C4<7h5)vQVOamGRyDtp7$^;+sf|5sYE_rqKqcK$z!465O>)kmR!HHm8f$5#Fj-W_ znqTo_&AYLh7FGlL`5b`sR;Tlqk!rqBo*HNgQnf`bxq%uhs*r~d6WR=Er1Mv;Xt|si z=%^!v*rRtd7{#<`DxXun@d*`>(;) zDjT2T;o34!ynb^G+y*gM!<+F2?a}^GWv8|Pyx>C7$qvWZ4>4*1pPc6GM>m-}3<#M1 zeW5SlW%+9sD@V`um1(AVs0o?srp{Dd(I08=e;rc?^LDbKF!jm!P%SByeuGmPvkJtc zzi0__%L$5u=P-k;{OJIzw)5c9r;z(?h%{zZe$W)ln&Y0hACOPu6{KnL55zmGP9 zSLNIr9ds|}@#BcmJLb6?QaSP0t@$$eMu~|yvM4N1Nl-c0567BEo=Lc!;J0XNa%|0O zR8&psh>ia^$1SN!ZqzRzoT(f;`qC$)H6CWA&0CbxdDON5_fn?R z1l9M+mdE2(+=P;?`lsM%ea@OsMyY5RD^gQ9f5vjIQy$Q=uy12*QC+&pH5Kl>plZ?9 z*Q&u)^VOj@Gz;4oaDbQ`frKy32GI>(t2T!tA4wq?&GIN!Py`Dw7U<3kSYUJlC)LnlHirm2S0$nrO0OU7Ssnpq1F=|^7 z9T*p?ji}ol3rEaK`C>GXt1voQXa41g78Ch{kSxHW`wJEi4=)a~H^INd1B_8jyh*oK zP)!U54w29uUwGRH9A?_A4@YSw!r*>~#VDJQl$6P&UV(Ks7QoGGU_AR!j|dKKEGqKv zfD4eNCcE|&^bW=8KhQG~=p1k&M@FUeX~0MiJS><+#*PeU85^ERp94j3K|(PLu@{hJ z=qe@b7r{0ekMSspAA3T>9Z>UIZ&5<|+$5VXF5@zO6MQ)g_I}%fW+PYAtu;>!ayYgw znt-Mn;Q@l$BH_~4($6Mn)q>MCqTN4lfu92}R%1}(r|bX=ZD|`U6e}d@<(P!-IT!vM z_ZWtc5-Q*qpss6SbIZXsfmC=qot;~kEizOGD(QXhHC$S@V}H2rmoVW>zqN{fi17-B z!4OJ49})2!!Y&EQsrvj<7)R)baJfHdImJo{NB6B#FIQSt1D|vsBnNuhxmDB=5UFmF z7&aQd45-G<=g19F>stBrntipel_~xFR9Y-%MWn3omr4yHy@xfp0Vdb?o@EWXT6<3X z6_XbvssRe@4;0UKDuYN6>{zb(ep*^0W2d4(5}gRQTDlei$PR2n5TLQ%Kv{W=yz2PD zL|DbTL&b`oI26LK7M61x_>lS~C0XAYK61Xb$BD2!F{}c2zkP%!qBqLLy+7|vBkNku`XA4TO_+Y_rYhe za(QB|wphE{Qf}|$o^F72!a{bSno`4~iIYWPH6S<7dOnxNK8e?;GC~y?K_ZE@i4XJ2 zth21+9>O-q^>c$(_h(y#>!?#HaF!n+svn_UlMITsO3t{g5HRJ%1M&v#3}_0w4PJ7o7QAp+peY)YgspC*BP)xuEy(SICFso}Ezg zrV7`<>X!y^&uTb#{rWXoQqN6bOOCwIhc+sQbI8jEm{?5Zm-C~1u ze_t}`D&;1Y0W6D7rl4kHHGQu2sSGqVP2ihOZxa5Y`svEXM(&KzEBR$w-3O2(M6>!p zTRdS$yFusmD&E;>nhxLl7O4RC&c(45E^-$@W$+i zJ^G_uIog>+y>5)jwe_~qU98bbC254BS;;Sx5g6)H>k|soxEpEqx6RO4IhqjoG+}Pg z)Dc&Tnf!l&GM~-b3Sx!MU%_~g_gM07iM-J8W?*E-J6LVE1Jd>JX?dx{`g#ykG7B-t zdsms@pXq^+x2;tsO*IipUlHbVro`izErKM{=5gG8I!*&hJ@n zN8R?EWaS@>hWF|`>;N;#n!Of-GmP`uhEl9L3AgTC@D=idYQglopRYGE8^>^vqq z3ioN8ju32&iP=AZ0$jkKu%?;QP{T}1eClAh$Q5o5+M50WsX~vG+__xY8#S9%88tq6 zG^r2SVnpLhEXTb}0hNXhj(i35I9vNm2|uUy0` z?JX{YRJH=emwXS5D>yUK+kDp{K}Cz@$g4u#m0M@*Wwxh&PPN8Y_Dmc2K5Q#$AOnuN zoL*0uh$hKl1w<-$>w6&`&7XUJvgPQ!x=7dT^XfLq4^f`f<~Qu)$dj6k4!$1%xp0k< z>;sFZ_?|GJNQ6^K)NSSUmQ6f+gW@onw~L!B@Qh6obp8Mb?t2USKKo)WFBeH6a;o8d z?9bD@8{{hs{k;}lBxe){vu1}C&k47l^;pj+qy>fX2HJ*T(y0r~@X}&}PI;u{%j#!c zNY>jhQN550l1Zmr$AcJDQKQDqKOk@Mv66GyBqyrG{H2S==(WmOOBaig_>hBAa%;^X zqsK1SdtYAVgNs_Xe|>|*AK=JhdPQOYj%!&Z)56!NL;=l-b6Lp*#=r=O#QyGxW)l8A zdyx;N-Zoj>E@-ic&i?CWuef!(nZ5FcBF&x!I)`IJ92e)qa1&eatGet|WuLOn2^qx; z>K5TP9mW|i#tr2qw6h+nKu^h%1Wi<;2Na_VR?9KqHQZ~7IV)vNuC_VD@b))>JtL6v zFK-RGMfTQ^O~hzyHs{|W%SeEg37IlFr`@}Euw=+EdYGBCD_y}U9^a=X4ti;A7*zyg zO9**5pEHVhTOb5FNwj@fCJ`wP-D5hq|1#{iyXqB_ZI;7wsaOvSOQ*}>>Ai&vhAr@R zrFl|p6dUvb9wgeTdhM(%W}5SHrsLZh(MTs}pNg)gkU@@+J}7i7RT z-cok@Z~1I(s_^s$3YL%u-*(PAqZgviw;+AwvpLE=N7w!4TVD$LB2nci5U^wYFMwh< zdi`rK(r}OoAw&p~q6b&buflxrvhk>q&ouQ}{hU!DE&YyU{0e}9lK`l128D#i!D($H3z`pd`zxriEhGv4!QDbw!B(e0>NO3 z?scyYHjiHajo6TYQo6m2$9Y%-V#PsR{*C6@CjtOlB>=#0gs(C7dIOUDG;{ZxN6?HQ z9qU1j$rIL+ztQznP$R&nPE z>TjuvmDLBA-QLxkTU+_6y7$Fle$3m@S6j8(YiL=$H&LHyN=C8~R81)Os+YF@oNdHxs8(#2@yD1fZ;D^s2mMQ|Zr!XjmuP5hw759|G^5xwiC8LhSFYz* zas*_ik^E;}R;`VUGbgAGpnsP#g7RhSH=Q$t`XJ17u!l3X%n_YkB#Wo$Ug$HT{AlJL za9lO-q%u0#BF00YR&im28n?EPN@Aqp$hUeMge9J*T|n3f-vDHzzx17{vy?nXPWaae zd7NR|S(Kj>nHZOhKjDi|B6bBVT`HB!EF5qa$lamyYuny#J9uEH(~zLz(UB~N4HaSK zM+%4`!C>WL1XBnYiE(pwloV9vq1gh3FbEECvpS~5Q#IjBF+{h~8mi-$ zpmF${_?y*`b7>${NO_zI$p~1%R9zhph=B>hclZ^EMVDA8WenT~B8?~>g4bh?xpcJg z;#k5^h<+)g%S+`l+E-!59KxY`_VQI`3klmS@F7sDZ)C?bk`$1QKVov=mHVXoz-zt5 z1YAtiq)#Fh<&22PnyGtA&md$;=!fPe2SZZQGVl9MY8Pg^TY}o$2me~^d2$aBe#vW@g#E_Z@ zKh8{uN?r%G$5L^0z|K$^MOrlNb4Tm6i9LI&bal;^uj6XP5!IoM1xg_WkhL1toFOgh zs&z@j3J!%sh3UMMD;RbaS^)?yI2X|T1y&E^q+8=~2yk}%sp#z=!XYcY-3dF0fxRyQ z87?#4xLnGYcq4F2Qz}SlxtuRhG)}=!iCTzUDZ30@#z$DBdVOS?;L8u!M(5X^CUS3+ z%||Q^T5!gKdZ9ZlDwkW$FRh|ZrL$};8c1!Tfn0{2%w9doHxhGyZI6@J+z}7j*>rLC^a{8PPdP<UQ8MT#4&iPHi*9O->-t=C= z)Bp!gzV(81>H%Z#G|}~w7y6kDjd(`q$=@{fOlHI^r@l=f9{d#?@fo5KjmZP}h>*gU z8TjyM>H*&47Uqg}Hi_XR6vU&$U)knS3n^v{1h)IiKon?CgmNR%W{H&?g*1%;0bn%b zJ@n6Abo2DDFgZlrYCvhs-_X5bN#bJe zUKIHu`Ozqoh!alZYOq8n4%3rN!~JBm^(Od4PxPM`_utyFUfloucCWIyvG?|{y0Lw* zUEMpX>90?ps@tIa#{gCp(I2HXuEACCDKq~S2S&53>C5H`DdLl5e#zl`93ECvxAUeg z)i)fXd-LjG=K*6lOzy=!-O5l+_I7z} zeB+o^kT2sn{}fXZ76~)CWpzfT;t|@m4`+3;fEufmKjBNf&BY@x#%KT-njr9F&3aL4 zx4a6~Z}nz7gC+#Dqr4=?^~T#`>4pD8uYaqT|6_0KA5KL4BmEC@?_0wcG84||fUPI; zlfT>})!NaEQLlb{j#>CN_hNYTYmS@vXZ2hE?Qbu9YT|M8v`!l-Ui5Y%ZrGbXxLuTk zp!{O|hVRvQBy?vINbdKa_ zZmV$m@Euwl>J6II4ZQ@8K1+$?HT`hh&RmA$Q}o;9H}BWiaHOMlG50X}3?A%Gy~A|F z=1m3fJ}r*vp^W!%$|hfCYdaccj4LKD^pPj63}EdvQlB0(j}R;-3dU93%A=|G&C>69 z09-$+CP!2%_S&uAliwlB4{iD@w$aqjJVU_VI@=HvoqE81+cr1(y9oxA@bjq!<~^ur zd|O47D0P>ubD(gGnLNRbaX>U>fNONS3mV0!rKHPV_xUtp zEMQ|IQV?)>QAzye0itz%qq28&Sp7p(<8`qmAy_;>pV>4X1_$5pEDKG-F|qlQx#roN zp7u=bp+X&_ra6>re6ikryHr>zf+x{P=Sz)3{xnxiV-%OlD@)CEv2hwMg?wPsGe_h< z^f!NOA3Zna(I=V(?~S$EGSUTeu9~vxSTW!G3+xH8aIFkpzlSJ*A05+YtWUHoJ~4rp@zcvR>X7Ii5F%nQ0an05wP3C{HCV9gLNj!5hCipnWKntW0&(p1|PA=);?=mg+ zoSfotD2;2>dXR0o;iMZMf3iK`g`GAB;WvN22TnZdlTH%CxlB6EfArAFP9A--DRJbb zDG*wg&og&>)}8$2n-wQ;8SX>OuR|xFW%LmZ{kQzYs+r4L(~4_-Uq;T_WjWLQfznE%lor#$fFfzuVlami1ZyBnKc zx8O-oKn8ueMJS+}``ni49`=+|GnlZ~Jmx?A$?GP1+^Hin3yC`fn-37RADs$g51YR7 z@U8I*4v#|bD$D%n)tmWamhFraSGKd%9UJ*W7Pw~WQGT8wJ3CbQ6jOFy)RO>Wu8Tal!S2+Y`o2_sJ1vGKayB7GH%M5$hld)Jp2NKWZh%U5oS7!#@45)P&aU z&G4GV=;(%MPJ5H?FS5^ngbju#Jga*wfJDddA8p+IR$s8u>>dHK7NHk~Vr+++ZouqA zi|*9Q%D|b7Z-b*T9yrh#qNv2|2>dc;4yP-f(rVat#RmfOJOStgA$E4?XVi1zsHDJM^% ztzPg-O#?jb9&B4^+?qv4ULsL?1e#*~TLccj823mS3>U5W$s&Pi{!b zu}%Q`iC&o}RHTps-B;cFqot2%XhJh&I}q7Zda-;X7;k+UZ#wo3^)aLu3ajcu`0T1R zHBdxCelMQ!+~EXV86G;JuL;H`UL}^d)54sfmsjwghX<_Tk9~q(*5s8TQK`(X;c|0ht?Yc{AVg&5LftkfS@KkS z>aat;>VWI{lD06)z=CA;{@a7MTw(`Kz$l9H0!9~Qe`*d1!U#J z2IQq!o%px01EppWoJ+_2Gy0WdG7L}Q_PE6D2DgP!)p;{)c30>7p7P8HZ*N z{V^tlK4N>0`*>h-g$|HNPL~wfKC)c#FLJx%SX`*H9G|$N174S zAWy+gXTzaf;5g%_6Rpft*72AzC$j1V?W}Pk7!0I#MQiv=L z3U6Xa9$&*QakpC{xR3&;R#yV_4y>G4K&SF*j|MJJHzK8wv^-bkOE;PQDx-;LRPM;?Y<*}xHDw6i! zKFqCMxtBdFJMB?h5^(_N9-Wf>BBfc=f)h=HH3qoPM2?p7rWm~`AJO5Ej|8H8ZqgIv zBLcGFYF-sWx%NmGKRP2|GHU8sFsAKzG44nOYkm_V zh8Pj6c9Xaq!wVt}6ISs>Q8ITc~-x*P2RoQvQ#1@`B(gNuacl{mEj+KrFcT+w!7 zpy#^|D7-cq&!3kaELT==%hepe$=@(-2uhjtHe&z*CAt_f7F-9Vf#n% zEmeJOi<*rNxIdCLvXLU~-XDkthOpWK^LkDj+KDo)S%y>Z-sbS1U~-yM-ndmP=yku- z(!6@6_2&gcrFeQpbzqrre%qqtNvgCeZ46T-`Tgj!PdJxXHO&|u7haa$BASzZa8FkXZQw5hza#AZe`Y>Zas zjN{<3O*utJj1fG38LH3=bGye1_NItSP{ceFSA zWW2M!dru5?xG?KGpUyTh7vts1`OM#3cC}F8|AMXEqe<3$Dpft$+ghw1>`J~yYcmxq z&XrcO1+}2Dv^pjB7Yi$e2gHhVE0e_jY;mGq#x+FlzTqHvHW^G1xk7++}dS? z#yl#CEbr+e51$+~J)K0E$355Qxjbj&?&O~0@SKyo6Y;}8_ur{6v>>eppZNd1V3R!I zTJRhHf5hLr{5uFL!LR)PcCf=g*X`fiT>T9$9qb2(sT8#5{Fk|+=bq4DwhuhBPvW24 zuoSV^Ja>ehiCFkkr>F*i8y~8hpLeR8LG8ENQFS-i|9n*0s?w7jgu=tk-TlLAuvs~( z1RG?GRt?Fmva!9hee_$fe^5QF9BuFKadUu{Ml{7WIE+rp5NB`YKRzFB|5Lu)nU|~U zh2lfrf7j!i+jqZOleqJ{Rzu+DRAbH`9x{qKuiM){ftu21Hn$kRwk9&#^a>g zGSVgXYC!C&kcmWg@-cHX?RK5Hkv;4@{}&wW1{+5rk@2lta>-j#3pd`dJh^%>`voh> zJ5mcEl-meOmZ2OJ{ng5Du!E*+YC40sahFJ#|6`i|u9Rbonv&|ux^fVbkSQNUigxrZ zv>s<cNNoz2EMB6RQOZQ)S1Nwt9H?ji2|n-{13|Kb7Upd3kEV z|L;A`Z7a3fcI~LLw^1bt5+ZsXh>CK>Tn-|0a`!N9RUB-{2pfo{QV^r^0Fuhv{ngaA z+^iHx$R%+IFhoK~^R3ByOQk|NRjV8ga1y|=%6$RqkE@rT}I78^NDXg{9Iey+CShQ&E8Ru^!UZf z0bO09DV7T>9Kd{e@&Ht~__MtFIP9W zl_w#;PjWVe{8GBGyi!QqSgqNnpcM`;?Va{b#~W6b)X@0V^78WQ=!ewNW-UmAjVvcA z!rDcOqEAH&IAf>$f-`_}wvdkoI;GQ=!7eIM**r0amT4z@uTHzG7)clsO6M zVR^mQX`yVJ;ji~&pU|B7oQt$-TN`~FM-O$~FYzAQU=Dw)?Ch*vsaBb%GIAjBZ(TYO z*e&g=duMB5lP`z*v7sc}=30M@uRnS(Kanxr4A)NL6}nJ#xJ@PWT4Q|KOixefgs3P* zd27@-v8>Tse6sP0jeeB)e&(cq|i3Ww~QY~?>?%m z@2@qkA^dn%Pe88?uP>8>7NAJIS??!aT*s|4?yjBGiETzN8?rD&K__Q{b)jQr?!5$zghiE%E?Qf#{H(YdPh2m!OutjmuX_sts@TU6$2Wi3EoE|vfo(nHGG`H zx|&{Ym*3W-*T5jNuHKDnonhlDdiDY^mU0r)7{>FNFl1=Xnj+(iLnWaq)zb^S%gTt=`J;?h|Fx*Tc+sC~8wG!^tqQ9~b=6 z4|z|U!s7Vs(M?@no!XI?jjMVgNj4X4!Ms5_vq+NK2x=P1V+PxAc*i-c58I&%VMVJ z4+(a{;^8}n8(RfsrMi*XsA#RuSd_`N#F`E2J#E45Eu##4Or`%|jn{|m8;5jIhtR}a zW?bAPM@W$+hY9(!{VU^soMN&f?aj)Ey^T-RwF3;S>fzRJ8E{05k>Fyzq^P2M-ELj2 zosU7uO7|$KjX1Df8LNDQ`n3d?VCiUI1oL%ld3vz{JVSbMjFbGc-XLf}`^7bp9^5rS zeRNNO(RbFuZ+zJJ8+QP&a?FL(Sz7}=UN&x$-(^Sz@LFqB?-?77rZ8%>eh157)&jmn zSdgRA=d8AxUuO|ygDq(dPm=5j8O7(R(kC3?Dk6vx0YmIp>~K>BZ0Bpk&bX234bHU4 zoyHi2b98&_&#$hU3jWXfbR7@e;F#{^*Bl=!j?k+}>ut37l|~+G{W^@^mdgcrZculd zdLedTjd01NK*~ro9Cj{8@!f90@uu~3_UU|AdQOT>Y~szZ0Ie zlH6`|3P&XIAYN>**o3EWdtTm*MK#C4(va53V3|5Mq=1e!BN~SwY{+SgC=KRLInK?^ zC9Fq6!CCnG?=14vI=~Vy6Z~kNus&l;h8-dr@enWgiEwj1x#U6N7;j@XNGbq6FXg@#($X zY@#8B=a~BbHHfg_v)gO@1|LH@uvV(&1!CMN-RK{|cpLlzK&#`uN zDBY&nK~gpbGj+z{nX1rlPFN5|ltgl2h8X<-4hIBMPY}`xx1RUT#?8d>CBBL}+HJtq zrq|3BP3dayN(4W}ZB=8|nWC8v-OotiL0g$p7SA2g%#fll&wHbx4$4;#Jtek95E+1m z-!CBS+17vw+vDBi4>UAdqZ(4JrKZO%EAKp)n6)%(G_2;axBn7c9pH$I9Q9;J68=b`WE?S+7NJdU;HkYm({WkOH@ZyPJ z@Vv^=>~QU})xiv*qC6?p`SFe`hx7|!y0zKQUFdDfQJZnh5I-bWW-i;~OL*dWdj`Mg zTz1DJavElG0ag>O{Pt>oJ-ZxC3xXX&G^ey-BVVcl$u}QR!BoMAy!F1SLxzdRp#)*$ zOiU!91U#Wof2X?lp<>7Hyxl}y5${g$nG1fB#>%4|I!36yT8hSMe+ z$xdI`i)dvBkC&82ToDhbO4{7nu6@#EiG^!JZ)$?%>B||z*iiq$Sd+!MWO%73phi;tXjq|`?Q9X+?RyHVY$8cD7VFEhhy z9Q#y4V$Pac(`N2NBvHac(5!dDX)1U*IPKhaK3sG6L>J|PniyrIh}@@OEJtvvMhNO$4o zO$10yyypReptf7x+jQhj;jtMv303wfwO+g1J3G}wRTRDK^xEB7kaTJ+Ml7}7OczRrjzQt*rl+IP0mepNwkgYI_OCcmy0gvtPFJ~A zGtVAHYM0&C1q?M-p`4|9Y~^d%Xy3qCn)naUng$_-+fDF(`Y=73?2_EeBeBn;Nv2-| zZ_bo#yCB7qy}irna@HN=h=S&C`U>{X#@&-~w*yYn2Ygh`2SC$&*x&lRxBhw0m><>M z1h}W|f~b)Bm?5F(P3)G7zEW6Gi(t+UVk{zP4y?4wwP`ZPycp7thZ62tBAX1G;qUa( zyK2>cUmKB;H{_h(u$;vRq$eiXD6XY&CZ!Ggr=;6Y-Md@e&nH!Rn1N1EH{EZsB@BxM z%xPIz=gO!PPV2`c`~hfm`&_=fP!d1e=9PzNIWDgJ?=v1D@w3r9_SYxYpAxbL)UPWq zbe6B;fW$p~Vmqzh=j(wx2Z!7HCWq=+zBs6r`;BT&UAz??3Rcr8j4=`MisRu!g23NTdLuBiyg3c=pLfFJL3nl1T0=vIF1pjo z%mrebRK*(>7TMaZ#*|`6)d=T+1)t?)g_LppD1!^hE8j&zn!oH*#dU+>sJY=e%GQ+s z?_=fgTaschU8q5tVWZWl+CY74WyDqhRKj@>x!MM3o@lSd8^=m!znGQz&iZ&3;^nd8 z`3x%;HZj!K!uk!jwWRXt>2S)Ms^9d!b`yX0$sm?3sJqQI^MXb12j{9IU);qlE2&|6 zc@ZXN1RK9YmNUblh;t@Yv@eF`%be?c4RNweAK~_}MM3NA#p@5zMyHP7 z<*;=XA}eQzXp)fS?ad5Z-!7e;yY1w=?Q8V)#v5e#Kj1WN)ONRzKIBW{m&4rfwvvI5 z@p7hIsS#;^Bwmr_Oz2A&usP^_O3`TCtHs0CFg$>k!Dno?ubuVgw}=eng+}Fs;nin2 zL`E(n-?nkqO5drx)*fAiUHiPVv;C_k3GKpJ+1Xoekse`EusPO-S8`}adUAafUblOL zY;Gno_^UI$-y&uM=IBe%&o&2-kTlp|w`A-~%(@KCO8fAXHbN^7vy71CO6_w{i_f!L62pY&oKNi5SWc)$vDiGHhFrA-I!Kh7g!a6qY3A^bidrR{q-w- zP6mlp8X@xusNoe;7&NK6eQC8XRjptzKTz1p6lZcZ_JAAAdX1IZK0r@WkK6;CqF80z)CPaCtFwZj z4fo)zOY=>$uVMT6xW)#nf>e}1c}WKK(({bI7MElA=V?c7c5zVF;B#+QN~K_T zw|=@vU7Hf67|#U#6}d?if=iS8yEw4n^k2IK?*E< znnE=}NmG3x3W-9wRI2eGRwKX{aD2O(Kzm^q-3>(C6ya?u5J>k|4TTnFs0-1n*ntBV zfwS^-=1l!{Tvo*15 zJXK4sjzqTzgtxF-TwX1$%u4yjD~uO41c&R~aL9V7d2y12 zhnS-dAo5*CVA^kjS-^7!Dv~k0!O2SuPU|-G+g-SCcSF401LbxP?k)&mcT_|GehX%p zSDL*WT7bB-z}k4rEWBM_AQyTf`u--E2b@cK1ESQ9uhOqXB=&EIk~n<6l%a#kmXpNc z=wQCBx_(gofHqi(vxq)D3TD?467s(yr#6w2rvU6esmMcEH_wfx`!sOe??Iw^f)|{9 zzyN1U9$kB*pt}Lb)O3n)cNzfJ?gM~sYIg2qqCFW)>hZRkSrL5lNJmz%Jl)4)%l-*4 zug_LoL{BDZ1YX_;{qyUgLB}^d6S9BP6qrW7qaMj5s2>68gld@3OmAPr5vPVb(4D9=i|gxH*1Fj=Msw^0?bGT-Fjv3 zQ_P8<$QB=u`R$fAI3nSY)ChFdS5;efD{pr{P8;Pm#Hg_DudJ{$m^3wm0OR}(5KLAo z+p|VF6l(XZafy&Ntl-#4LwFm~(JS=rXos1oOGelrGghd;M@owtQsjgY*$|%QWHVg` zyd32tFz^qe1BXEXPUwh?!43xPFjci?7kl86(Cgw7TY6__Bjq};Sknh(VVBEG%c=L_ zHkUBquP+rDoapAD~ zfV0RXEaGWZ%#`E^=EY&&1*UGk1Q(!pY2E8p>(1a|b=EdzcYG#P`yW91!tU$71cV8< zvy3CXq7N8IyQyFJ8~j%6Z`b-I()=S^&dwI)(Qdonq-qBgwmo27XD-dd);GTtt?$(4 z{KRzbTGq*`&gE{_0Yk!xqb%yz0@T zB~`~Mvm|vNpf3ERV>NZ8RAe5Vnt$bE6a4&hu)k9c_I*pVgI1kH`DXBHlMDoKBeo$L zRs2J2sL#Zp`mcj`@8Z+tL}q@aNFS9+bwfE{o>Q^wdZ?5q)eZUFYLPB(>Y*~DiyLMG z`5bjD(Xdg-j4k0khE0-h>>df4kchO@3u*`Zhex%Y?Y*iJRfG4y{#I(g1@HIwkJd?) z5B92GYCF{<>YJWVG}^dS(K6ieNzcL0cnjuD`l&L}w6T8~X*KE3NVhaHJ++-vd%Ng< zUsONF<5RMs!XY_fjlpp_o6XRu@mSwl)T0rU3|00~4 z`pGb3m}Y==x}@{yn?i1LZ(3w6{NIrr$y`jgE3O|^uBS+WNVx-qijV!DCC{B{qj0;OPvM-b$10A z$r@&7=>71LPmmrV^tnLq5t;{ZQ;ZMvzY}Y6`4gyoeZyLE&FC~LT|Y&X7^YZ^&GeJ^ zQVKBBaJ20Ec!t%tlo-4@4JWSE7+dN`8raA`-VL_KgE7E1vPGiJy}h6_NV4DhMl!Mp za$(!RW_ZQ_QK^=JV)5dmUOz(WIl^JuK!y81t|U=j;%eHV8`!T?gVAkAt@v4CB1pr! zXK);x%i&^qkpkU(VR3kR+V4^@xI!0=vlgTfKYDd_b>nzgV-5dkZYg>+UnX?@m`C%) z=+WE?Jj5PlJ>$-&_pJ)c7Lk|wf>T*&wmz<@!o_M@S>cAG-2*AD#2g&K^6$s`s6sFWFDsu^`sEdd}YUpAT^_4=qg z=BGj%dJl2KzmO^RC@gID(($Ug4HI?|7F9AX`n3DoI;? z?Wph`38Od^IqCz32}Dh9(b zdN+JyC){8;hB%wPY;)&!z!@HnNE6r2bwKbn;65BatXPJ$Ogr-10pTyR@4*KjcX3Hm zlxdbA4uV4P<(LLDSF8{a=*0D01gI^N2l5W(;(gcdm!PQBzPax>Y;EbUc(O6ru~>-OA=?@=J~8Ig)_|?hd~6vw78;wZ zJl;*6k>YYTXg@&yPdUiYpr8?0OcX{{TpjI+7c@IVcSax} z#2{9>2-R&6jgVo+cDfsrnKAD=34c0;Ha`X;hcKrDu5q*(v>f6&E}--93S8UB38GKJ zFsaz1**pkyZpFg{$+~?zLmC;I?-(ytZG;_fVrrzJ3)iv7+I39!B~LRuBshrrCk1G< zPMa+Xnn^0DK&bIyb?5Mqqq0Ss0omvB<88wuK3KkpG7q#@!l?d*6Tz7i9G*K|Qq%DG zesim%hq$xNVHQU`F?%Rb%XWME_F?fKL@_z1_}dZ_I{3+$D+hzGcF&m8ei!z`%G&b4 ziy1G38nHIE*Vy#Y6%*4qNkm4pg4RIpATX$&EYGMibo)O%=b&+P+;MgQTB(s9_+8t`vB)0jY2}>PWvJu#>4ON!Wl7mt?pW6i5pIRoIoND3@o30$f%Q!8NHlq`zYkwH9HQIy!@E5De(w#C{t)xjG=!b3P zaXyG_qJl=~k?=T_MgwMUw1mt}GbB@Y5W#*f?y%SxVT{60a{QWCi6@vcAbM~E{hh>uZ6g{kg>PxV2 z)(pCu^+E8GFC88XQ8-sv%>;8E)ifaXVx((SB#cPDx~gZjsvH z3P__s?c!+L1hMSgZ;&07kFqIwWHN%uPl;`}*kPM=N3yuEyNTT*W1tUB-04hScgUax zcEW*+D7)uo$$32&OSo8KKnfGt2wXqsONU$a2VzHEJ))3}k%9hhvu23Qh!U6uSXc%hZ&LiRi^O++t9LSpGZm2AYLmoBxaNg86qCSb=8)`w6v`U^Hy}Quu{f!>`l9)0Ob`i3+ zL#TEpnezPGoD6Hj+!XWx0f&y zRLx0(>y}zhO!yntJtgFZDb1LbX?w5jzQ--%+x zJ*KyKjgt>6(25fTFb=T{Bb3DSGt(?}sa!6v6bg>1mINkTURk+6v-CEYa9$|bpkU4b z69%lPe~q+m$@jO$h)BPpN0tjo#+f*K(eLW_s9V*f%?{l&W0P;F z2&RKv_>j<#>W=Z|M^g`e9HO{qeoUp-aZEsM6pY)+gZ*&Q`1sUHx#kp%V2aS_m%5bq zvRh=fQqJY>Co@Z627nx-L62FTT`exH<_ojP%nIFw9m9f8lD%Be`_9DQI}(-A9xrb< zYQ7`)S730nJ1$=|K=YdJHOxC^B}^;Xn1-jI87KvFDvfwnYB6uQF9{m+ErVb7Y)G+k zoIv*`xSe~=d#qxxO|t+bS0dvZ#&XW_Bgcb6-rL=;GZ_vk?)d}&+#C8N)EQN#Gw$|o zc9>Q*@a!Jf=e&wa;p8~$8A8^?{F1-fNZHxUd3cRwn7qV5sSM6wT@x!vUKnLE?Qy+6 z)rVRur|idJm|?zP5GK}VMiwE9k8jMXDdRlEm}Mz>@QW})Pz=PBrRYCjLWE_oNfd+c z@BpN}jrWJ72)Z7Pq-vq|C}kH1qViuKP_Xqe&hdR>c43^~i;Hh=>&;!-w2jV{6^zaP z$V$vOyZ7l`Th}?Ytjhx$@qUDsI@e$X4%K`W)f$%hv|RS@N!Z4$e_A5*_hgt8&=QAH z3u4?w^S9J-Bv$FE>GwOHOR32%D(~DczISYmFXEH&C>&yG^Pj94(-UaMzGHK0b?Xpw zg4zSJ+CMq&$n(2mhHrvjjWy2y@UO-^dG7JWxp9Z&eb^~{0XZTE$%h9FcS9VQk8X+U zDsdD0sT*uO;K@y6)I9pZ*s^v8COv@dcar@ zOc?NBO^pAIY$C~l`GY+&NufzL(aK2}p8v@1d2_5UJ+&O-Uqh)(RWR3ZO35OWfO8J~ zs286M%{L^|vWS>t97tC!p#0j?CJ}X9?$lY!0Fm8`VU9&I324dx>ij**CUI_aZHSzo z=E=Y~+LJrDi^*j1r|kgs6-lv7;Zf?fg7UTi`0Dz&EZzjyjJWxYuDBZJklW3Xz-&n& zVI9mFt`K(XR3<%Mc_wfEQ0ssdJDF)eB|YC}K^}SRAZ7k>D21D9@C_i|ZtFIliWB9=MY!75N^!g9q=qIsmC4(*vn*44UwbN#1E~ z-Fd-(>$b`D&{|7gFtgkeoA$14wQ|&Zt6o)C1kcETpn(H5K@YJ7aCG>qn3TYY%`-=f zhgarO`ZZK%m>ijYOV&%|_4C;U)Q%VdqmA0s=L@UK7t*~yZ12S`jqg!o*X=Y=L#VSc z|J#S|^dKvrXjT|2dW0EdXH%NpQ?<}1tG)PMWBneR_Nj*6m#0*$l0^4- zX5s}X^L%1mxkn)21s}zDrE$ZBAF#s4rzw5)ovmaxPuVMkeUqLw%Y&`@I3SWOk;t-PMiOkN;IiWv^+ z5C;L$an$;35$`2SOi49m%0blJ4kc0z5Y+>3p}J1|B*lf)CdTU~I2~t7kx~sMs{*c% zg{55vlj~XT!nQu7U5}uF{IRYp;e%RV7_4k!S9pZ)6q>`X{7P1xWj;;Mhb6=m##Pf# z$su4Bw3rl=*gGtXNUW`|`Ucxd5%k4BN;>P17xO6q>wv5ropTq^L#41vTII>bo`*qf05t-Vj*?cs!V)}3;39Ad_>Lv z$KIPaw{dOf-hT^K`3~(9$C7hJkN{`d(g8?9A|*~CD9OsrEmji%Nf6^j1EQ$9^?vsE z_pIIB=mr`DDIGITBIm@i(9<5)Uh{fZpLBJSb1LLj8hD+Y0ILh@n=mU&NvM%_FM9kL zuR)$K;>OVbD-VxhEhwvvB-AjS({+zeg(Yg9o_#M%WA(gXq~6K49}jx8DB zbpe8vB*;DIig7_>^NS!P*+P#3HpavK(I+_%mK4OdC{g%V{U84o9YAt_+yNv2)JRe0 zk?Xr0@kSgC?=7Hz+$K93^g4ZwLJL(^18$|$rg|_tVVa0)Z18139jaKd9@Vv`{Hf-3 zu$+XD>&7%|B{85#-IxPN&It}G({0xoyE`cVNxZ-v4VM}F=P-b9wPQXors%@T6YGJg z&XVe-M|&E%E|n}^_fE;fU^l~v?n(8-v3yE1s20Br{UIIgD!&sSk0b7UBkzD2$JT9L zc@suLE)h%V%k)c9;vPqchhs9(2iayLWsG3;@Ps(EbxIP6Yn9@hcG43_{>0N~c@8{D z?x1d@KMW)l9zNBN=CmO7kz;X6S0pxSi%FH*3 ztbw=NX|qR&^}_?4mggK8jzPPNhLfgb0a&KBz=lD4xp21nSy_?fL9x}^G%KJWQHLaA z@>1cU12@%JnkXq+QqM$3 zBsp9zyT~hZOVg4!m=e7@b}7j#!MnDUI+rfhB@#5@4M=8MDCWxb&q@lai(}!g#>WW| zf|Wd3Ml@N!8XGGJChR4&z65T>I<4RD;q_iiIK4MsETa--qW%H4`6oBUTo8T* zeTN1vgGaXf)xxm1up`D*y;9NKKyh=Ra*Y$abWE=d#0IgP$1}Hn^v$%UpTr2jqJG4_ znU_kR`q4}CKdqPMU%PGQU$Qf18kBh&rT!`Q?T?O_-`ElJN6X6xw!B2Eq)3U5n76=! zTMN+$qTbNne{{r*)w8F7%~Lx1qa)^zj+jsX=XAvEP$k`&P_R@NgWetXJBav&>p1v7 zu}dZ%=>K^wF=LA-?2I`-!usZ8d1vQjar^M)?!PVPD+jCjgT3wD3JvDG-S>yU0TMEN zO5xp)u9<(`u9-L$S2;YbiZA`>pPAKF^GE+o zBaYoU{WFgM%_8Xt4;UHNgKrUsZ!3p~d#@`e-qFX3wdwrPc(bvPRxf`v-Xz8)OZ57` zUgOOZ(705n@Qy@&G9!L>f9BoKrEY_UrI%LMZF=A%H|Zp6jz$h8s^0qmWzZFyc&*ZT zY^?<_NFetcI(T-#o%AQoC-A6#boKnv)$>PJ&u{JO>9=WbN=>GaQs}i^Qw2q$>!NC| ze>DB9Z0{Y%n(fKQ?`rz_qnD@m^iS;N`Dt%|XYb_b9hJW2{cq76^;q;0lb&P|lH`G) z{jb*p^pq5^RM1~#R2KAChWY%Uzd`Ac0G1nPp(^pLPKHyv=PE2Mhe<6g7m)M++jQOZ)3B^P4ySo)h_CBZyVQjK3D<2B4IatZdqi(Ib2liLmp z#icwcO+o37ma4k=nunF`_{I+w$Jq<|T9JQM;cOuu(Kd5eo}^2@F?@2R$elDm2?S&} zYc&AYB^90go@HM3USKRdP#^UA3t9qTn7SdXbNms@s<1D7BIU;=TJmZ)3YSqqgB4)F zNP=y&>z2s1k{+jEv0O?Dsa+w+c|6E4DI*$~ms{mwZL>oKcB^JNpO!hOg(jPbM9$sQ zgMB5!kP}84ZJ3ItG$ddUl?Qm$pv9-5m2-2yei7bFb5|RLGV}P#w*6&S)xqpnLO~drHvN_n*L;#EYGQQIUe+Y_2~!-0;ryE&7~?IR`<^SSkA936gJm3{wXJhM*8By zsTePQl7&i_ltXyo3vd0rITUh%DwtllQ(GSH3P3@4dfP*;4u@FH=ki?G6V>uJX_Oss&p@Ix>-bDEkl{|bP0C@2$@0=Wro{Zb0hd>gvCD&Jq!p@Bl3x!ip zVFt;)hEAx|YhGF#G|9U(O1R@2alJ?YDx!e4H78Mx>ricE0ur|{9z8=Kb-URV^1NFy zHb8|YEIFr~bZ~N60W)`4oKoEMGAJ6HeMkU-BG3pOYQ!sVWLLSz!*7} zU@5XO><1s7adbEViKR~+o`E$L(it*H4jt+~s{^U%@L3`|A4qP#z7eV(PRBJZ1a*nL zZT+CSA>3MmH5I|IqcrbODFzCU@W%8f(9l=B1gI6eqOva9aH(ElJkF=y=XgOuN{1>8 z0~7scfdPt9SQ=6DYnXye$JgYZ=%i>Z?J!uOnKUo!Xr6r%VycSHfZ=gMQUi`!v=COl zWI!-#vjB(`t08h|k4m1=18$yDg0&LGuGAYy|fKtq}6GNrNau3keASiqgJI zy2*&cjyamDw3|{n0h!RR$e``PMR$S# z17(;N>``@XYBmWme#iB{j?h+@)Ia~9+()m%|Gne?54|0l;#Iv*{QoI`Kj2T#D|;XK z|2=P?e{b2JdtCiQdoJ(DqZer`jy6MSv`RHgzZ26-e7%4OF>zH;t%l#p{rQvA7pMRs zXJqI7er3n2eyW~U4!ooHr{y=5Dy2BN^2yG@(MiSIDW8_TZO#J0v<2^Vd3$ev@AQ** zbX++ppY9zUax>t_Q9q~XoTwtK{O|8i_Wqc8xw5sq@*Qul?CeqJ7XDMM&=mA!@6FyJ zC-$VGu9-P6S2;X6I*i6%Wp2CQ`n_EEu0!FoPzG2z+1oB3di$v4;UKa{@OrPZ&*D~2 zKJ0C4S!XTPo|gBpayoOd4l31Znd!Z8pUeK*LHXoe<<#al^F@cVzj0JuEY2R{(dlmG z#C^TIUp-<{Q%nAY!Yh?tCI21$Ew@Jna&5>9s^#Nw*T#PwA5~9}j}9Tk+$l1fyI|)6 zIoLGN9ytTN4bFzj!KlFAKGh)_fz8*|O#(wuV@BQOS(&!(Q?cf0?#c9v*2XV7p8X;_ zi{X2Yc~6zM>sw3XZ|Ss#ckIh=AsTIuB+nx#+Ic@br?JxJg?6J z02KQMease4xD~o5cTDFBiUnU#cOJBajeY}&4L%z!tMII?i4vLw8mJQnD0zwECsZCB zGFyZ^!SfXOD4=ZU0d!xB@U*2@(`n4q4_sf{C_8N2v*6bk-V?g++~TG|3B0(_T1WM) ztA*k!2QJ>@?W2?9XeTo^NsLenclTCqQbZo##Rg1owrbkKJMP%Y_3?XbBd6a}P@Q4; zqU28E&9gl(j`w^yd|Ad$ZqtBz*3RLX9PgaRopIwpJhA?{kFrG@H`((lSsd?AdinKS zbwqR$Dm(PwkhDu2d(j)+SSeV&2>~f@7c!2#;?&2xznAhC;z9M1Ypx!33~jg zXaO_!DO_*{u(q^ZjAoJo$zNaJTrMuHCQvR5#ihIJeUVTo@~dMT6lA2;O}xfg;7ER* zrV#iMLqTh`F=OzDL?8Gq&^}tYkC41hX?VO+Tz7`tvdEqP{Pv z6?B;zXoheXxitaHh@6Wy zUOCAU!^J&R2O*;#4_F$^U@!tjmxd_dEl9frQKZ>bp*er3a$n136BN!bPD%$TVb0kQ zQpdbe37vHu;KOYN=1RQa(Lf`-Ag8Lb+BC2cULG9`aWDxRV@eLlSdjJ_Net}OQ>H_U zBCU<>OO38J=E-6irAb)lP!OoCoAGl@Li4`7X#+dl20dGyz!+JIi4>NXi_3-O%`wE< z#u9F=w`}VHYnyL?P!W`dSGS!82S9;gq0_N;NvK@Yy;d@r$P64;*J~pa{5HW@)HQ*1 z!IfE)Q+>y^t|m(Ocns#jkdG&oz0-qA%q+eMs&o#Ac{B(%)OAyGj)3o{KTt$N4g1l{ zx!BzVwt7y+*9!qL$}m}Vb_wPSkbJ1rIWf>QsQPbgajL&WZd)K{)zSGii4iZnnM5E& zpF74E4X@d6!6~*u=D76!xA+B}sJB1v>*rGKYgc)nXerU4)2wJ|HS&8cy(p|Q0UQ5m zhz4)-@SatyvHGvSIe2+nj`+v>Oaq(L;BIOhtz9@H^UA&cv`1$i^nwL9aHcwcCp>S9 zjk+XQwc`_I@&0$zc-#J(cNa^4Y@>=FR!-i0%5NVXy!t;ZwN2hU8WYox++F8m>FsbY6LX->dHK9pksFE*>7q5;(=5f7t2NdQkVov5@kR#+74u7onY%4`Oxp(5iF49lH;ZtA{4xT$uBW2xf{sucmOTZ0Rhunfz(+;hI%9s{3BGh3sP0#=wRj)VXxal9q3Ea_V`~Cnc7Q?eK zxV-gp$Ag|&Y*J|!U2dZjq9r15KLXZ=p`(@!{C-S)4i@!nc?qA+>Uv>eeFJq4M~?A= z*Z!B(HMu*(e{x<$d>4nH*iy`g7)n_0!BJzl({0JpnhMy7OKYLIvxeTXy1Kr0x1wUb z=P-B3Fbu;ND=&)07sVAeW*zU|v*Vpp;MScSn{0XIR1~^8(ND0QYO|GzH1E&s$_3zj zrlLbS$85BHL#e;b4QY_;*=?vZkHfcJXg z1F?R*2`{`tekqZrbK7Tshcpadc_}>)$4q}y{uHZC z-`u6>I{>r42af!k)I6$V;!X?nn1LAP8?2|UIRkmW6I#<;l=!GC*I!4uoUPG>M>0fB z4|^WJ#@Fvu70&g*H9?JYha*L8Mb3<4r>9MjU|JV@*tvm|-bdHO#Oh&Az6Ep}xp|-Q zF25*jMB|;D?&A&kKv9$Vi)&GcNDJPdnCzcF+ORd(DKK>YeMUx=3ALli}Ye$3<#zItbN(M zctyDNp-<$zClit_dc)1lO&$^D2OadrD{`^;puRBo6M!W5g2h@5En;cW97j^z7WA`? z5?pP4)l+;U`q+IZ7(Mue7yKjM;ywjja&}={!4+)>X%;{L;0FcdwV-C3mY57 zjkT5KrKMNVO4^n@A$S4#pF8gLNBwfYKOTs#NC~W* z{t_+_BVmPR4D5+VZ095CC-a8$;1$8M2Woab`@89}z0$r%uS2sL0A+P4)~ z$NE!7qk1sNn~8%~Mw|5ed_+2LNVGGDV&$N`x9?^p?uR2-j7`lB%)LkqSZTsEB$Gam zaW;-inTaZ!OEyEGP7aAv|9xa4*g;0(1`^o3MG}ekKkS&Mt%_oCgC^FA#QUYC)zy2L z6}W>?wnMW*X?!o1G86BwNxp7&^Vj(S-ANk*R;*rbehZFimU)mQxvFwJca)xo*#0|ChfiTes}+sf14j) zE`3Z)Ki2r4`sc7TI{6}Gktc}?&)FBc5O@9}kIw<$r51gS%+?M*6<_6Wu)M^F}hyrV2iJ({a<5vKo4WIE# zH~5oKWD@IH>(oe{F7-z=%7}08`=8lJb-P0ss>eUe5u3+P1f20#zuPMrZgnt-2cH3w zS-Yu^@Yd>I6N_HE>0MLFFYlU=*B34*gN(k!Hj=C|zLs7;d=ZWO&WKrbOCQzTn9_Y~ z1ricM{mzQ*`qik`D&d}CPvaTa+gGLT4PzlUX*`Nf7R-uP7rG6GX}SatAWA`PQ_c$xk~(U4K<<#@(-YBj#N~HPsTz7?VS@;#sb5pX2mp_PJe9dwVMz`H*+W0e&Qm%Y5z{eY#-1O^C z2T~tmAZC%vHB~gKlXb`sQ-}Mychwz?rsme8WqWVbhgGy`uF;F(d+#YL|-%)SgC3Yw*$?yx>Y&KNEN zNpD;=Cx^Fxe6n|Rk|zF+XmaXK`rg!9aFuCU!REtK(i{iia#~FVQ#b!fpmq>o$H!Hg ziI_MCfwe<}l{&*m-KoWN216l00BS4s3Ako&CpNp!YO3MO@G9C{G(MvCR4PYAL`#+7 zU~;*s{K9DsMU2@4A60;)Gzwxkl=!DfsXWMn5|j~aC)Hh44Km$K z5UNRJ9KF%5&p5QfAaQ@#6kahG^`g>f}XIy6CTrCq-r_msUwHpUvG?XE`$wY z?$J$;X&>!W-V2LhSce-SPck?bmuTPOXYvU&WdCB4K!+_v9z{OzkSq$g2XglOTOu5V ze;618eUJwzWiyXrsN&~Mil>GD*BYl5O*K=Q@zLIsrN-_fPSMTE7A91-mCCOXPp}?f8g2Mb4i$QM%zbdSgnfHccgbRX44X zLZT+x(kf!hsO7fQtaFG#nT4f~)%W&guP5P_8Wi%NhWH+-v@KS#vS4cuKKQUpw3@^^ z;FH5qHY{NrC63G>xR_qqpx#3o-*7Pd269wpyJSU8cOz!0nNx87E^Pvd)b zD%+KVEsBt=)FV0dsEUb)PE$TT+$fQu?i%)x004*>Rf=uGuULteBqqM?9XI<}8#FB9 z=y^H0ddvZ;3fX8q2{9jIpi%okc0(ATZdz>yHK61gP^qfA2t{@c(S-PfN@vy2$L=yG z&-nAn!I8(NFQJ!M`X40$)al~bAS;IG4e5*zh1AieNiQ9=<5UcNfPG>*z zCv>Mv?U5tN)o-fPB7@2?VL;c3in0o{oY&KS2X=#C2A>7ZM5dKG7I70TUq~jPqxg`t z23Qd;@5ZpkloY)GOeHKrkHx~PhhL0k#ru^^TtxE_!hp!us+e7`BbcB*nxjai)=Ceb zC1d54V?u>|x29A8wOCTN0K{37`E777cqg%rRWGbv;={>hj272z2Th$|DDn#73W7Fr z>MO)=43$L$ozS)XMIMH|#tYJmfZ`-mKq^#!EL6#|8IVH0?BwcEQQU4$~?ZQ>wuE<%smdu699-ynSgqtg`! z>WX1T6$6jx*4qew%eiC&;wSz1RM`vGsh7uX@9mH=nJdQ`r|!PB!pit!Ja~;Y9C^4V z0+h&@1{*pt4fd2)d$+75-9dRM&gw{JyRsacAa;Fxei

ZW@Cm3&>?cEb@Aif! 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


-o61)_nU^1r^ZrOR~smt^XMlO<-{ zKOXf+$vd5R*jb?fiw{roPvR?s(eEIwtmcGl!y#3RWOs}|@|UbKFHvTHD^+*`D3`@M?Q$c4hn3-rCB> z?gkZ8`})`Z*2d=M+FqGQTeRN3Oe#;hTX?{i_jf)t*7>USiw%s$6P(>1@cotby^a0G zzf98}0{e`k$#Z_OTr4l|yeX2nWkwC{d^>`&bP1$FV`~WTQ2Nl3I)i)?7R?xC)VC5y zv0OH`_cvD8kY$I5w2#^Fo;HTi>Kkzkn3|b)unAG4$PisZj`u&1c097}7m)}#&^QXm zP#%=r?Y9#3CCC^*rMM?*6+ zy;#p!EMWIdQfQIp&V{KZGl}SqeAZ6)B(l%bbwXme)N15+*Q;^N+Q0cL!TtL_n!bO9 zWSk4+$G-rH7A$&ZplUSJZA}}ib{?4D0~OCmEl7#CNc}eiH$GcoBYG5~g|b!Wj)x=w z&WorewFZEY6rLjYw+Tk5wiGsxvOV{s`WE@PCbZ9} z8EcRzPKx>hMnS-mGJ#0tnMtKEHGVDz0ZbJYqZG7pX{<*u~Z&^n$EOeQ8hr1?MUk|;j zg{gg~r%B$avi}%m_VgIVOkJ_R6!$S?+3MN(f zG)*h#Czh98uI%v!_QNh_XyH;3CgE(2cxX2Ih~mXZ86i*XJQ9Ux*C(ERW$U+YsA<7O zy)s*kZ6aHdzt!fT32`@2bPg7g;64`>@LZ|(kBC0&`LBfA5++`ul41K`1 zuF3Sb4P?fI>}ES5h3nM2lxfSMFSu|cDF`y)aQ6^icrtzEU_mMF^o&`)jKD4x%azi& zIpJJ=;hr91)|`;&W@h=8NT?-)xpI@`dr>HW4N%_Q?T+mcH+=EOx}A2R+q|Gl(fE&8 zGKB(+oHs-UPTLL@`0{9gwn9Mb}OZ{~l?ckswg4{20#LZ96HpI~pd z2@90WBIWXb<7;e>`v4?8u@%(Ouz;aI=~0joI_wk%0DiPXzPe_HfYWA|zmjA*oP3z@ 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%0DEA4Y`Rg$*kyUeH9= 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�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۬ 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�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

GFRPU62N_+bEnEm@swBrG{ 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

^$t!Eg-g8v!VwA{-QQzqpQK9z5=~ zD}-=Si!xkg6)PErP7(aUuWockZk448cnb3b4|OWYm7o}#?dB*C2ZQf9W3!@GifK;4 zhUE;5cgMY3`ozP>x5ui-h$o@=136PDpL`KlqSb^0890M60?)3K2Qd$0BveQP%E$#% zd3W$XFHlCL@LH@8=;f7_3Q;_%eC74Lj`PJ4bM2>o|9BCTdUXu zsC~AM#DdLRE1qqh85@bH3y!b@5v{BrBCatlB8#08{$e(wYG-R!lYufz^;0tKDJDXw zLDQ4j+6s_pd71w_-pOZ1H8#>+s2bic)5?SaXYWwvT}<{=V#G_N+Db^+Q``m2i^asX zgZ#GqM9NAz9@)&E;GD=N8}FT1VGR9fql2>PNmG1b@ecJsTM7AO?Aaq2yHo^Mx;AkK zB0(bbcI2kf>}oOd^&am=qWnNLDk<2lAoF;jym=m$NycmE#J zG!e)~ECbA=^m=e}c~_#gou!{NE1T73x(QFlX1B7vemul7G<=B;q;GvMb&ar)0Ldk- zGFXQ~2$@uBgo=5HGN`u5sj0QQFL64H0c$R3rMwPZ;w zo}BDAOFB^WtwGD>PTkpiefYZj3fgljnai}c5*b;*RfwU%Nr^8>yZXd`UgajrEKB7w z2lnhj)+s1QGg1_t(&{Bkon0&kf)uPzVi6;AI6Mns$3YI#LfgP1luK8m=%+~$ke?E& zsNW<%z1rH|*?qOW#c4M8eEb7S!0{w~2@KcpqdwT6LDg+s+-T0Ob z#DxchQ4j}%n{E<!a-^d*sUVYM9yuF2No=asZ#MBmS4?&gOj0QH*w{ItU%uYY}_ z|KC*>eR`h`nRk87Ei2Q}&C%$}g{%08aZ;>&?DtoM6IdD5hSw`uhfnpe%Dso}#7sTTt8leCi%EB=%c2X>@4e zhfijst)10>@S1GYXSatj|6QX#yDR*rk@>A@SQH-lk@K>erq1;5+%8Q=ARbl z!5gaCL@)#Os;{1HM1X#L_2k;{Pjjnh)({hl#8ykWWtgpu#WuX5pIG_Iggf~(n@~iE zC7>c8h>f|}kq1UTBoPzD93+n4u=8*y%j3xpcGMY?ncLEu6Q?t*A}TCXd=JOTGB5JmuC|y*;>mbpCGo@DuN!do`+f z#?0kE7+l4cR!IoPWUjXw^9K^EmE5&BB>}%q@@TFt!Pw@;Mh(uZBSafmVRPEZQ;4=u zO72}cvk}(rJ$}*~o(RRL|A8PMWfcyCHSao<=6D=v2HY=e`V?tgWdFOzPELGl#e%S* zJ=foLNX{h}Ud*XBp+Wn6i#> zJ*Cd>Cc687{(;)?|NQf{8ri_4c#mg8j)lLGJsi%jg~kUZ+~Jq2_m-bsX6+nwUw4VG zcl+czjUX45e#C$0t3QSib1T8u_9-9=MoB{tG{Ictf0;``B-+IazvJ z5G;@^`2h&gA)ASS33cPm_AB8BMR19aL)*%3Bwj6O&oG`-=8vr8IgJ4< zS5y$PG*44+W&u$(Ing5a(7jgkHWPlu`etXlo3@*qRsT;V4NiS z`&Z+koZj$>rSE$wvC?8VBwnTf`s_Ng3p{Xte>|Jwh=u}k?%aQl-NI4tM}lM}+5Gp6 zXVBd{^_1X!8-sVl2Qt0>C}{TW#R5ee!~PqW&jtQ5mB~f`{fM?uX*O#O;Fir+t=?P* zY>IiG-h1iU%%Sl8`b0hSEp@uYps;~U{~V515sD}&7*HatS<6w#f32jP0IfWQRbF|JXn^S!r>$P zQ~?U3Z4wGk`HN~WKDQ9ORu+{s&(*nyZbO4~)!X7E`quV}@H>$Vk?hz0g_R&yqj1@9 zN*Nfzyvdlna)tT*f;xa)e-taTBeKHIp*BvD&ygXosv3F1A}B{ zLm;#vC`*g6^Z3H%&WrA|17eq19$Lohts!43o$l{$E`h<4B9JL7>59CH!!vS-)&Jlx z)T!b_fM?*)P?Z9n&(?U_lVw4ca9s2nYIhI7i&Q9Ce@~Lq!WFa2drMxb#M}e8Ask@g z=qStHhD%1wc^|-F(;Jj|jV>-xku`*kre|s~38R3pu=x?hAuW7msn*>zx1+!M>Z^cb zddRD29>w11VkM&`VU-9Jpg4qldpxIyqk|8xrst?fWL$c+#SEb^6ccGmRFp_MN($8| z@vVrV8GY@1IQlj^YtQjX%MmT-sy)IJ{uF~ykzjigsVd}u>sJ(|%cNIe@|6O~RyntX zP4*6EkQOxLnA)JYcVAxQywvOoH&a0b_uauPL5nE2ILZku|h7$#G5{~ zdI`*?kPn&}bP&FKjy*HTNXDwwoB<^3hqGld(6y{;h$4(?m0!+JJ~ls$ELgVi zCYhLP)!Glqv0wiT3?`hgaIQYX{RR?e@JsUa%zo9NE%qyuf~dwMGGo``)zhl=6Kn4P z2P^v0Xb3>T4lDQO1yLiX9_linHAW8bA94nao^5%U=R|HG`33xXlPS~QP~6J0MB?&9 z9q>we_O^wH^iP8-bCHXP*~$eX@@2zPklPuUGZ1%;G0 z3a}y|A+U-_N6d?7Y(q&sxz58n&1p;{d}eeFp5IH19YWPv5l)EJ4|KX~)n8=LJdfZu zbI?4L)BxRyX^s2H4p1EzevZi5X`a_! zq;4r;X9MsuS8i@reZz`kdMz`cS(JE?;BTV$a6Af1iCiX!R(p^wC8sl441~P(ZnG6) z-gTJm)RrBWM31UR z>f)48cDR%-9g;KK-+d6Y#V;Op;AT^@8Mnvi0#-0ngU^5Z3Cu0&5#BoTZKp>nY>{St zI1;Ri>U+QQYI(~^twW@aCg|Gslv3%$)?d%oA9>h1!9r;?lc4x3I9D~+f&yx2@_k`D zf^p>Q4-Bfi5Qs}y@okA3(@j`bBO&=bktAlL;9l@7Hya`|_M!`h6q6?RZ$Y=7!h&*?6>Bg@V9HYsS$ZoS(nuMhj<({$L!RF`dMxQKGMTG>c}IaIf{HaZJe zEE?UIimi4H9QRIjyHnp-&tB@j;HPH6EIJ90``1;PhrT88bc`T-d5f-@m;6|@rdMmL z#T|iGz#vFRS&`AFh0pnX#>uV~p^zRe5qDej-;gT0+tK_|DJCHe)$-)^6)0mI95nCs z{7e)G!#e&@G(;vs)`|oYLUT#vnG}`yPrZ;m6cCyaoS62#6Mc{gBVED1mEh3l_}IAQ zBDAJ2{Q;>Nu~3)-ly!+Dc4&dki$E8~cSrV~M|#c2Paa!JusSJDU`Q=)$-1<@AM#GR zhMljTXq#&jnGmj)8?_Em1U*CNqGi*I&wrBCAorm7FXs`>=tdh}Lp-};CPD$EGMBpI zg!_)`5gMRKu)swxjQ~VZW02i_8wVl=P%uSL31lXQ(B#~6zwdw|byq}SNJisMdq;b| z-^F|JFBxQh9I?N2u-cnx_Vi3n3zG&W07H>@t|KW%^oGwlchKkHYT*NtM`c#^RMC^~ zobE?zE&2PPzY9g5Tyba`Yq>qhMhm#7#;b<_L>7CA6uT^}9CdGi3);qZxgaU8{uv*K zc5d!6e@9=g@nA91e{(Z1FlM&{iI49h3oN{k0{M#1i$F&$Jh9lR;-n{&DhCScPOLo` z2!M=fS4N;;WZ_;FJj6I2B#$R6Z;R>IZ$-dd6wQC-;`RKIB8x&=v1w?!0c%WW0e~>gC!SmTVaMy z2WBvlPa&qjvAf-s5VJTjN)f6CgTn*Iy47^CqOWm6un884H^IVKwU~fWwV6)t2-OYMp;K z7eT(}ZE5|UmVb359(dEL&XV7HRp{K#2P{2oUtB(gc@5{QPiQ-6KdZ?S1U|OXwPW5$ zVUcuy$-&TH%7-d4y<(+sUwvHU9uYtD;>WOmvQQ= zZyIy&Faso}A&VN}wzN8UnHQzNrNIaY8LqQ*;I2S)J<@{nBkI694JjcbvqC)&Sfz_mZoHWnvD$870dz;h_i+~`yEK@hyWJHmg{Yl!O6rUoUcDD& zbT%&T3R6Q=9gHQFBid#+(D2>63;qQo!U?E9TyPgw=Ut=s(zcVdDY7F1U%m0Afrl{E zKtx-Ffgn-1nzk*_6FMsIDe8%lS*>6xu1wBB1G0NE_#|aHCg`^4u(;MOFyTZ(9H29ZAnh83W&@ zv(BgzKGGPz)ig>wm(rZeJmvT&DquY2e6{46tN!5SSJ;cAIFIrbYhF=IQvIUkqiY`0SmJT&;2IiC!IO@G~^61Ti2qk@V=OPp!2 zTU?MVdIxRgi-RpQ5`KEM`}Y)TV!f`SfdhQLMB>cO&=%9e=%c3fAq|s}vXm4`K=yH! zL7lu}joX$SEu;P=8OO$nPgX~ii%D^jm=1iKENnxeuS(N64ZW<&sN7_CoGp6Ii3^M$H6_a&*Vf7cq)@DaF8fdO=S`=k#U(otbi9+t0i=U zLn9QnC`ugrng*mTSAvx-WYi?d**I9E0v>6lPlpf}dRmX1lG+C>d7RnEd1A?gXnKav z(wM|IkRtDm*&75e>f^VMXGa)p!o*zZr4CE}>$1z`NyaLgaW=AfWV~2i8$1>~o>^ct zWv2&(xDUJoJ(MegSj1^U-w?XC>n$#1CEaa}XfjteYDJWYJg?uL=X=Actr3k%#DlXp4jE{7a5hRWc1 z8k-L+cZ>wz70QDuY5-K4lT+G!H_JiUCfvb=R~{XWd&ZU7BCC(eFu^V#d_1SPKs-GH z%#qZk;`N0cwX6>+^%94NnI>28*pJ2B(@z5jFpE;WS|@ z{s{o8o%G5)wat~?7bY2LA+jf#ySPELTJ;61^bWtAjVrax{6SQ)K)>|sult~jZ@ zDmh}L$#`sKNG>CqoH57;bqM$!6Y`L)JX+s zJjTsZ%6b^bW+=dDWJ1(yN}xzWt5mM}V=%V{=W?@Z>^m zpyb3(5APZ8FHnT60Szj(wPhTH7?S~Ru*M?JL+2EG(i~Xk^_e>t3lAKNIRyr%fc7hR z3ZpM@1%?l!8GaxNbzI6Xk%Uq?$oQw+k#KGcxIrUiDk%dFdv*ci);fQ8TNym69?z$T z>R~ZC?CkpL4*g@kdKIhMo^KD&C5ZuCq`*+E4p8bFIcw%MqhEX4ykEd{C`z(b%8e!g z_>C%+k=CczY#GOv;OM&_R;g6WIZB*AU}u`*|GVDn2~I;DM=J0$KQbBi9l3;*znb8` z*Fw@#oqW#^pG#zMiVk(C%3iaOgEq@Nml>jUG9>^IKpQR|vPMmQooTw z60X|1Zs`q>o>JiLtv!lAyDoG`=ee!TfHttiaL)=yD7syQ!ebPS9P)?*#qcHX3kBi2 zv_IukdvM?^0n8&H*U95BboK`E)zHnP2MiTpk)}o4YATS=JSL_+9Qr%Y?nrsGWQFF9 zQ@j^jemsAnjXrOu5UhUJb8-EtqoFI0nHAQCTep&K;0|5Mus%Wyf;M!*IdYN9>5n$+Ep&J&QeAoOVyP=@-?fYH~reqCTwz( z6hLXfS`rTdPhhE^i>K&Yl!7eN_Xjg@KYapUKH-|P)05mo z7OMq!-b_BPw#)7E3hR^WZzhWGLDM=;{tUracGm(Wn_v72ePY*WeGZH&W|I6hOA$cb zA+dPw{`@mn6i$yu?-!F{+_QZ}INN-nsMTwo*e?&rWl+#J>9mrs)6vPXuL@V--1tJk zEymf~ty;5_ZZ)^TH&<%w(-K+r=ps0n-4t%Oo2{*sn0aGkW2duj3jN@O)FA5L0-t=S zfFs`PHbHw5t#(?Cje4cKzQCQaiIa|9ozbOLn)R6nvhs&qkegN-Y{=F>#7<#e^P>I? zwd`a-(8q1yXg_Sl;*MEOE(13q!!Y)S15_)-!vuQQAj&0Jw4mcL@e|60yDx!K!Kkl= zjW0w-D4K=p5@?mv95@s_j%sMDyO$Jgn}vASvQLlJz06+#X?F=gEo#66hqAq@tR<;2 zV)#cUI-`A<>L9ESG#TbylIbWJ3_fb)08tV7v7-bnV#xVoAcn`mcZit$7pVxWdei=S zap|N7Jqkf=U6$4w@G)6~hw4b&`09|b3{Was1#FF!$r!1hr159Z;Uz5edG9p++eX(9 z7>O<}rvV!mgCvL6W=r}6V;sPvLD {|I8<&NKC8Z)*eOBle>Cu(CW|{m=q`SBqz{fr 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

lpK(a9xPZa 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

_o5PnKejCOQaXzdNMU#<}Jgzh|J7`Pevx) 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Ȉ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�_ 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⪼9G3t8A6V9coC9m!Dm+sO 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

~b3!0wdao=`_j) zV)tqpl#UGN8)ncD(7&TK%3#sy;f5K|Muqs@GJ`%KVgu_8Xs2TV;eZH0Jnxu6pJAVJ z$>3Lus(WOx&RBEr4C({?MLro6iSXxs8MFoQ7KCST1`47wC<=@%i_2i8vxdnT6a>8N zRM<#QJ2NYTwcY#VX3%p46c%K#ka<&^48F8;T*nMPvQe)%gJm{X%QAR!s@FGzO3{zY ze$Ai;U|{Uv46Z8k;TbHpA3Y|6KV~r#GAIdEIBQY{zaVvPdIs5`MBdK-9W?8YAJnw;8-Up8YO^+{OHV!v8WzJS^e!IfJ)g zTk2&}7mQqU4Ki6V`J!PaO$Fi3Mwu+tGBC-cPAJk|jWSueWTbT_uk~iyXVPsX*v~DK zMYOVaCi$W&&IV`lL8prGnKTy+EKJShS+sj@CiH($gp=E5QYms)xnm~p`+e=4Np{e7 zw;qs5{>VxGpiHis=pmWZ1B~n(n#pni%h8#vjOsovlm11*ZqqaAGQw;Ao=I1bfd@-6 zS%;*}%1k~Gy=Y@5IU=3Y+cN1G=+4}kN!s3Epx*vWYJ~Z_^TkZoUi*4IlitDq&HYS1 z17`XnlaF$`{GG|Fmc}15SwJ!COD4Sn!7=(-^cxs9Gs@y_>1mq93y@hBS$s<7s(qHI zYl?Bn((RhLW${q_(l1NPjbv?L7JuJ+hh|YSis)!`7SGk{CS*|^aB7{LMPI;>d3F|E z#5DhJ*t3z-iMd(SAO1DlWwDgYphFf_Lqf(~vsfp@w?`HWEZ6*!#h-Jx{#mpW8GSuI zi^N+=O($!!cz0_2v@G7O-ZdkO6^JymvZx8_u5fV{@Atc{03%2+bY&KG0z+%oWU*R) zqxD&I6AXQXEoM%>TeD~k?1MYA=pm|P)uAljf_-!>i+50#pUNT)wBsK?&LVfvH`l(+ z;)4Vi-evJ;*#A=&2_4W-y=-pvG1aqKuh-8Yo9xg?Tj3Et8A)(__j^6dFU;)&*sB!uUxXJs3|0)8QJ`vY;0aOAIH(YF36@|P!#RkWwW~d zm7;8(^S$Yk&8K90ch6=O?W29NS>8WPn@#_siiQr)rrt>K%cyKnDjGq3~d=kPc%t3eL61LI_tgS{g3|Lx{EJd|Fu%3*;*@5VX2+#b{{ht=n2I^?ka zez0>6O+wDjd*rZIe1d-tpS1oMmP0c9C&nWIF!nMzhh8HCH&b&c5U@p74js3{>URLb zffqR(_+a4Hs2uu5?Ej@r$f4&52%4V57i`U&n?qwT32nYQhd#k>yd#I+ps^Sq$lm_sAtnaDK0UE=41P)1X{dK6DYXWC(c4>0CZ1YE1tD?bIA==ckgK~4`hp8 zq683s!~0xX0=&%sV-7F1HS>7NWL__iqQOW}gFN1s z3$o2)&B&BydAzIrrgY7L05Mf!b zJSqeMgT8t69Pr1XdGr_XcaF;AujS?md1Q+cxGd+fwtTgjdGrpOX@E4uXo5@-s>YUcCjI=F5=Yd+){ z<|h(QwfR z6P!;cLC7F7p9Kt_(fPCmCG;XSpSRg+WaLv1^nwAc@>xO2qfI{jijvyeDW4}gzm()t zJu&|u)gzy(AxD#X=Ti-|=GlGn=>)n*r{RbQf7@~Syc61dQa+u-c<^m*K5NNGFV3g` zA%5`kd@@D6+!as~1f07%pVxjXH-Mh#hCA~4^xLhy`J@MWw-4sieK5NJOg?GFr88fz z=hHPrynH*KE`ZSLyZJ1J_rIUdn#xu$^ZD69?Yn&5oId(LFbw>2pYv%G>U2bf0v1|d zuUtTeNbqIt0#>oo7!~kll&47n)I6Xe)u4bC5wgt+_@)&X>jEv!L>(S&TtNS#j*m1e zAU`lv$*q7@utxe6@U~iJL;ALK;6o{LVgY4gY4*CHfUY6lvCai_58-P{ z3dkA>p6XWcfA;P>Fp6q_`2RuxB>@Bjh|&fD0VT<%7eTT#0qMbB$R=4xNF@b`ZBekG ztAYY!SrHKXf?@-7RrK0jOR^Tk6~T(SwtMwn%c{Tk=d-(E;Oh1JJm34r?~f-s?7Zfj znKSjwIcJ(?T+5s0>it2^3+C$OJO3qfwfz6$a`#-@ObP^j%(=FXteXC}&b7&_y6)OE z*LE+fXx9C6^$w`I2j}YEyKl!_%|PCIYOY>P8u83r+b+gy_tIQ_@aV-?=GuN`{O5u! z2n*J3*Ia#|`Iisp>J^gY(^X~8G>KhJ@{B^G0neglHb8RUs!SM;j zT1NY!Q?cGkF{MYbUYK0kvzUhmIh*w<)&~>&7{yv-`|P-4ebOQNKyndpk&^DfcYz9w zQJEPT>A5*s_SAHHZgyUFMrL|eRz|xFv)yag3{K8WH>NaI85wqax{+=#NKY@wG*@+8 z-OC);y6mW=Ikg2wX_d37tioxIN!r*qal(wLhGX2g2}MQb)2%D|nWMg3cZK=T>g)15 zOVn{y&iYF8TVwr5bNwmnI<`wUFMMl7q4~hOt2>x`Z&{w(SLV%_+~}%q=$d#&%8dGo z`4u$<#)R3^CKs9CrCphJ&Sc~C8K+JiZ%mzh%7j=##+(_(%-J)>pE_<%k&%^^nVoGo zrjIwW?CCj~sfmemCOM{`Vw^eS)Pt5eFVCKnpOax(DR)HO9W$_p0jRMrOM+585VCFZndLtcqjBQK?sm7kfCX}4!E zg*oNUn#zXgD(WZSzT}|E;APHPnfdv#b(Eczmz$ewK7H+~fo5ICijK*-hNG@tR+8PY z=M-eI6WPs{-q-ZB>_vUs-O%Mow)vFW<_4p7o-xf?Uti&zZ#uSbsx&6nlcq62UXmw= zf~>A7&SqY@SXQzciaoy|JF6f)({MzWWx;~l@|uR)n!+-ti$gOy(nzDSx^zC@sAfMY ztmN=aVOy1!%k)MXiE}vWD%^z=#!q(E^HIM>7M24y8o1b5RaReHlWi|-c9z%HMh6x- zOR6eLorR2E*VN#uUlfa+*uY0;nhTw!ywSR$v7)r0qNX%DMgv)HeWlD+W4*Jq(N*HA zs;gb>s&9*sc-**hXIbi0j`;fKLRSrGM#qe;%hcF5G~ZZtWlwi42WyF|w34Kvu@a}S z)Tfub$T#W>XPz~6R#9|#xh%7*lG$l+)fDnVYsorB8VgcO>zf+OD;f&rg_NmHd`ZXI zkm@RHVr@8>k(&ATbe7IpQ6HVm)Qa;{r`6WWk;WpFy35;U&%yK=W{h`M^KarPXPNX^ zHrGgUM!sI-s$wrJtEnihY&J$!SH*e{iZ`dWtjw5QQOz3~nNVZB_8k;sTzNeQc~PUg zo^Spbqe>fCnHAQ=Vtedg?6T}>CmEB6k+aMvCz{WT$5Z(mHlxZlDDkA|e@5F*Z^+-o z(+}GFN5v0(m&7)VQKL$m%F4*HPm<9SjTB>|WA>cM(@&n9>Nst(c=p6`DSYcFbpED=*)S^`KjiNa-rY9aR2fc$0+Tbdj zFm1}T33J?zsYR*dW=#9Hq%>-IGhe847Lt5JZ52B^J%1drgf9U%{@YIVXK~5-QyX~C zdQF4N&0fXJO7%GUuXcw*JmxT<8g{Ns2Ns_M&K&eVp++S1BK*%M1EN^9%u z{(OW59B?joePLx?_5A-3OELo9Ctt|MVd89n)W#*LO$~oM6ALP;=aK=;nB zPq>oPLwTyZ+{tH6$vSus>3r5pDc^zOjij~Je?DTvA7(;-JU`WBK6A;wc!ld9&yHJm zE8W(yqjm0t(#oo)nzF+3iW-+@ynj69`nt~DT}w(i6aD%0*qW8D>O$9|^gllw7wdN{stcX9|6vEz zGu)_yPjLrkEH+;n9Huem_;JvZs1cujTO}lPOPhUQivqOp-$nfX`t}H8~0-)R#ueB z$L^TU=`LMnH-$z?h)K++Y&}oTV48EKGG>OuQSMph30=UHnn<`EOu9oI8G$5N}yEXZIlNw<{Ax16);XwyDo zc~S?;(v6my-P@O6o@v@2G$;RMZf z>N1mN-aatn5BA2XG8JRCF_Y=Y9x4TKOEh!V@yn0>tC|F->F6#vnJQ`%mB=cop|X`` z7o9d!YMhHJ=DCb$N|ZVo(%`C^mugV|mdcavJ_oOu%$yv`FxEAbmtoGzSTWF?*=KpD z?le14m5WwI@(MC7hqLBt3o6TN3(J~oT=O-Tv>eNh2BY4!u!#-fD$@gWfMr?Z2dHIq zbKj#^r2f_7{~uSR($g~2V-=~ag3O$@ij-7L#yhKA#&lOx4MkI_bXnqN6r^WKz3cz1 zDrH?{rY~(UbEuLuP&bgOY;JyLR!(B#sYTR`CpQ=~%bO_xmbsP~lP4O}PoFu}m|fXC zt+9rJsjGw{VD#_QqVZ|drX?mi3>~lGpef1`Zay&RmSfx_4NmJU$KrCz@1yUdm=1-iZsFoHdOVjm=W|t#MLKa#m>u!{(!polCNm z@zg1rjd8U#6whf$m=zy~%&4*4?K%*WIJ2JIPu8f@m{(C>O&-%wK?8uCWZFiL#z~CM zVTsFN-YXW7y=lXVB&Ta;q`@KPER*alT3?osI-NXku&=IYj15k7kE?Bxva}wKG($Lb zmKVE98sv1VNzWt&+G=X&C337+kr=slTk>tmPM9~3iXx#bFL@kqfv;_vU#?S|BX7!Q z^~k1_z*G(?VldRGbIIBWIh{YJ+UehY2>J&m|JEXs~c6DP>SlPgGu{OY*iD= z;?1n6W6e|YJa!~4YSgxA322)hyNX-RVw~HXXmhJE8k*RXqqE8?m`rm}nTyp>UpkDL zl4(=UsHDy^+f_#;Ho9J-`vz-dVH4#{oi>Nfcs>NcmsSl5${Z#Yjj~D?)mHJjGw`~()tyrfscFw8Mg(`D0g9l~n zIk{Q6SsB@umc#7aXs*8Wm+LwuThGAR1z9wVOY(?%iwGn61BG*WVnsI!cic2c+km@U+kou_nHlEXPj8PFD5H(QXYakWOA-Y~Db}#hR34ba z|Esp(q_Gr*FI_b>IrE@0k(_-jWg=PCg_qtI z-6B2fr3zW?sws=+MMf3XbF=07%cCv22^3h&ufDi4&%E@OE64rkqEhND_N)dMB}FNf z%KD@AsHXCu9f@lZSvl!>>6SUB5YVz^`9QPyt<{}qU!6vCDCGk#OHgvkFG#oSNoHGF z&a66j%>r$4Hvi|vxQs?8xisxTZQVh$mYtnv&q}xMHd%RE5m|rfs>6E}x$0uGm0dua zq&@Gz4qhl_x_OeFH~dLOM4E;iHRPtW_i=nquBvL%)@aE;Wxsg(el9o2<&k9GK`FtBHOA_o&RF)xfnxpmf7L0wa2=PIEj|innzappVMzko+}MG z@#GI(g#W`?NJ%j}y|vbGPj%9y(o{c^(<&$4v!!C#SX&SqT3AmTZz@-2&W*31ITR`n zSv%=@v6Yiqkli+S)11`HX`pn@Glow{k*SV2(XcG=iM050Dz9}fu92$HfjCoK^X5@l z;sZeB1jDDKji2X@`A<)xa#hTjTH91n(LfWHGi9c; zv|?UGsWE(N%1m?B;?;kAiG)eBQ^}-V%~H2M;pnCs$t3>l3Q1el+EGfwo_^z<0t59K z4!_bSs+w}{9BF9DLyKH;ElI1@Qb~=K(xlv+#c?!;;z?p%d2@pvyz?rSP!foi45D== z%A2{VWWtse*~=J}laZ5?lOJ!_kgKmb=E7Mw8Jf>o&qDTWF1DGomR}t`3(bnJ%fh<( zw8y*Z|E(${>-BV(Q_l7yCuju9MU;10szt7bkrU)AMKk5XL6J*Jm|U^Db5%5Z>8ja_ zY$%zyc}?1t)Bj_}vUR<8iu1pDzRJwV&B)2H$FqOgy|VJm9uwCM>lQ1KrW+a5;Vm_0 zbLc6YsV@9^b<#0YYs)IM7+BO;ThC`V$xu0ViYPsq_9<6a4g7-|pXT_7oT2(KBWYn^Rj`<)X!?vbItB3KvT?w!WsE zPnSyLUG#DlQ__ocIwiZkz@91j;>;=*&qdw0p{`a6bhXBxOe9gZ?XkmRiH&p{(Zo|y zjMFF09QGd)KlBRTpReWG8W!r`f+?LwD~mLoa&qOeFbCHlw>C5BrCD0SxhhmfxwE#8 zR;CgvT+yNi<>o~8;>3C60aX-XId9cf@C~r}nn@5sMsdg%=Yq3bXG}HDq<9f6W=q|{ zB_k#B1y@=KY8n%p>dM?yRVW=tD;Hcgo-dc$rKB!bw2X4vi>V}Pz0Fx7i8mY5DfV+n z(Y)uZsvwuDq1uZ<$`!B0 z)O2WyW6j9r^7xWvrDhvr$4!*V<77TaRzn(8g`IV*2IfP`?djQeW7@QF6Vt}aEKjbH zWtQ5Jgq_YQwyfSslWf~K%vEeZA%Cl4rVQti+~<&&o|2QBpOTrKpH72Xz1gkx=HBM| z^Y7^GPOPSsB^!q^C)3hcTPdqtE+oqy#)S;*v zvX4b8PmGj!dUW45CN-7F?EzGhbi+H8DLaFFoCG7qJByrJ1_d)S6TZCQZ@= z$WkXx;%Y3HWJVfu&Y;C2H`mSrWaQiP60J*PoYuzl>>SQZiMi>SDH-;>6nlC$Eyjs| zc8o|#CB>LJLw2jS%!BnR2XHDk1=N*MpC^KZ7ge!z4LZn@vvZ3;Za$^hc>N+LJu@rA zT$sD=ICEg)Ek|_VmViui-!qr>HpjOv>#Zk7ZWtJqN=2G$mgWZwuI_D~_0Xo3THKR@ z`2L4B<#&pON}VT~-A4>@sUrxvDRk-PMrUL&hlsdud@8~^z@9ZgKwp@N87)&)gp^abJ3HC!JU+p-O??sE!u+OJon~) z=7n$HoOI;u2?fSjC$%36JJCk-1Gmp<)Fpkq+2+bqJ>3R6)AML7$xg{}<(1}VXJn`3 z{dAOhCM+rC-kk<+XLOd) z2umxf7PMTkX3+-A&3YwG%~YvkrIq>8GEQlQG6vU7Xe+PR^3{@tM4441KIfdZhbA6e zPtC~8&dSL?=uXe<{0uWabp4P+>Q?FbYo~6ER;`9g5&7W86)ApOt}@M`@N%HR@Bgkf zX6xUswzqdRn9i}A|GW2ZW@pkL6SgvjVRsB0RULMe^xq4}vt$t9^Ae}pT^D=Yd zi=($EXPL8xUOt4|bPwE#N+Y1TWy@93vO%mVxla#@v(+^fDO@|E{oj?Ek**g~hqhJH zEiKHH#T%RIjN!89&#T}@S#4!#D}G6nbDwCF^GO^D6qIL7n?5;(3vEopvq1M=FE&0hWV{?Q}>SPl+&yQ%bcW*L(Gb# zjSG_|*Q9XSq^g}?c&ee`{9=7tVd6!_ zwqpn{b{E@H`Mvg%Vq154fOOrJ#kP3~JPP9}wp~ep=h|X@!}NX{~UaP+cPrrvNEhUY-E_1lwLoy zXS($oOlCnk4Pe>P=Jc66H}y5o+jPAV-Gt{qy=k<$`|``v^gfLNT>aygx3d5ABtb{+ znvuJxw=5Xk#oC%}uKa%0G3jmXx*1%gik<6>(`&2dad=FT3VU0NGuKTU8WZ)#<^S## z8?M)I;XdBJDtmRN*?r===*6jI>x!{+6|EpUR*=~J{;i`1OxAl*^<-H>b8#gN`7|8p zy>Dc(rsL{cs?6nkZr$-$D@w1N1-C31^zW;PYcmJR1A61Nwks8JI}YvoMUC>2bYo`f zAFikWYD;0dJ>7oDg`$i+)A82oq1N*|SrSF94L99(l=;8jbvjiyahn5|zW$s0&VTg* zj_iDHl(Sn8s7#KVs@2h_TdX?|ZOZBS(hQ)_ChQryYILVbv=~)XNR7YJy!E(M+x}`N zk>_%@h=&uKIfKhH1cBwIfcxcGZ2pHK?Y~FiMOG?7I^z6Q;0)sk3?AIcaI_ zUpvg)c}`k^`*q8t?qFwo1ItR6#e9W++27)mjQ_s*PO&cR+2@{pu2C?zz#z`Iv0>lw z%gVIxBNkwWYf6w}i;?^G|+R z6x*--%5fzro&R9VMea$vi*;ek_?69nDZe~yYg-ljUC*y9%&9z~Q_Ia$ls>4R@P;;q z^KiY5yV#u6Qsl}Ax06KM0Gc^}d`vjsOSc`%eOhOq%gTH&y23j0D=W5h)Vvygex1?4 z9rAL`*u{j05Fit-=F$xpVbbd7mC~Hd<7O#_Z4_a$vrpxh+@tN+Isr2e|c9#3O zSiF=uEL#Efsi}m^T%N_Rtez9O>9N|yhs|QctN4}mP58DNS8I>-mgd1X?u{ODONo<4{J1%Y<2GOW+I~@H z*1lp}EfJ1j+w|nu>OmIwJrHgl|5%GFc{fvvX97o&_b{Tl@v)X{_cQvbBhki1vK>hXt+FRu%h>G58KwwaWdqgfZ?b&K7y&E-oQ)(F=y zQL8t{CK_Mr&4(l^2di}HGcF%pa`JEN*Sus#aIX3K_LeRQ#g{oX_et1A&&}txzBNuh>t)R( zLO7lyN;dYs#qtgDJr;jJ|D4O6X1^+XU-JXgKF7Rxtv$&cS=@Tp=$=O=X77teMz^S@oeULGp%;;PI{$K63-#yj^~hAa>xtK0VS>3 z?l2?AXPmdH+a}1VcybMm+1#Vn=+Y0U#>2lMe40GH%MG5gqQ1rQC#!BS|9oeemb`TT z9~N&Q&N(Zbnk8RN+~aW76;8LUnjSCbQCZr8L@oMg$>-XuqTA#;e%X$;Rk2@BZ1@ea z-_^0vKhgbs7^(hZ35d`y-LGbOY3uC?1Fv?P z-O5@ACF$yAf;$;dP}bT%IefKKkE$0KC@EueL0M~hW<2H)k5hA>c*NIY5#! z+1ab2=@&IsS5sKgQf?i?sOi|4Yu#{(4t5`AiF-Kxoh{zOv}bc4j$tA+ftmQK=wA&mxO#;2K(~i5Bd(7iX?AIi;u6CMht6SeS?pqVh48CD8Wz!!^Z26Pp z_7$Win)X=#>E^-X=2*uy?RBm0$v+XLm`P2g zlLIuDD0y`GbOm(041_CX-#%c zBuJ(#GjKBfljtVXRo?2foyo8yR%s@`am(untv(u`NVt5GPNpGS;1v3&(oLhAZZ28W zdRyr!>zuYl1f4`Da~b!TLtJ=>9fx@AAs%zPz)D7vD&;>6h=U5K^^bsHF6tmj=KdNHt~%r#*+R{-qI4A(az=wh!PB2q0RBL z^d45sl-JvKG7qo9c6)7(*QMv$_U)c6E7|t(C`o_UJWYSY8zlDq=-~Pe@3zo)<4M8v ztZQ3|+~eJ!-us2MCV$u6cK=h?uCqDrl7My_Y>w^H(`n=Hwg+ub*c|^r<{J}&eacn_ zCBh1u<0k28fAuZQoDO11FMU(OZesbQr{~`JCHf*enSLSjyHj=;$CDD)zL37V-=^=T z_Dk7|cFLaAp5oMk65C}q^Sp_{@#Yg_f=_lGRjJGH<}RY8l~2buR229N2m=3Qp! zg~H(64!=s@@s416hX;4lH`fvDHTV_!lG<&vIYQFYEw&W4@m0~a8Ig#lBRIJ0bMFzp zvVFVm?W(Fvw!Pqx)%HfUCi&C*M0#gz(9!kfJu>}}F_*ljXF*$dtl$`XH}Jy+TsOFx$( zH`*K~J-R34KCFXS&L^Ztm-7uB#BzSBJuK()F9_>Y)=*+w&vLFt=D>-;UR`&{@OBLH ze9a)o#Nbg0U7AX^ojp;u!0^So9N&IRQ02+N%jR7AcS*s|j<{0$?!245NBRzXQfB$# z?Q9!iyG=I7x6+erU&6i@Uq$SD>|!>@uiq2I*5<=J%_ZB$Pm;8*JYUn=|1Z*-GdXxo zxAi{}sr?-f+Z-R!r;9p&>CZB87IlU6=%V^{5NqaB?b%^-{9Suk=9Rw?sq4xMN_3Z& z87yRj%fL?YgW$$r(T;X9hfC>p(%pDbiCH@(nBMgaG8+EZ4Cu`0IpwPCIey}6y)@04IacRWyPmB$guYRQJ<4iZj-O`AW#Ql5^7%X{JN7R#sl zZnhNTfY?zgaYhTg|=-iU{b z<;)uQZrq#n+Xn1ofOQ6b!`1}l9e~yZ<$ExrEE5#Zws=>EXjLF?)wqkS4^}&}Cj(wrT zOu8X>^x1P>DA8^HI5FolCsO^Fy*loXuw1N&Tds^)Ep0hjmhg1uE*5UOZwTg_jcbD4 zPjc||R4FT^%E{&OM&7M?VBT$&^vCbEpTUFM^LVbPiedb(%X~*CS+qiP;_BdlgsCr< znDbW$Cyb-Vb`~)<(n))Y)oB*rPXEys-$}nz)MP^6tPb{1j*oaB17j012d)WD=pPSw zfB^O$Ta9I&c^-C6Fs)sk_4GH;HCl!>MGNi2a{?t=`~QZC$^N{EIP%9f z*)sfm`Y)inknSS7i|OPuN=r@8O~EnlOX-bIVj2Av`VuT>)m*to5q&a)$1ZDYmJ`PR z8n=*rrnX_OR*^5WjDI=(vEn-K=%Y!6ifi#}C3+QPMp4@!+Y*M!r68`;Zkuv*@P~G3 z$G=fx>p=JQ>m|0==^mxKf^HsNA>9#lpEK4=be`8r%mI(4?MV3fjS}&W+)rX6V>b6c=$a`#|#pBYK0?77%1xGmV9)vO)#Mt^Fqvp9A%<|?V3=%^ zl4hPH;i*bzGwmC(VN6W!>9Un!X@rogCGv*7dZW0wkzq*;bMq@Jo7{k>lZajCu4P{` zidPaKHK%w4*}>+^s0@36FgYsXVI}f-7dOO8Sm2N_a!|P~*0!JFG7}>WzMM%v`(oSp z@#z%vxQ@}M_&`914=jGNgIMkCuF@wqMW7LT0OC}a@LyrqIq#i=L$O(Z zd+?%eFT?_*F)7Vvrfdpkq^zf3{$v|&pkKO;bhlfEZ=zqiJEBE7?kt$DDIla9qNT@0FN0-xVC1NRMqC zf&IB^ztrBx9C(3!IPMvW=I#!Dw-UGj=v{3EWv!g#H_g| zI8=Mq-ot4!{CCtmqSME3A2N2@M0zd!9MiIxFaWXUdG zVNqlS%F+brf0gbvI=Ma|*6RbN_rBnX2?={k%-#0|9hoQZEz#V0G}DmGH}3A_A96g$ zJq1e|c-wSeaCAGjtRh+0(!Eaq40!`7Ii_{hy}@uPk;X2yA2f$8gq5@Ti%F~_hn2{w&L?7BxSC+_u>8)e~AZM{M8}hKj8tE@Qw)wTfTy7Si+a#V_CGe1e+Le zoF&3Vhj{)W6DW^Pply6Up?OdOHyskb30tQx--SC)+6j4QT~%2_Bagx#e89cSO0ph+ z|7LUL1HqyZ-99PNTZG220%S#wqIg~DDm%%#5A9}B@0ne;lBv%5gyU%|n_YSqZ4KrR zrbp|NaurE-*SPm%*84dUb+1<-y>v z{?^$D#g<48F6rJkuYHhaqAs6BXMpBzoo?KhG6Pa*iF;Yhdzef-7y5wyy>!;&c3&(R zel(d6>G|l8VISi;X_hl6~EiJnQ11kX%(nVwCL1e+4Zd{JWddz1~clAiKM zgU$K7z9_LxXBlSF^`-lrzb{BCp3Il@hv~kevkw1S&L*cMlzqu`wgpcef{JvVL-j!yd~T%sr5j$cK8`|``i zur<_|rd3sx@Ek*JY1$%JX=;6gE$gciv%`*He%~{Q)RRb6{7PFzd?bl*#*W~izCHqE zk3Dp%5@Gd@;N-shi6H0u-}oJT$P|8*DNOzP&y&b{EI8;m>uULi#f@f12d}Pg4>$Ln z&&^%eJr>MK`0VSFZ7)6+{O%~}GySc>S;^Ulm1@r7kXfa}rV%8+l%6@kV9HT<6T=|n zbUGZ~E;NI09n(^8VT<}!cS9vvGnRo5}{--gY zC(P(Wo8lVMO?x|de20Mao%?ps?A#}*RBIy(%?*()3HI$##|vZZI28yZ+Ry;p>3Qd2|U_tzbiPv9Uoy4^Czn*?kDJ%+#>ED=$Er( z+_FH{_%wGOWNC=Bh9?~24p9$po1lXM11$-hg(X4xBhhUy>9+LUaP=C3}PU$?*s;F-x(O%vbjYCm%kkSE)8cuDLDks6I9ik{n_@ z8I3GiYAWsAy-Lk#`-0O-U*xcqKgztecz^farFy>lk<38;NZRD4v1;YTo`K8TG@A_T7gRaiu5yqgcV8bA zmXmuQQ)<5TNpM8cBnHTuK92#NKV|LS%>WriiVae(iThsClx4U2Sc{(|Tr@5$p9(6e-}HN_j3@ljcg6o4bME%P}2|( zmnN;j47XZ#p13y>J`Trs`%inaRz|0dFmL=KI4Ze#V053Ch8<~L$J;*pBG}xq=(8cE zI$haTQhbYBww0t8x0KeU#2@!5^bfaK&Ze@82sa=4HaH@oYG|qX!MDL{PO=^h?KlXm zZjWcm9k;x4Ukh*}V6=;FNCGVI4YeYybD)t=-(8e!($h&+6sz6wmJZIdIX;%2gznw4xc6O$4YxTi3ClR0xx^?vT~8Wj zOFJP&7TcDXZFAhGq1+Mwxb|e&9PSsSucI7Q`8LOUI(QtH7p13Hjx8%I%hsz`VXr}b zjyl%X@npWAJb`O%UlEu*dSH*<_Vkg*A8s6H>)W+|QZDkKE z)b>5cbk5;gs<8X0p_yGK7982G(~0Ag9b*#?8^HxL0=8{x_vYFJcjS8+e=KuT!WGCL z1hPMr+8kcRcu;0@_!JX>i%X;mDQ(Wm_p3rR>Jd0#yV{Yw%m0u7|2 zm;)L~M{z1w%WO>~q&f{OA|ZwBnTttCaRyjILW(m%GYKiq0_T&^kCM<%u$P1sPlJ6V zq<98=NIHtYfsaTBxRW|Qi#{eH4SEiILPCn?!KWmocmaGyLO)4DFM|Cfq<9H@PC|;8 z!51W?cm;e(LW%$glaAt5@D=H}Rj;A1Nl5WJ_=bdjmW18_-;$7`1$;+BidOJ<5>f=g zKS)UNCitF&6mNkaNJ#NE_$TQoc7Y$=B=n0U^e*~|gcQ5M&m^RH5Bx$xiV%p9km7yt zD+wv~fZuG6uM}j36fqqUK_@9(a*#Vb5s?-pkyqvJMBri2r#u{WMt)TyNu*yJ#P(*bs8jL)@NrFSrP~=q|hlU}aN^UnEf&8lD<%66jz<_cjfhj1Y zN=0cXEb47X6|CaJ68ML|44g@*=XXgm3uPm(DhK5vpGxj%EZswwCcLfiC2^R1%zr<|D7F991BnY5}T5epMB!Mgdg~szo7H9a@OOs(RFbBC1B@Zi1d= zlHek^7hw3#r^6_Vf<#9b&3uj+pE z0AW7WR&*6%e$|8MY7}rQAA%1PHKck3Jt_&RwxR1KLDhD&LlV4F67-`dkXQ9AdLH>y z&&A|dy?|aKETDQZrqGpcnas;DKwww{Ux_KAdKJA!m}iB=d>y@kys8$|ihQaddK39o zZ=ttQK=lsVg+i)#(QXu8agCdaz6V1vqJewR2gq}kB)AvtLtfQ~=p*D)eT+Uqe$}Vw zGZawmN1vmR>I?KG3ai5CD-=QQq)uPMZ=mODN$@-L59C$-Jtm*(d-MZge$_wG8Wd3d z3q6HGsvpr$D6IM!{emK@2>KOyJf!FD^c(yg-YTS2Y-`8H_6a(*M+vges5&4iH3w9k z&|xT~IvjOIVO1hZLJ?IL)D?NIk!f~AMsVT!>R5R`YcPR+J$`K zO-0jCL^U1FK%P~SpnMZ{Avd3RRrRO=`BaP0V&qr3(LYc?bvg2(km^dbnFx-sas}Li zBC4y<{m65@B?-GA4g%87x_^{bt`%zf%A`N zwIsL>K1rZgbsKsL`BdxCPUKf@Ku@E9>UQ)u6jI6Mr)N=Ebq9J5MO1g9=aFZPq<0s3 z0lB@(yWxw_r@9Bdg#4;|(aR{Hk}F!Tppfcy^bQKEcAsRYxE8BslG?L z2~9o!{0sg_U_b+ZLVrgg)z9b`6juF;EC^{mlZsaNp2IyBd!X^|@EkcV?NVNntqp<3HbODN}E<_h0&w5GlV#G#u zcvVZ$CCI0`3SEu-Di69wq6U=L!s}2-wGypDVb%5M1{6`PMr)8~gCw{XnaHcU5#5A* zs+-X*$glFETTwu@4&BD~cZ8Jd;RXW3s*UJ&6j5zLcOcJ3N$^f|7xJp^M)x3}>Rxmo z@~eDkGYY7-p!-os^#Iz+_IHGp55k8CjHn()k08(OlHj9g8}h2QqaDbndJH{|{3<_s z0tHl0qNh+uwG+LL!m6jyGsqoL{tZ40J)0!K=g{-Wt9k*whhGN$_p>4)m&ap?8r_wHv*M{HhRo9|cr<&<7}_+Kcv~ zuUnE|M?mI0{t2oLBFDa>NoT|dSBF$t2XU;-Xg3) z?NI`Xs5&6R9iF=-y-w&bUR57-H1etB*#VvxaQIdIP=6Fqxd*_3Fr+llAQV;|iw2{JY6u#N zJoie1$Dv`!s~V0*AfM`ZbOQ3LMxqoHP^F?Y6jG(Tp%aFc8K?wBRGFw0dG3=0vrrlG zst8<)LyEQstux6jl{<P9 zlTZ!vtHz*O6i^kSIuuel&_WbejYah+q8itc^G^fxY?cJa6WEBnstKqG`BW3pBIH+{ zj25GSY7$z4LaNEA8HH6-(D^8$It5*TJX<8asmOgH^eU%8?s;?gRMXML$gi3qQBgoO z6D>s{)hu)g3ae(LOHo8sgq9)C{gR+Oq_P}&Ri~oMWTHOhY4CF7SFM-Jf+-}Z+JM@j zkZL1pkHV_kQ38snHlYs4^ME9H2kMBtsyk69+4ol(u<5%7d4<|67x(9VeA=SMo z5rtLvp(GSh`A`?+*(wQcMqQCtwFPxUKGpr`2;^5ifV!t}{s}0z!X5;MR1cyfQCRg5 zN=6aY!>A|nJSYi1f_fpZ>QU4i`BdA`QOK{_j{2a0Y6m(RxkJjw;4v_)dK~pd5tSeH zL!O5u!6#6ETBJ=y^mEyaP2M zuj)>;2>DcZp~c9rx*IJ)0o6UI8HH5$qVrK$bsxF_MN~d?A@V$`=bz2+BItcolHY zL@QB1^)yeKqm65+%Li#VLNg;ak>KclefALthpQGJgh$n%t>_XGNs z?eFj^S8{{N8{J7zwF{R4&E%7@|iFsyn6{eU8>N6|l#=UGW`8~PXWsKcj%^ z3G^!psh&i?q42YAiTV`$9sVkT9l3X>-2l>iPJ-H_1msn9K!iJds!r%IVu9(0o5_6FAAyp zq5deW8h{3(h{`~Nkmm)`b9Xux4u)P~ry*!4@~MtP!;oJ!9F0H$)$!;A6jF^u-1X!L zt5Q)Kim2=;9eG}q6f#gI@~YffFdO=mIVczTRe2~M1ylv-L=;kuLZeYwbrKqbBC0~< zK%SQ*!Leu@@~Xz83CO3K=!Pdlzj6|qi~_1D=oA!EO-0jCST!BZKoQkUGz)oNmIP;` zBIH%gL8l_0>NIpZ@~h4m!1?D)7*L)?;MpjoItQJL!m9JoToh3iBPa5_A_uPR3sD4<#}fb&l!3@NJ!tVUr~4XQ;ERUKN0JON3t9yK7Zsu49IpK1|W zjQpx4s2K%R=c5ZyNOd7{Uj)O-i-jnnT8b_~o>wKoOVKjqRV_!CA)o4UbOrLOu0$(P zKy?+m8iiCIbPWotu0_{rg36U}6@i}DB*E*^4alonjn*KasN*{H0qJSbda!|@fNCSU z9feez&>bkOx)a@nBC5O5J*4RMn2URbU*T|9za`BK=mMc2!&J+ zqeoC!^(fkgBC73Z2lBij={<%XM{cju51)WO)syHcJ8L_0;*ONL?P9i=q(ghy^Y>M5!EjA zF7mWWg1gas$g2vW_mNMv2YrD2t(yPuh5KMY13yF`p^)lh^a%>9K1H9Qh-yFj9C?D0 z;1}piYwOeD5Cli{e(PkN`gP5 zUyxT7LBArO>NoT|@~aLXNNd7C5>$0Y?NA7D{z-)GVORr`Py&jmx}Xlo^Ohvo6?H^j zRX5ZL`BX=s!;oLq2X#jQ)zPR23aO4kN20LE-Kj53h7k?yhk7E<+mc{^)C+l4!;yh} zsu5@q@~e(V$D)Ah1T+|hR3p(46jr66p(vtqr^4f)=N(Bf4GlwHRUWb~DQFxD zsivawD6E=>CZLGwOf(C5-jxK;Mn%Z0I(ML(lN0nQ=Ms22@~g^GF$$(E-{Q{9G4=bsxGNMN~et33=X^1UI8Q zkXN+@-HCjv`_WyDXLa*uR-k6&RV_g0BOfCFuY?yszXn#J3sFE-jV?kV zRSmirg;ll4jUuXLXgTtHBndt`gl#>91XbHm3-YP9qgLb>xjXHEK^V}$$IzQ7qP7S+@~d7#AEAKiW%Mx$sa|ozPheOXK%b(B>Q(d^ z@_Z@@zJ~TAuj+O5Iod4hIFj=eH;4H(s2xg|o61z}Q3eXB5>O@zt2&G%|ILCCrA#Ip zc|Mc$I-wloRUL+Mkxz9v%0qrtXOxcuszg+PLaHQmA_}XzpiwBI>WbW>p=ZA&*bSb9 zys9J6801rRM}^3*>VX_6pgIzbMIlu(8i&HFo@hLZsCuCZ$n&|R*BecAL$C5Ecrx;- z`k+b3uR0n{Mgi3^XbK9c`l3@%Sk(_rMG;khG!1#akOT*y>By@Zh-Qp*lc3UoGYRyo z2BBFfpgI=KMj_Q;RD{B+A!rVYsD`3bk>^WE@HliD@~VcR(~(a#9G$`Tclebf;F$yl zRL7&UP)KzGIva&mBhfi1qDn#MB2QQnOhxA*uc{b1kxx~ED!GNwuPQ|s^_TW1Wtot` zkZL|EXT-3o0xduhRVAuIp06aqYBY=Sys8?s5cyQKXr?5nszb9;Kvj<#m`cd4Y=Vm< zLDj{G7cDpX>vGZG}311gB_XFQw$gYPwPBASFkYciUGB5Nvo z1I5-fG#w?@3^Ws^)+{s|WmbgVM7cEwy@i4wy#LIF^I!;1EjAx5K#{c&Ekd!i7%f4G zwG=HwskI!vjWR1nD^PB|gI1#8s3yFNR-sTT6k83~z{rbh(K-}c>(K_3SR2tMlv89t$NdVnVrT!t3GOga;qU~go2+n zurX?aLaQlih9avuYJp;_C2EBdtM#-3FM=>NZ)LG9%B*&%J<6>P=r$DmqJbSzClp$p zQ5O_hUD53*w(dZ8qQtrj-HlS~o@wlV_rlD)kHz~@Zasjyq2N~yd=Nc^LhE7F9Yt0T z^azTrp6F4OSiMmnlv;h!3n;T*M1_7ZH~Yf@DELhSUqS;>XuXUEp~wo*U=&+J&?_jh zhN598wT7ctQD(h{UPrk#0*x%d;CBri1xKUM8iU57$SOIV@296T&?<#Wqr@tM%A(Y| z29-mZRUTD9xm6KWLct%JR~c2A&i)sgRbe$2Bda>9fnuvBs)Z7(HmZYCt1h}8W!4So zMwDAOp_@_grv}zTx1i9fj~Yy8|BK9qun~)~)fhEFiPaP}L#fpqwLqEG6176P)f%-y zL9T(fqP8fs+M)I+vO1vKP$4!u!cH);I-@QqwYs9)QD)tN?nJqD7rGk-|IxsE(7hrdAL12+FLU=uwngz0hMQ_)7zyLQkX6dImj^`|LY51fSDIxMEy{1^+y9xa7+USp#X)}VAPGRIkJYLVXVd0 zaP%rltPyA=O07|7G|G;7{~H6x!rY4?8i#`3Ll`(7O+cYF5lupoH5pAou{9OFff8#P znvPOy2AYX7YZiJ??=KMFf6az>=nY064UEveD74;0J@pw{b5IWyTXWHPlvwl70F+wu z(KwV@3s8H0dYfAd(IOs9(3g3IVvFGt7>dP~qGc$umZP^(Y{h5=O00L#N|aiw(HfLl zYtd^cx7MM)Jec4GO<0eH@O2Sdg$-~cH;v3qXfukfpV2QUv93DC^Y<77t&*rd%B-tV z1C(2(P(u{FsDY(XBNSR?P-7HXWeczgjLmCMQ1OBD3e zz)GkU3a!ehHHxe%s11s(YmXIpj|vm>Iu_fa)T)Zwq0Fj=+N0d6jyj;AzXsMox1rFg zi8`Xls)ahC*s6^>qr|FnjQy_*OwGD1c11_5qD79ohJzCg8Bx3lSxyWFh{u!V#n3!~ ztRO~aQL>^KntSW})sbn=V zGE0!v#n?QJtRW`m>10hYHP0Yx739o5ldLV~=2>JNF&L=9XOnfs&^(8{UX09h$s5Gj zJdeClOw9Aio5a+-fV^4E1`gr;!{Qgx_2k^k7b$fFFKh6{WPLF-FCiOjvX z$VOsfUQRX^Q}YV4iI|yJl7*&nZeK+<6N5n-T#{@qhUV2|3o$ZFkuAm8EKRl&6SEB2 zT1?HdWE(Lv=aPHGd{9A?=FxlQAQ0!1`^3;(K<*bKb0L|EvAKvmASUKw@}QWSOUOfF zW-cW^5_5A|(IN%@$2JZIYw&XN6EQU3CO;J;GbTS1V{--hxtN&mkY9+Yxsv=+%*=Pm zuf*J3MIIJ|!VnE!O@A$i<{I)FF*4VZnHZbv$RlE6t|z}0Q*#6PotT*$$?wJ7+(iB$ z2Cr!D=Awln#~qbJdkgua7?}zAlNg&@$)Cl4A+&eVf69^ByF`)W-sRx5Mcuj&xk^mTzT|2#HD4gth?)5!xmL{0e&jka7^b`G zPp%h3b3lRKAV>B~G5Eny--C zIC%eQ52d$jIW~upJH*5sPVN*_^Hp+}n3=DUyT#mmoqS&mUe(|c8RC7YCzGqiV5C;3kZZ)yoJy`0Bl8V%ofwGsul%X3iuxiMct8+$;v8Gy!71!C0*}AnzALvmyC_7@3X8ZenaUCLa_NvkCc-n3_$=hsA8H_upo8cRBZRbFzmR zgc{s}d_)Y*mSj&cGFy?4im}<6>?I~<8}czRHE$&!7c;YMFP{H@lXJTr`GgpZ)8O{x z-^I}EK>kCF%-hI+im};|d{RuzPUOGD)a*?DTg=QZp zXT`|8lYCB$&AZ6w#l*auEQklhVq62Fq^<*zd9et2wV0d7ALjEfB?l8U_XM)E7@9@N zGGb(&NR}02Q+Iuhn3%=Ma$;(pM3xsb^JKDun471N6~&-1QG-vVE6Jf*f~+h?=4oUV zF*Z*puN4#X4DvcLHP0lgikW#9SxwB%v&rgWFiCUIIn3){4LP*WC2NY2c^+9yjLq}O z+G1i}K-Ljc^Fp$&n3)%m*NeG%F?oX+OxEB_$Q#AGLir{ R|NY^E*YXb|TeREV`@diZ)N%j- diff --git a/src/bin.rs b/src/bin.rs index 73d6ca35..0bc57078 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -52,14 +52,14 @@ mod helpers { pub use log as js_console; pub static ENRON_CONFIG: &'static str = r#" -[accounts.enron] +[accounts.demo-account] root_mailbox = "ermis-f" format = "demo" -index_style = "compact" # or [plain, threaded, compact] +index_style = "conversations" # or [plain, threaded, compact] identity="frank.ermis@enron.com" display_name = "Frank Ermis" subscribed_mailboxes = ["*"] -mailboxes."INBOX/Python".listing.index_style = "conversations" +mailboxes."qenron".listing.index_style = "compact" [composing] # required for sending e-mail @@ -210,6 +210,12 @@ pub fn run() -> std::result::Result<(), JsValue> { state_mut.update_size(); state_mut.render(); state_mut.redraw(); + } else if s == "pulse" { + //let b = ThreadEvent::Pulse; + //crate::js_console(&format!("received thread event {:?}", b)); + //let mut state_lck = state.lock().unwrap(); + //let state_mut = state_lck.as_mut().unwrap(); + //state_mut.redraw(); } } } else { @@ -270,7 +276,7 @@ pub fn run() -> std::result::Result<(), JsValue> { fn state_event_loop(state: &mut State, event: ThreadEvent) { let mut event_opt = Some(event); - while let Some(event) = event_opt { + while let Some(event) = event_opt.take() { match event { ThreadEvent::Input((k, _)) => { match state.mode { @@ -360,5 +366,16 @@ fn state_event_loop(state: &mut State, event: ThreadEvent) { let mut event_queue_lck = state.context.sender.event_queue.lock().unwrap(); event_opt = event_queue_lck.pop_back(); } + 'replies_loop: loop { + let events: smallvec::SmallVec<[UIEvent; 8]> = state.context.replies(); + debug!("replies: {:?}", &events); + if events.is_empty() { + break 'replies_loop; + } + for e in events { + state.rcv_event(e); + } + state.redraw(); + } } } diff --git a/src/components/mail/listing/offline.rs b/src/components/mail/listing/offline.rs index 044b983e..2dcfee51 100644 --- a/src/components/mail/listing/offline.rs +++ b/src/components/mail/listing/offline.rs @@ -154,10 +154,6 @@ impl Component for OfflineListing { ); y += 1; } - - context - .replies - .push_back(UIEvent::AccountStatusChange(self.cursor_pos.0)); } context.dirty_areas.push_back(area); } diff --git a/src/components/mail/view.rs b/src/components/mail/view.rs index 8d1e2bbd..2bf65adf 100644 --- a/src/components/mail/view.rs +++ b/src/components/mail/view.rs @@ -230,6 +230,7 @@ impl MailView { bytes, body_text, }; + self.set_dirty(true); } Err(err) => { self.state = MailViewState::Error { err }; @@ -612,7 +613,6 @@ impl Component for MailView { if !self.is_dirty() && !self.force_draw_headers { return; } - self.dirty = false; let upper_left = upper_left!(area); let bottom_right = bottom_right!(area); diff --git a/src/components/utilities.rs b/src/components/utilities.rs index eaef0f27..3b602c50 100644 --- a/src/components/utilities.rs +++ b/src/components/utilities.rs @@ -374,7 +374,7 @@ impl Component for Pager { self.initialised = true; } - self.dirty = false; + //self.dirty = false; let height = height!(area); if let Some(mvm) = self.movement.take() {

@u`^NhZ>cWCE4 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

fj3_%IwhJPc7~ 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 *d=REa9Ozf6Xo?oBvXnV2p(qPrr_vWTvK;T)QH` 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%0AiR#0bvvHNmj-96 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 {7W)8 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

%4KStBU>9)SZNq=$ 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