דלג לתוכן הראשי
נתן-אור
· 4 דקות קריאה

כשהכלי מדווח "הצלחה" ומשקר לך

העברנו ארכיון דואר של 26 שנה, יותר מ-300,000 הודעות, ממערכת ישנה ל-Outlook. באמצע התהליך קרה משהו שכדאי שכל מי שמנהל מידע עסקי יכיר.

המסך אמר שהכול טוב

הרצנו את ההמרה. אחרי כשש שעות היא הסתיימה, והמסך הראה:

הודעות שיובאו: 301,118
נכשלו: 0
אימות הקובץ: עבר

כל מדד ירוק. כל בדיקה עברה. הכלי היה בטוח בעצמו לחלוטין.

ואז פתחנו את התוצאה.

ההודעות היו ריקות מנושא. שדה הנמען היה ריק. במקום טקסט המייל הופיע קוד גולמי, שורות כמו Content-Type ו-Boundary. העברית הפכה לג'יבריש. הקבצים המצורפים לא היו שם בכלל.

301,118 הודעות "הומרו בהצלחה", ולא אחת מהן הייתה שמישה.

למה זה קרה

הרכיב של Outlook שאחראי לפענח מיילים מושבת בהתקנות המודרניות של Microsoft 365 (התקנות מסוג Click-to-Run). הוא לא נעדר, והוא לא מחזיר שגיאה. הוא נטען, מקבל את הבקשה, מדווח שהכול תקין, ולא עושה כלום.

כדי לוודא שזו לא טעות שלנו, בדקנו את הכלי הרשמי של מיקרוסופט. הוא נכשל באותה נקודה בדיוק.

החלק המדאיג

הבעיה כאן היא לא שהמנוע שבור. הבעיה היא שהוא משקר.

תוכנה שנופלת עם שגיאה עושה לכם טובה. אתם רואים, אתם מטפלים. תוכנה שמדווחת הצלחה כשהיא נכשלה גורמת לכם להמשיך הלאה בביטחון מלא.

תחשבו על התרחיש הסביר: משרד מריץ המרה, רואה "הצלחה, 0 כשלים", מוחק את המקור כדי לפנות מקום, וממשיך לעבוד. הבעיה תתגלה חודשים או שנים אחר כך, כשמישהו יחפש מייל ישן ולא ימצא אותו. בשלב הזה כבר אין לאן לחזור.

מה שהציל אותנו זה לא כלי טוב יותר. זה שפתחנו את התוצאה והסתכלנו.

שלושה כללים שאנחנו עובדים לפיהם

1. דיווח הצלחה הוא לא הוכחה. תסתכלו על התוצר.

לפני שמוחקים מקור כלשהו, פותחים את היעד ובודקים בעיניים. לא בדגימה של שתיים-שלוש. בודקים את המקרים הקשים: הכי ישן, הכי גדול, עם עברית, עם קבצים מצורפים.

2. אל תמחקו את המקור. גם לא אחרי שהכול נראה תקין.

דיסק זול. שחזור מידע שאבד לא תמיד אפשרי בכלל.

3. מערכת טובה נכשלת בקול.

כשבנינו את הכלי שהחליף את זה שנכשל, הכנסנו בו מנגנון: לפני כל ריצה הוא ממיר קובץ בדיקה קטן שמכיל עברית וקובץ מצורף, ובודק שהתוצאה תקינה. אם לא, הוא מסרב לרוץ. בכלל.

זה נשמע קיצוני, וזה בדיוק הפוך מההתנהגות של התוכנה שנכשלה. זה גם העיקרון: עדיף שהכלי יעצור מאשר שייצר 300 אלף קבצים פגומים בשקט.

מה עשינו בסוף

עקפנו את המנוע השבור והשתמשנו במנוע MIME אחר של Windows, אותו רכיב, אגב, שהפעיל את תוכנת הדואר המקורית. הארכיון פורק בחזרה על ידי אותה טכנולוגיה שיצרה אותו.

התוצאה: 301,118 הודעות, אפס אבודות, כולל עברית, תאריכים וקבצים מצורפים. אומת אחת לאחת מול רשימה מלאה, ולא בדגימה.

את הכלי פרסמנו כקוד פתוח, יחד עם התיעוד המלא של התקלה, כדי שמי שייתקל בה לא יאבד נתונים: github.com/3en5/EML-to-PST

את הפרויקט המלא, כולל מה שגילינו על זיהוי מיילים כפולים, תיארנו במיגרציית הארכיון של משרד עורכי הדין.

שאלה אחת שכדאי לשאול

הגיבוי האחרון שלכם, מתי מישהו פתח אותו ובדק שהוא באמת עובד?

לא "רץ בהצלחה". לא "ירוק בדשבורד". פתח, שחזר קובץ, וראה שהוא נפתח.

אם התשובה היא "אף פעם", זה לא גיבוי. זו הנחה. על ההבדל הזה כתבנו במדריך גיבוי לענן לעסקים.

שאלות? צרו קשר.